PR c++/86025
[official-gcc.git] / gcc / ChangeLog
blob3882e6098cfc7f9a1950974152a1ecae699c003a
1 2018-06-04  Jakub Jelinek  <jakub@redhat.com>
3         PR c++/86025
4         * tree.c (inchash::add_expr): Handle IDENTIFIER_NODE.
6 2018-06-03  Eric Botcazou  <ebotcazou@adacore.com>
8         PR tree-optimization/86034
9         * gimple-ssa-store-merging.c (output_merged_store): Convert the RHS to
10         the unsigned bitfield type in a bit insertion sequence if it does not
11         have a larger precision than the bitfield size.
12         (process_store): Also bypass widening conversions for BIT_INSERT_EXPR.
14 2018-06-03  Kito Cheng  <kito.cheng@gmail.com>
16         * config/nds32/nds32-peephole2.md: Add new patterns for code size.
18 2018-06-03  Chung-Ju Wu  <jasonwucj@gmail.com>
20         * config/nds32/nds32-opts.h (nds32_arch_type): Add ARCH_V3J.
21         * config/nds32/nds32.c (nds32_option_override): Consider ARCH_V3J.
22         * config/nds32/nds32.h (TARGET_ISA_V3): Add ARCH_V3J checking.
23         * config/nds32/nds32.opt (march): Add enum value Value(ARCH_V3J).
25 2018-06-03  Chung-Ju Wu  <jasonwucj@gmail.com>
27         * common/config/nds32/nds32-common.c (nds32_option_optimization_table):
28         Disable -fdelete-null-pointer-checks for ELF toolchain.
30 2018-06-02  Chung-Ju Wu  <jasonwucj@gmail.com>
31             Kito Cheng  <kito.cheng@gmail.com>
33         * config.gcc (nds32*): Use nds32-linux.opt and nds32-elf.opt.
34         (nds32le-*-*, nds32be-*-*): Integrate checking process.
35         (nds32*-*-*): Add glibc and uclibc conditions.
36         * common/config/nds32/nds32-common.c (nds32_except_unwind_info): New.
37         (TARGET_EXCEPT_UNWIND_INFO): Define.
38         * config/nds32/elf.h: New file.
39         * config/nds32/linux.h: New file.
40         * config/nds32/nds32-elf.opt: New file.
41         * config/nds32/nds32-linux.opt: New file.
42         * config/nds32/nds32-fp-as-gp.c
43         (pass_nds32_fp_as_gp::gate): Consider TARGET_LINUX_ABI.
44         * config/nds32/nds32.c (nds32_conditional_register_usage): Consider
45         TARGET_LINUX_ABI.
46         (nds32_asm_file_end): Ditto.
47         (nds32_print_operand): Ditto.
48         (nds32_insert_attributes): Ditto.
49         (nds32_init_libfuncs): New function.
50         (TARGET_HAVE_TLS): Define.
51         (TARGET_INIT_LIBFUNCS): Define.
52         * config/nds32/nds32.h (TARGET_DEFAULT_RELAX): Apply different relax
53         spec content.
54         (TARGET_ELF): Apply different mcmodel setting.
55         (LINK_SPEC, LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): The content has
56         been migrated into elf.h and linux.h files.
57         * config/nds32/nds32.md (add_pc): Consider TARGET_LINUX_ABI.
58         * config/nds32/nds32.opt (mvh): Consider TARGET_LINUX_ABI.
59         (mcmodel): The content has been migrated into nds32-elf.opt and
60         nds32-linux.opt files.
61         * config/nds32/t-elf: New file.
62         * config/nds32/t-linux: New file.
64 2018-06-02  Chung-Ju Wu  <jasonwucj@gmail.com>
65             Shiva Chen  <shiva0217@gmail.com>
67         * config/nds32/constants.md (unspec_volatile_element): Add
68         UNSPEC_VOLATILE_OMIT_FP_BEGIN and UNSPEC_VOLATILE_OMIT_FP_END.
69         * config/nds32/nds32-fp-as-gp.c: New implementation of fp_as_gp
70         optimization.
71         * config/nds32/nds32-protos.h (nds32_naked_function_p): Declare.
72         (make_pass_nds32_fp_as_gp): Declare.
73         * config/nds32/nds32.c (nds32_register_passes): Add fp_as_gp as one
74         optmization pass.
75         (nds32_asm_function_end_prologue): Remove unused asm output.
76         (nds32_asm_function_begin_epilogue): Remove unused asm output.
77         (nds32_asm_file_start): Output necessary fp_as_gp information.
78         (nds32_option_override): Adjust register usage.
79         (nds32_expand_prologue): Consider fp_as_gp situation.
80         (nds32_expand_prologue_v3push): Consider fp_as_gp situation.
81         * config/nds32/nds32.md (prologue): Check fp_as_gp_p and naked_p.
82         (epilogue): Ditto.
83         (return): Ditto.
84         (simple_return): Ditto.
85         (omit_fp_begin): Output special directive for fp_as_gp.
86         (omit_fp_end): Output special directive for fp_as_gp.
87         * config/nds32/nds32.opt (mfp-as-gp, mno-fp-as-gp, mforce-fp-as-gp,
88         mforbid-fp-as-gp): New options.
90 2018-06-01  Mark Wielaard  <mark@klomp.org>
92         * dwarf2out.c (dwarf2out_finish): Remove generation of
93         DW_AT_loclists_base.
95 2018-06-01  Eric Botcazou  <ebotcazou@adacore.com>
97         * gimple-ssa-store-merging.c: Include gimple-fold.h.
98         (struct store_immediate_info): Document BIT_INSERT_EXPR stores.
99         (struct merged_store_group): Add bit_insertion field.
100         (dump_char_array): Use standard hexadecimal format.
101         (merged_store_group::merged_store_group): Set bit_insertion to false.
102         (merged_store_group::apply_stores): Use optimal buffer size.  Deal
103         with BIT_INSERT_EXPR stores.  Move up code updating the mask and
104         also print the mask in the dump file.
105         (pass_store_merging::gate): Minor tweak.
106         (imm_store_chain_info::coalesce_immediate): Fix wrong association
107         of stores with groups in dump.  Allow coalescing of BIT_INSERT_EXPR
108         stores with INTEGER_CST stores.
109         (count_multiple_uses) <BIT_INSERT_EXPR>: New case.
110         (imm_store_chain_info::output_merged_store): Add try_bitpos variable
111         and use it throughout.  Generate bit insertion sequences if need be.
112         (pass_store_merging::process_store): Remove redundant condition.
113         Record stores from a SSA name to a bit-field with BIT_INSERT_EXPR.
115 2018-06-01  Segher Boessenkool  <segher@kernel.crashing.org>
117         * config/rs6000/rs6000.c (rs6000_mangle_type): Change the mangling of
118         the 128-bit floating point types.  Fix function comment.
120 2018-06-01  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
122         * config/aarch64/aarch64-simd.md
123         (aarch64_simd_vec_unpack<su>_lo_<mode>): Use UXTL and SXTL assembler
124         mnemonics.
125         (aarch64_simd_vec_unpack<su>_hi_<mode>): Use UXTL2 and SXTL2 assembler
126         mnemonics.
128 2018-06-01  Richard Sandiford  <richard.sandiford@linaro.org>
130         PR tree-optimization/85989
131         * gimple-ssa-backprop.c (backprop::m_visited_phis): New member
132         variable.
133         (backprop::intersect_uses): Check it when deciding whether this
134         is a backedge reference.
135         (backprop::process_block): Add each phi to m_visited_phis
136         after visiting it, then clear it at the end.
138 2018-06-01  Richard Biener  <rguenther@suse.de>
140         * tree-vectorizer.h (vect_dr_stmt): New function.
141         (vect_get_load_cost): Adjust.
142         (vect_get_store_cost): Likewise.
143         * tree-vect-data-refs.c (vect_analyze_data_ref_dependence):
144         Use vect_dr_stmt instead of DR_SMTT.
145         (vect_record_base_alignments): Likewise.
146         (vect_calculate_target_alignment): Likewise.
147         (vect_compute_data_ref_alignment): Likewise and make static.
148         (vect_update_misalignment_for_peel): Likewise.
149         (vect_verify_datarefs_alignment): Likewise.
150         (vector_alignment_reachable_p): Likewise.
151         (vect_get_data_access_cost): Likewise.  Pass down
152         vinfo to vect_get_load_cost/vect_get_store_cost instead of DR.
153         (vect_get_peeling_costs_all_drs): Likewise.
154         (vect_peeling_hash_get_lowest_cost): Likewise.
155         (vect_enhance_data_refs_alignment): Likewise.
156         (vect_find_same_alignment_drs): Likewise.
157         (vect_analyze_data_refs_alignment): Likewise.
158         (vect_analyze_group_access_1): Likewise.
159         (vect_analyze_group_access): Likewise.
160         (vect_analyze_data_ref_access): Likewise.
161         (vect_analyze_data_ref_accesses): Likewise.
162         (vect_vfa_segment_size): Likewise.
163         (vect_small_gap_p): Likewise.
164         (vectorizable_with_step_bound_p): Likewise.
165         (vect_prune_runtime_alias_test_list): Likewise.
166         (vect_analyze_data_refs): Likewise.
167         (vect_supportable_dr_alignment): Likewise.
168         * tree-vect-loop-manip.c (get_misalign_in_elems): Likewise.
169         (vect_gen_prolog_loop_niters): Likewise.
170         * tree-vect-loop.c (vect_analyze_loop_2): Likewise.
171         * tree-vect-patterns.c (vect_recog_bool_pattern): Do not
172         modify DR_STMT.
173         (vect_recog_mask_conversion_pattern): Likewise.
174         (vect_try_gather_scatter_pattern): Likewise.
175         * tree-vect-stmts.c (vect_model_store_cost): Pass stmt_info
176         to vect_get_store_cost.
177         (vect_get_store_cost): Get stmt_info instead of DR.
178         (vect_model_load_cost): Pass stmt_info to vect_get_load_cost.
179         (vect_get_load_cost): Get stmt_info instead of DR.
181 2018-06-01  Richard Biener  <rguenther@suse.de>
183         PR middle-end/86017
184         * gimple-fold.c (var_decl_component_p): Also allow offsetted
185         vars wrapped in MEM_REFs.
187 2018-06-01  Richard Sandiford  <richard.sandiford@linaro.org>
189         * config/aarch64/aarch64.c (aarch64_ira_change_pseudo_allocno_class):
190         Fix subreg tests so that we only return a choice between
191         GENERAL_REGS and FP_REGS if the original classes included both.
193 2018-06-01  Richard Biener  <rguenther@suse.de>
195         PR ipa/85960
196         * tree-ssa-structalias.c (get_function_part_constraint):
197         Handle NULL fi->decl.
198         (find_func_aliases_for_call): Properly handle indirect
199         fi from direct call.
200         (find_func_clobbers): Likewise.
201         (ipa_pta_execute): Likewise.
202         (create_variable_info_for): For functions that are ifunc_resolver
203         resolve to a varinfo that contains the result of the resolver
204         call.
205         (associate_varinfo_to_alias): Do not treat ifunc resolvers as
206         aliases.
208 2018-05-31  Michael Collison  <michael.collison@arm.com>
210         * config/aarch64/aarch64.md:
211         (*fix_to_zero_extenddfdi2): New pattern.
212         * gcc.target/aarch64/fix_extend1.c: New testcase.
214 2018-05-31  Qing Zhao <qing.zhao@oracle.com>
216         PR middle-end/78809
217         PR middle-end/83026
218         * builtins.c (expand_builtin): Add the handling of BUILT_IN_STRCMP_EQ
219         and BUILT_IN_STRNCMP_EQ.
220         * builtins.def: Add new builtins BUILT_IN_STRCMP_EQ and
221         BUILT_IN_STRNCMP_EQ.
222         * gimple-fold.c (gimple_fold_builtin_string_compare): Add the
223         handling of BUILTIN_IN_STRCMP_EQ and BUILT_IN_STRNCMP_EQ.
224         (gimple_fold_builtin): Likewise.
225         * tree-ssa-strlen.c (compute_string_length): New function.
226         (determine_min_obsize): New function.
227         (handle_builtin_string_cmp): New function to handle calls to
228         string compare functions.
229         (strlen_optimize_stmt): Add handling to builtin string compare
230         calls.
231         * tree-ssa-structalias.c (find_func_aliases_for_builtin_call):
232         Add the handling of BUILT_IN_STRCMP_EQ and BUILT_IN_STRNCMP_EQ.
233         * tree.c (build_common_builtin_nodes): Add new defines of
234         BUILT_IN_STRNCMP_EQ and BUILT_IN_STRCMP_EQ.
236 2018-05-31  Jakub Jelinek  <jakub@redhat.com>
238         PR target/85984
239         * bb-reorder.c (pass_partition_blocks::gate): Return false for
240         functions with naked attribute.
242 2018-05-31  Uros Bizjak  <ubizjak@gmail.com>
244         * config/i386/sse.md (avx_vec_concat<mode>):
245         Substitute concat_tg_mode mode attribute with xtg_mode.
246         (<mask_codefor>avx512dq_broadcast<mode><mask_name>_1): Ditto.
247         (concat_tg_mode): Remove mode attribute.
249 2018-05-31  Martin Sebor  <msebor@redhat.com>
251         PR c/82063
252         * calls.c (alloc_max_size): Correct a logic error/typo.
253         Treat excessive arguments as infinite.  Warn for invalid arguments.
254         * doc/invoke.texi (-Walloc-size-larger-than): Update.
256 2018-05-31  H.J. Lu  <hongjiu.lu@intel.com>
258         PR target/85829
259         * config/i386/x86-tune.def: Re-enable partial_reg_dependency
260         and movx for Haswell.
262 2018-05-31  Chung-Lin Tang  <cltang@codesourcery.com>
263             Cesar Philippidis  <cesar@codesourcery.com>
265         PR middle-end/85879
266         * gimplify.c (gimplify_adjust_omp_clauses): Add 'remove = true'
267         when emitting error on private/firstprivate reductions.
268         * omp-low.c (lower_omp_target): Avoid reference-type processing
269         on pointers for firstprivate clause.
271 2018-05-31 Sameera Deshpande <sameera.deshpande@linaro.org>
273         * config/aarch64/aarch64-simd-builtins.def (ld1x3): New.
274         (st1x2): Likewise.
275         (st1x3): Likewise.
276         * config/aarch64/aarch64-simd.md
277         (aarch64_ld1x3<VALLDIF:mode>): New pattern.
278         (aarch64_ld1_x3_<mode>): Likewise
279         (aarch64_st1x2<VALLDIF:mode>): Likewise
280         (aarch64_st1_x2_<mode>): Likewise
281         (aarch64_st1x3<VALLDIF:mode>): Likewise
282         (aarch64_st1_x3_<mode>): Likewise
283         * config/aarch64/arm_neon.h (vld1_u8_x3): New function.
284         (vld1_s8_x3): Likewise.
285         (vld1_u16_x3): Likewise.
286         (vld1_s16_x3): Likewise.
287         (vld1_u32_x3): Likewise.
288         (vld1_s32_x3): Likewise.
289         (vld1_u64_x3): Likewise.
290         (vld1_s64_x3): Likewise.
291         (vld1_f16_x3): Likewise.
292         (vld1_f32_x3): Likewise.
293         (vld1_f64_x3): Likewise.
294         (vld1_p8_x3): Likewise.
295         (vld1_p16_x3): Likewise.
296         (vld1_p64_x3): Likewise.
297         (vld1q_u8_x3): Likewise.
298         (vld1q_s8_x3): Likewise.
299         (vld1q_u16_x3): Likewise.
300         (vld1q_s16_x3): Likewise.
301         (vld1q_u32_x3): Likewise.
302         (vld1q_s32_x3): Likewise.
303         (vld1q_u64_x3): Likewise.
304         (vld1q_s64_x3): Likewise.
305         (vld1q_f16_x3): Likewise.
306         (vld1q_f32_x3): Likewise.
307         (vld1q_f64_x3): Likewise.
308         (vld1q_p8_x3): Likewise.
309         (vld1q_p16_x3): Likewise.
310         (vld1q_p64_x3): Likewise.
311         (vst1_s64_x2): Likewise.
312         (vst1_u64_x2): Likewise.
313         (vst1_f64_x2): Likewise.
314         (vst1_s8_x2): Likewise.
315         (vst1_p8_x2): Likewise.
316         (vst1_s16_x2): Likewise.
317         (vst1_p16_x2): Likewise.
318         (vst1_s32_x2): Likewise.
319         (vst1_u8_x2): Likewise.
320         (vst1_u16_x2): Likewise.
321         (vst1_u32_x2): Likewise.
322         (vst1_f16_x2): Likewise.
323         (vst1_f32_x2): Likewise.
324         (vst1_p64_x2): Likewise.
325         (vst1q_s8_x2): Likewise.
326         (vst1q_p8_x2): Likewise.
327         (vst1q_s16_x2): Likewise.
328         (vst1q_p16_x2): Likewise.
329         (vst1q_s32_x2): Likewise.
330         (vst1q_s64_x2): Likewise.
331         (vst1q_u8_x2): Likewise.
332         (vst1q_u16_x2): Likewise.
333         (vst1q_u32_x2): Likewise.
334         (vst1q_u64_x2): Likewise.
335         (vst1q_f16_x2): Likewise.
336         (vst1q_f32_x2): Likewise.
337         (vst1q_f64_x2): Likewise.
338         (vst1q_p64_x2): Likewise.
339         (vst1_s64_x3): Likewise.
340         (vst1_u64_x3): Likewise.
341         (vst1_f64_x3): Likewise.
342         (vst1_s8_x3): Likewise.
343         (vst1_p8_x3): Likewise.
344         (vst1_s16_x3): Likewise.
345         (vst1_p16_x3): Likewise.
346         (vst1_s32_x3): Likewise.
347         (vst1_u8_x3): Likewise.
348         (vst1_u16_x3): Likewise.
349         (vst1_u32_x3): Likewise.
350         (vst1_f16_x3): Likewise.
351         (vst1_f32_x3): Likewise.
352         (vst1_p64_x3): Likewise.
353         (vst1q_s8_x3): Likewise.
354         (vst1q_p8_x3): Likewise.
355         (vst1q_s16_x3): Likewise.
356         (vst1q_p16_x3): Likewise.
357         (vst1q_s32_x3): Likewise.
358         (vst1q_s64_x3): Likewise.
359         (vst1q_u8_x3): Likewise.
360         (vst1q_u16_x3): Likewise.
361         (vst1q_u32_x3): Likewise.
362         (vst1q_u64_x3): Likewise.
363         (vst1q_f16_x3): Likewise.
364         (vst1q_f32_x3): Likewise.
365         (vst1q_f64_x3): Likewise.
366         (vst1q_p64_x3): Likewise.
368 2018-05-30  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
370         * config/msp430/msp430.c (msp430_output_labelref): Prepend
371         user_label_prefix to name.
373         * tree-core.h: Update comment about the format of NAME string
374         passed to handler in attribute_spec.
376         * config/msp430/msp430.md: Remove erroneous subreg expression from
377         zero_extendqisi2 insn pattern. Remove msp430x ISA restriction on
378         zero_extend{q,h}isi2.
380 2018-05-30  Borislav Petkov  <bp@suse.de>
382         * doc/extend.texi: Document some architecture specific
383         constraints and sort entries.
385 2018-05-30  Martin Sebor  <msebor@redhat.com>
387         PR middle-end/85369
388         * builtins.c (expand_builtin_stpcpy_1): New function.
389         (expand_builtin_stpcpy): Call it, and call maybe_warn_nonstring_arg
390         only if the former succeeds.
392 2018-05-31 Sameera Deshpande <sameera.deshpande@linaro.org>
394         * config/aarch64/aarch64-cores.def (saphira) : Add support for ARMv8.4
395         in saphira.
397 2018-05-30  Jan Hubicka  <hubicka@ucw.cz>
399         * doc/invoke.texi (-flinker-output): Document
401 2018-05-30  Jan Hubicka  <hubicka@ucw.cz>
403         * passes.c (ipa_write_summaries): Only modify statements if body
404         is in memory.
405         * cgraphunit.c (ipa_passes): Also produce intermeidate code when
406         incrementally linking.
407         (ipa_passes): Likewise.
408         * lto-cgraph.c (lto_output_node): When incrementally linking do not
409         pass down resolution info.
410         * common.opt (flag_incremental_link): Update info.
411         * gcc.c (plugin specs): Turn flinker-output=* to
412         -plugin-opt=-linker-output-known
413         * toplev.c (compile_file): Also cut compilation when doing incremental
414         link.
415         * flag-types. (enum lto_partition_model): Add
416         LTO_LINKER_OUTPUT_NOLTOREL.
417         (invoke.texi): Add -flinker-output docs.
418         * ipa.c (symbol_table::remove_unreachable_nodes): Handle LTO incremental
419         link same way as WPA; do not stream in dead initializers.
421         * dwarf2out.c (dwarf2out_die_ref_for_decl,
422         darf2out_register_external_decl): Support incremental link.
424 2018-05-30  Jan Hubicka  <hubicka@ucw.cz>
426         * lto-opts.c (lto_write_options): Skip OPT_dumpdir, OPT_fresolution_.
428 2018-05-30  Jan Hubicka  <hubicka@ucw.cz>
430         * lto-wrapper.c (debug_objcopy): Add rename parameter; pass
431         it down to simple_object_copy_lto_debug_sections.
432         (run_gcc): Determine incremental LTO link time and configure
433         lto1 into non-wpa mode, disable renaming of debug sections.
435 2018-05-30  Kelvin Nilsen  <kelvin@gcc.gnu.org>
437         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Remove
438         descriptions of various incorrectly documented functions.
440 2018-05-30  Andre Vieira  <andre.simoesdiasvieira@arm.com>
442         Revert:
443         * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): Make
444         address check not strict.
446 2018-05-30  Richard Biener  <rguenther@suse.de>
448         PR tree-optimization/85964
449         * tracer.c (better_p): Drop initialized count check, we only
450         call the function with initialized counts now.
451         (find_best_successor): Do find a best edge if one
452         has uninitialized count.
453         (find_best_predecessor): Likewise.  Do BB frequency check only
454         if count is initialized.
456 2017-05-30  Jackson Woodruff  <jackson.woodruff@arm.com>
458         * config/aarch64/aarch64.c (aarch64_host_wide_int_compare): New.
459         (aarch64_ldrstr_offset_compare): New.
460         (aarch64_operands_adjust_ok_for_ldpstp): Update to consider all
461         load/store orderings.
462         (aarch64_gen_adjusted_ldpstp): Likewise.
464 2018-05-30  Wilco Dijkstra  <wdijkstr@arm.com>
466         * config/aarch64/aarch64.c (aarch64_ira_change_pseudo_allocno_class):
467         Check for subset of GENERAL_REGS and FP_REGS.
468         * config/aarch64/aarch64-simd.md (aarch64_get_lane): Increase cost of
469         r=w alternative.
471 2018-05-30  Richard Sandiford  <richard.sandiford@linaro.org>
473         * alias.c (adjust_offset_for_component_ref): Use poly_int_tree_p
474         and wi::to_poly_offset.  Add the current offset and then check
475         whether the sum fits, rather than using an unchecked addition of
476         a checked term.  Check for a shwi rather than a uhwi.
477         * expr.c (get_bit_range): Use tree_to_poly_uint64.
478         (store_constructor): Use poly_int_tree_p.
479         (expand_expr_real_1): Likewise.
480         * function.c (assign_temp): Likewise.
481         * fold-const.c (const_binop): Use poly_int_tree_p and
482         wi::to_poly_offset.
483         (fold_indirect_ref_1): Likewise.  Use multiple_p to attempt an exact
484         division.
485         * ipa-icf-gimple.c (func_checker::compare_operand): Use
486         to_poly_offset for MEM offsets.
487         * ipa-icf.c (sem_variable::equals): Likewise.
488         * stor-layout.c (compute_record_mode): Use poly_int_tree_p.
489         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): Use
490         wi::to_poly_offset for BIT_FIELD_REF offsets.
491         (vn_reference_maybe_forwprop_address): Use poly_int_tree_p and
492         wi::to_poly_offset.
493         * var-tracking.c (emit_note_insn_var_location): Use
494         tree_to_poly_uint64.
496 2018-05-29  Jim Wilson  <jimw@sifive.com>
498         * config/riscv/riscv.c (riscv_interrupt_type): Fix comment typo.
500 2018-05-29  Uros Bizjak  <ubizjak@gmail.com>
502         PR target/85950
503         * config/i386/i386.md (l<rounding_insn><MODEF:mode><SWI48:mode>2):
504         Enable for TARGET_SSE4_1 and generate rounds{s,d} and cvtts{s,d}2si{,q}
505         sequence.
506         (sse4_1_round<mode>2): Use nonimmediate_operand
507         for operand 1 predicate.
509 2018-05-29  Martin Sebor  <msebor@redhat.com>
510             Richard Biener  <rguenther@suse.de>
512         PR testsuite/85888
513         * calls.c (get_size_range): Call determine_value_range instead
514         of get_value_range..
515         * tree-vrp.h (determine_value_range): Declared new function.
516         * tree-vrp.c (determine_value_range_1, determine_value_range): New.
518 2018-05-29  Richard Biener  <rguenther@suse.de>
520         * tree-vect-data-refs.c (vect_preserves_scalar_order_p): Make
521         sure to use non-pattern stmts for get_earlier_stmt arguments.
522         * tree-vectorizer.h (get_earlier_stmt): Assert we do not get
523         called on pattern stmts.
524         (get_later_stmt): Likewise.
526 2018-05-29  Martin Liska  <mliska@suse.cz>
528         PR gcov-profile/85759
529         * doc/gcov.texi: Document GCOV_ERROR_FILE and GCOV_EXIT_AT_ERROR
530         env variables.
532 2018-05-29  Jakub Jelinek  <jakub@redhat.com>
534         * tree-cfg.c (verify_gimple_assign_unary): Add checking for
535         VEC_UNPACK_*_EXPR.
536         (verify_gimple_assign_binary): Check TYPE_VECTOR_SUBPARTS for
537         VEC_PACK_*_EXPR.
539         PR target/85918
540         * tree.def (VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR,
541         VEC_PACK_FLOAT_EXPR): New tree codes.
542         * tree-pretty-print.c (op_code_prio): Handle
543         VEC_UNPACK_FIX_TRUNC_HI_EXPR and VEC_UNPACK_FIX_TRUNC_LO_EXPR.
544         (dump_generic_node): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR,
545         VEC_UNPACK_FIX_TRUNC_LO_EXPR and VEC_PACK_FLOAT_EXPR.
546         * tree-inline.c (estimate_operator_cost): Likewise.
547         * gimple-pretty-print.c (dump_binary_rhs): Handle VEC_PACK_FLOAT_EXPR.
548         * fold-const.c (const_binop): Likewise.
549         (const_unop): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR and
550         VEC_UNPACK_FIX_TRUNC_LO_EXPR.
551         * tree-cfg.c (verify_gimple_assign_unary): Likewise.
552         (verify_gimple_assign_binary): Handle VEC_PACK_FLOAT_EXPR.
553         * cfgexpand.c (expand_debug_expr): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR,
554         VEC_UNPACK_FIX_TRUNC_LO_EXPR and VEC_PACK_FLOAT_EXPR.
555         * expr.c (expand_expr_real_2): Likewise.
556         * optabs.def (vec_packs_float_optab, vec_packu_float_optab,
557         vec_unpack_sfix_trunc_hi_optab, vec_unpack_sfix_trunc_lo_optab,
558         vec_unpack_ufix_trunc_hi_optab, vec_unpack_ufix_trunc_lo_optab): New
559         optabs.
560         * optabs.c (expand_widen_pattern_expr): For
561         VEC_UNPACK_FIX_TRUNC_HI_EXPR and VEC_UNPACK_FIX_TRUNC_LO_EXPR use
562         sign from result type rather than operand's type.
563         (expand_binop_directly): For vec_packu_float_optab and
564         vec_packs_float_optab allow result type to be different from operand's
565         type.
566         * optabs-tree.c (optab_for_tree_code): Handle
567         VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR and
568         VEC_PACK_FLOAT_EXPR.  Formatting fixes.
569         * tree-vect-generic.c (expand_vector_operations_1):  Handle
570         VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR and
571         VEC_PACK_FLOAT_EXPR.
572         * tree-vect-stmts.c (supportable_widening_operation): Handle
573         FIX_TRUNC_EXPR.
574         (supportable_narrowing_operation): Handle FLOAT_EXPR.
575         * config/i386/i386.md (fixprefix, floatprefix): New code attributes.
576         * config/i386/sse.md (*float<floatunssuffix>v2div2sf2): Rename to ...
577         (float<floatunssuffix>v2div2sf2): ... this.  Formatting fix.
578         (vpckfloat_concat_mode, vpckfloat_temp_mode, vpckfloat_op_mode): New
579         mode attributes.
580         (vec_pack<floatprefix>_float_<mode>): New expander.
581         (vunpckfixt_mode, vunpckfixt_model, vunpckfixt_extract_mode): New mode
582         attributes.
583         (vec_unpack_<fixprefix>fix_trunc_lo_<mode>,
584         vec_unpack_<fixprefix>fix_trunc_hi_<mode>): New expanders.
585         * doc/md.texi (vec_packs_float_@var{m}, vec_packu_float_@var{m},
586         vec_unpack_sfix_trunc_hi_@var{m}, vec_unpack_sfix_trunc_lo_@var{m},
587         vec_unpack_ufix_trunc_hi_@var{m}, vec_unpack_ufix_trunc_lo_@var{m}):
588         Document.
589         * doc/generic.texi (VEC_UNPACK_FLOAT_HI_EXPR,
590         VEC_UNPACK_FLOAT_LO_EXPR): Fix pasto in description.
591         (VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR,
592         VEC_PACK_FLOAT_EXPR): Document.
594 2018-05-29  Richard Biener  <rguenther@suse.de>
596         * tree-vectorizer.h (struct vec_info): Add stmt_vec_infos
597         member.
598         (stmt_vec_info_vec): Make pointer.
599         (init_stmt_vec_info_vec): Remove.
600         (free_stmt_vec_info_vec): Likewise.
601         (set_stmt_vec_info_vec): New function.
602         (free_stmt_vec_infos): Likewise.
603         (vinfo_for_stmt): Adjust for stmt_vec_info_vec indirection.
604         (set_vinfo_for_stmt): Likewise.
605         (get_earlier_stmt): Likewise.
606         (get_later_stmt): Likewise.
607         * tree-vectorizer.c (stmt_vec_info_vec): Make pointer.
608         (vec_info::vec_info): Allocate stmt_vec_infos and set the global.
609         (vec_info::~vec_info): Free stmt_vec_infos.
610         (vectorize_loops): Set the global stmt_vec_info_vec to NULL.
611         Remove old init_stmt_vec_info_vec/free_stmt_vec_info_vec calls.
612         (pass_slp_vectorize::execute): Likewise.
613         * tree-vect-stmts.c (init_stmt_vec_info_vec): Remove.
614         (free_stmt_vec_info_vec): Likewise.
615         (set_stmt_vec_info_vec): New function.
616         (free_stmt_vec_infos): Likewise.
617         * tree-vect-loop.c (_loop_vec_info::~_loop_vec_info): Set
618         the global stmt_vec_info_vec.
619         * tree-parloops.c (gather_scalar_reductions): Use
620         set_stmt_vec_info_vec/free_stmt_vec_infos and maintain a local
621         vector.
623 2018-05-29  Richard Biener  <rguenther@suse.de>
625         * dominance.c (iterate_fix_dominators): Push/pop TV_DOMINANCE.
627 2018-05-29  Martin Liska  <mliska@suse.cz>
628             David Malcolm  <dmalcolm@redhat.com>
630         * vec.c (test_reverse): New.
631         (vec_c_tests): Add new test.
632         * vec.h (vl_ptr>::reverse): New function.
634 2018-05-29  Gerald Pfeifer  <gerald@pfeifer.com>
636         * config.gcc: Identify FreeBSD 3.x and 4.x as unsupported.
638         * config/freebsd-spec.h (FBSD_LIB_SPEC): Only consider FreeBSD 5
639         and later.
641 2018-05-28  Bernd Edlinger  <bernd.edlinger@hotmail.de>
643         * tree-dump.c (dump_node): Use splay_tree_delete_pointers.
645 2018-05-28  Richard Biener  <rguenther@suse.de>
647         PR tree-optimization/85933
648         * tree-vect-data-refs.c (vect_record_base_alignments): Only
649         look at stmts marked as vectorizable.
651 2018-05-28  Richard Biener  <rguenther@suse.de>
653         PR tree-optimization/85934
654         * tree-vect-generic.c (expand_vector_operations_1): Hoist
655         vector boolean check before scalar optimization.
657 2018-05-28  Jakub Jelinek  <jakub@redhat.com>
659         * doc/invoke.texi (ARM Options): Use @item instead of @itemx
660         for armv5te.
662 2018-05-28  Mark Wielaard  <mark@klomp.org>
664         * dwarf2asm.c (dw2_asm_output_delta_uleb128): Add brackets around lab2
665         if it is an expression containing a minus sign.
667 2018-05-27  John David Anglin  <danglin@gcc.gnu.org>
669         * config/pa/pa-linux.h (NEED_INDICATE_EXEC_STACK): Define to 0.
671 2018-05-27  Paul Koning  <ni1d@arrl.net>
673         * config/pdp11/pdp11.md (truncsihi2): Remove.
675 2018-05-27  Monk Chiang  <sh.chiang04@gmail.com>
676             Chung-Ju Wu  <jasonwucj@gmail.com>
678         * config/nds32/nds32-intrinsic.md (unaligned_storedi): Modify patterns
679         implementation.
680         (unaligned_store_dw): Ditto.
681         * config/nds32/nds32-memory-manipulation.c
682         (nds32_expand_movmemsi_loop_known_size): Refactoring implementation.
683         (nds32_gen_dup_4_byte_to_word_value): Rename to ...
684         (nds32_gen_dup_4_byte_to_word_value_aux): ... this.
685         (emit_setmem_word_loop): Rename to ...
686         (emit_setmem_doubleword_loop): ... this.
687         (nds32_gen_dup_4_byte_to_word_value): New function.
688         (nds32_gen_dup_8_byte_to_double_word_value): New function.
689         (nds32_expand_setmem_loop): Refine implementation.
690         (nds32_expand_setmem_loop_v3m): Ditto.
691         * config/nds32/nds32-multiple.md (unaligned_store_update_base_dw): New
692         pattern.
694 2018-05-27  Chung-Ju Wu  <jasonwucj@gmail.com>
696         * config/nds32/nds32.md (bswapsi2, bswaphi2): New patterns.
698 2018-05-27  Chung-Ju Wu  <jasonwucj@gmail.com>
700         * config/nds32/nds32.c (nds32_attribute_table): Add "no_prologue".
701         (nds32_init_machine_status): Initialize machine->attr_naked_p and
702         machine->attr_no_prologue_p.
703         (nds32_compute_stack_frame): Check "naked" and "no_prologue" attributes.
704         (nds32_naked_function_p): Handle "naked" and "no_prologue" attributes.
705         (nds32_expand_epilogue): Consider attr_naked_p.
706         (nds32_expand_epilogue_v3pop): Likewise.
707         (nds32_can_use_return_insn): Likewise.
708         * config/nds32/nds32.h (machine_function): Add attr_naked_p and
709         attr_no_prologue_p fields.
710         * config/nds32/nds32.opt (mret-in-naked-func): New option.
712 2018-05-27  Jakub Jelinek  <jakub@redhat.com>
714         PR target/85918
715         * config/i386/i386.md (fixunssuffix, floatunssuffix): New code
716         attributes.
717         * config/i386/sse.md
718         (<floatsuffix>float<sseintvecmodelower><mode>2<mask_name><round_name>):
719         Rename to ...
720         (float<floatunssuffix><sseintvecmodelower><mode>2<mask_name><round_name>):
721         ... this.
722         (<floatsuffix>float<sselongvecmodelower><mode>2<mask_name><round_name>):
723         Rename to ...
724         (float<floatunssuffix><sselongvecmodelower><mode>2<mask_name><round_name>):
725         ... this.
726         (*<floatsuffix>floatv2div2sf2): Rename to ...
727         (*float<floatunssuffix>v2div2sf2): ... this.
728         (<floatsuffix>floatv2div2sf2_mask): Rename to ...
729         (float<floatunssuffix>v2div2sf2_mask): ... this.
730         (*<floatsuffix>floatv2div2sf2_mask_1): Rename to ...
731         (*float<floatunssuffix>v2div2sf2_mask_1): ... this.
732         (<fixsuffix>fix_truncv8dfv8si2<mask_name><round_saeonly_name>): Rename
733         to ...
734         (fix<fixunssuffix>_truncv8dfv8si2<mask_name><round_saeonly_name>):
735         ... this.
736         (<fixsuffix>fix_trunc<mode><sseintvecmodelower>2<mask_name><round_saeonly_name>):
737         Rename to ...
738         (fix<fixunssuffix>_trunc<mode><sseintvecmodelower>2<mask_name><round_saeonly_name>):
739         ... this.
740         (<fixsuffix>fix_trunc<mode><sselongvecmodelower>2<mask_name><round_saeonly_name>):
741         Rename to ...
742         (fix<fixunssuffix>_trunc<mode><sselongvecmodelower>2<mask_name><round_saeonly_name>):
743         ... this.
744         (<fixsuffix>fix_truncv2sfv2di2<mask_name>): Rename to ...
745         (fix<fixunssuffix>_truncv2sfv2di2<mask_name>): ... this.
746         (vec_pack_ufix_trunc_<mode>): Use gen_fixuns_truncv8dfv8si2 instead of
747         gen_ufix_truncv8dfv8si2.
748         * config/i386/i386-builtin.def (__builtin_ia32_cvttpd2uqq256_mask,
749         __builtin_ia32_cvttpd2uqq128_mask, __builtin_ia32_cvttps2uqq256_mask,
750         __builtin_ia32_cvttps2uqq128_mask, __builtin_ia32_cvtuqq2ps256_mask,
751         __builtin_ia32_cvtuqq2ps128_mask, __builtin_ia32_cvtuqq2pd256_mask,
752         __builtin_ia32_cvtuqq2pd128_mask, __builtin_ia32_cvttpd2udq512_mask,
753         __builtin_ia32_cvtuqq2ps512_mask, __builtin_ia32_cvtuqq2pd512_mask,
754         __builtin_ia32_cvttps2uqq512_mask, __builtin_ia32_cvttpd2uqq512_mask):
755         Use fixuns instead ufix or floatuns instead ufloat in CODE_FOR_ names.
757 2018-05-24  H.J. Lu  <hongjiu.lu@intel.com>
759         PR target/85900
760         PR target/85345
761         * varasm.c (assemble_alias): Lookup ifunc attribute on error.
763 2018-05-25  Jim Wilson  <jimw@sifive.com>
765         * config/riscv/riscv-protos.h (riscv_epilogue_uses): New.
766         * config/riscv/riscv.c (struct machine_function): Add
767         interrupt_handler_p and attribute_checked_p fields.
768         (riscv_attribute_table): Add interrupt.
769         (riscv_interrupt_type_p): New.
770         (riscv_save_reg_p): Save extra regs for interrupt handler.
771         (riscv_use_save_libcall): Return false  for interrupt handler.
772         (riscv_first_stack_step): Add forward declaration.
773         (riscv_compute_frame_info): New local interrupt_save_t1.  Set it
774         for interrupt handler with large frame.  Use it for saved reg list.
775         (riscv_expand_prologue): Move flag_stack_usage_info support to
776         eliminate duplication.
777         (riscv_expand_epilogue): Generate mret for interrupt handler.
778         (riscv_epilogue_uses): New.
779         (riscv_can_use_return_insn): Return false for interrupt handler.
780         (riscv_function_ok_for_sibcall): Likewise.
781         (riscv_set_current_function): Add interrupt handler support.
782         * config/riscv/riscv.h (EPILOGUE_USES): Call riscv_epilogue_uses.
783         * config/riscv/riscv.md (UNSPECV_MRET): New.
784         (GP_REGNUM): New.
785         (riscv_frflags, riscv_fsflags): Use tab after opcode.
786         (riscv_mret): New.
787         * doc/extend.texi (RISC-V Function Attributes) <interrupt>: New.
789 2018-05-25  Bill Schmidt  <wschmidt@linux.ibm.com>
791         PR tree-optimization/85712
792         * gimple-ssa-strength-reduction.c (replace_one_candidate): Skip if
793         this candidate has already been replaced in-situ by a copy.
795 2018-05-25  Jason Merrill  <jason@redhat.com>
797         PR c++/80485 - inline function non-zero address.
798         * symtab.c (nonzero_address): Check DECL_COMDAT.
800 2018-05-25  Uros Bizjak  <ubizjak@gmail.com>
802         PR target/83628
803         * config/alpha/alpha.md (ashlsi3): New insn pattern.
804         (*ashlsi_se): Rename from *ashldi_se.  Define as sign
805         extension of SImode operation.  Use const123_operand predicate.
806         (*saddsi_1): Remove.
807         (*saddl_se_1): Ditto.
808         (*ssubsi_1): Ditto.
809         (*ssubl_se_1): Ditto.
810         * config/alpha/predicates.md (const123_operand): New predicate.
811         * config/alpha/constraints.md (P): Use IN_RANGE.
813 2018-05-25  Richard Biener  <rguenther@suse.de>
815         * tree-ssa-alias.h (refs_may_alias_p): Add tbaa_p bool parameter,
816         defaulted to true.
817         (ref_maybe_used_by_stmt_p): Likewise.
818         (stmt_may_clobber_ref_p): Likewise.
819         (stmt_may_clobber_ref_p_1): Likewise.
820         * tree-ssa-alias.c (refs_may_alias_p): Add tbaa_p bool parameter
821         and pass it along.
822         (ref_maybe_used_by_stmt_p): Likewise.
823         (stmt_may_clobber_ref_p): Likewise.
824         (stmt_may_clobber_ref_p_1): Likewise.
825         * tree-vect-data-refs.c (vect_slp_analyze_node_dependences): Use
826         the alias oracle to disambiguate DRs with stmts DR analysis
827         couldn't handle.
828         (vect_analyze_data_refs): Do not give up on not analyzable
829         DRs for BB vectorization.  Remove code truncating the dataref
830         vector.
832 2018-05-25  Jakub Jelinek  <jakub@redhat.com>
834         PR target/85832
835         * config/i386/sse.md (<avx512>_eq<mode>3<mask_scalar_merge_name>_1):
836         Add (=Yk,v,C) variant using vptestm insn.  Use TARGET_AVX512BW
837         in test instead of TARGET_AVX512F for VI12_AVX512VL iterator.
839 2018-05-25  Richard Biener  <rguenther@suse.de>
841         * tree-vect-data-refs.c (vect_find_stmt_data_reference): New
842         function, combining stmt data ref gathering and fatal analysis
843         parts.
844         (vect_analyze_data_refs): Remove now redudnant code and simplify.
845         * tree-vect-loop.c (vect_get_datarefs_in_loop): Factor out from
846         vect_analyze_loop_2 and use vect_find_stmt_data_reference.
847         * tree-vect-slp.c (vect_slp_bb): Use vect_find_stmt_data_reference.
848         * tree-vectorizer.h (vect_find_stmt_data_reference): Declare.
850 2018-05-25  Bin Cheng  <bin.cheng@arm.com>
852         PR tree-optimization/85720
853         * tree-loop-distribution.c (break_alias_scc_partitions): Don't merge
854         SCC if all partitions are builtins.
855         (version_loop_by_alias_check): New parameter.  Generate cancelable
856         runtime alias check if all partitions are builtins.
857         (distribute_loop): Update call to above function.
859 2018-05-25  Bin Cheng  <bin.cheng@arm.com>
861         * tree-outof-ssa.c (tree-ssa.h, tree-dfa.h): Include header files.
862         (create_default_def, for_all_parms): Moved from tree-ssa-coalesce.c.
863         (parm_default_def_partition_arg): Ditto.
864         (set_parm_default_def_partition): Ditto.
865         (get_parm_default_def_partitions): Ditto and make it static.
866         (get_undefined_value_partitions): Ditto and make it static.
867         (remove_ssa_form): Refactor call to init_var_map here.
868         * tree-ssa-coalesce.c (build_ssa_conflict_graph): Support live range
869         computation for loop region.
870         (coalesce_partitions, compute_optimized_partition_bases): Ditto.
871         (register_default_def): Delete.
872         (for_all_parms, create_default_def): Move to tree-outof-ssa.c.
873         (parm_default_def_partition_arg): Ditto.
874         (set_parm_default_def_partition): Ditto.
875         (get_parm_default_def_partitions): Ditto and make it static.
876         (get_undefined_value_partitions): Ditto and make it static.
877         (coalesce_with_default, coalesce_with_default): Update comment.
878         (create_coalesce_list_for_region): New func factored out from
879         create_outofssa_var_map.
880         (populate_coalesce_list_for_outofssa): New func factored out from
881         create_outofssa_var_map and coalesce_ssa_name.
882         (create_outofssa_var_map): Delete.
883         (coalesce_ssa_name): Refactor to support live range computation.
884         * tree-ssa-coalesce.h (coalesce_ssa_name): Change decl.
885         (get_parm_default_def_partitions): Delete.
886         (get_undefined_value_partitions): Ditto.
887         * tree-ssa-live.c (init_var_map, delete_var_map): Support live range
888         computation for loop region.
889         (new_tree_live_info, loe_visit_block): Ditto.
890         (live_worklist, set_var_live_on_entry): Ditto.
891         (calculate_live_on_exit, verify_live_on_entry): Ditto.
892         * tree-ssa-live.h (struct _var_map): New fields.
893         (init_var_map): Change decl.
894         (region_contains_p): New.
896 2018-05-25  Bin Cheng  <bin.cheng@arm.com>
898         * tree-ssa-live.h (live_merge_and_clear): Delete.
900 2018-05-25  Richard Biener  <rguenther@suse.de>
902         PR c++/85912
903         * tree-dump.c (dequeue_and_dump): Remove access to removed
904         operand 2 of a SWITCH_EXPR.
906 2018-05-25  Richard Sandiford  <richard.sandiford@linaro.org>
908         * doc/sourcebuild.texi (vect_double_cond_arith): Include
909         multiplication and division.
910         * doc/md.texi (cond_mul@var{m}, cond_div@var{m}, cond_mod@var{m})
911         (cond_udiv@var{m}, cond_umod@var{m}): Document.
912         * optabs.def (cond_smul_optab, cond_sdiv_optab, cond_smod_optab)
913         (cond_udiv_optab, cond_umod_optab): New optabs.
914         * internal-fn.def (IFN_COND_MUL, IFN_COND_DIV, IFN_COND_MOD)
915         (IFN_COND_RDIV): New internal functions.
916         * internal-fn.c (get_conditional_internal_fn): Handle TRUNC_DIV_EXPR,
917         TRUNC_MOD_EXPR and RDIV_EXPR.
918         * match.pd (UNCOND_BINARY, COND_BINARY): Handle them.
919         * config/aarch64/iterators.md (UNSPEC_COND_MUL, UNSPEC_COND_DIV):
920         New unspecs.
921         (SVE_INT_BINARY): Include mult.
922         (SVE_COND_FP_BINARY): Include UNSPEC_MUL and UNSPEC_DIV.
923         (optab, sve_int_op): Handle mult.
924         (optab, sve_fp_op, commutative): Handle UNSPEC_COND_MUL and
925         UNSPEC_COND_DIV.
926         * config/aarch64/aarch64-sve.md (cond_<optab><mode>): New pattern
927         for SVE_INT_BINARY_SD.
929 2018-05-25  Richard Sandiford  <richard.sandiford@linaro.org>
931         * config/aarch64/iterators.md (SVE_INT_BINARY_SD): New code iterator.
932         (optab, sve_int_op): Handle div and udiv.
933         * config/aarch64/aarch64-sve.md (<optab><mode>3): New expander
934         for SVE_INT_BINARY_SD.
935         (*<optab><mode>3): New insn for the same.
937 2018-05-25  Richard Sandiford  <richard.sandiford@linaro.org>
939         * tree-vect-patterns.c: Include predict.h.
940         (vect_recog_divmod_pattern): Restrict check for division support
941         to when optimizing for size.
943 2018-05-25  Richard Sandiford  <richard.sandiford@linaro.org>
945         * doc/sourcebuild.texi (vect_double_cond_arith: Document.
946         * gimple-match.h (gimple_match_op::MAX_NUM_OPS): Bump to 4.
947         (gimple_match_op::gimple_match_op): Add an overload for 4 operands.
948         (gimple_match_op::set_op): Likewise.
949         (gimple_resimplify4): Declare.
950         * genmatch.c (get_operand_type): Handle CFN_COND_* functions.
951         (expr::gen_transform): Likewise.
952         (decision_tree::gen): Generate a simplification routine for 4 operands.
953         * gimple-match-head.c (gimple_simplify): Add an overload for
954         4 operands.  In the top-level function, handle up to 4 call
955         arguments and call gimple_resimplify4.
956         (gimple_resimplify4): New function.
957         (build_call_internal): Pass a fourth operand.
958         (maybe_push_to_seq): Likewise.
959         * match.pd (UNCOND_BINARY, COND_BINARY): New operator lists.
960         Fold VEC_COND_EXPRs of an operation and a default value into
961         an IFN_COND_* function if possible.
962         * config/aarch64/iterators.md (UNSPEC_COND_MAX, UNSPEC_COND_MIN):
963         New unspecs.
964         (SVE_COND_FP_BINARY): Include them.
965         (optab, sve_fp_op): Handle them.
966         (SVE_INT_BINARY_REV): New code iterator.
967         (SVE_COND_FP_BINARY_REV): New int iterator.
968         (commutative): New int attribute.
969         * config/aarch64/aarch64-protos.h (aarch64_sve_prepare_conditional_op):
970         Declare.
971         * config/aarch64/aarch64.c (aarch64_sve_prepare_conditional_op): New
972         function.
973         * config/aarch64/aarch64-sve.md (cond_<optab><mode>): Use it.
974         (*cond_<optab><mode>): New patterns for reversed operands.
976 2018-05-25  Richard Biener  <rguenther@suse.de>
978         * tree-vectorizer.h (STMT_VINFO_GROUP_*, GROUP_*): Remove.
979         (DR_GROUP_*): New, assert we have non-NULL ->data_ref_info.
980         (REDUC_GROUP_*): New, assert we have NULL ->data_ref_info.
981         (STMT_VINFO_GROUPED_ACCESS): Adjust.
982         * tree-vect-data-refs.c (everywhere): Adjust users.
983         * tree-vect-loop.c (everywhere): Likewise.
984         * tree-vect-slp.c (everywhere): Likewise.
985         * tree-vect-stmts.c (everywhere): Likewise.
986         * tree-vect-patterns.c (vect_reassociating_reduction_p): Likewise.
988 2018-05-25  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
990         * configure.ac (gcc_cv_as_section_has_e): Move to common section.
991         Rename to...
992         (gcc_cv_as_section_exclude): ... this.
993         Try Solaris as #exclude syntax.
994         * configure: Regenerate.
995         * config.in: Regenerate.
996         * config/i386/i386.c (i386_solaris_elf_named_section): Handle
997         SECTION_EXCLUDE.
998         * config/sparc/sparc.c (sparc_solaris_elf_asm_named_section)
999         [HAVE_GAS_SECTION_EXCLUDE]: Handle SECTION_EXCLUDE.
1001         * varasm.c (default_elf_asm_named_section): Don't check if
1002         HAVE_GAS_SECTION_EXCLUDE is defined.
1004 2018-05-25  Richard Sandiford  <richard.sandiford@linaro.org>
1006         * doc/md.texi: Update the documentation of the cond_* optabs
1007         to mention the new final operand.  Fix GET_MODE_NUNITS call.
1008         Describe the scalar case too.
1009         * internal-fn.def (IFN_EXTRACT_LAST): Change type to fold_left.
1010         * internal-fn.c (expand_cond_unary_optab_fn): Expect 3 operands
1011         instead of 2.
1012         (expand_cond_binary_optab_fn): Expect 4 operands instead of 3.
1013         (get_conditional_internal_fn): Update comment.
1014         * tree-vect-loop.c (vectorizable_reduction): Pass the original
1015         accumulator value as a final argument to conditional functions.
1016         * config/aarch64/aarch64-sve.md (cond_<optab><mode>): Turn into
1017         a define_expand and add an "else" operand.  Assert for now that
1018         the else operand is equal to operand 2.  Use SVE_INT_BINARY and
1019         SVE_COND_FP_BINARY instead of SVE_COND_INT_OP and SVE_COND_FP_OP.
1020         (*cond_<optab><mode>): New patterns.
1021         * config/aarch64/iterators.md (UNSPEC_COND_SMAX, UNSPEC_COND_UMAX)
1022         (UNSPEC_COND_SMIN, UNSPEC_COND_UMIN, UNSPEC_COND_AND, UNSPEC_COND_ORR)
1023         (UNSPEC_COND_EOR): Delete.
1024         (optab): Remove associated mappings.
1025         (SVE_INT_BINARY): New code iterator.
1026         (sve_int_op): Remove int attribute and add "minus" to the code
1027         attribute.
1028         (SVE_COND_INT_OP): Delete.
1029         (SVE_COND_FP_OP): Rename to...
1030         (SVE_COND_FP_BINARY): ...this.
1032 2018-05-25  Richard Sandiford  <richard.sandiford@linaro.org>
1034         * optabs.c (can_reuse_operands_p): New function.
1035         (maybe_legitimize_operands): Try to reuse the results for
1036         earlier operands.
1038 2018-05-24  Uros Bizjak  <ubizjak@gmail.com>
1040         * config/i386/sse.md (cvtusi2<ssescalarmodesuffix>64<round_name>):
1041         Add {q} suffix to insn mnemonic.
1043 2018-05-23  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
1045         * config/msp430/msp430.c (TARGET_WARN_FUNC_RETURN): Define.
1046         (msp430_warn_func_return): New.
1048 2018-05-24  Roger Sayle  <roger@nextmovesoftware.com>
1050         * fold-const.c (tree_nonzero_bits): New function.
1051         * fold-const.h (tree_nonzero_bits): Likewise.
1052         * match.pd (POPCOUNT): New patterns to fold BUILTIN_POPCOUNT and
1053         friends.  POPCOUNT(x&1) => x&1, POPCOUNT(x)==0 => x==0, etc.
1055 2018-05-24  H.J. Lu  <hongjiu.lu@intel.com>
1057         PR target/85900
1058         PR target/85345
1059         * varasm.c (assemble_alias): Check ifunc_resolver only on
1060         FUNCTION_DECL.
1062 2018-05-24  Uros Bizjak  <ubizjak@gmail.com>
1064         PR target/85903
1065         * config/i386/sse.md (movdi_to_sse): Do not generate pseudo
1066         when memory input operand is handled.
1068 2018-05-24  Luis Machado  <luis.machado@linaro.org>
1070         * config/aarch64/aarch64.c (qdf24xx_addrcost_table): New static
1071         global.
1072         (qdf24xx_tunings) <addr_costs>: Set to qdf24xx_addrcost_table.
1074 2018-05-24  Richard Sandiford  <richard.sandiford@linaro.org>
1076         * match.pd: Delay FMA folds until after vectorization.
1078 2018-05-24  Andre Vieira  <andre.simoesdiasvieira@arm.com>
1080         PR target/83009
1081         * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): Make
1082         address check not strict.
1084 2018-05-24  Richard Sandiford  <richard.sandiford@linaro.org>
1086         * gimple-match.h (gimple_match_op): New class.
1087         (mprts_hook): Replace parameters with a gimple_match_op *.
1088         (maybe_build_generic_op): Likewise.
1089         (gimple_simplified_result_is_gimple_val): Replace parameters with
1090         a const gimple_match_op *.
1091         (gimple_simplify): Replace code_helper * and tree * parameters with
1092         a gimple_match_op * parameter.
1093         (gimple_resimplify1): Replace code_helper *, tree and tree *
1094         parameters with a gimple_match_op * parameter.
1095         (gimple_resimplify2): Likewise.
1096         (gimple_resimplify3): Likewise.
1097         (maybe_push_res_to_seq): Replace code_helper, tree and tree *
1098         parameters with a gimple_match_op * parameter.
1099         * gimple-match-head.c (gimple_simplify): Change prototypes of
1100         auto-generated functions to take a gimple_match_op * instead of
1101         separate code_helper * and tree * parameters.  Make the same
1102         change in the top-level overload and update calls to the
1103         gimple_resimplify routines.  Update calls to the auto-generated
1104         functions and to maybe_push_res_to_seq in the publicly-facing
1105         operation-specific gimple_simplify overloads.
1106         (gimple_match_op::MAX_NUM_OPS): Define.
1107         (gimple_resimplify1): Replace rcode and ops with a single res_op
1108         parameter.  Update call to gimple_simplify.
1109         (gimple_resimplify2): Likewise.
1110         (gimple_resimplify3): Likewise.
1111         (mprts_hook): Replace parameters with a gimple_match_op *.
1112         (maybe_build_generic_op): Likewise.
1113         (build_call_internal): Replace type, nargs and ops with
1114         a gimple_match_op *.
1115         (maybe_push_res_to_seq): Replace res_code, type and ops parameters
1116         with a single gimple_match_op *.  Update calls to mprts_hook,
1117         build_call_internal and gimple_simplified_result_is_gimple_val.
1118         Factor out code that is common to the tree_code and combined_fn cases.
1119         * genmatch.c (expr::gen_transform): Replace tem_code and
1120         tem_ops with a gimple_match_op called tem_op.  Update calls
1121         to the gimple_resimplify functions and maybe_push_res_to_seq.
1122         (dt_simplify::gen_1): Manipulate res_op instead of res_code and
1123         res_ops.  Update call to the gimple_resimplify functions.
1124         (dt_simplify::gen): Pass res_op instead of res_code and res_ops.
1125         (decision_tree::gen): Make the functions take a gimple_match_op *
1126         called res_op instead of separate res_code and res_ops parameters.
1127         Update call accordingly.
1128         * gimple-fold.c (replace_stmt_with_simplification): Replace rcode
1129         and ops with a single res_op parameter.  Update calls to
1130         maybe_build_generic_op and maybe_push_res_to_seq.
1131         (fold_stmt_1): Update calls to gimple_simplify and
1132         replace_stmt_with_simplification.
1133         (gimple_fold_stmt_to_constant_1): Update calls to gimple_simplify
1134         and gimple_simplified_result_is_gimple_val.
1135         * tree-cfgcleanup.c (cleanup_control_expr_graph): Update call to
1136         gimple_simplify.
1137         * tree-ssa-sccvn.c (vn_lookup_simplify_result): Replace parameters
1138         with a gimple_match_op *.
1139         (vn_nary_build_or_lookup): Likewise.  Update call to
1140         vn_nary_build_or_lookup_1.
1141         (vn_nary_build_or_lookup_1): Replace rcode, type and ops with a
1142         gimple_match_op *.  Update calls to the gimple_resimplify routines
1143         and to gimple_simplified_result_is_gimple_val.
1144         (vn_nary_simplify): Update call to vn_nary_build_or_lookup_1.
1145         Use gimple_match_op::MAX_NUM_OPS instead of a hard-coded 3.
1146         (vn_reference_lookup_3): Update call to vn_nary_build_or_lookup.
1147         (visit_nary_op): Likewise.
1148         (visit_reference_op_load): Likewise.
1150 2018-05-23  Luis Machado  <luis.machado@linaro.org>
1152         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Use correct type
1153         modifier for printing the step amount.
1155 2018-05-23  Jozef Lawrynowicz  <jozef.l@somniumtech.com>
1157         PR target/78849
1158         * gcc/tree.c (build_common_tree_nodes): Dont set TYPE_SIZE for __intN
1159         types.
1161 2018-05-23  Segher Boessenkool  <segher@kernel.crashing.org>
1163         * doc/sourcebuild.texi (Endianness): New subsubsection.
1165 2018-05-23  Luis Machado  <luis.machado@linaro.org>
1167         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
1168         <prefetch_dynamic_strides>: New const bool field.
1169         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
1170         prefetch_dynamic_strides.
1171         (exynosm1_prefetch_tune): Likewise.
1172         (thunderxt88_prefetch_tune): Likewise.
1173         (thunderx_prefetch_tune): Likewise.
1174         (thunderx2t99_prefetch_tune): Likewise.
1175         (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides to
1176         false.
1177         (aarch64_override_options_internal): Update to set
1178         PARAM_PREFETCH_DYNAMIC_STRIDES.
1179         * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
1180         * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
1181         * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
1182         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
1183         prefetch-dynamic-strides setting.
1185 2018-05-23  Luis Machado  <luis.machado@linaro.org>
1187         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
1188         <minimum_stride>: New const int field.
1189         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
1190         minimum_stride field defaulting to -1.
1191         (exynosm1_prefetch_tune): Likewise.
1192         (thunderxt88_prefetch_tune): Likewise.
1193         (thunderx_prefetch_tune): Likewise.
1194         (thunderx2t99_prefetch_tune): Likewise.
1195         (qdf24xx_prefetch_tune) <minimum_stride>: Set to 2048.
1196         <default_opt_level>: Set to 3.
1197         (aarch64_override_options_internal): Update to set
1198         PARAM_PREFETCH_MINIMUM_STRIDE.
1199         * doc/invoke.texi (prefetch-minimum-stride): Document new option.
1200         * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
1201         * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
1202         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
1203         stride is constant and is below the minimum stride threshold.
1205 2018-05-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1207         * config/arm/arm-cpus.in (mode26): Delete.
1208         (armv4): Delete mode26 reference.
1209         * config/arm/arm.c (arm_configure_build_target): Delete use of
1210         isa_bit_mode26.
1212 2018-05-23  Uros Bizjak  <ubizjak@gmail.com>
1214         * config/i386/i386.md (*floatuns<SWI48:mode><MODEF:mode>2_avx512):
1215         New insn pattern.
1216         (floatunssi<mode>2): Also enable for AVX512F and TARGET_SSE_MATH.
1217         Rewrite expander pattern.  Emit gen_floatunssi<mode>2_i387_with_xmm
1218         for non-SSE modes.
1219         (floatunsdisf2): Rewrite expander pattern.  Hanlde TARGET_AVX512F.
1220         (floatunsdidf2): Ditto.
1222 2018-05-23  Uros Bizjak  <ubizjak@gmail.com>
1224         * config/i386/i386.md (fixuns_trunc<mode>di2): New insn pattern.
1225         (fixuns_trunc<mode>si2_avx512f): Ditto.
1226         (*fixuns_trunc<mode>si2_avx512f_zext): Ditto.
1227         (fixuns_trunc<mode>si2): Also enable for AVX512F and TARGET_SSE_MATH.
1228         Emit fixuns_trunc<mode>si2_avx512f for AVX512F targets.
1230 2018-05-23  Alexander Monakov  <amonakov@ispras.ru>
1232         PR rtl-optimization/79985
1233         * df-scan.c (df_insn_refs_collect): Remove special case for
1234         global registers and asm statements.
1236 2018-05-23  Alexander Monakov  <amonakov@ispras.ru>
1238         * extend.texi (Global Register Variables): Rewrite the bullet list.
1239         Note that the register is available for allocation. Note that access
1240         via inline asm must use constraints. Add note about async-signal
1241         handlers. Remove paragraph about automagic register selection.
1243 2018-05-23  Richard Biener  <rguenther@suse.de>
1245         * tree-ssa-sccvn.c (vn_reference_lookup_3): Remove restriction
1246         of fixed offset from memset VN.
1248 2018-05-23  Bill Schmidt  <wschmidt@linux.ibm.com>
1250         * gimple-ssa-strength-reduction.c (struct slsr_cand_d): Add
1251         first_interp field.
1252         (alloc_cand_and_find_basis): Initialize first_interp field.
1253         (slsr_process_mul): Modify first_interp field.
1254         (slsr_process_add): Likewise.
1255         (slsr_process_cast): Modify first_interp field for each new
1256         interpretation.
1257         (slsr_process_copy): Likewise.
1258         (dump_candidate): Dump first_interp field.
1259         (replace_mult_candidate): Process all interpretations, not just
1260         subsequent ones.
1261         (replace_rhs_if_not_dup): Likewise.
1262         (replace_one_candidate): Likewise.
1264 2018-05-23  Wilco Dijkstra  <wdijkstr@arm.com>
1266         * config/aarch64/aarch64.c (aarch64_use_frame_pointer):
1267         Add new boolean.
1268         (aarch64_needs_frame_chain): New function.
1269         (aarch64_parse_override_string): Set aarch64_use_frame_pointer.
1271 2018-05-23  Sudakshina Das  <sudi.das@arm.com>
1273         PR target/84882
1274         * common/config/aarch64/aarch64-common.c (aarch64_handle_option):
1275         Check val before adding MASK_STRICT_ALIGN to opts->x_target_flags.
1276         * config/aarch64/aarch64.opt (mstrict-align): Remove RejectNegative.
1277         * config/aarch64/aarch64.c (aarch64_attributes): Mark allow_neg
1278         as true for strict-align.
1279         (aarch64_can_inline_p): Perform checks even when callee has no
1280         attributes to check for strict alignment.
1281         * doc/extend.texi (AArch64 Function Attributes): Document
1282         no-strict-align.
1283         * doc/invoke.texi: (AArch64 Options): Likewise.
1285 2018-05-23  Richard Sandiford  <richard.sandiford@linaro.org>
1287         PR tree-optimization/85853
1288         * tree-vect-slp.c (vect_slp_analyze_node_operations): Split out
1289         the handling of the root of the node to...
1290         (vect_slp_analyze_node_operations_1): ...this new function,
1291         and run the whole thing with the child nodes' def types
1292         set according to their SLP node's def type.
1294 2018-05-23  Richard Biener  <rguenther@suse.de>
1296         PR middle-end/85874
1297         * tree-data-ref.c (create_runtime_alias_checks): Defer
1298         and ignore overflow warnings.
1300 2018-05-23  Yury Gribov  <tetra2005@gmail.com>
1302         PR tree-optimization/85822
1303         * tree-vrp.c (is_masked_range_test): Fix handling of negative
1304         constants.
1306 2018-05-23  Richard Biener  <rguenther@suse.de>
1308         * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle arbitrary
1309         memset constants via native_interpret_expr.
1311 2018-05-22  H.J. Lu  <hongjiu.lu@intel.com>
1313         PR target/85345
1314         * cgraph.h (cgraph_node::create): Set ifunc_resolver for ifunc
1315         attribute.
1316         (cgraph_node::create_alias): Likewise.
1317         (cgraph_node::get_availability): Check ifunc_resolver instead
1318         of looking up ifunc attribute.
1319         * cgraphunit.c (maybe_diag_incompatible_alias): Likewise.
1320         * varasm.c (do_assemble_alias): Likewise.
1321         (assemble_alias): Likewise.
1322         (default_binds_local_p_3): Likewise.
1323         * cgraph.h (cgraph_node): Add ifunc_resolver.
1324         (cgraph_node::only_called_directly_or_aliased_p): Return false
1325         for IFUNC resolver.
1326         * lto-cgraph.c (input_node): Set ifunc_resolver for ifunc
1327         attribute.
1328         * symtab.c (symtab_node::verify_base): Verify that ifunc_resolver
1329         is equivalent to lookup_attribute ("ifunc", DECL_ATTRIBUTES (decl)).
1330         (symtab_node::binds_to_current_def_p): Check ifunc_resolver
1331         instead of looking up ifunc attribute.
1333 2018-05-22  Luis Machado  <luis.machado@linaro.org>
1335         * config/aarch64/aarch64.md (*ashift<mode>_extv_bfiz): New pattern.
1337 2018-05-22  Martin Sebor  <msebor@redhat.com>
1339         PR middle-end/85359
1340         * builtins.c (expand_builtin_strcpy): Call maybe_warn_nonstring_arg
1341         only when expasion succeeds.
1342         (expand_builtin_strcmp): Same.
1343         (expand_builtin_strncmp): Same.
1345 2018-05-22  Martin Sebor  <msebor@redhat.com>
1347         * calls.c (maybe_warn_nonstring_arg): Fix a typo in a comment.
1349 2018-05-22  Jackson Woodruff  <jackson.woodruff@arm.com>
1350             Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1352         * config/aarch64/aarch64-ldpstp.md: Replace uses of
1353         aarch64_mem_pair_operand with memory_operand and delete operand swapping
1354         code.
1355         * config/aarch64/aarch64.c (aarch64_operands_ok_for_ldpstp):
1356         Add check for legitimate_address.
1357         (aarch64_gen_adjusted_ldpstp): Swap operands where appropriate.
1358         (aarch64_swap_ldrstr_operands): New.
1359         * config/aarch64/aarch64-protos.h (aarch64_swap_ldrstr_operands):
1360         Define prototype.
1362 2018-05-22  Jackson Woodruff  <jackson.woodruff@arm.com>
1363             Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1365         * config/aarch64/aarch64.md: New patterns to generate stp
1366         and ldp.
1367         (store_pair_sw, store_pair_dw): New patterns to generate stp for
1368         single words and double words.
1369         (load_pair_sw, load_pair_dw): Likewise.
1370         (store_pair_sf, store_pair_df, store_pair_si, store_pair_di):
1371         Delete.
1372         (load_pair_sf, load_pair_df, load_pair_si, load_pair_di):
1373         Delete.
1374         * config/aarch64/aarch64-ldpstp.md: Modify peephole
1375         for different mode ldpstp and add peephole for merged zero stores.
1376         Likewise for loads.
1377         * config/aarch64/aarch64.c (aarch64_operands_ok_for_ldpstp):
1378         Add size check.
1379         (aarch64_gen_store_pair): Rename calls to match new patterns.
1380         (aarch64_gen_load_pair): Rename calls to match new patterns.
1381         * config/aarch64/aarch64-simd.md (load_pair<mode>): Rename to...
1382         (load_pair<DREG:mode><DREG2:mode>): ... This.
1383         (store_pair<mode>): Rename to...
1384         (vec_store_pair<DREG:mode><DREG2:mode>): ... This.
1385         * config/aarch64/iterators.md (DREG, DREG2, DX2, SX, SX2, DSX):
1386         New mode iterators.
1387         (V_INT_EQUIV): Handle SImode.
1388         * config/aarch64/predicates.md (aarch64_reg_zero_or_fp_zero):
1389         New predicate.
1391 2018-05-22  Martin Sebor  <msebor@redhat.com>
1393         PR c/85623
1394         * calls.c (maybe_warn_nonstring_arg): Use string length to set
1395         or ajust the presumed bound on an operation to avoid unnecessary
1396         warnings.
1398 2018-05-22  Martin Sebor  <msebor@redhat.com>
1400         PR tree-optimization/85826
1401         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Avoid
1402         assuming that a DECL necesarily has a constant size.
1404 2018-05-22  Richard Sandiford  <richard.sandiford@linaro.org>
1406         PR middle-end/85862
1407         * internal-fn.c (expand_direct_optab_fn): Cope with a null lhs.
1409 2018-05-22  Richard Biener  <rguenther@suse.de>
1411         PR tree-optimization/85834
1412         * tree-ssa-sccvn.c (vn_reference_lookup_3): Properly handle
1413         non-constant and non-zero memset arguments.
1415 2018-05-22  Martin Liska  <mliska@suse.cz>
1417         PR ipa/85607
1418         * ipa-icf.c (sem_item::add_type): Do not ICE for incomplete types.
1420 2018-05-22  Richard Biener  <rguenther@suse.de>
1422         PR tree-optimization/85863
1423         * tree-vect-stmts.c (vect_is_simple_cond): Only widen invariant
1424         comparisons when vectype is specified.
1425         (vectorizable_condition): Do not specify vectype for
1426         vect_is_simple_cond when SLP vectorizing.
1428 2018-05-21  Michael Meissner  <meissner@linux.ibm.com>
1430         PR target/85657
1431         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Do not
1432         define __ibm128 as long double.
1433         * config/rs6000/rs6000.c (rs6000_init_builtins): Create __ibm128
1434         as a distinct type when IEEE 128-bit support is enabled.
1435         (init_float128_ieee): Fix up conversions between IFmode and IEEE
1436         128-bit types to use the correct functions.
1437         (rs6000_expand_float128_convert): Use explicit FLOAT_EXTEND to
1438         convert between 128-bit floating point types that have different
1439         modes but the same representation, instead of using gen_lowpart to
1440         makean alias.
1441         * config/rs6000/rs6000.md (IFKF): New iterator for IFmode and
1442         KFmode.
1443         (IFKF_reg): New attributes to give the register constraints for
1444         IFmode and KFmode.
1445         (extend<mode>tf2_internal): New insns to mark an explicit
1446         conversion between 128-bit floating point types that have a
1447         different mode but share the same representation.
1449 2018-05-21  Richard Sandiford  <richard.sandiford@linaro.org>
1451         PR tree-optimization/85814
1452         * tree-ssa-strlen.c (get_stridx_plus_constant): Cope with
1453         a null return from get_strinfo when unsharing the next
1454         strinfo in the chain.
1456 2018-05-21  Vladimir Mezentsev  <vladimir.mezentsev@oracle.com>
1458         PR gcc/84923
1459         * varasm.c (weak_finish): Clean up weak_decls.
1461 2018-05-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1463         * config/aarch64/aarch64.md ("unspec"): Define UNSPEC_SABAL,
1464         UNSPEC_SABDL2, UNSPEC_SADALP, UNSPEC_UABAL, UNSPEC_UABDL2,
1465         UNSPEC_UADALP values.
1466         * config/aarch64/iterators.md (ABAL): New int iterator.
1467         (ABDL2): Likewise.
1468         (ADALP): Likewise.
1469         (sur): Add mappings for the above.
1470         * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl2<mode>_3):
1471         New define_insn.
1472         (aarch64_<sur>abal<mode>_4): Likewise.
1473         (aarch64_<sur>adalp<mode>_3): Likewise.
1474         (<sur>sadv16qi): New define_expand.
1476 2018-05-21  Alexander Nesterovskiy  <alexander.nesterovskiy@intel.com>
1478         * config/i386/i386.md (*movsf_internal): AVX falsedep fix.
1479         (*movdf_internal): Ditto.
1480         (*rcpsf2_sse): Ditto.
1481         (*rsqrtsf2_sse): Ditto.
1482         (*sqrt<mode>2_sse): Ditto.
1484 2018-05-21  Tamar Christina  <tamar.christina@arm.com>
1486         * config/aarch64/aarch64-simd.md (aarch64_eor3qv8hi): Change to
1487         eor3q<mode>4.
1488         (aarch64_bcaxqv8hi): Change to bcaxq<mode>4.
1489         * config/aarch64/aarch64-simd-builtins.def (veor3q_u8, veor3q_u32,
1490         veor3q_u64, veor3q_s8, veor3q_s16, veor3q_s32, veor3q_s64, vbcaxq_u8,
1491         vbcaxq_u32, vbcaxq_u64, vbcaxq_s8, vbcaxq_s16, vbcaxq_s32,
1492         vbcaxq_s64): New.
1493         * config/aarch64/arm_neon.h: Likewise.
1494         * config/aarch64/iterators.md (VQ_I): New.
1496 2018-05-21  Alexey Brodkin <abrodkin@synopsys.com>
1498         * config.gcc: Add arc/t-multilib-linux to tmake_file for
1499         arc*-*-linux*.
1500         * config/arc/t-multilib-linux: Specify MULTILIB_OPTIONS and
1501         MULTILIB_DIRNAMES
1503 2018-05-20  Chung-Ju Wu  <jasonwucj@gmail.com>
1505         * config/nds32/constraints.md (S): New constraint.
1506         * config/nds32/nds32.md (call_internal): Use constraint S.
1507         (call_value_internal): Likewise.
1508         (sibcall_internal): Likewise.
1509         (sibcall_value_internal): Likewise.
1511 2018-05-20  Kito Cheng  <kito.cheng@gmail.com>
1512             Chung-Ju Wu  <jasonwucj@gmail.com>
1514         * config/nds32/nds32.c (nds32_register_move_cost): Take garywolf cpu
1515         into consideration.
1517 2018-05-20  Kito Cheng  <kito.cheng@gmail.com>
1518             Chung-Ju Wu  <jasonwucj@gmail.com>
1520         * config/nds32/nds32-cost.c (rtx_cost_model_t): New structure.
1521         (insn_size_16bit, insn_size_32bit): New variables for cost evaluation.
1522         (nds32_rtx_costs_impl): Simplify.
1523         (nds32_address_cost_impl): Simplify.
1524         (nds32_init_rtx_costs): New function.
1525         (nds32_rtx_costs_speed_prefer): Likewise.
1526         (nds32_rtx_costs_size_prefer): Likewise.
1527         (nds32_address_cost_speed_prefer): Likewise.
1528         (nds32_address_cost_speed_fwprop): Likewise.
1529         (nds32_address_cost_size_prefer): Likewise.
1530         * config/nds32/nds32-protos.h (nds32_init_rtx_costs): Declare.
1531         * config/nds32/nds32.c (nds32_option_override): Use
1532         nds32_init_rtx_costs function.
1534 2018-05-20  Chung-Ju Wu  <jasonwucj@gmail.com>
1536         * config/nds32/nds32.c (nds32_asm_file_start): Output pipeline model.
1537         * config/nds32/nds32.h (TARGET_PIPELINE_N7): Define.
1538         (TARGET_PIPELINE_N8): Likewise.
1539         (TARGET_PIPELINE_N10): Likewise.
1540         (TARGET_PIPELINE_N13): Likewise.
1541         (TARGET_PIPELINE_GRAYWOLF): Likewise.
1543 2018-05-19  Monk Chiang  <sh.chiang04@gmail.com>
1545         * config/nds32/nds32-fpu.md: Update copyright year.
1547 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
1549         * config/nds32/nds32.h (ASM_SPEC): Adjust spec rule.
1551 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
1553         * config/nds32/nds32.c
1554         (nds32_md_asm_adjust): Consider flag_inline_asm_r15 variable.
1555         * config/nds32/nds32.opt (minline-asm-r15): New option.
1557 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
1559         * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS): Add
1560         MASK_HW_ABS.
1561         * config/nds32/nds32.md (abssi2): New pattern.
1563 2018-05-19  Uros Bizjak  <ubizjak@gmail.com>
1565         * config/i386/i386.md (rex64namesuffix): New mode attribute.
1566         * config/i386/sse.md (sse_cvtsi2ss<rex64namesuffix><round_name>):
1567         Merge insn pattern from sse_cvtsi2ss<round_name> and
1568         sse_cvtsi2ssq<round_name> using SWI48 mode iterator.
1569         (sse_cvtss2si<rex64namesuffix><round_name>): Merge insn pattern
1570         from sse_cvtss2si<round_name> and sse_cvtss2siq<round_name>
1571         using SWI48 mode iterator.
1572         (sse_cvtss2si<rex64namesuffix>_2): Merge insn pattern from
1573         sse_cvtss2si_2 and sse_cvtss2siq_2 using SWI48 mode iterator.
1574         (sse_cvttss2si<rex64namesuffix><round_saeonly_name>): Merge insn
1575         pattern from sse_cvttss2si<round_saeonly_name>
1576         and sse_cvttss2siq<round_saeonly_name> using SWI48 mode iterator.
1577         (avx512f_vcvtss2usi<rex64namesuffix><round_name>): Merge insn pattern
1578         from avx512f_vcvtss2usi<round_name> and avx512f_vcvtss2usiq<round_name>
1579         using SWI48 mode iterator.
1580         (avx512f_vcvttss2usi<rex64namesuffix><round_saeonly_name>): Merge
1581         insn pattern from avx512f_vcvttss2usi<round_saeonly_name> and
1582         avx512f_vcvttss2usiq<round_saeonly_name> using SWI48 mode iterator.
1583         (avx512f_vcvtsd2usi<rex64namesuffix><round_name>): Merge insn pattern
1584         from avx512f_vcvtsd2usi<round_name> and avx512f_vcvtsd2usiq<round_name>
1585         using SWI48 mode iterator.
1586         (avx512f_vcvttsd2usi<rex64namesuffix><round_saeonly_name>): Merge
1587         insn pattern from avx512f_vcvttsd2usi<round_saeonly_name> and
1588         avx512f_vcvttsd2usiq<round_saeonly_name> using SWI48 mode iterator.
1589         (sse2_cvtsd2si<rex64namesuffix><round_name>): Merge insn pattern from
1590         sse2_cvtsd2si<round_name> and sse2_cvtsd2siq<round_name> using
1591         SWI48 mode iterator.
1592         (sse2_cvtsd2si<rex64namesuffix>_2): Merge insn pattern from
1593         sse2_cvtsd2si_2 and sse2_cvtsd2siq_2 using SWI48 mode iterator.
1594         (sse_cvttsd2si<rex64namesuffix><round_saeonly_name>): Merge insn
1595         pattern from sse_cvttsd2si<round_saeonly_name>
1596         and sse_cvttsd2siq<round_saeonly_name> using SWI48 mode iterator.
1598 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
1600         * config/nds32/nds32-md-auxiliary.c
1601         (nds32_valid_smw_lwm_base_p): Refine.
1602         (nds32_output_smw_single_word): Refine.
1603         (nds32_output_smw_double_word): New.
1604         * config/nds32/nds32-protos.h (nds32_output_smw_double_word): New.
1606 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
1608         * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push): Refine.
1609         (nds32_output_stack_pop): Refine.
1610         (nds32_expand_unaligned_load): Refine.
1611         (nds32_expand_unaligned_store): Refine.
1613 2018-05-19  Kuan-Lin Chen <kuanlinchentw@gmail.com>
1614             Chung-Ju Wu  <jasonwucj@gmail.com>
1616         * config/nds32/constants.md: Add TP_REGNUM constant.
1617         (unspec_element): Add UNSPEC_GOTINIT, UNSPEC_GOT, UNSPEC_GOTOFF,
1618         UNSPEC_PLT, UNSPEC_TLSGD, UNSPEC_TLSLD, UNSPEC_TLSIE, UNSPEC_TLSLE and
1619         UNSPEC_ADD32.
1620         * config/nds32/nds32-doubleword.md: Consider flag_pic.
1621         * config/nds32/nds32-dspext.md (mov<mode>): Expand TLS and PIC cases.
1622         * config/nds32/nds32-predicates.c (nds32_const_unspec_p): New.
1623         * config/nds32/nds32-md-auxiliary.c: Implementation that support TLS
1624         and PIC code generation.
1625         * config/nds32/nds32-protos.h: Declarations that support TLS and PIC
1626         code generation.
1627         * config/nds32/nds32-relax-opt.c: Consider TLS and PIC for relax
1628         optimization.
1629         * config/nds32/nds32.md: Support TLS and PIC.
1630         * config/nds32/nds32.c: Support TLS and PIC.
1631         * config/nds32/nds32.h (nds32_relax_insn_type): New enum type.
1632         * config/nds32/predicates.md (nds32_nonunspec_symbolic_operand): New
1633         predicate.
1635 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
1637         * config/nds32/nds32-predicates.c (const_vector_to_hwint): Use machine
1638         mode with E_ prefix.
1640 2018-05-19  Kuan-Lin Chen <kuanlinchentw@gmail.com>
1641             Chung-Ju Wu  <jasonwucj@gmail.com>
1643         * config/nds32/constants.md (unspec_element): Add UNSPEC_ICT.
1644         * config/nds32/nds32-md-auxiliary.c
1645         (symbolic_reference_mentioned_p): New.
1646         (nds32_legitimize_ict_address): New.
1647         (nds32_expand_ict_move): New.
1648         (nds32_indirect_call_referenced_p): New.
1649         (nds32_symbol_binds_local_p): Delete.
1650         (nds32_long_call_p): Modify.
1651         * config/nds32/nds32-opts.h (nds32_ict_model_type): New enum type.
1652         * config/nds32/nds32-protos.h
1653         (symbolic_reference_mentioned_p): Declare.
1654         (nds32_legitimize_ict_address): Declare.
1655         (nds32_expand_ict_move): Declare.
1656         (nds32_indirect_call_referenced_p): Declare.
1657         * config/nds32/nds32-relax-opt.c (nds32_ict_const_p): New.
1658         (nds32_relax_group): Use nds32_ict_const_p as condition.
1659         * config/nds32/nds32.c (nds32_attribute_table): Add "indirect_call".
1660         (nds32_asm_file_start): Output ict_model directive in asm code.
1661         (nds32_legitimate_address_p): Consider indirect call.
1662         (nds32_print_operand): Consider indirect call.
1663         (nds32_print_operand_address): Consider indirect call.
1664         (nds32_insert_attributes): Handle "indirect_call" attribute.
1665         (TARGET_LEGITIMATE_ADDRESS_P): Define.
1666         (TARGET_LEGITIMATE_CONSTANT_P): Define.
1667         (TARGET_CANNOT_FORCE_CONST_MEM): Define.
1668         (TARGET_DELEGITIMIZE_ADDRESS): Define.
1669         (TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA): Define.
1670         * config/nds32/nds32.h (SYMBOLIC_CONST_P): Define.
1671         (TARGET_ICT_MODEL_SMALL): Define.
1672         (TARGET_ICT_MODEL_LARGE): Define.
1673         * config/nds32/nds32.md (movsi): Consider ict model.
1674         (call, call_value): Consider ict model.
1675         (sibcall, sibcall_value): Consider ict model.
1676         * config/nds32/nds32.opt (mict-model): New option.
1677         * config/nds32/predicates.md (nds32_symbolic_operand): Consider ict
1678         model.
1680 2018-05-18  Kito Cheng  <kito.cheng@gmail.com>
1681             Monk Chiang  <sh.chiang04@gmail.com>
1682             Jim Wilson <jimw@sifive.com>
1684         * common/config/riscv/riscv-common.c (riscv_parse_arch_string):
1685         Add support to parse rv32e*.  Clear MASK_RVE for rv32i and rv64i.
1686         * config.gcc (riscv*-*-*): Add support for rv32e* and ilp32e.
1687         * config/riscv/riscv-c.c (riscv_cpu_cpp_builtins): Define
1688         __riscv_32e when TARGET_RVE.  Handle ABI_ILP32E as soft-float ABI.
1689         * config/riscv/riscv-opts.h (riscv_abi_type): Add ABI_ILP32E.
1690         * config/riscv/riscv.c (riscv_compute_frame_info): When TARGET_RVE,
1691         compute save_libcall_adjustment properly.
1692         (riscv_option_override): Call error if TARGET_RVE and not ABI_ILP32E.
1693         (riscv_conditional_register_usage): Handle TARGET_RVE and ABI_ILP32E.
1694         * config/riscv/riscv.h (UNITS_PER_FP_ARG): Handle ABI_ILP32E.
1695         (STACK_BOUNDARY, ABI_STACK_BOUNDARY): Handle TARGET_RVE.
1696         (GP_REG_LAST, MAX_ARGS_IN_REGISTERS): Likewise.
1697         (ABI_SPEC): Handle mabi=ilp32e.
1698         * config/riscv/riscv.opt (abi_type): Add ABI_ILP32E.
1699         (RVE): Add RVE mask.
1700         * doc/invoke.texi (RISC-V options) <-mabi>: Add ilp32e info.
1701         <-march>: Add rv32e as an example.
1703 2018-05-18  Marc Glisse  <marc.glisse@inria.fr>
1705         PR c++/82899
1706         * tree-ssa-structalias.c (create_variable_info_for_1): Extra argument.
1707         (intra_create_variable_infos): Handle C++ constructors.
1709 2018-05-18  Martin Liska  <mliska@suse.cz>
1711         * passes.def: Remove a redundant pass.
1713 2018-05-18  Eric Botcazou  <ebotcazou@adacore.com>
1715         PR bootstrap/85838
1716         * config/sparc/sparc.c (sparc_expand_builtin): Always initialize op[0].
1718 2018-05-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1720         * config/arm/arm-cpus.in (armv3m, mode32): Delete features.
1721         (ARMv4): Update.
1722         (ARMv2, ARMv3, ARMv3m): Delete fgroups.
1723         (ARMv6m): Update.
1724         (armv2, armv2a, armv3, armv3m): Delete architectures.
1725         (arm2, arm250, arm3, arm6, arm60, arm600, arm610, arm620,
1726         arm7, arm7d, arm7di, arm70, arm700, arm700i, arm710, arm720,
1727         arm710c, arm7100, arm7500, arm7500fe, arm7m, arm7dm, arm7dmi):
1728         Delete cpus.
1729         * config/arm/arm.md (maddsidi4): Remove check for arm_arch3m.
1730         (*mulsidi3adddi): Likewise.
1731         (mulsidi3): Likewise.
1732         (*mulsidi3_nov6): Likewise.
1733         (umulsidi3): Likewise.
1734         (umulsidi3_nov6): Likewise.
1735         (umaddsidi4): Likewise.
1736         (*umulsidi3adddi): Likewise.
1737         (smulsi3_highpart): Likewise.
1738         (*smulsi3_highpart_nov6): Likewise.
1739         (umulsi3_highpart): Likewise.
1740         (*umulsi3_highpart_nov6): Likewise.
1741         * config/arm/arm.h (arm_arch3m): Delete.
1742         * config/arm/arm.c (arm_arch3m): Delete.
1743         (arm_option_override_internal): Update armv3-related comment.
1744         (arm_configure_build_target): Delete use of isa_bit_mode32.
1745         (arm_option_reconfigure_globals): Delete set of arm_ach3m.
1746         (arm_rtx_costs_internal): Delete check of arm_arch3m.
1747         * config/arm/arm-fixed.md (mulsq3): Delete check for arm_arch3m.
1748         (mulsa3): Likewise.
1749         (mulusa3): Likewise.
1750         * config/arm/arm-protos.h (arm_arch3m): Delete.
1751         * config/arm/arm-tables.opt: Regenerate.
1752         * config/arm/arm-tune.md: Likewise.
1753         * config/arm/t-arm-elf (all_early_nofp): Delete mentions of
1754         deleted architectures.
1756 2018-05-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1758         * config/arm/arm-cpus.in (armv5, armv5e): Delete features.
1759         (armv5t, armv5te): New features.
1760         (ARMv5, ARMv5e): Delete fgroups.
1761         (ARMv5t, ARMv5te): Adjust for above changes.
1762         (ARMv6m): Likewise.
1763         (armv5, armv5e): Delete arches.
1764         * config/arm/arm.md (*call_reg_armv5): Use arm_arch5t instead of
1765         arm_arch5.
1766         (*call_reg_arm): Likewise.
1767         (*call_value_reg_armv5): Likewise.
1768         (*call_value_reg_arm): Likewise.
1769         (*call_symbol): Likewise.
1770         (*call_value_symbol): Likewise.
1771         (*sibcall_insn): Likewise.
1772         (*sibcall_value_insn): Likewise.
1773         (clzsi2): Likewise.
1774         (prefetch): Likewise.
1775         (define_split and define_peephole2 dependent on arm_arch5):
1776         Likewise.
1777         * config/arm/arm.h (TARGET_LDRD): Use arm_arch5te instead of
1778         arm_arch5e.
1779         (TARGET_ARM_QBIT): Likewise.
1780         (TARGET_DSP_MULTIPLY): Likewise.
1781         (enum base_architecture): Delete BASE_ARCH_5, BASE_ARCH_5E.
1782         (arm_arch5, arm_arch5e): Delete.
1783         (arm_arch5t, arm_arch5te): Declare.
1784         * config/arm/arm.c (arm_arch5, arm_arch5e): Delete.
1785         (arm_arch5t): Declare.
1786         (arm_option_reconfigure_globals): Update for the above.
1787         (arm_options_perform_arch_sanity_checks): Update comment, replace
1788         use of arm_arch5 with arm_arch5t.
1789         (use_return_insn): Likewise.
1790         (arm_emit_call_insn): Likewise.
1791         (output_return_instruction): Likewise.
1792         (arm_final_prescan_insn): Likewise.
1793         (arm_coproc_builtin_available): Likewise.
1794         * config/arm/arm-c.c (arm_cpu_builtins): Replace arm_arch5 and
1795         arm_arch5e with arm_arch5t and arm_arch5te.
1796         * config/arm/arm-protos.h (arm_arch5, arm_arch5e): Delete.
1797         (arm_arch5t, arm_arch5te): Declare.
1798         * config/arm/arm-tables.opt: Regenerate.
1799         * config/arm/t-arm-elf: Remove references to armv5, armv5e.
1800         * config/arm/t-multilib: Likewise.
1801         * config/arm/thumb1.md (*call_reg_thumb1_v5): Check arm_arch5t
1802         instead of arm_arch5.
1803         (*call_reg_thumb1): Likewise.
1804         (*call_value_reg_thumb1_v5): Likewise.
1805         (*call_value_reg_thumb1): Likewise.
1806         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Remove now
1807         unreachable path.
1808         * doc/invoke.texi (ARM Options): Remove references to armv5, armv5e.
1810 2018-05-18  Martin Liska  <mliska@suse.cz>
1812         PR gcov-profile/84846
1813         * doc/gcov.texi: Document -t option of gcov tool.
1815 2018-05-18  Martin Liska  <mliska@suse.cz>
1817         PR gcov-profile/84846
1818         * gcov.c (print_usage): Add new -t option.
1819         (process_args): Handle the option.
1820         (generate_results): Use stdout as output when requested by
1821         the option.
1823 2018-05-18  Martin Liska  <mliska@suse.cz>
1825         PR gcov-profile/84846
1826         * coverage.c (coverage_init): Write PWD to .gcno file.
1827         * doc/gcov.texi: Document how working directory is printed.
1828         * gcov-dump.c (dump_gcov_file): Print PWD.
1829         * gcov.c (output_intermediate_file): Likewise.
1830         (read_graph_file): Read PWD string.
1831         (output_lines): Print PWD.
1833 2018-05-18  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
1835         PR middle-end/85817
1836         * ipa-pure-const.c (malloc_candidate_p): Remove the check integer_zerop
1837         for retval and return false if all args to phi are zero.        
1839 2018-05-18  Richard Biener  <rguenther@suse.de>
1841         * gimple-ssa-evrp.c (class evrp_folder): Add simplify_stmt_using_ranges
1842         method.
1843         (evrp_dom_walker::before_dom_children): Call it.
1845 2018-05-18  Richard Biener  <rguenther@suse.de>
1847         * tree-dfa.c (get_ref_base_and_extent): Use range-info to refine
1848         results when processing array refs with variable index.
1850 2018-05-18  Toon Moene  <toon@moene.org>
1852         * doc/invoke.texi: Move -floop-unroll-and-jam documentation
1853         directly after that of -floop-interchange. Indicate that both
1854         options are enabled by default when specifying -O3. 
1856 2018-05-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1858         * config/aarch64/aarch64-simd.md (vec_set<mode>): Use VALL_F16 mode
1859         iterator.  Delete separate integer-mode vec_set<mode> expander.
1860         (aarch64_simd_vec_setv2di): Delete.
1861         (vec_setv2di): Delete.
1862         (aarch64_simd_vec_set<mode>): Delete all other patterns with that name.
1863         Use VALL_F16 mode iterator.  Add LD1 alternative and use vwcore for
1864         the "w, r" alternative.
1866 2018-05-18  Martin Liska  <mliska@suse.cz>
1868         * passes.def: Add pass_lower_switch and pass_lower_switch_O0.
1869         * tree-pass.h (make_pass_lower_switch_O0): New function.
1870         * tree-switch-conversion.c (node_has_low_bound): Remove.
1871         (node_has_high_bound): Likewise.
1872         (node_is_bounded): Likewise.
1873         (class pass_lower_switch): Make it a template type and create
1874         two instances.
1875         (pass_lower_switch::execute): Add template argument.
1876         (make_pass_lower_switch): New function.
1877         (make_pass_lower_switch_O0): New function.
1878         (do_jump_if_equal): Remove.
1879         (emit_case_nodes): Simplify to just handle all 3 cases and leave
1880         all the hard work to tree optimization passes.
1882 2018-05-18  Martin Liska  <mliska@suse.cz>
1884         * dbgcnt.c (limit_low): Renamed from limit.
1885         (limit_high): New variable.
1886         (dbg_cnt_is_enabled): Check for upper limit.
1887         (dbg_cnt): Adjust dumping.
1888         (dbg_cnt_set_limit_by_index): Add new argument for high
1889         value.
1890         (dbg_cnt_set_limit_by_name): Likewise.
1891         (dbg_cnt_process_single_pair): Parse new format.
1892         (dbg_cnt_process_opt): Use strtok.
1893         (dbg_cnt_list_all_counters): Remove 'value' and add
1894         'limit_high'.
1895         * doc/invoke.texi: Document changes.
1897 2018-05-18  Richard Sandiford  <richard.sandiford@linaro.org>
1899         * doc/sourcebuild.texi (scalar_all_fma): Document.
1900         * tree.def (FMA_EXPR): Delete.
1901         * internal-fn.def (FMA, FMS, FNMA, FNMS): New internal functions.
1902         * internal-fn.c (ternary_direct): New macro.
1903         (expand_ternary_optab_fn): Likewise.
1904         (direct_ternary_optab_supported_p): Likewise.
1905         * Makefile.in (build/genmatch.o): Depend on case-fn-macros.h.
1906         * builtins.c (fold_builtin_fma): Delete.
1907         (fold_builtin_3): Don't call it.
1908         * cfgexpand.c (expand_debug_expr): Remove FMA_EXPR handling.
1909         * expr.c (expand_expr_real_2): Likewise.
1910         * fold-const.c (operand_equal_p): Likewise.
1911         (fold_ternary_loc): Likewise.
1912         * gimple-pretty-print.c (dump_ternary_rhs): Likewise.
1913         * gimple.c (DEFTREECODE): Likewise.
1914         * gimplify.c (gimplify_expr): Likewise.
1915         * optabs-tree.c (optab_for_tree_code): Likewise.
1916         * tree-cfg.c (verify_gimple_assign_ternary): Likewise.
1917         * tree-eh.c (operation_could_trap_p): Likewise.
1918         (stmt_could_throw_1_p): Likewise.
1919         * tree-inline.c (estimate_operator_cost): Likewise.
1920         * tree-pretty-print.c (dump_generic_node): Likewise.
1921         (op_code_prio): Likewise.
1922         * tree-ssa-loop-im.c (stmt_cost): Likewise.
1923         * tree-ssa-operands.c (get_expr_operands): Likewise.
1924         * tree.c (commutative_ternary_tree_code, add_expr): Likewise.
1925         * fold-const-call.h (fold_fma): Delete.
1926         * fold-const-call.c (fold_const_call_ssss): Handle CFN_FMS,
1927         CFN_FNMA and CFN_FNMS.
1928         (fold_fma): Delete.
1929         * genmatch.c (combined_fn): New enum.
1930         (commutative_ternary_tree_code): Remove FMA_EXPR handling.
1931         (commutative_op): New function.
1932         (commutate): Use it.  Handle more than 2 operands.
1933         (dt_operand::gen_gimple_expr): Use commutative_op.
1934         (parser::parse_expr): Allow :c to be used with non-binary
1935         operators if the commutative operand is known.
1936         * gimple-ssa-backprop.c (backprop::process_builtin_call_use): Handle
1937         CFN_FMS, CFN_FNMA and CFN_FNMS.
1938         (backprop::process_assign_use): Remove FMA_EXPR handling.
1939         * hsa-gen.c (gen_hsa_insns_for_operation_assignment): Likewise.
1940         (gen_hsa_fma): New function.
1941         (gen_hsa_insn_for_internal_fn_call): Use it for IFN_FMA, IFN_FMS,
1942         IFN_FNMA and IFN_FNMS.
1943         * match.pd: Add folds for IFN_FMS, IFN_FNMA and IFN_FNMS.
1944         * gimple-fold.h (follow_all_ssa_edges): Declare.
1945         * gimple-fold.c (follow_all_ssa_edges): New function.
1946         * tree-ssa-math-opts.c (convert_mult_to_fma_1): Use the
1947         gimple_build interface and use follow_all_ssa_edges to fold the result.
1948         (convert_mult_to_fma): Use direct_internal_fn_suppoerted_p
1949         instead of checking for optabs directly.
1950         * config/i386/i386.c (ix86_add_stmt_cost): Recognize FMAs as calls
1951         rather than FMA_EXPRs.
1952         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Create a
1953         call to IFN_FMA instead of an FMA_EXPR.
1955 2018-05-17  Jim Wilson  <jimw@sifive.com>
1957         * expr.c (do_tablejump): When converting index to Pmode, if we have a
1958         sign extended promoted subreg, and the range does not have the sign bit
1959         set, then do a sign extend.
1961         * config/riscv/riscv.c (riscv_extend_comparands): In unsigned QImode
1962         test, check for sign extended subreg and/or constant operands, and
1963         do a sign extend in that case.
1965 2018-05-17  Steve Ellcey  <sellcey@cavium.com>
1967         * config/aarch64/thunderx2t99.md (thunderx2t99_ls_both): Delete.
1968         (thunderx2t99_multiple): Delete psuedo-units from used cpus.
1969         Add untyped.
1970         (thunderx2t99_alu_shift): Remove alu_shift_reg, alus_shift_reg.
1971         Change logics_shift_reg to logics_shift_imm.
1972         (thunderx2t99_fp_loadpair_basic): Delete.
1973         (thunderx2t99_fp_storepair_basic): Delete.
1974         (thunderx2t99_asimd_int): Add neon_sub and neon_sub_q types.
1975         (thunderx2t99_asimd_polynomial): Delete.
1976         (thunderx2t99_asimd_fp_simple): Add neon_fp_mul_s_scalar_q
1977         and neon_fp_mul_d_scalar_q.
1978         (thunderx2t99_asimd_fp_conv): Add *int_to_fp* types.
1979         (thunderx2t99_asimd_misc): Delete neon_dup and neon_dup_q.
1980         (thunderx2t99_asimd_recip_step): Add missing *sqrt* types.
1981         (thunderx2t99_asimd_lut): Add missing tbl types.
1982         (thunderx2t99_asimd_ext): Delete.
1983         (thunderx2t99_asimd_load1_1_mult): Delete.
1984         (thunderx2t99_asimd_load1_2_mult): Delete.
1985         (thunderx2t99_asimd_load1_ldp): New.
1986         (thunderx2t99_asimd_load1): New.
1987         (thunderx2t99_asimd_load2): Add missing *load2* types.
1988         (thunderx2t99_asimd_load3): New.
1989         (thunderx2t99_asimd_load4): New.
1990         (thunderx2t99_asimd_store1_1_mult): Delete.
1991         (thunderx2t99_asimd_store1_2_mult): Delete.
1992         (thunderx2t99_asimd_store2_mult): Delete.
1993         (thunderx2t99_asimd_store2_onelane): Delete.
1994         (thunderx2t99_asimd_store_stp): New.
1995         (thunderx2t99_asimd_store1): New.
1996         (thunderx2t99_asimd_store2): New.
1997         (thunderx2t99_asimd_store3): New.
1998         (thunderx2t99_asimd_store4): New.
2000 2018-05-17  Jerome Lambourg  <lambourg@adacore.com>
2002         * config/arm/arm_cmse.h (cmse_nsfptr_create, cmse_is_nsfptr): Remove
2003         #include <stdint.h>.  Replace intptr_t with __INTPTR_TYPE__.
2005 2018-05-17  Pat Haugen  <pthaugen@us.ibm.com>
2006             Segher Boessenkool  <segher@kernel.crashing.org>
2008         PR target/85698
2009         * config/rs6000/rs6000.c (rs6000_output_move_128bit): Check dest
2010         operand.
2012 2018-05-17  Richard Biener  <rguenther@suse.de>
2014         * tree-ssa-dse.c (dse_classify_store): Fix iterator increment
2015         for pruning loop and prune defs feeding only already visited PHIs.
2017 2018-05-17  Richard Biener  <rguenther@suse.de>
2019         * tree-ssa-sccvn.c (vn_reference_lookup_3): Improve memset handling.
2021 2018-05-17  Bin Cheng  <bin.cheng@arm.com>
2022             Richard Biener  <rguenther@suse.de>
2024         PR tree-optimization/85793
2025         * tree-vect-stmts.c (vectorizable_load): Handle 1 element-wise load
2026         for VMAT_ELEMENTWISE.
2028 2018-05-17  Richard Sandiford  <richard.sandiford@linaro.org>
2030         * internal-fn.h (lookup_internal_fn): Declare
2031         * internal-fn.c (lookup_internal_fn): New function.
2032         * gimple.c (gimple_build_call_from_tree): Handle calls to
2033         internal functions.
2034         * gimple-pretty-print.c (dump_gimple_call): Print "." before
2035         internal function names.
2036         * tree-pretty-print.c (dump_generic_node): Likewise.
2037         * tree-ssa-scopedtables.c (expr_hash_elt::print): Likewise.
2039 2018-05-17  Richard Sandiford  <richard.sandiford@linaro.org>
2041         * gimple-fold.h (gimple_build): Make the function forms take
2042         combined_fn rather than built_in_function.
2043         (gimple_simplify): Likewise.
2044         * gimple-match-head.c (gimple_simplify): Likewise.
2045         * gimple-fold.c (gimple_build): Likewise.
2046         * tree-vect-loop.c (get_initial_def_for_reduction): Use gimple_build
2047         rather than gimple_build_call_internal.
2048         (get_initial_defs_for_reduction): Likewise.
2049         (vect_create_epilog_for_reduction): Likewise.
2050         (vectorizable_live_operation): Likewise.
2052 2018-05-17  Martin Liska  <mliska@suse.cz>
2054         * gimple-ssa-sprintf.c (format_directive): Do not use
2055         space in between 'G_' and '('.
2057 2018-05-17  Jakub Jelinek  <jakub@redhat.com>
2059         PR target/85323
2060         * config/i386/i386.c (ix86_fold_builtin): Handle masked shifts
2061         even if the mask is not all ones.
2063         PR target/85323
2064         * config/i386/i386.c (ix86_fold_builtin): Fold shift builtins by
2065         vector.
2066         (ix86_gimple_fold_builtin): Likewise.
2068         PR target/85323
2069         * config/i386/i386.c: Include tree-vector-builder.h.
2070         (ix86_vector_shift_count): New function.
2071         (ix86_fold_builtin): Fold shift builtins by scalar count.
2072         (ix86_gimple_fold_builtin): Likewise.
2074         * config/i386/avx512fintrin.h (_mm512_set_epi16, _mm512_set_epi8,
2075         _mm512_setzero): New intrinsics.
2077 2018-05-17  James Greenhalgh  <james.greenhalgh@arm.com>
2078             Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2080         * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify
2081         code generation for cases where splatting a value is not useful.
2082         * simplify-rtx.c (simplify_ternary_operation): Simplify
2083         vec_merge across a vec_duplicate and a paradoxical subreg forming a vector
2084         mode to a vec_concat.
2086 2018-05-17  Olga Makhotina  <olga.makhotina@intel.com>
2088         * config.gcc: Support "goldmont-plus".
2089         * config/i386/driver-i386.c (host_detect_local_cpu): Detect
2090         "goldmont-plus".
2091         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
2092         PROCESSOR_GOLDMONT_PLUS.
2093         * config/i386/i386.c (m_GOLDMONT_PLUS): Define.
2094         (processor_target_table): Add "goldmont-plus".
2095         (PTA_GOLDMONT_PLUS): Define.
2096         (ix86_lea_outperforms): Add TARGET_GOLDMONT_PLUS.
2097         (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT_PLUS.
2098         (fold_builtin_cpu): Add M_INTEL_GOLDMONT_PLUS.
2099         (fold_builtin_cpu): Add "goldmont-plus".
2100         (ix86_add_stmt_cost): Add TARGET_GOLDMONT_PLUS.
2101         (ix86_option_override_internal): Add "goldmont-plus".
2102         * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT_PLUS.
2103         (processor_type): Add PROCESSOR_GOLDMONT_PLUS.
2104         * config/i386/x86-tune.def: Add m_GOLDMONT_PLUS.
2105         * doc/invoke.texi: Add goldmont-plus as x86 -march=/-mtune= CPU type.
2107 2018-05-17  Richard Biener  <rguenther@suse.de>
2109         PR tree-optimization/85757
2110         * tree-ssa-dse.c (dse_classify_store): Record a PHI def and
2111         remove defs that only feed that PHI from further processing.
2113 2018-05-16  Jim Wilson  <jimw@sifive.com>
2115         * config/riscv/riscv.md (<optab>si3_mask, <optab>si3_mask_1): Prepend
2116         asterisk to name.
2117         (<optab>di3_mask, <optab>di3_mask_1): Likewise.
2119 2018-05-16  Mark Wielaard  <mark@klomp.org>
2121         * dwarf2out.c (count_index_strings): New function.
2122         (output_indirect_strings): Call count_index_strings and generate
2123         header for dwarf_version >= 5.
2125 2018-05-16  Mark Wielaard  <mark@klomp.org>
2127         * dwarf2out.c (dwarf_FORM): New function.
2128         (set_indirect_string): Use dwarf_FORM.
2129         (reset_indirect_string): Likewise.
2130         (size_of_die): Likewise.
2131         (value_format): Likewise.
2132         (output_die): Likewise.
2133         (add_skeleton_AT_string): Likewise.
2134         (output_macinfo_op): Likewise.
2135         (index_string): Likewise.
2136         (output_index_string_offset): Likewise.
2137         (output_index_string): Likewise.
2138         (count_index_strings): Likewise.
2140 2018-05-16  Carl Love  <cel@us.ibm.com>
2142         * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions
2143         dcbt and dcbtstt with TH=16 if operands[2] is 0 and Power 8 or newer.
2145 2018-05-16  Martin Jambor  <mjambor@suse.cz>
2147         * ipa-prop.c (ipa_free_all_edge_args): Remove.
2148         * ipa-prop.h (ipa_free_all_edge_args): Likewise.
2150 2018-05-16  Wilco Dijkstra  <wdijkstr@arm.com>
2152         * config/aarch64/aarch64.md (fma<mode>4): Change into expand pattern.
2153         (fnma<mode>4): Likewise.
2154         (fms<mode>4): Likewise.
2155         (fnms<mode>4): Likewise.
2156         (aarch64_fma<mode>4): Rename insn, reorder accumulator operand.
2157         (aarch64_fnma<mode>4): Likewise.
2158         (aarch64_fms<mode>4): Likewise.
2159         (aarch64_fnms<mode>4): Likewise.
2160         (aarch64_fnmadd<mode>4): Likewise.
2162 2018-05-16  Jason Merrill  <jason@redhat.com>
2164         * tree.c (warn_deprecated_use): Return bool.  Simplify logic.
2166 2018-05-16  Richard Biener  <rguenther@suse.de>
2168         * tree-vectorizer.h (struct stmt_info_for_cost): Add where member.
2169         (dump_stmt_cost): Declare.
2170         (add_stmt_cost): Dump cost we add.
2171         (add_stmt_costs): New function.
2172         (vect_model_simple_cost, vect_model_store_cost, vect_model_load_cost):
2173         No longer exported.
2174         (vect_analyze_stmt): Adjust prototype.
2175         (vectorizable_condition): Likewise.
2176         (vectorizable_live_operation): Likewise.
2177         (vectorizable_reduction): Likewise.
2178         (vectorizable_induction): Likewise.
2179         * tree-vect-loop.c (vect_analyze_loop_operations): Create local
2180         cost vector to pass to vectorizable_ and record afterwards.
2181         (vect_model_reduction_cost): Take cost vector argument and adjust.
2182         (vect_model_induction_cost): Likewise.
2183         (vectorizable_reduction): Likewise.
2184         (vectorizable_induction): Likewise.
2185         (vectorizable_live_operation): Likewise.
2186         * tree-vect-slp.c (vect_create_new_slp_node): Initialize
2187         SLP_TREE_NUMBER_OF_VEC_STMTS.
2188         (vect_analyze_slp_cost_1): Remove.
2189         (vect_analyze_slp_cost): Likewise.
2190         (vect_slp_analyze_node_operations): Take visited args and
2191         a target cost vector.  Avoid processing already visited stmt sets.
2192         (vect_slp_analyze_operations): Use a local cost vector to gather
2193         costs and register those of non-discarded instances.
2194         (vect_bb_vectorization_profitable_p): Use add_stmt_costs.
2195         (vect_schedule_slp_instance): Remove copying of
2196         SLP_TREE_NUMBER_OF_VEC_STMTS.  Instead assert that it is not
2197         zero.
2198         * tree-vect-stmts.c (record_stmt_cost): Remove path directly
2199         adding cost.  Record cost entry location.
2200         (vect_prologue_cost_for_slp_op): Function to compute cost of
2201         a constant or invariant generated for SLP vect in the prologue,
2202         split out from vect_analyze_slp_cost_1.
2203         (vect_model_simple_cost): Make static.  Adjust for SLP costing.
2204         (vect_model_promotion_demotion_cost): Likewise.
2205         (vect_model_store_cost): Likewise, make static.
2206         (vect_model_load_cost): Likewise.
2207         (vectorizable_bswap): Add cost vector arg and adjust.
2208         (vectorizable_call): Likewise.
2209         (vectorizable_simd_clone_call): Likewise.
2210         (vectorizable_conversion): Likewise.
2211         (vectorizable_assignment): Likewise.
2212         (vectorizable_shift): Likewise.
2213         (vectorizable_operation): Likewise.
2214         (vectorizable_store): Likewise.
2215         (vectorizable_load): Likewise.
2216         (vectorizable_condition): Likewise.
2217         (vectorizable_comparison): Likewise.
2218         (can_vectorize_live_stmts): Likewise.
2219         (vect_analyze_stmt): Likewise.
2220         (vect_transform_stmt): Adjust calls to vectorizable_*.
2221         * tree-vectorizer.c: Include gimple-pretty-print.h.
2222         (dump_stmt_cost): New function.
2224 2018-05-16  Richard Biener  <rguenther@suse.de>
2226         * params.def (PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE): New param.
2227         * doc/invoke.texi (dse-max-alias-queries-per-store): Document.
2228         * tree-ssa-dse.c: Include tree-ssa-loop.h.
2229         (check_name): New callback.
2230         (dse_classify_store): Track cycles via a visited bitmap of PHI
2231         defs and simplify handling of in-loop and across loop dead stores
2232         and properly fail for loop-variant refs.  Handle byte-tracking with
2233         multiple defs.  Use PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE for
2234         limiting the walk.
2236 2018-05-16  Richard Sandiford  <richard.sandiford@linaro.org>
2238         * tree-vectorizer.h (vect_get_vector_types_for_stmt): Declare.
2239         (vect_get_mask_type_for_stmt): Likewise.
2240         * tree-vect-slp.c (vect_two_operations_perm_ok_p): New function,
2241         split out from...
2242         (vect_build_slp_tree_1): ...here.  Use vect_get_vector_types_for_stmt
2243         to determine the statement's vector type and the vector type that
2244         should be used for calculating nunits.  Deal with cases in which
2245         the type has to be deferred.
2246         (vect_slp_analyze_node_operations): Use vect_get_vector_types_for_stmt
2247         and vect_get_mask_type_for_stmt to calculate STMT_VINFO_VECTYPE.
2248         * tree-vect-loop.c (vect_determine_vf_for_stmt_1)
2249         (vect_determine_vf_for_stmt): New functions, split out from...
2250         (vect_determine_vectorization_factor): ...here.
2251         * tree-vect-stmts.c (vect_get_vector_types_for_stmt)
2252         (vect_get_mask_type_for_stmt): New functions, split out from
2253         vect_determine_vectorization_factor.
2255 2018-05-16  Richard Biener  <rguenther@suse.de>
2257         * tree-cfg.c (verify_gimple_assign_ternary): Properly
2258         verify the [VEC_]COND_EXPR embedded comparison.
2260 2018-05-15  Martin Sebor  <msebor@redhat.com>
2262         PR tree-optimization/85753
2263         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Handle
2264         RECORD_TYPE in addition to ARRAY_TYPE.
2266 2018-05-15  Martin Sebor  <msebor@redhat.com>
2268         PR middle-end/85643
2269         * calls.c (get_attr_nonstring_decl): Handle MEM_REF.
2271 2018-05-15  Richard Biener  <rguenther@suse.de>
2273         * tree-ssa-dse.c (dse_classify_store): Remove use_stmt parameter,
2274         add by_clobber_p one.  Change algorithm to collect all defs
2275         representing uses we need to walk and try reducing them to
2276         a single one before failing.
2277         (dse_dom_walker::dse_optimize_stmt): Adjust.
2279 2018-05-13  Mark Wielaard  <mark@klomp.org>
2281         * dwarf2out.c (dwarf_OP): Handle DW_OP_addrx and DW_OP_constx.
2282         (size_of_loc_descr): Likewise.
2283         (output_loc_operands): Likewise.
2284         (output_loc_operands_raw): Likewise.
2285         (dw_addr_op): Use dwarf_OP () for DW_OP_constx and DW_OP_addrx.
2286         (resolve_addr_in_expr): Handle DW_OP_addrx and DW_OP_constx.
2287         (hash_loc_operands): Likewise.
2288         (compare_loc_operands): Likewise.
2290 2018-05-14  Mark Wielaard  <mark@klomp.org>
2292         * dwarf2out.c (count_index_addrs): New function.
2293         (dwarf2out_finish): Use count_index_addrs to calculate addrs_length.
2295 2018-05-15  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
2297         PR tree-optimization/83648
2298         * ipa-pure-const.c (malloc_candidate_p): Allow function with NULL
2299         return value as malloc candidate.
2301 2018-05-15  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
2303         PR ipa/85734
2304         * ipa-pure-const.c (warn_function_malloc): Pass value of known_finite param
2305         as true in call to suggest_attribute.
2307 2018-05-14  Segher Boessenkool  <segher@kernel.crashing.org>
2309         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete @itemx for
2310         -mreadonly-in-sdata.
2312 2018-05-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2314         * config/aarch64/aarch64-simd.md (*aarch64_crypto_aese_fused):
2315         New pattern.
2316         (aarch64_crypto_aesd_fused): Likewise.
2318 2018-05-14  Wilco Dijkstra  <wdijkstr@arm.com>
2320         * config/aarch64/aarch64.md (mov<mode>): Remove '*' in alternatives.
2321         (movsi_aarch64): Likewise.
2322         (load_pairsi): Likewise.
2323         (load_pairdi): Likewise.
2324         (store_pairsi): Likewise.
2325         (store_pairdi): Likewise.
2326         (load_pairsf): Likewise.
2327         (load_pairdf): Likewise.
2328         (store_pairsf): Likewise.
2329         (store_pairdf): Likewise.
2330         (zero_extend): Likewise.
2331         (trunc): Swap alternatives.
2332         (fcvt_target): Add '?' to prefer w over r.
2334 2018-05-14  Jakub Jelinek  <jakub@redhat.com>
2336         PR target/85756
2337         * config/i386/i386.md: Disallow non-commutative arithmetics in
2338         last twpeephole for mem {+,-,&,|,^}= x; mem != 0 after cmpelim
2339         optimization.  Use COMMUTATIVE_ARITH_P test rather than != MINUS
2340         in the peephole2 before it.
2342 2018-05-14  Sebastian Peryt  <sebastian.peryt@intel.com>
2344         * common/config/i386/i386-common.c (OPTION_MASK_ISA_CLDEMOTE_SET,
2345         OPTION_MASK_ISA_CLDEMOTE_UNSET): New defines.
2346         (ix86_handle_option): Handle -mcldemote.
2347         * config.gcc: New header.
2348         * config/i386/cldemoteintrin.h: New file.
2349         * config/i386/cpuid.h (bit_CLDEMOTE): New bit.
2350         * config/i386/driver-i386.c (host_detect_local_cpu): Detect
2351         -mcldemote.
2352         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
2353         OPTION_MASK_ISA_CLDEMOTE.
2354         * config/i386/i386.c (ix86_target_string): Add -mcldemote.
2355         (ix86_valid_target_attribute_inner_p): Ditto.
2356         (enum ix86_builtins): Add IX86_BUILTIN_CLDEMOTE.
2357         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_cldemote.
2358         (ix86_expand_builtin): Expand IX86_BUILTIN_CLDEMOTE.
2359         * config/i386/i386.h (TARGET_CLDEMOTE, TARGET_CLDEMOTE_P): New.
2360         * config/i386/i386.md (UNSPECV_CLDEMOTE): New.
2361         (cldemote): New.
2362         * config/i386/i386.opt: Add -mcldemote.
2363         * config/i386/x86intrin.h: New header.
2364         * doc/invoke.texi: Add -mcldemote.
2366 2018-05-14  Richard Biener  <rguenther@suse.de>
2368         * doc/match-and-simplify.texi: Adjust :s documentation.
2370 2018-05-14  Alexander Monakov  <amonakov@ispras.ru>
2372         * sort.cc (REORDER_23): Pass the type for the temporaries instead of
2373         intended memcpy size.
2374         (REORDER_45): Likewise.
2376 2018-05-13  Alexander Monakov  <amonakov@ispras.ru>
2378         * sort.cc: New file.
2379         * system.h [!CHECKING_P] (qsort): Redirect to gcc_qsort.
2380         * vec.c (qsort_chk): Use gcc_qsort.
2381         * Makefile.in (OBJS-libcommon): Add sort.o.
2382         (build/sort.o): New target.  Use it...
2383         (BUILD_RTL): ... here, and...
2384         (build/gencfn-macros): ... here, and...
2385         (build/genmatch): ... here.
2387 2018-05-13  Kito Cheng  <kito.cheng@gmail.com>
2388             Chung-Ju Wu  <jasonwucj@gmail.com>
2390         * config.gcc (nds32*-*-*): Check that n15 is valid to --with-cpu.
2391         * config/nds32/nds32-graywolf.md: New file.
2392         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_GRAYWOLF.
2393         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n15
2394         pipeline.
2395         * config/nds32/nds32-protos.h: More declarations for n15 pipeline.
2396         * config/nds32/nds32-utils.c: More implementations for n15 pipeline.
2397         * config/nds32/nds32.md (pipeline_model): Add graywolf.
2398         * config/nds32/nds32.opt (mcpu): Support n15 pipeline cpus.
2399         * config/nds32/pipelines.md: Include n15 settings.
2401 2018-05-13  Kito Cheng  <kito.cheng@gmail.com>
2402             Chung-Ju Wu  <jasonwucj@gmail.com>
2404         * config.gcc (nds32*-*-*): Check that n12/n13 are valid to --with-cpu.
2405         * config/nds32/nds32-n13.md: New file.
2406         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N12 and CPU_N13.
2407         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n12/n13
2408         pipeline.
2409         * config/nds32/nds32-protos.h: More declarations for n12/n13 pipeline.
2410         * config/nds32/nds32.md (pipeline_model): Add n13.
2411         * config/nds32/nds32.opt (mcpu): Support n12/n13 pipeline cpus.
2412         * config/nds32/pipelines.md: Include n13 settings.
2414 2018-05-13  Kito Cheng  <kito.cheng@gmail.com>
2415             Chung-Ju Wu  <jasonwucj@gmail.com>
2417         * config.gcc (nds32*-*-*): Check that n10/d10 are valid to --with-cpu.
2418         * config/nds32/nds32-n10.md: New file.
2419         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N10.
2420         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n10
2421         pipeline.
2422         * config/nds32/nds32-protos.h: More declarations for n10 pipeline.
2423         * config/nds32/nds32-utils.c: More implementations for n10 pipeline.
2424         * config/nds32/nds32.md (pipeline_model): Add n10.
2425         * config/nds32/nds32.opt (mcpu): Support n10 pipeline cpus.
2426         * config/nds32/pipelines.md: Include n10 settings.
2428 2018-05-13  Monk Chiang  <sh.chiang04@gmail.com>
2429             Kito Cheng  <kito.cheng@gmail.com>
2430             Chung-Ju Wu  <jasonwucj@gmail.com>
2432         * config.gcc (nds32be-*-*): Handle --with-ext-dsp.
2433         * config/nds32/constants.md (unspec_element, unspec_volatile_element):
2434         Add enum values for DSP extension instructions.
2435         * config/nds32/constraints.md (Iu06, IU06, CVp5, CVs5, CVs2, CVhi):
2436         New constraints.
2437         * config/nds32/iterators.md (shifts, shiftrt, sat_plus, all_plus,
2438         sat_minus, all_minus, plus_minus, extend, sumax, sumin, sumin_max):
2439         New code iterators.
2440         (su, zs, uk, opcode, add_rsub, add_sub): New code attributes.
2441         * config/nds32/nds32-dspext.md: New file for DSP implementation.
2442         * config/nds32/nds32-intrinsic.c: Implementation of DSP extension.
2443         * config/nds32/nds32-intrinsic.md: Likewise.
2444         * config/nds32/nds32_intrinsic.h: Likewise.
2445         * config/nds32/nds32-md-auxiliary.c: Likewise.
2446         * config/nds32/nds32-memory-manipulation.c: Consider DSP extension.
2447         * config/nds32/nds32-predicates.c (const_vector_to_hwint): New.
2448         (nds32_valid_CVp5_p, nds32_valid_CVs5_p): New.
2449         (nds32_valid_CVs2_p, nds32_valid_CVhi_p): New.
2450         * config/nds32/nds32-protos.h: New declarations for DSP extension.
2451         * config/nds32/nds32-utils.c (extract_mac_non_acc_rtx): New case
2452         TYPE_DMAC in switch statement.
2453         * config/nds32/nds32.c: New checking and implementation for DSP
2454         extension instructions.
2455         * config/nds32/nds32.h: Likewise.
2456         * config/nds32/nds32.md: Likewise.
2457         * config/nds32/nds32.opt (mhw-abs, mext-dsp): New options.
2458         * config/nds32/predicates.md: Implement new predicates for DSP
2459         extension.
2461 2018-05-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
2463         * config/rs6000/rs6000.md (mov<mode>_softfloat, FMOVE32):
2464         Reformat alternatives and attributes so it is easier to identify
2465         which constraints/attributes go with which instruction.
2466         (mov<mode>_hardfloat32, FMOVE64): Likewise.
2467         (mov<mode>_softfloat32, FMOVE64): Likewise.
2468         (mov<mode>_hardfloat64, FMOVE64): Likewise.
2469         (mov<mode>_softfloat64, FMOVE64): Likewise.
2471 2018-05-11  Kelvin Nilsen  <kelvin@gcc.gnu.org>
2473         * doc/extend.texi (PowerPC Built-in Functions): Rename this
2474         subsection.
2475         (Basic PowerPC Built-in Functions): The new name of the
2476         subsection previously known as "PowerPC Built-in Functions".
2477         (Basic PowerPC Built-in Functions Available on all Configurations):
2478         New subsubsection.
2479         (Basic PowerPC Built-in Functions Available on ISA 2.05): Likewise.
2480         (Basic PowerPC Built-in Functions Available on ISA 2.06): Likewise.
2481         (Basic PowerPC Built-in Functions Available on ISA 2.07): Likewise.
2482         (Basic PowerPC Built-in Functions Available on ISA 3.0): Likewise.
2484 2018-05-11  Martin Jambor  <mjambor@suse.cz>
2486         PR ipa/85655
2487         * ipa-cp.c (intersect_with_plats): Check that the lattice contains
2488         single const.
2490 2018-05-11  Richard Earnshaw  <rearnsha@arm.com>
2492         PR target/85733
2493         * config/arm/arm-cpus.in (fgroup ARMv6m): Add be8 feature.
2495 2018-05-11  Sebastian Peryt  <sebastian.peryt@intel.com>
2497         * common/config/i386/i386-common.c (OPTION_MASK_ISA_WAITPKG_SET,
2498         OPTION_MASK_ISA_WAITPKG_UNSET): New defines.
2499         (ix86_handle_option): Handle -mwaitpkg.
2500         * config.gcc: New header.
2501         * config/i386/cpuid.h (bit_WAITPKG): New bit.
2502         * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mwaitpkg.
2503         * config/i386/i386-builtin-types.def ((UINT8, UNSIGNED, UINT64)): New
2504         function type.
2505         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
2506         OPTION_MASK_ISA_WAITPKG.
2507         * config/i386/i386.c (ix86_target_string): Add -mwaitpkg.
2508         (ix86_option_override_internal): Add PTA_WAITPKG.
2509         (ix86_valid_target_attribute_inner_p): Add -mwaitpkg.
2510         (enum ix86_builtins): Add IX86_BUILTIN_UMONITOR, IX86_BUILTIN_UMWAIT,
2511         IX86_BUILTIN_TPAUSE.
2512         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_umonitor,
2513         __builtin_ia32_umwait and __builtin_ia32_tpause.
2514         (ix86_expand_builtin): Expand IX86_BUILTIN_UMONITOR,
2515         IX86_BUILTIN_UMWAIT, IX86_BUILTIN_TPAUSE.
2516         * config/i386/i386.h (TARGET_WAITPKG, TARGET_WAITPKG_P): New.
2517         * config/i386/i386.md (UNSPECV_UMWAIT, UNSPECV_UMONITOR,
2518         UNSPECV_TPAUSE): New.
2519         (umwait, umwait_rex64, umonitor_<mode>, tpause, tpause_rex64): New.
2520         * config/i386/i386.opt: Add -mwaitpkg.
2521         * config/i386/waitpkgintrin.h: New file.
2522         * config/i386/x86intrin.h: New header.
2523         * doc/invoke.texi: Add -mwaitpkg.
2525 2018-05-11  Richard Earnshaw  <rearnsha@arm.com>
2527         PR target/85606
2528         * config/arm/arm-cpus.in: Add comment that ARMv6-m and ARMv6S-m are now
2529         equivalent.
2530         (cortex-m0): Use armv6s-m isa.
2531         (cortex-m0plus): Likewise.
2532         (cortex-m1): Likewise.
2533         (cortex-m0.small-multiply): Likewise.
2534         (cortex-m0plus.small-multiply): Likewise.
2535         (cortex-m1.small-multiply): Likewise.
2537 2018-05-11  Allan Sandfeld Jensen  <allan.jensen@qt.io>
2538             Jakub Jelinek  <jakub@redhat.com>
2540         PR tree-optimization/85692
2541         * tree-ssa-forwprop.c (simplify_vector_constructor): Try two
2542         source permute as well.
2544 2018-05-11  Martin Liska  <mliska@suse.cz>
2546         PR sanitizer/85556
2547         * doc/extend.texi: Document LLVM style format for no_sanitize
2548         attribute.
2550 2018-05-10  Michael Meissner  <meissner@linux.vnet.ibm.com>
2552         * config/rs6000/rs6000.c (mode_supports_dq_form): Rename
2553         mode_supports_vsx_dform_quad to mode_supports_dq_form.
2554         (mode_supports_vsx_dform_quad): Likewise.
2555         (mode_supports_vmx_dform): Move these functions to be next to the
2556         other mode_supports functions.
2557         (mode_supports_dq_form): Likewise.
2558         (quad_address_p): Change calls of mode_supports_vsx_dform_quad to
2559         mode_supports_dq_form.
2560         (reg_offset_addressing_ok_p): Likewise.
2561         (offsettable_ok_by_alignment): Likewise.
2562         (rs6000_legitimate_offset_address_p): Likewise.
2563         (legitimate_lo_sum_address_p): Likewise.
2564         (rs6000_legitimize_address): Likewise.
2565         (rs6000_legitimize_reload_address): Likewise.
2566         (rs6000_secondary_reload_inner): Likewise.
2567         (rs6000_preferred_reload_class): Likewise.
2568         (rs6000_output_move_128bit): Likewise.
2570 2018-05-10  Uros Bizjak  <ubizjak@gmail.com>
2572         * config/i386/i386.c (ix86_expand_builtin) <case IX86_BUILTIN_RDPID>:
2573         Generate SImode target register for null target.
2574         <case IX86_BUILTIN_XGETBV>: Ditto.
2575         <case IX86_BUILTIN_XSETBV>: Optimize LSHIFTRT generation.
2576         * config/i386/xsaveintrin.h (_xgetbv): Add missing return.
2578 2018-05-10  Carl Love  <cel@us.ibm.com>
2580         * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions
2581         dcbtt and dcbtstt if operands[2] is 0.
2583 2018-05-10  Uros Bizjak  <ubizjak@gmail.com>
2585         PR target/85693
2586         * config/i386/sse.md (usadv64qi): New expander.
2588 2018-05-10  Segher Boessenkool  <segher@kernel.crashing.org>
2590         * config/rs6000/altivec.md (altivec_vmrghb, altivec_vmrghh,
2591         altivec_vmrghw, altivec_vmrglb, altivec_vmrglh, altivec_vmrglw): Remove
2592         -maltivec=be support.
2593         (vec_widen_umult_even_v16qi, vec_widen_smult_even_v16qi,
2594         vec_widen_umult_even_v8hi, vec_widen_smult_even_v8hi,
2595         vec_widen_umult_even_v4si, vec_widen_smult_even_v4si,
2596         vec_widen_umult_odd_v16qi, vec_widen_smult_odd_v16qi,
2597         vec_widen_umult_odd_v8hi, vec_widen_smult_odd_v8hi,
2598         vec_widen_umult_odd_v4si, vec_widen_smult_odd_v4si, altivec_vpkpx,
2599         altivec_vpks<VI_char>ss, altivec_vpks<VI_char>us,
2600         altivec_vpku<VI_char>us, altivec_vpku<VI_char>um, altivec_vsum2sws,
2601         altivec_vsumsws): Adjust.
2602         (altivec_vspltb *altivec_vspltb_internal, altivec_vsplth,
2603         *altivec_vsplth_internal, altivec_vspltw, *altivec_vspltw_internal,
2604         altivec_vspltsf, *altivec_vspltsf_internal): Remove -maltivec=be
2605         support.
2606         (altivec_vperm_<mode>, altivec_vperm_<mode>_uns,
2607         altivec_vupkhs<VU_char>, altivec_vupkls<VU_char>, altivec_vupkhpx,
2608         altivec_vupklpx, altivec_lvsl, altivec_lvsr): Adjust.
2609         (altivec_lve<VI_char>x): Delete expand.
2610         (*altivec_lve<VI_char>x_internal): Rename to...
2611         (altivec_lve<VI_char>x): ... this.
2612         (altivec_lvxl_<mode>): Delete expand.
2613         (*altivec_lvxl_<mode>_internal): Rename to ...
2614         (altivec_lvxl_<mode>): ... this.
2615         (altivec_stvxl_<mode>): Delete expand.
2616         (*altivec_stvxl_<mode>_internal): Rename to ...
2617         (altivec_stvxl_<mode>): ... this.
2618         (altivec_stve<VI_char>x): Delete expand.
2619         (*altivec_stve<VI_char>x_internal): Rename to ...
2620         (altivec_stve<VI_char>x): ... this.
2621         (doublee<mode>2, unsdoubleev4si2, doubleo<mode>2, unsdoubleov4si2,
2622         doubleh<mode>2, unsdoublehv4si2, doublel<mode>2, unsdoublelv4si2,
2623         reduc_plus_scal_<mode>): Adjust.
2624         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Adjust
2625         comment.
2626         (rs6000_cpu_cpp_builtins): Adjust.
2627         (altivec_resolve_overloaded_builtin): Remove -maltivec=be support.
2628         * config/rs6000/rs6000-protos.h (altivec_expand_lvx_be,
2629         altivec_expand_stvx_be, altivec_expand_stvex_be): Delete.
2630         * config/rs6000/rs6000.c (rs6000_option_override_internal): Remove
2631         -maltivec=be support.
2632         (rs6000_split_vec_extract_var): Adjust.
2633         (rs6000_split_v4si_init): Adjust.
2634         (swap_selector_for_mode): Delete.
2635         (altivec_expand_lvx_be, altivec_expand_stvx_be,
2636         altivec_expand_stvex_be): Delete.
2637         (altivec_expand_lv_builtin, altivec_expand_stv_builtin): Remove
2638         -maltivec=be support.
2639         (rs6000_gimple_fold_builtin): Ditto.
2640         (rs6000_generate_float2_double_code, rs6000_generate_float2_code):
2641         Adjust.
2642         * config/rs6000/rs6000.h (VECTOR_ELT_ORDER_BIG): Delete.
2643         (TARGET_DIRECT_MOVE_64BIT): Adjust.
2644         * config/rs6000/rs6000.md (split for extendsidi2 for vectors): Adjust.
2645         * config/rs6000/rs6000.opt (maltivec=le, maltivec=be): Delete.
2646         * config/rs6000/vsx.md (floate<mode>, unsfloatev2di, floato<mode>,
2647         unsfloatov2di, vsignedo_v2df, vsignede_v2df, vunsignedo_v2df,
2648         vunsignede_v2df, vsx_extract_<mode>_p9, *vsx_extract_si,
2649         *vsx_extract_<mode>_p8, *vsx_extract_si_<uns>float_df,
2650         *vsx_extract_si_<uns>float_<mode>, vsx_set_<mode>_p9, vsx_set_v4sf_p9,
2651         *vsx_insert_extract_v4sf_p9, *vsx_insert_extract_v4sf_p9_2, and an
2652         anonymous split): Adjust.
2653         (vsx_mergel_<mode>, vsx_mergeh_<mode>): Remove -maltivec=be support.
2654         (vsx_xxspltd_<mode>, extract4b, insert4b): Adjust.
2656 2018-05-10  Eric Botcazou  <ebotcazou@adacore.com>
2658         * configure.ac (gcc_gxx_include_dir_add_sysroot): Set it to 1 only
2659         when --with-gxx-include-dir is also specified.
2660         * configure: Regenerate.
2662 2018-05-09  Jim Wilson  <jimw@sifive.com>
2664         PR target/84797
2665         * config.gcc (riscv*-*-*): Handle --with-multilib-list.
2666         * config/riscv/t-withmultilib: New.
2667         * config/riscv/withmultilib.h: New.
2668         * doc/install.texi: Document RISC-V --with-multilib-list support.
2670 2018-05-09  Richard Biener  <rguenther@suse.de>
2672         * tree-vect-slp.c (vect_bb_slp_scalar_cost): Fill a cost
2673         vector.
2674         (vect_bb_vectorization_profitable_p): Adjust.  Compute
2675         actual scalar cost using the cost vector and the add_stmt_cost
2676         machinery.
2678 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
2680         PR rtl-optimization/85645
2681         * config/rs6000/rs6000.c (rs6000_emit_prologue_components): Put a SET
2682         in the REG_CFA_REGISTER note for LR, don't leave it empty.
2684 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
2686         PR rtl-optimization/85645
2687         * shrink-wrap.c (spread_components): Return a boolean saying if
2688         anything was changed.
2689         (try_shrink_wrapping_separate): Iterate spread_components until
2690         nothing changes anymore.
2692 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
2694         PR rtl-optimization/85645
2695         * regrename.c (build_def_use): Also kill the chains that include the
2696         destination of a REG_CFA_REGISTER note.
2698 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
2700         PR rtl-optimization/85645
2701         *  regcprop.c (copyprop_hardreg_forward_1): Don't propagate into an
2702         insn that has a REG_CFA_REGISTER note.
2704 2018-05-09  Richard Sandiford  <richard.sandiford@linaro.org>
2706         * cfgexpand.c (expand_clobber): New function.
2707         (expand_gimple_stmt_1): Use it.
2708         * tree-vect-stmts.c (vect_clobber_variable): New function,
2709         split out from...
2710         (vectorizable_simd_clone_call): ...here.
2711         (vectorizable_store): Emit a clobber either side of an
2712         IFN_STORE_LANES sequence.
2713         (vectorizable_load): Emit a clobber after an IFN_LOAD_LANES sequence.
2715 2018-05-09  Tom de Vries  <tom@codesourcery.com>
2717         PR target/85626
2718         * config/nvptx/nvptx.md (define_insn "trap", define_insn "trap_if_true")
2719         (define_insn "trap_if_false"): Add exit after trap.
2721 2018-05-09  Eric Botcazou  <ebotcazou@adacore.com>
2723         PR rtl-optimization/85638
2724         * bb-reorder.c: Include common/common-target.h.
2725         (create_forwarder_block): New function extracted from...
2726         (fix_up_crossing_landing_pad): ...here.  Rename into...
2727         (dw2_fix_up_crossing_landing_pad): ...this.
2728         (sjlj_fix_up_crossing_landing_pad): New function.
2729         (find_rarely_executed_basic_blocks_and_crossing_edges): In SJLJ mode,
2730         call sjlj_fix_up_crossing_landing_pad if there are incoming EH edges
2731         from both partitions and exit the loop after one iteration.
2733 2018-05-08  Kelvin Nilsen  <kelvin@gcc.gnu.org>
2735         Revert:
2736         * doc/extend.texi (PowerPC Built-in Functions): Rename this
2737         subsection.
2738         (Basic PowerPC Built-in Functions): The new name of the
2739         subsection previously known as "PowerPC Built-in Functions".
2740         (Basic PowerPC Built-in Functions Available on all Configurations):
2741         New subsubsection.
2742         (Basic PowerPC Built-in Functions Available on ISA 2.05): New
2743         subsubsection.
2744         (Basic PowerPC Built-in Functions Available on ISA 2.06): New
2745         subsubsection.
2746         (Basic PowerPC Built-in Functions Available on ISA 2.07): New
2747         subsubsection.
2748         (Basic PowerPC Built-in Functions Available on ISA 3.0): New
2749         subsubsection.
2751 2018-05-08  Jim Wilson  <jimw@sifive.com>
2753         * config/riscv/linux.h (MUSL_ABI_SUFFIX): Delete unnecessary backslash.
2754         (LD_EMUL_SUFFIX): New.
2755         (LINK_SPEC): Use it.
2757 2018-05-08  Kelvin Nilsen  <kelvin@gcc.gnu.org>
2759         * doc/extend.texi (PowerPC Built-in Functions): Rename this
2760         subsection.
2761         (Basic PowerPC Built-in Functions): The new name of the
2762         subsection previously known as "PowerPC Built-in Functions".
2763         (Basic PowerPC Built-in Functions Available on all Configurations):
2764         New subsubsection.
2765         (Basic PowerPC Built-in Functions Available on ISA 2.05): New
2766         subsubsection.
2767         (Basic PowerPC Built-in Functions Available on ISA 2.06): New
2768         subsubsection.
2769         (Basic PowerPC Built-in Functions Available on ISA 2.07): New
2770         subsubsection.
2771         (Basic PowerPC Built-in Functions Available on ISA 3.0): New
2772         subsubsection.
2774 2018-05-08  Jakub Jelinek  <jakub@redhat.com>
2776         PR target/85683
2777         * config/i386/i386.md: Add peepholes for mem {+,-,&,|,^}= x; mem != 0
2778         after cmpelim optimization.
2780 2018-05-08  Olga Makhotina  <olga.makhotina@intel.com>
2782         * config.gcc: Support "goldmont".
2783         * config/i386/driver-i386.c (host_detect_local_cpu): Detect "goldmont".
2784         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
2785         PROCESSOR_GOLDMONT.
2786         * config/i386/i386.c (m_GOLDMONT): Define.
2787         (processor_target_table): Add "goldmont".
2788         (PTA_GOLDMONT): Define.
2789         (ix86_lea_outperforms): Add TARGET_GOLDMONT.
2790         (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT.
2791         (fold_builtin_cpu): Add M_INTEL_GOLDMONT.
2792         (fold_builtin_cpu): Add "goldmont".
2793         (ix86_add_stmt_cost): Add TARGET_GOLDMONT.
2794         (ix86_option_override_internal): Add "goldmont".
2795         * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT.
2796         (processor_type): Add PROCESSOR_GOLDMONT.
2797         * config/i386/i386.md: Add CPU "glm".
2798         * config/i386/glm.md: New file.
2799         * config/i386/x86-tune.def: Add m_GOLDMONT.
2800         * doc/invoke.texi: Add goldmont as x86 -march=/-mtune= CPU type.
2802 2018-05-08  Jakub Jelinek  <jakub@redhat.com>
2804         PR target/85572
2805         * config/i386/i386.c (ix86_expand_sse2_abs): Handle E_V2DImode and
2806         E_V4DImode.
2807         * config/i386/sse.md (abs<mode>2): Use VI_AVX2 iterator instead of
2808         VI1248_AVX512VL_AVX512BW.  Handle V2DImode and V4DImode if not
2809         TARGET_AVX512VL using ix86_expand_sse2_abs.  Formatting fixes.
2811         PR target/85317
2812         * config/i386/i386.c (ix86_fold_builtin): Handle
2813         IX86_BUILTIN_{,P}MOVMSK{PS,PD,B}{,128,256}.
2815         PR target/85480
2816         * config/i386/sse.md (ssequaterinsnmode): New mode attribute.
2817         (*<extract_type>_vinsert<shuffletype><extract_suf>_0): New pattern.
2819 2018-05-08  Richard Earnshaw  <rearnsha@arm.com>
2821         PR target/85658
2822         * config/arm/parsecpu.awk (check_cpu): Fix operator precedence.
2823         (check_arch): Likewise.
2824         (check_fpu): Return the result rather than printing it.
2825         (end arch): Fix operator precedence.
2826         (end cpu): Likewise.
2827         (END): Print the result from check_fpu.
2829 2018-05-08  Richard Sandiford  <richard.sandiford@linaro.org>
2830             Alan Hayward  <alan.hayward@arm.com>
2831             David Sherwood  <david.sherwood@arm.com>
2833         * config/aarch64/aarch64-sve.md (*pred_cmp<cmp_op><mode>_combine)
2834         (*pred_cmp<cmp_op><mode>, *fcm<cmp_op><mode>_and_combine)
2835         (*fcmuo<mode>_and_combine, *fcm<cmp_op><mode>_and)
2836         (*fcmuo<mode>_and): New patterns.
2838 2018-05-08  Richard Sandiford  <richard.sandiford@linaro.org>
2840         * config/aarch64/iterators.md (UNSPEC_COND_LO, UNSPEC_COND_LS)
2841         (UNSPEC_COND_HI, UNSPEC_COND_HS, UNSPEC_COND_UO): Delete.
2842         (SVE_INT_CMP, SVE_FP_CMP): New code iterators.
2843         (cmp_op, sve_imm_con): New code attributes.
2844         (SVE_COND_INT_CMP, imm_con): Delete.
2845         (cmp_op): Remove above unspecs from int attribute.
2846         * config/aarch64/aarch64-sve.md (*vec_cmp<cmp_op>_<mode>): Rename
2847         to...
2848         (*cmp<cmp_op><mode>): ...this.  Use UNSPEC_MERGE_PTRUE instead of
2849         comparison-specific unspecs.
2850         (*vec_cmp<cmp_op>_<mode>_ptest): Rename to...
2851         (*cmp<cmp_op><mode>_ptest): ...this and adjust likewise.
2852         (*vec_cmp<cmp_op>_<mode>_cc): Rename to...
2853         (*cmp<cmp_op><mode>_cc): ...this and adjust likewise.
2854         (*vec_fcm<cmp_op><mode>): Rename to...
2855         (*fcm<cmp_op><mode>): ...this and adjust likewise.
2856         (*vec_fcmuo<mode>): Rename to...
2857         (*fcmuo<mode>): ...this and adjust likewise.
2858         (*pred_fcm<cmp_op><mode>): New pattern.
2859         * config/aarch64/aarch64.c (aarch64_emit_unop, aarch64_emit_binop)
2860         (aarch64_emit_sve_ptrue_op, aarch64_emit_sve_ptrue_op_cc): New
2861         functions.
2862         (aarch64_unspec_cond_code): Remove handling of LTU, GTU, LEU, GEU
2863         and UNORDERED.
2864         (aarch64_gen_unspec_cond, aarch64_emit_unspec_cond): Delete.
2865         (aarch64_emit_sve_predicated_cond): New function.
2866         (aarch64_expand_sve_vec_cmp_int): Use aarch64_emit_sve_ptrue_op_cc.
2867         (aarch64_emit_unspec_cond_or): Replace with...
2868         (aarch64_emit_sve_or_conds): ...this new function.  Use
2869         aarch64_emit_sve_ptrue_op for the individual comparisons and
2870         aarch64_emit_binop to OR them together.
2871         (aarch64_emit_inverted_unspec_cond): Replace with...
2872         (aarch64_emit_sve_inverted_cond): ...this new function.  Use
2873         aarch64_emit_sve_ptrue_op for the comparison and
2874         aarch64_emit_unop to invert the result.
2875         (aarch64_expand_sve_vec_cmp_float): Update after the above
2876         changes.  Use aarch64_emit_sve_ptrue_op for native comparisons.
2878 2018-05-07  Nathan Sidwell  <nathan@acm.org>
2880         * doc/invoke.texi (C++ Dialect Options): Remove -ffor-scope.
2881         * doc/extend.texi (Deprecated Features): Remove -fno-for-scope
2882         (Backwards Compatibility): Likewise.
2884 2018-05-07  Luis Machado  <luis.machado@linaro.org>
2886         PR bootstrap/85681
2887         Revert:
2888         2018-05-07  Luis Machado  <luis.machado@linaro.org>
2890         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
2891         <prefetch_dynamic_strides>: New const bool field.
2892         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
2893         prefetch_dynamic_strides.
2894         (exynosm1_prefetch_tune): Likewise.
2895         (thunderxt88_prefetch_tune): Likewise.
2896         (thunderx_prefetch_tune): Likewise.
2897         (thunderx2t99_prefetch_tune): Likewise.
2898         (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides to false.
2899         (aarch64_override_options_internal): Update to set
2900         PARAM_PREFETCH_DYNAMIC_STRIDES.
2901         * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
2902         * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
2903         * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
2904         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
2905         prefetch-dynamic-strides setting.
2907         2018-05-07  Luis Machado  <luis.machado@linaro.org>
2909         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
2910         <minimum_stride>: New const int field.
2911         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
2912         minimum_stride field.
2913         (exynosm1_prefetch_tune): Likewise.
2914         (thunderxt88_prefetch_tune): Likewise.
2915         (thunderx_prefetch_tune): Likewise.
2916         (thunderx2t99_prefetch_tune): Likewise.
2917         (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048.
2918         (aarch64_override_options_internal): Update to set
2919         PARAM_PREFETCH_MINIMUM_STRIDE.
2920         * doc/invoke.texi (prefetch-minimum-stride): Document new option.
2921         * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
2922         * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
2923         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
2924         stride is constant and is below the minimum stride threshold.
2926 2018-05-07  Luis Machado  <luis.machado@linaro.org>
2928         * config/aarch64/aarch64.c (qdf24xx_prefetch_tune) <l2_cache_size>: Set
2929         to 512.
2931 2018-05-07  Luis Machado  <luis.machado@linaro.org>
2933         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
2934         <prefetch_dynamic_strides>: New const bool field.
2935         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
2936         prefetch_dynamic_strides.
2937         (exynosm1_prefetch_tune): Likewise.
2938         (thunderxt88_prefetch_tune): Likewise.
2939         (thunderx_prefetch_tune): Likewise.
2940         (thunderx2t99_prefetch_tune): Likewise.
2941         (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides to false.
2942         (aarch64_override_options_internal): Update to set
2943         PARAM_PREFETCH_DYNAMIC_STRIDES.
2944         * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
2945         * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
2946         * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
2947         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
2948         prefetch-dynamic-strides setting.
2950 2018-05-07  Luis Machado  <luis.machado@linaro.org>
2952         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
2953         <minimum_stride>: New const int field.
2954         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
2955         minimum_stride field.
2956         (exynosm1_prefetch_tune): Likewise.
2957         (thunderxt88_prefetch_tune): Likewise.
2958         (thunderx_prefetch_tune): Likewise.
2959         (thunderx2t99_prefetch_tune): Likewise.
2960         (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048.
2961         (aarch64_override_options_internal): Update to set
2962         PARAM_PREFETCH_MINIMUM_STRIDE.
2963         * doc/invoke.texi (prefetch-minimum-stride): Document new option.
2964         * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
2965         * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
2966         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
2967         stride is constant and is below the minimum stride threshold.
2969 2018-05-06  Jakub Jelinek  <jakub@redhat.com>
2971         PR c++/85659
2972         * cfgexpand.c (expand_asm_stmt): Don't create a temporary if
2973         the type is addressable.  Don't force op into register if it has
2974         BLKmode.
2976 2018-05-05  Roland McGrath  <mcgrathr@google.com>
2978         PR other/77609
2979         * varasm.c (default_section_type_flags): Set SECTION_NOTYPE for
2980         any section for which we don't know a specific type it should have,
2981         regardless of name.  Previously this was done only for the exact
2982         names ".init_array", ".fini_array", and ".preinit_array".
2983         (default_elf_asm_named_section): Add comment about
2984         relationship with default_section_type_flags and SECTION_NOTYPE.
2985         (get_section): Don't consider it a type conflict if one side has
2986         SECTION_NOTYPE and the other doesn't, as long as neither has the
2987         SECTION_BSS et al used in the default_section_type_flags logic.
2989 2018-05-05  Tom de Vries  <tom@codesourcery.com>
2991         PR target/85653
2992         * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_3): Define.
2993         (workaround_barsyncs): New function.
2994         (nvptx_reorg): Use workaround_barsyncs.
2995         * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
2996         (define_expand "nvptx_membar_cta"): New define_expand.
2997         (define_insn "*nvptx_membar_cta"): New insn.
2999 2018-05-04  Pekka Jääskeläinen  <pekka.jaaskelainen@parmance.com>
3001         * brig-builtins.def: Add consts to ptrs etc. in BRIG builtin defs.
3002         To improve optimization opportunities.
3003         * builtin-types.def: The new needed builtin types for the above.
3005 2018-05-04  Richard Biener  <rguenther@suse.de>
3007         * bb-reorder.c (sanitize_hot_paths): Release hot_bbs_to_check.
3008         * gimple-ssa-store-merging.c
3009         (imm_store_chain_info::output_merged_store): Remove redundant create,
3010         release split_store vector contents on failure.
3011         * tree-vect-slp.c (vect_schedule_slp_instance): Avoid leaking
3012         scalar stmt vector on cache hit.
3014 2018-05-04  Segher Boessenkool  <segher@kernel.crashing.org>
3016         * common/config/rs6000/rs6000-common.c (rs6000_handle_option): Remove
3017         Xilinx FP support.
3018         * config.gcc (powerpc-xilinx-eabi*): Remove.
3019         * config/rs6000/predicates.md (easy_fp_constant): Remove Xilinx FP
3020         support.
3021         (fusion_addis_mem_combo_load): Ditto.
3022         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Remove Xilinx
3023         FP support.
3024         (rs6000_cpu_cpp_builtins): Ditto.
3025         * config/rs6000/rs6000-linux.c
3026         (rs6000_linux_float_exceptions_rounding_supported_p): Ditto.
3027         * config/rs6000/rs6000-opts.h (enum fpu_type_t): Delete.
3028         * config/rs6000/rs6000.c (rs6000_debug_reg_global): Remove Xilinx FP
3029         support.
3030         (rs6000_setup_reg_addr_masks): Ditto.
3031         (rs6000_init_hard_regno_mode_ok): Ditto.
3032         (rs6000_option_override_internal): Ditto.
3033         (legitimate_lo_sum_address_p): Ditto.
3034         (rs6000_legitimize_address): Ditto.
3035         (rs6000_legitimize_reload_address): Ditto.
3036         (rs6000_legitimate_address_p): Ditto.
3037         (abi_v4_pass_in_fpr): Ditto.
3038         (setup_incoming_varargs): Ditto.
3039         (rs6000_gimplify_va_arg): Ditto.
3040         (rs6000_split_multireg_move): Ditto.
3041         (rs6000_savres_strategy): Ditto.
3042         (rs6000_emit_prologue_components): Ditto.
3043         (rs6000_emit_epilogue_components): Ditto.
3044         (rs6000_emit_prologue): Ditto.
3045         (rs6000_emit_epilogue): Ditto.
3046         (rs6000_elf_file_end): Ditto.
3047         (rs6000_function_value): Ditto.
3048         (rs6000_libcall_value): Ditto.
3049         * config/rs6000/rs6000.h: Ditto.
3050         (TARGET_MINMAX_SF, TARGET_MINMAX_DF): Delete, merge to ...
3051         (TARGET_MINMAX): ... this.  New.
3052         (TARGET_SF_FPR, TARGET_DF_FPR, TARGET_SF_INSN, TARGET_DF_INSN): Delete.
3053         * config/rs6000/rs6000.md: Remove Xilinx FP support.
3054         (*movsi_internal1_single): Delete.
3055         * config/rs6000/rs6000.opt (msingle-float, mdouble-float, msimple-fpu,
3056         mfpu=, mxilinx-fpu): Delete.
3057         * config/rs6000/singlefp.h: Delete.
3058         * config/rs6000/sysv4.h: Remove Xilinx FP support.
3059         * config/rs6000/t-rs6000: Ditto.
3060         * config/rs6000/t-xilinx: Delete.
3061         * gcc/config/rs6000/titan.md: Adjust for fp_type removal.
3062         * gcc/config/rs6000/vsx.md: Remove Xilinx FP support.
3063         (VStype_simple): Delete.
3064         (VSfptype_simple, VSfptype_mul, VSfptype_div, VSfptype_sqrt): Delete.
3065         * config/rs6000/xfpu.h: Delete.
3066         * config/rs6000/xfpu.md: Delete.
3067         * config/rs6000/xilinx.h: Delete.
3068         * config/rs6000/xilinx.opt: Delete.
3069         * gcc/doc/invoke.texi (RS/6000 and PowerPC Options): Remove
3070         -msingle-float, -mdouble-float, -msimple-fpu, -mfpu=, and -mxilinx-fpu.
3072 2018-05-04  Tom de Vries  <tom@codesourcery.com>
3074         PR libgomp/85639
3075         * builtins.c (expand_builtin_goacc_parlevel_id_size): Handle null target
3076         if ignore == 0.
3078 2018-05-04  Richard Biener  <rguenther@suse.de>
3080         PR middle-end/85627
3081         * tree-complex.c (update_complex_assignment): We are always in SSA form.
3082         (expand_complex_div_wide): Likewise.
3083         (expand_complex_operations_1): Likewise.
3084         (expand_complex_libcall): Preserve EH info of the original stmt.
3085         (tree_lower_complex): Handle removed blocks.
3086         * tree.c (build_common_builtin_nodes): Do not set ECF_NOTRHOW
3087         on complex multiplication and division libcall builtins.
3089 2018-05-04  Richard Biener  <rguenther@suse.de>
3091         PR middle-end/85574
3092         * fold-const.c (negate_expr_p): Restrict negation of operand
3093         zero of a division to when we know that can happen without
3094         overflow.
3095         (fold_negate_expr_1): Likewise.
3097 2018-05-04  Jakub Jelinek  <jakub@redhat.com>
3099         PR libstdc++/85466
3100         * real.h (real_nextafter): Declare.
3101         * real.c (real_nextafter): New function.
3102         * fold-const-call.c (fold_const_nextafter): New function.
3103         (fold_const_call_sss): Call it for CASE_CFN_NEXTAFTER and
3104         CASE_CFN_NEXTTOWARD.
3105         (fold_const_call_1): For CASE_CFN_NEXTTOWARD call fold_const_call_sss
3106         even when arg1_mode is different from arg0_mode.
3108 2018-05-03  Nathan Sidwell  <nathan@acm.org>
3110         * doc/extend.texi (Deprecated Features): Remove
3111         -ffriend-injection.
3112         (Backwards Compatibility): Likewise.
3113         * doc/invoke.texi (C++ Language Options): Likewise.
3114         (C++ Dialect Options): Likewise.
3116 2018-05-03  Jakub Jelinek  <jakub@redhat.com>
3118         PR target/85530
3119         * config/i386/avx512fintrin.h (_mm512_mullox_epi64,
3120         _mm512_mask_mullox_epi64): New intrinsics.
3122 2018-05-03  Tom de Vries  <tom@codesourcery.com>
3124         PR testsuite/85106
3125         * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
3126         dump files): Add offload-tree.
3128 2018-05-03  Richard Biener  <rguenther@suse.de>
3130         PR tree-optimization/85615
3131         * tree-ssa-threadupdate.c (thread_block_1): Only allow exits
3132         to loops not nested in BBs loop father to avoid creating multi-entry
3133         loops.
3135 2018-05-03  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3137         PR tree-optimization/70291
3138         * tree-complex.c (expand_complex_libcall): Add type, inplace_p
3139         arguments.  Change return type to tree.  Emit libcall as a new
3140         statement rather than replacing existing one when inplace_p is true.
3141         (expand_complex_multiplication_components): New function.
3142         (expand_complex_multiplication): Expand floating-point complex
3143         multiplication using the above.
3144         (expand_complex_division): Rename inner_type parameter to type.
3145         Update expand_complex_libcall call-site.
3146         (expand_complex_operations_1): Update expand_complex_multiplication
3147         and expand_complex_division call-sites.
3149 2018-05-02  Jakub Jelinek  <jakub@redhat.com>
3151         PR target/85582
3152         * config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
3153         *ashl<dwi>3_doubleword_mask_1, *<shift_insn><dwi>3_doubleword_mask,
3154         *<shift_insn><dwi>3_doubleword_mask_1): In condition require that
3155         the highest significant bit of the shift count mask is clear.  In
3156         check whether and[sq]i3 is needed verify that all significant bits
3157         of the shift count other than the highest are set.
3159 2018-05-02  Tom de Vries  <tom@codesourcery.com>
3161         PR libgomp/82428
3162         * builtins.def (DEF_GOACC_BUILTIN_ONLY): Define.
3163         * omp-builtins.def (BUILT_IN_GOACC_PARLEVEL_ID)
3164         (BUILT_IN_GOACC_PARLEVEL_SIZE): New builtin.
3165         * builtins.c (expand_builtin_goacc_parlevel_id_size): New function.
3166         (expand_builtin): Call expand_builtin_goacc_parlevel_id_size.
3167         * doc/extend.texi (Other Builtins): Add __builtin_goacc_parlevel_id and
3168         __builtin_goacc_parlevel_size.
3170 2018-05-02  Richard Biener  <rguenther@suse.de>
3172         PR tree-optimization/85597
3173         * tree-vect-stmts.c (vectorizable_operation): For ternary SLP
3174         do not use split vect_get_vec_defs call but call vect_get_slp_defs
3175         directly.
3177 2018-05-02  Tom de Vries  <tom@codesourcery.com>
3179         PR testsuite/85106
3180         * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
3181         dump files): Add ltrans-tree.
3183 2018-05-02  Tom de Vries  <tom@codesourcery.com>
3185         PR testsuite/85106
3186         * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
3187         dump files): Add wpa-ipa.
3189 2018-05-02  Segher Boessenkool  <segher@kernel.crashing.org>
3191         * config.gcc (powerpc*-*-*): Remove paired.h.  Unsupport the
3192         powerpc*-*-linux*paired* target.
3193         * config/rs6000/750cl.h: Delete.
3194         * config/rs6000/paired.h: Delete.
3195         * config/rs6000/paired.md: Delete.
3196         * config/rs6000/predicates.md (easy_vector_constant): Remove paired
3197         float support.
3198         * config/rs6000/rs6000-builtin.def: Remove paired float support.
3199         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Update
3200         comment.  Remove paired float support.
3201         * config/rs6000/rs6000-modes.def: Remove V2SF and V2SI.
3202         * config/rs6000/rs6000-opts.h (enum rs6000_vector): Delete
3203         VECTOR_PAIRED.
3204         * config/rs6000/rs6000-protos.h (paired_expand_vector_init,
3205         paired_emit_vector_cond_expr, paired_expand_vector_move): Delete
3206         declarations.
3207         * config/rs6000/rs6000.c: Remove paired float support.
3208         (paired_expand_vector_init, paired_expand_vector_move,
3209         paired_emit_vector_compare, paired_emit_vector_cond_expr,
3210         (paired_expand_lv_builtin, paired_expand_stv_builtin,
3211         paired_expand_builtin, paired_expand_predicate_builtin,
3212         paired_init_builtins): Delete.
3213         * config/rs6000/rs6000.h: Remove paired float support.
3214         * config/rs6000/rs6000.md: Remove paired float support.
3215         (move_from_CR_ov_bit): Delete.
3216         * config/rs6000/rs6000.opt (mpaired): Delete.
3217         * config/rs6000/t-rs6000: Remove paired.md from MD_INCLUDES.
3218         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mpaired.
3220 2018-05-02  Richard Biener  <rguenther@suse.de>
3222         PR middle-end/85567
3223         * gimplify.c (gimplify_save_expr): When in SSA form allow
3224         SAVE_EXPRs to compute to SSA vars.
3226 2018-05-02  Jakub Jelinek  <jakub@redhat.com>
3228         PR target/85582
3229         * config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
3230         *ashl<dwi>3_doubleword_mask_1, *<shift_insn><dwi>3_doubleword_mask,
3231         *<shift_insn><dwi>3_doubleword_mask_1): If and[sq]i3 is needed, don't
3232         clobber operands[2], instead use a new pseudo.  Formatting fixes.
3234 2018-05-02  Richard Sandiford  <richard.sandiford@linaro.org>
3236         PR tree-optimization/85586
3237         * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Only
3238         exit early for statements in the same group if the accesses are
3239         not strided.
3241 2018-05-02  Tom de Vries  <tom@codesourcery.com>
3243         PR lto/85451
3244         * lto-wrapper.c (compile_offload_image): Add "could not find mkoffload"
3245         error message.
3247 2018-05-01  Marc Glisse  <marc.glisse@inria.fr>
3249         PR tree-optimization/85143
3250         * match.pd (A<B&A<C): Extend to BIT_IOR_EXPR.
3252 2018-05-01  Tom de Vries  <tom@codesourcery.com>
3254         PR lto/85451
3255         * config/nvptx/mkoffload.c (main): Suggest using -B in "offload compiler
3256         not found" error message.
3258 2018-05-01  Tom de Vries  <tom@codesourcery.com>
3260         PR other/83786
3261         * vec.h (VEC_ORDERED_REMOVE_IF, VEC_ORDERED_REMOVE_IF_FROM_TO): Define.
3262         * vec.c (test_ordered_remove_if): New function.
3263         (vec_c_tests): Call test_ordered_remove_if.
3264         * dwarf2cfi.c (connect_traces): Use VEC_ORDERED_REMOVE_IF_FROM_TO.
3265         * lto-streamer-out.c (prune_offload_funcs): Use VEC_ORDERED_REMOVE_IF.
3266         * tree-vect-patterns.c (vect_pattern_recog_1): Use
3267         VEC_ORDERED_REMOVE_IF.
3269 2018-05-01  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
3271         PR tree-optimization/82665
3272         * vr-values.c (vr_values::extract_range_from_binary_expr): Handle
3273         pointer subtraction where arguments come from a memchr call.
3275 2018-05-01  Jakub Jelinek  <jakub@redhat.com>
3277         * configure.ac (LD_AS_NEEDED_OPTION, LD_NO_AS_NEEDED_OPTION): Use
3278         --push-state --as-needed and --pop-state instead of --as-needed and
3279         --no-as-needed if ld supports it.
3280         * configure: Regenerated.
3282         PR web/85578
3283         * doc/install.texi2html: Replace _002d with - and _002a with * in
3284         generated html files using sed.
3286 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
3288         PR c++/85523
3289         * gcc-rich-location.c (blank_line_before_p): New function.
3290         (use_new_line): New function.
3291         (gcc_rich_location::add_fixit_insert_formatted): New function.
3292         * gcc-rich-location.h
3293         (gcc_rich_location::add_fixit_insert_formatted): New function.
3295 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
3297         * selftest.c (assert_streq): Rename "expected" and "actual" to
3298         "val1" and "val2".  Extend NULL-handling to cover both inputs
3299         symmetrically, while still requiring both to be non-NULL for a pass.
3300         * selftest.h (assert_streq): Rename "expected" and "actual" to
3301         "val1" and "val2".
3302         (ASSERT_EQ): Likewise.
3303         (ASSERT_EQ_AT): Likewise.
3304         (ASSERT_KNOWN_EQ): Likewise.
3305         (ASSERT_KNOWN_EQ_AT): Likewise.
3306         (ASSERT_NE): Likewise.
3307         (ASSERT_MAYBE_NE): Likewise.
3308         (ASSERT_MAYBE_NE_AT): Likewise.
3309         (ASSERT_STREQ): Likewise.  Clarify that both must be non-NULL for
3310         the assertion to pass.
3311         (ASSERT_STREQ_AT): Likewise.
3313 2018-04-30  Jonathan Wakely  <jwakely@redhat.com>
3315         * doc/invoke.texi (-fpie, -fPIE): Fix grammar and clarify
3316         interaction with -pie.
3318 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
3320         * selftest.h: Fix alphabetization of per-source-file selftest
3321         declarations.
3323 2018-04-30  Jason Merrill  <jason@redhat.com>
3325         PR c++/61982 - dead stores to destroyed objects.
3326         * gimplify.c (gimplify_modify_expr): Simplify complex lvalue on LHS
3327         of clobber.
3329 2018-04-30  Jason Merrill  <jason@redhat.com>
3331         * tree.c (build_clobber): New.
3332         * tree.h: Declare it.
3333         * gimplify.c (gimplify_bind_expr, gimplify_target_expr): Use it.
3335 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
3337         * diagnostic-show-locus.c (layout::layout): Update for
3338         location_get_source_line returning a char_span.
3339         (struct char_span): Move to input.h.
3340         (struct correction): Update for fields in char_span becoming
3341         private.
3342         (struct source_line): Update for location_get_source_line
3343         returning a char_span.
3344         (layout::print_line): Likewise.
3345         * edit-context.c (edited_file::print_content): Likewise.
3346         (edited_file::print_diff_hunk): Likewise.
3347         (edited_file::print_run_of_changed_lines): Likewise.
3348         (edited_file::get_num_lines): Likewise.
3349         (edited_line::edited_line): Likewise.
3350         * final.c (asm_show_source): Likewise.
3351         * input.c (location_get_source_line): Convert return type
3352         from const char * to char_span, losing the final "line_len"
3353         param.
3354         (dump_location_info): Update for the above.
3355         (get_substring_ranges_for_loc): Likewise.  Use a char_span
3356         when handling the literal within the line.
3357         (test_reading_source_line): Update for location_get_source_line
3358         returning a char_span.
3359         * input.h (class char_span): Move here from
3360         diagnostic-show-locus.c, converting from a struct to a class.
3361         Make data members private.
3362         (char_span::operator bool): New.
3363         (char_span::length): New.
3364         (char_span::get_buffer): New.
3365         (char_span::operator[]): New.
3366         (char_span::subspan): Make const.
3367         (char_span::xstrdup): New.
3368         (location_get_source_line): Convert return type from const char *
3369         to char_span, losing the final "line_size" param.
3371 2018-04-30  Jan Hubicka  <jh@suse.cz>
3373         * lto-wrapper.c (ltrans_priorities): New static var.
3374         (cmp_priority): New.
3375         (run_gcc): Read priorities and if doing parallel build order
3376         the Makefile by them.
3378 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
3380         * input.h (builtins_location_check): Convert to a STATIC_ASSERT.
3382 2018-04-30  Richard Biener  <rguenther@suse.de>
3384         * tree-cfg.c (verify_address): Remove base argument, add
3385         flag whether to check TREE_ADDRESSABLE and do that.
3386         (verify_expr): Remove.
3387         (verify_types_in_gimple_reference): Add pieces from verify_expr.
3388         (verify_gimple_assign_single): Likewise.
3389         (verify_gimple_switch): Likewise.
3390         (verify_expr_location_1): Dereference tp once.  Add (disabled)
3391         piece from verify_expr.
3392         (verify_gimple_in_cfg): Do not call verify_expr on all ops.
3394 2018-04-30  Claudiu Zissulescu  <claziss@synopsys.com>
3396         * config/arc/linux.h (CLEAR_INSN_CACHE): Define.
3398 2018-04-30  Claudiu Zissulescu  <claziss@synopsys.com>
3400         * config/arc/arc-protos.h (prepare_extend_operands): Remove.
3401         (small_data_pattern): Likewise.
3402         (arc_rewrite_small_data): Likewise.
3403         * config/arc/arc.c (LEGITIMATE_SMALL_DATA_OFFSET_P): Remove.
3404         (LEGITIMATE_SMALL_DATA_ADDRESS_P): Likewise.
3405         (get_symbol_alignment): New function.
3406         (legitimate_small_data_address_p): Likewise.
3407         (legitimate_scaled_address): Update, call
3408         legitimate_small_data_address_p.
3409         (output_sdata): New static variable.
3410         (arc_print_operand): Update how we handle small data operands.
3411         (arc_print_operand_address): Likewise.
3412         (arc_legitimate_address_p): Update, use
3413         legitimate_small_data_address_p.
3414         (arc_rewrite_small_data_p): Remove.
3415         (arc_rewrite_small_data_1): Likewise.
3416         (arc_rewrite_small_data): Likewise.
3417         (small_data_pattern): Likewise.
3418         (compact_sda_memory_operand): Update to use
3419         legitimate_small_data_address_p and get_symbol_alignment.
3420         (prepare_move_operands): Don't rewite sdata pattern.
3421         (prepare_extend_operands): Remove.
3422         * config/arc/arc.md (zero_extendqihi2): Don't rewrite sdata
3423         pattern.
3424         (zero_extendqisi2): Likewise.
3425         (zero_extendhisi2): Likewise.
3426         (extendqihi2): Likewise.
3427         (extendqisi2): Likewise.
3428         (extendhisi2): Likewise.
3429         (addsi3): Likewise.
3430         (subsi3): Likewise.
3431         (andsi3): Likewise.
3432         * config/arc/constraints.md (Usd): Change it to memory constraint.
3434 2018-04-30  Claudiu Zissulescu  <claziss@synopsys.com>
3436         * config/arc/arc.c (arc_split_move): Allow signed 6-bit constants
3437         as source of std instructions.
3438         * config/arc/arc.md (movsi_insn): Update pattern predicate to
3439         allow 6-bit constants as source for store instructions.
3440         (movdi_insn): Update instruction pattern to allow 6-bit constants
3441         as source for store instructions.
3443 2018-04-30  Jonathan Wakely  <jwakely@redhat.com>
3445         * doc/invoke.texi (-fdebug-types-section): Fix grammar.
3447 2018-04-30  Nathan Sidwell  <nathan@acm.org>
3448             Sandra Loosemore <sandra@codesourcery.com>
3450         * dumpfile.c (dump_open): Allow '-' for stdout.
3451         * doc/invoke.texi (Developer Options): Document dump filename
3452         determination early.  Document stdin/stdout selection.
3454 2018-04-30 Andrew Sadek  <andrew.sadek.se@gmail.com>
3456         Microblaze Target: PIC data text relative
3458         * config/microblaze/microblaze.opt: add new option -mpic-data-text-rel.
3459         * config/microblaze/microblaze-protos.h (microblaze_constant_address_p):
3460         Add declaration.
3461         * gcc/config/microblaze/microblaze.h (microblaze_constant_address_p):
3462         CONSTANT_ADDRESS_P definition to microblaze_constant_address_p.
3463         * config/microblaze/microblaze.c (TARGET_PIC_DATA_TEXT_REL):
3464         New addressing mode for data-text relative position indepenedent code.
3465         (microblaze_classify_unspec): add 'UNSPEC_TEXT' case ->
3466         'ADDRESS_SYMBOLIC_TXT_REL'.
3467         (microblaze_classify_address): Add handling for UNSPEC + CONST_INT.
3468         (microblaze_legitimate_pic_operand): Exclude function calls from
3469         pic operands in case of TARGET_PIC_DATA_TEXT_REL option.
3470         (microblaze_legitimize_address): Generate 'UNSPEC_TEXT' for all possible
3471         addresses cases.
3472         (microblaze_address_insns): Add 'ADDRESS_SYMBOLIC_TXT_REL' case.
3473         (print_operand): Add 'ADDRESS_SYMBOLIC_TXT_REL' case.
3474         (print_operand_address): Add 'ADDRESS_SYMBOLIC_TXT_REL' case + handling
3475         for 'address + offset'.
3476         (microblaze_expand_prologue): Add new function prologue call for
3477         'r20' assignation.
3478         (microblaze_asm_generate_pic_addr_dif_vec): Override new target hook
3479         'TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC' to disable address diff vector
3480         table in case of TARGET_PIC_DATA_TEXT_REL.
3481         (expand_pic_symbol_ref): Add handling for 'UNSPEC_TEXT'.
3482         * gcc/config/microblaze/microblaze.md (TARGET_PIC_DATA_TEXT_REL):
3483         Add new macros 'UNSPEC_TEXT',
3484         'UNSPEC_SET_TEXT' + add rule for setting r20 in function prologue
3485         + exclude function calls from 'UNSPEC_PLT' in case of data text
3486         relative mode.
3487         * doc/tm.texi.in (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add
3488         new target hook for generating address diff vector tables in case of
3489         flag_pic.
3490         * doc/tm.texi : Regenerate.
3491         * stmt.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Append new condition
3492         'targetm.asm_out.generate_pic_addr_diff_vec' to flag_pic in case
3493         of addr diff vector generation.
3494         * target.def (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add
3495         target hook definition.
3496         * targhooks.h, gcc/targhooks.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC):
3497         Add default function for generate_pic_addr_diff_vec -> flag_pic.
3498         * doc/invoke.texi (Add new pic option): Add new microblaze pic
3499         option for data text relative.
3501 2018-04-30  Richard Biener  <rguenther@suse.de>
3503         * tree-chrec.h (evolution_function_is_constant_p): Remove
3504         redundant check.
3505         * tree-cfg.c (tree_node_can_be_shared): Re-order checks.
3507 2018-04-30  Richard Biener  <rguenther@suse.de>
3509         PR bootstrap/85571
3510         * dwarf2out.c (gen_producer_string): Ignore -fchecking[=].
3512 2018-04-30  Richard Biener  <rguenther@suse.de>
3514         PR tree-optimization/28364
3515         PR tree-optimization/85275
3516         * tree-ssa-loop-ch.c (ch_base::copy_headers): Stop after
3517         copying first exit test.
3519 2018-04-28  Mark Wielaard  <mark@klomp.org>
3521         * dwarf2out.c (dwarf2out_finish): Add .debug_addr table header for
3522         dwarf_version >= 5.
3523         (dwarf_AT): Handle DW_AT_addr_base.
3524         (add_top_level_skeleton_die_attrs): Use dwarf_AT for DW_AT_addr_base.
3526 2018-04-28  Uros Bizjak  <ubizjak@gmail.com>
3528         PR target/84431
3529         * config/i386/i386.md (*ashl<dwi>3_doubleword_mask): New pattern.
3530         (*ashl<dwi>3_doubleword_mask_1): Ditto.
3531         (*<shift_insn><dwi>3_doubleword_mask): Ditto.
3532         (*<shift_insn><dwi>3_doubleword_mask_1): Ditto.
3534 2018-04-28  Richard Biener  <rguenther@suse.de>
3536         * tree-cfg.c (verify_gimple_phi): Take a gphi * argument.
3537         (verify_gimple_in_cfg): Rename visited_stmts to visited_throwing_stmts
3538         to reflect use.  Only add interesting stmts.
3540 2018-04-27  Martin Jambor  <mjambor@suse.cz>
3542         PR ipa/85549
3543         * ipa-cp.c (find_aggregate_values_for_callers_subset): Make sure
3544         the jump function allows for passing through aggregate values.
3546 2018-04-27  David Malcolm  <dmalcolm@redhat.com>
3548         * input.h (in_system_header_at): Convert from macro to inline
3549         function.
3550         (from_macro_expansion_at): Likewise.
3551         (from_macro_definition_at): Likewise.
3553 2018-04-27  Jeff Law  <law@redhat.com>
3555         * config.gcc: Mark tile* targets as deprecated/obsolete.
3557 2018-04-27  Richard Biener  <rguenther@suse.de>
3559         * config/aarch64/aarch64.c: Simplify ap.__stack advance and
3560         fix for ILP32.
3562 2018-04-27  Richard Biener  <rguenther@suse.de>
3564         * tree-cfg.c (verify_expr): Make dead code hit gcc_unreachable.
3566 2018-04-27  Uros Bizjak  <ubizjak@gmail.com>
3568         * config/i386/i386.md (*movti_internal): Substitute Ye constraint
3569         with Yd constraint. Set "preferred_for_speed" attribute from
3570         TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for alternatives
3571         with Yd constraint.
3572         (*movdi_internal): Ditto.
3573         (movti_interunit splitters): Remove
3574         TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC from insn condition.
3575         (movdi_interunit splitters): Ditto.
3576         * config/i386/constraints.md (Ye): Remove.
3577         (Yd): Do not depend on TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC.
3579 2018-04-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3581         PR target/85512
3582         * config/aarch64/constraints.md (Usg): Limit to 31.
3583         (Usj): Limit to 63.
3585 2018-04-27  Jakub Jelinek  <jakub@redhat.com>
3587         PR tree-optimization/85529
3588         * tree-ssa-reassoc.c (optimize_range_tests_var_bound): Add FIRST_BB
3589         argument.  Don't call get_nonzero_bits if opcode is ERROR_MARK_NODE,
3590         rhs2 def stmt's bb is dominated by first_bb and it isn't an obvious
3591         zero extension or masking of the MSB bit.
3592         (optimize_range_tests): Add FIRST_BB argument, pass it through
3593         to optimize_range_tests_var_bound.
3594         (maybe_optimize_range_tests, reassociate_bb): Adjust
3595         optimize_range_tests callers.
3597 2018-04-26  Richard Biener  <rguenther@suse.de>
3598             Jakub Jelinek  <jakub@redhat.com>
3600         * cgraph.h (symbol_table): Just declare debug method here.
3601         * symtab.c (symbol_table::debug): Define.
3603 2018-04-26  Eric Botcazou  <ebotcazou@adacore.com>
3605         * loop-invariant.c (may_assign_reg_p): Return false for frame pointer.
3607 2018-04-26  Uros Bizjak  <ubizjak@gmail.com>
3609         * config/i386/i386.md ("isa" attribute): Add x64_sse2.
3610         ("enabled" attribute): Handle x64_sse2 "isa" attribute.
3611         (*movdi_internal): Substitute Yi and Yj constraint with x
3612         and Ym and Yn constraint with y constraint.  Update "isa"
3613         attribute and set "preferred_for_speed" attribute from
3614         TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for updated alternatives.
3615         (*movsi_internal): Ditto.
3616         (*movdf_internal): Ditto.
3617         (*movsf_internal): Ditto.
3618         (*zero_extendsidi2): Ditto.
3619         * config/i386/sse.md (vec_set<mode>_0): Ditto.
3620         (sse2_loadld): Ditto.
3621         (*vec_extract<ssevecmodelower>_0): Ditto.
3622         (*vec_extractv4si_0_zext_sse4): Ditto.
3623         (vec_concatv2di): Ditto.
3624         (*vec_dup<mode>): Ditto.
3625         * config/i386/mmx.md (*mov<mode>_internal): Ditto.
3626         * config/i386/constraints.md (Yi): Remove.
3627         (Yj): Remove.
3628         (Ym): Remove.
3629         (Yn): Remove.
3631 2018-04-26  Nathan Sidwell  <nathan@acm.org>
3633         * dumpfile.c (dump_open): New.
3634         (dump_open_alternate_stream, dump_start, dump_begin): Call it.
3635         (dump_finish): Detect stdio/stderr by value not name.
3637 2018-04-26  Jonathan Wakely  <jwakely@redhat.com>
3639         * doc/invoke.texi (-Wreturn-type): Document default status for C++.
3641 2018-04-26  Tom de Vries  <tom@codesourcery.com>
3643         PR target/84952
3644         * config/nvptx/nvptx.c (verify_neutering_jumps)
3645         (verify_neutering_labels): New function
3646         (nvptx_single): Use verify_neutering_jumps and verify_neutering_labels.
3648 2018-04-26  Tom de Vries  <tom@codesourcery.com>
3650         PR target/84025
3651         * config/nvptx/nvptx.c (needs_neutering_p): New function.
3652         (nvptx_single): Use needs_neutering_p to skip over insns that do not
3653         need neutering.
3655 2018-04-26  Richard Biener <rguenther@suse.de>
3656             Tom de Vries  <tom@codesourcery.com>
3658         PR lto/85422
3659         * lto-streamer-out.c (output_function): Fixup loops if required to match
3660         discovery done in the reader.
3662 2018-04-26  Richard Biener  <rguenther@suse.de>
3664         PR tree-optimization/85116
3665         * tree-ssa-loop-ch.c (do_while_loop_p): A do-while loop should
3666         have a loop exit from the single latch predecessor.  Remove
3667         case of header with just condition.
3668         (ch_base::copy_headers): Exclude infinite loops from any
3669         processing.
3670         (pass_ch::execute): Record exits.
3672 2018-04-26  Richard Biener  <rguenther@suse.de>
3674         * tree-vect-data-refs.c (vect_get_data_access_cost): Get
3675         prologue cost vector and pass it to vect_get_load_cost.
3676         (vect_get_peeling_costs_all_drs): Likewise.
3677         (vect_peeling_hash_get_lowest_cost): Likewise.
3678         (vect_enhance_data_refs_alignment): Likewise.
3680 2018-04-26  Richard Biener  <rguenther@suse.de>
3682         PR middle-end/85450
3683         * tree-cfg.c (verify_gimple_assign_unary): Restore proper
3684         checking of integer<->pointer conversions.
3685         * omp-expand.c (expand_omp_for_static_nochunk): Avoid
3686         sign-/zero-extending pointer types.
3687         (expand_omp_for_static_chunk): Likewise.
3689 2018-03-22  Hans-Peter Nilsson  <hp@axis.com>
3690             Jean Lee  <xiaoyur347@gmail.com>
3692         * config/mips/mips.c (mips_asan_shadow_offset): New function.
3693         (TARGET_ASAN_SHADOW_OFFSET): Define.
3694         * config/mips/mips.h (FRAME_GROWS_DOWNWARD): Augment to also be
3695         true for -fsanitize=address.
3697 2018-04-25  Mark Wielaard  <mark@klomp.org>
3699         * dwarf2out.c (file_info_cmp): Sort longer dir prefixes before
3700         shorter ones.
3702 2018-04-25  Jakub Jelinek  <jakub@redhat.com>
3704         * config/i386/i386.md (*x86_mov<mode>cc_0_m1): Use type "alu1" rather
3705         than "alu", remove explicit "memory" and "imm_disp" attributes.
3706         (*x86_mov<mode>cc_0_m1_se, *x86_mov<mode>cc_0_m1_neg): Likewise.
3708         PR middle-end/85414
3709         * simplify-rtx.c (simplify_unary_operation_1) <case SIGN_EXTEND,
3710         case ZERO_EXTEND>: Pass SUBREG_REG (op) rather than op to
3711         gen_lowpart_no_emit.
3713 2018-04-25  Sebastian Peryt  <sebastian.peryt@intel.com>
3715         PR target/85473
3716         * config/i386/i386.c (ix86_expand_builtin): Change memory
3717         operand to XI, extend p0 to Pmode.
3718         * config/i386/i386.md: Change unspec volatile and operand
3719         1 mode to XI, change operand 0 mode to P.
3721 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
3723         * config/nds32/nds32-predicates.c (nds32_can_use_bclr_p): Mask with
3724         GET_MODE_MASK before any checking.
3725         (nds32_can_use_bset_p): Likewise.
3726         (nds32_can_use_btgl_p): Likewise.
3728 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
3730         * config/nds32/nds32-doubleword.md: New define_split pattern for
3731         illegal register number.
3733 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
3735         * config/nds32/nds32.c (nds32_print_operand): Set op_value ealier.
3737 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
3739         * config/nds32/nds32.h (ASM_APP_ON): Add missing newline character.
3741 2018-04-25  Richard Biener  <rguenther@suse.de>
3743         * lto-streamer.h (LTO_major_version): Bump to 8.
3745 2018-04-25  Jakub Jelinek  <jakub@redhat.com>
3747         * BASE-VER: Set to 9.0.0.
3749 2018-04-24  Segher Boessenkool  <segher@kernel.crashing.org>
3751         * config/rs6000/rs6000.c (init_float128_ieee): Fix spelling mistakes
3752         in __abskf2 and __powikf2.
3754 2018-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3756         PR target/85512
3757         * config/aarch64/constraints.md (Usg, Usj): New constraints.
3758         * config/aarch64/iterators.md (cmode_simd): New mode attribute.
3759         * config/aarch64/aarch64.md (*aarch64_ashr_sisd_or_int_<mode>3):
3760         Use the above on operand 2.  Reindent.
3761         (*aarch64_lshr_sisd_or_int_<mode>3): Likewise.
3763 2018-04-24  H.J. Lu  <hongjiu.lu@intel.com>
3765         PR target/85485
3766         * common/config/i386/i386-common.c (ix86_handle_option): Don't
3767         handle OPT_mcet.
3768         * config/i386/i386.opt (mcet): Removed.
3769         * doc/install.texi: Remove -mcet documentation.
3770         * doc/invoke.texi: Likewise.
3772 2018-04-24  H.J. Lu  <hongjiu.lu@intel.com>
3774         PR target/85485
3775         * doc/install.texi: Remove -mcet from bootstrap-cet.
3777 2018-04-24  Jakub Jelinek  <jakub@redhat.com>
3779         PR target/85511
3780         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Don't define
3781         __builtin_ia32_readeflags_u32 and __builtin_ia32_writeeflags_u32
3782         if TARGET_64BIT.
3784         PR target/85503
3785         * config/rs6000/rs6000-p8swap.c (const_load_sequence_p): Punt if
3786         const_vector is not CONST_VECTOR or SYMBOL_REF for a constant pool
3787         containing a CONST_VECTOR.
3789 2018-04-24  Cesar Philippidis  <cesar@codesourcery.com>
3791         * doc/install.texi: Update newlib dependency for nvptx.
3793 2018-04-24  Jakub Jelinek  <jakub@redhat.com>
3795         PR target/85508
3796         * config/i386/i386.c (ix86_expand_vector_init_one_var): Use UINTVAL
3797         instead of INTVAL when shifting x left.
3799 2018-04-24  Andreas Krebbel  <krebbel@linux.ibm.com>
3801         PR tree-optimization/85478
3802         * tree-vect-loop.c (vect_analyze_loop_2): Do not call
3803         vect_grouped_store_supported for single element vectors.
3805 2018-04-24  Richard Biener  <rguenther@suse.de>
3807         PR target/85491
3808         * config/i386/i386.c (ix86_add_stmt_cost): Restrict strided
3809         load cost increase to the case of non-constant step.
3811 2018-04-24  Jakub Jelinek  <jakub@redhat.com>
3813         PR target/84828
3814         * reg-stack.c (move_for_stack_reg): Don't fail assertion about dead
3815         destination if any_malformed_asm.
3817 2018-04-23  Eric Botcazou  <ebotcazou@adacore.com>
3819         PR middle-end/85496
3820         * expr.c (store_field): In the bitfield case, if the value comes from
3821         a function call and is returned in registers by means of a PARALLEL,
3822         do not change the mode of the temporary unless BLKmode and VOIDmode.
3824 2018-04-23  Andrey Belevantsev  <abel@ispras.ru>
3826         PR rtl-optimization/85423
3827         * sel-sched-ir.c (has_dependence_note_mem_dep): Only discard
3828         dependencies to debug insns when the previous insn is non-debug.
3830 2018-04-23  Claudiu Zissulescu  <claziss@synopsys.com>
3832         * config/arc/arc.md ("vunspec"): Delete it, unify all the unspec
3833         enums into a single definition.
3834         (fls): Fix predicates and printing.
3835         (seti): Likewise.
3837 2018-04-23  Claudiu Zissulescu  <claziss@synopsys.com>
3839         * config/arc/arc-protos.h (check_if_valid_sleep_operand): Remove.
3840         * config/arc/arc.c (arc_expand_builtin): Sleep accepts registers
3841         and short u6 immediate.
3842         (check_if_valid_sleep_operand): Remove.
3843         * config/arc/arc.md (Sleep): Accepts registers and u6 immediates.
3845 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
3847         * config/nds32/nds32.c (nds32_compute_stack_frame): Consider
3848         flag_always_save_lp condition.
3849         * config/nds32/nds32.opt (malways-save-lp): New option.
3851 2018-04-22  Shiva Chen  <shiva0217@gmail.com>
3853         * config/nds32/nds32-protos.h (nds32_use_load_post_increment): Declare.
3854         * config/nds32/nds32.c (nds32_use_load_post_increment): New.
3855         * config/nds32/nds32.h
3856         (USE_LOAD_POST_INCREMENT, USE_LOAD_POST_DECREMENT): Define.
3857         (USE_STORE_POST_INCREMENT, USE_STORE_POST_DECREMENT): Define.
3859 2018-04-22  Shiva Chen  <shiva0217@gmail.com>
3861         * config/nds32/nds32-protos.h (nds32_ls_333_p): Remove.
3862         * config/nds32/nds32.c (nds32_ls_333_p): Remove.
3864 2018-04-22  Shiva Chen  <shiva0217@gmail.com>
3865             Chung-Ju Wu  <jasonwucj@gmail.com>
3867         * config/nds32/nds32-protos.h (nds32_case_vector_shorten_mode):
3868         Declare.
3869         * config/nds32/nds32.c (nds32_case_vector_shorten_mode): New function.
3870         * config/nds32/nds32.h (CASE_VECTOR_SHORTEN_MODE): Modify.
3872 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
3874         * config/nds32/nds32.c (nds32_compute_stack_frame): Fix wrong value.
3876 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
3878         * config/nds32/nds32-protos.h (nds32_data_alignment,
3879         nds32_local_alignment): Declare.
3880         * config/nds32/nds32.c (nds32_data_alignment, nds32_constant_alignment,
3881         nds32_local_alignment): New functions.
3882         (TARGET_CONSTANT_ALIGNMENT): Define.
3883         * config/nds32/nds32.h (DATA_ALIGNMENT, LOCAL_ALIGNMENT): Define.
3885 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
3887         * config/nds32/nds32.c
3888         (TARGET_HARD_REGNO_MODE_OK): Move to the bottom of file.
3889         (TARGET_MODES_TIEABLE_P): Likewise.
3891 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
3893         * config/nds32/nds32.c (nds32_asm_file_start): Display optimization
3894         level Ofast and Og.
3896 2018-04-22  Monk Chiang  <sh.chiang04@gmail.com>
3897             Chung-Ju Wu  <jasonwucj@gmail.com>
3899         * config/nds32/constants.md (unspec_volatile_element): Add enum values
3900         for unaligned access.
3901         * config/nds32/nds32-intrinsic.c: Implementation of expanding
3902         unaligned access.
3903         * config/nds32/nds32-intrinsic.md: Likewise.
3904         * config/nds32/nds32_intrinsic.h: Likewise.
3905         * config/nds32/nds32.h (nds32_builtins): Likewise.
3906         * config/nds32/nds32.opt (munaligned-access): New option.
3907         * config/nds32/nds32.c (nds32_asm_file_start): Display
3908         flag_unaligned_access status.
3910 2018-04-20  Kito Cheng  <kito.cheng@gmail.com>
3912         * config/riscv/elf.h (LINK_SPEC): Pass --no-relax if
3913         -mno-relax is present.
3914         * config/riscv/linux.h (LINK_SPEC): Ditto.
3916 2018-04-20  Martin Sebor  <msebor@redhat.com>
3918         PR c/85365
3919         * gimple-fold.c (gimple_fold_builtin_strcpy): Suppress -Wrestrict
3920         for null pointers.
3921         (gimple_fold_builtin_stxcpy_chk): Same.
3922         * gimple-ssa-warn-restrict.c (check_bounds_or_overlap): Same.
3924 2018-04-20  Michael Meissner  <meissner@linux.ibm.com>
3926         PR target/85456
3927         * config/rs6000/rs6000.c (init_float128_ieee): Add support to call
3928         __powikf2 when long double is IEEE 128-bit.
3930 2018-04-20  Kito Cheng  <kito.cheng@gmail.com>
3932         * config/riscv/riscv.c (riscv_first_stack_step): Round up min
3933         step to make sure stack always aligned.
3935 2018-04-20  Carl Love  <cel@us.ibm.com>
3937         PR target/83402
3938         * config/rs6000/rs6000-c.c (rs6000_gimple_fold_builtin): Add
3939         size check for arg0.
3941 2018-04-20  Nathan Sidwell  <nathan@codesourcery.com>
3942             Tom de Vries  <tom@codesourcery.com>
3944         PR target/85445
3945         * config/nvptx/nvptx.c (nvptx_emit_forking, nvptx_emit_joining):
3946         Emit insns for calls too.
3947         (nvptx_find_par): Always look for worker-level predecessor insn.
3948         (nvptx_propagate): Add is_call parm, return bool.  Copy frame for
3949         calls.
3950         (nvptx_vpropagate, nvptx_wpropagate): Adjust.
3951         (nvptx_process_pars): Propagate frames for calls.
3953 2018-04-20  H.J. Lu  <hongjiu.lu@intel.com>
3955         PR target/85469
3956         * common/config/i386/i386-common.c (OPTION_MASK_ISA_IBT_SET):
3957         Removed.
3958         (OPTION_MASK_ISA_IBT_UNSET): Likewise.
3959         (ix86_handle_option): Don't handle OPT_mibt.
3960         * config/i386/cet.h: Check __CET__ instead of __IBT__ and
3961         __SHSTK__.
3962         * config/i386/driver-i386.c (host_detect_local_cpu): Remove
3963         has_ibt and ibt.
3964         * config/i386/i386-c.c (ix86_target_macros_internal): Don't
3965         check OPTION_MASK_ISA_IBT nor flag_cf_protection.
3966         (ix86_target_macros): Define __CET__ with flag_cf_protection
3967         for -fcf-protection.
3968         * config/i386/i386.c (isa2_opts): Remove -mibt.
3969         * config/i386/i386.h (TARGET_IBT): Removed.
3970         (TARGET_IBT_P): Likewise.
3971         (ix86_valid_target_attribute_inner_p): Don't check OPT_mibt.
3972         * config/i386/i386.md (nop_endbr): Don't check TARGET_IBT.
3973         * config/i386/i386.opt (mcet): Update help message.
3974         (mshstk): Likewise.
3975         (mibt): Removed.
3976         * doc/invoke.texi: Remove -mibt.  Document __CET__.  Document
3977         -mcet as an alias for -mshstk.
3979 2018-04-20  Richard Biener <rguenther@suse.de>
3981         PR middle-end/85475
3982         * match.pd ((X * CST) * Y -> (X * Y) * CST): Avoid exponential
3983         complexity by forcing a single use of the multiply operand.
3985 2018-04-20  Martin Jambor  <mjambor@suse.cz>
3987         ipa/85449
3988         * ipa-cp.c (cgraph_edge_brings_value_p): Move check for self-feeding
3989         recursion dependency to only apply to non-clones.
3991 2018-04-20  Martin Jambor  <mjambor@suse.cz>
3993         ipa/85447
3994         * ipa-cp.c (create_specialized_node): Check that clones of
3995         self-recursive edges exist during IPA-CP.
3997 2018-04-19  Toon Moene  <toon@moene.org>
3999         * doc/invoke.texi: Add -floop-unroll-and-jam to options enabled
4000         by -O3. 
4002 2018-04-19  Jakub Jelinek  <jakub@redhat.com>
4004         PR tree-optimization/85467
4005         * fold-const.c (fold_ternary_loc) <case BIT_FIELD_REF>: Use
4006         VECTOR_TYPE_P macro.  If type is vector type, VIEW_CONVERT_EXPR the
4007         VECTOR_CST element to type.
4009 2018-04-19  H.J. Lu  <hongjiu.lu@intel.com>
4011         PR target/85397
4012         * config/i386/i386.h (STACK_SAVEAREA_MODE): New.
4013         * config/i386/i386.md (builtin_setjmp_setup): Removed.
4014         (builtin_longjmp): Likewise.
4015         (save_stack_nonlocal): New pattern.
4016         (restore_stack_nonlocal): Likewise.
4018 2018-04-19  H.J. Lu  <hongjiu.lu@intel.com>
4020         PR target/85404
4021         * config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
4022         Replace ASM_OUTPUT_LABEL with fprintf.
4024 2018-04-19  H.J. Lu  <hongjiu.lu@intel.com>
4026         PR target/85417
4027         * config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
4028         Check flag_cf_protection instead of TARGET_IBT and TARGET_SHSTK.
4029         * config/i386/i386-c.c (ix86_target_macros_internal): Also
4030         define __IBT__ and __SHSTK__ for -fcf-protection.
4031         * config/i386/i386.c (pass_insert_endbranch::gate): Don't check
4032         TARGET_IBT.
4033         (ix86_trampoline_init): Likewise.
4034         (x86_output_mi_thunk): Likewise.
4035         (ix86_notrack_prefixed_insn_p): Likewise.
4036         (ix86_option_override_internal): Don't disallow -fcf-protection.
4037         * config/i386/i386.md (rdssp<mode>): Also enable for
4038         -fcf-protection.
4039         (incssp<mode>): Likewise.
4040         (nop_endbr): Likewise.
4041         * config/i386/i386.opt (mcet): Change help message to built-in
4042         functions only.
4043         (mibt): Likewise.
4044         (mshstk): Likewise.
4045         * doc/invoke.texi: Remove -mcet, -mibt and -mshstk condition
4046         on -fcf-protection.  Change -mcet, -mibt and -mshstk to only
4047         enable CET built-in functions.
4049 2018-04-19  Sebastian Peryt  <sebastian.peryt@intel.com>
4051         * common/config/i386/i386-common.c 
4052         (OPTION_MASK_ISA_MOVDIRI_SET, OPTION_MASK_ISA_MOVDIR64B_SET,
4053         OPTION_MASK_ISA_MOVDIRI_UNSET,
4054         OPTION_MASK_ISA_MOVDIR64B_UNSET): New defines.
4055         (ix86_handle_option): Handle -mmovdiri and -mmovdir64b.
4056         * config.gcc (movdirintrin.h): New header.
4057         * config/i386/cpuid.h (bit_MOVDIRI,
4058         bit_MOVDIR64B): New bits.
4059         * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mmovdiri
4060         and -mmvodir64b.
4061         * config/i386/i386-builtin-types.def ((VOID, PUNSIGNED, UNSIGNED),
4062         (VOID, PVOID, PCVOID)): New function types.
4063         * config/i386/i386-builtin.def (__builtin_ia32_directstoreu_u32,
4064         __builtin_ia32_directstoreu_u64,
4065          __builtin_ia32_movdir64b): New builtins.
4066         * config/i386/i386-c.c (__MOVDIRI__, __MOVDIR64B__): New.
4067         * config/i386/i386.c (ix86_target_string): Added -mmovdir64b
4068         and -mmovdiri.
4069         (ix86_valid_target_attribute_inner_p): Ditto.
4070         (ix86_expand_special_args_builtin): Added VOID_FTYPE_PUNSIGNED_UNSIGNED
4071         and VOID_FTYPE_PUNSIGNED_UNSIGNED.
4072         (ix86_expand_builtin): Expand IX86_BUILTIN_MOVDIR64B.
4073         * config/i386/i386.h (TARGET_MOVDIRI, TARGET_MOVDIRI_P,
4074         TARGET_MOVDIR64B, TARGET_MOVDIR64B_P): New.
4075         * config/i386/i386.md (UNSPECV_MOVDIRI, UNSPECV_MOVDIR64B): New.
4076         (movdiri<mode>, movdir64b_<mode>): New.
4077         * config/i386/i386.opt: Add -mmovdiri and -mmovdir64b.
4078         * config/i386/immintrin.h: Include movdirintrin.h.
4079         * config/i386/movdirintrin.h: New file.
4080         * doc/invoke.texi: Added -mmovdiri and -mmovdir64b.
4082 2018-04-19  Richard Biener  <rguenther@suse.de>
4084         PR middle-end/85455
4085         * cfg.c (clear_bb_flags): When loop state says we have
4086         marked irreducible regions also preserve BB_IRREDUCIBLE_LOOP.
4088 2018-04-19  Richard Biener  <rguenther@suse.de>
4090         PR tree-optimization/84737
4091         * tree-vect-data-refs.c (vect_copy_ref_info): New function
4092         copying restrict info.
4093         (vect_setup_realignment): Use it.
4094         * tree-vectorizer.h (vect_copy_ref_info): Declare.
4095         * tree-vect-stmts.c (vectorizable_store): Copy ref info from
4096         the first DR to all generated stores.
4097         (vectorizable_load): Likewise for loads.
4099 2018-04-19  Jakub Jelinek  <jakub@redhat.com>
4101         PR tree-optimization/85446
4102         * match.pd ((intptr_t) x eq/ne CST to x eq/ne (typeof x) cst): Require
4103         the integral and pointer types to have the same precision.
4105         * doc/install.texi: Document --disable-cet being the default and
4106         --enable-cet=auto.
4108 2018-04-18  Martin Liska  <mliska@suse.cz>
4110         * ipa-devirt.c (odr_subtypes_equivalent_p): Fix GNU coding
4111         style.
4113 2018-04-18  Martin Liska  <mliska@suse.cz>
4115         Revert
4116         2018-03-02  Eric Botcazou  <ebotcazou@adacore.com>
4118         PR ipa/83983
4119         * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
4120         arguments if they are comparable.
4122 2018-04-18  Martin Liska  <mliska@suse.cz>
4124         Revert
4125         2018-03-13  Eric Botcazou  <ebotcazou@adacore.com>
4127         PR lto/84805
4128         * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
4129         incomplete types.
4131 2018-04-18  H.J. Lu  <hongjiu.lu@intel.com>
4133         PR target/85388
4134         * config/i386/i386.c (ix86_expand_split_stack_prologue): Insert
4135         ENDBR after calling __morestack.
4137 2018-04-18  David Malcolm  <dmalcolm@redhat.com>
4139         PR jit/85384
4140         * configure.ac (gcc-driver-name.h): Honor --with-gcc-major-version
4141         by using gcc_base_ver to generate a gcc_driver_version, and use
4142         it when generating GCC_DRIVER_NAME.
4143         * configure: Regenerate.
4145 2018-04-18  Jakub Jelinek  <jakub@redhat.com>
4147         PR target/81084
4148         * config.gcc: Obsolete powerpc*-*-*spe*.
4150 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
4152         PR debug/84637
4153         * dbxout.c (dbxout_int): Perform negation in unsigned int type.
4154         (stabstr_D): Change type of unum from unsigned int to
4155         unsigned HOST_WIDE_INT.  Perform negation in unsigned HOST_WIDE_INT
4156         type.
4158 2018-04-17  Jim Wilson  <jimw@sifive.com>
4160         PR 84856
4161         * config/riscv/riscv.c (riscv_compute_frame_info): Add calls to
4162         RISCV_STACK_ALIGN when using outgoing_args_size and pretend_args_size.
4163         Set arg_pointer_offset after using pretend_args_size.
4165 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
4167         PR rtl-optimization/85431
4168         * dse.c (record_store): Ignore zero width stores.
4170         PR sanitizer/85230
4171         * asan.c (handle_builtin_stack_restore): Adjust comment.  Emit
4172         __asan_allocas_unpoison call and last_alloca_addr = new_sp before
4173         __builtin_stack_restore rather than after it.
4174         * builtins.c (expand_asan_emit_allocas_unpoison): Pass
4175         arg1 + (virtual_dynamic_stack_rtx - stack_pointer_rtx) as second
4176         argument instead of virtual_dynamic_stack_rtx.
4178 2018-04-17  Kelvin Nilsen  <kelvin@gcc.gnu.org>
4180         * config/rs6000/rs6000-protos.h (rs6000_builtin_is_supported_p):
4181         New prototype.
4182         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
4183         Add note to error message to explain internal mapping of overloaded
4184         built-in function name to non-overloaded built-in function name.
4185         * config/rs6000/rs6000.c (rs6000_builtin_is_supported_p): New
4186         function.
4188 2018-04-17  Michael Meissner  <meissner@linux.vnet.ibm.com>
4190         PR target/85424
4191         * config/rs6000/rs6000.md (pack<mode>): Do not try handle a pack
4192         where the inputs overlap with the output.
4194 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
4196         * config/i386/sse.md (vec_extract_lo_<mode><mask_name>): Add
4197         (=v, v) alternative and explicit "memory" attribute.
4198         (vec_extract_lo_<mode><mask_name>): Likewise.  Also add
4199         "type", "prefix", "prefix_extra", "length_immediate" and "mode"
4200         attributes.
4201         (vec_extract_lo_<mode><mask_name>): Add (=v, v) alternative and use
4202         "sselog1" type instead of "sselog".
4203         (vec_extract_hi_<mode><mask_name>): Use "sselog1" type instead of
4204         "sselog".  Remove explicit "memory" attribute.
4205         (vec_extract_lo_v32hi): Add (=v, v) alternative and explicit "memory",
4206         "type", "prefix", "prefix_extra", "length_immediate" and "mode"
4207         attributes.
4208         (vec_extract_hi_v32hi): Merge all alternatives into one, use
4209         "sselog1" type instead of "sselog".  Remove explicit "memory"
4210         attribute.
4211         (vec_extract_hi_v16hi): Merge each pair of alternatives into one,
4212         use "sselog1" type instead of "sselog".  Remove explicit "memory"
4213         attribute.
4214         (vec_extract_lo_v64qi): Add (=v, v) alternative and explicit "memory",
4215         "type", "prefix", "prefix_extra", "length_immediate" and "mode"
4216         attributes.
4217         (vec_extract_hi_v64qi): Merge all alternatives into one, use
4218         "sselog1" type instead of "sselog".  Remove explicit "memory"
4219         attribute.
4220         (vec_extract_hi_v32qi): Merge each pair of alternatives into one,
4221         use "sselog1" type instead of "sselog".  Remove explicit "memory"
4222         attribute.
4224         PR target/85430
4225         * config/i386/i386.md (*ashlqi3_1_slp): Use alu1 type instead of alu.
4227         PR middle-end/85414
4228         * rtlhooks.c (gen_lowpart_if_possible): Don't call gen_lowpart_SUBREG
4229         on a SUBREG.
4231 2018-04-17  Martin Jambor  <mjambor@suse.cz>
4233         PR ipa/85421
4234         * ipa-cp.c (create_specialized_node): Call
4235         expand_all_artificial_thunks if necessary.
4237 2018-04-17  Martin Liska  <mliska@suse.cz>
4239         PR lto/85405
4240         * ipa-devirt.c (odr_types_equivalent_p): Remove trailing
4241         in message, remote space in between '_G' and '('.
4243 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
4245         PR target/85281
4246         * config/i386/sse.md (reduces<mode><mask_scalar_name>,
4247         avx512f_vmcmp<mode>3<round_saeonly_name>,
4248         avx512f_vmcmp<mode>3_mask<round_saeonly_name>,
4249         avx512f_sgetexp<mode><mask_scalar_name><round_saeonly_scalar_name>,
4250         avx512f_rndscale<mode><round_saeonly_name>,
4251         avx512dq_ranges<mode><mask_scalar_name><round_saeonly_scalar_name>,
4252         avx512f_vgetmant<mode><mask_scalar_name><round_saeonly_scalar_name>):
4253         Use %<iptr>2 instead of %2 for -masm=intel.
4254         (avx512f_vcvtss2usi<round_name>, avx512f_vcvtss2usiq<round_name>,
4255         avx512f_vcvttss2usi<round_saeonly_name>,
4256         avx512f_vcvttss2usiq<round_saeonly_name>): Use %k1 instead of %1 for
4257         -masm=intel.
4258         (avx512f_vcvtsd2usi<round_name>, avx512f_vcvtsd2usiq<round_name>,
4259         avx512f_vcvttsd2usi<round_saeonly_name>,
4260         avx512f_vcvttsd2usiq<round_saeonly_name>, ufloatv2siv2df2<mask_name>):
4261         Use %q1 instead of %1 for -masm=intel.
4262         (avx512f_sfixupimm<mode><sd_maskz_name><round_saeonly_name>,
4263         avx512f_sfixupimm<mode>_mask<round_saeonly_name>): Use %<iptr>3 instead
4264         of %3 for -masm=intel.
4265         (sse2_shufpd_v2df_mask): Fix a typo, change %{6%} to %{%6%} for
4266         -masm=intel.
4267         (*avx512vl_<code>v2div2qi2_store): Use %w0 instead of %0 for
4268         -masm=intel.
4269         (*avx512vl_<code><mode>v4qi2_store): Use %k0 instead of %0 for
4270         -masm=intel.
4271         (avx512vl_<code><mode>v4qi2_mask_store): Use a single pattern with
4272         %k0 and %1 for -masm=intel rather than two patterns, one with %0 and
4273         %g1.
4274         (*avx512vl_<code><mode>v8qi2_store): Use %q0 instead of %0 for
4275         -masm=intel.
4276         (avx512vl_<code><mode>v8qi2_mask_store): Use a single pattern with
4277         %q0 and %1 for -masm=intel rather than two patterns, one with %0 and
4278         %g1 and one with %0 and %1.
4279         (avx512er_vmrcp28<mode><round_saeonly_name>,
4280         avx512er_vmrsqrt28<mode><round_saeonly_name>): Use %<iptr>1 instead of
4281         %1 for -masm=intel.
4282         (avx5124fmaddps_4fmaddps_mask, avx5124fmaddps_4fmaddss_mask,
4283         avx5124fmaddps_4fnmaddps_mask, avx5124fmaddps_4fnmaddss_mask,
4284         avx5124vnniw_vp4dpwssd_mask, avx5124vnniw_vp4dpwssds_mask): Swap order
4285         of %0 and %{%4%} for -masm=intel.
4286         (avx5124fmaddps_4fmaddps_maskz, avx5124fmaddps_4fmaddss_maskz,
4287         avx5124fmaddps_4fnmaddps_maskz, avx5124fmaddps_4fnmaddss_maskz,
4288         avx5124vnniw_vp4dpwssd_maskz, avx5124vnniw_vp4dpwssds_maskz): Swap
4289         order of %0 and %{%5%}%{z%} for -masm=intel.
4291 2018-04-17  Jan Hubicka  <jh@suse.cz>
4293         PR lto/85405
4294         * ipa-devirt.c (odr_types_equivalent_p): Handle bit fields.
4296 2018-04-17  Martin Liska  <mliska@suse.cz>
4298         PR ipa/85329
4299         * multiple_target.c (create_dispatcher_calls): Set apostrophes
4300         for target_clone error message.  Make default implementation
4301         clone to be a local declaration.
4302         (separate_attrs): Add new argument and check for an empty
4303         string.
4304         (expand_target_clones): Handle it.
4305         (ipa_target_clone): Make redirection just for target_clones
4306         functions.
4308 2018-04-16  Cesar Philippidis  <cesar@codesourcery.com>
4309             Tom de Vries  <tom@codesourcery.com>
4311         PR middle-end/84955
4312         * omp-expand.c (expand_oacc_for): Add dummy false branch for
4313         tiled basic blocks without omp continue statements.
4315 2018-04-16  Aaron Sawdey  <acsawdey@linux.ibm.com>
4317         PR target/83660
4318         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Mark
4319         vec_extract expression as having side effects to make sure it gets
4320         a cleanup point.
4322 2018-04-16  H.J. Lu  <hongjiu.lu@intel.com>
4324         PR target/85403
4325         * config/i386/i386.c (get_builtin_code_for_version): Check
4326         error_mark_node.
4328 2018-04-16  Olga Makhotina  <olga.makhotina@intel.com>
4330         PR target/84331
4331         * gcc/config.gcc: Support "skylake".
4332         * gcc/config/i386/i386-c.c (ix86_target_macros_internal): Handle
4333         PROCESSOR_SKYLAKE.
4334         * gcc/config/i386/i386.c (m_SKYLAKE): Define.
4335         (processor_target_table): Add "skylake".
4336         (ix86_option_override_internal): Add "skylake".
4337         (get_builtin_code_for_version): Handle PROCESSOR_SKYLAKE,
4338         PROCESSOR_CANNONLAKE.
4339         (get_builtin_code_for_version): Fix priority for
4340         PROCESSOR_ICELAKE_CLIENT, PROCESSOR_ICELAKE_SERVER,
4341         PROCESSOR_SKYLAKE-AVX512.
4342         * gcc/config/i386/i386.h (processor_costs): Define TARGET_SKYLAKE.
4343         (processor_type): Add PROCESSOR_SKYLAKE.
4345 2018-04-16  Paolo Carlini  <paolo.carlini@oracle.com>
4346             Jason Merrill  <jason@redhat.com>
4348         PR c++/85112
4349         * convert.c (convert_to_integer_1): Use direct recursion for
4350         enumeral types and types with a precision less than the number
4351         of bits in their mode.
4353 2018-04-16  Julia Koval  <julia.koval@intel.com>
4355         PR target/84413
4356         * config/i386/x86-tune.def (X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL,
4357         X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL): Add m_SKYLAKE_AVX512
4359 2018-04-14  Segher Boessenkool  <segher@kernel.crashing.org>
4361         PR target/85293
4362         * config/rs6000/rs6000.opt (mdirect-move): Make deprecated.
4363         * doc/invoke.texi (RS/6000 and PowerPC Options): Remove -mdirect-move
4364         and -mno-direct-move.
4366 2018-04-13  Paul A. Clarke  <pc@us.ibm.com>
4368         PR target/83402
4369         * config/rs6000/emmintrin.h (_mm_slli_epi{16,32,64}):
4370         Ensure that vec_splat_s32 is only called with 0 <= shift < 16.
4371         Ensure negative shifts result in {0}.
4373 2018-04-13  Vladimir Makarov  <vmakarov@redhat.com>
4375         PR rtl-optimization/79916
4376         * config/rs6000/rs6000.c (rs6000_emit_move): Use assigned hard
4377         regs (if any) to define how to gnerate SD moves when LRA is in
4378         progress.
4380 2018-04-13  Jakub Jelinek  <jakub@redhat.com>
4382         PR rtl-optimization/85393
4383         * except.h (expand_dw2_landing_pad_for_region): Remove declaration.
4384         * except.c (expand_dw2_landing_pad_for_region): Make static.
4385         * bb-reorder.c (fix_up_crossing_landing_pad): In new_bb emit just
4386         a label and unconditional jump to old_bb, rather than
4387         expand_dw2_landing_pad_for_region insn(s) and jump to single_succ
4388         basic block.
4390         PR rtl-optimization/85376
4391         * simplify-rtx.c (simplify_const_unary_operation): For CLZ and CTZ and
4392         zero op0, if C?Z_DEFINED_VALUE_AT_ZERO is false, return NULL_RTX
4393         instead of a specific value.
4395 2018-04-13  Jan Hubicka  <hubicka@ucw.cz>
4396             Bin Cheng  <bin.cheng@arm.com>
4398         PR tree-optimization/82965
4399         PR tree-optimization/83991
4400         * cfgloopanal.c (expected_loop_iterations_unbounded): Add
4401         by_profile_only parameter.
4402         * cfgloopmanip.c (scale_loop_profile): Further scale loop's profile
4403         information if the loop was predicted to iterate too many times.
4404         * cfgloop.h (expected_loop_iterations_unbounded): Update prototype
4406 2018-04-13  Jan Hubicka  <hubicka@ucw.cz>
4408         PR lto/71991
4409         * config/i386/i386.c (ix86_can_inline_p): Allow safe transitions for
4410         always inline.
4412 2018-04-13  Martin Liska  <mliska@suse.cz>
4413             Jakub Jelinek  <jakub@redhat.com>
4415         PR middle-end/81657
4416         * expr.h (enum block_op_methods): Add BLOCK_OP_NO_LIBCALL_RET.
4417         * expr.c (emit_block_move_hints): Handle BLOCK_OP_NO_LIBCALL_RET.
4418         * builtins.c (expand_builtin_memory_copy_args): Use
4419         BLOCK_OP_NO_LIBCALL_RET method for mempcpy with non-ignored target,
4420         handle dest_addr == pc_rtx.
4422 2018-04-12  Segher Boessenkool  <segher@kernel.crashing.org>
4424         PR target/85291
4425         * config/rs6000/rs6000.md (fix_trunc<mode>si2): Use legacy code if
4426         asked to not generate direct moves.
4427         (fix_trunc<mode>si2_stfiwx): Similar.
4428         (fix_trunc<mode>si2_internal): Similar.
4430 2018-04-12  Jakub Jelinek  <jakub@redhat.com>
4432         PR debug/83157
4433         * var-tracking.c (add_stores): Handle STRICT_LOW_PART SET_DEST.
4434         * cselib.c (cselib_record_sets): For STRICT_LOW_PART dest,
4435         lookup if dest in some wider mode is known to be const0_rtx and
4436         if so, record permanent equivalence for it to be ZERO_EXTEND of
4437         the narrower mode destination.
4439 2018-04-12  Cesar Philippidis  <cesar@codesourcery.com>
4441         * lto-streamer-out.c (output_function): Revert 259346.
4442         * omp-expand.c (expand_oacc_for): Likewise.
4444 2018-04-12  Alexander Monakov  <amonakov@ispras.ru>
4446         PR rtl-optimization/85354
4447         * sel-sched-ir.c (sel_init_pipelining): Move cfg_cleanup call...
4448         * sel-sched.c (sel_global_init): ... here.
4450 2018-04-12  Eric Botcazou  <ebotcazou@adacore.com>
4452         PR target/85238
4453         * lto-wrapper.c (debug_objcopy): Open the files in binary mode.
4454         * dwarf2out.c (dwarf2out_early_finish): Do not generate assembly in LTO
4455         mode for PE-COFF targets.
4456         * config/i386/i386-protos.h (i386_pe_asm_lto_start): Declare.
4457         (i386_pe_asm_lto_end): Likewise.
4458         * config/i386/cygming.h (TARGET_ASM_LTO_START): Define.
4459         (TARGET_ASM_LTO_END): Likewise.
4460         * config/i386/winnt.c (saved_debug_info_level): New static variable.
4461         (i386_pe_asm_lto_start): New function.
4462         (i386_pe_asm_lto_end): Likewise.
4464 2018-04-12  Cesar Philippidis  <cesar@codesourcery.com>
4465             Richard Biener  <rguenther@suse.de>
4467         PR middle-end/84955
4468         * lto-streamer-out.c (output_function): Fix CFG loop state before
4469         streaming out.
4470         * omp-expand.c (expand_oacc_for): Handle calls to internal
4471         functions like regular functions.
4473 2018-04-12  Richard Biener  <rguenther@suse.de>
4475         PR lto/85371
4476         * dwarf2out.c (init_sections_and_labels): Use debug_line_section[_label]
4477         for the early LTO debug to properly generate references to it
4478         during DIE emission.  Do not re-use that for the skeleton for
4479         split-dwarf.
4480         (dwarf2out_early_finish): Likewise.
4482 2018-04-12  Jakub Jelinek  <jakub@redhat.com>
4484         PR target/85328
4485         * config/i386/sse.md
4486         (<mask_codefor>avx512dq_vextract<shuffletype>64x2_1<mask_name> split,
4487         <mask_codefor>avx512f_vextract<shuffletype>32x4_1<mask_name> split,
4488         vec_extract_lo_<mode><mask_name> split, vec_extract_lo_v32hi,
4489         vec_extract_lo_v64qi): For non-AVX512VL if input is xmm16+ reg
4490         and output is a reg, avoid creating invalid lowpart subreg, but
4491         instead split into a 512-bit move.  Don't split if not AVX512VL,
4492         input is xmm16+ reg and output is a mem.
4493         (vec_extract_lo_<mode><mask_name>, vec_extract_lo_v32hi,
4494         vec_extract_lo_v64qi): Don't require split if not AVX512VL, input is
4495         xmm16+ reg and output is a mem.
4497 2018-04-12  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
4499         * config/s390/s390.c (s390_output_indirect_thunk_function): Check
4500         also for flag_dwarf2_cfi_asm.
4502 2018-04-12  Jakub Jelinek  <jakub@redhat.com>
4504         PR rtl-optimization/85342
4505         * regcprop.c (copyprop_hardreg_forward_1): Remove replaced array, use
4506         a bool scalar var inside of the loop instead.  Don't try to update
4507         recog_data.operand after failed apply_change_group.
4509 2018-04-12  Tom de Vries  <tom@codesourcery.com>
4511         PR target/85296
4512         * config/nvptx/nvptx.c (flexible_array_member_type_p): New function.
4513         (nvptx_assemble_decl_begin): Add undefined param.  Declare undefined
4514         array with flexible array member as array without given dimension.
4515         (nvptx_assemble_undefined_decl): Set nvptx_assemble_decl_begin call
4516         argument for undefined param to true.
4518 2018-04-11  Aaron Sawdey  <acsawdey@linux.ibm.com>
4520         PR target/85321
4521         * doc/invoke.texi (RS/6000 and PowerPC Options): Document options
4522         -mcall- and -mtraceback=. Remove options -mabi=spe and -mabi=no-spe
4523         from PowerPC section.
4524         * config/rs6000/sysv4.opt (mcall-): Improve help text.
4525         * config/rs6000/rs6000.opt (mblock-compare-inline-limit=): Trim
4526         help text that is too long.
4527         * config/rs6000/rs6000.opt (mblock-compare-inline-loop-limit=): Trim
4528         help text that is too long.
4529         * config/rs6000/rs6000.opt (mstring-compare-inline-limit=): Trim
4530         help text that is too long.
4532 2018-04-11  Uros Bizjak  <ubizjak@gmail.com>
4534         * config/alpha/alpha.md (stack_probe_internal): Rename
4535         from "probe_stack".  Update all callers.
4537 2018-04-11  Alexander Monakov  <amonakov@ispras.ru>
4539         PR rtl-optimization/84566
4540         * sched-deps.c (sched_analyze_insn): Check deps->readonly when invoking
4541         sched_macro_fuse_insns.
4543 2018-04-11  Alexander Monakov  <amonakov@ispras.ru>
4545         PR target/84301
4546         * sched-rgn.c (add_branch_dependences): Move sel_sched_p check here...
4547         (compute_block_dependences): ... from here.
4549 2018-04-11  Jakub Jelinek  <jakub@redhat.com>
4551         PR tree-optimization/85331
4552         * vec-perm-indices.h (vec_perm_indices::clamp): Change input type
4553         from int to HOST_WIDE_INT.
4555 2018-04-11  Martin Jambor  <mjambor@suse.cz>
4557         PR ipa/84149
4558         * ipa-cp.c (propagate_vals_across_pass_through): Expand comment.
4559         (cgraph_edge_brings_value_p): New parameter dest_val, check if it is
4560         not the same as the source val.
4561         (cgraph_edge_brings_value_p): New parameter.
4562         (gather_edges_for_value): Pass destination value to
4563         cgraph_edge_brings_value_p.
4564         (perhaps_add_new_callers): Likewise.
4565         (get_info_about_necessary_edges): Likewise and exclude values brought
4566         only by self-recursive edges.
4567         (create_specialized_node): Redirect only clones of self-calling edges.
4568         (+self_recursive_pass_through_p): New function.
4569         (find_more_scalar_values_for_callers_subset): Use it.
4570         (find_aggregate_values_for_callers_subset): Likewise.
4571         (known_aggs_to_agg_replacement_list): Removed.
4572         (decide_whether_version_node): Re-calculate known constants for all
4573         remaining context clones.
4575 2018-04-11  Richard Biener  <rguenther@suse.de>
4577         PR lto/85339
4578         * dwarf2out.c (dwarf2out_finish): Remove DW_AT_stmt_list attribute
4579         from early DWARF output.
4580         (dwarf2out_early_finish): Output line info unconditionally into
4581         early DWARF and add reference to it.
4583 2018-04-11  Jakub Jelinek  <jakub@redhat.com>
4585         PR target/85281
4586         * config/i386/sse.md (iptr): Add V16SFmode and V8DFmode cases.
4587         (<avx512>_vec_dup<mode><mask_name>): Use a single pattern for modes
4588         other than V2DFmode using iptr mode attribute.
4589         (<avx512>_vec_dup<mode><mask_name>): Use iptr mode attribute.
4591 2018-04-11  Alexander Monakov  <amonakov@ispras.ru>
4593         PR rtl-optimization/84659
4594         * sel-sched-ir.c (sel_init_pipelining): Invoke cleanup_cfg.
4596 2018-04-11  Jakub Jelinek  <jakub@redhat.com>
4598         PR debug/85302
4599         * dwarf2out.c (skip_loc_list_entry): Don't call size_of_locs if
4600         SIZEP is NULL.
4601         (output_loc_list): Pass address of a dummy size variable even in the
4602         locview handling loop.
4603         (index_location_lists): Add comment on why skip_loc_list_entry can't
4604         call size_of_locs.
4606 2018-04-11  Thomas Preud'homme  <thomas.preudhomme@arm.com>
4608         PR target/85261
4609         * config/arm/arm-builtins.c (arm_expand_builtin): Force input operand
4610         into register.
4612 2018-04-10  Aaron Sawdey  <acsawdey@linux.ibm.com>
4614         PR target/85321
4615         * doc/invoke.texi (RS/6000 and PowerPC Options): Document options
4616         -mblock-compare-inline-limit, -mblock-compare-inline-loop-limit,
4617         and -mstring-compare-inline-limit.
4619 2018-04-10  Segher Boessenkool  <segher@kernel.crashing.org>
4621         PR target/85287
4622         * gcc/config/rs6000/rs6000.md (allocate_stack): Put the residual size
4623         for stack clash protection in a register whenever we need it to be in
4624         a register.
4626 2018-04-10  Segher Boessenkool  <segher@kernel.crashing.org>
4628         * common/config/rs6000/rs6000-common.c (rs6000_option_init_struct):
4629         Enable -fasynchronous-unwind-tables by default if OBJECT_FORMAT_ELF.
4631 2018-04-10  Segher Boessenkool  <segher@kernel.crashing.org>
4633         PR target/85321
4634         * config/rs6000/rs6000.opt (mtraceback=): Show the allowed values in
4635         the help text.
4636         (mlong-double-): Ditto.
4637         * config/rs6000/sysv4.opt (msdata=): Ditto.
4638         (mtls-size=): Ditto.
4640 2018-04-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
4642         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Remove
4643         erroneous entries for
4644         "vector int vec_ldl (int, long int *)", and
4645         "vector unsigned int vec_ldl (int, unsigned long int *)".
4646         Add comments and entries for
4647         "vector bool char vec_ldl (int, bool char *)",
4648         "vector bool short vec_ldl (int, bool short *)",
4649         "vector bool int vec_ldl (int, bool int *)",
4650         "vector bool long long vec_ldl (int, bool long long *)",
4651         "vector pixel vec_ldl (int, pixel *)",
4652         "vector long long vec_ldl (int, long long *)",
4653         "vector unsigned long long vec_ldl (int, unsigned long long *)".
4654         * config/rs6000/rs6000.c (rs6000_init_builtins): Initialize new
4655         type tree bool_long_long_type_node and correct definition of
4656         bool_V2DI_type_node to make reference to this new type tree.
4657         (rs6000_mangle_type): Replace erroneous reference to
4658         bool_long_type_node with bool_long_long_type_node.
4659         * config/rs6000/rs6000.h (enum rs6000_builtin_type_index): Add
4660         comments to emphasize sign distinctions for char and int types and
4661         replace RS6000_BTI_bool_long constant with
4662         RS6000_BTI_bool_long_long constant.  Also add comment to restrict
4663         use of RS6000_BTI_pixel.
4664         (bool_long_type_node): Remove this macro definition.
4665         (bool_long_long_type_node): New macro definition
4667 2018-04-10  Jakub Jelinek  <jakub@redhat.com>
4669         PR rtl-optimization/85300
4670         * combine.c (subst): Handle subst of CONST_SCALAR_INT_P new_rtx also
4671         into FLOAT and UNSIGNED_FLOAT like ZERO_EXTEND, return a CLOBBER if
4672         simplify_unary_operation fails.
4674 2018-04-10  Martin Liska  <mliska@suse.cz>
4676         * gdbhooks.py: Add pretty-printers for varpool_node, symtab_node,
4677         cgraph_edge and ipa_ref.
4679 2018-04-10  Jakub Jelinek  <jakub@redhat.com>
4681         PR target/85177
4682         PR target/85255
4683         * config/i386/sse.md
4684         (<extract_type>_vinsert<shuffletype><extract_suf>_mask): Fix
4685         computation of the VEC_MERGE selector from mask.
4686         (<extract_type>_vinsert<shuffletype><extract_suf>_1<mask_name>):
4687         Fix decoding of the VEC_MERGE selector into mask.
4689 2018-04-10  Richard Sandiford  <richard.sandiford@linaro.org>
4691         PR tree-optimization/85286
4692         * tree-vect-data-refs.c (vect_get_smallest_scalar_type):
4694 2018-04-10  Richard Sandiford  <richard.sandiford@linaro.org>
4696         * final.c (final_1): Set insn_last_address as well as
4697         insn_current_address.
4699 2018-04-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4701         PR target/85173
4702         * explow.c (emit_stack_probe): Call validize_mem on memory location
4703         before passing it to gen_probe_stack.  Create address operand and
4704         legitimize it for the probe_stack_address case.
4706 2018-04-09  Jan Hubicka  <jh@suse.cz>
4708         PR lto/85078
4709         * ipa-devirt.c (rebuild_type_inheritance-hash): New.
4710         * ipa-utils.h (rebuild_type_inheritance-hash): Declare.
4711         * tree.c (free_lang_data_in_type): Fix handling of binfos;
4712         walk basetypes.
4713         (free_lang_data): Rebuild type inheritance graph.
4715 2018-04-09  Martin Sebor  <msebor@redhat.com>
4717         * invoke.texi (-finline-small-functions): Mention other optimization
4718         options.
4719         (-findirect-inlining, -fpartial-inlining): Same.
4720         (-finline-functions-called-once): Same.
4721         (-freorder-blocks-and-partition): Same.
4723 2018-04-09  Jan Hubicka  <jh@suse.cz>
4725         PR rtl/84058
4726         * cfgcleanup.c (try_forward_edges): Do not give up on crossing
4727         jumps; choose last target that matches the criteria (i.e.
4728         no partition changes for non-crossing jumps).
4729         * cfgrtl.c (cfg_layout_redirect_edge_and_branch): Add basic
4730         support for redirecting crossing jumps to non-crossing.
4732 2018-04-09  Alexey Brodkin  <abrodkin@synopsys.com>
4734         * config/arc/arc.c (arc_expand_prologue): Set stack usage info
4735         also for naked functions.
4737 2018-04-09  Claudiu Zissulescu  <claziss@synopsys.com>
4739         * config/arc/arc.md (add_shift): New pattern.
4740         (add_shift2): Likewise.
4741         (sub_shift): Likewise.
4742         (sub_shift_cmp0_noout): Likewise.
4743         (compare_si_ashiftsi): Likewise.
4744         (xbfu_cmp0_noout): New combine pattern.
4745         (xbfu_cmp0"): Likewise.
4746         (movsi_set_cc_insn): Place the predicable variant first.
4747         (commutative_binary_cmp0_noout): Remove clobber.
4748         (commutative_binary_cmp0): New pattern.
4749         (noncommutative_binary_cmp0): Likewise.
4750         (noncommutative_binary_cmp0_noout): Likewise.
4751         (noncommutative_binary_comparison_result_used): Removed.
4752         (rsub_cmp0): New pattern.
4753         (rsub_cmp0_noout): Likewise.
4754         (extzvsi): Changed, keep only meaningful variants.
4755         (SQH, SEZ): New iterators.
4756         (SQH_postfix): New mode attribute.
4757         (SEZ_prefix): New code attribute.
4758         (<SEZ_prefix>xt<SQH_postfix>_cmp0_noout): New instruction pattern.
4759         (<SEZ_prefix>xt<SQH_postfix>_cmp0): Likewise.
4760         * config/arc/predicates.md (cc_set_register): Use CC_REG instead
4761         of numerical value.
4762         (noncommutative_operator): Check the availability of barrel
4763         shifter option.
4765 2018-04-09  Richard Biener  <rguenther@suse.de>
4767         PR tree-optimization/85284
4768         * tree-ssa-loop-niter.c (number_of_iterations_exit_assumptions):
4769         Only use the niter constraining form of simple_iv when the exit
4770         is always executed.
4772 2018-04-09  Tom de Vries  <tom@codesourcery.com>
4774         PR target/84041
4775         * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
4776         (define_expand "*memory_barrier"): New define_expand.
4777         (define_insn "memory_barrier"): New insn.
4779 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
4781         PR rtl-optimization/80463
4782         PR rtl-optimization/83972
4783         PR rtl-optimization/83480
4785         * sel-sched-ir.c (has_dependence_note_mem_dep): Take into account the
4786         correct producer for the insn.
4787         (tidy_control_flow): Fixup seqnos in case of debug insns.
4789 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
4791         PR rtl-optimization/83913
4793         * sel-sched-ir.c (merge_expr_data): Choose the middle between two
4794         different sched-times when merging exprs.
4796 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
4798         PR rtl-optimization/83962
4800         * sel-sched-ir.c (tidy_control_flow): Correct the order in which we call
4801         tidy_fallthru_edge and tidy_control_flow.
4803 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
4805         PR rtl-optimization/83530
4807         * sel-sched.c (force_next_insn): New global variable.
4808         (remove_insn_for_debug): When force_next_insn is true, also leave only
4809         next insn in the ready list.
4810         (sel_sched_region): When the region wasn't scheduled, make another pass
4811         over it with force_next_insn set to 1.
4813 2018-04-08  Monk Chiang  <sh.chiang04@gmail.com>
4815         * config.gcc (nds32le-*-*, nds32be-*-*): Add nds32/nds32_intrinsic.h
4816         into tm_file.
4817         * config/nds32/constants.md (unspec_volatile_element): Add enum values
4818         for interrupt control.
4819         * config/nds32/nds32-intrinsic.c: Implementation of intrinsic
4820         functions for interrupt control.
4821         * config/nds32/nds32-intrinsic.md: Likewise.
4822         * config/nds32/nds32_intrinsic.h: Likewise.
4823         * config/nds32/nds32.h (nds32_builtins): Likewise.
4825 2018-04-08  Chung-Ju Wu  <jasonwucj@gmail.com>
4827         * config/nds32/nds32.c (nds32_init_machine_status,
4828         nds32_legitimate_index_p, nds32_legitimate_address_p): Consider
4829         strict_aligned_p field.
4830         (nds32_expand_to_rtl_hook): New function.
4831         (TARGET_EXPAND_TO_RTL_HOOK): Define.
4832         * config/nds32/nds32.h (machine_function): Add strict_aligned_p field.
4834 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
4835             Chung-Ju Wu  <jasonwucj@gmail.com>
4837         * config.gcc (nds32*-*-*): Check that n7 is valid to --with-cpu.
4838         * config/nds32/nds32-n7.md: New file.
4839         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N7.
4840         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n7
4841         pipeline.
4842         * config/nds32/nds32-protos.h: More declarations for n7 pipeline.
4843         * config/nds32/nds32.md (pipeline_model): Add n7.
4844         * config/nds32/nds32.opt (mcpu): Support n7 pipeline cpus.
4845         * config/nds32/pipelines.md: Include n7 settings.
4847 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
4848             Chung-Ju Wu  <jasonwucj@gmail.com>
4850         * config.gcc (nds32*-*-*): Check that e8 is valid to --with-cpu.
4851         * config/nds32/nds32-e8.md: New file.
4852         * config/nds32/nds32-opts.h (nds32-cpu_type): Add CPU_E8.
4853         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for e8
4854         pipeline.
4855         * config/nds32/nds32-protos.h: More declarations for e8 pipeline.
4856         * config/nds32/nds32.md (pipeline_model): Add e8.
4857         * config/nds32/nds32.opt (mcpu): Support e8 pipeline cpus.
4858         * config/nds32/pipelines.md: Include e8 settings.
4860 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
4861             Chung-Ju Wu  <jasonwucj@gmail.com>
4863         * config.gcc (nds32*-*-*): Check that n6/n8/s8 are valid to --with-cpu.
4864         * config/nds32/nds32-n8.md: New file.
4865         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N6 and CPU_N8.
4866         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n8
4867         pipeline.
4868         * config/nds32/nds32-protos.h: More declarations for n8 pipeline.
4869         * config/nds32/nds32-utils.c: More implementations for n8 pipeline.
4870         * config/nds32/nds32.md (pipeline_model): Add n8.
4871         * config/nds32/nds32.opt (mcpu): Support n8 pipeline cpus.
4872         * config/nds32/pipelines.md: Include n8 settings.
4874 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
4875             Chung-Ju Wu  <jasonwucj@gmail.com>
4877         * config.gcc (nds32*): Add nds32-utils.o into extra_objs.
4878         * config/nds32/nds32-n9-2r1w.md: New file.
4879         * config/nds32/nds32-n9-3r2w.md: New file.
4880         * config/nds32/nds32-opts.h (nds32_cpu_type, nds32_mul_type,
4881         nds32_register_ports): New or modify for cpu n9.
4882         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n9
4883         pipeline.
4884         * config/nds32/nds32-protos.h: More declarations for n9 pipeline.
4885         * config/nds32/nds32-utils.c: New file.
4886         * config/nds32/nds32.h (TARGET_PIPELINE_N9, TARGET_PIPELINE_SIMPLE,
4887         TARGET_MUL_SLOW): Define.
4888         * config/nds32/nds32.md (pipeline_model): New attribute.
4889         * config/nds32/nds32.opt (mcpu, mconfig-mul, mconfig-register-ports):
4890         New options that support cpu n9.
4891         * config/nds32/pipelines.md: Include n9 settings.
4892         * config/nds32/t-nds32 (nds32-utils.o): Add dependency.
4894 2018-04-08  Chung-Ju Wu  <jasonwucj@gmail.com>
4896         * config/nds32/nds32-md-auxiliary.c (output_cond_branch): Output align
4897         information if necessary.
4898         (output_cond_branch_compare_zero): Likewise.
4899         * config/nds32/nds32.c (nds32_adjust_insn_length): Consider align case.
4900         (nds32_target_alignment): Refine for alignment.
4901         * config/nds32/nds32.h (NDS32_ALIGN_P): Define.
4902         (FUNCTION_BOUNDARY): Modify.
4903         * config/nds32/nds32.md (call_internal, call_value_internal): Consider
4904         align case.
4905         * config/nds32/nds32.opt (malways-align, malign-functions): New.
4907 2018-04-08  Monk Chiang  <sh.chiang04@gmail.com>
4909         * config/nds32/constants.md (unspec_volatile_element): Add values for
4910         TLB operation and data prefetch.
4911         * config/nds32/nds32-intrinsic.c: Implementation of intrinsic
4912         functions for TLB operation and data prefetch.
4913         * config/nds32/nds32-intrinsic.md: Likewise.
4914         * config/nds32/nds32_intrinsic.h: Likewise.
4915         * config/nds32/nds32.c (nds32_dpref_names): Likewise.
4916         (nds32_print_operand): Likewise.
4917         * config/nds32/nds32.h (nds32_builtins): Likewise.
4919 2018-04-07  Thomas Koenig  <tkoenig@gcc.gnu.org>
4920         Andrew Pinski <pinsika@gcc.gnu.org>
4922         PR middle-end/82976
4923         * match.pd: Use constant_boolean_node of correct type instead of
4924         boolean_true_node or boolean_false_node for simplifying
4925         pointer comparisons to zero.
4927 2018-04-07  Jakub Jelinek  <jakub@redhat.com>
4929         PR tree-optimization/80021
4930         * tree.c (verify_type_variant): Make error call in verify_variant_match
4931         translatable and remove final full stop.
4933 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
4935         * config/nds32/constants.md (unspec_volatile_element): Add
4936         UNSPEC_VOLATILE_EH_RETURN.
4937         * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push,
4938         nds32_output_stack_pop): Support dwarf exception handling process.
4939         * config/nds32/nds32-protos.h (nds32_dynamic_chain_address): Declare.
4940         * config/nds32/nds32.c (nds32_init_machine_status): Support dwarf
4941         exception handling process.
4942         (nds32_compute_stack_frame): Likewise.
4943         (nds32_return_addr_rtx): Likewise.
4944         (nds32_initial_elimination_offset): Likewise.
4945         (nds32_expand_prologue): Likewise.
4946         (nds32_expand_epilogue): Likewise.
4947         (nds32_dynamic_chain_address): New function.
4948         * config/nds32/nds32.h (machine_function): Add fields for dwarf
4949         exception handling.
4950         (DYNAMIC_CHAIN_ADDRESS): Define.
4951         (EH_RETURN_DATA_REGNO): Define.
4952         (EH_RETURN_STACKADJ_RTX): Define.
4953         * config/nds32/nds32.md (eh_return, nds32_eh_return): Implement
4954         patterns for dwarf exception handling.
4956 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
4958         * config/nds32/nds32.h: Clean up obsolete macros.
4960 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
4962         * config/nds32/constants.md (unspec_element, unspec_volatile_element):
4963         Add enum values for particular instructions.
4964         * config/nds32/nds32-intrinsic.c: Implementation of expanding
4965         particular intrinsic functions.
4966         * config/nds32/nds32-intrinsic.md: Likewise.
4967         * config/nds32/nds32_intrinsic.h: Likewise.
4968         * config/nds32/nds32.h (nds32_builtins): Likewise.
4969         * config/nds32/nds32.md (type): Add pbsad and pbsada.
4970         (btst, ave): New patterns for particular instructions.
4972 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
4974         * config/nds32/constants.md (unspec_element, unspec_volatile_element):
4975         Add enum values for atomic load/store and memory sync.
4976         * config/nds32/nds32-intrinsic.c: Implementation for atomic load/store
4977         and memory sync.
4978         * config/nds32/nds32-intrinsic.md: Likewise.
4979         * config/nds32/nds32_intrinsic.h: Likewise.
4980         * config/nds32/nds32.h (nds32_builtins): Likewise.
4982 2018-04-07  Jakub Jelinek  <jakub@redhat.com>
4984         PR tree-optimization/85257
4985         * fold-const.c (native_encode_vector): If not all elts could fit
4986         and off is -1, return 0 rather than offset.
4987         * tree-ssa-sccvn.c (vn_reference_lookup_3): Pass
4988         (offseti - offset2) / BITS_PER_UNIT as 4th argument to
4989         native_encode_expr.  Verify len * BITS_PER_UNIT >= maxsizei.  Don't
4990         adjust buffer in native_interpret_expr call.
4992 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
4994         * config/nds32/constants.md (unspec_volatile_element): Add cache
4995         control enum values.
4996         * config/nds32/nds32-intrinsic.c: Add cache control expand functions.
4997         * config/nds32/nds32-intrinsic.md: Add cache control patterns.
4998         * config/nds32/nds32.c (nds32_cctl_names): New.
4999         (nds32_print_operand): Handle cache control register names.
5000         * config/nds32/nds32.h (nds32_builtins): New enum values.
5001         * config/nds32/nds32_intrinsic.h: Add cache control enum types and
5002         macros.
5003         * config/nds32/nds32.md (type): Add mmu.
5004         * config/nds32/pipelines.md (simple_insn): Add mmu.
5006 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
5008         * config/nds32/nds32.md (type): Remove call.
5009         * config/nds32/pipelines.md (simple_insn): Likewise.
5011 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
5013         * config/nds32/constants.md (unspec_volatile_element): Add
5014         UNSPEC_VOLATILE_FMFCSR, UNSPEC_VOLATILE_FMTCSR and
5015         UNSPEC_VOLATILE_FMFCFG.
5016         * config/nds32/nds32-intrinsic.c (bdesc_noarg): New builtin
5017         description for fmfcfg and fmfcsr.
5018         (bdesc_1arg): Add fmtcsr.
5019         (bdesc_2arg): Add fcpynss, fcpyss, fcpynsd and fcpysd.
5020         (nds32_expand_builtin_impl): Deal with FPU intrinsic functions.
5021         * config/nds32/nds32-intrinsic.md (unspec_fcpynsd, unspec_fcpysd,
5022         unspec_fcpynss, unspec_fcpysd, unspec_fcpyss, unspec_fmfcsr,
5023         unspec_fmfcfg): New patterns.
5024         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FMFCFG,
5025         NDS32_BUILTIN_FMFCSR, NDS32_BUILTIN_FMTCSR, NDS32_BUILTIN_FCPYNSS,
5026         NDS32_BUILTIN_FCPYSS,NDS32_BUILTIN_FCPYNSD and NDS32_BUILTIN_FCPYSD.
5027         * config/nds32/nds32_intrinsic.h (__nds32__fcpynsd, __nds32__fcpynss,
5028         __nds32__fcpysd, __nds32__fcpyss, __nds32__fmfcsr, __nds32__fmtcsr,
5029         __nds32__fmfcfg): Define.
5031 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
5033         * config/nds32/nds32.c (nds32_intrinsic_register_names): Add more
5034         intrinsic register names.
5035         * config/nds32/nds32_intrinsic.h (nds32_intrinsic_registers): Add more
5036         intrinsic register enum values and macros.
5038 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
5040         * config/nds32/nds32.c (nds32_legitimate_index_p): Modify condition
5041         for load/store addressing form.
5042         (nds32_print_operand_address): Likewise.
5044 2018-04-06  Eric Botcazou  <ebotcazou@adacore.com>
5046         PR target/85196
5047         * config/sparc/sparc.c (sparc_expand_move): Deal with symbolic operands
5048         based on LABEL_REF.  Remove useless assertion.
5049         (pic_address_needs_scratch): Fix formatting.
5050         (sparc_legitimize_pic_address): Minor tweaks.
5051         (sparc_delegitimize_address): Adjust assertion accordingly.
5052         * config/sparc/sparc.md (movsi_pic_label_ref): Change label_ref_operand
5053         into symbolic_operand.
5054         (movsi_high_pic_label_ref): Likewise.
5055         (movsi_lo_sum_pic_label_ref): Likewise.
5056         (movdi_pic_label_ref): Likewise.
5057         (movdi_high_pic_label_ref): Likewise.
5058         (movdi_lo_sum_pic_label_ref): Likewise.
5060 2018-04-06  Amaan Cheval  <amaan.cheval@gmail.com>
5062         * config.gcc (x86_64-*-rtems*): Add rtems.h to tm_file for
5063         custom LIB_SPEC setup.
5065 2018-04-06  Ruslan Bukin  <br@bsdpad.com>
5066             Kito Cheng  <kito.cheng@gmail.com>
5068         * config.gcc (riscv*-*-freebsd*): Add RISC-V FreeBSD support.
5069         * config/riscv/freebsd.h: New.
5071 2018-04-06  Chung-Ju Wu  <jasonwucj@gmail.com>
5073         * config/nds32/nds32.c (nds32_adjust_insn_length): Refine.
5074         * config/nds32/nds32.h (ADJUST_INSN_LENGTH): Change the location in
5075         file.
5077 2018-04-06  Chung-Ju Wu  <jasonwucj@gmail.com>
5078             Kito Cheng  <kito.cheng@gmail.com>
5080         * config/nds32/nds32-md-auxiliary.c (nds32_output_return,
5081         nds32_output_call, nds32_symbol_binds_local_p): New functions.
5082         * config/nds32/nds32-protos.h (nds32_output_call,
5083         nds32_output_return): Declare.
5084         * config/nds32/nds32.md: Refine all the call and return patterns.
5086 2018-04-06  Jakub Jelinek  <jakub@redhat.com>
5088         PR debug/85252
5089         * dwarf2out.c (rtl_for_decl_init): For STRING_CST initializer only
5090         build CONST_STRING if TYPE_MAX_VALUE is non-NULL and is INTEGER_CST.
5092         PR rtl-optimization/84872
5093         * cfgloopmanip.c (create_preheader): Use make_forwarder_block even if
5094         nentry == 1 when CP_FALLTHRU_PREHEADERS and single_entry is
5095         EDGE_CROSSING edge.
5097 2018-04-06  Tamar Christina  <tamar.christina@arm.com>
5099         * expr.c (copy_blkmode_to_reg): Revert 254862.
5100         * doc/sourcebuild.texi (word_mode_no_slow_unalign): Likewise.
5102 2018-04-06  Richard Biener  <rguenther@suse.de>
5104         PR middle-end/85244
5105         * tree-dfa.c (get_ref_base_and_extent): Reset seen_variable_array_ref
5106         after seeing a component reference with an adjacent field.  Treat
5107         refs to arrays at struct end of external decls similar to
5108         refs to unconstrained commons.
5110 2018-04-06  Jakub Jelinek  <jakub@redhat.com>
5112         PR sanitizer/85213
5113         * fold-const.c (twoval_comparison_p): Remove SAVE_P argument and don't
5114         look through SAVE_EXPRs with non-side-effects argument.  Adjust
5115         recursive calls.
5116         (fold_comparison): Adjust twoval_comparison_p caller, don't handle
5117         save_p here.
5119 2018-04-06  Richard Biener  <rguenther@suse.de>
5121         PR middle-end/85180
5122         * alias.c (find_base_term): New wrapper around find_base_term
5123         unwinding CSELIB_VAL_PTR changes.
5124         (find_base_term): Do not restore CSELIB_VAL_PTR during the
5125         recursion.
5127 2018-04-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
5129         * config/s390/s390.c (s390_z10_optimize_cmp): Expand dedicated NOP
5130         instructions.
5131         * config/s390/s390.md (UNSPECV_NOP_LR_0, UNSPECV_NOP_LR_1): New
5132         constant definitions.
5133         ("nop"): lr 0,0 -> nopr r0
5134         ("nop_lr0", "nop_lr1"): New insn definitions.
5136 2018-04-06  Chung-Ju Wu  <jasonwucj@gmail.com>
5138         * config/nds32/nds32.md (*stack_push, *stack_pop): Use
5139         NDS32_V3PUSH_AVAILABLE_P macro.
5141 2018-04-06  Monk Chiang  <sh.chiang04@gmail.com>
5142             Chung-Ju Wu  <jasonwucj@gmail.com>
5144         * config.gcc (nds32*-*-*): Add v2j v3f v3s checking.
5145         (nds32*-*-*): Add float and fpu_config into supported_defaults.
5146         * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS):
5147         Include TARGET_DEFAULT_FPU_ISA and TARGET_DEFAULT_FPU_FMA.
5148         * config/nds32/constants.md (unspec_element): Add UNSPEC_COPYSIGN,
5149         UNSPEC_FCPYNSD, UNSPEC_FCPYNSS, UNSPEC_FCPYSD and UNSPEC_FCPYSS.
5150         * config/nds32/constraints.md: New constraints and checking for hard
5151         float configuration.
5152         * config/nds32/iterators.md: New mode iterator and attribute for hard
5153         float configuration.
5154         * config/nds32/nds32-doubleword.md: Use hard float alternatives and
5155         patterns.
5156         * config/nds32/nds32-fpu.md: New file.
5157         * config/nds32/nds32-md-auxiliary.c: New functions and checkings to
5158         deal with hard float code generation.
5159         * config/nds32/nds32-opts.h (nds32_arch_type): Add ARCH_V3F and
5160         ARCH_V3S.
5161         (abi_type, float_reg_number): New enum type.
5162         * config/nds32/nds32-predicates.c: New predicates for hard float.
5163         * config/nds32/nds32-protos.h: Declare functions for hard float.
5164         * config/nds32/nds32.c: Implementation for hard float configuration.
5165         * config/nds32/nds32.h: Definitions for hard float configuration.
5166         * config/nds32/nds32.md: Include hard float machine description and
5167         modify patterns for hard float configuration.
5168         * config/nds32/nds32.opt: New options for hard float configuration.
5169         * config/nds32/predicates.md: New predicates for hard float
5170         configuration.
5172 2018-04-06  Kuan-Lin Chen  <kuanlinchentw@gmail.com>
5174         * common/config/nds32/nds32-common.c
5175         (nds32_option_optimization_table): Enable -mreleax-hint by default.
5177 2018-04-05  Jakub Jelinek  <jakub@redhat.com>
5179         PR middle-end/85195
5180         * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Use view_convert around
5181         CONSTRUCTOR_ELT (ctor, ...)->value.
5183 2018-04-05  Uros Bizjak  <ubizjak@gmail.com>
5185         PR target/85193
5186         * config/i386/i386.md (define_attr "memory"): Handle rotate1 type.
5188 2018-04-05  Tom de Vries  <tom@codesourcery.com>
5190         PR target/85204
5191         * config/nvptx/nvptx.c (nvptx_single): Fix neutering of bb with only
5192         cond jump.
5194 2018-04-05  Shiva Chen  <shiva0217@gmail.com>
5195             Kito Cheng  <kito.cheng@gmail.com>
5197         * config/nds32/constraints.md (U33): Fine-tune checking condition.
5198         * config/nds32/nds32-md-auxiliary.c (nds32_mem_format): Ditto.
5199         * config/nds32/nds32.h (nds32_16bit_address_type): Add
5200         ADDRESS_POST_MODIFY_LO_REG_IMM3U.
5202 2018-04-05  Shiva Chen  <shiva0217@gmail.com>
5203             Kito Cheng  <kito.cheng@gmail.com>
5205         * config/nds32/constraints.md (Ufe): New memory constraint.
5206         * config/nds32/nds32-md-auxiliary.c (nds32_mem_format,
5207         nds32_output_16bit_load): Consider r8 register for lwi45.fe format.
5208         * config/nds32/nds32.c (nds32_print_operand): Output lwi45.fe
5209         operands.
5210         * config/nds32/nds32.h (nds32_16bit_address_type): Add ADDRESS_R8_IMM7U.
5211         * config/nds32/nds32.md (*mov<mode>): Adjust pattern.
5213 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
5215         * config/nds32/nds32.md: Use optimize_size in the condition for
5216         alu-shift instructions.
5218 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
5220         * config/nds32/nds32.md (divsi4, udivsi4): New patterns.
5222 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
5224         * config/nds32/nds32.md (negsi2): Refine pattern.
5226 2018-04-05  Kito Cheng  <kito.cheng@gmail.com>
5227             Chung-Ju Wu  <jasonwucj@gmail.com>
5229         * config/nds32/iterators.md (shift_rotate): New code iterator.
5230         (shift): New code attribute.
5231         * config/nds32/nds32-md-auxiliary.c (nds32_expand_constant): New.
5232         * config/nds32/nds32-protos.h (nds32_expand_constant): Declare.
5233         * config/nds32/nds32.c (nds32_print_operand): Deal with more cases.
5234         * config/nds32/nds32.md (addsi3, *add_srli): Refine implementation for
5235         bit-wise operations.
5236         (andsi3, *andsi3): Ditto.
5237         (iorsi3, *iorsi3, *or_slli, *or_srli): Ditto.
5238         (xorsi3, *xorsi3, *xor_slli, *xor_srli): Ditto.
5239         (<shift>si3, *ashlsi3, *ashrsi3, *lshrsi3, *rotrsi3): Ditto.
5240         * config/nds32/predicates.md (nds32_rimm5u_operand, nds32_and_operand,
5241         nds32_ior_operand, nds32_xor_operand): New predicates.
5243 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
5245         * config/nds32/nds32.md (add<mode>3, sub<mode>3): Rename to ...
5246         (addsi3, subsi3): ... this.
5248 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
5250         * config/nds32/nds32.md (*sub_srli, *and_slli): Fine-tune predicator.
5252 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
5254         * config/nds32/nds32.md: Adjust indention.
5256 2018-04-05  Kito Cheng  <kito.cheng@gmail.com>
5258         * config/nds32/nds32.md (feature): New attribute.
5260 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
5262         * config/nds32/nds32.md (subtype): New attribute.
5264 2018-04-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>
5266         PR target/85203
5267         * config/arm/arm-builtins.c (arm_expand_builtin): Change
5268         expansion to perform a bitwise AND of the argument followed by a
5269         boolean negation of the result.
5271 2018-04-04  Peter Bergner  <bergner@vnet.ibm.com>
5273         PR rtl-optimization/84878
5274         * ddg.c (add_cross_iteration_register_deps): Use DF_REF_BB to determine
5275         the basic block.  Assert the use reference is not artificial and that
5276         it has an associated insn.
5278 2018-04-04  Michael Matz  <matz@suse.de>
5280         * builtins.c (compute_objsize): Pass correct operand
5281         to array_at_struct_end_p.
5283 2018-04-04  Richard Biener  <rguenther@suse.de>
5285         PR lto/85176
5286         * dwarf2out.c (dwarf2out_register_external_die): Peel namespaces
5287         from contexts for DINFO_LEVEL_TERSE and below.
5289 2018-04-04  Kito Cheng  <kito.cheng@gmail.com>
5291         * config/nds32/nds32-doubleword.md (move_<mode>): Require
5292         resiter_operand condition.
5293         * config/nds32/nds32.md (*move<mode>): Ditto.
5295 2018-04-04  Kito Cheng  <kito.cheng@gmail.com>
5296             Monk Chiang  <sh.chiang04@gmail.com>
5298         * config/nds32/nds32.md (movmisalign<mode>): New pattern.
5300 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
5302         * config/nds32/nds32.md (movqi, movhi): Merge into mov<mode>.
5304 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
5305             Kito Cheng  <kito.cheng@gmail.com>
5307         * config/nds32/nds32-md-auxiliary.c (nds32_inverse_cond_code,
5308         nds32_cond_code_str, output_cond_branch,
5309         output_cond_branch_compare_zero, nds32_expand_cbranch,
5310         nds32_expand_cstore, nds32_expand_movcc,
5311         nds32_output_cbranchsi4_equality_zero,
5312         nds32_output_cbranchsi4_equality_reg,
5313         nds32_output_cbranchsi4_equality_reg_or_const_int,
5314         nds32_output_cbranchsi4_greater_less_zero: New functions.
5315         * config/nds32/nds32-protos.h (nds32_expand_cbranch,
5316         nds32_expand_cstore, nds32_expand_movcc,
5317         nds32_output_cbranchsi4_equality_zero,
5318         nds32_output_cbranchsi4_equality_reg,
5319         nds32_output_cbranchsi4_equality_reg_or_const_int,
5320         nds32_output_cbranchsi4_greater_less_zero): Declare.
5321         * config/nds32/predicates.md (nds32_movecc_comparison_operator,
5322         nds32_rimm11s_operand): New predicates.
5323         * config/nds32/nds32.h (nds32_expand_result_type): New enum type.
5324         * config/nds32/nds32.md: Rewrite all the branch and conditional move
5325         patterns.
5327 2018-04-04  Kito Cheng  <kito.cheng@gmail.com>
5329         * config/nds32/nds32-doubleword.md: Refine all the instruction type.
5330         * config/nds32/nds32.md: Ditto.
5331         * config/nds32/pipelines.md: Ditto.
5333 2018-04-04  Richard Biener  <rguenther@suse.de>
5335         PR tree-optimization/85168
5336         * tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address): Avoid
5337         propagating abnormals.
5339 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
5341         * config/nds32/nds32.md (enabled): Use yes/no for this attribute.
5343 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
5344             Kito Cheng  <kito.cheng@gmail.com>
5346         * config/nds32/nds32-md-auxiliary.c (nds32_long_call_p): New function.
5347         * config/nds32/nds32-protos.h (nds32_long_call_p): Declare.
5348         * config/nds32/nds32.c (nds32_function_ok_for_sibcall): New function.
5349         (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
5350         * config/nds32/nds32.md (sibcall_internal): New.
5351         (sibcall_register): Remove.
5352         (sibcall_immediate): Remove.
5353         (sibcall_value_internal): New.
5354         (sibcall_value_register): Remove.
5355         (sibcall_value_immediate): Remove.
5356         * config/nds32/predicates.md (nds32_general_register_operand): New.
5357         (nds32_call_address_operand): New.
5359 2018-04-03  Jakub Jelinek  <jakub@redhat.com>
5361         PR rtl-optimization/85167
5362         * shrink-wrap.c (move_insn_for_shrink_wrap): Don't set bb_uses and
5363         bb_defs if *split_p, instead preinitialize it to NULL.
5365         PR tree-optimization/85156
5366         * builtins.c (fold_builtin_expect): Use save_expr on arg1 to avoid
5367         evaluating the argument multiple times.
5369 2018-04-03  Bill Schmidt  <wschmidt@linux.ibm.com>
5371         * config/rs6000/emmintrin.h (_mm_cvtpd_epi32): Use __vector rather
5372         than vector.
5373         (_mm_cvtpd_ps): Likewise.
5374         (_mm_cvttpd_epi32): Likewise.
5375         * config/rs6000/mmintrin.h (_mm_unpacklo_pi8): Likewise.
5376         * config/rs6000/xmmintrin.h: For strict-ANSI C++ or C11, undefine
5377         vector, pixel, and bool following altivec.h include.
5379 2018-04-03  Martin Sebor  <msebor@redhat.com>
5381         * doc/extend.texi (Common Function Attributes): Clarify.
5382         (const attribute): Likewise.
5383         (pure attribute): Likewise.
5385 2018-04-03  Jakub Jelinek  <jakub@redhat.com>
5387         PR target/85169
5388         * config/i386/i386.c (ix86_expand_vector_set): Use
5389         HOST_WIDE_INT_1U << elt instead of 1 << elt.  Formatting fix.
5391 2018-04-03  Uros Bizjak  <ubizjak@gmail.com>
5393         * config/i386/i386.c (emit_i387_cw_initialization): Always use logic
5394         instructions when changing rounding bits to preserve precision bits
5395         in the x87 control word.
5397 2018-04-03  Martin Liska  <mliska@suse.cz>
5399         PR tree-optimization/82491
5400         * rtl.h (strip_offset_and_add): Replace += suboffset with
5401         poly_uint64 () + suboffset.
5403 2018-03-29  Martin Liska  <mliska@suse.cz>
5404             Martin Jambor  <mjambor@suse.cz>
5406         PR ipa/84947
5407         * ipa-cp.c (propagate_bits_across_jump_function): Bail out if
5408         param_type is not an integral or pointer type.
5410 2018-04-03  Richard Biener  <rguenther@suse.de>
5412         * sese.h (recompute_all_dominators): Remove.
5414 2018-04-02  Martin Sebor  <msebor@redhat.com>
5416         * doc/invoke.texi (-Wrestrict): Fix typos.
5418 2018-04-02  Jim Wilson  <jimw@sifive.com>
5420         * config/riscv/riscv.h (SHIFT_COUNT_TRUNCATED): Set to zero.
5421         * config/riscv/riscv.md (<optab>si3): Use QImode shift count.
5422         (<optab>di3, <optab>si3_extend): Likewise.
5423         (<optab>si3_mask, <optab>si3_mask_1): New.
5424         (<optab>di3_mask, <optab>di3_mask_1): New.
5425         (<optab>si3_extend_mask, <optab>si3_extend_mask_1): New.
5426         (lshrsi3_zero_extend_1): Use VOIDmode shift count.
5427         * config/riscv/sync.md (atomic_test_and_set): Emit QImode shift count.
5429 2018-04-02  Gerald Pfeifer  <gerald@pfeifer.com>
5431         * doc/cpp.texi (Variadic Macros): Fix line continuation in an
5432         example.
5434 2018-04-02  Chung-Ju Wu  <jasonwucj@gmail.com>
5436         * config/nds32/nds32.c (TARGET_CANONICALIZE_COMPARISON): Define.
5437         (nds32_canonicalize_comparison): New function.
5439 2018-04-01  Chung-Ju Wu  <jasonwucj@gmail.com>
5440             Kito Cheng  <kito.cheng@gmail.com>
5441             Kuan-Lin Chen  <kuanlinchentw@gmail.com>
5443         * config.gcc (nds32): Add nds32-relax-opt.o into extra_objs.
5444         * config/nds32/constants.md (unspec_volatile_element): Add
5445         UNSPEC_VOLATILE_RELAX_GROUP.
5446         * config/nds32/nds32-relax-opt.c: New file.
5447         * config/nds32/nds32-predicates.c
5448         (nds32_symbol_load_store_p): New function.
5449         * config/nds32/nds32-protos.h
5450         (nds32_symbol_load_store_p): Declare function.
5451         (make_pass_nds32_relax_opt): Declare new rtl pass function.
5452         * config/nds32/nds32.c
5453         (nds32_register_pass): New function to register pass.
5454         (nds32_register_passes): New function to register passes.
5455         * config/nds32/nds32.md (relax_group): New pattern.
5456         * config/nds32/nds32.opt (mrelax-hint): New option.
5457         * config/nds32/t-nds32 (nds32-relax-opt.o): New dependency.
5459 2018-04-01  Kito Cheng  <kito.cheng@gmail.com>
5461         * config/nds32/t-nds32: Modify files dependency.
5463 2018-04-01  Chung-Ju Wu  <jasonwucj@gmail.com>
5465         * config/nds32/nds32.h (FUNCTION_PROFILER): Output newline character.
5466         (PROFILE_HOOK): Define its implementation.
5468 2018-04-01  Chung-Ju Wu  <jasonwucj@gmail.com>
5470         * config/nds32/nds32.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Use unsigned int
5471         type and 32-bit size.
5473 2018-04-01  Jakub Jelinek  <jakub@redhat.com>
5475         PR middle-end/85090
5476         * config/i386/sse.md (V): Add V64QI and V32HI for TARGET_AVX512F.
5477         (V_128_256): New mode iterator.
5478         (*avx512dq_vextract<shuffletype>64x2_1 splitter): New define_split.
5479         (*avx512f_vextract<shuffletype>32x4_1 splitter): Likewise.
5480         (xop_pcmov_<mode><avxsizesuffix>): Use V_128_256 mode iterator instead
5481         of V.
5482         * config/i386/i386.c (ix86_expand_vector_set): Improve V32HImode and
5483         V64QImode expansion for !TARGET_AVX512BW && TARGET_AVX512F.
5485 2018-03-31  Segher Boessenkool  <segher@kernel.crashing.org>
5487         PR target/83315
5488         * config/rs6000/xmmintrin.h (_mm_set_ps, _mm_max_ps): Handle (quiet)
5489         NaN inputs correctly.
5491 2018-03-30  Peter Bergner  <bergner@vnet.ibm.com>
5493         PR target/80546
5494         * config/rs6000/vsx.md (??r): New mode attribute.
5495         (*vsx_mov<mode>_64bit): Use it.
5496         (*vsx_mov<mode>_32bit): Likewise.
5498 2018-03-30  Martin Sebor  <msebor@redhat.com>
5500         PR tree-optimization/84818
5501         * builtins.c (check_access): Use warning_n.
5503 2018-03-30  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
5505         PR target/83822
5506         * config/rs6000/rs6000-string.c (expand_compare_loop): Fix redundant
5507         condition.
5508         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Fix redundant
5509         condition.
5511 2018-03-30  Julia Koval  <julia.koval@intel.com>
5513         PR target/84413
5514         * x86-tune.def (movx, partial_reg_dependency): Enable for
5515         m_SKYLAKE_AVX512.
5517 2018-03-29  Vladimir Makarov  <vmakarov@redhat.com>
5519         PR inline-asm/84985
5520         * lra-constraints.c (process_alt_operands): Move setting
5521         this_alternative_matches below.
5523 2018-03-29  Martin Liska  <mliska@suse.cz>
5525         PR lto/84995.
5526         * doc/invoke.texi: Document how LTO works with debug info.
5527         Describe auto-load support of binutils.  Mention 'x86-64'
5528         as valid option value of -march option.
5530 2018-03-29  Jakub Jelinek  <jakub@redhat.com>
5532         * config/i386/sse.md (<avx512>_blendm<mode>): Use <sseintprefix>.
5534         PR c/85094
5535         * fold-const.c (operand_equal_p): Handle DEBUG_BEGIN_STMT.
5536         For STATEMENT_LIST, pass down OEP_LEXICOGRAPHIC and maybe
5537         OEP_NO_HASH_CHECK for recursive call, to avoid exponential
5538         checking.
5540 2018-03-28  Peter Bergner  <bergner@vnet.ibm.com>
5542         PR target/84912
5543         * config/rs6000/rs6000.h (RS6000_BTM_POWERPC64): New define.
5544         (RS6000_BTM_COMMON): Add RS6000_BTM_POWERPC64.
5545         * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add support
5546         for RS6000_BTM_POWERPC64.
5547         (rs6000_invalid_builtin): Add handling for RS6000_BTM_POWERPC64
5548         (rs6000_builtin_mask_names): Add RS6000_BTM_POWERPC64.
5549         * config/rs6000/rs6000-builtin.def (BU_P7_POWERPC64_MISC_2): New macro
5550         definition.
5551         (DIVDE): Use it.
5552         (DIVDEU): Likewise.
5554 2018-03-28 Carl Love  <cel@us.ibm.com>
5556         Revert
5557         2017-09-27  Carl Love  <cel@us.ibm.com>
5559         * config/rs6000/rs6000-builtin.def (BU_FP_1MISC_1): Add define macro.
5560         (FCTID, FCTIW): Add BU_FP_MISC_1 macro expansion for builtins.
5561         * config/rs6000/rs6000.md (lrintsfsi2): Add define_insn for the
5562         fctiw instruction.
5564 2018-03-28  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
5566         * config/rs6000/xmmintrin.h (_mm_max_pi16): Use __vector __bool
5567         instead of __vector bool.
5568         (_mm_max_pu8): Likewise.
5569         (_mm_min_pi16): Likewise.
5571 2018-03-28  Peter Bergner  <bergner@vnet.ibm.com>
5573         PR target/84912
5574         * config/rs6000/rs6000-builtin.def (DIVWEO): Delete macro expansion.
5575         (DIVWEUO): Likewise.
5576         (DIVDEO): Likewise.
5577         (DIVDEUO): Likewise.
5578         * config/rs6000/rs6000.c (builtin_function_type): Remove support for
5579         DIVWEUO and DIVDEUO.
5580         * config/rs6000/rs6000.md (UNSPEC_DIVEO, UNSPEC_DIVEUO): Delete unspecs.
5581         (UNSPEC_DIV_EXTEND): Remove deleted unspecs.
5582         (div_extend): Likewise.
5583         * doc/extend.texi (__builtin_divweo): Remove documentation for deleted
5584         builtin function.
5585         (__builtin_divweuo): Likewise.
5586         (__builtin_divdeo): Likewise.
5587         (__builtin_divdeuo): Likewise.
5589 2018-03-28  Jakub Jelinek  <jakub@redhat.com>
5591         PR target/85095
5592         * config/i386/i386.md (*add<mode>3_carry_0, *addsi3_carry_zext_0,
5593         *sub<mode>3_carry_0, *subsi3_carry_zext_0): New patterns.
5595         PR tree-optimization/82004
5596         * gimple-match-head.c (optimize_pow_to_exp): New function.
5597         * match.pd (pow(C,x) -> exp(log(C)*x)): Wrap with #if GIMPLE.
5598         Don't fold to exp if optimize_pow_to_exp is false.
5600 2018-03-28  Martin Liska  <mliska@suse.cz>
5602         PR other/84819
5603         * calls.c (initialize_argument_information): Fix trailing space.
5604         * common.opt: Fix typo and provide better explanation for
5605         -fsanitize-coverage option.
5606         * config/i386/i386.opt: Fix typo.
5608 2018-03-28  Jakub Jelinek  <jakub@redhat.com>
5609             Martin Liska  <mliska@suse.cz>
5611         PR sanitizer/85081
5612         * gimplify.c (asan_poison_variable): Don't do the check for
5613         gimplify_omp_ctxp here.
5614         (gimplify_decl_expr): Do it here.
5615         (gimplify_target_expr): Likewise.
5617 2018-03-28  Martin Liska  <mliska@suse.cz>
5619         PR target/84988
5620         * config/i386/i386.c (ix86_function_arg_advance): Do not call
5621         chkp_type_bounds_count if MPX is not enabled.
5623 2018-03-27  Chung-Ju Wu  <jasonwucj@gmail.com>
5625         * config/nds32/nds32.h (BRANCH_COST): Adjust cost.
5627 2018-03-27  Michael Meissner  <meissner@linux.vnet.ibm.com>
5629         PR target/84914
5630         * config/rs6000/rs6000.c (create_complex_muldiv): New helper
5631         function to create the function decl for complex long double
5632         multiply and divide for -mabi=ieeelongdouble.
5633         (init_float128_ieee): Call it.
5635 2018-03-27  H.J. Lu  <hongjiu.lu@intel.com>
5637         PR target/85044
5638         * config/i386/i386.c (ix86_trampoline_init): Insert ENDBR for
5639         -fcf-protection=branch -mibt.
5640         * config/i386/i386.h (TRAMPOLINE_SIZE): Increased by 4 bytes.
5642 2018-03-27  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
5644         PR target/81863
5645         * config/arm/arm.c (arm_valid_symbolic_address): Handle arm_word_relocations
5647 2018-03-27  Cesar Philippidis  <cesar@codesourcery.com>
5649         PR target/85056
5650         * config/nvptx/nvptx.c (nvptx_assemble_decl_begin): Add '[]' to
5651         extern array declarations.
5653 2018-03-27  Richard Biener  <rguenther@suse.de>
5655         PR middle-end/84067
5656         * match.pd ((A * C) +- (B * C) -> (A+-B) * C): Guard with
5657         explicit single_use checks.
5659 2018-03-27  Richard Biener  <rguenther@suse.de>
5661         PR tree-optimization/85082
5662         * tree-ssa-sccvn.c (vn_reference_lookup_or_insert_for_pieces):
5663         Valueize the VUSE.
5665 2018-03-27  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
5667         * config.gcc (aarch64*-*-linux*): New TARGET_DEFAULT_ASYNC_UNWIND_TABLES
5668         * common/config/aarch64/aarch64-common.c (aarch64_optimization_table[]):
5669         Turn on fasynchronous-unwind-tables and funwind-tables.
5671 2018-03-26  Uros Bizjak  <ubizjak@gmail.com>
5673         PR target/85073
5674         * config/i386/i386.md (*bmi_blsr_<mode>_cmp): New insn pattern.
5675         (*bmi_blsr_<mode>_ccz): Ditto.
5677 2018-03-26  Tom de Vries  <tom@codesourcery.com>
5679         PR tree-optimization/85063
5680         * omp-general.c (offloading_function_p): New function.  Factor out
5681         of ...
5682         * omp-offload.c (pass_omp_target_link::gate): ... here.
5683         * omp-general.h (offloading_function_p): Declare.
5684         * tree-switch-conversion.c (build_one_array): Mark CSWTCH.x variable
5685         with attribute omp declare target for offloading functions.
5687 2018-03-24  Richard Sandiford  <richard.sandiford@linaro.org>
5689         PR tree-optimization/84005
5690         * tree-data-ref.h (get_base_for_alignment): Declare.
5691         * tree-data-ref.c (get_base_for_alignment_1): New function.
5692         (get_base_for_alignment): Likewise.
5693         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Use
5694         get_base_for_alignment to find a suitable base object, instead
5695         of always using drb->base_address.
5697 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
5699         PR inline-asm/85022
5700         * emit-rtl.c (init_emit_regs): Indicate that VOIDmode MEMs don't have
5701         known size by default.
5703 2018-03-23  Vladimir Makarov  <vmakarov@redhat.com>
5705         PR inline-asm/85030
5706         * lra-constraints.c (process_alt_operands): Don't match BLKmode
5707         and non BLKmode operands.
5709 2018-03-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5711         PR target/85026
5712         * config/arm/arm.md (unaligned_loadhis): Remove first alternative.
5713         Clean up attributes.
5715 2018-03-23  Richard Biener  <rguenther@suse.de>
5717         PR debug/85020
5718         * dwarf2out.c (rtl_for_decl_location): Do not generate RTL early when
5719         we are going to emit early debug for LTO.
5721 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
5723         PR inline-asm/85034
5724         * function.c (match_asm_constraints_1): Don't optimize if input
5725         doesn't satisfy general_operand predicate for output's mode.
5727         PR inline-asm/85022
5728         * alias.c (write_dependence_p): Don't require for x_canonicalized
5729         non-VOIDmode if x has VOIDmode.
5731         PR sanitizer/85029
5732         * sanopt.c (maybe_optimize_ubsan_ptr_ifn): If DECL_REGISTER (base),
5733         just don't try to optimize it rather than assert it never happens.
5735 2018-03-22  Kelvin Nilsen  <kelvin@gcc.gnu.org>
5737         * config/rs6000/rs6000-builtin.def: Remove various BU_ALTIVEC_X
5738         macro expansions for definition of ST_INTERNAL_<mode> and
5739         LD_INTERNAL_<mode> builtins.
5740         * config/rs6000/rs6000-protos.h (rs6000_address_for_altivec):
5741         Remove prototype.
5742         * config/rs6000/rs6000.c (altivec_expand_ld_builtin): Delete this
5743         function.
5744         (altivec_expand_st_builtin): Likewise.
5745         (altivec_expand_builtin): Remove calls to deleted functions.
5746         (rs6000_address_for_altivec): Delete this function.
5747         * config/rs6000/vector.md: Remove expands for
5748         vector_altivec_load_<mode> and vector_altivec_store_<mode>.
5750 2018-03-22  Sudakshina Das  <sudi.das@arm.com>
5752         PR target/84826
5753         * config/arm/arm.h (machine_function): Add static_chain_stack_bytes.
5754         * config/arm/arm.c (arm_compute_static_chain_stack_bytes): Avoid
5755         re-computing once computed.
5756         (arm_expand_prologue): Compute machine->static_chain_stack_bytes.
5757         (arm_init_machine_status): Initialize
5758         machine->static_chain_stack_bytes.
5760 2018-03-22  Kelvin Nilsen  <kelvin@gcc.gnu.org>
5762         PR target/84760
5763         * doc/extend.texi: Add four new prototypes for vec_ld.
5764         * config/rs6000/rs6000-builtin.def (LVX_V1TI): Reorder symbol
5765         definitions for more logical presentation.
5766         * config/rs6000/rs6000-c.c: (altivec_overloaded_builtins): Add
5767         entries for V1TI variants of __builtin_altivec_ld builtin.
5768         * config/rs6000/rs6000.c: (altivec_expand_lv_builtin): Add test and
5769         handling of V1TI variant of LVX icode pattern.
5770         (altivec_expand_builtin): Add case for ALTIVEC_BUILTIN_LVX_V1TI.
5771         (rs6000_gimple_fold_builtin): Likewise.
5772         (altivec_init_builtins): Add code to define
5773         __builtin_altivec_lvx_v1ti function.
5775 2018-03-22  Jakub Jelinek  <jakub@redhat.com>
5777         PR inline-asm/84941
5778         * function.c (match_asm_constraints_1): Don't do the optimization
5779         if input isn't a REG, SUBREG, MEM or constant.
5781 2018-03-22  Tom de Vries  <tom@codesourcery.com>
5783         PR tree-optimization/84956
5784         * tree-ssa-tail-merge.c (find_clusters_1): Skip bbs with
5785         bb_has_abnormal_pred.
5787 2018-03-22  Jakub Jelinek  <jakub@redhat.com>
5789         PR sanitizer/85018
5790         * dwarf2asm.c (dw2_output_indirect_constant_1): Set
5791         DECL_INITIAL (decl) to decl at the end.
5792         * varasm.c (use_blocks_for_decl_p): Revert the 2018-03-20 change,
5793         adjust the comment.
5795 2018-03-21  Joseph Myers  <joseph@codesourcery.com>
5797         * doc/extend.texi (__builtin_tgmath): Document when complex
5798         integer types are treated as _Complex _Float64.
5800 2018-03-21  Tom de Vries  <tom@codesourcery.com>
5802         * doc/extend.texi (__builtin_extend_pointer): Remove pasto.
5804 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
5806         PR tree-optimization/84960
5807         * tree-cfg.c (remove_bb): Don't move forced labels into bb->prev_bb
5808         if it is ENTRY block, move them into single succ of ENTRY in that case.
5810 2018-03-21  Richard Sandiford  <richard.sandiford@linaro.org>
5812         PR tree-optimization/84811
5813         * poly-int.h (poly_span_traits): Remove the T3 parameter and
5814         promote HOST_WIDE_INT T2 - T1 results to unsigned HOST_WIDE_INT.
5815         (maybe_in_range_p, known_in_range_p, ranges_known_overlap_p):
5816         (known_subrange_p): Update accordingly.  Cast each value involved
5817         in the size comparison, rather than casting the result of the
5818         subtraction.
5820 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
5822         PR tree-optimization/84982
5823         * gimple-ssa-store-merging.c (invert_op): Handle boolean inversion
5824         by flipping the least significant bit rather than all bits from
5825         bitpos to bitpos + bitsize - 1.
5827 2018-03-21  Nathan Sidwell  <nathan@acm.org>
5829         * doc/extend.texi (Deprecated Features): Remove mention of
5830         long-deleted deprecations.
5832 2018-03-21  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
5834         PR jit/84288
5835         * configure.ac (gcc_cv_ld_soname) <*-*-solaris2*>: Set.
5836         * configure: Regenerate.
5838 2018-03-21  Tom de Vries  <tom@codesourcery.com>
5840         PR tree-optimization/83126
5841         * tree-parloops.c (num_phis): New function.
5842         (gen_parallel_loop): Detect and handle canonicalize_loop_ivs failure.
5844 2018-03-21  Nathan Sidwell  <nathan@acm.org>
5846         * doc/extend.texi (Deprecated Features): Update deprecated flags,
5847         mention anon-struct/union members and trailing attributes.
5849 2018-03-21  Bin Cheng  <bin.cheng@arm.com>
5851         PR tree-optimization/84969
5852         * tree-loop-distribution.c (fuse_memset_builtins): Don't reorder
5853         builtin memset partitions if they set different rhs values.
5855 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
5857         PR rtl-optimization/84989
5858         * simplify-rtx.c (simplify_unary_operation_1): Don't try to simplify
5859         VEC_DUPLICATE with scalar result mode.
5861 2018-03-21  Martin Liska  <mliska@suse.cz>
5863         PR ipa/84963
5864         * ipa-icf.c (sem_item_optimizer::fixup_points_to_sets): Remove
5865         not intended return statement.
5867 2018-03-21  Martin Liska  <mliska@suse.cz>
5869         PR target/84988
5870         * tree-chkp.c (CHKP_ARRAY_MAX_CHECK_STEPS): Define a new macro.
5871         (chkp_find_bound_slots_1): Limit number of iterations.
5873 2018-03-20  David H. Gutteridge  <dhgutteridge@sympatico.ca>
5875         PR target/84838
5876         * Minor grammar fixes for x86 options.
5878 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
5880         PR debug/84875
5881         * dce.c (delete_unmarked_insns): Don't remove frame related noop moves
5882         holding REG_CFA_RESTORE notes, instead turn them into a USE.
5884 2018-03-20  Peter Bergner  <bergner@vnet.ibm.com>
5886         PR target/83789
5887         * config/rs6000/altivec.md (altivec_lvx_<mode>_2op): Delete define_insn.
5888         (altivec_lvx_<mode>_1op): Likewise.
5889         (altivec_stvx_<mode>_2op): Likewise.
5890         (altivec_stvx_<mode>_1op): Likewise.
5891         (altivec_lvx_<VM2:mode>): New define_expand.
5892         (altivec_stvx_<VM2:mode>): Likewise.
5893         (altivec_lvx_<VM2:mode>_2op_<P:mptrsize>): New define_insn.
5894         (altivec_lvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
5895         (altivec_stvx_<VM2:mode>_2op_<P:mptrsize>): Likewise.
5896         (altivec_stvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
5897         * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Use new expanders.
5898         (rs6000_gen_lvx): Likewise.
5899         * config/rs6000/rs6000.c (altivec_expand_lv_builtin): Likewise.
5900         (altivec_expand_stv_builtin): Likewise.
5901         (altivec_expand_builtin): Likewise.
5902         * config/rs6000/vector.md: Likewise.
5904 2018-03-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5906         PR target/82518
5907         * config/arm/arm.c (arm_array_mode_supported_p): Return false for
5908         BYTES_BIG_ENDIAN.
5910 2018-03-20  Richard Biener  <rguenther@suse.de>
5912         PR target/84986
5913         * config/i386/i386.c (ix86_add_stmt_cost): Only cost
5914         sign-conversions as zero, fall back to standard scalar_stmt
5915         cost for the rest.
5917 2018-03-20  Martin Liska  <mliska@suse.cz>
5919         PR ipa/84825
5920         * predict.c (rebuild_frequencies): Handle case when we have
5921         PROFILE_ABSENT, but flag_guess_branch_prob is false.
5923 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
5925         PR target/84990
5926         * dwarf2asm.c (dw2_output_indirect_constant_1): Temporarily turn off
5927         flag_section_anchors.
5928         * varasm.c (use_blocks_for_decl_p): Remove hack for
5929         dw2_force_const_mem.
5931         PR target/84845
5932         * config/aarch64/aarch64.md (*aarch64_reg_<mode>3_neg_mask2): Rename
5933         to ...
5934         (*aarch64_<optab>_reg_<mode>3_neg_mask2): ... this.  If pseudos can't
5935         be created, use lowpart_subreg of operands[0] rather than operands[0]
5936         itself.
5937         (*aarch64_reg_<mode>3_minus_mask): Rename to ...
5938         (*aarch64_ashl_reg_<mode>3_minus_mask): ... this.
5939         (*aarch64_<optab>_reg_di3_mask2): Use const_int_operand predicate
5940         and n constraint instead of aarch64_shift_imm_di and Usd.
5941         (*aarch64_reg_<optab>_minus<mode>3): Rename to ...
5942         (*aarch64_<optab>_reg_minus<mode>3): ... this.
5944 2018-03-20  Sudakshina Das  <sudi.das@arm.com>
5946         PR target/82989
5947         * config/arm/neon.md (ashldi3_neon): Update ?s for constraints
5948         to favor GPR over NEON registers.
5949         (<shift>di3_neon): Likewise.
5951 2018-03-20  Tom de Vries  <tom@codesourcery.com>
5953         PR target/84952
5954         * config/nvptx/nvptx.c (nvptx_single): Don't neuter bar.sync.
5955         (nvptx_process_pars): Emit bar.sync asap and alap.
5957 2018-03-20  Tom de Vries  <tom@codesourcery.com>
5959         PR target/84954
5960         * config/nvptx/nvptx.c (prevent_branch_around_nothing): Also update
5961         seen_label if seen_label is already set.
5963 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
5965         PR target/84945
5966         * config/i386/i386.c (fold_builtin_cpu): For features above 31
5967         use __cpu_features2 variable instead of __cpu_model.__cpu_features[0].
5968         Use 1U instead of 1.  Formatting fixes.
5970         PR c/84953
5971         * builtins.c (fold_builtin_strpbrk): For strpbrk(x, "") use type
5972         instead of TREE_TYPE (s1) for the return value.
5974 2018-03-19  Jakub Jelinek  <jakub@redhat.com>
5976         PR tree-optimization/84946
5977         * gimple-ssa-store-merging.c (mem_valid_for_store_merging): Compute
5978         bitsize + bitsize in poly_uint64 rather than poly_int64.
5980         PR sanitizer/78651
5981         * dwarf2asm.c: Include fold-const.c.
5982         (dw2_output_indirect_constant_1): Set DECL_INITIAL (decl) to ADDR_EXPR
5983         of decl rather than decl itself.
5985         PR rtl-optimization/84643
5986         * memmodel.h (enum memmodel): Add MEMMODEL_MAX enumerator.
5988 2018-03-19  Maxim Ostapenko  <m.ostapenko@samsung.com>
5990         PR sanitizer/78651
5991         * dwarf2asm.c (dw2_output_indirect_constant_1): Disable ASan before
5992         calling assemble_variable.
5994 2018-03-19  Sudakshina Das  <sudi.das@arm.com>
5996         PR target/81647
5997         * config/aarch64/aarch64-simd.md (vec_cmp<mode><v_int_equiv>): Modify
5998         instructions for UNLT, UNLE, UNGT, UNGE, UNEQ, UNORDERED and ORDERED.
6000 2018-03-19  Jim Wilson  <jimw@sifive.com>
6002         PR bootstrap/84856
6003         * config/riscv/riscv.c (riscv_function_arg_boundary): Use
6004         PREFERRED_STACK_BOUNDARY instead of STACK_BOUNDARY.
6005         (riscv_first_stack_step): Likewise.
6006         (riscv_option_override): Use STACK_BOUNDARY instead of
6007         MIN_STACK_BOUNDARY.
6008         * config/riscv/riscv.h (STACK_BOUNDARY): Renamed from
6009         MIN_STACK_BOUNDARY.
6010         (BIGGEST_ALIGNMENT): Set to 128.
6011         (PREFERRED_STACK_BOUNDARY): Renamed from STACK_BOUNDARY.
6012         (RISCV_STACK_ALIGN): Use PREFERRED_STACK_BOUNDARY instead of
6013         STACK_BOUNDARY.
6015 2018-03-19  Richard Biener  <rguenther@suse.de>
6017         PR tree-optimization/84933
6018         * tree-vrp.c (set_and_canonicalize_value_range): Treat out-of-bound
6019         values as -INF/INF when canonicalizing an ANTI_RANGE to a RANGE.
6021 2018-03-19  Richard Biener  <rguenther@suse.de>
6023         PR tree-optimization/84859
6024         * tree-ssa-phiopt.c (single_trailing_store_in_bb): New function.
6025         (cond_if_else_store_replacement): Perform sinking operation on
6026         single-store BBs regardless of MAX_STORES_TO_SINK setting.
6027         Generalize what a BB with a single eligible store is.
6029 2018-03-19  Richard Biener  <rguenther@suse.de>
6031         PR tree-optimization/84929
6032         * tree-data-ref.c (analyze_siv_subscript_cst_affine): Guard
6033         chrec_is_positive against non-chrec arg.
6035 2018-03-19  Tamar Christina  <tamar.christina@arm.com>
6037         PR target/84711
6038         * config/arm/arm.c (arm_can_change_mode_class): revert r258554.
6040 2018-03-18  Martin Liska  <mliska@suse.cz>
6042         PR rtl-optimization/84635
6043         * regrename.c (build_def_use): Use matches_mode only when
6044         matches >= 0.
6046 2018-03-18  Richard Sandiford  <richard.sandiford@linaro.org>
6048         PR tree-optimization/84913
6049         * tree-vect-loop.c (vectorizable_reduction): Don't try to
6050         vectorize chains of COND_EXPRs.
6052 2018-03-18  Chung-Ju Wu  <jasonwucj@gmail.com>
6054         * config/nds32/nds32.h (MAX_REGS_PER_ADDRESS): Fix the value.
6056 2018-03-18  Chung-Ju Wu  <jasonwucj@gmail.com>
6058         * config/nds32/nds32.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Define.
6060 2018-03-18  Chung-Ju Wu  <jasonwucj@gmail.com>
6062         * config/nds32/nds32.h (CLZ_DEFINED_VALUE_AT_ZERO): Define.
6064 2018-03-17  Chung-Ju Wu  <jasonwucj@gmail.com>
6065             Kito Cheng  <kito.cheng@gmail.com>
6067         * config/nds32/nds32-protos.h (nds32_adjust_reg_alloc_order): Declare.
6068         * config/nds32/nds32.c (nds32_reg_alloc_order_for_speed): New array.
6069         (nds32_adjust_reg_alloc_order): New function.
6070         * config/nds32/nds32.h (ADJUST_REG_ALLOC_ORDER): Define.
6072 2018-03-17  Kito Cheng  <kito.cheng@gmail.com>
6074         * config/nds32/nds32.c (nds32_asm_output_mi_thunk,
6075         nds32_print_operand, nds32_print_operand_address): Use
6076         HOST_WIDE_INT_PRINT_DEC instead.
6078 2018-03-17  Chung-Ju Wu  <jasonwucj@gmail.com>
6080         * config/nds32/nds32.c (nds32_register_priority): Modify cost.
6082 2018-03-17  Jakub Jelinek  <jakub@redhat.com>
6084         PR target/84902
6085         * config/i386/i386.c (initial_ix86_tune_features,
6086         initial_ix86_arch_features): Use unsigned HOST_WIDE_INT rather than
6087         unsigned long long.
6088         (set_ix86_tune_features): Change ix86_tune_mask from unsigned int
6089         to unsigned HOST_WIDE_INT, initialize to HOST_WIDE_INT_1U << ix86_tune
6090         rather than 1u << ix86_tune.  Formatting fix.
6091         (ix86_option_override_internal): Change ix86_arch_mask from
6092         unsigned int to unsigned HOST_WIDE_INT, initialize to
6093         HOST_WIDE_INT_1U << ix86_arch rather than 1u << ix86_arch.
6094         (ix86_function_specific_restore): Likewise.
6096 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
6098         PR target/84899
6099         * postreload.c (reload_combine_recognize_pattern): Perform
6100         INTVAL addition in unsigned HOST_WIDE_INT type to avoid UB and
6101         truncate_int_for_mode the result for the destination's mode.
6103         PR c/84909
6104         * hsa-gen.c (mem_type_for_type): Fix comment typo.
6105         * tree-vect-loop-manip.c (vect_create_cond_for_niters_checks):
6106         Likewise.
6107         * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
6108         Likewise.
6110 2018-03-16  Vladimir Makarov  <vmakarov@redhat.com>
6112         PR target/84876
6113         * lra-assigns.c (lra_split_hard_reg_for): Don't use
6114         regno_allocno_class_array and sorted_pseudos.
6115         * lra-constraints.c (spill_hard_reg_in_range): Ignore hard regs in
6116         insns where regno is used.
6118 2018-03-16  Martin Liska  <mliska@suse.cz>
6120         PR ipa/84833
6121         * multiple_target.c (create_dispatcher_calls): Redirect
6122         reference in the symbol table.
6124 2018-03-16  Martin Liska  <mliska@suse.cz>
6126         PR ipa/84722
6127         * multiple_target.c (create_dispatcher_calls): Redirect also
6128         an alias.
6130 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
6132         PR c++/79937
6133         PR c++/82410
6134         * tree.h (TARGET_EXPR_NO_ELIDE): Define.
6135         * gimplify.c (gimplify_modify_expr_rhs): Don't elide TARGET_EXPRs with
6136         TARGET_EXPR_NO_ELIDE flag set unless *expr_p is INIT_EXPR.
6138 2018-03-16  Julia Koval  <julia.koval@intel.com>
6140         * doc/invoke.texi (Skylake Server): Add CLWB.
6141         Cannonlake): Remove CLWB.
6143 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
6145         PR tree-optimization/84841
6146         * tree-ssa-reassoc.c (INTEGER_CONST_TYPE): Change to 1 << 4 from
6147         1 << 3.
6148         (FLOAT_ONE_CONST_TYPE): Define.
6149         (constant_type): Return FLOAT_ONE_CONST_TYPE for -1.0 and 1.0.
6150         (sort_by_operand_rank): Put entries with higher constant_type last
6151         rather than first to match comments.
6153 2018-03-15  Sandra Loosemore  <sandra@codesourcery.com>
6155         * config/nios2/nios2.md (movsi_internal): Fix thinko in 
6156         split predicate.
6158 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
6160         PR c++/79085
6161         * calls.c (expand_call): For TREE_ADDRESSABLE rettype ignore alignment
6162         check and use address of target always.
6164 2018-03-15  H.J. Lu  <hongjiu.lu@intel.com>
6166         PR target/84574
6167         * config/i386/i386.c (indirect_thunk_needed): Update comments.
6168         (indirect_thunk_bnd_needed): Likewise.
6169         (indirect_thunks_used): Likewise.
6170         (indirect_thunks_bnd_used): Likewise.
6171         (indirect_return_needed): New.
6172         (indirect_return_bnd_needed): Likewise.
6173         (output_indirect_thunk_function): Add a bool argument for
6174         function return.
6175         (output_indirect_thunk_function): Don't generate alias for
6176         function return thunk.
6177         (ix86_code_end): Call output_indirect_thunk_function to generate
6178         function return thunks.
6179         (ix86_output_function_return): Set indirect_return_bnd_needed
6180         and indirect_return_needed instead of indirect_thunk_bnd_needed
6181         and indirect_thunk_needed.
6183 2018-03-15  Olga Makhotina  <olga.makhotina@intel.com>
6185         * config/i386/sgxintrin.h (_enclv_u32): New intrinsic.
6186         (__enclv_bc, __enclv_cd, __enclv_generic): New definitions.
6187         (ERDINFO, ETRACKC, ELDBC, ELDUC): New leaves.
6189 2018-03-15  David Malcolm  <dmalcolm@redhat.com>
6190             Paul Hua <paul.hua.gm@gmail.com>
6192         PR c/84852
6193         * gcc.dg/fixits-pr84852-1.c: Fix filename in dg-regexp.
6195 2018-03-15  Segher Boessenkool  <segher@kernel.crashing.org>
6197         * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add back the
6198         TARGET_DOUBLE_FLOAT and TARGET_SINGLE_FLOAT conditions on the DFmode
6199         resp. SFmode cases.
6201 2018-03-15  Tamar Christina  <tamar.christina@arm.com>
6203         PR target/84711
6204         * config/arm/arm.c (arm_can_change_mode_class): Use GET_MODE_UNIT_SIZE
6205         instead of GET_MODE_SIZE when comparing Units.
6207 2018-03-15  Vladimir Mezentsev  <vladimir.mezentsev@oracle.com>
6209         PR target/68256
6210         * varasm.c (hash_section): Return an unchangeble hash value
6211         * config/aarch64/aarch64.c (aarch64_use_blocks_for_constant_p):
6212         Return !aarch64_can_use_per_function_literal_pools_p ().
6214 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
6216         PR target/84860
6217         * optabs.c (emit_conditional_move): Pass address of cmode's copy
6218         rather than address of cmode as last argument to prepare_cmp_insn.
6220 2018-03-15  Julia Koval  <julia.koval@intel.com>
6222         * config/i386/i386.c (F_AVX512VBMI2, F_GFNI, F_VPCLMULQDQ,
6223         F_AVX512VNNI, F_AVX512BITALG): New.
6225 2018-03-14  John David Anglin  <danglin@gcc.gnu.org>
6227         PR target/83451
6228         * config/pa/pa.c (pa_emit_move_sequence):  Always emit secondary reload
6229         insn for floating-point loads and stores.
6231 2018-03-14  Carl Love  <cel@us.ibm.com>
6233         * config/rs6000/rs6000-c.c: Add macro definitions for
6234         ALTIVEC_BUILTIN_VEC_PERMXOR.
6235         * config/rs6000/rs6000.h: Add #define for vec_permxor builtin.
6236         * config/rs6000/rs6000-builtin.def: Add macro expansions for VPERMXOR.
6237         * config/rs6000/altivec.md (altivec_vpermxor): New define expand.
6238         * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Add case
6239         UNSPEC_VPERMXOR.
6240         * config/doc/extend.texi: Add prototypes for vec_permxor.
6242 2018-03-14  David Malcolm  <dmalcolm@redhat.com>
6244         PR c/84852
6245         * diagnostic-show-locus.c (class layout_point): Convert m_line
6246         from int to linenum_type.
6247         (line_span::comparator): Use linenum "compare" function when
6248         comparing line numbers.
6249         (test_line_span): New function.
6250         (layout_range::contains_point): Convert param "row" from int to
6251         linenum_type.
6252         (layout_range::intersects_line_p): Likewise.
6253         (layout::will_show_line_p): Likewise.
6254         (layout::print_source_line): Likewise.
6255         (layout::should_print_annotation_line_p): Likewise.
6256         (layout::print_annotation_line): Likewise.
6257         (layout::print_leading_fixits): Likewise.
6258         (layout::annotation_line_showed_range_p): Likewise.
6259         (struct line_corrections): Likewise for field m_row.
6260         (line_corrections::line_corrections): Likewise for param "row".
6261         (layout::print_trailing_fixits): Likewise.
6262         (layout::get_state_at_point): Likewise.
6263         (layout::get_x_bound_for_row): Likewise.
6264         (layout::print_line): Likewise.
6265         (diagnostic_show_locus): Likewise for locals "last_line" and
6266         "row".
6267         (selftest::diagnostic_show_locus_c_tests): Call test_line_span.
6268         * input.c (selftest::test_linenum_comparisons): New function.
6269         (selftest::input_c_tests): Call it.
6270         * selftest.c (selftest::test_assertions): Test ASSERT_GT,
6271         ASSERT_GT_AT, ASSERT_LT, and ASSERT_LT_AT.
6272         * selftest.h (ASSERT_GT): New macro.
6273         (ASSERT_GT_AT): New macro.
6274         (ASSERT_LT): New macro.
6275         (ASSERT_LT_AT): New macro.
6277 2018-03-14  Segher Boessenkool  <segher@kernel.crashing.org>
6279         PR rtl-optimization/84780
6280         * combine.c (distribute_links): Don't make a link based on pc_rtx.
6282 2018-03-14  Martin Liska  <mliska@suse.cz>
6284         * tree.c (record_node_allocation_statistics): Use
6285         get_stats_node_kind.
6286         (get_stats_node_kind): New function extracted from
6287         record_node_allocation_statistics.
6288         (free_node): Use get_stats_node_kind.
6290 2018-03-14  Richard Biener  <rguenther@suse.de>
6292         * tree-ssa-pre.c (compute_antic_aux): Remove code that asserts
6293         that the value-set of ANTIC_IN doesn't grow.
6295         Revert
6296         * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
6297         member.
6298         (BB_VISITED_WITH_VISITED_SUCCS): New define.
6299         (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
6301 2018-03-14  Julia Koval  <julia.koval@intel.com>
6303         * config.gcc (icelake-client, icelake-server): New.
6304         (icelake): Remove.
6305         * config/i386/i386.c (initial_ix86_tune_features): Extend to 64 bit.
6306         (initial_ix86_arch_features): Ditto.
6307         (PTA_SKYLAKE): Add SGX.
6308         (PTA_ICELAKE): Remove.
6309         (PTA_ICELAKE_CLIENT): New.
6310         (PTA_ICELAKE_SERVER): New.
6311         (ix86_option_override_internal): Split up icelake on icelake client and
6312         icelake server.
6313         (get_builtin_code_for_version): Ditto.
6314         (fold_builtin_cpu): Ditto.
6315         * config/i386/driver-i386.c (config/i386/driver-i386.c): Ditto.
6316         * config/i386/i386-c.c (ix86_target_macros_internal): Ditto
6317         * config/i386/i386.h (processor_type): Ditto.
6318         * doc/invoke.texi: Ditto.
6320 2018-03-14  Jakub Jelinek  <jakub@redhat.com>
6322         PR sanitizer/83392
6323         * sanopt.c (maybe_optimize_ubsan_ptr_ifn): Handle also
6324         INTEGER_CST offset, add it together with bitpos / 8 and
6325         sign extend based on POINTER_SIZE.
6327         PR target/84844
6328         Revert
6329         2017-04-20  Uros Bizjak  <ubizjak@gmail.com>
6331         PR target/78090
6332         * config/i386/constraints.md (Yc): New register constraint.
6333         * config/i386/i386.md (*float<SWI48:mode><MODEF:mode>2_mixed):
6334         Use Yc constraint for alternative 2 of operand 0.  Remove
6335         preferred_for_speed attribute.
6337 2018-03-14  Richard Biener  <rguenther@suse.de>
6339         PR tree-optimization/84830
6340         * tree-ssa-pre.c (compute_antic_aux): Intersect the new ANTIC_IN
6341         with the old one to avoid oscillations.
6343 2018-03-13  Vladimir Makarov  <vmakarov@redhat.com>
6345         PR target/83712
6346         * lra-assigns.c (find_all_spills_for): Ignore uninteresting
6347         pseudos.
6348         (assign_by_spills): Return a flag of reload assignment failure.
6349         Do not process the reload assignment failures.  Do not spill other
6350         reload pseudos if they has the same reg class.  Update n if
6351         necessary.
6352         (lra_assign): Add a return arg.  Set up from the result of
6353         assign_by_spills call.
6354         (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
6355         * lra-constraints.c (split_reg): Add a new arg.  Use it instead of
6356         usage_insns if it is not NULL.
6357         (spill_hard_reg_in_range): New function.
6358         (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
6359         * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
6360         function prototypes.
6361         (lra_assign): Change prototype.
6362         * lra.c (lra): Add code to deal with fails by splitting hard reg
6363         live ranges.
6365 2018-03-01  Palmer Dabbelt  <palmer@sifive.com>
6367         * config/riscv/riscv.opt (mrelax): New option.
6368         * config/riscv/riscv.c (riscv_file_start): Emit ".option
6369         "norelax" when riscv_mrelax is disabled.
6370         * doc/invoke.texi (RISC-V): Document "-mrelax" and "-mno-relax".
6372 2018-03-13  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
6374         PR target/84743
6375         * config/rs6000/rs6000.c (rs6000_reassociation_width): Disable parallel
6376         reassociation for int modes.
6378 2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>
6380         * tree-vect-loop-manip.c (vect_maybe_permute_loop_masks):
6381         Reverse the choice between VEC_UNPACK_LO_EXPR and VEC_UNPACK_HI_EXPR
6382         for big-endian.
6383         * config/aarch64/iterators.md (hi_lanes_optab): New int attribute.
6384         * config/aarch64/aarch64-sve.md
6385         (*aarch64_sve_<perm_insn><perm_hilo><mode>): Rename to...
6386         (aarch64_sve_<perm_insn><perm_hilo><mode>): ...this.
6387         (*extend<mode><Vwide>2): Rename to...
6388         (aarch64_sve_extend<mode><Vwide>2): ...this.
6389         (vec_unpack<su>_<perm_hilo>_<mode>): Turn into a define_expand,
6390         renaming the old pattern to...
6391         (aarch64_sve_punpk<perm_hilo>_<mode>): ...this.  Only define
6392         unsigned packs.
6393         (vec_unpack<su>_<perm_hilo>_<SVE_BHSI:mode>): Turn into a
6394         define_expand, renaming the old pattern to...
6395         (aarch64_sve_<su>unpk<perm_hilo>_<SVE_BHSI:mode>): ...this.
6396         (*vec_unpacku_<perm_hilo>_<mode>_no_convert): Delete.
6397         (vec_unpacks_<perm_hilo>_<mode>): Take BYTES_BIG_ENDIAN into
6398         account when deciding which SVE instruction the optab should use.
6399         (vec_unpack<su_optab>_float_<perm_hilo>_vnx4si): Likewise.
6401 2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>
6403         * config/aarch64/aarch64.md (V4_REGNUM, V8_REGNUM, V12_REGNUM)
6404         (V20_REGNUM, V24_REGNUM, V28_REGNUM, P1_REGNUM, P2_REGNUM, P3_REGNUM)
6405         (P4_REGNUM, P5_REGNUM, P6_REGNUM, P8_REGNUM, P9_REGNUM, P10_REGNUM)
6406         (P11_REGNUM, P12_REGNUM, P13_REGNUM, P14_REGNUM): New define_constants.
6407         (tlsdesc_small_<mode>): Turn a define_expand and use
6408         tlsdesc_small_sve_<mode> for SVE.  Rename original define_insn to...
6409         (tlsdesc_small_advsimd_<mode>): ...this.
6410         (tlsdesc_small_sve_<mode>): New pattern.
6412 2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>
6414         * config/aarch64/iterators.md (UNSPEC_SMUL_HIGHPART)
6415         (UNSPEC_UMUL_HIGHPART): New constants.
6416         (MUL_HIGHPART): New int iteraor.
6417         (su): Handle UNSPEC_SMUL_HIGHPART and UNSPEC_UMUL_HIGHPART.
6418         * config/aarch64/aarch64-sve.md (<su>mul<mode>3_highpart): New
6419         define_expand.
6420         (*<su>mul<mode>3_highpart): New define_insn.
6422 2018-03-13  Eric Botcazou  <ebotcazou@adacore.com>
6424         PR lto/84805
6425         * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
6426         incomplete types.
6428 2018-03-13  Martin Liska  <mliska@suse.cz>
6430         PR ipa/84658.
6431         * (sem_item_optimizer::sem_item_optimizer): Initialize new
6432         vector.
6433         (sem_item_optimizer::~sem_item_optimizer): Release it.
6434         (sem_item_optimizer::merge_classes): Register variable aliases.
6435         (sem_item_optimizer::fixup_pt_set): New function.
6436         (sem_item_optimizer::fixup_points_to_sets): Likewise.
6437         * ipa-icf.h: Declare new variables and functions.
6439 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
6441         PR middle-end/84834
6442         * match.pd ((A & C) != 0 ? D : 0): Use INTEGER_CST@2 instead of
6443         integer_pow2p@2 and test integer_pow2p in condition.
6444         (A < 0 ? C : 0): Similarly for @1.
6446         PR middle-end/84831
6447         * stmt.c (parse_output_constraint): If the CONSTRAINT_LEN (*p, p)
6448         characters starting at p contain '\0' character, don't look beyond
6449         that.
6451         PR target/84827
6452         * config/i386/i386.md (round<mode>2): For 387 fancy math, disable
6453         pattern if -ftrapping-math -fno-fp-int-builtin-inexact.
6455         PR target/84828
6456         * reg-stack.c (change_stack): Change update_end var from int to
6457         rtx_insn *, if non-NULL don't update just BB_END (current_block), but
6458         also call set_block_for_insn on the newly added insns and rescan.
6460         PR target/84786
6461         * config/i386/sse.md (sse2_loadhpd): Use Yv constraint rather than v
6462         on the last operand.
6464         PR c++/84704
6465         * tree.c (stabilize_reference_1): Return save_expr (e) for
6466         STATEMENT_LIST even if it doesn't have side-effects.
6468 2018-03-12  Jonathan Wakely  <jwakely@redhat.com>
6470         * doc/invoke.texi (-mclflushopt): Fix spelling of option.
6472 2018-03-12  Renlin Li  <renlin.li@arm.com>
6474         * config/aarch64/aarch64.md (movhf_aarch64): Fix mode argument to
6475         aarch64_output_scalar_simd_mov_immediate.
6477 2018-03-12  Martin Sebor  <msebor@redhat.com>
6479         PR tree-optimization/83456
6480         * gimple-fold.c (gimple_fold_builtin_memory_op): Avoid warning
6481         for perfectly overlapping calls to memcpy.
6482         (gimple_fold_builtin_memory_chk): Same.
6483         (gimple_fold_builtin_strcpy): Handle no-warning.
6484         (gimple_fold_builtin_stxcpy_chk): Same.
6485         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Handle no-warning.
6487 2018-03-12  Segher Boessenkool  <segher@kernel.crashing.org>
6489         * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add bool "named"
6490         parameter.  Use it for SFmode.
6491         (rs6000_function_arg_advance_1): Adjust.
6492         (rs6000_function_arg): Adjust.
6493         (rs6000_gimplify_va_arg): Pass false for that new parameter.
6495 2018-03-12  Segher Boessenkool  <segher@kernel.crashing.org>
6497         PR rtl-optimization/84169
6498         PR rtl-optimization/84780
6499         * combine.c (can_combine_p): Check for a 2-insn combination whether
6500         the destination register is used between the two insns, too.
6502 2018-03-12  Richard Biener  <rguenther@suse.de>
6504         PR tree-optimization/84803
6505         * tree-if-conv.c (ifcvt_memrefs_wont_trap): Don't do anything
6506         for refs DR analysis didn't process.
6508 2018-03-12  Richard Biener  <rguenther@suse.de>
6510         PR tree-optimization/84777
6511         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): For
6512         force-vectorize loops ignore whether we are optimizing for size.
6514 2018-03-12  Chung-Ju Wu  <jasonwucj@gmail.com>
6516         * config/nds32/nds32.c (nds32_md_asm_adjust): New function.
6517         (TARGET_MD_ASM_ADJUST): Define.
6519 2018-03-12  Monk Chiang  <sh.chiang04@gmail.com>
6520             Kito Cheng  <kito.cheng@gmail.com>
6521             Chung-Ju Wu  <jasonwucj@gmail.com>
6523         * config/nds32/nds32.c (nds32_compute_stack_frame,
6524         nds32_emit_stack_push_multiple, nds32_emit_stack_pop_multiple,
6525         nds32_emit_stack_v3push, nds32_emit_stack_v3pop,
6526         nds32_emit_adjust_frame, nds32_expand_prologue, nds32_expand_epilogue,
6527         nds32_expand_prologue_v3push, nds32_expand_epilogue_v3pop): Refine.
6528         * config/nds32/nds32.h (NDS32_FIRST_CALLEE_SAVE_GPR_REGNUM,
6529         NDS32_LAST_CALLEE_SAVE_GPR_REGNUM, NDS32_V3PUSH_AVAILABLE_P): New.
6530         * config/nds32/nds32.md (prologue, epilogue): Use macro
6531         NDS32_V3PUSH_AVAILABLE_P to do checking.
6533 2018-03-11  Jakub Jelinek  <jakub@redhat.com>
6535         PR debug/58150
6536         * dwarf2out.c (gen_enumeration_type_die): Don't guard adding
6537         DW_AT_declaration for ENUM_IS_OPAQUE on -gdwarf-4 or -gno-strict-dwarf,
6538         but on TYPE_SIZE.  Don't do anything for ENUM_IS_OPAQUE if not creating
6539         a new die.  Don't set TREE_ASM_WRITTEN if ENUM_IS_OPAQUE.  Guard
6540         addition of most attributes on !orig_type_die or the attribute not
6541         being present already.  Assert TYPE_VALUES is NULL for ENUM_IS_OPAQUE.
6543 2018-03-11  Kito Cheng  <kito.cheng@gmail.com>
6544             Chung-Ju Wu  <jasonwucj@gmail.com>
6546         * config/nds32/nds32.c (nds32_cpu_cpp_builtins): Modify to define
6547         __NDS32_VH__ macro.
6548         * config/nds32/nds32.opt (mvh): New option.
6550 2018-03-11  Kito Cheng  <kito.cheng@gmail.com>
6551             Chung-Ju Wu  <jasonwucj@gmail.com>
6553         * config/nds32/nds32-protos.h (nds32_cpu_cpp_builtins): Declare
6554         function.
6555         * config/nds32/nds32.c (nds32_cpu_cpp_builtins): New function.
6556         * config/nds32/nds32.h (TARGET_CPU_CPP_BUILTINS): Modify its
6557         definition.
6559 2018-03-11  Kito Cheng  <kito.cheng@gmail.com>
6560             Chung-Ju Wu  <jasonwucj@gmail.com>
6562         * config/nds32/nds32-memory-manipulation.c (nds32_expand_strlen): New
6563         function.
6564         * config/nds32/nds32-multiple.md (strlensi): New pattern.
6565         * config/nds32/nds32-protos.h (nds32_expand_strlen): Declare function.
6567 2018-03-11  Monk Chiang  <sh.chiang04@gmail.com>
6568             Kito Cheng  <kito.cheng@gmail.com>
6569             Chung-Ju Wu  <jasonwucj@gmail.com>
6571         * config/nds32/constants.md (unspec_element): Add UNSPEC_FFB,
6572         UNSPEC_FFMISM and UNSPEC_FLMISM.
6573         * config/nds32/nds32-intrinsic.c (bdesc_2arg): Add builtin description
6574         for ffb, ffmism and flmism.
6575         * config/nds32/nds32-intrinsic.md (unspec_ffb): Define new pattern.
6576         (unspec_ffmism): Ditto.
6577         (unspec_flmism): Ditto.
6578         (nds32_expand_builtin_impl): Check if string extension is available.
6579         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FFB,
6580         NDS32_BUILTIN_FFMISM and NDS32_BUILTIN_FLMISM.
6582 2018-03-10  Vladimir Makarov  <vmakarov@redhat.com>
6584         Reverting patch:
6585         2018-03-09  Vladimir Makarov  <vmakarov@redhat.com>
6587         PR target/83712
6588         * lra-assigns.c (assign_by_spills): Return a flag of reload
6589         assignment failure.  Do not process the reload assignment
6590         failures.  Do not spill other reload pseudos if they has the same
6591         reg class.
6592         (lra_assign): Add a return arg.  Set up from the result of
6593         assign_by_spills call.
6594         (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
6595         * lra-constraints.c (split_reg): Add a new arg.  Use it instead of
6596         usage_insns if it is not NULL.
6597         (spill_hard_reg_in_range): New function.
6598         (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
6599         * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
6600         function prototypes.
6601         (lra_assign): Change prototype.
6602         * lra.c (lra): Add code to deal with fails by splitting hard reg
6603         live ranges.
6605 2018-03-10  H.J. Lu  <hongjiu.lu@intel.com>
6607         PR target/84807
6608         * config/i386/i386.opt: Replace Enforcment with Enforcement.
6610 2018-03-10  Alexandre Oliva  <aoliva@redhat.com>
6612         PR debug/84620
6613         * dwarf2out.h (dw_val_class): Add dw_val_class_symview.
6614         (dw_val_node): Add val_symbolic_view.
6615         * dwarf2out.c (dw_line_info_table): Add symviews_since_reset.
6616         (symview_upper_bound): New.
6617         (new_line_info_table): Initialize symviews_since_reset.
6618         (dwarf2out_source_line): Count symviews_since_reset and set
6619         symview_upper_bound.
6620         (dw_val_equal_p): Handle symview.
6621         (add_AT_symview): New.
6622         (print_dw_val): Handle symview.
6623         (attr_checksum, attr_checksum_ordered): Likewise.
6624         (same_dw_val_p, size_of_die): Likewise.
6625         (value_format, output_die): Likewise.
6626         (add_high_low_attributes): Use add_AT_symview for entry_view.
6627         (dwarf2out_finish): Reset symview_upper_bound, clear
6628         zero_view_p.
6630 2018-03-09  Peter Bergner  <bergner@vnet.ibm.com>
6632         PR target/83969
6633         * config/rs6000/rs6000.c (rs6000_offsettable_memref_p): New prototype.
6634         Add strict argument and use it.
6635         (rs6000_split_multireg_move): Update for new strict argument.
6636         (mem_operand_gpr): Disallow all non-offsettable addresses.
6637         * config/rs6000/rs6000.md (*movdi_internal64): Use YZ constraint.
6639 2018-03-09  Jakub Jelinek  <jakub@redhat.com>
6641         PR target/84772
6642         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Mark va_arg_tmp
6643         temporary TREE_ADDRESSABLE before gimplification of BUILT_IN_MEMCPY.
6644         * config/powerpcspe/powerpcspe.c (rs6000_gimplify_va_arg): Likewise.
6646         PR c++/84767
6647         * tree-inline.c (copy_tree_body_r): For INDIRECT_REF of a remapped
6648         decl, use remap_type if we want to use the type.
6650 2018-03-09  Martin Sebor  <msebor@redhat.com>
6652         PR tree-optimization/84526
6653         * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
6654         Remove dead code.
6655         (builtin_access::generic_overlap): Be prepared to handle non-array
6656         base objects.
6658 2018-03-09  Alexandre Oliva  <aoliva@redhat.com>
6660         PR rtl-optimization/84682
6661         * lra-constraints.c (process_address_1): Check is_address flag
6662         for address constraints.
6663         (process_alt_operands): Likewise.
6664         * lra.c (lra_set_insn_recog_data): Pass asm operand locs to
6665         preprocess_constraints.
6666         * recog.h (preprocess_constraints): Add oploc parameter.
6667         Adjust callers.
6668         * recog.c (preprocess_constraints): Test address_operand for
6669         CT_ADDRESS constraints.
6671 2018-03-09  Vladimir Makarov  <vmakarov@redhat.com>
6673         PR target/83712
6674         * lra-assigns.c (assign_by_spills): Return a flag of reload
6675         assignment failure.  Do not process the reload assignment
6676         failures.  Do not spill other reload pseudos if they has the same
6677         reg class.
6678         (lra_assign): Add a return arg.  Set up from the result of
6679         assign_by_spills call.
6680         (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
6681         * lra-constraints.c (split_reg): Add a new arg.  Use it instead of
6682         usage_insns if it is not NULL.
6683         (spill_hard_reg_in_range): New function.
6684         (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
6685         * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
6686         function prototypes.
6687         (lra_assign): Change prototype.
6688         * lra.c (lra): Add code to deal with fails by splitting hard reg
6689         live ranges.
6691 2018-03-09  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6693         PR target/83193
6694         * common/config/arm/arm-common.c (arm_parse_arch_option_name):
6695         Accept complain bool parameter.  Only emit errors if it is true.
6696         (arm_parse_cpu_option_name): Likewise.
6697         (arm_target_thumb_only): Adjust callers of the above.
6698         * config/arm/arm-protos.h (arm_parse_cpu_option_name): Adjust
6699         prototype to take a default true bool parameter.
6700         (arm_parse_arch_option_name): Likewise.
6702 2018-03-09  David Malcolm  <dmalcolm@redhat.com>
6703             Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
6705         PR jit/64089
6706         PR jit/84288
6707         * Makefile.in (LD_VERSION_SCRIPT_OPTION, LD_SONAME_OPTION): New.
6708         * configure: Regenerate.
6709         * configure.ac ("linker --version-script option"): New.
6710         ("linker soname option"): New.
6712 2018-03-09  Richard Biener  <rguenther@suse.de>
6714         PR tree-optimization/84775
6715         * tree-if-conv.c (add_bb_predicate_gimplified_stmts): Delink
6716         immediate uses of predicate stmts and mark them modified.
6718         Revert
6719         PR tree-optimization/84178
6720         * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
6721         to caller.
6722         (version_loop_for_if_conversion): Delay update_ssa call.
6723         (tree_if_conversion): Delay update_ssa until after predicate
6724         insertion.
6726 2018-03-09  Eric Botcazou  <ebotcazou@adacore.com>
6728         PR target/84763
6729         * config/i386/winnt.c (i386_pe_seh_cold_init): Use small pre-allocation
6730         when the function accesses prior frames.
6732 2018-03-08  Jakub Jelinek  <jakub@redhat.com>
6734         PR debug/84456
6735         * dwarf2out.c (dw_loc_list): If list && loc_list->first->next, call
6736         gen_llsym, otherwise call maybe_gen_llsym.
6738         PR inline-asm/84742
6739         * recog.c (asm_operand_ok): Return 0 if multi-character constraint
6740         has ',' character inside of it.
6742 2018-03-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6744         PR target/84748
6745         * config/aarch64/aarch64.md (*compare_cstore<mode>_insn): Mark pattern
6746         as clobbering CC_REGNUM.
6748 2018-03-08  Richard Biener  <rguenther@suse.de>
6750         PR middle-end/84552
6751         * tree-scalar-evolution.c: Include tree-into-ssa.h.
6752         (follow_copies_to_constant): Do not follow SSA names registered
6753         for update.
6755 2018-03-08  Richard Biener  <rguenther@suse.de>
6757         PR tree-optimization/84178
6758         * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
6759         to caller.
6760         (version_loop_for_if_conversion): Delay update_ssa call.
6761         (tree_if_conversion): Delay update_ssa until after predicate
6762         insertion.
6764 2018-03-08  David Malcolm  <dmalcolm@redhat.com>
6766         PR tree-optimization/84178
6767         * tree-if-conv.c (release_bb_predicate): Remove the
6768         the assertion that the stmts have NULL use_ops.
6769         Discard the statements, asserting that they haven't
6770         yet been added to a BB.
6772 2018-03-08  Richard Biener  <rguenther@suse.de>
6774         PR tree-optimization/84746
6775         * tree-ssa-pre.c (find_leader_in_sets): Deal with SET1 being NULL.
6776         (phi_translate): Pass in destination ANTIC_OUT set.
6777         (phi_translate_1): Likewise.  For a simplified result lookup
6778         a leader in ANTIC_OUT and AVAIL_OUT, not the ANTIC_IN sets.
6779         (phi_translate_set): Adjust.
6780         (do_pre_regular_insertion): Likewise.
6781         (do_pre_partial_partial_insertion): Likewise.
6783 2018-03-08  Martin Liska  <mliska@suse.cz>
6785         PR gcov-profile/84735
6786         * doc/gcov.texi: Document usage of profile files.
6787         * gcov-io.h: Document changes in the format.
6789 2018-03-08  Alexandre Oliva  <aoliva@redhat.com>
6791         PR debug/84404
6792         PR debug/84408
6793         * dwarf2out.c (struct dw_line_info_table): Update comments for
6794         view == -1.
6795         (FORCE_RESET_NEXT_VIEW): New.
6796         (FORCE_RESETTING_VIEW_P): New.
6797         (RESETTING_VIEW_P): Check for -1 too.
6798         (ZERO_VIEW_P): Likewise.
6799         (new_line_info_table): Force-reset next view.
6800         (dwarf2out_begin_function): Likewise.
6801         (dwarf2out_source_line): Simplify zero_view_p initialization.
6802         Test FORCE_RESETTING_VIEW_P and RESETTING_VIEW_P instead of
6803         view directly.  Omit view when omitting .loc at line 0.
6805 2018-03-08  Jakub Jelinek  <jakub@redhat.com>
6807         PR tree-optimization/84740
6808         * tree-switch-conversion.c (process_switch): Call build_constructors
6809         only if info.phi_count is non-zero.
6811         PR tree-optimization/84739
6812         * tree-tailcall.c (find_tail_calls): Check call arguments against
6813         DECL_ARGUMENTS (current_function_decl) rather than
6814         DECL_ARGUMENTS (func) when checking for tail recursion.
6816 2018-03-07  Jakub Jelinek  <jakub@redhat.com>
6818         * doc/contrib.texi: Add entries for Martin Liska, David Malcolm,
6819         Marek Polacek, extend Vladimir Makarov's, Jonathan Wakely's and
6820         Volker Reichelt's entry and add entries for people that perform
6821         GCC fuzzy testing and report numerous bugs.
6823 2018-03-07  Segher Boessenkool  <segher@kernel.crashing.org>
6825         PR target/82411
6826         * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Don't put
6827         readonly data in sdata, if that is disabled.
6828         * config/rs6000/sysv4.opt (mreadonly-in-sdata): New option.
6829         * doc/invoke.texi (RS/6000 and PowerPC Options): Document
6830         -mreadonly-in-sdata option.
6832 2018-03-07  Martin Sebor  <msebor@redhat.com>
6834         PR tree-optimization/84468
6835         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Consider successor
6836         basic block when looking for nul assignment.
6838 2018-03-07  Eric Botcazou  <ebotcazou@adacore.com>
6840         PR target/84277
6841         * except.h (output_function_exception_table): Adjust prototype.
6842         * except.c (output_function_exception_table): Remove FNNAME parameter
6843         and add SECTION parameter.  Ouput one part of the table at a time.
6844         * final.c (final_scan_insn_1) <NOTE_INSN_SWITCH_TEXT_SECTIONS>: Output
6845         the first part of the exception table and emit unwind directives.
6846         * config/i386/i386-protos.h (i386_pe_end_cold_function): Declare.
6847         (i386_pe_seh_cold_init): Likewise.
6848         * config/i386/cygming.h (ASM_DECLARE_COLD_FUNCTION_NAME): New macro.
6849         (ASM_DECLARE_COLD_FUNCTION_SIZE): Likewise.
6850         * config/i386/i386.c (x86_expand_epilogue): Fix wording in comment.
6851         (ix86_output_call_insn): Emit a nop in one more case for SEH.
6852         * config/i386/winnt.c: Include except.h.
6853         (struct seh_frame_state): Add reg_offset, after_prologue and
6854         in_cold_section fields.
6855         (i386_pe_seh_end_prologue): Set seh->after_prologue.
6856         (i386_pe_seh_cold_init): New function.
6857         (i386_pe_seh_fini): Add COLD parameter and bail out if it is not equal
6858         to seh->in_cold_section.
6859         (seh_emit_push): Record the offset of the push.
6860         (seh_emit_save): Record the offet of the save.
6861         (i386_pe_seh_unwind_emit): Deal with NOTE_INSN_SWITCH_TEXT_SECTIONS.
6862         Test seh->after_prologue to disregard the epilogue.
6863         (i386_pe_end_function): Pass FALSE to i386_pe_seh_fini.
6864         (i386_pe_end_cold_function): New function.
6866 2018-03-07  Jakub Jelinek  <jakub@redhat.com>
6868         PR fortran/84565
6869         * config/aarch64/predicates.md (aarch64_simd_reg_or_zero): Use
6870         aarch64_simd_or_scalar_imm_zero rather than aarch64_simd_imm_zero.
6872         PR c++/84704
6873         * gimple-expr.c (create_tmp_var_raw): Set DECL_NAMELESS flag
6874         on tmp_var.
6875         * tree-pretty-print.c (dump_decl_name): For TDF_COMPARE_DEBUG,
6876         don't print names of DECL_NAMELESS DECL_IGNORED_P decls.
6878         PR middle-end/84723
6879         * multiple_target.c: Include tree-inline.h and intl.h.
6880         (expand_target_clones): Diagnose and fail if node->definition and
6881         !tree_versionable_function_p (node->decl).
6883 2018-03-06  John David Anglin  <danglin@gcc.gnu.org>
6885         * config/pa/pa.h (ASM_GENERATE_INTERNAL_LABEL): Revise to use
6886         sprint_ul.
6887         (ASM_OUTPUT_ADDR_VEC_ELT): Revise for above change.
6888         (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
6889         * config/pa/pa64-hpux.h (ASM_GENERATE_INTERNAL_LABEL): Revise as above.
6891 2018-03-06  Jakub Jelinek  <jakub@redhat.com>
6893         PR target/84710
6894         * combine.c (try_combine): Use reg_or_subregno instead of handling
6895         just paradoxical SUBREGs and REGs.
6897 2018-03-06  Claudiu Zissulescu  <claziss@synopsys.com>
6899          * config/arc/arc.c (arc_finalize_pic): Remove function.
6900          (arc_must_save_register): We use single base PIC register, remove
6901          checks to save/restore the PIC register.
6902          (arc_expand_prologue): Likewise.
6903          * config/arc/arc-protos.h (arc_set_default_type_attributes):
6904          Remove.
6905          (arc_verify_short): Likewise.
6906          (arc_attr_type): Likewise.
6907          * config/arc/arc.c (arc_set_default_type_attributes): Remove.
6908          (walk_stores): Likewise.
6909          (arc_address_cost): Make it static.
6910          (arc_verify_short): Likewise.
6911          (branch_dest): Likewise.
6912          (arc_attr_type): Likewise.
6913          * config/arc/arc.c (TARGET_ADJUST_INSN_LENGTH): Remove.
6914          (TARGET_INSN_LENGTH_PARAMETERS): Likewise.
6915          (arc_final_prescan_insn): Remove inserting the nops due to
6916          hardware hazards.  It is done in reorg step.
6917          (insn_length_variant_t): Remove.
6918          (insn_length_parameters_t): Likewise.
6919          (arc_insn_length_parameters): Likewise.
6920          (arc_get_insn_variants): Likewise.
6921          * config/arc/arc.h (TARGET_UPSIZE_DBR): Remove.
6923 2018-03-06  Jakub Jelinek  <jakub@redhat.com>
6925         PR inline-asm/84683
6926         * reg-stack.c (move_for_stack_reg): If any_malformed_asm, avoid
6927         assertion failure.
6929         PR tree-optimization/84687
6930         * omp-simd-clone.c (simd_clone_create): Clear DECL_BUILT_IN_CLASS
6931         on new_node->decl.
6932         * match.pd (pow(C,x)*expN(y) -> expN(logN(C)*x+y)): New optimization.
6934 2018-03-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
6936         * config/rs6000/rs6000-builtin.def (rs6000_speculation_barrier):
6937         Rename to ppc_speculation_barrier.
6938         * config/rs6000/rs6000.c (rs6000_init_builtins): Rename builtin to
6939         __builtin_ppc_speculation_barrier.
6941 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
6943         PR target/84700
6944         * combine.c (combine_simplify_rtx): Don't try to simplify if
6945         if_then_else_cond returned non-NULL, but either true_rtx or false_rtx
6946         are equal to x.
6948 2018-03-05  Segher Boessenkool  <segher@kernel.crashing.org>
6950         * config/rs6000/rs6000.c (rs6000_loop_align): Don't align tiny loops
6951         to 32 bytes when compiling for POWER9.
6953 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
6955         PR target/84564
6956         * config/i386/i386.c (ix86_function_ok_for_sibcall): Check for
6957         regparm >= 3 with no arg reg available also for calls with
6958         flag_force_indirect_call.  Pass decl to ix86_function_regparm.
6960         PR target/84524
6961         * config/i386/sse.md (*<code><mode>3): Replace <mask_prefix3> with
6962         orig,vex.
6963         (*<plusminus_insn><mode>3): Likewise.  Remove <mask_operand3> uses.
6965 2018-03-05  Peter Bergner  <bergner@vnet.ibm.com>
6967         PR target/84264
6968         * config/rs6000/vector.md (mov<mode>): Disallow altivec memory operands.
6970 2018-03-05  Richard Biener  <rguenther@suse.de>
6972         PR tree-optimization/84486
6973         * tree-ssa-pre.c (create_expression_by_pieces): Remove dead code.
6974         When inserting a __builtin_assume_aligned call set the LHS
6975         SSA name alignment info accordingly.
6977 2018-03-05  Wilco Dijkstra  <wdijkstr@arm.com>
6979         PR tree-optimization/84114
6980         * config/aarch64/aarch64.c (aarch64_reassociation_width)
6981         Avoid reassociation of FLOAT_MODE addition.
6983 2018-03-05  Olga Makhotina  <olga.makhotina@intel.com>
6985         * common/config/i386/i386-common.c (OPTION_MASK_ISA_PCONFIG_SET,
6986         OPTION_MASK_ISA_PCONFIG_UNSET, OPTION_MASK_ISA_WBNOINVD_SET,
6987         OPTION_MASK_ISA_WBNOINVD_UNSET): New definitions.
6988         (ix86_handle_option): Handle -mpconfig and -mwbnoinvd.
6989         * config.gcc (pconfigintrin.h, wbnoinvdintrin.h) : Add headers.
6990         * config/i386/cpuid.h (bit_PCONFIG, bit_WBNOINVD): New.
6991         * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mpconfig
6992         and -mwbnoinvd.
6993         * config/i386/i386-builtin.def (__builtin_ia32_wbnoinvd,
6994         __builtin_ia32_wbinvd): New builtins.
6995         (SPECIAL_ARGS2): New.
6996         * config/i386/i386-c.c (__WBNOINVD__, __PCONFIG__): New.
6997         (SPECIAL_ARGS2): New.
6998         * config/i386/i386.c (ix86_target_string): Add -mpconfig and -mwbnoinvd.
6999         (ix86_valid_target_attribute_inner_p): Ditto.
7000         (ix86_init_mmx_sse_builtins): Add special_args2.
7001         * config/i386/i386.h (TARGET_PCONFIG, TARGET_PCONFIG_P, TARGET_WBNOINVD,
7002         TARGET_WBNOINVD_P): New.
7003         * config/i386/i386.md (UNSPECV_WBINVD, UNSPECV_WBNOINVD): New.
7004         (define_insn "wbinvd", define_insn "wbnoinvd"): New.
7005         * config/i386/i386.opt: Add -mpconfig and -mwbnoinvd.
7006         * config/i386/immintrin.h (_wbinvd): New intrinsic.
7007         * config/i386/pconfigintrin.h: New file.
7008         * config/i386/wbnoinvdintrin.h: Ditto.
7009         * config/i386/x86intrin.h: Add headers pconfigintrin.h and wbnoinvdintrin.h.
7010         * doc/invoke.texi (-mpconfig, -mwbnoinvd): New.
7012 2018-03-05  Richard Biener  <rguenther@suse.de>
7014         PR tree-optimization/84670
7015         * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
7016         member.
7017         (BB_VISITED_WITH_VISITED_SUCCS): New define.
7018         (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
7019         (compute_antic_aux): Only assert the number of values in ANTIC_IN
7020         doesn't grow if all successors (recursively) were visited at least
7021         once.
7023 2018-03-05  Richard Biener  <rguenther@suse.de>
7025         PR tree-optimization/84650
7026         * tree-ssa-loop-im.c (pass_lim::execute): Reset the SCEV cache
7027         if executed in the loop pipeline.
7029 2018-03-05  Sandra Loosemore  <sandra@codesourcery.com>
7031         * doc/configfiles.texi (Configuration Files): Move info about
7032         conditionalizing $target-protos.h to...
7033         * doc/sourcebuild.texi (Back End): Here.  Explain how $target.h
7034         differs from $target-protos.h.
7036 2018-03-05  Kito Cheng  <kito.cheng@gmail.com>
7037             Chung-Ju Wu  <jasonwucj@gmail.com>
7039         * config/nds32/nds32-protos.h (nds32_expand_setmem): Declare.
7040         * config/nds32/nds32-multiple.md (setmemsi): Define.
7041         * config/nds32/nds32-memory-manipulation.c
7042         (nds32_gen_dup_4_byte_to_word_value): New.
7043         (emit_setmem_word_loop): New.
7044         (emit_setmem_byte_loop): New.
7045         (nds32_expand_setmem_loop): New.
7046         (nds32_expand_setmem_loop_v3m): New.
7047         (nds32_expand_setmem_unroll): New.
7048         (nds32_expand_setmem): New.
7050 2018-03-04  Kito Cheng  <kito.cheng@gmail.com>
7051             Chung-Ju Wu  <jasonwucj@gmail.com>
7053         * config/nds32/nds32-memory-manipulation.c
7054         (nds32_emit_load_store): New.
7055         (nds32_emit_post_inc_load_store): New.
7056         (nds32_emit_mem_move): New.
7057         (nds32_emit_mem_move_block): New.
7058         (nds32_expand_movmemsi_loop_unknown_size): New.
7059         (nds32_expand_movmemsi_loop_known_size): New.
7060         (nds32_expand_movmemsi_loop): New.
7061         (nds32_expand_movmemsi_unroll): New.
7062         (nds32_expand_movmemqi): Rename ...
7063         (nds32_expand_movmemsi): ... to this.
7064         * config/nds32/nds32-multiple.md (movmemqi): Rename ...
7065         (movmemsi): ... to this.
7066         * config/nds32/nds32-protos.h (nds32_expand_movmemqi): Rename ...
7067         (nds32_expand_movmemsi): ... to this.
7069 2018-03-04  Kito Cheng  <kito.cheng@gmail.com>
7070             Monk Chiang  <sh.chiang04@gmail.com>
7071             Chung-Ju Wu  <jasonwucj@gmail.com>
7073         * config/nds32/nds32-protos.h
7074         (nds32_expand_load_multiple): New arguments.
7075         (nds32_expand_store_multiple): Ditto.
7076         (nds32_valid_multiple_load_store): Rename ...
7077         (nds32_valid_multiple_load_store_p): ... to this.
7078         * config/nds32/nds32-memory-manipulation.c
7079         (nds32_expand_load_multiple): Refine implementation.
7080         (nds32_expand_store_multiple): Ditto.
7081         * config/nds32/nds32-multiple.md
7082         (load_multiple): Update nds32_expand_load_multiple interface.
7083         (store_multiple): Update nds32_expand_store_multiple interface.
7084         * config/nds32/nds32-predicates.c
7085         (nds32_valid_multiple_load_store): Rename ...
7086         (nds32_valid_multiple_load_store_p): ... to this and refine
7087         implementation.
7088         * config/nds32/predicates.md
7089         (nds32_load_multiple_and_update_address_operation): New predicate.
7090         (nds32_store_multiple_and_update_address_operation): New predicate.
7092 2018-03-04  Kito Cheng  <kito.cheng@gmail.com>
7093             Chung-Ju Wu  <jasonwucj@gmail.com>
7095         * config/nds32/nds32.md (type): Add load_multiple and store_multiple.
7096         (combo): New attribute.
7097         * config/nds32/nds32-multiple.md: Refine patterns with new attributes.
7099 2018-03-03  Chung-Ju Wu  <jasonwucj@gmail.com>
7101         * config/nds32/nds32.opt: Change -mcmodel= default value.
7103 2018-03-03  Kito Cheng  <kito.cheng@gmail.com>
7104             Monk Chiang  <sh.chiang04@gmail.com>
7105             Chung-Ju Wu  <jasonwucj@gmail.com>
7107         * config/nds32/constants.md (unspec_element): New enum.
7108         * config/nds32/constraints.md (Umw): New constraint.
7109         * config/nds32/nds32-intrinsic.c: Add more builtin functions.
7110         * config/nds32/nds32-intrinsic.md: Likewise.
7111         * config/nds32/nds32-md-auxiliary.c (nds32_regno_to_enable4): New.
7112         (nds32_valid_smw_lwm_base_p): New.
7113         (nds32_output_smw_single_word): New.
7114         (nds32_output_lmw_single_word): New.
7115         (nds32_expand_unaligned_load): New.
7116         (nds32_expand_unaligned_store): New.
7117         * config/nds32/nds32-protos.h (nds32_valid_smw_lwm_base_p): Declare.
7118         (nds32_output_smw_single_word): Declare.
7119         (nds32_output_lmw_single_word): Declare.
7120         (nds32_expand_unaligned_load): Declare.
7121         (nds32_expand_unaligned_store): Declare.
7122         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_UALOAD_HW,
7123         NDS32_BUILTIN_UALOAD_W, NDS32_BUILTIN_UALOAD_DW,
7124         NDS32_BUILTIN_UASTORE_HW, NDS32_BUILTIN_UASTORE_W,
7125         NDS32_BUILTIN_UASTORE_DW.
7126         * config/nds32/predicates.md (nds32_lmw_smw_base_operand): New
7127         predicate.
7129 2018-03-03  Monk Chiang  <sh.chiang04@gmail.com>
7130             Kito Cheng  <kito.cheng@gmail.com>
7131             Chung-Ju Wu  <jasonwucj@gmail.com>
7133         * config/nds32/nds32-intrinsic.c
7134         (nds32_expand_builtin_null_ftype_reg): Delete.
7135         (nds32_expand_builtin_reg_ftype_imm): Ditto.
7136         (nds32_expand_builtin_null_ftype_reg_imm): Ditto.
7137         (nds32_read_argument): New.
7138         (nds32_legitimize_target): Ditto.
7139         (nds32_legitimize_argument): Ditto.
7140         (nds32_check_constant_argument): Ditto.
7141         (nds32_expand_unop_builtin): Ditto.
7142         (nds32_expand_unopimm_builtin): Ditto.
7143         (nds32_expand_binop_builtin): Ditto.
7144         (nds32_builtin_decl_impl): Ditto.
7145         (builtin_description): Ditto.
7146         (nds32_expand_builtin_impl): Rewrite with new infrastructure.
7147         (nds32_init_builtins_impl): Ditto.
7148         * config/nds32/nds32.c (TARGET_BUILTIN_DECL): Define.
7149         (nds32_builtin_decl): New.
7150         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_COUNT.
7151         * config/nds32/nds32-protos.h (nds32_builtin_decl_impl): Declare.
7153 2018-03-02  Jeff Law  <law@redhat.com>
7155         * reorg.c (stop_search_p): Handle DEBUG_INSN.
7156         (redundant_insn, fill_simple_delay_slots): Likewise.
7157         (fill_slots_from_thread): Likewise.
7158         * resource.c (mark_referenced_resources): Likewise.
7159         (mark_set_resources, find_dead_or_set_registers): Likewise.
7161 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
7163         * substring-locations.h (format_warning_va): Formatting fix for
7164         ATTRIBUTE_GCC_DIAG.
7165         (format_warning_at_substring): Fix up ATTRIBUTE_GCC_DIAG second
7166         argument.
7167         (format_warning_n_va, format_warning_at_substring_n): New prototypes.
7168         * substring-locations.c: Include intl.h.
7169         (format_warning_va): Turned into small wrapper around
7170         format_warning_n_va, renamed to ...
7171         (format_warning_n_va): ... this, add N and PLURAL_GMSGID arguments,
7172         rename GMSGID to SINGULAR_GMSGID, if SINGULAR_GMSGID != PLURAL_GMSGID,
7173         use ngettext.
7174         (format_warning_at_substring_n): New function.
7175         * gimple-ssa-sprintf.c: Remove GCC diagnostic ignored pragma.
7176         (fmtwarn): Add ATTRIBUTE_GCC_DIAG.  Turn into a copy of
7177         format_warning_at_substring with just a shorter name instead of
7178         const function pointer.
7179         (fmtwarn_n): New function.
7180         (maybe_warn, format_directive, parse_directive): Use fmtwarn_n where
7181         appropriate, get rid of all the fmtstr temporaries, move conditionals
7182         with G_() wrapped string literals directly into fmtwarn arguments,
7183         cast dir.len to (int), formatting fixes.
7185 2018-03-02  Thomas Schwinge  <thomas@codesourcery.com>
7187         * doc/invoke.texi: Remove "Cilk Plus" references.
7189 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
7190             Richard Biener  <rguenther@suse.de>
7192         PR ipa/84628
7193         * expr.c (expand_expr_real_1) <case CALL_EXPR>: Don't emit diagnostics
7194         for error or warning attributes if CALL_FROM_THUNK_P is set.
7195         Formatting fixes.
7197 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
7199         PR target/56540
7200         * config/pa/pa.h (TARGET_CPU_CPP_BUILTINS): Predefine
7201         __SIZEOF_128__ macro if HPUX_LONG_DOUBLE_LIBRARY.
7203         PR target/56540
7204         * config/ia64/ia64.h (TARGET_CPU_CPP_BUILTINS): Predefine
7205         __SIZEOF_{FPREG,FLOAT{80,128}}__ macros.
7207         * predict.c (test_prediction_value_range): Use PROB_UNINITIALIZED
7208         instead of -1U in last predictors element's probability member.
7210 2018-03-02  Eric Botcazou  <ebotcazou@adacore.com>
7212         PR ipa/83983
7213         * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
7214         arguments if they are comparable.
7216 2018-03-02  Richard Sandiford  <richard.sandiford@linaro.org>
7218         PR tree-optimization/84634
7219         * tree-vect-stmts.c (vectorizable_store, vectorizable_load): Replace
7220         masks and masked_loop_p with a single loop_masks, making sure it's
7221         null for bb vectorization.
7223 2018-03-02  Richard Sandiford  <richard.sandiford@linaro.org>
7225         * tree-vect-data-refs.c (vect_analyze_data_ref_dependence)
7226         (vect_analyze_data_ref_access): Use loop->safe_len rather than
7227         loop->force_vectorize to check whether there is no alias.
7229 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
7231         PR target/84614
7232         * rtl.h (prev_real_nondebug_insn, next_real_nondebug_insn): New
7233         prototypes.
7234         * emit-rtl.c (next_real_insn, prev_real_insn): Fix up function
7235         comments.
7236         (next_real_nondebug_insn, prev_real_nondebug_insn): New functions.
7237         * cfgcleanup.c (try_head_merge_bb): Use prev_real_nondebug_insn
7238         instead of a loop around prev_real_insn.
7239         * combine.c (move_deaths): Use prev_real_nondebug_insn instead of
7240         prev_real_insn.
7242         PR inline-asm/84625
7243         * config/i386/i386.c (ix86_print_operand): Use conditional
7244         output_operand_lossage instead of gcc_assert if CONST_VECTOR is not
7245         zero vector.
7247 2018-03-02  Richard Biener  <rguenther@suse.de>
7249         PR tree-optimization/84427
7250         * tree-ssa-pre.c (bitmap_remove_expr_from_set): Remove.
7251         (bitmap_set_subtract_values): Rewrite to handle multiple
7252         exprs per value.
7253         (clean): Likewise.
7254         (prune_clobbered_mems): Likewise.
7255         (phi_translate): Take edge instead of pred/phiblock.
7256         (phi_translate_1): Likewise.
7257         (phi_translate_set): Likewise.  Insert all translated
7258         exprs for a value into the set, keeping possibly multiple
7259         expressions per value.
7260         (compute_antic_aux): Adjust for phi_translate changes.
7261         When intersecting union the expressions and prune those
7262         not in the final value set, keeping possibly multiple
7263         expressions per value.  Do not use value-insertion
7264         for unioning ANTIC_OUT U EXP_GEN - TMP_GEN but merge
7265         all expressions.  Add verification that the value-sets
7266         only shrink during iteration.
7267         (compute_partial_antic_aux): Adjust for the phi_translate changes.
7268         (do_pre_regular_insertion): Likewise.
7269         (do_pre_partial_partial_insertion): Likewise.
7271 2018-03-02  Richard Biener  <rguenther@suse.de>
7273         PR target/82005
7274         * config/darwin.c (saved_debug_info_level): New static global.
7275         (darwin_asm_lto_start): Disable debug info generation for LTO out.
7276         (darwin_asm_lto_end): Restore debug info generation settings.
7278 2018-03-01  Martin Liska  <mliska@suse.cz>
7280         PR sanitizer/82484
7281         * sanopt.c (sanitize_rewrite_addressable_params): Do not handle
7282         volatile arguments.
7284 2018-03-01  Richard Biener  <rguenther@suse.de>
7286         PR debug/84645
7287         * dwarf2out.c (gen_variable_die): Properly handle late VLA
7288         type annotation with LTO when debug was disabled at compile-time.
7290 2018-03-01  Matthew Fortune  <mfortune@gmail.com>
7292         * config/mips/mips.c (mips_final_prescan_insn): Fix incorrect
7293         XINT with INTVAL.
7294         (mips_final_postscan_insn): Likewise.
7296 2018-03-01  Richard Sandiford  <richard.sandiford@linaro.org>
7298         PR rtl-optimization/84528
7299         * alias.c (init_alias_target): Add commentary.
7300         (init_alias_analysis): Only give HARD_FRAME_POINTER_REGNUM
7301         a unique base value if the frame pointer is not eliminated
7302         to the stack pointer.
7304 2018-03-01  Tom de Vries  <tom@codesourcery.com>
7306         PR rtl-optimization/83327
7307         * lra-int.h (hard_regs_spilled_into): Declare.
7308         * lra.c (hard_regs_spilled_into): Define.
7309         (init_reg_info): Init hard_regs_spilled_into.
7310         * lra-spills.c (assign_spill_hard_regs): Update hard_regs_spilled_into.
7311         * lra-lives.c (make_hard_regno_born, make_hard_regno_dead)
7312         (process_bb_lives): Handle hard_regs_spilled_into.
7313         (lra_create_live_ranges_1): Before doing liveness propagation, clear
7314         regs in all_hard_regs_bitmap if set in hard_regs_spilled_into.
7316 2018-02-28  David Edelsohn  <dje.gcc@gmail.com>
7318         * config.gcc (powerpc-ibm-aix7.1.*): New stanza.
7319         (powerpc-ibm-aix[789]*): Default to AIX 7.2.
7320         * config/rs6000/aix71.h (TARGET_DEFAULT): Revert to Power4 ISA.
7321         * config/rs6000/aix72.h: New file.
7323 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
7325         * gimple-ssa-warn-restrict.c (maybe_diag_overlap): Use warning_n
7326         instead of warning_at with conditional singular and plural messages
7327         where possible.
7329         PR target/52991
7330         * stor-layout.c (update_alignment_for_field): For
7331         targetm.ms_bitfield_layout_p (rli->t), if !is_bitfield
7332         && !DECL_PACKED (field), do the alignment update, just use
7333         only desired_align instead of MAX (type_align, desired_align)
7334         as the alignment.
7335         (place_field): Don't do known_align < desired_align handling
7336         early if targetm.ms_bitfield_layout_p (rli->t) and rli->prev_field
7337         is non-NULL, instead do it after rli->prev_field handling and
7338         only if not within a bitfield word.  For DECL_PACKED (field)
7339         use type_align of BITS_PER_UNIT.
7341 2018-02-28  Eric Botcazou  <ebotcazou@adacore.com>
7343         * config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Remove
7344         superfluous parentheses and trailing spaces.
7346 2018-02-28  Richard Biener  <rguenther@suse.de>
7348         PR tree-optimization/84584
7349         * graphite-scop-detection.c (scop_detection::add_scop): Discard
7350         SCoPs with fake exit edge.
7352 2018-02-28  Martin Liska  <mliska@suse.cz>
7354         PR testsuite/84597
7355         * timevar.c (timer::print): Fix format to properly print 100%
7356         values.
7358 2018-02-28  Richard Biener  <rguenther@suse.de>
7360         PR middle-end/84607
7361         * genmatch.c (capture_info::walk_match): Do not mark
7362         captured expressions without operands as expr_p given
7363         they act more like predicates and should be subject to
7364         "lost tail" side-effect preserving.
7366 2018-02-28  Alexandre Oliva  <aoliva@redhat.com>
7368         PR rtl-optimization/81611
7369         * auto-inc-dec.c (attempt_change): Move dead note from
7370         mem_insn if it's the next use of regno
7371         (find_address): Take address use of reg holding
7372         non-incremented value.  Add parm to limit search to the named
7373         reg only.
7374         (merge_in_block): Attempt to use a mem insn that is the next
7375         use of the original regno.
7377 2018-02-27  Martin Sebor  <msebor@redhat.com>
7379         PR c++/83871
7380         * gcc/doc/invoke.texi (-Wmissing-attributes): New option.
7381         * gcc/print-tree.c (print_node): Handle DECL_UNINLINABLE.
7383 2018-02-27  Martin Sebor  <msebor@redhat.com>
7385         PR translation/84207
7386         * diagnostic-core.h (warning_n, error_n, inform_n): Change
7387         n argument to unsigned HOST_WIDE_INT.
7388         * diagnostic.c (warning_n, error_n, inform_n): Ditto.
7389         (diagnostic_n_impl): Ditto.  Handle arguments in excess of LONG_MAX.
7390         * gimple-ssa-sprintf.c (format_directive): Simplify inform_n call.
7391         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Use warning_n.
7393 2018-02-27  Richard Biener  <rguenther@suse.de>
7395         PR tree-optimization/84512
7396         * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost):
7397         Do not use the estimate returned from record_stmt_cost for
7398         the scalar iteration cost but sum properly using add_stmt_cost.
7400 2018-02-27  Richard Biener  <rguenther@suse.de>
7402         PR tree-optimization/84466
7403         * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
7404         Adjust last change to less strictly validate use operands.
7406 2018-02-27  Martin Liska  <mliska@suse.cz>
7408         PR gcov-profile/84548
7409         * gcov.c (process_file): Allow partial overlap and consider it
7410         also as group functions.
7411         (output_lines): Properly calculate range of lines for a group.
7413 2018-02-27  Martin Liska  <mliska@suse.cz>
7415         * timevar.c (timer::print_row): Remove 'usr', 'sys', 'wall' and
7416         'ggc' suffixes.  Change first column width.
7417         (timer::print): Fix formatting of the column.
7419 2018-02-27  Alexandre Oliva  <aoliva@redhat.com>
7421         * tree-ssa-live.c (remove_unused_scope_block_p): Do not
7422         preserve inline entry blocks for the sake of debug inline
7423         entry point markers alone.
7424         (remove_unused_locals): Suggest in comments a better place to
7425         force the preservation of inline entry blocks that are
7426         otherwise unused, but do not preserve them.
7428 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
7430         * config/i386/i386.c (ix86_output_indirect_jmp): Update comments.
7432 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
7434         PR target/84039
7435         * config/i386/constraints.md (Bs): Replace
7436         ix86_indirect_branch_register with
7437         TARGET_INDIRECT_BRANCH_REGISTER.
7438         (Bw): Likewise.
7439         * config/i386/i386.md (indirect_jump): Likewise.
7440         (tablejump): Likewise.
7441         (*sibcall_memory): Likewise.
7442         (*sibcall_value_memory): Likewise.
7443         Peepholes of indirect call and jump via memory: Likewise.
7444         (*sibcall_GOT_32): Disallowed for TARGET_INDIRECT_BRANCH_REGISTER.
7445         (*sibcall_value_GOT_32): Likewise.
7446         * config/i386/predicates.md (indirect_branch_operand): Likewise.
7447         (GOT_memory_operand): Likewise.
7448         (call_insn_operand): Likewise.
7449         (sibcall_insn_operand): Likewise.
7450         (GOT32_symbol_operand): Likewise.
7451         * config/i386/i386.h (TARGET_INDIRECT_BRANCH_REGISTER): New.
7453 2018-02-26  Eric Botcazou  <ebotcazou@adacore.com>
7455         PR rtl-optimization/83496
7456         * reorg.c (steal_delay_list_from_target): Change REDUNDANT array from
7457         booleans to RTXes.  Call fix_reg_dead_note on every non-null element.
7458         (steal_delay_list_from_fallthrough): Call fix_reg_dead_note on a
7459         redundant insn, if any.
7460         (relax_delay_slots): Likewise.
7461         (update_reg_unused_notes): Rename REDUNDANT_INSN to OTHER_INSN.
7463 2018-02-26  Richard Sandiford  <richard.sandiford@linaro.org>
7465         PR tree-optimization/83965
7466         * tree-vect-patterns.c (vect_reassociating_reduction_p): Assume
7467         that grouped statements are part of a reduction chain.  Return
7468         true if the statement is not marked as a reduction itself but
7469         is part of a group.
7470         (vect_recog_dot_prod_pattern): Don't check whether the statement
7471         is part of a group here.
7472         (vect_recog_sad_pattern): Likewise.
7473         (vect_recog_widen_sum_pattern): Likewise.
7475 2018-02-26  Eric Botcazou  <ebotcazou@adacore.com>
7477         PR debug/84545
7478         * final.c (rest_of_clean_state): Also look for calls inside sequences.
7480 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
7482         PR target/84530
7483         * config/i386/i386-protos.h (ix86_output_indirect_jmp): Remove
7484         the bool argument.
7485         (ix86_output_indirect_function_return): New prototype.
7486         (ix86_split_simple_return_pop_internal): Likewise.
7487         * config/i386/i386.c (indirect_return_via_cx): New.
7488         (indirect_return_via_cx_bnd): Likewise.
7489         (indirect_thunk_name): Handle return va CX_REG.
7490         (output_indirect_thunk_function): Create alias for
7491         __x86_return_thunk_[re]cx and __x86_return_thunk_[re]cx_bnd.
7492         (ix86_output_indirect_jmp): Remove the bool argument.
7493         (ix86_output_indirect_function_return): New function.
7494         (ix86_split_simple_return_pop_internal): Likewise.
7495         * config/i386/i386.md (*indirect_jump): Don't pass false
7496         to ix86_output_indirect_jmp.
7497         (*tablejump_1): Likewise.
7498         (simple_return_pop_internal): Change it to define_insn_and_split.
7499         Call ix86_split_simple_return_pop_internal to split it for
7500         -mfunction-return=.
7501         (simple_return_indirect_internal): Call
7502         ix86_output_indirect_function_return instead of
7503         ix86_output_indirect_jmp.
7505 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
7507         PR bootstrap/84405
7508         * vec.h (vec_default_construct): For BROKEN_VALUE_INITIALIZATION use
7509         memset and value initialization afterwards.
7511 2018-02-26  Christophe Lyon  <christophe.lyon@linaro.org>
7513         * Makefile.in (lto-wrapper): Use ALL_LINKERFLAGS.
7515 2018-02-26  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
7517         PR target/84521
7518         * common/config/aarch64/aarch64-common.c
7519         (aarch_option_optimization_table[]): Switch
7520         off fomit-frame-pointer
7522 2018-02-26  Kito Cheng  <kito.cheng@gmail.com>
7523             Chung-Ju Wu  <jasonwucj@gmail.com>
7525         * config/nds32/nds32-multiple.md (load_multiple): Disallow
7526         volatile memory.
7527         (store_multiple): Ditto.
7529 2018-02-26  Kito Cheng  <kito.cheng@gmail.com>
7531         * config.gcc: Add --with-cpu support for nds32 target.
7532         * config/nds32/nds32-opts.h (nds32_cpu_type): New.
7533         * config/nds32/nds32.opt: Add -mcpu= option.
7535 2018-02-25  Segher Boessenkool  <segher@kernel.crashing.org>
7537         * config/rs6000/rs6000.opt (mvrsave=no, mvrsave=yes, isel=no,
7538         isel=yes): Warn for these deprecated options.
7540 2018-02-23  David Edelsohn  <dje.gcc@gmail.com>
7542         * config/rs6000/aix71.h (TARGET_DEFAULT): Change to
7543         ISA_2_5_MASKS_EMBEDDED.
7545 2018-02-23  Jakub Jelinek  <jakub@redhat.com>
7547         * ipa-prop.c (ipa_vr_ggc_hash_traits::hash): Hash p->min and
7548         p->max as pointers rather than using iterative_hash_expr.
7550 2018-02-23  Carl Love  <cel@us.ibm.com>
7552         * config/rs6000/rs6000-builtin.def: Change VSIGNED2 and VUNSIGNED2
7553         macro expansions from BU_VSX_2 to BU_P8V_VSX_2 and BU_VSX_OVERLOAD_2 to
7554         BU_P8V_OVERLOAD_2.
7555         * config/rs6000/rs6000-c.c: Change VSX_BUILTIN_VEC_VSIGNED2 to
7556         P8V_BUILTIN_VEC_VSIGNED2.  Change VSX_BUILTIN_VEC_VUNSIGNED2 to
7557         P8V_BUILTIN_VEC_VUNSIGNED2.
7559 2018-02-22  Vladimir Makarov  <vmakarov@redhat.com>
7561         PR target/81572
7562         * lra-int.h (LRA_UNKNOWN_ALT, LRA_NON_CLOBBERED_ALT): New macros.
7563         * lra.c (lra_set_insn_recog_data, lra_update_insn_recog_data): Use
7564         LRA_UNKNOWN_ALT.
7565         * lra-constraints.c (curr_insn_transform): Set up
7566         LRA_NON_CLOBBERED_ALT for moves processed on the fast path.  Use
7567         LRA_UNKNOWN_ALT.
7568         (remove_inheritance_pseudos): Use LRA_UNKNOWN_ALT.
7569         * lra-eliminations.c (spill_pseudos): Ditto.
7570         (process_insn_for_elimination): Ditto.
7571         * lra-lives.c (reg_early_clobber_p): Use the new macros.
7572         * lra-spills.c (spill_pseudos): Use LRA_UNKNOWN_ALT and
7573         LRA_NON_CLOBBERED_ALT.
7575 2018-02-22  Martin Sebor  <msebor@redhat.com>
7577         PR tree-optimization/84480
7578         * gimple-fold.c (gimple_fold_builtin_strcpy): Move warnings
7579         to maybe_diag_stxncpy_trunc.  Call it.
7580         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Integrate warnings
7581         from gimple_fold_builtin_strcpy.  Print inlining stack.
7582         (handle_builtin_stxncpy): Print inlining stack.
7583         * tree-ssa-strlen.h (maybe_diag_stxncpy_trunc): Declare.
7585 2018-02-22  H.J. Lu  <hongjiu.lu@intel.com>
7587         PR target/84176
7588         * config/i386/i386.c (ix86_set_indirect_branch_type): Issue an
7589         error when -mindirect-branch=thunk-extern, -fcf-protection=branch
7590         and -fcheck-pointer-bounds are used together.
7591         (indirect_thunk_prefix): New enum.
7592         (indirect_thunk_need_prefix): New function.
7593         (indirect_thunk_name): Replace need_bnd_p with need_prefix.  Use
7594         "_nt" instead of "_bnd" for NOTRACK prefix.
7595         (output_indirect_thunk): Replace need_bnd_p with need_prefix.
7596         (output_indirect_thunk_function): Likewise.
7597         (): Likewise.
7598         (ix86_code_end): Update output_indirect_thunk_function calls.
7599         (ix86_output_indirect_branch_via_reg): Replace
7600         ix86_bnd_prefixed_insn_p with indirect_thunk_need_prefix.
7601         (ix86_output_indirect_branch_via_push): Likewise.
7602         (ix86_output_function_return): Likewise.
7603         * doc/invoke.texi: Document -mindirect-branch=thunk-extern is
7604         incompatible with -fcf-protection=branch and
7605         -fcheck-pointer-bounds.
7607 2018-02-22  Steve Ellcey  <sellcey@cavium.com>
7609         PR target/83335
7610         * config/aarch64/aarch64.c (aarch64_print_address_internal):
7611         Change gcc_assert call to output_operand_lossage.
7613 2018-02-22  Steve Ellcey  <sellcey@cavium.com>
7615         * doc/extend.texi (__builtin_extend_pointer): Document builtin.
7617 2018-02-22  DJ Delorie  <dj@redhat.com>
7618             Sebastian Perta  <sebastian.perta@renesas.com>
7619             Oleg Endo  <olegendo@gcc.gnu.org>
7621         * config/rx/rx.c (rx_rtx_costs): New function.
7622         (TARGET_RTX_COSTS): Override to use rx_rtx_costs.
7624 2018-02-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
7626         * config/arm/t-multilib: Map Armv8-R to Armv7 multilibs.
7628 2018-02-22  Martin Liska  <mliska@suse.cz>
7630         PR driver/83193
7631         * common/config/arm/arm-common.c (arm_print_hint_for_cpu_option):
7632         Add "native" as a possible value.
7634 2018-02-22  Martin Liska  <mliska@suse.cz>
7636         PR driver/83193
7637         * config/i386/i386.c (ix86_option_override_internal):
7638         Add "native" as a possible value for -march and -mtune.
7640 2018-02-22  Jakub Jelinek  <jakub@redhat.com>
7642         PR target/84502
7643         * stor-layout.c (finalize_type_size): Propagate TYPE_EMPTY_P flag
7644         to all type variants.
7646         PR tree-optimization/84503
7647         * gimple-ssa-store-merging.c (merged_store_group::merge_into): Compute
7648         width as info->bitpos + info->bitsize - start.
7649         (merged_store_group::merge_overlapping): Simplify width computation.
7650         (check_no_overlap): New function.
7651         (imm_store_chain_info::try_coalesce_bswap): Compute expected
7652         start + width and last_order of the group, fail if check_no_overlap
7653         fails.
7654         (imm_store_chain_info::coalesce_immediate_stores): Don't merge info
7655         to group if check_no_overlap fails.
7657 2018-02-21  Segher Boessenkool  <segher@kernel.crashing.org>
7659         * config/rs6000/altivec.md: Delete contraint arguments to
7660         define_expand, define_split, and define_peephole2, and in
7661         define_insn_and_split if always unused.
7662         * config/rs6000/darwin.md: Ditto.
7663         * config/rs6000/dfp.md: Ditto.
7664         * config/rs6000/rs6000.md: Ditto.
7665         * config/rs6000/sync.md: Ditto.
7666         * config/rs6000/vector.md: Ditto.
7667         * config/rs6000/vsx.md: Ditto.
7669 2018-02-21  Segher Boessenkool  <segher@kernel.crashing.org>
7671         * config/rs6000/altivec.md: Write output control strings as braced
7672         blocks instead of double-quoted strings.
7673         * config/rs6000/darwin.md: Ditto.
7674         * config/rs6000/rs6000.md: Ditto.
7675         * config/rs6000/vector.md: Ditto.
7676         * config/rs6000/vsx.md: Ditto.
7678 2018-02-21  Jason Merrill  <jason@redhat.com>
7680         PR c++/84314 - ICE with templates and fastcall attribute.
7681         * attribs.c (build_type_attribute_qual_variant): Remove assert.
7683 2018-02-21  Jan Hubicka  <hubicka@ucw.cz>
7685         * ipa-cp.c (determine_versionability): Fix comment typos.
7687 2018-02-21  Jan Hubicka  <hubicka@ucw.cz>
7689         PR c/84229
7690         * ipa-cp.c (determine_versionability): Do not version functions caling
7691         va_arg_pack.
7693 2018-02-21  Martin Liska  <mliska@suse.cz>
7695         PR driver/83193
7696         * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch):
7697         Add "native" as a possible value.
7698         * config/aarch64/aarch64.h (HAVE_LOCAL_CPU_DETECT):  Define
7699         the macro when native cpu detection is available.
7701 2018-02-21  Martin Liska  <mliska@suse.cz>
7703         PR driver/83193
7704         * common/config/arm/arm-common.c (arm_print_hint_for_arch_option):
7705         Add "native" as a possible value.
7706         * config/arm/arm.h (HAVE_LOCAL_CPU_DETECT): Define the macro
7707         when native cpu detection is available.
7709 2018-02-21  Jakub Jelinek  <jakub@redhat.com>
7710             Martin Sebor  <msebor@redhat.com>
7712         PR tree-optimization/84478
7713         * gimple-fold.h (get_range_strlen): Add a bool argument defaulted to
7714         false.
7715         * gimple-fold.c (get_range_strlen): Make minlen const and assume it
7716         can't be NULL.  Change FUZZY from bool to int, for 1 add PHI/COND_EXPR
7717         support which is conservatively correct, for 2 only stay conservative
7718         for maxlen.  Formatting and comment capitalization fixes.  Add STRICT
7719         argument to the 2 argument get_range_strlen, adjust 6 arg
7720         get_range_strlen caller and clear minmaxlen[0] and [1] if it returned
7721         false.
7722         (get_maxval_strlen): Adjust 6 arg get_range_strlen caller.
7723         (gimple_fold_builtin_strlen): Pass true as last argument to
7724         get_range_strlen.
7726 2018-02-20  Martin Sebor  <msebor@redhat.com>
7728         PR middle-end/84095
7729         * gimple-ssa-warn-restrict.c (builtin_memref::extend_offset_range): New.
7730         (builtin_memref::set_base_and_offset): Same.  Handle inner references.
7731         (builtin_memref::builtin_memref): Factor out parts into
7732         set_base_and_offset and call it.
7734 2018-02-20  Richard Sandiford  <richard.sandiford@linaro.org>
7736         PR middle-end/84406
7737         * optabs-query.c (find_widening_optab_handler_and_mode): If from_mode
7738         is a scalar_int_mode, assert that to_mode is a scalar_int_mode with
7739         greater precision.  If to_mode is a MODE_PARTIAL_INT, stop the
7740         search at the associated MODE_INT.
7742 2018-02-20  Jeff Law  <law@redhat.com>
7744         PR middle-end/82123
7745         PR tree-optimization/81592
7746         PR middle-end/79257
7747         * gimple-ssa-sprintf.c (format_integer): Query EVRP range analyzer
7748         for range data rather than using global data.
7749         * gimple-ssa-sprintf.c (get_int_range): Query EVRP range analyzer for
7750         range data rather than using global data.
7751         * gimple-ssa-sprintf.c (get_int_range): Accept vr_values parameter
7752         pass it to children as needed.
7753         (struct directive::fmtresult): Similarly.
7754         (struct directive::set_width): Similarly.
7755         (struct directive::set_precision): Similarly.
7756         (format_integer, format_directive, parse_directive): Similarly.
7757         (format_none): Accept unnamed vr_values parameter.
7758         (format_percent, format_floating, format_character): Similarly.
7759         (format_string, format_plain): Similarly.
7760         * gimple-ssa-sprintf.c (sprintf_dom_walker::handle_gimple_call): Query
7761         the EVRP range analyzer for range data rather than using global data.
7762         * gimple-ssa-sprintf.c: Include alloc-pool.h, vr-values.h and 
7763         gimple-ssa-evrp-analyze.h
7764         (class sprintf_dom_walker): Add after_dom_children member function.
7765         Add evrp_range_analyzer member.
7766         (sprintf_dom_walker::before_dom_children): Call into the EVRP
7767         range analyzer as needed.
7768         (sprintf_dom_walker::after_dom_children): New member function.
7769         * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::enter): Do nothing
7770         if not optimizing.
7771         (evrp_range_analyzer::record_ranges_from_stmt): Likewise.
7772         (evrp_range_analyzer::pop_to_marker): Likewise.
7774 2018-02-20  Richard Sandiford  <richard.sandiford@linaro.org>
7776         PR tree-optimization/84419
7777         * internal-fn.c (expand_call_mem_ref): Create a TARGET_MEM_REF
7778         with the required type if its current type is compatible but
7779         different.
7781 2018-02-20  Jakub Jelinek  <jakub@redhat.com>
7783         PR middle-end/82004
7784         * match.pd (pow(C,x) -> exp(log(C)*x)): Delay all folding until
7785         after vectorization.
7787 2018-02-20  Martin Liska  <mliska@suse.cz>
7789         PR driver/83193
7790         * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch): Print
7791         possible values if we don't have a hint.
7793 2018-02-20  Martin Liska  <mliska@suse.cz>
7795         PR c/84310
7796         PR target/79747
7797         * final.c (shorten_branches): Build align_tab array with one
7798         more element.
7799         * opts.c (finish_options): Add alignment option limit check.
7800         (MAX_CODE_ALIGN): Likewise.
7801         (MAX_CODE_ALIGN_VALUE): Likewise.
7802         * doc/invoke.texi: Document maximum allowed option value for
7803         all -falign-* options.
7805 2018-02-19  Jakub Jelinek  <jakub@redhat.com>
7807         PR target/84146
7808         * reg-notes.def (REG_CALL_ARG_LOCATION): New reg note.
7809         * insn-notes.def (NOTE_INSN_CALL_ARG_LOCATION): Remove.
7810         * var-tracking.c (emit_note_insn_var_location): Remove all references
7811         to NOTE_INSN_CALL_ARG_LOCATION.
7812         (emit_notes_in_bb): Emit arguments as REG_CALL_ARG_LOCATION note on
7813         the CALL_INSN rather than separate NOTE_INSN_CALL_ARG_LOCATION note.
7814         Use copy_rtx_if_shared.
7815         * dwarf2out.c (gen_subprogram_die): Use XEXP with 0 instead of
7816         NOTE_VAR_LOCATION on ca_loc->call_arg_loc_note.
7817         (dwarf2out_var_location): Remove handling of
7818         NOTE_INSN_CALL_ARG_LOCATION, instead handle REG_CALL_ARG_LOCATION note
7819         on call_insn.
7820         * final.c (final_scan_insn): Remove all references to
7821         NOTE_INSN_CALL_ARG_LOCATION.
7822         (rest_of_clean_state): Likewise.  Remove REG_CALL_ARG_LOCATION notes
7823         before dumping final insns.
7824         * except.c (emit_note_eh_region_end): Remove all references to
7825         NOTE_INSN_CALL_ARG_LOCATION.
7826         * config/alpha/alpha.c (alpha_pad_function_end): Likewise.
7827         * config/c6x/c6x.c (c6x_gen_bundles): Likewise.
7828         * config/arc/arc.c (hwloop_optimize): Likewise.
7829         * config/arm/arm.c (create_fix_barrier): Likewise.
7830         * config/s390/s390.c (s390_chunkify_start): Likewise.
7831         * config/sh/sh.c (find_barrier): Likewise.
7832         * config/i386/i386.c (rest_of_insert_endbranch,
7833         ix86_seh_fixup_eh_fallthru): Likewise.
7834         * config/xtensa/xtensa.c (hwloop_optimize): Likewise.
7835         * config/iq2000/iq2000.c (final_prescan_insn): Likewise.
7836         * config/frv/frv.c (frv_function_prologue): Likewise.
7837         * emit-rtl.c (try_split): Likewise.  Copy over REG_CALL_ARG_LOCATION
7838         reg note.
7839         (note_outside_basic_block_p): Remove all references to
7840         NOTE_INSN_CALL_ARG_LOCATION.
7841         * gengtype.c (adjust_field_rtx_def): Likewise.
7842         * print-rtl.c (rtx_writer::print_rtx_operand_code_0, print_insn):
7843         Likewise.
7844         * jump.c (cleanup_barriers, delete_related_insns): Likewise.
7845         * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
7847         PR c++/84444
7848         * builtins.c (builtin_mathfn_code): Don't check if CALL_EXPR_FN (t)
7849         is ADDR_EXPR.
7851         PR tree-optimization/84452
7852         * tree-vect-patterns.c (vect_recog_pow_pattern): Don't call
7853         expand_simd_clones if targetm.simd_clone.compute_vecsize_and_simdlen
7854         is NULL.
7856 2018-02-19  Martin Liska  <mliska@suse.cz>
7858         PR sanitizer/82183
7859         * passes.def: Put pass_sancov_O0 before pass_lower_switch with -O0.
7861 2018-02-19  Martin Liska  <mliska@suse.cz>
7862             Richard Sandiford  <richard.sandiford@linaro.org>
7864         PR tree-optimization/82491
7865         * gimple-fold.c (get_base_constructor): Make earlier bail out
7866         to prevent ubsan.
7868 2018-02-19  Carl Love  <cel@us.ibm.com>
7870         * config/rs6000/rs6000-builtin.def: Change NEG macro expansions from
7871         BU_ALTIVEC_A to BU_P8V_AV_1 and BU_ALTIVEC_OVERLOAD_1 to
7872         BU_P8V_OVERLOAD_1.
7873         * config/rs6000/rs6000-c.c: Change ALTIVEC_BUILTIN_VEC_NEG to
7874         P8V_BUILTIN_VEC_NEG.
7876 2018-02-19  Sebastian Perta  <sebastian.perta@renesas.com>
7878         * config/rl78/rl78.md (movdf): New define expand.
7880 2018-02-19  Martin Liska  <mliska@suse.cz>
7882         PR other/80589
7883         * doc/invoke.texi: Fix typo.
7884         * params.def (PARAM_MAX_LOOP_HEADER_INSNS): Likewise.
7886 2018-02-18  Segher Boessenkool  <segher@kernel.crashing.org>
7888         * config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
7889         handle rs6000_single_float and rs6000_double_float specially for
7890         e500 family CPUs.
7892 2018-02-16  Jeff Law  <law@redhat.com>
7894         * config/rx/rx.c (add_pop_cfi_notes): New function.;
7895         (pop_regs): Use it.
7897 2018-02-16  Jakub Jelinek  <jakub@redhat.com>
7899         PR ipa/84425
7900         * ipa-inline.c (inline_small_functions): Fix a typo.
7902 2018-02-16  Nathan Sidwell  <nathan@acm.org>
7904         * doc/extend.texi (Backwards Compatibility): Americanize 'behaviour'.
7906 2018-02-16  Carl Love  <cel@us.ibm.com>
7908         * config/rs6000/rs6000-builtin.def: Add BU_P8V_VSX_2 macro definition.
7909         Change FLOAT2 expansions from BU_VSX_2 to BU_P8V_VSX_2 and
7910         from BU_VSX_OVERLOAD_2 to BU_P8V_OVERLOAD_2.
7911         * config/rs6000/rs6000-c.c: Changed macro VSX_BUILTIN_VEC_FLOAT2
7912         expansion to P8V_BUILTIN_VEC_FLOAT2.
7914 2018-02-16  Vladimir Makarov  <vmakarov@redhat.com>
7916         PR rtl-optimization/70023
7917         * lra-constraints.c (inherit_in_ebb): Take hard reg mode of
7918         src_regno into account.
7920 2018-02-16  Carl Love  <cel@us.ibm.com>
7922         * config/rs6000/altivec.h: Remove vec_vextract4b and vec_vinsert4b.
7923         * config/rs6000/rs6000-builtin.def: Remove macro expansion for
7924         VEXTRACT4B, VINSERT4B, VINSERT4B_DI and VEXTRACT4B.
7925         * config/rs6000/rs6000.c: Remove case statements for
7926         P9V_BUILTIN_VEXTRACT4B, P9V_BUILTIN_VEC_VEXTRACT4B,
7927         P9V_BUILTIN_VINSERT4B, P9V_BUILTIN_VINSERT4B_DI,
7928         and P9V_BUILTIN_VEC_VINSERT4B.
7929         * config/rs6000/rs6000-c.c (altivec_expand_builtin): Remove entries for
7930         P9V_BUILTIN_VEC_VEXTRACT4B and P9V_BUILTIN_VEC_VINSERT4B.
7931         * config/rs6000/vsx.md:
7932         * doc/extend.texi: Remove vec_vextract4b, non ABI definitions for
7933         vec_insert4b.
7935 2018-02-16  Carl Love  <cel@us.ibm.com>
7937         * config/rs6000/altivec.h: Add builtin names vec_extract4b
7938         vec_insert4b.
7939         * config/rs6000/rs6000-builtin.def: Add INSERT4B and EXTRACT4B
7940         definitions.
7941         * config/rs6000/rs6000-c.c: Add the definitions for
7942         P9V_BUILTIN_VEC_EXTRACT4B and P9V_BUILTIN_VEC_INSERT4B.
7943         * config/rs6000/rs6000.c (altivec_expand_builtin): Add
7944         P9V_BUILTIN_EXTRACT4B and P9V_BUILTIN_INSERT4B case statements.
7945         * config/rs6000/vsx.md: Add define_insn extract4b.  Add define_expand
7946         definition for insert4b and define insn *insert3b_internal.
7947         * doc/extend.texi: Add documentation for vec_extract4b.
7949 2018-02-16  Nathan Sidwell  <nathan@acm.org>
7951         * doc/extend.texi (Backwards Compatibility): Mention friend
7952         injection.  Note for-scope is deprecated.
7953         * doc/invoke.texi (-ffriend-injection): Deprecate.
7955 2018-02-16  Segher Boessenkool  <segher@kernel.crashing.org>
7957         * combine.c (try_combine): When adjusting LOG_LINKS for the destination
7958         that moved to I2, also allow destinations that are a paradoxical
7959         subreg (instead of a normal reg).
7961 2018-02-16  Oleg Endo  <olegendo@gcc.gnu.org>
7963         PR target/83831
7964         * config/rx/rx.c (rx_fuse_in_memory_bitop): Convert shift operand
7965         to QImode.
7967 2018-02-16  Richard Biener  <rguenther@suse.de>
7969         PR tree-optimization/84037
7970         PR tree-optimization/84016
7971         PR target/82862
7972         * config/i386/i386.c (ix86_builtin_vectorization_cost):
7973         Adjust vec_construct for the fact we need additional higher latency
7974         128bit inserts for AVX256 and AVX512 vector builds.
7975         (ix86_add_stmt_cost): Scale vector construction cost for
7976         elementwise loads.
7978 2018-02-16  Richard Biener  <rguenther@suse.de>
7980         PR tree-optimization/84417
7981         * tree-ssa.c (non_rewritable_mem_ref_base): Properly constrain
7982         the MEM_REF offset when conversion to BIT_FIELD_REF is desired.
7983         (non_rewritable_lvalue_p): Likewise, use poly-ints.
7985 2018-02-16  Martin Liska  <mliska@suse.cz>
7987         PR sanitizer/84307
7988         * internal-fn.def (ASAN_CHECK): Set proper flags.
7989         (ASAN_MARK): Likewise.
7991 2018-02-16  Julia Koval  <julia.koval@intel.com>
7993         * config/i386/i386.c (ix86_option_override_internal): Remove PTA_CLWB
7994         from PTA_CANNONLAKE.
7996 2018-02-16  Jakub Jelinek  <jakub@redhat.com>
7998         PR target/84272
7999         * config/aarch64/cortex-a57-fma-steering.c (fma_forest::merge_forest):
8000         Use ++iter rather than iter++ for std::list iterators.
8001         (func_fma_steering::dfs): Likewise.  Don't delete nodes right away,
8002         defer deleting them until all nodes in the forest are processed.  Do
8003         free even leaf nodes.  Change to_process into auto_vec.
8005         PR bootstrap/84405
8006         * system.h (BROKEN_VALUE_INITIALIZATION): Define for GCC < 4.3.
8007         * vec.h (vec_default_construct): Use memset instead of placement new
8008         if BROKEN_VALUE_INITIALIZATION is defined.
8009         * hash-table.h (hash_table<Descriptor, Allocator>::empty_slow): Use
8010         memset instead of value initialization if BROKEN_VALUE_INITIALIZATION
8011         is defined.
8013         PR rtl-optimization/83723
8014         * lra-int.h (lra_substitute_pseudo): Add DEBUG_P argument.
8015         * lra.c (lra_substitute_pseudo): Likewise.  If true, use
8016         gen_rtx_raw_SUBREG instead of gen_rtx_SUBREG.  Pass DEBUG_P to
8017         recursive calls.
8018         (lra_substitute_pseudo_within_insn): Adjust lra_substitute_pseudo
8019         callers.
8020         * lra-constraints.c (inherit_reload_reg, split_reg): Likewise.
8022 2018-02-16  Eric Botcazou  <ebotcazou@adacore.com>
8024         PR rtl-optimization/81443
8025         * rtlanal.c (num_sign_bit_copies1) <SUBREG>: Do not propagate results
8026         from inner REGs to paradoxical SUBREGs.
8028 2018-02-16  Richard Biener  <rguenther@suse.de>
8030         PR tree-optimization/84399
8031         * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
8032         For operands we can analyze at their definition make sure we can
8033         analyze them at each use as well.
8035 2018-02-16  Richard Biener  <rguenther@suse.de>
8037         PR tree-optimization/84190
8038         * tree-ssa.c (non_rewritable_mem_ref_base): Do not touch
8039         volatile accesses if the decl isn't volatile.
8041 2018-02-15  Jason Merrill  <jason@redhat.com>
8043         PR c++/84314 - ICE with templates and fastcall attribute.
8044         * attribs.c (build_type_attribute_qual_variant): Don't clobber
8045         TYPE_CANONICAL on an existing type.
8047 2018-02-15  Jakub Jelinek  <jakub@redhat.com>
8049         PR tree-optimization/84383
8050         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Don't look at
8051         dstoff nor call operand_equal_p if dstbase is NULL.
8053         PR tree-optimization/84334
8054         * match.pd ((A +- CST1) +- CST2 -> A + CST3): If A is
8055         also a CONSTANT_CLASS_P, punt.
8057 2018-02-14  Jim Wilson  <jimw@sifive.com>
8059         * config/riscv/riscv.c (riscv_first_stack_step): Move locals after
8060         first SMALL_OPERAND check.  New local min_second_step.  Move assert
8061         to where locals are set.  Add TARGET_RVC support.
8062         * config/riscv/riscv.h (C_SxSP_BITS, SWSP_REACH, SDSP_REACH): New.
8064 2018-02-14  Indu Bhagat  <indu.bhagat@oracle.com>
8066         * doc/invoke.texi: Correct -Wformat-overflow code sample.
8068 2018-02-14  Martin Sebor  <msebor@redhat.com>
8070         PR tree-optimization/83698
8071         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For
8072         arrays constrain the offset range to their bounds.
8073         (builtin_access::strcat_overlap): Adjust the bounds of overlap offset.
8074         (builtin_access::overlap): Avoid setting the size of overlap if it's
8075         already been set.
8076         (maybe_diag_overlap): Also consider arrays when deciding what values
8077         of offsets to include in diagnostics.
8079 2018-02-14  Martin Sebor  <msebor@redhat.com>
8081         PR c/84108
8082         * attribs.c (diag_attr_exclusions): Consider the exclusion(s)
8083         that correspond to the kind of a declaration.
8085 2018-02-14  John David Anglin  <danglin@gcc.gnu.org>
8087         PR target/83984
8088         * config/pa/pa.md: Load address of PIC label using the linkage table
8089         if the label is nonlocal.
8091 2018-02-14  Kelvin Nilsen  <kelvin@gcc.gnu.org>
8093         * config/rs6000/rs6000.c (rs6000_option_override_internal): Issue
8094         warning message if user requests -maltivec=be.
8095         * doc/invoke.texi: Document deprecation of -maltivec=be.
8097 2018-02-14  Will Schmidt  <will_schmidt@vnet.ibm.com>
8099         PR target/84220
8100         * config/rs6000/rs6000-c.c: Update definitions for
8101         ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VEC_SLDW,
8102         VEC_XXSLDWI and ALTIVEC_BUILTIN_VEC_XXPERMDI builtins.
8104 2018-02-14  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
8106         PR target/84239
8107         * config/i386/cetintrin.h: Remove _rdssp[d|q] and
8108         add _get_ssp intrinsics. Remove argument from
8109         __builtin_ia32_rdssp[d|q].
8110         * config/i386/i386-builtin-types.def: Add UINT_FTYPE_VOID.
8111         * config/i386/i386-builtin.def: Remove argument from
8112         __builtin_ia32_rdssp[d|q].
8113         * config/i386/i386.c: Use UINT_FTYPE_VOID. Use
8114         ix86_expand_special_args_builtin for _rdssp[d|q].
8115         * config/i386/i386.md: Remove argument from rdssp[si|di] insn.
8116         Clear register before usage.
8117         * doc/extend.texi: Remove argument from __builtin_ia32_rdssp[d|q].
8118         Add documentation for new _get_ssp and _inc_ssp intrinsics.
8120 2018-02-14  Richard Sandiford  <richard.sandiford@linaro.org>
8122         PR tree-optimization/84357
8123         * tree-data-ref.c (object_address_invariant_in_loop_p): Check
8124         operand 1 of an ARRAY_REF too.
8126 2018-02-14  Oleg Endo  <olegendo@gcc.gnu.org>
8128         PR target/83831
8129         * config/rx/rx-protos.h (rx_reg_dead_or_unused_after_insn,
8130         rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
8131         declarations.
8132         (set_of_reg): New struct.
8133         (rx_find_set_of_reg, rx_find_use_of_reg): New functions.
8134         * config/rx/rx.c (rx_reg_dead_or_unused_after_insn,
8135         rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
8136         functions.
8137         * config/rx/rx.md (andsi3, iorsi3, xorsi3): Convert to insn_and_split.
8138         Split into bitclr, bitset, bitinvert patterns if appropriate.
8139         (*bitset, *bitinvert, *bitclr): Convert to named insn_and_split and
8140         use rx_fuse_in_memory_bitop.
8141         (*bitset_in_memory, *bitinvert_in_memory, *bitclr_in_memory): Convert
8142         to named insn, correct maximum insn length.
8144 2018-02-14  Jozef Lawrynowicz  <jozefl.gcc@gmail.com>
8146         PR target/79242
8147         * machmode.def: Define a complex mode for PARTIAL_INT.
8148         * genmodes.c (complex_class): Return MODE_COMPLEX_INT for
8149         MODE_PARTIAL_INT.
8150         * doc/rtl.texi: Document CSPImode.
8151         * config/msp430/msp430.c (msp430_hard_regno_nregs): Add CPSImode
8152         handling.
8153         (msp430_hard_regno_nregs_with_padding): Likewise.
8155 2018-02-13  Peter Bergner  <bergner@vnet.ibm.com>
8157         PR target/84279
8158         * config/rs6000/rs6000.c (mem_operand_gpr): Disallow altivec addresses.
8160 2018-02-13  Segher Boessenkool  <segher@kernel.crashing.org>
8162         PR rtl-optimization/84169
8163         * combine.c (try_combine): New variable split_i2i3.  Set it to true if
8164         we generated a parallel as new i3 and we split that to new i2 and i3
8165         instructions.  Handle split_i2i3 similar to swap_i2i3: scan the
8166         LOG_LINKs of i3 to see which of those need to link to i2 now.  Link
8167         those to i2, not i1.  Partially rewrite this scan code.
8169 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
8171         PR c/82210
8172         * stor-layout.c (place_field): For variable length fields, adjust
8173         offset_align afterwards not just based on the field's alignment,
8174         but also on the size.
8176         PR middle-end/84309
8177         * match.pd (pow(C,x) -> exp(log(C)*x)): Use exp2s and log2s instead
8178         of exps and logs in the use_exp2 case.
8180 2018-02-13  Jeff Law  <law@redhat.com>
8182         * config/rl/rl78.c (rl78_attribute_table): Fix terminator and
8183         entry for "vector".
8185         * config/rl78/rl78.c (rl78_handle_func_attribute): Mark
8186         ARGS as unused.
8188 2018-02-13  Alexandre Oliva  <aoliva@redhat.com>
8190         PR debug/84342
8191         PR debug/84319
8192         * common.opt (gas-loc-support, gas-locview-support): New.
8193         (ginline-points, ginternal-reset-location-views): New.
8194         * doc/invoke.texi: Document them.  Use @itemx where intended.
8195         (gvariable-location-views): Adjust.
8196         * target.def (reset_location_view): New.
8197         * doc/tm.texi.in (DWARF2_ASM_VIEW_DEBUG_INFO): New.
8198         (TARGET_RESET_LOCATION_VIEW): New.
8199         * doc/tm.texi: Rebuilt.
8200         * dwarf2out.c (dwarf2out_default_as_loc_support): New.
8201         (dwarf2out_default_as_locview_support): New.
8202         (output_asm_line_debug_info): Use option variables.
8203         (dwarf2out_maybe_output_loclist_view_pair): Likewise.
8204         (output_loc_list): Likewise.
8205         (add_high_low_attributes): Check option variables.
8206         Don't output entry view attribute in strict mode.
8207         (gen_inlined_subroutine_die): Check option variables.
8208         (dwarf2out_inline_entry): Likewise.
8209         (init_sections_and_labels): Likewise.
8210         (dwarf2out_early_finish): Likewise.
8211         (maybe_reset_location_view): New, from...
8212         (dwarf2out_var_location): ... here.  Call it.
8213         * debug.h (dwarf2out_default_as_loc_support): Declare.
8214         (dwarf2out_default_as_locview_support): Declare.
8215         * hooks.c (hook_int_rtx_insn_0): New.
8216         * hooks.h (hook_int_rtx_insn_0): Declare.
8217         * toplev.c (process_options): Take -gas-loc-support and
8218         -gas-locview-support from dwarf2out.  Enable
8219         -gvariable-location-views by default only with locview
8220         assembler support.  Enable -ginternal-reset-location-views by
8221         default only if the target defines the corresponding hook.
8222         Enable -ginline-points by default if location views are
8223         enabled; force it disabled if statement frontiers are
8224         disabled.
8225         * tree-inline.c (expand_call_inline): Check option variables.
8226         * tree-ssa-live.c (remove_unused_scope_block_p): Likewise.
8228 2018-02-13  Richard Sandiford  <richard.sandiford@linaro.org>
8230         PR tree-optimization/84321
8231         * tree-vrp.c (intersect_range_with_nonzero_bits): Fix VR_ANTI_RANGE
8232         handling.  Also check whether the anti-range contains any values
8233         that satisfy the mask; switch to a VR_RANGE if not.
8235 2018-02-13  Paolo Bonzini  <bonzini@gnu.org>
8237         PR sanitizer/84340
8238         * internal-fn.def (ASAN_CHECK, ASAN_MARK): Revert changes to fnspec.
8240 2018-02-13  Martin Jambor  <mjambor@suse.cz>
8242         PR c++/83990
8243         * ipa-param-manipulation.c (ipa_modify_call_arguments): Use location
8244         of call statements, also set location of a load to a temporary.
8246 2018-02-13  Sebastian Perta  <sebastian.perta@renesas.com>
8248         * config/rl78/rl78.c (add_vector_labels): New function.
8249         * config/rl78/rl78.c (rl78_handle_vector_attribute): New function.
8250         * config/rl78/rl78.c (rl78_start_function): Call add_vector_labels.
8251         * config/rl78/rl78.c (rl78_handle_func_attribute): Removed the assert 
8252         which checks that no arguments are passed.
8253         * config/rl78/rl78.c (rl78_attribute_table): Add "vector" attribute.
8254         * doc/extend.texi: Documentation for the new attribute.
8256 2018-02-13  Andreas Schwab  <schwab@suse.de>
8258         * config/riscv/linux.h (CPP_SPEC): Define.
8260 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
8262         PR target/84335
8263         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Pass
8264         OPTION_MASK_ISA_AES | OPTION_MASK_ISA_SSE2 instead of
8265         OPTION_MASK_ISA_AES as first argument to def_builtin_const
8266         for AES builtins.  Pass OPTION_MASK_ISA_PCLMUL | OPTION_MASK_ISA_SSE2
8267         instead of OPTION_MASK_ISA_PCLMUL as first argument to
8268         def_builtin_const for __builtin_ia32_pclmulqdq128 builtin.
8269         * config/i386/wmmintrin.h: If __SSE2__ is not defined, enable it
8270         temporarily for AES and PCLMUL builtins.
8272         PR tree-optimization/84339
8273         * gimple-fold.c (get_range_strlen): Set *FLEXP to true when handling
8274         ARRAY_REF where first operand is array_at_struct_end_p COMPONENT_REF.
8275         Formatting fixes.
8277         PR middle-end/84309
8278         * match.pd (pow(C,x) -> exp(log(C)*x)): Optimize instead into
8279         exp2(log2(C)*x) if C is a power of 2 and c99 runtime is available.
8280         * generic-match-head.c (canonicalize_math_after_vectorization_p): New
8281         inline function.
8282         * gimple-match-head.c (canonicalize_math_after_vectorization_p): New
8283         inline function.
8284         * omp-simd-clone.h: New file.
8285         * omp-simd-clone.c: Include omp-simd-clone.h.
8286         (expand_simd_clones): No longer static.
8287         * tree-vect-patterns.c: Include fold-const-call.h, attribs.h,
8288         cgraph.h and omp-simd-clone.h.
8289         (vect_recog_pow_pattern): Optimize pow(C,x) to exp(log(C)*x).
8290         (vect_recog_widen_shift_pattern): Formatting fix.
8291         (vect_pattern_recog_1): Don't check optab for calls.
8293         PR target/84336
8294         * config/i386/sse.md (<avx512>_vpermi2var<mode>3_mask): Force
8295         operands[2] into a REG before using gen_lowpart on it.
8297 2018-02-12  Jeff Law  <law@redhat.com>
8299         PR target/83760
8300         * config/sh/sh.c (find_barrier): Consider a sibling call
8301         a barrier as well.
8303         * cse.c (try_back_substitute_reg): Move any REG_ARGS_SIZE note when
8304         successfully back substituting a reg.
8306 2018-02-12  Richard Biener  <rguenther@suse.de>
8308         PR tree-optimization/84037
8309         * tree-vect-slp.c (vect_analyze_slp_cost): Add visited
8310         parameter, move visited init to caller.
8311         (vect_slp_analyze_operations): Separate cost from validity
8312         check, initialize visited once for all instances.
8313         (vect_schedule_slp): Analyze map to CSE vectorized nodes once
8314         for all instances.
8315         * tree-vect-stmts.c (vect_model_simple_cost): Make early
8316         out an assert.
8317         (vect_model_promotion_demotion_cost): Likewise.
8318         (vectorizable_bswap): Guard cost modeling with !slp_node
8319         instead of !PURE_SLP_STMT to avoid double-counting on hybrid
8320         SLP stmts.
8321         (vectorizable_call): Likewise.
8322         (vectorizable_conversion): Likewise.
8323         (vectorizable_assignment): Likewise.
8324         (vectorizable_shift): Likewise.
8325         (vectorizable_operation): Likewise.
8326         (vectorizable_store): Likewise.
8327         (vectorizable_load): Likewise.
8328         (vectorizable_condition): Likewise.
8329         (vectorizable_comparison): Likewise.
8331 2018-02-12  Paolo Bonzini  <bonzini@gnu.org>
8333         PR sanitizer/84307
8334         * internal-fn.def (ASAN_CHECK): Fix fnspec to account for return value.
8335         (ASAN_MARK): Fix fnspec to account for return value, change pointer
8336         argument from 'R' to 'W' so that the pointed-to datum is clobbered.
8338 2018-02-08  Jan Hubicka  <hubicka@ucw.cz>
8340         PR middle-end/83665
8341         * params.def (inline-min-speedup): Increase from 8 to 15.
8342         (max-inline-insns-auto): Decrease from 40 to 30.
8343         * ipa-split.c (consider_split): Add some buffer for function to
8344         be considered inlining candidate.
8345         * invoke.texi (max-inline-insns-auto, inline-min-speedup): UPdate
8346         default values.
8348 2018-02-12  Richard Biener  <rguenther@suse.de>
8350         PR tree-optimization/84037
8351         * tree-vect-slp.c (vect_build_slp_tree_2): Try swapping the
8352         matched stmts if we cannot swap the non-matched ones.
8354 2018-02-12  Olga Makhotina  <olga.makhotina@intel.com>
8356         * config/i386/avx512fintrin.h (_mm_mask_scalef_round_sd,
8357         _mm_maskz_scalef_round_sd, _mm_mask_scalef_round_ss,
8358         _mm_maskz_scalef_round_ss): New intrinsics.
8359         (__builtin_ia32_scalefsd_round, __builtin_ia32_scalefss_round): Fix.
8360         * config/i386/i386-builtin.def (__builtin_ia32_scalefsd_round,
8361         __builtin_ia32_scalefss_round): Remove.
8362         (__builtin_ia32_scalefsd_mask_round,
8363         __builtin_ia32_scalefss_mask_round): New intrinsics.
8364         * config/i386/sse.md (vmscalef<mode><round_name>): Renamed to ...
8365         (vmscalef<mode><mask_scalar_name><round_scalar_name>): ... this.
8366         ((match_operand:VF_128 2 "<round_nimm_predicate>"
8367         "<round_constraint>")): Changed to ...
8368         ((match_operand:VF_128 2 "<round_scalar_nimm_predicate>"
8369         "<round_scalar_constraint>")): ... this.
8370         ("vscalef<ssescalarmodesuffix>\t{<round_op3>%2, %1, %0|
8371         %0, %1, %2<round_op3>}"): Changed to ...
8372         ("vscalef<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%2, %1,
8373         %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %1,
8374         %2<round_scalar_mask_op3>}"): ... this.
8375         * config/i386/subst.md (round_scalar_nimm_predicate): New.
8377 2018-02-12  Olga Makhotina  <olga.makhotina@intel.com>
8379         * config/i386/avx512fintrin.h (_mm_mask_sqrt_round_sd)
8380         (_mm_maskz_sqrt_round_sd, _mm_mask_sqrt_round_ss)
8381         (_mm_maskz_sqrt_round_ss): New intrinsics.
8382         (__builtin_ia32_sqrtsd_round, __builtin_ia32_sqrtss_round): Remove.
8383         (__builtin_ia32_sqrtsd_mask_round)
8384         (__builtin_ia32_sqrtss_mask_round): New builtins.
8385         * config/i386/i386-builtin.def (__builtin_ia32_sqrtsd_round)
8386         (__builtin_ia32_sqrtss_round): Remove.
8387         (__builtin_ia32_sqrtsd_mask_round)
8388         (__builtin_ia32_sqrtss_mask_round): New builtins.
8389         * config/i386/sse.md (vmsqrt<mode>2<round_name>): Renamed to ...
8390         (vmsqrt<mode>2<mask_scalar_name><round_scalar_name>): ... this.
8391         ((match_operand:VF_128 1 "vector_operand"
8392         "xBm,<round_constraint>")): Changed to ...
8393         ((match_operand:VF_128 1 "vector_operand"
8394         "xBm,<round_scalar_constraint>")): ... this.
8395         (vsqrt<ssescalarmodesuffix>\t{<round_op3>%1, %2, %0|
8396         %0, %2, %<iptr>1<round_op3>}): Changed to ...
8397         (vsqrt<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%1, %2,
8398         %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %2,
8399         %<iptr>1<round_scalar_mask_op3>}): ... this.
8400         ((set_attr "prefix" "<round_prefix>")): Changed to ...
8401         ((set_attr "prefix" "<round_scalar_prefix>")): ... this.
8403 2018-02-11  Steven Munroe  <munroesj@gcc.gnu.org>
8405         PR target/84266
8406         * config/rs6000/mmintrin.h (_mm_cmpeq_pi32 [_ARCH_PWR9]):
8407         Cast vec_cmpeq result to correct type.
8408         * config/rs6000/mmintrin.h (_mm_cmpgt_pi32 [_ARCH_PWR9]):
8409         Cast vec_cmpgt result to correct type.
8411 2018-02-11  Alexandre Oliva  <aoliva@redhat.com>
8413         * final.c (final_scan_insn_1): Renamed from...
8414         (final_scan_insn): ... this.  New wrapper, to recover
8415         seen from the outermost call in recursive ones.
8416         * config/sparc/sparc.c (output_return): Drop seen from call.
8417         (output_sibcall): Likewise.
8418         * config/visium/visium.c (output_branch): Likewise.
8420 2018-02-10  John David Anglin  <danglin@gcc.gnu.org>
8422         * config/pa/pa.c (hppa_profile_hook): Mark SYMBOL_REF for _mcount as
8423         function label.
8425 2018-02-10  Alan Modra  <amodra@gmail.com>
8427         PR target/84300
8428         * config/rs6000/rs6000.md (split_stack_return): Remove (use ..).
8429         Specify LR as an input.
8431 2018-02-10  Jakub Jelinek  <jakub@redhat.com>
8433         PR sanitizer/83987
8434         * omp-low.c (maybe_remove_omp_member_access_dummy_vars,
8435         remove_member_access_dummy_vars): New functions.
8436         (lower_omp_for, lower_omp_taskreg, lower_omp_target,
8437         lower_omp_1, execute_lower_omp): Use them.
8439         PR rtl-optimization/84308
8440         * shrink-wrap.c (spread_components): Release todo vector.
8442 2018-02-09  Vladimir Makarov  <vmakarov@redhat.com>
8444         PR rtl-optimization/57193
8445         * ira-color.c (struct allocno_color_data): Add member
8446         conflict_allocno_hard_prefs.
8447         (update_conflict_allocno_hard_prefs): New.
8448         (bucket_allocno_compare_func): Add a preference based on
8449         conflict_allocno_hard_prefs.
8450         (push_allocno_to_stack): Update conflict_allocno_hard_prefs.
8451         (color_allocnos): Remove a dead code.  Initiate
8452         conflict_allocno_hard_prefs.  Call update_costs_from_prefs.
8454 2018-02-09  Jakub Jelinek  <jakub@redhat.com>
8456         PR target/84226
8457         * config/rs6000/vsx.md (p9_xxbrq_v16qi): Change input operand
8458         constraint from =wa to wa.  Avoid a subreg on the output operand,
8459         instead use a pseudo and subreg it in a move.
8460         (p9_xxbrd_<mode>): Changed to ...
8461         (p9_xxbrd_v2di): ... this insn, without VSX_D iterator.
8462         (p9_xxbrd_v2df): New expander.
8463         (p9_xxbrw_<mode>): Changed to ...
8464         (p9_xxbrw_v4si): ... this insn, without VSX_W iterator.
8465         (p9_xxbrw_v4sf): New expander.
8467 2018-02-09  Sebastian Perta  <sebastian.perta@renesas.com>
8469         * config/rx/rx.md (movsicc): Update expander to be matched by GCC.
8471 2018-02-09  Peter Bergner  <bergner@vnet.ibm.com>
8473         PR target/83926
8474         * config/rs6000/vsx.md (vsx_mul_v2di): Handle generating a 64-bit
8475         multiply in 32-bit mode.
8476         (vsx_div_v2di): Handle generating a 64-bit signed divide in 32-bit mode.
8477         (vsx_udiv_v2di): Handle generating a 64-bit unsigned divide in 32-bit
8478         mode.
8480 2018-02-09  Sebastian Perta  <sebastian.perta@renesas.com>
8482         * config/rx/constraints.md (CALL_OP_SYMBOL_REF): Added new constraint
8483         to allow or block "symbol_ref" depending on the value of TARGET_JSR.
8484         * config/rx/rx.md (call_internal): Use CALL_OP_SYMBOL_REF.
8485         * config/rx/rx.md (call_value_internal): Use CALL_OP_SYMBOL_REF.
8487 2018-02-09  Pierre-Marie de Rodat  <derodat@adacore.com>
8489         PR lto/84213
8490         * dwarf2out.c (is_trivial_indirect_ref): New function.
8491         (dwarf2out_late_global_decl): Do not generate a location
8492         attribute for variables that have a non-trivial DECL_VALUE_EXPR
8493         and that are not defined in the current unit.
8495 2018-02-09  Eric Botcazou  <ebotcazou@adacore.com>
8497         * optabs.c (prepare_cmp_insn): Try harder to emit a direct comparison
8498         instead of a libcall for UNORDERED.
8500 2018-02-09  Tamar Christina  <tamar.christina@arm.com>
8502         PR target/82641
8503         * config/arm/arm-c.c (arm_cpu_builtins): Un-define __ARM_FEATURE_LDREX,
8504         __ARM_ARCH_PROFILE, __ARM_ARCH_ISA_THUMB, __ARM_FP and __ARM_NEON_FP.
8506 2018-02-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
8508         PR target/PR84295
8509         * config/s390/s390.c (s390_set_current_function): Invoke
8510         s390_indirect_branch_settings also if fndecl didn't change.
8512 2018-02-09  Alexandre Oliva  <aoliva@redhat.com>
8514         * config/rs6000/rs6000.md (blockage): Set length to zero.
8516 2018-02-09  Eric Botcazou  <ebotcazou@adacore.com>
8518         * expr.c (optimize_bitfield_assignment_op): Remove obsolete assertion.
8520 2018-02-09  Jakub Jelinek  <jakub@redhat.com>
8522         PR sanitizer/84285
8523         * gcc.c (STATIC_LIBASAN_LIBS, STATIC_LIBTSAN_LIBS,
8524         STATIC_LIBLSAN_LIBS, STATIC_LIBUBSAN_LIBS): Handle -static like
8525         -static-lib*san.
8527         PR debug/84252
8528         * var-tracking.c (vt_add_function_parameter): Punt for non-onepart
8529         PARALLEL incoming that failed vt_get_decl_and_offset check.
8531         PR middle-end/84237
8532         * output.h (bss_initializer_p): Add NAMED argument, defaulted to false.
8533         * varasm.c (bss_initializer_p): Add NAMED argument, if true, ignore
8534         TREE_READONLY bit.
8535         (get_variable_section): For decls in named .bss* sections pass true as
8536         second argument to bss_initializer_p.
8538 2018-02-09  Marek Polacek  <polacek@redhat.com>
8539             Jakub Jelinek  <jakub@redhat.com>
8541         PR c++/83659
8542         * fold-const.c (fold_indirect_ref_1): Use VECTOR_TYPE_P macro.
8543         Formatting fixes.  Verify first that tree_fits_poly_int64_p (op01).
8544         Sync some changes from cxx_fold_indirect_ref.
8546 2018-02-09  Alexandre Oliva  <aoliva@redhat.com>
8548         * cfgexpand.c (expand_gimple_basic_block): Handle inline entry
8549         markers.
8550         * dwarf2out.c (dwarf2_debug_hooks): Enable inline_entry hook.
8551         (BLOCK_INLINE_ENTRY_LABEL): New.
8552         (dwarf2out_var_location): Disregard inline entry markers.
8553         (inline_entry_data): New struct.
8554         (inline_entry_data_hasher): New hashtable type.
8555         (inline_entry_data_hasher::hash): New.
8556         (inline_entry_data_hasher::equal): New.
8557         (inline_entry_data_table): New variable.
8558         (add_high_low_attributes): Add DW_AT_entry_pc and
8559         DW_AT_GNU_entry_view attributes if a pending entry is found
8560         in inline_entry_data_table.  Add old entry_pc attribute only
8561         if debug nonbinding markers are disabled.
8562         (gen_inlined_subroutine_die): Set BLOCK_DIE if nonbinding
8563         markers are enabled.
8564         (block_within_block_p, dwarf2out_inline_entry): New.
8565         (dwarf2out_finish): Check that no entries remained in
8566         inline_entry_data_table.
8567         * final.c (reemit_insn_block_notes): Handle inline entry notes.
8568         (final_scan_insn, notice_source_line): Likewise.
8569         (rest_of_clean_state): Skip inline entry markers.
8570         * gimple-pretty-print.c (dump_gimple_debug): Handle inline entry
8571         markers.
8572         * gimple.c (gimple_build_debug_inline_entry): New.
8573         * gimple.h (enum gimple_debug_subcode): Add
8574         GIMPLE_DEBUG_INLINE_ENTRY.
8575         (gimple_build_debug_inline_entry): Declare.
8576         (gimple_debug_inline_entry_p): New.
8577         (gimple_debug_nonbind_marker_p): Adjust.
8578         * insn-notes.def (INLINE_ENTRY): New.
8579         * print-rtl.c (rtx_writer::print_rtx_operand_code_0): Handle
8580         inline entry marker notes.
8581         (print_insn): Likewise.
8582         * rtl.h (NOTE_MARKER_P): Add INLINE_ENTRY support.
8583         (INSN_DEBUG_MARKER_KIND): Likewise.
8584         (GEN_RTX_DEBUG_MARKER_INLINE_ENTRY_PAT): New.
8585         * tree-inline.c (expand_call_inline): Build and insert
8586         debug_inline_entry stmt.
8587         * tree-ssa-live.c (remove_unused_scope_block_p): Preserve
8588         inline entry blocks early, if nonbind markers are enabled.
8589         (dump_scope_block): Dump fragment info.
8590         * var-tracking.c (reemit_marker_as_note): Handle inline entry note.
8591         * doc/gimple.texi (gimple_debug_inline_entry_p): New.
8592         (gimple_build_debug_inline_entry): New.
8593         * doc/invoke.texi (gstatement-frontiers, gno-statement-frontiers):
8594         Enable/disable inline entry points too.
8595         * doc/rtl.texi (NOTE_INSN_INLINE_ENTRY): New.
8596         (DEBUG_INSN): Describe inline entry markers.
8598         * common.opt (gvariable-location-views): New.
8599         (gvariable-location-views=incompat5): New.
8600         * config.in: Rebuilt.
8601         * configure: Rebuilt.
8602         * configure.ac: Test assembler for view support.
8603         * dwarf2asm.c (dw2_asm_output_symname_uleb128): New.
8604         * dwarf2asm.h (dw2_asm_output_symname_uleb128): Declare.
8605         * dwarf2out.c (var_loc_view): New typedef.
8606         (struct dw_loc_list_struct): Add vl_symbol, vbegin, vend.
8607         (dwarf2out_locviews_in_attribute): New.
8608         (dwarf2out_locviews_in_loclist): New.
8609         (dw_val_equal_p): Compare val_view_list of dw_val_class_view_lists.
8610         (enum dw_line_info_opcode): Add LI_adv_address.
8611         (struct dw_line_info_table): Add view.
8612         (RESET_NEXT_VIEW, RESETTING_VIEW_P): New macros.
8613         (DWARF2_ASM_VIEW_DEBUG_INFO): Define default.
8614         (zero_view_p): New variable.
8615         (ZERO_VIEW_P): New macro.
8616         (output_asm_line_debug_info): New.
8617         (struct var_loc_node): Add view.
8618         (add_AT_view_list, AT_loc_list): New.
8619         (add_var_loc_to_decl): Add view param.  Test it against last.
8620         (new_loc_list): Add view params.  Record them.
8621         (AT_loc_list_ptr): Handle loc and view lists.
8622         (view_list_to_loc_list_val_node): New.
8623         (print_dw_val): Handle dw_val_class_view_list.
8624         (size_of_die): Likewise.
8625         (value_format): Likewise.
8626         (loc_list_has_views): New.
8627         (gen_llsym): Set vl_symbol too.
8628         (maybe_gen_llsym, skip_loc_list_entry): New.
8629         (dwarf2out_maybe_output_loclist_view_pair): New.
8630         (output_loc_list): Output view list or entries too.
8631         (output_view_list_offset): New.
8632         (output_die): Handle dw_val_class_view_list.
8633         (output_dwarf_version): New.
8634         (output_compilation_unit_header): Use it.
8635         (output_skeleton_debug_sections): Likewise.
8636         (output_rnglists, output_line_info): Likewise.
8637         (output_pubnames, output_aranges): Update version comments.
8638         (output_one_line_info_table): Output view numbers in asm comments.
8639         (dw_loc_list): Determine current endview, pass it to new_loc_list.
8640         Call maybe_gen_llsym.
8641         (loc_list_from_tree_1): Adjust.
8642         (add_AT_location_description): Create view list attribute if
8643         needed, check it's absent otherwise.
8644         (convert_cfa_to_fb_loc_list): Adjust.
8645         (maybe_emit_file): Call output_asm_line_debug_info for test.
8646         (dwarf2out_var_location): Reset views as needed.  Precompute
8647         add_var_loc_to_decl args.  Call get_attr_min_length only if we have the
8648         attribute.  Set view.
8649         (new_line_info_table): Reset next view.
8650         (set_cur_line_info_table): Call output_asm_line_debug_info for test.
8651         (dwarf2out_source_line): Likewise.  Output view resets and labels to
8652         the assembler, or select appropriate line info opcodes.
8653         (prune_unused_types_walk_attribs): Handle dw_val_class_view_list.
8654         (optimize_string_length): Catch it.  Adjust.
8655         (resolve_addr): Copy vl_symbol along with ll_symbol.  Handle
8656         dw_val_class_view_list, and remove it if no longer needed.
8657         (hash_loc_list): Hash view numbers.
8658         (loc_list_hasher::equal): Compare them.
8659         (optimize_location_lists): Check whether a view list symbol is
8660         needed, and whether the locview attribute is present, and
8661         whether they match.  Remove the locview attribute if no longer
8662         needed.
8663         (index_location_lists): Call skip_loc_list_entry for test.
8664         (dwarf2out_finish): Call output_asm_line_debug_info for test.
8665         Use output_dwarf_version.
8666         * dwarf2out.h (enum dw_val_class): Add dw_val_class_view_list.
8667         (struct dw_val_node): Add val_view_list.
8668         * final.c (SEEN_NEXT_VIEW): New.
8669         (set_next_view_needed): New.
8670         (clear_next_view_needed): New.
8671         (maybe_output_next_view): New.
8672         (final_start_function): Rename to...
8673         (final_start_function_1): ... this.  Take pointer to FIRST,
8674         add SEEN parameter.  Emit param bindings in the initial view.
8675         (final_start_function): Reintroduce SEEN-less interface.
8676         (final): Rename to...
8677         (final_1): ... this.  Take SEEN parameter.  Output final pending
8678         next view at the end.
8679         (final): Reintroduce seen-less interface.
8680         (final_scan_insn): Output pending next view before switching
8681         sections or ending a block.  Mark the next view as needed when
8682         outputting variable locations.  Notify debug backend of section
8683         changes, and of location view changes.
8684         (rest_of_handle_final): Adjust.
8685         * toplev.c (process_options): Autodetect value for debug variable
8686         location views option.  Warn on incompat5 without -gdwarf-5.
8687         * doc/invoke.texi (gvariable-location-views): New.
8688         (gvariable-location-views=incompat5): New.
8689         (gno-variable-location-views): New.
8691 2018-02-08  David Malcolm  <dmalcolm@redhat.com>
8693         PR tree-optimization/84136
8694         * tree-cfg.c (find_taken_edge_computed_goto): Remove assertion
8695         that the result of find_edge is non-NULL.
8697 2018-02-08  Sergey Shalnov  <sergey.shalnov@intel.com>
8699         PR target/83008
8700         * config/i386/x86-tune-costs.h (skylake_cost): Fix cost of
8701         storing integer register in SImode.  Fix cost of 256 and 512
8702         byte aligned SSE register store.
8704 2018-02-08  Sergey Shalnov  <sergey.shalnov@intel.com>
8706         * config/i386/i386.c (ix86_multiplication_cost): Fix
8707         multiplication cost for TARGET_AVX512DQ.
8709 2018-02-08  Marek Polacek  <polacek@redhat.com>
8711         PR tree-optimization/84238
8712         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Verify the result of
8713         get_range_strlen.
8715 2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
8717         PR tree-optimization/84265
8718         * tree-vect-stmts.c (vectorizable_store): Don't treat
8719         VMAT_CONTIGUOUS accesses as grouped.
8720         (vectorizable_load): Likewise.
8722 2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
8724         PR tree-optimization/81635
8725         * wide-int.h (wi::round_down_for_mask, wi::round_up_for_mask): Declare.
8726         * wide-int.cc (wi::round_down_for_mask, wi::round_up_for_mask)
8727         (test_round_for_mask): New functions.
8728         (wide_int_cc_tests): Call test_round_for_mask.
8729         * tree-vrp.h (intersect_range_with_nonzero_bits): Declare.
8730         * tree-vrp.c (intersect_range_with_nonzero_bits): New function.
8731         * tree-data-ref.c (split_constant_offset_1): Use it to refine the
8732         range returned by get_range_info.
8734 2018-02-08  Jan Hubicka  <hubicka@ucw.cz>
8736         PR ipa/81360
8737         * cgraph.h (symtab_node::output_to_lto_symbol_table_p): Declare
8738         * symtab.c: Include builtins.h
8739         (symtab_node::output_to_lto_symbol_table_p): Move here
8740         from lto-streamer-out.c:output_symbol_p.
8741         * lto-streamer-out.c (write_symbol): Turn early exit to assert.
8742         (output_symbol_p): Move all logic to symtab.c
8743         (produce_symtab): Update.
8745 2018-02-08  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
8747         * config/s390/s390-opts.h (enum indirect_branch): Define.
8748         * config/s390/s390-protos.h (s390_return_addr_from_memory)
8749         (s390_indirect_branch_via_thunk)
8750         (s390_indirect_branch_via_inline_thunk): Add function prototypes.
8751         (enum s390_indirect_branch_type): Define.
8752         * config/s390/s390.c (struct s390_frame_layout, struct
8753         machine_function): Remove.
8754         (indirect_branch_prez10thunk_mask, indirect_branch_z10thunk_mask)
8755         (indirect_branch_table_label_no, indirect_branch_table_name):
8756         Define variables.
8757         (INDIRECT_BRANCH_NUM_OPTIONS): Define macro.
8758         (enum s390_indirect_branch_option): Define.
8759         (s390_return_addr_from_memory): New function.
8760         (s390_handle_string_attribute): New function.
8761         (s390_attribute_table): Add new attribute handler.
8762         (s390_execute_label): Handle UNSPEC_EXECUTE_JUMP patterns.
8763         (s390_indirect_branch_via_thunk): New function.
8764         (s390_indirect_branch_via_inline_thunk): New function.
8765         (s390_function_ok_for_sibcall): When jumping via thunk disallow
8766         sibling call optimization for non z10 compiles.
8767         (s390_emit_call): Force indirect branch target to be a single
8768         register.  Add r1 clobber for non-z10 compiles.
8769         (s390_emit_epilogue): Emit return jump via return_use expander.
8770         (s390_reorg): Handle JUMP_INSNs as execute targets.
8771         (s390_option_override_internal): Perform validity checks for the
8772         new command line options.
8773         (s390_indirect_branch_attrvalue): New function.
8774         (s390_indirect_branch_settings): New function.
8775         (s390_set_current_function): Invoke s390_indirect_branch_settings.
8776         (s390_output_indirect_thunk_function):  New function.
8777         (s390_code_end): Implement target hook.
8778         (s390_case_values_threshold): Implement target hook.
8779         (TARGET_ASM_CODE_END, TARGET_CASE_VALUES_THRESHOLD): Define target
8780         macros.
8781         * config/s390/s390.h (struct s390_frame_layout)
8782         (struct machine_function): Move here from s390.c.
8783         (TARGET_INDIRECT_BRANCH_NOBP_RET)
8784         (TARGET_INDIRECT_BRANCH_NOBP_JUMP)
8785         (TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK)
8786         (TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK)
8787         (TARGET_INDIRECT_BRANCH_NOBP_CALL)
8788         (TARGET_DEFAULT_INDIRECT_BRANCH_TABLE)
8789         (TARGET_INDIRECT_BRANCH_THUNK_NAME_EXRL)
8790         (TARGET_INDIRECT_BRANCH_THUNK_NAME_EX)
8791         (TARGET_INDIRECT_BRANCH_TABLE): Define macros.
8792         * config/s390/s390.md (UNSPEC_EXECUTE_JUMP)
8793         (INDIRECT_BRANCH_THUNK_REGNUM): Define constants.
8794         (mnemonic attribute): Add values which aren't recognized
8795         automatically.
8796         ("*cjump_long", "*icjump_long", "*basr", "*basr_r"): Disable
8797         pattern for branch conversion.  Fix mnemonic attribute.
8798         ("*c<code>", "*sibcall_br", "*sibcall_value_br", "*return"): Emit
8799         indirect branch via thunk if requested.
8800         ("indirect_jump", "<code>"): Expand patterns for branch conversion.
8801         ("*indirect_jump"): Disable for branch conversion using out of
8802         line thunks.
8803         ("indirect_jump_via_thunk<mode>_z10")
8804         ("indirect_jump_via_thunk<mode>")
8805         ("indirect_jump_via_inlinethunk<mode>_z10")
8806         ("indirect_jump_via_inlinethunk<mode>", "*casesi_jump")
8807         ("casesi_jump_via_thunk<mode>_z10", "casesi_jump_via_thunk<mode>")
8808         ("casesi_jump_via_inlinethunk<mode>_z10")
8809         ("casesi_jump_via_inlinethunk<mode>", "*basr_via_thunk<mode>_z10")
8810         ("*basr_via_thunk<mode>", "*basr_r_via_thunk_z10")
8811         ("*basr_r_via_thunk", "return<mode>_prez10"): New pattern.
8812         ("*indirect2_jump"): Disable for branch conversion.
8813         ("casesi_jump"): Turn into expander and expand patterns for branch
8814         conversion.
8815         ("return_use"): New expander.
8816         ("*return"): Emit return via thunk and rename it to ...
8817         ("*return<mode>"): ... this one.
8818         * config/s390/s390.opt: Add new options and and enum for the
8819         option values.
8821 2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
8823         * lra-constraints.c (match_reload): Unconditionally use
8824         gen_lowpart_SUBREG, rather than selecting between that
8825         and equivalent gen_rtx_SUBREG code.
8827 2018-02-08  Richard Biener  <rguenther@suse.de>
8829         PR tree-optimization/84233
8830         * tree-ssa-phiprop.c (propagate_with_phi): Use separate
8831         changed flag instead of boguously re-using phi_inserted.
8833 2018-02-08  Martin Jambor  <mjambor@suse.cz>
8835         * hsa-gen.c (get_symbol_for_decl): Set program allocation for
8836         static local variables.
8838 2018-02-08  Richard Biener  <rguenther@suse.de>
8840         PR tree-optimization/84278
8841         * tree-vect-stmts.c (vectorizable_store): When looking for
8842         smaller vector types to perform grouped strided loads/stores
8843         make sure the mode is supported by the target.
8844         (vectorizable_load): Likewise.
8846 2018-02-08  Wilco Dijkstra  <wdijkstr@arm.com>
8848         * config/aarch64/aarch64.c (aarch64_components_for_bb):
8849         Increase LDP/STP opportunities by adding adjacent callee-saves.
8851 2018-02-08  Wilco Dijkstra  <wdijkstr@arm.com>
8853         PR rtl-optimization/84068
8854         PR rtl-optimization/83459
8855         * haifa-sched.c (rank_for_schedule): Fix SCHED_PRESSURE_MODEL sorting.
8857 2018-02-08  Aldy Hernandez  <aldyh@redhat.com>
8859         PR tree-optimization/84224
8860         * gimple-ssa-warn-alloca.c (pass_walloca::execute): Remove assert.
8861         * calls.c (gimple_alloca_call_p): Only return TRUE when we have
8862         non-zero arguments.
8864 2018-02-07  Iain Sandoe  <iain@codesourcery.com>
8866         PR target/84113
8867         * config/rs6000/altivec.md (*restore_world): Remove LR use.
8868         * config/rs6000/predicates.md (restore_world_operation): Adjust op
8869         count, remove one USE.
8871 2018-02-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
8873         * doc/install.texi (Configuration): Document the
8874         --with-long-double-format={ibm,ieee} PowerPC configuration
8875         options.
8877         PR target/84154
8878         * config/rs6000/rs6000.md (fix_trunc<SFDF:mode><QHI:mode>2):
8879         Convert from define_expand to be define_insn_and_split.  Rework
8880         float/double/_Float128 conversions to QI/HI/SImode to work with
8881         both ISA 2.07 (power8) or ISA 3.0 (power9).  Fix regression where
8882         conversions to QI/HImode types did a store and then a load to
8883         truncate the value.  For conversions to VSX registers, don't split
8884         the insn, instead emit the code directly.  Use the code iterator
8885         any_fix to combine signed and unsigned conversions.
8886         (fix<uns>_trunc<SFDF:mode>si2_p8): Likewise.
8887         (fixuns_trunc<SFDF:mode><QHI:mode>2): Likewise.
8888         (fix_trunc<IEEE128:mode><QHI:mode>2): Likewise.
8889         (fix<uns>_trunc<SFDF:mode><QHI:mode>2): Likewise.
8890         (fix_<mode>di2_hw): Likewise.
8891         (fixuns_<mode>di2_hw): Likewise.
8892         (fix_<mode>si2_hw): Likewise.
8893         (fixuns_<mode>si2_hw): Likewise.
8894         (fix<uns>_<IEEE128:mode><SDI:mode>2_hw): Likewise.
8895         (fix<uns>_trunc<IEEE128:mode><QHI:mode>2): Likewise.
8896         (fctiw<u>z_<mode>_smallint): Rename fctiw<u>z_<mode>_smallint to
8897         fix<uns>_trunc<SFDF:mode>si2_p8.
8898         (fix_trunc<SFDF:mode><QHI:mode>2_internal): Delete, no longer
8899         used.
8900         (fixuns_trunc<SFDF:mode><QHI:mode>2_internal): Likewise.
8901         (fix<uns>_<mode>_mem): Likewise.
8902         (fctiw<u>z_<mode>_mem): Likewise.
8903         (fix<uns>_<mode>_mem): Likewise.
8904         (fix<uns>_trunc<SFDF:mode><QHSI:mode>2_mem): On ISA 3.0, prevent
8905         the register allocator from doing a direct move to the GPRs to do
8906         a store, and instead use the ISA 3.0 store byte/half-word from
8907         vector register instruction.  For IEEE 128-bit floating point,
8908         also optimize stores of 32-bit ints.
8909         (fix<uns>_trunc<IEEE128:mode><QHSI:mode>2_mem): Likewise.
8911 2018-02-07  Alan Hayward  <alan.hayward@arm.com>
8913         * genextract.c (push_pathstr_operand): New function to support
8914         [a-zA-Z].
8915         (walk_rtx): Call push_pathstr_operand.
8916         (print_path): Support [a-zA-Z].
8918 2018-02-07  Richard Biener  <rguenther@suse.de>
8920         PR tree-optimization/84037
8921         * tree-vectorizer.h (struct _loop_vec_info): Add ivexpr_map member.
8922         (cse_and_gimplify_to_preheader): Declare.
8923         (vect_get_place_in_interleaving_chain): Likewise.
8924         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
8925         ivexpr_map.
8926         (_loop_vec_info::~_loop_vec_info): Delete it.
8927         (cse_and_gimplify_to_preheader): New function.
8928         * tree-vect-slp.c (vect_get_place_in_interleaving_chain): Export.
8929         * tree-vect-stmts.c (vectorizable_store): CSE base and steps.
8930         (vectorizable_load): Likewise.  For grouped stores always base
8931         the IV on the first element.
8932         * tree-vect-loop-manip.c (vect_loop_versioning): Unshare versioning
8933         condition before gimplifying.
8935 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
8937         * tree-eh.c (operation_could_trap_helper_p): Ignore honor_trapv for
8938         *DIV_EXPR and *MOD_EXPR.
8940 2018-02-07  H.J. Lu  <hongjiu.lu@intel.com>
8942         PR target/84248
8943         * config/i386/i386.c (ix86_option_override_internal): Mask out
8944         the CF_SET bit when checking -fcf-protection.
8946 2018-02-07  Tom de Vries  <tom@codesourcery.com>
8948         PR libgomp/84217
8949         * omp-expand.c (expand_oacc_collapse_init): Ensure diff_type is large
8950         enough.
8952 2018-02-07  Richard Biener  <rguenther@suse.de>
8954         PR tree-optimization/84204
8955         * tree-chrec.c (chrec_fold_plus_1): Remove size limiting in
8956         this place.
8958         PR tree-optimization/84205
8959         * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Also
8960         special-case isl_ast_op_zdiv_r.
8962         PR tree-optimization/84223
8963         * graphite-scop-detection.c (gather_bbs::before_dom_children):
8964         Only add conditions from within the region.
8965         (gather_bbs::after_dom_children): Adjust.
8967 2018-02-07  Georg-Johann Lay  <avr@gjlay.de>
8969         PR target/84209
8970         * config/avr/avr.h (GENERAL_REGNO_P, GENERAL_REG_P): New macros.
8971         * config/avr/avr.md: Only post-reload split REG-REG moves if
8972         either register is GENERAL_REG_P.
8974 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
8976         PR tree-optimization/84235
8977         * tree-ssa-scopedtables.c
8978         (avail_exprs_stack::simplify_binary_operation): Fir MINUS_EXPR, punt
8979         if the subtraction is performed in floating point type where NaNs are
8980         honored.  For *DIV_EXPR, punt for ALL_FRACT_MODE_Ps where we can't
8981         build 1.  Formatting fix.
8983 2018-02-06  Jakub Jelinek  <jakub@redhat.com>
8985         PR target/84146
8986         * config/i386/i386.c (rest_of_insert_endbranch): Only skip
8987         NOTE_INSN_CALL_ARG_LOCATION after a call, not anything else,
8988         and skip it regardless of bb boundaries.  Use CALL_P macro,
8989         don't test INSN_P (insn) together with CALL_P or JUMP_P check
8990         unnecessarily, formatting fix.
8992 2018-02-06  Michael Collison  <michael.collison@arm.com>
8994         * config/arm/thumb2.md:
8995         (*thumb2_mov_negscc): Split only if TARGET_THUMB2 && !arm_restrict_it.
8996         (*thumb_mov_notscc): Ditto.
8998 2018-02-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
9000         PR target/84154
9001         * config/rs6000/rs6000.md (su code attribute): Use "u" for
9002         unsigned_fix, not "s".
9004 2018-02-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
9006         * configure.ac (gcc_fn_eh_frame_ro): New function.
9007         (gcc_cv_as_cfi_directive): Check both 32 and 64-bit assembler for
9008         correct .eh_frame permissions.
9009         * configure: Regenerate.
9011 2018-02-06  Andrew Jenner  <andrew@codeourcery.com>
9013         * doc/invoke.texi: Add section for the PowerPC SPE backend. Remove
9014         irrelevant options.
9016 2018-02-06  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
9018         * config/rs6000/rs6000.c (rs6000_option_override_internal):
9019         Display warning message for -mno-speculate-indirect-jumps.
9021 2018-02-06  Andrew Jenner  <andrew@codesourcery.com>
9023         * config/powerpcspe/powerpcspe.opt: (msimple-fpu, mfpu) Add
9024         Undocumented.
9025         * config/powerpcspe/sysv4.opt (mbit-align): Likewise.
9027 2018-02-06  Aldy Hernandez  <aldyh@redhat.com>
9029         PR tree-optimization/84225
9030         * tree-eh.c (find_trapping_overflow): Only call
9031         operation_no_trapping_overflow when ANY_INTEGRAL_TYPE_P.
9033 2018-02-06  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
9035         PR target/84145
9036         * config/i386/i386.c: Reimplement the check of possible options
9037         -mibt/-mshstk conbination. Change error messages.
9038         * doc/invoke.texi: Fix a typo: remove extra '='.
9040 2018-02-06  Marek Polacek  <polacek@redhat.com>
9042         PR tree-optimization/84228
9043         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Skip debug statements.
9045 2018-02-06  Tamar Christina  <tamar.christina@arm.com>
9047         PR target/82641
9048         * config/arm/arm.c (arm_print_asm_arch_directives): Record already
9049         emitted arch directives.
9050         * config/arm/arm-c.c (arm_cpu_builtins): Undefine __ARM_ARCH and
9051         __ARM_FEATURE_COPROC before changing architectures.
9053 2018-02-06  Richard Biener  <rguenther@suse.de>
9055         * config/i386/i386.c (print_reg): Fix typo.
9056         (ix86_loop_unroll_adjust): Do not unroll beyond the original nunroll.
9058 2018-02-06  Eric Botcazou  <ebotcazou@adacore.com>
9060         * configure: Regenerate.
9062 2018-02-05  Martin Sebor  <msebor@redhat.com>
9064         PR tree-optimization/83369
9065         * tree-ssa-ccp.c (pass_post_ipa_warn::execute): Use %G to print
9066         inlining context.
9068 2018-02-05  Martin Liska  <mliska@suse.cz>
9070         * doc/invoke.texi: Cherry-pick upstream r323995.
9072 2018-02-05  Richard Sandiford  <richard.sandiford@linaro.org>
9074         * ira.c (ira_init_register_move_cost): Adjust comment.
9076 2018-02-05  Martin Liska  <mliska@suse.cz>
9078         PR gcov-profile/84137
9079         * doc/gcov.texi: Fix typo in documentation.
9081 2018-02-05  Martin Liska  <mliska@suse.cz>
9083         PR gcov-profile/83879
9084         * doc/gcov.texi: Document necessity of --dynamic-list-data when
9085         using dlopen functionality.
9087 2018-02-05  Olga Makhotina  <olga.makhotina@intel.com>
9089         * config/i386/avx512dqintrin.h (_mm_mask_range_sd, _mm_maskz_range_sd,
9090         _mm_mask_range_round_sd, _mm_maskz_range_round_sd, _mm_mask_range_ss,
9091         _mm_maskz_range_ss, _mm_mask_range_round_ss,
9092         _mm_maskz_range_round_ss): New intrinsics.
9093         (__builtin_ia32_rangesd128_round)
9094         (__builtin_ia32_rangess128_round): Remove.
9095         (__builtin_ia32_rangesd128_mask_round,
9096         __builtin_ia32_rangess128_mask_round): New builtins.
9097         * config/i386/i386-builtin.def (__builtin_ia32_rangesd128_round,
9098         __builtin_ia32_rangess128_round): Remove.
9099         (__builtin_ia32_rangesd128_mask_round,
9100         __builtin_ia32_rangess128_mask_round): New builtins.
9101         * config/i386/sse.md (ranges<mode><round_saeonly_name>): Renamed to ...
9102         (ranges<mode><mask_scalar_name><round_saeonly_scalar_name>): ... this.
9103         ((match_operand:VF_128 2 "<round_saeonly_nimm_predicate>"
9104         "<round_saeonly_constraint>")): Changed to ...
9105         ((match_operand:VF_128 2 "<round_saeonly_scalar_nimm_predicate>"
9106         "<round_saeonly_scalar_constraint>")): ... this.
9107         ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_op4>%2, %1, %0|
9108         %0, %1, %2<round_saeonly_op4>, %3}"): Changed to ...
9109         ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_scalar_mask_op4>%2,
9110         %1, %0<mask_scalar_operand4>|%0<mask_scalar_operand4>, %1,
9111         %2<round_saeonly_scalar_mask_op4>, %3}"): ... this.
9113 2018-02-02  Andrew Jenner  <andrew@codesourcery.com>
9115         * config/powerpcspe/powerpcspe.opt: Add Undocumented to irrelevant
9116         options.
9117         * config/powerpcspe/powerpcspe-tables.opt (rs6000_cpu_opt_value):
9118         Remove all values except native, 8540 and 8548.
9120 2018-02-02  H.J. Lu  <hongjiu.lu@intel.com>
9122         * config/i386/i386.c (ix86_output_function_return): Pass
9123         INVALID_REGNUM, instead of -1, as invalid register number to
9124         indirect_thunk_name and output_indirect_thunk.
9126 2018-02-02  Julia Koval  <julia.koval@intel.com>
9128         * config.gcc: Add -march=icelake.
9129         * config/i386/driver-i386.c (host_detect_local_cpu): Detect icelake.
9130         * config/i386/i386-c.c (ix86_target_macros_internal): Handle icelake.
9131         * config/i386/i386.c (processor_costs): Add m_ICELAKE.
9132         (PTA_ICELAKE, PTA_AVX512VNNI, PTA_GFNI, PTA_VAES, PTA_AVX512VBMI2,
9133         PTA_VPCLMULQDQ, PTA_RDPID, PTA_AVX512BITALG): New.
9134         (processor_target_table): Add icelake.
9135         (ix86_option_override_internal): Handle new PTAs.
9136         (get_builtin_code_for_version): Handle icelake.
9137         (M_INTEL_COREI7_ICELAKE): New.
9138         (fold_builtin_cpu): Handle icelake.
9139         * config/i386/i386.h (TARGET_ICELAKE, PROCESSOR_ICELAKE): New.
9140         * doc/invoke.texi: Add -march=icelake.
9142 2018-02-02  Julia Koval  <julia.koval@intel.com>
9144         * config/i386/i386.c (ix86_option_override_internal): Change flags type
9145         to wide_int_bitmask.
9146         * wide-int-bitmask.h: New.
9148 2018-02-02  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
9150         PR target/84066
9151         * config/i386/i386.md: Replace Pmode with word_mode in
9152         builtin_setjmp_setup and builtin_longjmp to support x32.
9154 2018-02-01  Peter Bergner  <bergner@vnet.ibm.com>
9156         PR target/56010
9157         PR target/83743
9158         * config/rs6000/driver-rs6000.c: #include "diagnostic.h".
9159         #include "opts.h".
9160         (rs6000_supported_cpu_names): New static variable.
9161         (linux_cpu_translation_table): Likewise.
9162         (elf_platform) <cpu>: Define new static variable and use it.
9163         Translate kernel AT_PLATFORM name to canonical name if needed.
9164         Error if platform name is unknown.
9166 2018-02-01  Aldy Hernandez  <aldyh@redhat.com>
9168         PR target/84089
9169         * config/pa/predicates.md (base14_operand): Handle E_VOIDmode.
9171 2018-02-01  Jeff Law  <law@redhat.com>
9173         PR target/84128
9174         * config/i386/i386.c (release_scratch_register_on_entry): Add new
9175         OFFSET and RELEASE_VIA_POP arguments.  Use SP+OFFSET to restore
9176         the scratch if RELEASE_VIA_POP is false.
9177         (ix86_adjust_stack_and_probe_stack_clash): Un-constify SIZE.
9178         If we have to save a temporary register, decrement SIZE appropriately.
9179         Pass new arguments to release_scratch_register_on_entry.
9180         (ix86_adjust_stack_and_probe): Likewise.
9181         (ix86_emit_probe_stack_range): Pass new arguments to
9182         release_scratch_register_on_entry.
9184 2018-02-01  Uros Bizjak  <ubizjak@gmail.com>
9186         PR rtl-optimization/84157
9187         * combine.c (change_zero_ext): Use REG_P predicate in
9188         front of HARD_REGISTER_P predicate.
9190 2018-02-01  Georg-Johann Lay  <avr@gjlay.de>
9192         * config/avr/avr.c (avr_option_override): Move disabling of
9193         -fdelete-null-pointer-checks to...
9194         * common/config/avr/avr-common.c (avr_option_optimization_table):
9195         ...here.
9197 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
9199         PR tree-optimization/81635
9200         * tree-data-ref.c (split_constant_offset_1): For types that
9201         wrap on overflow, try to use range info to prove that wrapping
9202         cannot occur.
9204 2018-02-01  Renlin Li  <renlin.li@arm.com>
9206         PR target/83370
9207         * config/aarch64/aarch64.c (aarch64_class_max_nregs): Handle
9208         TAILCALL_ADDR_REGS.
9209         (aarch64_register_move_cost): Likewise.
9210         * config/aarch64/aarch64.h (reg_class): Rename CALLER_SAVE_REGS to
9211         TAILCALL_ADDR_REGS.
9212         (REG_CLASS_NAMES): Likewise.
9213         (REG_CLASS_CONTENTS): Rename CALLER_SAVE_REGS to
9214         TAILCALL_ADDR_REGS. Remove IP registers.
9215         * config/aarch64/aarch64.md (Ucs): Update register constraint.
9217 2018-02-01  Richard Biener  <rguenther@suse.de>
9219         * domwalk.h (dom_walker::dom_walker): Add additional constructor
9220         for specifying RPO order and allow NULL for that.
9221         * domwalk.c (dom_walker::dom_walker): Likewise.
9222         (dom_walker::walk): Handle NULL RPO order.
9223         * tree-into-ssa.c (rewrite_dom_walker): Do not walk dom children
9224         in RPO order.
9225         (rewrite_update_dom_walker): Likewise.
9226         (mark_def_dom_walker): Likewise.
9228 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
9230         * config/aarch64/aarch64-protos.h (aarch64_split_sve_subreg_move)
9231         (aarch64_maybe_expand_sve_subreg_move): Declare.
9232         * config/aarch64/aarch64.md (UNSPEC_REV_SUBREG): New unspec.
9233         * config/aarch64/predicates.md (aarch64_any_register_operand): New
9234         predicate.
9235         * config/aarch64/aarch64-sve.md (mov<mode>): Optimize subreg moves
9236         that are semantically a reverse operation.
9237         (*aarch64_sve_mov<mode>_subreg_be): New pattern.
9238         * config/aarch64/aarch64.c (aarch64_maybe_expand_sve_subreg_move):
9239         (aarch64_replace_reg_mode, aarch64_split_sve_subreg_move): New
9240         functions.
9241         (aarch64_can_change_mode_class): For big-endian, forbid changes
9242         between two SVE modes if they have different element sizes.
9244 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
9246         * config/aarch64/aarch64.c (aarch64_expand_sve_const_vector): Prefer
9247         the TImode handling for big-endian targets.
9249 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
9251         * config/aarch64/aarch64-sve.md (sve_ld1rq): Replace with...
9252         (*sve_ld1rq<Vesize>): ... this new pattern.  Handle all element sizes,
9253         not just bytes.
9254         * config/aarch64/aarch64.c (aarch64_expand_sve_widened_duplicate):
9255         Remove BSWAP handing for big-endian targets and use the form of
9256         LD1RQ appropariate for the mode.
9258 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
9260         * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Handle
9261         all CONST_VECTOR_DUPLICATE_P vectors, not just those with a single
9262         duplicated element.
9264 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
9266         PR tearget/83845
9267         * config/aarch64/aarch64.c (aarch64_secondary_reload): Tighten
9268         check for operands that need to go through aarch64_sve_reload_be.
9270 2018-02-01  Jakub Jelinek  <jakub@redhat.com>
9272         PR tree-optimization/81661
9273         PR tree-optimization/84117
9274         * tree-eh.h (rewrite_to_non_trapping_overflow): Declare.
9275         * tree-eh.c: Include gimplify.h.
9276         (find_trapping_overflow, replace_trapping_overflow,
9277         rewrite_to_non_trapping_overflow): New functions.
9278         * tree-vect-loop.c: Include tree-eh.h.
9279         (vect_get_loop_niters): Use rewrite_to_non_trapping_overflow.
9280         * tree-data-ref.c: Include tree-eh.h.
9281         (get_segment_min_max): Use rewrite_to_non_trapping_overflow.
9283 2018-01-31  Uros Bizjak  <ubizjak@gmail.com>
9285         PR rtl-optimization/84123
9286         * combine.c (change_zero_ext): Check if hard register satisfies
9287         can_change_dest_mode before calling gen_lowpart_SUBREG.
9289 2018-01-31  Vladimir Makarov  <vmakarov@redhat.com>
9291         PR target/82444
9292         * ira.c (ira_init_register_move_cost): Remove assert.
9294 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
9296         PR rtl-optimization/84071
9297         * doc/tm.texi.in (WORD_REGISTER_OPERATIONS): Add explicit case.
9298         * doc/tm.texi: Regenerate.
9300 2018-01-31  Richard Biener  <rguenther@suse.de>
9302         PR tree-optimization/84132
9303         * tree-data-ref.c (analyze_miv_subscript): Properly
9304         check whether evolution_function_is_affine_multivariate_p
9305         before calling gcd_of_steps_may_divide_p.
9307 2018-01-31  Julia Koval  <julia.koval@intel.com>
9309         PR target/83618
9310         * config/i386/i386.c (ix86_expand_builtin): Handle IX86_BUILTIN_RDPID.
9311         * config/i386/i386.md (rdpid_rex64) New.
9312         (rdpid): Make 32bit only.
9314 2018-01-29  Aldy Hernandez  <aldyh@redhat.com>
9316         PR lto/84105
9317         * tree-pretty-print.c (dump_generic_node): Handle a TYPE_NAME with
9318         an IDENTIFIER_NODE for FUNCTION_TYPE's.
9320 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
9322         Revert
9323         2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
9325         * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
9327 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
9329         PR rtl-optimization/84071
9330         * combine.c (record_dead_and_set_regs_1): Record the source unmodified
9331         for a paradoxical SUBREG on a WORD_REGISTER_OPERATIONS target.
9333 2018-01-31  Claudiu Zissulescu  <claziss@synopsys.com>
9335         * config/arc/arc.c (arc_handle_aux_attribute): New function.
9336         (arc_attribute_table): Add 'aux' attribute.
9337         (arc_in_small_data_p): Consider aux like variables.
9338         (arc_is_aux_reg_p): New function.
9339         (arc_asm_output_aligned_decl_local): Ignore 'aux' like variables.
9340         (arc_get_aux_arg): New function.
9341         (prepare_move_operands): Handle aux-register access.
9342         (arc_handle_aux_attribute): New function.
9343         * doc/extend.texi (ARC Variable attributes): Add subsection.
9345 2018-01-31  Claudiu Zissulescu  <claziss@synopsys.com>
9347         * config/arc/arc-protos.h (arc_is_uncached_mem_p): Function proto.
9348         * config/arc/arc.c (arc_handle_uncached_attribute): New function.
9349         (arc_attribute_table): Add 'uncached' attribute.
9350         (arc_print_operand): Print '.di' flag for uncached memory
9351         accesses.
9352         (arc_in_small_data_p): Do not consider for small data the uncached
9353         types.
9354         (arc_is_uncached_mem_p): New function.
9355         * config/arc/predicates.md (compact_store_memory_operand): Check
9356         for uncached memory accesses.
9357         (nonvol_nonimm_operand): Likewise.
9358         * gcc/doc/extend.texi (ARC Type Attribute): New subsection.
9360 2018-01-31  Jakub Jelinek  <jakub@redhat.com>
9362         PR c/84100
9363         * common.opt (falign-functions=, falign-jumps=, falign-labels=,
9364         falign-loops=): Add Optimization flag.
9366 2018-01-30  Jeff Law  <law@redhat.com>
9368         PR target/84064
9369         * i386.c (ix86_adjust_stack_and_probe_stack_clash): New argument
9370         INT_REGISTERS_SAVED.  Check it prior to calling
9371         get_scratch_register_on_entry.
9372         (ix86_adjust_stack_and_probe): Similarly.
9373         (ix86_emit_probe_stack_range): Similarly.
9374         (ix86_expand_prologue): Corresponding changes.
9376 2018-01-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
9378         PR target/40411
9379         * config/sol2.h (STARTFILE_ARCH_SPEC): Use -std=c*,
9380         -std=iso9899:199409 instead of -pedantic to select values-Xc.o.
9382 2018-01-30  Vladimir Makarov  <vmakarov@redhat.com>
9384         PR target/84112
9385         * lra-constraints.c (curr_insn_transform): Process AND in the
9386         address.
9388 2018-01-30  Jakub Jelinek  <jakub@redhat.com>
9390         PR rtl-optimization/83986
9391         * sched-deps.c (sched_analyze_insn): For frame related insns, add anti
9392         dependence against last_pending_memory_flush in addition to
9393         pending_jump_insns.
9395 2018-01-30  Alexandre Oliva  <aoliva@redhat.com>
9397         PR tree-optimization/81611
9398         * tree-ssa-dom.c (simple_iv_increment_p): Skip intervening
9399         copies.
9401 2018-01-30  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
9403         PR target/83758
9404         * config/rs6000/rs6000.c (rs6000_internal_arg_pointer): Only return
9405         a reg rtx.
9407 2018-01-30  Richard Biener  <rguenther@suse.de>
9408             Jakub Jelinek  <jakub@redhat.com>
9410         PR tree-optimization/84111
9411         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1): Skip
9412         inner loops added during recursion, as they don't have up-to-date
9413         SSA form.
9415 2018-01-30  Jan Hubicka  <hubicka@ucw.cz>
9417         PR ipa/81360
9418         * ipa-inline.c (can_inline_edge_p): Break out late tests to...
9419         (can_inline_edge_by_limits_p): ... here.
9420         (can_early_inline_edge_p, check_callers,
9421         update_caller_keys, update_callee_keys, recursive_inlining,
9422         add_new_edges_to_heap, speculation_useful_p,
9423         inline_small_functions,
9424         inline_small_functions, flatten_function,
9425         inline_to_all_callers_1): Update.
9427 2018-01-30  Jan Hubicka  <hubicka@ucw.cz>
9429         * profile-count.c (profile_count::combine_with_ipa_count): Handle
9430         zeros correctly.
9432 2018-01-30  Richard Biener  <rguenther@suse.de>
9434         PR tree-optimization/83008
9435         * tree-vect-slp.c (vect_analyze_slp_cost_1): Properly cost
9436         invariant and constant vector uses in stmts when they need
9437         more than one stmt.
9439 2018-01-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
9441         PR bootstrap/84017
9442         * configure.ac (gcc_cv_as_shf_merge): Disable on Solaris 10/x86.
9443         * configure: Regenerate.
9445 2018-01-30  Richard Sandiford  <richard.sandiford@linaro.org>
9447         * config/aarch64/aarch64-sve.md (*vec_extract<mode><Vel>_0): New
9448         pattern.
9449         (*vec_extract<mode><Vel>_v128): Require a nonzero lane number.
9450         Use gen_rtx_REG rather than gen_lowpart.
9452 2018-01-30  Richard Sandiford  <richard.sandiford@linaro.org>
9454         * lra-constraints.c (match_reload): Use subreg_lowpart_offset
9455         rather than 0 when creating partial subregs.
9457 2018-01-30  Richard Sandiford  <richard.sandiford@linaro.org>
9459         * vec-perm-indices.c (vec_perm_indices::series_p): Give examples
9460         of usage.
9462 2018-01-29  Michael Meissner  <meissner@linux.vnet.ibm.com>
9464         PR target/81550
9465         * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): If DFmode
9466         and SFmode can go in Altivec registers (-mcpu=power7 for DFmode,
9467         -mcpu=power8 for SFmode) don't set the PRE_INCDEC or PRE_MODIFY
9468         flags.  This restores the settings used before the 2017-07-24.
9469         Turning off pre increment/decrement/modify allows IVOPTS to
9470         optimize DF/SF loops where the index is an int.
9472 2018-01-29  Richard Biener  <rguenther@suse.de>
9473             Kelvin Nilsen  <kelvin@gcc.gnu.org>
9475         PR bootstrap/80867
9476         * tree-vect-stmts.c (vectorizable_call): Don't call
9477         targetm.vectorize_builtin_md_vectorized_function if callee is
9478         NULL.
9480 2018-01-22  Carl Love  <cel@us.ibm.com>
9482         * doc/extend.tex: Fix typo in second arg in
9483         __builtin_bcdadd_{lt|eq|gt|ov} and __builtin_bcdsub_{lt|eq|gt|ov}.
9485 2018-01-29  Richard Biener  <rguenther@suse.de>
9487         PR tree-optimization/84086
9488         * tree-ssanames.c: Include cfgloop.h and tree-scalar-evolution.h.
9489         (flush_ssaname_freelist): When SSA names were released reset
9490         the SCEV hash table.
9492 2018-01-29  Richard Biener  <rguenther@suse.de>
9494         PR tree-optimization/84057
9495         * tree-ssa-loop-ivcanon.c (unloop_loops): Deal with already
9496         removed paths when removing edges.
9498 2018-01-27  H.J. Lu  <hongjiu.lu@intel.com>
9500         * doc/invoke.texi: Replace -mfunction-return==@var{choice} with
9501         -mfunction-return=@var{choice}.
9503 2018-01-27  Bernd Edlinger  <bernd.edlinger@hotmail.de>
9505         PR diagnostic/84034
9506         * diagnostic-show-locus.c (get_line_width_without_trailing_whitespace):
9507         Handle CR like TAB.
9508         (layout::print_source_line): Likewise.
9509         (test_get_line_width_without_trailing_whitespace): Add test cases.
9511 2018-01-27  Jakub Jelinek  <jakub@redhat.com>
9513         PR middle-end/84040
9514         * sched-deps.c (sched_macro_fuse_insns): Return immediately for
9515         debug insns.
9517 2018-01-26  Jim Wilson  <jimw@sifive.com>
9519         * config/riscv/riscv.h (MAX_FIXED_MODE_SIZE): New.
9521         * config/riscv/elf.h (LIB_SPEC): Don't include -lgloss when nosys.specs
9522         specified.
9524 2018-01-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
9526         * config/aarch64/aarch64.md: Add peepholes for CMP + SUB -> SUBS
9527         and CMP + SUB-immediate -> SUBS.
9529 2018-01-26  Martin Sebor  <msebor@redhat.com>
9531         PR tree-optimization/83896
9532         * tree-ssa-strlen.c (get_string_len): Rename...
9533         (get_string_cst_length): ...to this.  Return HOST_WIDE_INT.
9534         Avoid assuming length is constant.
9535         (handle_char_store): Use HOST_WIDE_INT for string length.
9537 2018-01-26  Uros Bizjak  <ubizjak@gmail.com>
9539         PR target/81763
9540         * config/i386/i386.md (*andndi3_doubleword): Add earlyclobber
9541         to (=&r,r,rm) alternative. Add (=r,0,rm) and (=r,r,0) alternatives.
9543 2018-01-26  Richard Biener  <rguenther@suse.de>
9545         PR rtl-optimization/84003
9546         * dse.c (record_store): Only record redundant stores when
9547         the earlier store aliases at least all accesses the later one does.
9549 2018-01-26  Jakub Jelinek  <jakub@redhat.com>
9551         PR rtl-optimization/83985
9552         * dce.c (deletable_insn_p): Return false for separate shrink wrapping
9553         REG_CFA_RESTORE insns.
9554         (delete_unmarked_insns): Don't ignore separate shrink wrapping
9555         REG_CFA_RESTORE insns here.
9557         PR c/83989
9558         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Don't
9559         use SSA_NAME_VAR as base for SSA_NAMEs with non-NULL SSA_NAME_VAR.
9561 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
9563         * config/arc/arc-arch.h (arc_tune_attr): Add ARC_TUNE_CORE_3.
9564         * config/arc/arc.c (arc_sched_issue_rate): Use ARC_TUNE_... .
9565         (arc_init): Likewise.
9566         (arc_override_options): Likewise.
9567         (arc_file_start): Choose Tag_ARC_CPU_variation based on arc_tune
9568         value.
9569         (hwloop_fail): Use TARGET_DBNZ when we want to check for dbnz insn
9570         support.
9571         * config/arc/arc.h (TARGET_DBNZ): Define.
9572         * config/arc/arc.md (attr tune): Add core_3, use ARC_TUNE_... to
9573         properly set the tune attribute.
9574         (dbnz): Use TARGET_DBNZ guard.
9575         * config/arc/arc.opt (mtune): Add core3 option.
9577 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
9579         * config/arc/arc.c (arc_delegitimize_address_0): Refactored to
9580         recognize new pic like addresses.
9581         (arc_delegitimize_address): Clean up.
9583 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
9585         * config/arc/arc-arches.def: Option mrf16 valid for all
9586         architectures.
9587         * config/arc/arc-c.def (__ARC_RF16__): New predefined macro.
9588         * config/arc/arc-cpus.def (em_mini): New cpu with rf16 on.
9589         * config/arc/arc-options.def (FL_RF16): Add mrf16 option.
9590         * config/arc/arc-tables.opt: Regenerate.
9591         * config/arc/arc.c (arc_conditional_register_usage): Handle
9592         reduced register file case.
9593         (arc_file_start): Set must have build attributes.
9594         * config/arc/arc.h (MAX_ARC_PARM_REGS): Conditional define using
9595         mrf16 option value.
9596         * config/arc/arc.opt (mrf16): Add new option.
9597         * config/arc/elf.h (ATTRIBUTE_PCS): Define.
9598         * config/arc/genmultilib.awk: Handle new mrf16 option.
9599         * config/arc/linux.h (ATTRIBUTE_PCS): Define.
9600         * config/arc/t-multilib: Regenerate.
9601         * doc/invoke.texi (ARC Options): Document mrf16 option.
9603 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
9605         * config/arc/arc-protos.h: Add arc_is_secure_call_p proto.
9606         * config/arc/arc.c (arc_handle_secure_attribute): New function.
9607         (arc_attribute_table): Add 'secure_call' attribute.
9608         (arc_print_operand): Print secure call operand.
9609         (arc_function_ok_for_sibcall): Don't optimize tail calls when
9610         secure.
9611         (arc_is_secure_call_p): New function.  * config/arc/arc.md
9612         (call_i): Add support for sjli instruction.
9613         (call_value_i): Likewise.
9614         * config/arc/constraints.md (Csc): New constraint.
9616 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
9617             John Eric Martin  <John.Martin@emmicro-us.com>
9619         * config/arc/arc-protos.h: Add arc_is_jli_call_p proto.
9620         * config/arc/arc.c (_arc_jli_section): New struct.
9621         (arc_jli_section): New type.
9622         (rc_jli_sections): New static variable.
9623         (arc_handle_jli_attribute): New function.
9624         (arc_attribute_table): Add jli_always and jli_fixed attribute.
9625         (arc_file_end): New function.
9626         (TARGET_ASM_FILE_END): Define.
9627         (arc_print_operand): Reuse 'S' letter for JLI output instruction.
9628         (arc_add_jli_section): New function.
9629         (jli_call_scan): Likewise.
9630         (arc_reorg): Call jli_call_scan.
9631         (arc_output_addsi): Remove 'S' from printing asm operand.
9632         (arc_is_jli_call_p): New function.
9633         * config/arc/arc.md (movqi_insn): Remove 'S' from printing asm
9634         operand.
9635         (movhi_insn): Likewise.
9636         (movsi_insn): Likewise.
9637         (movsi_set_cc_insn): Likewise.
9638         (loadqi_update): Likewise.
9639         (load_zeroextendqisi_update): Likewise.
9640         (load_signextendqisi_update): Likewise.
9641         (loadhi_update): Likewise.
9642         (load_zeroextendhisi_update): Likewise.
9643         (load_signextendhisi_update): Likewise.
9644         (loadsi_update): Likewise.
9645         (loadsf_update): Likewise.
9646         (movsicc_insn): Likewise.
9647         (bset_insn): Likewise.
9648         (bxor_insn): Likewise.
9649         (bclr_insn): Likewise.
9650         (bmsk_insn): Likewise.
9651         (bicsi3_insn): Likewise.
9652         (cmpsi_cc_c_insn): Likewise.
9653         (movsi_ne): Likewise.
9654         (movsi_cond_exec): Likewise.
9655         (clrsbsi2): Likewise.
9656         (norm_f): Likewise.
9657         (normw): Likewise.
9658         (swap): Likewise.
9659         (divaw): Likewise.
9660         (flag): Likewise.
9661         (sr): Likewise.
9662         (kflag): Likewise.
9663         (ffs): Likewise.
9664         (ffs_f): Likewise.
9665         (fls): Likewise.
9666         (call_i): Remove 'S' asm letter, add jli instruction.
9667         (call_value_i): Likewise.
9668         * config/arc/arc.op (mjli-always): New option.
9669         * config/arc/constraints.md (Cji): New constraint.
9670         * config/arc/fpx.md (addsf3_fpx): Remove 'S' from printing asm
9671         operand.
9672         (subsf3_fpx): Likewise.
9673         (mulsf3_fpx): Likewise.
9674         * config/arc/simdext.md (vendrec_insn): Remove 'S' from printing
9675         asm operand.
9676         * doc/extend.texi (ARC): Document 'jli-always' and 'jli-fixed'
9677         function attrbutes.
9678         * doc/invoke.texi (ARC): Document mjli-always option.
9680 2018-01-26  Sebastian Perta  <sebastian.perta@renesas.com>
9682         * config/rl78/rl78.c (rl78_addsi3_internal): If operand 2 is const 
9683         avoid addition with 0 and use incw and decw where possible.
9685 2018-01-26  Richard Biener  <rguenther@suse.de>
9687         PR tree-optimization/81082
9688         * fold-const.c (fold_plusminus_mult_expr): Do not perform the
9689         association if it requires casting to unsigned.
9690         * match.pd ((A * C) +- (B * C) -> (A+-B)): New patterns derived
9691         from fold_plusminus_mult_expr to catch important cases late when
9692         range info is available.
9694 2018-01-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
9696         * config/i386/sol2.h (USE_HIDDEN_LINKONCE): Remove.
9697         * configure.ac (hidden_linkonce): New test.
9698         * configure: Regenerate.
9699         * config.in: Regenerate.
9701 2018-01-26  Julia Koval  <julia.koval@intel.com>
9703         * config/i386/avx512bitalgintrin.h (_mm512_bitshuffle_epi64_mask,
9704         _mm512_mask_bitshuffle_epi64_mask, _mm256_bitshuffle_epi64_mask,
9705         _mm256_mask_bitshuffle_epi64_mask, _mm_bitshuffle_epi64_mask,
9706         _mm_mask_bitshuffle_epi64_mask): Fix type.
9707         * config/i386/i386-builtin-types.def (UHI_FTYPE_V2DI_V2DI_UHI,
9708         USI_FTYPE_V4DI_V4DI_USI): Remove.
9709         * config/i386/i386-builtin.def (__builtin_ia32_vpshufbitqmb512_mask,
9710         __builtin_ia32_vpshufbitqmb256_mask,
9711         __builtin_ia32_vpshufbitqmb128_mask): Fix types.
9712         * config/i386/i386.c (ix86_expand_args_builtin): Remove old types.
9713         * config/i386/sse.md (VI1_AVX512VLBW): Change types.
9715 2018-01-26  Alan Modra  <amodra@gmail.com>
9717         PR target/84033
9718         * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Exclude
9719         UNSPEC_VBPERMQ.  Sort other unspecs.
9721 2018-01-25  David Edelsohn  <dje.gcc@gmail.com>
9723         * doc/invoke.texi (PowerPC Options): Document 'native' cpu type.
9725 2018-01-25  Jan Hubicka  <hubicka@ucw.cz>
9727         PR middle-end/83055
9728         * predict.c (drop_profile): Do not push/pop cfun; update also
9729         node->count.
9730         (handle_missing_profiles): Fix logic looking for zero profiles.
9732 2018-01-25  Jakub Jelinek  <jakub@redhat.com>
9734         PR middle-end/83977
9735         * ipa-fnsummary.c (compute_fn_summary): Clear can_change_signature
9736         on functions with #pragma omp declare simd or functions with simd
9737         attribute.
9738         * omp-simd-clone.c (expand_simd_clones): Revert 2018-01-24 change.
9739         * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen):
9740         Remove trailing \n from warning_at calls.
9742 2018-01-25  Tom de Vries  <tom@codesourcery.com>
9744         PR target/84028
9745         * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
9746         for neutered workers.
9748 2018-01-24  Joseph Myers  <joseph@codesourcery.com>
9750         PR target/68467
9751         * config/m68k/m68k.c (m68k_promote_function_mode): New function.
9752         (TARGET_PROMOTE_FUNCTION_MODE): New macro.
9754 2018-01-24  Jeff Law  <law@redhat.com>
9756         PR target/83994
9757         * i386.c (get_probe_interval): Move to earlier point.
9758         (ix86_compute_frame_layout): If -fstack-clash-protection and
9759         the frame is larger than the probe interval, then use pushes
9760         to save registers rather than reg->mem moves.
9761         (ix86_expand_prologue): Remove conditional for int_registers_saved
9762         assertion.
9764 2018-01-24  Vladimir Makarov  <vmakarov@redhat.com>
9766         PR target/84014
9767         * ira-build.c (setup_min_max_allocno_live_range_point): Set up
9768         min/max for never referenced object.
9770 2018-01-24  Jakub Jelinek  <jakub@redhat.com>
9772         PR middle-end/83977
9773         * tree.c (free_lang_data_in_decl): Don't clear DECL_ABSTRACT_ORIGIN
9774         here.
9775         * omp-low.c (create_omp_child_function): Remove "omp declare simd"
9776         attributes from DECL_ATTRIBUTES (decl) without affecting
9777         DECL_ATTRIBUTES (current_function_decl).
9778         * omp-simd-clone.c (expand_simd_clones): Ignore DECL_ARTIFICIAL
9779         functions with non-NULL DECL_ABSTRACT_ORIGIN.
9781 2018-01-24  Richard Sandiford  <richard.sandiford@linaro.org>
9783         PR tree-optimization/83979
9784         * fold-const.c (fold_comparison): Use constant_boolean_node
9785         instead of boolean_{true,false}_node.
9787 2018-01-24  Jan Hubicka  <hubicka@ucw.cz>
9789         * ipa-profile.c (ipa_propagate_frequency_1): Fix logic skipping calls
9790         with zero counts.
9792 2018-01-24  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
9794         * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
9795         Simplify the clause that sets the length attribute.
9796         (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
9797         (*sibcall_nonlocal_sysv<mode>): Clean up code block; simplify the
9798         clause that sets the length attribute.
9799         (*sibcall_value_nonlocal_sysv<mode>): Likewise.
9801 2018-01-24  Tom de Vries  <tom@codesourcery.com>
9803         PR target/83589
9804         * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_2): Define to 1.
9805         (nvptx_pc_set, nvptx_condjump_label): New function. Copy from jump.c.
9806         Add strict parameter.
9807         (prevent_branch_around_nothing): Insert dummy insn between branch to
9808         label and label with no ptx insn inbetween.
9809         * config/nvptx/nvptx.md (define_insn "fake_nop"): New insn.
9811 2018-01-24  Tom de Vries  <tom@codesourcery.com>
9813         PR target/81352
9814         * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
9815         for neutered threads in warp.
9816         * config/nvptx/nvptx.md (define_insn "exit"): New insn.
9818 2018-01-24  Richard Biener  <rguenther@suse.de>
9820         PR tree-optimization/83176
9821         * tree-chrec.c (chrec_fold_plus_1): Handle (signed T){(T) .. }
9822         operands.
9824 2018-01-24  Richard Biener  <rguenther@suse.de>
9826         PR tree-optimization/82819
9827         * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Avoid
9828         code generating pluses that are no-ops in the target precision.
9830 2018-01-24  Richard Biener  <rguenther@suse.de>
9832         PR middle-end/84000
9833         * tree-cfg.c (replace_loop_annotate): Handle annot_expr_parallel_kind.
9835 2018-01-23  Jan Hubicka  <hubicka@ucw.cz>
9837         * cfgcleanup.c (try_crossjump_to_edge): Use combine_with_count
9838         to merge probabilities.
9839         * predict.c (probably_never_executed): Also mark as cold functions
9840         with global 0 profile and guessed local profile.
9841         * profile-count.c (profile_probability::combine_with_count): New
9842         member function.
9843         * profile-count.h (profile_probability::operator*,
9844         profile_probability::operator*=, profile_probability::operator/,
9845         profile_probability::operator/=): Reduce precision to adjusted
9846         and set value to guessed on contradictory divisions.
9847         (profile_probability::combine_with_freq): Remove.
9848         (profile_probability::combine_wiht_count): Declare.
9849         (profile_count::force_nonzero):: Set to adjusted.
9850         (profile_count::probability_in):: Set quality to adjusted.
9851         * tree-ssa-tail-merge.c (replace_block_by): Use
9852         combine_with_count.
9854 2018-01-23  Andrew Waterman  <andrew@sifive.com>
9855             Jim Wilson  <jimw@sifive.com>
9857         * config/riscv/riscv.c (riscv_stack_boundary): New.
9858         (riscv_option_override): Set riscv_stack_boundary.  Handle
9859         riscv_preferred_stack_boundary_arg.
9860         * config/riscv/riscv.h (MIN_STACK_BOUNDARY, ABI_STACK_BOUNDARY): New.
9861         (BIGGEST_ALIGNMENT): Set to STACK_BOUNDARY.
9862         (STACK_BOUNDARY): Set to riscv_stack_boundary.
9863         (RISCV_STACK_ALIGN): Use STACK_BOUNDARY.
9864         * config/riscv/riscv.opt (mpreferred-stack-boundary): New.
9865         * doc/invoke.tex (RISC-V Options): Add -mpreferred-stack-boundary.
9867 2018-01-23  H.J. Lu  <hongjiu.lu@intel.com>
9869         PR target/83905
9870         * config/i386/i386.c (ix86_expand_prologue): Use cost reference
9871         of struct ix86_frame.
9872         (ix86_expand_epilogue): Likewise.  Add a local variable for
9873         the reg_save_offset field in struct ix86_frame.
9875 2018-01-23  Bin Cheng  <bin.cheng@arm.com>
9877         PR tree-optimization/82604
9878         * tree-loop-distribution.c (enum partition_kind): New enum item
9879         PKIND_PARTIAL_MEMSET.
9880         (partition_builtin_p): Support above new enum item.
9881         (generate_code_for_partition): Ditto.
9882         (compute_access_range): Differentiate cases that equality can be
9883         proven at all loops, the innermost loops or no loops.
9884         (classify_builtin_st, classify_builtin_ldst): Adjust call to above
9885         function.  Set PKIND_PARTIAL_MEMSET for partition appropriately.
9886         (finalize_partitions, distribute_loop): Don't fuse partition of
9887         PKIND_PARTIAL_MEMSET kind when distributing 3-level loop nest.
9888         (prepare_perfect_loop_nest): Distribute 3-level loop nest only if
9889         parloop is enabled.
9891 2018-01-23  Martin Liska  <mliska@suse.cz>
9893         * predict.def (PRED_INDIR_CALL): Set probability to PROB_EVEN in
9894         order to ignore the predictor.
9895         (PRED_POLYMORPHIC_CALL): Likewise.
9896         (PRED_RECURSIVE_CALL): Likewise.
9898 2018-01-23  Martin Liska  <mliska@suse.cz>
9900         * tree-profile.c (tree_profiling): Print function header to
9901         aware reader which function we are working on.
9902         * value-prof.c (gimple_find_values_to_profile): Do not print
9903         not interesting value histograms.
9905 2018-01-23  Martin Liska  <mliska@suse.cz>
9907         * profile-count.h (enum profile_quality): Add
9908         profile_uninitialized as the first value. Do not number values
9909         as they are zero based.
9910         (profile_count::verify): Update sanity check.
9911         (profile_probability::verify): Likewise.
9913 2018-01-23  Nathan Sidwell  <nathan@acm.org>
9915         * doc/invoke.texi (ffor-scope): Deprecate.
9917 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
9919         PR tree-optimization/83510
9920         * domwalk.c (set_all_edges_as_executable): New function.
9921         (dom_walker::dom_walker): Convert bool param
9922         "skip_unreachable_blocks" to enum reachability.  Move setup of
9923         edge flags to set_all_edges_as_executable and only do it when
9924         reachability is REACHABLE_BLOCKS.
9925         * domwalk.h (enum dom_walker::reachability): New enum.
9926         (dom_walker::dom_walker): Convert bool param
9927         "skip_unreachable_blocks" to enum reachability.
9928         (set_all_edges_as_executable): New decl.
9929         * graphite-scop-detection.c  (gather_bbs::gather_bbs): Convert
9930         from false for "skip_unreachable_blocks" to ALL_BLOCKS for
9931         "reachability".
9932         * tree-ssa-dom.c (dom_opt_dom_walker::dom_opt_dom_walker): Likewise,
9933         but converting true to REACHABLE_BLOCKS.
9934         * tree-ssa-sccvn.c (sccvn_dom_walker::sccvn_dom_walker): Likewise.
9935         * tree-vrp.c
9936         (check_array_bounds_dom_walker::check_array_bounds_dom_walker):
9937         Likewise, but converting it to REACHABLE_BLOCKS_PRESERVING_FLAGS.
9938         (vrp_dom_walker::vrp_dom_walker): Likewise, but converting it to
9939         REACHABLE_BLOCKS.
9940         (vrp_prop::vrp_finalize): Call set_all_edges_as_executable
9941         if check_all_array_refs will be called.
9943 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
9945         * tree.c (selftest::test_location_wrappers): Add more test
9946         coverage.
9948 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
9950         * sbitmap.c (selftest::test_set_range): Fix memory leaks.
9951         (selftest::test_bit_in_range): Likewise.
9953 2018-01-23  Richard Sandiford  <richard.sandiford@linaro.org>
9955         PR testsuite/83888
9956         * doc/sourcebuild.texi (vect_float): Say that the selector
9957         only describes the situation when -funsafe-math-optimizations is on.
9958         (vect_float_strict): Document.
9960 2018-01-23  Richard Sandiford  <richard.sandiford@linaro.org>
9962         PR tree-optimization/83965
9963         * tree-vect-patterns.c (vect_reassociating_reduction_p): New function.
9964         (vect_recog_dot_prod_pattern, vect_recog_sad_pattern): Use it
9965         instead of checking only for a reduction.
9966         (vect_recog_widen_sum_pattern): Likewise.
9968 2018-01-23  Jan Hubicka  <hubicka@ucw.cz>
9970         * predict.c (probably_never_executed): Only use precise profile info.
9971         (compute_function_frequency): Skip after inlining hack since we now
9972         have quality checking.
9974 2018-01-23  Jan Hubicka  <hubicka@ucw.cz>
9976         * profile-count.h (profile_probability::very_unlikely,
9977         profile_probability::unlikely, profile_probability::even): Set
9978         precision to guessed.
9980 2018-01-23  Richard Biener  <rguenther@suse.de>
9982         PR tree-optimization/83963
9983         * graphite-scop-detection.c (scop_detection::harmful_loop_in_region):
9984         Properly terminate dominator walk when crossing the exit edge not
9985         when visiting its source block.
9987 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
9989         PR c++/83918
9990         * tree.c (maybe_wrap_with_location): Use NON_LVALUE_EXPR rather than
9991         VIEW_CONVERT_EXPR to wrap CONST_DECLs.
9993 2018-01-22  Jakub Jelinek  <jakub@redhat.com>
9995         PR tree-optimization/83957
9996         * omp-expand.c (expand_omp_for_generic): Ignore virtual PHIs.  Remove
9997         semicolon after for body surrounded by braces.
9999         PR tree-optimization/83081
10000         * profile-count.h (profile_probability::split): New method.
10001         * dojump.c (do_jump_1) <case TRUTH_ANDIF_EXPR, case TRUTH_ORIF_EXPR>:
10002         Use profile_probability::split.
10003         (do_compare_rtx_and_jump): Fix adjustment of probabilities
10004         when splitting a single conditional jump into 2.
10006 2018-01-22  David Malcolm  <dmalcolm@redhat.com>
10008         PR tree-optimization/69452
10009         * tree-ssa-loop-im.c (class move_computations_dom_walker): Remove
10010         decl.
10012 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
10014         * config/rl78/rl78-expand.md (bswaphi2): New define_expand.
10015         * config/rl78/rl78-virt.md (*bswaphi2_virt): New define_insn.
10016         * config/rl78/rl78-real.md (*bswaphi2_real): New define_insn.
10018 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
10020         * config/rl78/rl78-protos.h (rl78_split_movdi): New function declaration.
10021         * config/rl78/rl78.md (movdi): New define_expand.
10022         * config/rl78/rl78.c (rl78_split_movdi): New function.
10024 2018-01-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
10026         PR target/83862
10027         * config/rs6000/rs6000-protos.h (rs6000_split_signbit): Delete,
10028         no longer used.
10029         * config/rs6000/rs6000.c (rs6000_split_signbit): Likewise.
10030         * config/rs6000/rs6000.md (signbit<mode>2): Change code for IEEE
10031         128-bit to produce an UNSPEC move to get the double word with the
10032         signbit and then a shift directly to do signbit.
10033         (signbit<mode>2_dm): Replace old IEEE 128-bit signbit
10034         implementation with a new version that just does either a direct
10035         move or a regular move.  Move memory interface to separate insns.
10036         Move insns so they are next to the expander.
10037         (signbit<mode>2_dm_mem_be): New combiner insns to combine load
10038         with signbit move.  Split big and little endian case.
10039         (signbit<mode>2_dm_mem_le): Likewise.
10040         (signbit<mode>2_dm_<su>ext): Delete, no longer used.
10041         (signbit<mode>2_dm2): Likewise.
10043 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
10045         * config/rl78/rl78.md (anddi3): New define_expand.
10047 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
10049         * config/rl78/rl78.md (umindi3): New define_expand.
10051 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
10053         * config/rl78/rl78.md (smindi3): New define_expand.
10055 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
10057         * config/rl78/rl78.md (smaxdi3): New define_expand.
10059 2018-01-22  Carl Love  <cel@us.ibm.com>
10061         * config/rs6000/rs6000-builtin.def (ST_ELEMREV_V1TI, LD_ELEMREV_V1TI,
10062         LVX_V1TI): Add macro expansion.
10063         * config/rs6000/rs6000-c.c (altivec_builtin_types): Add argument
10064         definitions for VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_VEC_ST,
10065         VSX_BUILTIN_VEC_XL, LD_ELEMREV_V1TI builtins.
10066         * config/rs6000/rs6000-p8swap.c (insn_is_swappable_p);
10067         Change check to determine if the instruction is a byte reversing
10068         entry.  Fix typo in comment.
10069         * config/rs6000/rs6000.c (altivec_expand_builtin): Add case entry
10070         for VSX_BUILTIN_ST_ELEMREV_V1TI and VSX_BUILTIN_LD_ELEMREV_V1TI.
10071         Add def_builtin calls for new builtins.
10072         * config/rs6000/vsx.md (vsx_st_elemrev_v1ti, vsx_ld_elemrev_v1ti):
10073         Add define_insn expansion.
10075 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
10077         * config/rl78/rl78.md (umaxdi3): New define_expand.
10079 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
10081         * config/rl78/rl78.c (rl78_note_reg_set): Fixed dead reg check
10082         for non-QImode registers.
10084 2018-01-22  Richard Biener  <rguenther@suse.de>
10086         PR tree-optimization/83963
10087         * graphite-scop-detection.c (scop_detection::get_sese): Delay
10088         including the loop exit block.
10089         (scop_detection::merge_sese): Likewise.
10090         (scop_detection::add_scop): Do it here instead.
10092 2018-01-22  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
10094         * doc/sourcebuild.texi (arm_softfloat): Document.
10096 2018-01-21  John David Anglin  <danglin@gcc.gnu.org>
10098         PR gcc/77734
10099         * config/pa/pa.c (pa_function_ok_for_sibcall): Use
10100         targetm.binds_local_p instead of TREE_PUBLIC to check local binding.
10101         Move TARGET_PORTABLE_RUNTIME check after TARGET_64BIT check.
10103 2018-01-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
10104             David Edelsohn  <dje.gcc@gmail.com>
10106         PR target/83946
10107         * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
10108         Change "crset eq" to "crset 2".
10109         (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
10110         (*call_indirect_aix<mode>_nospec): Likewise.
10111         (*call_value_indirect_aix<mode>_nospec): Likewise.
10112         (*call_indirect_elfv2<mode>_nospec): Likewise.
10113         (*call_value_indirect_elfv2<mode>_nospec): Likewise.
10114         (*sibcall_nonlocal_sysv<mode>): Change "crset eq" to "crset 2";
10115         change assembly output from . to $.
10116         (*sibcall_value_nonlocal_sysv<mode>): Likewise.
10117         (indirect_jump<mode>_nospec): Change assembly output from . to $.
10118         (*tablejump<mode>_internal1_nospec): Likewise.
10120 2018-01-21  Oleg Endo  <olegendo@gcc.gnu.org>
10122         PR target/80870
10123         * config/sh/sh_optimize_sett_clrt.cc:
10124         Use INCLUDE_ALGORITHM and INCLUDE_VECTOR instead of direct includes.
10126 2018-01-20  Richard Sandiford  <richard.sandiford@linaro.org>
10128         PR tree-optimization/83940
10129         * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): Set
10130         offset_dt to vect_constant_def rather than vect_unknown_def_type.
10131         (vect_check_load_store_mask): Add a mask_dt_out parameter and
10132         use it to pass back the definition type.
10133         (vect_check_store_rhs): Likewise rhs_dt_out.
10134         (vect_build_gather_load_calls): Add a mask_dt argument and use
10135         it instead of a call to vect_is_simple_use.
10136         (vectorizable_store): Update calls to vect_check_load_store_mask
10137         and vect_check_store_rhs.  Use the dt returned by the latter instead
10138         of scatter_src_dt.  Use the cached mask_dt and gs_info.offset_dt
10139         instead of calls to vect_is_simple_use.  Pass the scalar rather
10140         than the vector operand to vect_is_simple_use when handling
10141         second and subsequent copies of an rhs value.
10142         (vectorizable_load): Update calls to vect_check_load_store_mask
10143         and vect_build_gather_load_calls.  Use the cached mask_dt and
10144         gs_info.offset_dt instead of calls to vect_is_simple_use.
10146 2018-01-20  Jakub Jelinek  <jakub@redhat.com>
10148         PR middle-end/83945
10149         * tree-emutls.c: Include gimplify.h.
10150         (lower_emutls_2): New function.
10151         (lower_emutls_1): If ADDR_EXPR is a gimple invariant and walk_tree
10152         with lower_emutls_2 callback finds some TLS decl in it, unshare_expr
10153         it before further processing.
10155         PR target/83930
10156         * simplify-rtx.c (simplify_binary_operation_1) <case UMOD>: Use
10157         UINTVAL (trueop1) instead of INTVAL (op1).
10159 2018-01-19  Jakub Jelinek  <jakub@redhat.com>
10161         PR debug/81570
10162         PR debug/83728
10163         * dwarf2cfi.c (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define to
10164         INCOMING_FRAME_SP_OFFSET if not defined.
10165         (scan_trace): Add ENTRY argument.  If true and
10166         DEFAULT_INCOMING_FRAME_SP_OFFSET != INCOMING_FRAME_SP_OFFSET,
10167         emit a note to adjust the CFA offset.
10168         (create_cfi_notes): Adjust scan_trace callers.
10169         (create_cie_data): Use DEFAULT_INCOMING_FRAME_SP_OFFSET rather than
10170         INCOMING_FRAME_SP_OFFSET in the CIE.
10171         * config/i386/i386.h (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define.
10172         * config/stormy16/stormy16.h (DEFAULT_INCOMING_FRAME_SP_OFFSET):
10173         Likewise.
10174         * doc/tm.texi.in (DEFAULT_INCOMING_FRAME_SP_OFFSET): Document.
10175         * doc/tm.texi: Regenerated.
10177 2018-01-19  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
10179         PR rtl-optimization/83147
10180         * lra-constraints.c (remove_inheritance_pseudos): Use
10181         lra_substitute_pseudo_within_insn.
10183 2018-01-19  Tom de Vries  <tom@codesourcery.com>
10184             Cesar Philippidis  <cesar@codesourcery.com>
10186         PR target/83920
10187         * config/nvptx/nvptx.c (nvptx_single): Fix jit workaround.
10189 2018-01-19  Cesar Philippidis  <cesar@codesourcery.com>
10191         PR target/83790
10192         * config/nvptx/nvptx.c (output_init_frag): Don't use generic address
10193         spaces for function labels.
10195 2018-01-19  Martin Liska  <mliska@suse.cz>
10197         * predict.def (PRED_LOOP_EXIT): Change from 85 to 89.
10198         (PRED_LOOP_EXIT_WITH_RECURSION): Change from 72 to 78.
10199         (PRED_LOOP_EXTRA_EXIT): Change from 83 to 67.
10200         (PRED_OPCODE_POSITIVE): Change from 64 to 59.
10201         (PRED_TREE_OPCODE_POSITIVE): Change from 64 to 59.
10202         (PRED_CONST_RETURN): Change from 69 to 65.
10203         (PRED_NULL_RETURN): Change from 91 to 71.
10204         (PRED_LOOP_IV_COMPARE_GUESS): Change from 98 to 64.
10205         (PRED_LOOP_GUARD): Change from 66 to 73.
10207 2018-01-19  Martin Liska  <mliska@suse.cz>
10209         * predict.c (predict_insn_def): Add new assert.
10210         (struct branch_predictor): Change type to signed integer.
10211         (test_prediction_value_range): Amend test to cover
10212         PROB_UNINITIALIZED.
10213         * predict.def (PRED_LOOP_ITERATIONS): Use the new constant.
10214         (PRED_LOOP_ITERATIONS_GUESSED): Likewise.
10215         (PRED_LOOP_ITERATIONS_MAX): Likewise.
10216         (PRED_LOOP_IV_COMPARE): Likewise.
10217         * predict.h (PROB_UNINITIALIZED): Define new constant.
10219 2018-01-19  Martin Liska  <mliska@suse.cz>
10221         * predict.c (dump_prediction): Add new format for
10222         analyze_brprob.py script which is enabled with -details
10223         suboption.
10224         * profile-count.h (precise_p): New function.
10226 2018-01-19  Richard Sandiford  <richard.sandiford@linaro.org>
10228         PR tree-optimization/83922
10229         * tree-vect-loop.c (vect_verify_full_masking): Return false if
10230         there are no statements that need masking.
10231         (vect_active_double_reduction_p): New function.
10232         (vect_analyze_loop_operations): Use it when handling phis that
10233         are not in the loop header.
10235 2018-01-19  Richard Sandiford  <richard.sandiford@linaro.org>
10237         PR tree-optimization/83914
10238         * tree-vect-loop.c (vectorizable_induction): Don't convert
10239         init_expr or apply the peeling adjustment for inductions
10240         that are nested within the vectorized loop.
10242 2018-01-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
10244         * config/arm/thumb2.md (*thumb2_negsi2_short): Use RSB mnemonic
10245         instead of NEG.
10247 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
10249         PR sanitizer/81715
10250         PR testsuite/83882
10251         * function.h (gimplify_parameters): Add gimple_seq * argument.
10252         * function.c: Include gimple.h and options.h.
10253         (gimplify_parameters): Add cleanup argument, add CLOBBER stmts
10254         for the added local temporaries if needed.
10255         * gimplify.c (gimplify_body): Adjust gimplify_parameters caller,
10256         if there are any parameter cleanups, wrap whole body into a
10257         try/finally with the cleanups.
10259 2018-01-18  Wilco Dijkstra  <wdijkstr@arm.com>
10261         PR target/82964
10262         * config/aarch64/aarch64.c (aarch64_legitimate_constant_p):
10263         Use GET_MODE_CLASS for scalar floating point.
10265 2018-01-18  Jan Hubicka  <hubicka@ucw.cz>
10267         PR ipa/82256
10268         patch by PaX Team
10269         * cgraphclones.c (cgraph_node::create_version_clone_with_body):
10270         Fix call of call_cgraph_insertion_hooks.
10272 2018-01-18  Martin Sebor  <msebor@redhat.com>
10274         * doc/invoke.texi (-Wclass-memaccess): Tweak text.
10276 2018-01-18  Jan Hubicka  <hubicka@ucw.cz>
10278         PR ipa/83619
10279         * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Update edge
10280         frequencies.
10282 2018-01-18  Boris Kolpackov  <boris@codesynthesis.com>
10284         PR other/70268
10285         * common.opt: (-ffile-prefix-map): New option.
10286         * opts.c (common_handle_option): Defer it.
10287         * opts-global.c (handle_common_deferred_options): Handle it.
10288         * debug.h (remap_debug_filename, add_debug_prefix_map): Move to...
10289         * file-prefix-map.h: New file.
10290         (remap_debug_filename, add_debug_prefix_map): ...here.
10291         (add_macro_prefix_map, add_file_prefix_map, remap_macro_filename): New.
10292         * final.c (debug_prefix_map, add_debug_prefix_map
10293         remap_debug_filename): Move to...
10294         * file-prefix-map.c: New file.
10295         (file_prefix_map, add_prefix_map, remap_filename) ...here and rename,
10296         generalize, get rid of alloca(), use strrchr() instead of strchr().
10297         (add_macro_prefix_map, add_debug_prefix_map, add_file_prefix_map):
10298         Implement in terms of add_prefix_map().
10299         (remap_macro_filename, remap_debug_filename): Implement in term of
10300         remap_filename().
10301         * Makefile.in (OBJS, PLUGIN_HEADERS): Add new files.
10302         * builtins.c (fold_builtin_FILE): Call remap_macro_filename().
10303         * dbxout.c: Include file-prefix-map.h.
10304         * varasm.c: Likewise.
10305         * vmsdbgout.c: Likewise.
10306         * xcoffout.c: Likewise.
10307         * dwarf2out.c: Likewise plus omit new options from DW_AT_producer.
10308         * doc/cppopts.texi (-fmacro-prefix-map): Document.
10309         * doc/invoke.texi (-ffile-prefix-map): Document.
10310         (-fdebug-prefix-map): Update description.
10312 2018-01-18  Martin Liska  <mliska@suse.cz>
10314         * config/i386/i386.c (indirect_thunk_name): Document that also
10315         lfence is emitted.
10316         (output_indirect_thunk): Document why both instructions
10317         (pause and lfence) are generated.
10319 2018-01-18  Richard Biener  <rguenther@suse.de>
10321         PR tree-optimization/83887
10322         * graphite-scop-detection.c
10323         (scop_detection::get_nearest_dom_with_single_entry): Remove.
10324         (scop_detection::get_nearest_pdom_with_single_exit): Likewise.
10325         (scop_detection::merge_sese): Re-implement with a flood-fill
10326         algorithm that properly finds a SESE region if it exists.
10328 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
10330         PR c/61240
10331         * match.pd ((P + A) - P, P - (P + A), (P + A) - (P + B)): For
10332         pointer_diff optimizations use view_convert instead of convert.
10334 2018-01-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
10336         * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
10337         Generate different code for -mno-speculate-indirect-jumps.
10338         (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
10339         (*call_indirect_aix<mode>): Disable for
10340         -mno-speculate-indirect-jumps.
10341         (*call_indirect_aix<mode>_nospec): New define_insn.
10342         (*call_value_indirect_aix<mode>): Disable for
10343         -mno-speculate-indirect-jumps.
10344         (*call_value_indirect_aix<mode>_nospec): New define_insn.
10345         (*sibcall_nonlocal_sysv<mode>): Generate different code for
10346         -mno-speculate-indirect-jumps.
10347         (*sibcall_value_nonlocal_sysv<mode>): Likewise.
10349 2018-01-17  Michael Meissner  <meissner@linux.vnet.ibm.com>
10351         * config/rs6000/rs6000.c (rs6000_emit_move): If we load or store a
10352         long double type, set the flags for noting the default long double
10353         type, even if we don't pass or return a long double type.
10355 2018-01-17  Jan Hubicka  <hubicka@ucw.cz>
10357         PR ipa/83051
10358         * ipa-inline.c (flatten_function): Do not overwrite final inlining
10359         failure.
10361 2018-01-17  Will Schmidt  <will_schmidt@vnet.ibm.com>
10363         * config/rs6000/rs6000.c (rs6000_gimple_builtin): Add gimple folding
10364         support for merge[hl].
10365         (fold_mergehl_helper): New helper function.
10366         (tree-vector-builder.h): New #include for tree_vector_builder usage.
10367         * config/rs6000/altivec.md (altivec_vmrghw_direct): Add xxmrghw insn.
10368         (altivec_vmrglw_direct): Add xxmrglw insn.
10370 2018-01-17  Andrew Waterman  <andrew@sifive.com>
10372         * config/riscv/riscv.c (riscv_conditional_register_usage): If
10373         UNITS_PER_FP_ARG is 0, set call_used_regs to 1 for all FP regs.
10375 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
10377         PR lto/83121
10378         * ipa-devirt.c (add_type_duplicate): When comparing memory layout,
10379         call the lto_location_cache before reading the
10380         DECL_SOURCE_LOCATION of the types.
10382 2018-01-17  Wilco Dijkstra  <wdijkstr@arm.com>
10383             Richard Sandiford  <richard.sandiford@linaro.org>
10385         * config/aarch64/aarch64.md (movti_aarch64): Use Uti constraint.
10386         * config/aarch64/aarch64.c (aarch64_mov128_immediate): New function.
10387         (aarch64_legitimate_constant_p): Just support CONST_DOUBLE
10388         SF/DF/TF mode to avoid creating illegal CONST_WIDE_INT immediates.
10389         * config/aarch64/aarch64-protos.h (aarch64_mov128_immediate):
10390         Add declaration.
10391         * config/aarch64/constraints.md (aarch64_movti_operand):
10392         Limit immediates.
10393         * config/aarch64/predicates.md (Uti): Add new constraint.
10395 2018-01-17 Carl Love  <cel@us.ibm.com>
10397         * config/rs6000/vsx.md (define_expand xl_len_r,
10398         define_expand stxvl, define_expand *stxvl): Add match_dup argument.
10399         (define_insn): Add, match_dup 1 argument to define_insn stxvll and
10400         lxvll.
10401         (define_expand, define_insn): Move the shift left from  the
10402         define_insn to the define_expand for lxvl and stxvl instructions.
10403         * config/rs6000/rs6000-builtin.def (BU_P9V_64BIT_VSX_2): Change LXVL
10404         and XL_LEN_R definitions to PURE.
10406 2018-01-17  Uros Bizjak  <ubizjak@gmail.com>
10408         * config/i386/i386.c (indirect_thunk_name): Declare regno
10409         as unsigned int.  Compare regno with INVALID_REGNUM.
10410         (output_indirect_thunk): Ditto.
10411         (output_indirect_thunk_function): Ditto.
10412         (ix86_code_end): Declare regno as unsigned int.  Use INVALID_REGNUM
10413         in the call to output_indirect_thunk_function.
10415 2018-01-17  Richard Sandiford  <richard.sandiford@linaro.org>
10417         PR middle-end/83884
10418         * expr.c (expand_expr_real_1): Use the size of GET_MODE (op0)
10419         rather than the size of inner_type to determine the stack slot size
10420         when handling VIEW_CONVERT_EXPRs on strict-alignment targets.
10422 2018-01-16  Sebastian Peryt  <sebastian.peryt@intel.com>
10424         PR target/83546
10425         * config/i386/i386.c (ix86_option_override_internal): Add PTA_RDRND
10426         to PTA_SILVERMONT.
10428 2018-01-16  Michael Meissner  <meissner@linux.vnet.ibm.com>
10430         * config.gcc (powerpc*-linux*-*): Add support for 64-bit little
10431         endian Linux systems to optionally enable multilibs for selecting
10432         the long double type if the user configured an explicit type.
10433         * config/rs6000/rs6000.h (TARGET_IEEEQUAD_MULTILIB): Indicate we
10434         have no long double multilibs if not defined.
10435         * config/rs6000/rs6000.c (rs6000_option_override_internal): Do not
10436         warn if the user used -mabi={ieee,ibm}longdouble and we built
10437         multilibs for long double.
10438         * config/rs6000/linux64.h (MULTILIB_DEFAULTS_IEEE): Define as the
10439         appropriate multilib option.
10440         (MULTILIB_DEFAULTS): Add MULTILIB_DEFAULTS_IEEE to the default
10441         multilib options.
10442         * config/rs6000/t-ldouble-linux64le-ibm: New configuration files
10443         for building long double multilibs.
10444         * config/rs6000/t-ldouble-linux64le-ieee: Likewise.
10446 2018-01-16  John David Anglin  <danglin@gcc.gnu.org>
10448         * config.gcc (hppa*-*-linux*): Change callee copies ABI to caller
10449         copies.
10451         * config/pa.h (MALLOC_ABI_ALIGNMENT): Set 32-bit alignment default to
10452         64 bits.
10453         * config/pa/pa32-linux.h (MALLOC_ABI_ALIGNMENT): Set alignment to
10454         128 bits.
10456         * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Cleanup type and mode
10457         variables.
10459         * config/pa/pa.c (pa_function_arg_size): Apply CEIL to GET_MODE_SIZE
10460         return value.
10462 2018-01-16  Eric Botcazou  <ebotcazou@adacore.com>
10464         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For an
10465         ADDR_EXPR, do not count the offset of a COMPONENT_REF twice.
10467 2018-01-16  Kelvin Nilsen  <kelvin@gcc.gnu.org>
10469         * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Generate
10470         different rtl trees depending on TARGET_64BIT.
10471         (rs6000_gen_lvx): Likewise.
10473 2018-01-16  Eric Botcazou  <ebotcazou@adacore.com>
10475         * config/visium/visium.md (nop): Tweak comment.
10476         (hazard_nop): Likewise.
10478 2018-01-16  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
10480         * config/rs6000/rs6000.c (rs6000_opt_vars): Add entry for
10481         -mspeculate-indirect-jumps.
10482         * config/rs6000/rs6000.md (*call_indirect_elfv2<mode>): Disable
10483         for -mno-speculate-indirect-jumps.
10484         (*call_indirect_elfv2<mode>_nospec): New define_insn.
10485         (*call_value_indirect_elfv2<mode>): Disable for
10486         -mno-speculate-indirect-jumps.
10487         (*call_value_indirect_elfv2<mode>_nospec): New define_insn.
10488         (indirect_jump): Emit different RTL for
10489         -mno-speculate-indirect-jumps.
10490         (*indirect_jump<mode>): Disable for
10491         -mno-speculate-indirect-jumps.
10492         (*indirect_jump<mode>_nospec): New define_insn.
10493         (tablejump): Emit different RTL for
10494         -mno-speculate-indirect-jumps.
10495         (tablejumpsi): Disable for -mno-speculate-indirect-jumps.
10496         (tablejumpsi_nospec): New define_expand.
10497         (tablejumpdi): Disable for -mno-speculate-indirect-jumps.
10498         (tablejumpdi_nospec): New define_expand.
10499         (*tablejump<mode>_internal1): Disable for
10500         -mno-speculate-indirect-jumps.
10501         (*tablejump<mode>_internal1_nospec): New define_insn.
10502         * config/rs6000/rs6000.opt (mspeculate-indirect-jumps): New
10503         option.
10505 2018-01-16  Artyom Skrobov tyomitch@gmail.com
10507         * caller-save.c (insert_save): Drop unnecessary parameter.  All
10508         callers updated.
10510 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
10511             Richard Biener  <rguenth@suse.de>
10513         PR libgomp/83590
10514         * gimplify.c (gimplify_one_sizepos): For is_gimple_constant (expr)
10515         return early, inline manually is_gimple_sizepos.  Make sure if we
10516         call gimplify_expr we don't end up with a gimple constant.
10517         * tree.c (variably_modified_type_p): Don't return true for
10518         is_gimple_constant (_t).  Inline manually is_gimple_sizepos.
10519         * gimplify.h (is_gimple_sizepos): Remove.
10521 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
10523         PR tree-optimization/83857
10524         * tree-vect-loop.c (vect_analyze_loop_operations): Don't call
10525         vectorizable_live_operation for pure SLP statements.
10526         (vectorizable_live_operation): Handle PHIs.
10528 2018-01-16  Richard Biener  <rguenther@suse.de>
10530         PR tree-optimization/83867
10531         * tree-vect-stmts.c (vect_transform_stmt): Precompute
10532         nested_in_vect_loop_p since the scalar stmt may get invalidated.
10534 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
10536         PR c/83844
10537         * stor-layout.c (handle_warn_if_not_align): Use byte_position and
10538         multiple_of_p instead of unchecked tree_to_uhwi and UHWI check.
10539         If off is not INTEGER_CST, issue a may not be aligned warning
10540         rather than isn't aligned.  Use isn%'t rather than isn't.
10541         * fold-const.c (multiple_of_p) <case BIT_AND_EXPR>: Don't fall through
10542         into MULT_EXPR.
10543         <case MULT_EXPR>: Improve the case when bottom and one of the
10544         MULT_EXPR operands are INTEGER_CSTs and bottom is multiple of that
10545         operand, in that case check if the other operand is multiple of
10546         bottom divided by the INTEGER_CST operand.
10548 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
10550         PR target/83858
10551         * config/pa/pa.h (FUNCTION_ARG_SIZE): Delete.
10552         * config/pa/pa-protos.h (pa_function_arg_size): Declare.
10553         * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Use
10554         pa_function_arg_size instead of FUNCTION_ARG_SIZE.
10555         * config/pa/pa.c (pa_function_arg_advance): Likewise.
10556         (pa_function_arg, pa_arg_partial_bytes): Likewise.
10557         (pa_function_arg_size): New function.
10559 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
10561         * fold-const.c (fold_ternary_loc): Construct the vec_perm_indices
10562         in a separate statement.
10564 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
10566         PR tree-optimization/83847
10567         * tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Don't
10568         group gathers and scatters.
10570 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
10572         PR rtl-optimization/86620
10573         * params.def (max-sched-ready-insns): Bump minimum value to 1.
10575         PR rtl-optimization/83213
10576         * recog.c (peep2_attempt): Copy over CROSSING_JUMP_P from peepinsn
10577         to last if both are JUMP_INSNs.
10579         PR tree-optimization/83843
10580         * gimple-ssa-store-merging.c
10581         (imm_store_chain_info::output_merged_store): Handle bit_not_p on
10582         store_immediate_info for bswap/nop orig_stores.
10584 2018-01-15  Andrew Waterman  <andrew@sifive.com>
10586         * config/riscv/riscv.c (riscv_rtx_costs) <MULT>: Increase cost if
10587         !TARGET_MUL.
10588         <UDIV>: Increase cost if !TARGET_DIV.
10590 2018-01-15  Segher Boessenkool  <segher@kernel.crashing.org>
10592         * config/rs6000/rs6000.md (define_attr "type"): Remove delayed_cr.
10593         (define_attr "cr_logical_3op"): New.
10594         (cceq_ior_compare): Adjust.
10595         (cceq_ior_compare_complement): Adjust.
10596         (*cceq_rev_compare): Adjust.
10597         * config/rs6000/rs6000.c (rs6000_adjust_cost): Adjust.
10598         (is_cracked_insn): Adjust.
10599         (insn_must_be_first_in_group): Adjust.
10600         * config/rs6000/40x.md: Adjust.
10601         * config/rs6000/440.md: Adjust.
10602         * config/rs6000/476.md: Adjust.
10603         * config/rs6000/601.md: Adjust.
10604         * config/rs6000/603.md: Adjust.
10605         * config/rs6000/6xx.md: Adjust.
10606         * config/rs6000/7450.md: Adjust.
10607         * config/rs6000/7xx.md: Adjust.
10608         * config/rs6000/8540.md: Adjust.
10609         * config/rs6000/cell.md: Adjust.
10610         * config/rs6000/e300c2c3.md: Adjust.
10611         * config/rs6000/e500mc.md: Adjust.
10612         * config/rs6000/e500mc64.md: Adjust.
10613         * config/rs6000/e5500.md: Adjust.
10614         * config/rs6000/e6500.md: Adjust.
10615         * config/rs6000/mpc.md: Adjust.
10616         * config/rs6000/power4.md: Adjust.
10617         * config/rs6000/power5.md: Adjust.
10618         * config/rs6000/power6.md: Adjust.
10619         * config/rs6000/power7.md: Adjust.
10620         * config/rs6000/power8.md: Adjust.
10621         * config/rs6000/power9.md: Adjust.
10622         * config/rs6000/rs64.md: Adjust.
10623         * config/rs6000/titan.md: Adjust.
10625 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
10627         * config/i386/predicates.md (indirect_branch_operand): Rewrite
10628         ix86_indirect_branch_register logic.
10630 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
10632         * config/i386/constraints.md (Bs): Update
10633         ix86_indirect_branch_register check.  Don't check
10634         ix86_indirect_branch_register with GOT_memory_operand.
10635         (Bw): Likewise.
10636         * config/i386/predicates.md (GOT_memory_operand): Don't check
10637         ix86_indirect_branch_register here.
10638         (GOT32_symbol_operand): Likewise.
10640 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
10642         * config/i386/predicates.md (constant_call_address_operand):
10643         Rewrite ix86_indirect_branch_register logic.
10644         (sibcall_insn_operand): Likewise.
10646 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
10648         * config/i386/constraints.md (Bs): Replace
10649         ix86_indirect_branch_thunk_register with
10650         ix86_indirect_branch_register.
10651         (Bw): Likewise.
10652         * config/i386/i386.md (indirect_jump): Likewise.
10653         (tablejump): Likewise.
10654         (*sibcall_memory): Likewise.
10655         (*sibcall_value_memory): Likewise.
10656         Peepholes of indirect call and jump via memory: Likewise.
10657         * config/i386/i386.opt: Likewise.
10658         * config/i386/predicates.md (indirect_branch_operand): Likewise.
10659         (GOT_memory_operand): Likewise.
10660         (call_insn_operand): Likewise.
10661         (sibcall_insn_operand): Likewise.
10662         (GOT32_symbol_operand): Likewise.
10664 2018-01-15  Jakub Jelinek  <jakub@redhat.com>
10666         PR middle-end/83837
10667         * omp-expand.c (expand_omp_atomic_pipeline): Use loaded_val
10668         type rather than type addr's type points to.
10669         (expand_omp_atomic_mutex): Likewise.
10670         (expand_omp_atomic): Likewise.
10672 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
10674         PR target/83839
10675         * config/i386/i386.c (output_indirect_thunk_function): Use
10676         ASM_OUTPUT_LABEL, instead of ASM_OUTPUT_DEF, for TARGET_MACHO
10677         for  __x86_return_thunk.
10679 2018-01-15  Richard Biener  <rguenther@suse.de>
10681         PR middle-end/83850
10682         * expmed.c (extract_bit_field_1): Fix typo.
10684 2018-01-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
10686         PR target/83687
10687         * config/arm/iterators.md (VF): New mode iterator.
10688         * config/arm/neon.md (neon_vabd<mode>_2): Use the above.
10689         Remove integer-related logic from pattern.
10690         (neon_vabd<mode>_3): Likewise.
10692 2018-01-15  Jakub Jelinek  <jakub@redhat.com>
10694         PR middle-end/82694
10695         * common.opt (fstrict-overflow): No longer an alias.
10696         (fwrapv-pointer): New option.
10697         * tree.h (TYPE_OVERFLOW_WRAPS, TYPE_OVERFLOW_UNDEFINED): Define
10698         also for pointer types based on flag_wrapv_pointer.
10699         * opts.c (common_handle_option) <case OPT_fstrict_overflow>: Set
10700         opts->x_flag_wrap[pv] to !value, clear opts->x_flag_trapv if
10701         opts->x_flag_wrapv got set.
10702         * fold-const.c (fold_comparison, fold_binary_loc): Revert 2017-08-01
10703         changes, just use TYPE_OVERFLOW_UNDEFINED on pointer type instead of
10704         POINTER_TYPE_OVERFLOW_UNDEFINED.
10705         * match.pd: Likewise in address comparison pattern.
10706         * doc/invoke.texi: Document -fwrapv and -fstrict-overflow.
10708 2018-01-15  Richard Biener  <rguenther@suse.de>
10710         PR lto/83804
10711         * tree.c (free_lang_data_in_type): Always unlink TYPE_DECLs
10712         from TYPE_FIELDS.  Free TYPE_BINFO if not used by devirtualization.
10713         Reset type names to their identifier if their TYPE_DECL doesn't
10714         have linkage (and thus is used for ODR and devirt).
10715         (save_debug_info_for_decl): Remove.
10716         (save_debug_info_for_type): Likewise.
10717         (add_tree_to_fld_list): Adjust.
10718         * tree-pretty-print.c (dump_generic_node): Make dumping of
10719         type names more robust.
10721 2018-01-15  Richard Biener  <rguenther@suse.de>
10723         * BASE-VER: Bump to 8.0.1.
10725 2018-01-14  Martin Sebor  <msebor@redhat.com>
10727         PR other/83508
10728         * builtins.c (check_access): Avoid warning when the no-warning bit
10729         is set.
10731 2018-01-14  Cory Fields  <cory-nospam-@coryfields.com>
10733         * tree-ssa-loop-im.c (sort_bbs_in_loop_postorder_cmp): Stabilize sort.
10734         * ira-color (allocno_hard_regs_compare): Likewise.
10736 2018-01-14  Nathan Rossi  <nathan@nathanrossi.com>
10738         PR target/83013
10739         * config/microblaze/microblaze.c (microblaze_asm_output_ident):
10740         Use .pushsection/.popsection.
10742 2018-01-14  Martin Sebor  <msebor@redhat.com>
10744         PR c++/81327
10745         * doc/invoke.texi (-Wlass-memaccess): Document suppression by casting.
10747 2018-01-14  Jakub Jelinek  <jakub@redhat.com>
10749         * config.gcc (i[34567]86-*-*): Remove one duplicate gfniintrin.h
10750         entry from extra_headers.
10751         (x86_64-*-*): Remove two duplicate gfniintrin.h entries from
10752         extra_headers, make the list bitwise identical to the i?86-*-* one.
10754 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
10756         * config/i386/i386.c (ix86_set_indirect_branch_type): Disallow
10757         -mcmodel=large with -mindirect-branch=thunk,
10758         -mindirect-branch=thunk-extern, -mfunction-return=thunk and
10759         -mfunction-return=thunk-extern.
10760         * doc/invoke.texi: Document -mcmodel=large is incompatible with
10761         -mindirect-branch=thunk, -mindirect-branch=thunk-extern,
10762         -mfunction-return=thunk and -mfunction-return=thunk-extern.
10764 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
10766         * config/i386/i386.c (print_reg): Print the name of the full
10767         integer register without '%'.
10768         (ix86_print_operand): Handle 'V'.
10769          * doc/extend.texi: Document 'V' modifier.
10771 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
10773         * config/i386/constraints.md (Bs): Disallow memory operand for
10774         -mindirect-branch-register.
10775         (Bw): Likewise.
10776         * config/i386/predicates.md (indirect_branch_operand): Likewise.
10777         (GOT_memory_operand): Likewise.
10778         (call_insn_operand): Likewise.
10779         (sibcall_insn_operand): Likewise.
10780         (GOT32_symbol_operand): Likewise.
10781         * config/i386/i386.md (indirect_jump): Call convert_memory_address
10782         for -mindirect-branch-register.
10783         (tablejump): Likewise.
10784         (*sibcall_memory): Likewise.
10785         (*sibcall_value_memory): Likewise.
10786         Disallow peepholes of indirect call and jump via memory for
10787         -mindirect-branch-register.
10788         (*call_pop): Replace m with Bw.
10789         (*call_value_pop): Likewise.
10790         (*sibcall_pop_memory): Replace m with Bs.
10791         * config/i386/i386.opt (mindirect-branch-register): New option.
10792         * doc/invoke.texi: Document -mindirect-branch-register option.
10794 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
10796         * config/i386/i386-protos.h (ix86_output_function_return): New.
10797         * config/i386/i386.c (ix86_set_indirect_branch_type): Also
10798         set function_return_type.
10799         (indirect_thunk_name): Add ret_p to indicate thunk for function
10800         return.
10801         (output_indirect_thunk_function): Pass false to
10802         indirect_thunk_name.
10803         (ix86_output_indirect_branch_via_reg): Likewise.
10804         (ix86_output_indirect_branch_via_push): Likewise.
10805         (output_indirect_thunk_function): Create alias for function
10806         return thunk if regno < 0.
10807         (ix86_output_function_return): New function.
10808         (ix86_handle_fndecl_attribute): Handle function_return.
10809         (ix86_attribute_table): Add function_return.
10810         * config/i386/i386.h (machine_function): Add
10811         function_return_type.
10812         * config/i386/i386.md (simple_return_internal): Use
10813         ix86_output_function_return.
10814         (simple_return_internal_long): Likewise.
10815         * config/i386/i386.opt (mfunction-return=): New option.
10816         (indirect_branch): Mention -mfunction-return=.
10817         * doc/extend.texi: Document function_return function attribute.
10818         * doc/invoke.texi: Document -mfunction-return= option.
10820 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
10822         * config/i386/i386-opts.h (indirect_branch): New.
10823         * config/i386/i386-protos.h (ix86_output_indirect_jmp): Likewise.
10824         * config/i386/i386.c (ix86_using_red_zone): Disallow red-zone
10825         with local indirect jump when converting indirect call and jump.
10826         (ix86_set_indirect_branch_type): New.
10827         (ix86_set_current_function): Call ix86_set_indirect_branch_type.
10828         (indirectlabelno): New.
10829         (indirect_thunk_needed): Likewise.
10830         (indirect_thunk_bnd_needed): Likewise.
10831         (indirect_thunks_used): Likewise.
10832         (indirect_thunks_bnd_used): Likewise.
10833         (INDIRECT_LABEL): Likewise.
10834         (indirect_thunk_name): Likewise.
10835         (output_indirect_thunk): Likewise.
10836         (output_indirect_thunk_function): Likewise.
10837         (ix86_output_indirect_branch_via_reg): Likewise.
10838         (ix86_output_indirect_branch_via_push): Likewise.
10839         (ix86_output_indirect_branch): Likewise.
10840         (ix86_output_indirect_jmp): Likewise.
10841         (ix86_code_end): Call output_indirect_thunk_function if needed.
10842         (ix86_output_call_insn): Call ix86_output_indirect_branch if
10843         needed.
10844         (ix86_handle_fndecl_attribute): Handle indirect_branch.
10845         (ix86_attribute_table): Add indirect_branch.
10846         * config/i386/i386.h (machine_function): Add indirect_branch_type
10847         and has_local_indirect_jump.
10848         * config/i386/i386.md (indirect_jump): Set has_local_indirect_jump
10849         to true.
10850         (tablejump): Likewise.
10851         (*indirect_jump): Use ix86_output_indirect_jmp.
10852         (*tablejump_1): Likewise.
10853         (simple_return_indirect_internal): Likewise.
10854         * config/i386/i386.opt (mindirect-branch=): New option.
10855         (indirect_branch): New.
10856         (keep): Likewise.
10857         (thunk): Likewise.
10858         (thunk-inline): Likewise.
10859         (thunk-extern): Likewise.
10860         * doc/extend.texi: Document indirect_branch function attribute.
10861         * doc/invoke.texi: Document -mindirect-branch= option.
10863 2018-01-14  Jan Hubicka  <hubicka@ucw.cz>
10865         PR ipa/83051
10866         * ipa-inline.c (edge_badness): Tolerate roundoff errors.
10868 2018-01-14  Richard Sandiford  <richard.sandiford@linaro.org>
10870         * ipa-inline.c (want_inline_small_function_p): Return false if
10871         inlining has already failed with CIF_FINAL_ERROR.
10872         (update_caller_keys): Call want_inline_small_function_p before
10873         can_inline_edge_p.
10874         (update_callee_keys): Likewise.
10876 2018-01-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
10878         * config/rs6000/rs6000-p8swap.c (rs6000_sum_of_two_registers_p):
10879         New function.
10880         (rs6000_quadword_masked_address_p): Likewise.
10881         (quad_aligned_load_p): Likewise.
10882         (quad_aligned_store_p): Likewise.
10883         (const_load_sequence_p): Add comment to describe the outer-most loop.
10884         (mimic_memory_attributes_and_flags): New function.
10885         (rs6000_gen_stvx): Likewise.
10886         (replace_swapped_aligned_store): Likewise.
10887         (rs6000_gen_lvx): Likewise.
10888         (replace_swapped_aligned_load): Likewise.
10889         (replace_swapped_load_constant): Capitalize argument name in
10890         comment describing this function.
10891         (rs6000_analyze_swaps): Add a third pass to search for vector loads
10892         and stores that access quad-word aligned addresses and replace
10893         with stvx or lvx instructions when appropriate.
10894         * config/rs6000/rs6000-protos.h (rs6000_sum_of_two_registers_p):
10895         New function prototype.
10896         (rs6000_quadword_masked_address_p): Likewise.
10897         (rs6000_gen_lvx): Likewise.
10898         (rs6000_gen_stvx): Likewise.
10899         * config/rs6000/vsx.md (*vsx_le_perm_load_<mode>): For modes
10900         VSX_D (V2DF, V2DI), modify this split to select lvx instruction
10901         when memory address is aligned.
10902         (*vsx_le_perm_load_<mode>): For modes VSX_W (V4SF, V4SI), modify
10903         this split to select lvx instruction when memory address is aligned.
10904         (*vsx_le_perm_load_v8hi): Modify this split to select lvx
10905         instruction when memory address is aligned.
10906         (*vsx_le_perm_load_v16qi): Likewise.
10907         (four unnamed splitters): Modify to select the stvx instruction
10908         when memory is aligned.
10910 2018-01-13  Jan Hubicka  <hubicka@ucw.cz>
10912         * predict.c (determine_unlikely_bbs): Handle correctly BBs
10913         which appears in the queue multiple times.
10915 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10916             Alan Hayward  <alan.hayward@arm.com>
10917             David Sherwood  <david.sherwood@arm.com>
10919         * tree-vectorizer.h (vec_lower_bound): New structure.
10920         (_loop_vec_info): Add check_nonzero and lower_bounds.
10921         (LOOP_VINFO_CHECK_NONZERO): New macro.
10922         (LOOP_VINFO_LOWER_BOUNDS): Likewise.
10923         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Check lower_bounds too.
10924         * tree-data-ref.h (dr_with_seg_len): Add access_size and align
10925         fields.  Make seg_len the distance travelled, not including the
10926         access size.
10927         (dr_direction_indicator): Declare.
10928         (dr_zero_step_indicator): Likewise.
10929         (dr_known_forward_stride_p): Likewise.
10930         * tree-data-ref.c: Include stringpool.h, tree-vrp.h and
10931         tree-ssanames.h.
10932         (runtime_alias_check_p): Allow runtime alias checks with
10933         variable strides.
10934         (operator ==): Compare access_size and align.
10935         (prune_runtime_alias_test_list): Rework for new distinction between
10936         the access_size and seg_len.
10937         (create_intersect_range_checks_index): Likewise.  Cope with polynomial
10938         segment lengths.
10939         (get_segment_min_max): New function.
10940         (create_intersect_range_checks): Use it.
10941         (dr_step_indicator): New function.
10942         (dr_direction_indicator): Likewise.
10943         (dr_zero_step_indicator): Likewise.
10944         (dr_known_forward_stride_p): Likewise.
10945         * tree-loop-distribution.c (data_ref_segment_size): Return
10946         DR_STEP * (niters - 1).
10947         (compute_alias_check_pairs): Update call to the dr_with_seg_len
10948         constructor.
10949         * tree-vect-data-refs.c (vect_check_nonzero_value): New function.
10950         (vect_preserves_scalar_order_p): New function, split out from...
10951         (vect_analyze_data_ref_dependence): ...here.  Check for zero steps.
10952         (vect_vfa_segment_size): Return DR_STEP * (length_factor - 1).
10953         (vect_vfa_access_size): New function.
10954         (vect_vfa_align): Likewise.
10955         (vect_compile_time_alias): Take access_size_a and access_b arguments.
10956         (dump_lower_bound): New function.
10957         (vect_check_lower_bound): Likewise.
10958         (vect_small_gap_p): Likewise.
10959         (vectorizable_with_step_bound_p): Likewise.
10960         (vect_prune_runtime_alias_test_list): Ignore cross-iteration
10961         depencies if the vectorization factor is 1.  Convert the checks
10962         for nonzero steps into checks on the bounds of DR_STEP.  Try using
10963         a bunds check for variable steps if the minimum required step is
10964         relatively small. Update calls to the dr_with_seg_len
10965         constructor and to vect_compile_time_alias.
10966         * tree-vect-loop-manip.c (vect_create_cond_for_lower_bounds): New
10967         function.
10968         (vect_loop_versioning): Call it.
10969         * tree-vect-loop.c (vect_analyze_loop_2): Clear LOOP_VINFO_LOWER_BOUNDS
10970         when retrying.
10971         (vect_estimate_min_profitable_iters): Account for any bounds checks.
10973 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
10974             Alan Hayward  <alan.hayward@arm.com>
10975             David Sherwood  <david.sherwood@arm.com>
10977         * doc/sourcebuild.texi (vect_scatter_store): Document.
10978         * optabs.def (scatter_store_optab, mask_scatter_store_optab): New
10979         optabs.
10980         * doc/md.texi (scatter_store@var{m}, mask_scatter_store@var{m}):
10981         Document.
10982         * genopinit.c (main): Add supports_vec_scatter_store and
10983         supports_vec_scatter_store_cached to target_optabs.
10984         * gimple.h (gimple_expr_type): Handle IFN_SCATTER_STORE and
10985         IFN_MASK_SCATTER_STORE.
10986         * internal-fn.def (SCATTER_STORE, MASK_SCATTER_STORE): New internal
10987         functions.
10988         * internal-fn.h (internal_store_fn_p): Declare.
10989         (internal_fn_stored_value_index): Likewise.
10990         * internal-fn.c (scatter_store_direct): New macro.
10991         (expand_scatter_store_optab_fn): New function.
10992         (direct_scatter_store_optab_supported_p): New macro.
10993         (internal_store_fn_p): New function.
10994         (internal_gather_scatter_fn_p): Handle IFN_SCATTER_STORE and
10995         IFN_MASK_SCATTER_STORE.
10996         (internal_fn_mask_index): Likewise.
10997         (internal_fn_stored_value_index): New function.
10998         (internal_gather_scatter_fn_supported_p): Adjust operand numbers
10999         for scatter stores.
11000         * optabs-query.h (supports_vec_scatter_store_p): Declare.
11001         * optabs-query.c (supports_vec_scatter_store_p): New function.
11002         * tree-vectorizer.h (vect_get_store_rhs): Declare.
11003         * tree-vect-data-refs.c (vect_analyze_data_ref_access): Return
11004         true for scatter stores.
11005         (vect_gather_scatter_fn_p): Handle scatter stores too.
11006         (vect_check_gather_scatter): Consider using scatter stores if
11007         supports_vec_scatter_store_p.
11008         * tree-vect-patterns.c (vect_try_gather_scatter_pattern): Handle
11009         scatter stores too.
11010         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
11011         internal_fn_stored_value_index.
11012         (check_load_store_masking): Handle scatter stores too.
11013         (vect_get_store_rhs): Make public.
11014         (vectorizable_call): Use internal_store_fn_p.
11015         (vectorizable_store): Handle scatter store internal functions.
11016         (vect_transform_stmt): Compare GROUP_STORE_COUNT with GROUP_SIZE
11017         when deciding whether the end of the group has been reached.
11018         * config/aarch64/aarch64.md (UNSPEC_ST1_SCATTER): New unspec.
11019         * config/aarch64/aarch64-sve.md (scatter_store<mode>): New expander.
11020         (mask_scatter_store<mode>): New insns.
11022 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11023             Alan Hayward  <alan.hayward@arm.com>
11024             David Sherwood  <david.sherwood@arm.com>
11026         * tree-vectorizer.h (vect_gather_scatter_fn_p): Declare.
11027         * tree-vect-data-refs.c (vect_gather_scatter_fn_p): Make public.
11028         * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): New
11029         function.
11030         (vect_use_strided_gather_scatters_p): Take a masked_p argument.
11031         Use vect_truncate_gather_scatter_offset if we can't treat the
11032         operation as a normal gather load or scatter store.
11033         (get_group_load_store_type): Take the gather_scatter_info
11034         as argument.  Try using a gather load or scatter store for
11035         single-element groups.
11036         (get_load_store_type): Update calls to get_group_load_store_type
11037         and vect_use_strided_gather_scatters_p.
11039 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11040             Alan Hayward  <alan.hayward@arm.com>
11041             David Sherwood  <david.sherwood@arm.com>
11043         * tree-vectorizer.h (vect_create_data_ref_ptr): Take an extra
11044         optional tree argument.
11045         * tree-vect-data-refs.c (vect_check_gather_scatter): Check for
11046         null target hooks.
11047         (vect_create_data_ref_ptr): Take the iv_step as an optional argument,
11048         but continue to use the current value as a fallback.
11049         (bump_vector_ptr): Use operand_equal_p rather than tree_int_cst_compare
11050         to compare the updates.
11051         * tree-vect-stmts.c (vect_use_strided_gather_scatters_p): New function.
11052         (get_load_store_type): Use it when handling a strided access.
11053         (vect_get_strided_load_store_ops): New function.
11054         (vect_get_data_ptr_increment): Likewise.
11055         (vectorizable_load): Handle strided gather loads.  Always pass
11056         a step to vect_create_data_ref_ptr and bump_vector_ptr.
11058 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11059             Alan Hayward  <alan.hayward@arm.com>
11060             David Sherwood  <david.sherwood@arm.com>
11062         * doc/md.texi (gather_load@var{m}): Document.
11063         (mask_gather_load@var{m}): Likewise.
11064         * genopinit.c (main): Add supports_vec_gather_load and
11065         supports_vec_gather_load_cached to target_optabs.
11066         * optabs-tree.c (init_tree_optimization_optabs): Use
11067         ggc_cleared_alloc to allocate target_optabs.
11068         * optabs.def (gather_load_optab, mask_gather_laod_optab): New optabs.
11069         * internal-fn.def (GATHER_LOAD, MASK_GATHER_LOAD): New internal
11070         functions.
11071         * internal-fn.h (internal_load_fn_p): Declare.
11072         (internal_gather_scatter_fn_p): Likewise.
11073         (internal_fn_mask_index): Likewise.
11074         (internal_gather_scatter_fn_supported_p): Likewise.
11075         * internal-fn.c (gather_load_direct): New macro.
11076         (expand_gather_load_optab_fn): New function.
11077         (direct_gather_load_optab_supported_p): New macro.
11078         (direct_internal_fn_optab): New function.
11079         (internal_load_fn_p): Likewise.
11080         (internal_gather_scatter_fn_p): Likewise.
11081         (internal_fn_mask_index): Likewise.
11082         (internal_gather_scatter_fn_supported_p): Likewise.
11083         * optabs-query.c (supports_at_least_one_mode_p): New function.
11084         (supports_vec_gather_load_p): Likewise.
11085         * optabs-query.h (supports_vec_gather_load_p): Declare.
11086         * tree-vectorizer.h (gather_scatter_info): Add ifn, element_type
11087         and memory_type field.
11088         (NUM_PATTERNS): Bump to 15.
11089         * tree-vect-data-refs.c: Include internal-fn.h.
11090         (vect_gather_scatter_fn_p): New function.
11091         (vect_describe_gather_scatter_call): Likewise.
11092         (vect_check_gather_scatter): Try using internal functions for
11093         gather loads.  Recognize existing calls to a gather load function.
11094         (vect_analyze_data_refs): Consider using gather loads if
11095         supports_vec_gather_load_p.
11096         * tree-vect-patterns.c (vect_get_load_store_mask): New function.
11097         (vect_get_gather_scatter_offset_type): Likewise.
11098         (vect_convert_mask_for_vectype): Likewise.
11099         (vect_add_conversion_to_patterm): Likewise.
11100         (vect_try_gather_scatter_pattern): Likewise.
11101         (vect_recog_gather_scatter_pattern): New pattern recognizer.
11102         (vect_vect_recog_func_ptrs): Add it.
11103         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
11104         internal_fn_mask_index and internal_gather_scatter_fn_p.
11105         (check_load_store_masking): Take the gather_scatter_info as an
11106         argument and handle gather loads.
11107         (vect_get_gather_scatter_ops): New function.
11108         (vectorizable_call): Check internal_load_fn_p.
11109         (vectorizable_load): Likewise.  Handle gather load internal
11110         functions.
11111         (vectorizable_store): Update call to check_load_store_masking.
11112         * config/aarch64/aarch64.md (UNSPEC_LD1_GATHER): New unspec.
11113         * config/aarch64/iterators.md (SVE_S, SVE_D): New mode iterators.
11114         * config/aarch64/predicates.md (aarch64_gather_scale_operand_w)
11115         (aarch64_gather_scale_operand_d): New predicates.
11116         * config/aarch64/aarch64-sve.md (gather_load<mode>): New expander.
11117         (mask_gather_load<mode>): New insns.
11119 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11120             Alan Hayward  <alan.hayward@arm.com>
11121             David Sherwood  <david.sherwood@arm.com>
11123         * optabs.def (fold_left_plus_optab): New optab.
11124         * doc/md.texi (fold_left_plus_@var{m}): Document.
11125         * internal-fn.def (IFN_FOLD_LEFT_PLUS): New internal function.
11126         * internal-fn.c (fold_left_direct): Define.
11127         (expand_fold_left_optab_fn): Likewise.
11128         (direct_fold_left_optab_supported_p): Likewise.
11129         * fold-const-call.c (fold_const_fold_left): New function.
11130         (fold_const_call): Use it to fold CFN_FOLD_LEFT_PLUS.
11131         * tree-parloops.c (valid_reduction_p): New function.
11132         (gather_scalar_reductions): Use it.
11133         * tree-vectorizer.h (FOLD_LEFT_REDUCTION): New vect_reduction_type.
11134         (vect_finish_replace_stmt): Declare.
11135         * tree-vect-loop.c (fold_left_reduction_fn): New function.
11136         (needs_fold_left_reduction_p): New function, split out from...
11137         (vect_is_simple_reduction): ...here.  Accept reductions that
11138         forbid reassociation, but give them type FOLD_LEFT_REDUCTION.
11139         (vect_force_simple_reduction): Also store the reduction type in
11140         the assignment's STMT_VINFO_REDUC_TYPE.
11141         (vect_model_reduction_cost): Handle FOLD_LEFT_REDUCTION.
11142         (merge_with_identity): New function.
11143         (vect_expand_fold_left): Likewise.
11144         (vectorize_fold_left_reduction): Likewise.
11145         (vectorizable_reduction): Handle FOLD_LEFT_REDUCTION.  Leave the
11146         scalar phi in place for it.  Check for target support and reject
11147         cases that would reassociate the operation.  Defer the transform
11148         phase to vectorize_fold_left_reduction.
11149         * config/aarch64/aarch64.md (UNSPEC_FADDA): New unspec.
11150         * config/aarch64/aarch64-sve.md (fold_left_plus_<mode>): New expander.
11151         (*fold_left_plus_<mode>, *pred_fold_left_plus_<mode>): New insns.
11153 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11155         * tree-if-conv.c (predicate_mem_writes): Remove redundant
11156         call to ifc_temp_var.
11158 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11159             Alan Hayward  <alan.hayward@arm.com>
11160             David Sherwood  <david.sherwood@arm.com>
11162         * target.def (legitimize_address_displacement): Take the original
11163         offset as a poly_int.
11164         * targhooks.h (default_legitimize_address_displacement): Update
11165         accordingly.
11166         * targhooks.c (default_legitimize_address_displacement): Likewise.
11167         * doc/tm.texi: Regenerate.
11168         * lra-constraints.c (base_plus_disp_to_reg): Take the displacement
11169         as an argument, moving assert of ad->disp == ad->disp_term to...
11170         (process_address_1): ...here.  Update calls to base_plus_disp_to_reg.
11171         Try calling targetm.legitimize_address_displacement before expanding
11172         the address rather than afterwards, and adjust for the new interface.
11173         * config/aarch64/aarch64.c (aarch64_legitimize_address_displacement):
11174         Match the new hook interface.  Handle SVE addresses.
11175         * config/sh/sh.c (sh_legitimize_address_displacement): Make the
11176         new hook interface.
11178 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11180         * Makefile.in (OBJS): Add early-remat.o.
11181         * target.def (select_early_remat_modes): New hook.
11182         * doc/tm.texi.in (TARGET_SELECT_EARLY_REMAT_MODES): New hook.
11183         * doc/tm.texi: Regenerate.
11184         * targhooks.h (default_select_early_remat_modes): Declare.
11185         * targhooks.c (default_select_early_remat_modes): New function.
11186         * timevar.def (TV_EARLY_REMAT): New timevar.
11187         * passes.def (pass_early_remat): New pass.
11188         * tree-pass.h (make_pass_early_remat): Declare.
11189         * early-remat.c: New file.
11190         * config/aarch64/aarch64.c (aarch64_select_early_remat_modes): New
11191         function.
11192         (TARGET_SELECT_EARLY_REMAT_MODES): Define.
11194 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11195             Alan Hayward  <alan.hayward@arm.com>
11196             David Sherwood  <david.sherwood@arm.com>
11198         * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Replace
11199         vfm1 with a bound_epilog parameter.
11200         (vect_do_peeling): Update calls accordingly, and move the prologue
11201         call earlier in the function.  Treat the base bound_epilog as 0 for
11202         fully-masked loops and retain vf - 1 for other loops.  Add 1 to
11203         this base when peeling for gaps.
11204         * tree-vect-loop.c (vect_analyze_loop_2): Allow peeling for gaps
11205         with fully-masked loops.
11206         (vect_estimate_min_profitable_iters): Handle the single peeled
11207         iteration in that case.
11209 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11210             Alan Hayward  <alan.hayward@arm.com>
11211             David Sherwood  <david.sherwood@arm.com>
11213         * tree-vect-data-refs.c (vect_analyze_group_access_1): Allow
11214         single-element interleaving even if the size is not a power of 2.
11215         * tree-vect-stmts.c (get_load_store_type): Disallow elementwise
11216         accesses for single-element interleaving if the group size is
11217         not a power of 2.
11219 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11220             Alan Hayward  <alan.hayward@arm.com>
11221             David Sherwood  <david.sherwood@arm.com>
11223         * doc/md.texi (fold_extract_last_@var{m}): Document.
11224         * doc/sourcebuild.texi (vect_fold_extract_last): Likewise.
11225         * optabs.def (fold_extract_last_optab): New optab.
11226         * internal-fn.def (FOLD_EXTRACT_LAST): New internal function.
11227         * internal-fn.c (fold_extract_direct): New macro.
11228         (expand_fold_extract_optab_fn): Likewise.
11229         (direct_fold_extract_optab_supported_p): Likewise.
11230         * tree-vectorizer.h (EXTRACT_LAST_REDUCTION): New vect_reduction_type.
11231         * tree-vect-loop.c (vect_model_reduction_cost): Handle
11232         EXTRACT_LAST_REDUCTION.
11233         (get_initial_def_for_reduction): Do not create an initial vector
11234         for EXTRACT_LAST_REDUCTION reductions.
11235         (vectorizable_reduction): Leave the scalar phi in place for
11236         EXTRACT_LAST_REDUCTIONs.  Try using EXTRACT_LAST_REDUCTION
11237         ahead of INTEGER_INDUC_COND_REDUCTION.  Do not check for an
11238         epilogue code for EXTRACT_LAST_REDUCTION and defer the
11239         transform phase to vectorizable_condition.
11240         * tree-vect-stmts.c (vect_finish_stmt_generation_1): New function,
11241         split out from...
11242         (vect_finish_stmt_generation): ...here.
11243         (vect_finish_replace_stmt): New function.
11244         (vectorizable_condition): Handle EXTRACT_LAST_REDUCTION.
11245         * config/aarch64/aarch64-sve.md (fold_extract_last_<mode>): New
11246         pattern.
11247         * config/aarch64/aarch64.md (UNSPEC_CLASTB): New unspec.
11249 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11250             Alan Hayward  <alan.hayward@arm.com>
11251             David Sherwood  <david.sherwood@arm.com>
11253         * doc/md.texi (extract_last_@var{m}): Document.
11254         * optabs.def (extract_last_optab): New optab.
11255         * internal-fn.def (EXTRACT_LAST): New internal function.
11256         * internal-fn.c (cond_unary_direct): New macro.
11257         (expand_cond_unary_optab_fn): Likewise.
11258         (direct_cond_unary_optab_supported_p): Likewise.
11259         * tree-vect-loop.c (vectorizable_live_operation): Allow fully-masked
11260         loops using EXTRACT_LAST.
11261         * config/aarch64/aarch64-sve.md (aarch64_sve_lastb<mode>): Rename to...
11262         (extract_last_<mode>): ...this optab.
11263         (vec_extract<mode><Vel>): Update accordingly.
11265 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11266             Alan Hayward  <alan.hayward@arm.com>
11267             David Sherwood  <david.sherwood@arm.com>
11269         * target.def (empty_mask_is_expensive): New hook.
11270         * doc/tm.texi.in (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): New hook.
11271         * doc/tm.texi: Regenerate.
11272         * targhooks.h (default_empty_mask_is_expensive): Declare.
11273         * targhooks.c (default_empty_mask_is_expensive): New function.
11274         * tree-vectorizer.c (vectorize_loops): Only call optimize_mask_stores
11275         if the target says that empty masks are expensive.
11276         * config/aarch64/aarch64.c (aarch64_empty_mask_is_expensive):
11277         New function.
11278         (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Redefine.
11280 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11281             Alan Hayward  <alan.hayward@arm.com>
11282             David Sherwood  <david.sherwood@arm.com>
11284         * tree-vectorizer.h (_loop_vec_info::mask_skip_niters): New field.
11285         (LOOP_VINFO_MASK_SKIP_NITERS): New macro.
11286         (vect_use_loop_mask_for_alignment_p): New function.
11287         (vect_prepare_for_masked_peels, vect_gen_while_not): Declare.
11288         * tree-vect-loop-manip.c (vect_set_loop_masks_directly): Add an
11289         niters_skip argument.  Make sure that the first niters_skip elements
11290         of the first iteration are inactive.
11291         (vect_set_loop_condition_masked): Handle LOOP_VINFO_MASK_SKIP_NITERS.
11292         Update call to vect_set_loop_masks_directly.
11293         (get_misalign_in_elems): New function, split out from...
11294         (vect_gen_prolog_loop_niters): ...here.
11295         (vect_update_init_of_dr): Take a code argument that specifies whether
11296         the adjustment should be added or subtracted.
11297         (vect_update_init_of_drs): Likewise.
11298         (vect_prepare_for_masked_peels): New function.
11299         (vect_do_peeling): Skip prologue peeling if we're using a mask
11300         instead.  Update call to vect_update_inits_of_drs.
11301         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
11302         mask_skip_niters.
11303         (vect_analyze_loop_2): Allow fully-masked loops with peeling for
11304         alignment.  Do not include the number of peeled iterations in
11305         the minimum threshold in that case.
11306         (vectorizable_induction): Adjust the start value down by
11307         LOOP_VINFO_MASK_SKIP_NITERS iterations.
11308         (vect_transform_loop): Call vect_prepare_for_masked_peels.
11309         Take the number of skipped iterations into account when calculating
11310         the loop bounds.
11311         * tree-vect-stmts.c (vect_gen_while_not): New function.
11313 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11314             Alan Hayward  <alan.hayward@arm.com>
11315             David Sherwood  <david.sherwood@arm.com>
11317         * doc/sourcebuild.texi (vect_fully_masked): Document.
11318         * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change minimum and
11319         default value to 0.
11320         * tree-vect-loop.c (vect_analyze_loop_costing): New function,
11321         split out from...
11322         (vect_analyze_loop_2): ...here. Don't check the vectorization
11323         factor against the number of loop iterations if the loop is
11324         fully-masked.
11326 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11327             Alan Hayward  <alan.hayward@arm.com>
11328             David Sherwood  <david.sherwood@arm.com>
11330         * tree-ssa-loop-ivopts.c (USE_ADDRESS): Split into...
11331         (USE_REF_ADDRESS, USE_PTR_ADDRESS): ...these new use types.
11332         (dump_groups): Update accordingly.
11333         (iv_use::mem_type): New member variable.
11334         (address_p): New function.
11335         (record_use): Add a mem_type argument and initialize the new
11336         mem_type field.
11337         (record_group_use): Add a mem_type argument.  Use address_p.
11338         Remove obsolete null checks of base_object.  Update call to record_use.
11339         (find_interesting_uses_op): Update call to record_group_use.
11340         (find_interesting_uses_cond): Likewise.
11341         (find_interesting_uses_address): Likewise.
11342         (get_mem_type_for_internal_fn): New function.
11343         (find_address_like_use): Likewise.
11344         (find_interesting_uses_stmt): Try find_address_like_use before
11345         calling find_interesting_uses_op.
11346         (addr_offset_valid_p): Use the iv mem_type field as the type
11347         of the addressed memory.
11348         (add_autoinc_candidates): Likewise.
11349         (get_address_cost): Likewise.
11350         (split_small_address_groups_p): Use address_p.
11351         (split_address_groups): Likewise.
11352         (add_iv_candidate_for_use): Likewise.
11353         (autoinc_possible_for_pair): Likewise.
11354         (rewrite_groups): Likewise.
11355         (get_use_type): Check for USE_REF_ADDRESS instead of USE_ADDRESS.
11356         (determine_group_iv_cost): Update after split of USE_ADDRESS.
11357         (get_alias_ptr_type_for_ptr_address): New function.
11358         (rewrite_use_address): Rewrite address uses in calls that were
11359         identified by find_address_like_use.
11361 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11362             Alan Hayward  <alan.hayward@arm.com>
11363             David Sherwood  <david.sherwood@arm.com>
11365         * expr.c (expand_expr_addr_expr_1): Handle ADDR_EXPRs of
11366         TARGET_MEM_REFs.
11367         * gimple-expr.h (is_gimple_addressable: Likewise.
11368         * gimple-expr.c (is_gimple_address): Likewise.
11369         * internal-fn.c (expand_call_mem_ref): New function.
11370         (expand_mask_load_optab_fn): Use it.
11371         (expand_mask_store_optab_fn): Likewise.
11373 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11374             Alan Hayward  <alan.hayward@arm.com>
11375             David Sherwood  <david.sherwood@arm.com>
11377         * doc/md.texi (cond_add@var{mode}, cond_sub@var{mode})
11378         (cond_and@var{mode}, cond_ior@var{mode}, cond_xor@var{mode})
11379         (cond_smin@var{mode}, cond_smax@var{mode}, cond_umin@var{mode})
11380         (cond_umax@var{mode}): Document.
11381         * optabs.def (cond_add_optab, cond_sub_optab, cond_and_optab)
11382         (cond_ior_optab, cond_xor_optab, cond_smin_optab, cond_smax_optab)
11383         (cond_umin_optab, cond_umax_optab): New optabs.
11384         * internal-fn.def (COND_ADD, COND_SUB, COND_MIN, COND_MAX, COND_AND)
11385         (COND_IOR, COND_XOR): New internal functions.
11386         * internal-fn.h (get_conditional_internal_fn): Declare.
11387         * internal-fn.c (cond_binary_direct): New macro.
11388         (expand_cond_binary_optab_fn): Likewise.
11389         (direct_cond_binary_optab_supported_p): Likewise.
11390         (get_conditional_internal_fn): New function.
11391         * tree-vect-loop.c (vectorizable_reduction): Handle fully-masked loops.
11392         Cope with reduction statements that are vectorized as calls rather
11393         than assignments.
11394         * config/aarch64/aarch64-sve.md (cond_<optab><mode>): New insns.
11395         * config/aarch64/iterators.md (UNSPEC_COND_ADD, UNSPEC_COND_SUB)
11396         (UNSPEC_COND_SMAX, UNSPEC_COND_UMAX, UNSPEC_COND_SMIN)
11397         (UNSPEC_COND_UMIN, UNSPEC_COND_AND, UNSPEC_COND_ORR)
11398         (UNSPEC_COND_EOR): New unspecs.
11399         (optab): Add mappings for them.
11400         (SVE_COND_INT_OP, SVE_COND_FP_OP): New int iterators.
11401         (sve_int_op, sve_fp_op): New int attributes.
11403 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11404             Alan Hayward  <alan.hayward@arm.com>
11405             David Sherwood  <david.sherwood@arm.com>
11407         * optabs.def (while_ult_optab): New optab.
11408         * doc/md.texi (while_ult@var{m}@var{n}): Document.
11409         * internal-fn.def (WHILE_ULT): New internal function.
11410         * internal-fn.h (direct_internal_fn_supported_p): New override
11411         that takes two types as argument.
11412         * internal-fn.c (while_direct): New macro.
11413         (expand_while_optab_fn): New function.
11414         (convert_optab_supported_p): Likewise.
11415         (direct_while_optab_supported_p): New macro.
11416         * wide-int.h (wi::udiv_ceil): New function.
11417         * tree-vectorizer.h (rgroup_masks): New structure.
11418         (vec_loop_masks): New typedef.
11419         (_loop_vec_info): Add masks, mask_compare_type, can_fully_mask_p
11420         and fully_masked_p.
11421         (LOOP_VINFO_CAN_FULLY_MASK_P, LOOP_VINFO_FULLY_MASKED_P)
11422         (LOOP_VINFO_MASKS, LOOP_VINFO_MASK_COMPARE_TYPE): New macros.
11423         (vect_max_vf): New function.
11424         (slpeel_make_loop_iterate_ntimes): Delete.
11425         (vect_set_loop_condition, vect_get_loop_mask_type, vect_gen_while)
11426         (vect_halve_mask_nunits, vect_double_mask_nunits): Declare.
11427         (vect_record_loop_mask, vect_get_loop_mask): Likewise.
11428         * tree-vect-loop-manip.c: Include tree-ssa-loop-niter.h,
11429         internal-fn.h, stor-layout.h and optabs-query.h.
11430         (vect_set_loop_mask): New function.
11431         (add_preheader_seq): Likewise.
11432         (add_header_seq): Likewise.
11433         (interleave_supported_p): Likewise.
11434         (vect_maybe_permute_loop_masks): Likewise.
11435         (vect_set_loop_masks_directly): Likewise.
11436         (vect_set_loop_condition_masked): Likewise.
11437         (vect_set_loop_condition_unmasked): New function, split out from
11438         slpeel_make_loop_iterate_ntimes.
11439         (slpeel_make_loop_iterate_ntimes): Rename to..
11440         (vect_set_loop_condition): ...this.  Use vect_set_loop_condition_masked
11441         for fully-masked loops and vect_set_loop_condition_unmasked otherwise.
11442         (vect_do_peeling): Update call accordingly.
11443         (vect_gen_vector_loop_niters): Use VF as the step for fully-masked
11444         loops.
11445         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
11446         mask_compare_type, can_fully_mask_p and fully_masked_p.
11447         (release_vec_loop_masks): New function.
11448         (_loop_vec_info): Use it to free the loop masks.
11449         (can_produce_all_loop_masks_p): New function.
11450         (vect_get_max_nscalars_per_iter): Likewise.
11451         (vect_verify_full_masking): Likewise.
11452         (vect_analyze_loop_2): Save LOOP_VINFO_CAN_FULLY_MASK_P around
11453         retries, and free the mask rgroups before retrying.  Check loop-wide
11454         reasons for disallowing fully-masked loops.  Make the final decision
11455         about whether use a fully-masked loop or not.
11456         (vect_estimate_min_profitable_iters): Do not assume that peeling
11457         for the number of iterations will be needed for fully-masked loops.
11458         (vectorizable_reduction): Disable fully-masked loops.
11459         (vectorizable_live_operation): Likewise.
11460         (vect_halve_mask_nunits): New function.
11461         (vect_double_mask_nunits): Likewise.
11462         (vect_record_loop_mask): Likewise.
11463         (vect_get_loop_mask): Likewise.
11464         (vect_transform_loop): Handle the case in which the final loop
11465         iteration might handle a partial vector.  Call vect_set_loop_condition
11466         instead of slpeel_make_loop_iterate_ntimes.
11467         * tree-vect-stmts.c: Include tree-ssa-loop-niter.h and gimple-fold.h.
11468         (check_load_store_masking): New function.
11469         (prepare_load_store_mask): Likewise.
11470         (vectorizable_store): Handle fully-masked loops.
11471         (vectorizable_load): Likewise.
11472         (supportable_widening_operation): Use vect_halve_mask_nunits for
11473         booleans.
11474         (supportable_narrowing_operation): Likewise vect_double_mask_nunits.
11475         (vect_gen_while): New function.
11476         * config/aarch64/aarch64.md (umax<mode>3): New expander.
11477         (aarch64_uqdec<mode>): New insn.
11479 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11480             Alan Hayward  <alan.hayward@arm.com>
11481             David Sherwood  <david.sherwood@arm.com>
11483         * optabs.def (reduc_and_scal_optab, reduc_ior_scal_optab)
11484         (reduc_xor_scal_optab): New optabs.
11485         * doc/md.texi (reduc_and_scal_@var{m}, reduc_ior_scal_@var{m})
11486         (reduc_xor_scal_@var{m}): Document.
11487         * doc/sourcebuild.texi (vect_logical_reduc): Likewise.
11488         * internal-fn.def (IFN_REDUC_AND, IFN_REDUC_IOR, IFN_REDUC_XOR): New
11489         internal functions.
11490         * fold-const-call.c (fold_const_call): Handle them.
11491         * tree-vect-loop.c (reduction_fn_for_scalar_code): Return the new
11492         internal functions for BIT_AND_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR.
11493         * config/aarch64/aarch64-sve.md (reduc_<bit_reduc>_scal_<mode>):
11494         (*reduc_<bit_reduc>_scal_<mode>): New patterns.
11495         * config/aarch64/iterators.md (UNSPEC_ANDV, UNSPEC_ORV)
11496         (UNSPEC_XORV): New unspecs.
11497         (optab): Add entries for them.
11498         (BITWISEV): New int iterator.
11499         (bit_reduc_op): New int attributes.
11501 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11502             Alan Hayward  <alan.hayward@arm.com>
11503             David Sherwood  <david.sherwood@arm.com>
11505         * doc/md.texi (vec_shl_insert_@var{m}): New optab.
11506         * internal-fn.def (VEC_SHL_INSERT): New internal function.
11507         * optabs.def (vec_shl_insert_optab): New optab.
11508         * tree-vectorizer.h (can_duplicate_and_interleave_p): Declare.
11509         (duplicate_and_interleave): Likewise.
11510         * tree-vect-loop.c: Include internal-fn.h.
11511         (neutral_op_for_slp_reduction): New function, split out from
11512         get_initial_defs_for_reduction.
11513         (get_initial_def_for_reduction): Handle option 2 for variable-length
11514         vectors by loading the neutral value into a vector and then shifting
11515         the initial value into element 0.
11516         (get_initial_defs_for_reduction): Replace the code argument with
11517         the neutral value calculated by neutral_op_for_slp_reduction.
11518         Use gimple_build_vector for constant-length vectors.
11519         Use IFN_VEC_SHL_INSERT for variable-length vectors if all
11520         but the first group_size elements have a neutral value.
11521         Use duplicate_and_interleave otherwise.
11522         (vect_create_epilog_for_reduction): Take a neutral_op parameter.
11523         Update call to get_initial_defs_for_reduction.  Handle SLP
11524         reductions for variable-length vectors by creating one vector
11525         result for each scalar result, with the elements associated
11526         with other scalar results stubbed out with the neutral value.
11527         (vectorizable_reduction): Call neutral_op_for_slp_reduction.
11528         Require IFN_VEC_SHL_INSERT for double reductions on
11529         variable-length vectors, or SLP reductions that have
11530         a neutral value.  Require can_duplicate_and_interleave_p
11531         support for variable-length unchained SLP reductions if there
11532         is no neutral value, such as for MIN/MAX reductions.  Also require
11533         the number of vector elements to be a multiple of the number of
11534         SLP statements when doing variable-length unchained SLP reductions.
11535         Update call to vect_create_epilog_for_reduction.
11536         * tree-vect-slp.c (can_duplicate_and_interleave_p): Make public
11537         and remove initial values.
11538         (duplicate_and_interleave): Make public.
11539         * config/aarch64/aarch64.md (UNSPEC_INSR): New unspec.
11540         * config/aarch64/aarch64-sve.md (vec_shl_insert_<mode>): New insn.
11542 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11543             Alan Hayward  <alan.hayward@arm.com>
11544             David Sherwood  <david.sherwood@arm.com>
11546         * tree-vect-slp.c: Include gimple-fold.h and internal-fn.h
11547         (can_duplicate_and_interleave_p): New function.
11548         (vect_get_and_check_slp_defs): Take the vector of statements
11549         rather than just the current one.  Remove excess parentheses.
11550         Restriction rejectinon of vect_constant_def and vect_external_def
11551         for variable-length vectors to boolean types, or types for which
11552         can_duplicate_and_interleave_p is false.
11553         (vect_build_slp_tree_2): Update call to vect_get_and_check_slp_defs.
11554         (duplicate_and_interleave): New function.
11555         (vect_get_constant_vectors): Use gimple_build_vector for
11556         constant-length vectors and suitable variable-length constant
11557         vectors.  Use duplicate_and_interleave for other variable-length
11558         vectors.  Don't defer the update when inserting new statements.
11560 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11561             Alan Hayward  <alan.hayward@arm.com>
11562             David Sherwood  <david.sherwood@arm.com>
11564         * tree-vect-loop.c (vect_estimate_min_profitable_iters): Make sure
11565         min_profitable_iters doesn't go negative.
11567 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11568             Alan Hayward  <alan.hayward@arm.com>
11569             David Sherwood  <david.sherwood@arm.com>
11571         * doc/md.texi (vec_mask_load_lanes@var{m}@var{n}): Document.
11572         (vec_mask_store_lanes@var{m}@var{n}): Likewise.
11573         * optabs.def (vec_mask_load_lanes_optab): New optab.
11574         (vec_mask_store_lanes_optab): Likewise.
11575         * internal-fn.def (MASK_LOAD_LANES): New internal function.
11576         (MASK_STORE_LANES): Likewise.
11577         * internal-fn.c (mask_load_lanes_direct): New macro.
11578         (mask_store_lanes_direct): Likewise.
11579         (expand_mask_load_optab_fn): Handle masked operations.
11580         (expand_mask_load_lanes_optab_fn): New macro.
11581         (expand_mask_store_optab_fn): Handle masked operations.
11582         (expand_mask_store_lanes_optab_fn): New macro.
11583         (direct_mask_load_lanes_optab_supported_p): Likewise.
11584         (direct_mask_store_lanes_optab_supported_p): Likewise.
11585         * tree-vectorizer.h (vect_store_lanes_supported): Take a masked_p
11586         parameter.
11587         (vect_load_lanes_supported): Likewise.
11588         * tree-vect-data-refs.c (strip_conversion): New function.
11589         (can_group_stmts_p): Likewise.
11590         (vect_analyze_data_ref_accesses): Use it instead of checking
11591         for a pair of assignments.
11592         (vect_store_lanes_supported): Take a masked_p parameter.
11593         (vect_load_lanes_supported): Likewise.
11594         * tree-vect-loop.c (vect_analyze_loop_2): Update calls to
11595         vect_store_lanes_supported and vect_load_lanes_supported.
11596         * tree-vect-slp.c (vect_analyze_slp_instance): Likewise.
11597         * tree-vect-stmts.c (get_group_load_store_type): Take a masked_p
11598         parameter.  Don't allow gaps for masked accesses.
11599         Use vect_get_store_rhs.  Update calls to vect_store_lanes_supported
11600         and vect_load_lanes_supported.
11601         (get_load_store_type): Take a masked_p parameter and update
11602         call to get_group_load_store_type.
11603         (vectorizable_store): Update call to get_load_store_type.
11604         Handle IFN_MASK_STORE_LANES.
11605         (vectorizable_load): Update call to get_load_store_type.
11606         Handle IFN_MASK_LOAD_LANES.
11608 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11609             Alan Hayward  <alan.hayward@arm.com>
11610             David Sherwood  <david.sherwood@arm.com>
11612         * config/aarch64/aarch64-modes.def: Define x2, x3 and x4 vector
11613         modes for SVE.
11614         * config/aarch64/aarch64-protos.h
11615         (aarch64_sve_struct_memory_operand_p): Declare.
11616         * config/aarch64/iterators.md (SVE_STRUCT): New mode iterator.
11617         (vector_count, insn_length, VSINGLE, vsingle): New mode attributes.
11618         (VPRED, vpred): Handle SVE structure modes.
11619         * config/aarch64/constraints.md (Utx): New constraint.
11620         * config/aarch64/predicates.md (aarch64_sve_struct_memory_operand)
11621         (aarch64_sve_struct_nonimmediate_operand): New predicates.
11622         * config/aarch64/aarch64.md (UNSPEC_LDN, UNSPEC_STN): New unspecs.
11623         * config/aarch64/aarch64-sve.md (mov<mode>, *aarch64_sve_mov<mode>_le)
11624         (*aarch64_sve_mov<mode>_be, pred_mov<mode>): New patterns for
11625         structure modes.  Split into pieces after RA.
11626         (vec_load_lanes<mode><vsingle>, vec_mask_load_lanes<mode><vsingle>)
11627         (vec_store_lanes<mode><vsingle>, vec_mask_store_lanes<mode><vsingle>):
11628         New patterns.
11629         * config/aarch64/aarch64.c (aarch64_classify_vector_mode): Handle
11630         SVE structure modes.
11631         (aarch64_classify_address): Likewise.
11632         (sizetochar): Move earlier in file.
11633         (aarch64_print_operand): Handle SVE register lists.
11634         (aarch64_array_mode): New function.
11635         (aarch64_sve_struct_memory_operand_p): Likewise.
11636         (TARGET_ARRAY_MODE): Redefine.
11638 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11639             Alan Hayward  <alan.hayward@arm.com>
11640             David Sherwood  <david.sherwood@arm.com>
11642         * target.def (array_mode): New target hook.
11643         * doc/tm.texi.in (TARGET_ARRAY_MODE): New hook.
11644         * doc/tm.texi: Regenerate.
11645         * hooks.h (hook_optmode_mode_uhwi_none): Declare.
11646         * hooks.c (hook_optmode_mode_uhwi_none): New function.
11647         * tree-vect-data-refs.c (vect_lanes_optab_supported_p): Use
11648         targetm.array_mode.
11649         * stor-layout.c (mode_for_array): Likewise.  Support polynomial
11650         type sizes.
11652 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11653             Alan Hayward  <alan.hayward@arm.com>
11654             David Sherwood  <david.sherwood@arm.com>
11656         * fold-const.c (fold_binary_loc): Check the argument types
11657         rather than the result type when testing for a vector operation.
11659 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11661         * doc/tm.texi.in (DWARF_LAZY_REGISTER_VALUE): Document.
11662         * doc/tm.texi: Regenerate.
11664 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11665             Alan Hayward  <alan.hayward@arm.com>
11666             David Sherwood  <david.sherwood@arm.com>
11668         * doc/invoke.texi (-msve-vector-bits=): Document new option.
11669         (sve): Document new AArch64 extension.
11670         * doc/md.texi (w): Extend the description of the AArch64
11671         constraint to include SVE vectors.
11672         (Upl, Upa): Document new AArch64 predicate constraints.
11673         * config/aarch64/aarch64-opts.h (aarch64_sve_vector_bits_enum): New
11674         enum.
11675         * config/aarch64/aarch64.opt (sve_vector_bits): New enum.
11676         (msve-vector-bits=): New option.
11677         * config/aarch64/aarch64-option-extensions.def (fp, simd): Disable
11678         SVE when these are disabled.
11679         (sve): New extension.
11680         * config/aarch64/aarch64-modes.def: Define SVE vector and predicate
11681         modes.  Adjust their number of units based on aarch64_sve_vg.
11682         (MAX_BITSIZE_MODE_ANY_MODE): Define.
11683         * config/aarch64/aarch64-protos.h (ADDR_QUERY_ANY): New
11684         aarch64_addr_query_type.
11685         (aarch64_const_vec_all_same_in_range_p, aarch64_sve_pred_mode)
11686         (aarch64_sve_cnt_immediate_p, aarch64_sve_addvl_addpl_immediate_p)
11687         (aarch64_sve_inc_dec_immediate_p, aarch64_add_offset_temporaries)
11688         (aarch64_split_add_offset, aarch64_output_sve_cnt_immediate)
11689         (aarch64_output_sve_addvl_addpl, aarch64_output_sve_inc_dec_immediate)
11690         (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): Declare.
11691         (aarch64_simd_imm_zero_p): Delete.
11692         (aarch64_check_zero_based_sve_index_immediate): Declare.
11693         (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
11694         (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
11695         (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
11696         (aarch64_sve_float_mul_immediate_p): Likewise.
11697         (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
11698         rather than an rtx.
11699         (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): Declare.
11700         (aarch64_expand_mov_immediate): Take a gen_vec_duplicate callback.
11701         (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move): Declare.
11702         (aarch64_expand_sve_vec_cmp_int, aarch64_expand_sve_vec_cmp_float)
11703         (aarch64_expand_sve_vcond, aarch64_expand_sve_vec_perm): Declare.
11704         (aarch64_regmode_natural_size): Likewise.
11705         * config/aarch64/aarch64.h (AARCH64_FL_SVE): New macro.
11706         (AARCH64_FL_V8_3, AARCH64_FL_RCPC, AARCH64_FL_DOTPROD): Shift
11707         left one place.
11708         (AARCH64_ISA_SVE, TARGET_SVE): New macros.
11709         (FIXED_REGISTERS, CALL_USED_REGISTERS, REGISTER_NAMES): Add entries
11710         for VG and the SVE predicate registers.
11711         (V_ALIASES): Add a "z"-prefixed alias.
11712         (FIRST_PSEUDO_REGISTER): Change to P15_REGNUM + 1.
11713         (AARCH64_DWARF_VG, AARCH64_DWARF_P0): New macros.
11714         (PR_REGNUM_P, PR_LO_REGNUM_P): Likewise.
11715         (PR_LO_REGS, PR_HI_REGS, PR_REGS): New reg_classes.
11716         (REG_CLASS_NAMES): Add entries for them.
11717         (REG_CLASS_CONTENTS): Likewise.  Update ALL_REGS to include VG
11718         and the predicate registers.
11719         (aarch64_sve_vg): Declare.
11720         (BITS_PER_SVE_VECTOR, BYTES_PER_SVE_VECTOR, BYTES_PER_SVE_PRED)
11721         (SVE_BYTE_MODE, MAX_COMPILE_TIME_VEC_BYTES): New macros.
11722         (REGMODE_NATURAL_SIZE): Define.
11723         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Handle
11724         SVE macros.
11725         * config/aarch64/aarch64.c: Include cfgrtl.h.
11726         (simd_immediate_info): Add a constructor for series vectors,
11727         and an associated step field.
11728         (aarch64_sve_vg): New variable.
11729         (aarch64_dbx_register_number): Handle VG and the predicate registers.
11730         (aarch64_vect_struct_mode_p, aarch64_vector_mode_p): Delete.
11731         (VEC_ADVSIMD, VEC_SVE_DATA, VEC_SVE_PRED, VEC_STRUCT, VEC_ANY_SVE)
11732         (VEC_ANY_DATA, VEC_STRUCT): New constants.
11733         (aarch64_advsimd_struct_mode_p, aarch64_sve_pred_mode_p)
11734         (aarch64_classify_vector_mode, aarch64_vector_data_mode_p)
11735         (aarch64_sve_data_mode_p, aarch64_sve_pred_mode)
11736         (aarch64_get_mask_mode): New functions.
11737         (aarch64_hard_regno_nregs): Handle SVE data modes for FP_REGS
11738         and FP_LO_REGS.  Handle PR_REGS, PR_LO_REGS and PR_HI_REGS.
11739         (aarch64_hard_regno_mode_ok): Handle VG.  Also handle the SVE
11740         predicate modes and predicate registers.  Explicitly restrict
11741         GPRs to modes of 16 bytes or smaller.  Only allow FP registers
11742         to store a vector mode if it is recognized by
11743         aarch64_classify_vector_mode.
11744         (aarch64_regmode_natural_size): New function.
11745         (aarch64_hard_regno_caller_save_mode): Return the original mode
11746         for predicates.
11747         (aarch64_sve_cnt_immediate_p, aarch64_output_sve_cnt_immediate)
11748         (aarch64_sve_addvl_addpl_immediate_p, aarch64_output_sve_addvl_addpl)
11749         (aarch64_sve_inc_dec_immediate_p, aarch64_output_sve_inc_dec_immediate)
11750         (aarch64_add_offset_1_temporaries, aarch64_offset_temporaries): New
11751         functions.
11752         (aarch64_add_offset): Add a temp2 parameter.  Assert that temp1
11753         does not overlap dest if the function is frame-related.  Handle
11754         SVE constants.
11755         (aarch64_split_add_offset): New function.
11756         (aarch64_add_sp, aarch64_sub_sp): Add temp2 parameters and pass
11757         them aarch64_add_offset.
11758         (aarch64_allocate_and_probe_stack_space): Add a temp2 parameter
11759         and update call to aarch64_sub_sp.
11760         (aarch64_add_cfa_expression): New function.
11761         (aarch64_expand_prologue): Pass extra temporary registers to the
11762         functions above.  Handle the case in which we need to emit new
11763         DW_CFA_expressions for registers that were originally saved
11764         relative to the stack pointer, but now have to be expressed
11765         relative to the frame pointer.
11766         (aarch64_output_mi_thunk): Pass extra temporary registers to the
11767         functions above.
11768         (aarch64_expand_epilogue): Likewise.  Prevent inheritance of
11769         IP0 and IP1 values for SVE frames.
11770         (aarch64_expand_vec_series): New function.
11771         (aarch64_expand_sve_widened_duplicate): Likewise.
11772         (aarch64_expand_sve_const_vector): Likewise.
11773         (aarch64_expand_mov_immediate): Add a gen_vec_duplicate parameter.
11774         Handle SVE constants.  Use emit_move_insn to move a force_const_mem
11775         into the register, rather than emitting a SET directly.
11776         (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move)
11777         (aarch64_get_reg_raw_mode, offset_4bit_signed_scaled_p)
11778         (offset_6bit_unsigned_scaled_p, aarch64_offset_7bit_signed_scaled_p)
11779         (offset_9bit_signed_scaled_p): New functions.
11780         (aarch64_replicate_bitmask_imm): New function.
11781         (aarch64_bitmask_imm): Use it.
11782         (aarch64_cannot_force_const_mem): Reject expressions involving
11783         a CONST_POLY_INT.  Update call to aarch64_classify_symbol.
11784         (aarch64_classify_index): Handle SVE indices, by requiring
11785         a plain register index with a scale that matches the element size.
11786         (aarch64_classify_address): Handle SVE addresses.  Assert that
11787         the mode of the address is VOIDmode or an integer mode.
11788         Update call to aarch64_classify_symbol.
11789         (aarch64_classify_symbolic_expression): Update call to
11790         aarch64_classify_symbol.
11791         (aarch64_const_vec_all_in_range_p): New function.
11792         (aarch64_print_vector_float_operand): Likewise.
11793         (aarch64_print_operand): Handle 'N' and 'C'.  Use "zN" rather than
11794         "vN" for FP registers with SVE modes.  Handle (const ...) vectors
11795         and the FP immediates 1.0 and 0.5.
11796         (aarch64_print_address_internal): Handle SVE addresses.
11797         (aarch64_print_operand_address): Use ADDR_QUERY_ANY.
11798         (aarch64_regno_regclass): Handle predicate registers.
11799         (aarch64_secondary_reload): Handle big-endian reloads of SVE
11800         data modes.
11801         (aarch64_class_max_nregs): Handle SVE modes and predicate registers.
11802         (aarch64_rtx_costs): Check for ADDVL and ADDPL instructions.
11803         (aarch64_convert_sve_vector_bits): New function.
11804         (aarch64_override_options): Use it to handle -msve-vector-bits=.
11805         (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
11806         rather than an rtx.
11807         (aarch64_legitimate_constant_p): Use aarch64_classify_vector_mode.
11808         Handle SVE vector and predicate modes.  Accept VL-based constants
11809         that need only one temporary register, and VL offsets that require
11810         no temporary registers.
11811         (aarch64_conditional_register_usage): Mark the predicate registers
11812         as fixed if SVE isn't available.
11813         (aarch64_vector_mode_supported_p): Use aarch64_classify_vector_mode.
11814         Return true for SVE vector and predicate modes.
11815         (aarch64_simd_container_mode): Take the number of bits as a poly_int64
11816         rather than an unsigned int.  Handle SVE modes.
11817         (aarch64_preferred_simd_mode): Update call accordingly.  Handle
11818         SVE modes.
11819         (aarch64_autovectorize_vector_sizes): Add BYTES_PER_SVE_VECTOR
11820         if SVE is enabled.
11821         (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
11822         (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
11823         (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
11824         (aarch64_sve_float_mul_immediate_p): New functions.
11825         (aarch64_sve_valid_immediate): New function.
11826         (aarch64_simd_valid_immediate): Use it as the fallback for SVE vectors.
11827         Explicitly reject structure modes.  Check for INDEX constants.
11828         Handle PTRUE and PFALSE constants.
11829         (aarch64_check_zero_based_sve_index_immediate): New function.
11830         (aarch64_simd_imm_zero_p): Delete.
11831         (aarch64_mov_operand_p): Use aarch64_simd_valid_immediate for
11832         vector modes.  Accept constants in the range of CNT[BHWD].
11833         (aarch64_simd_scalar_immediate_valid_for_move): Explicitly
11834         ask for an Advanced SIMD mode.
11835         (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): New functions.
11836         (aarch64_simd_vector_alignment): Handle SVE predicates.
11837         (aarch64_vectorize_preferred_vector_alignment): New function.
11838         (aarch64_simd_vector_alignment_reachable): Use it instead of
11839         the vector size.
11840         (aarch64_shift_truncation_mask): Use aarch64_vector_data_mode_p.
11841         (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): New
11842         functions.
11843         (MAX_VECT_LEN): Delete.
11844         (expand_vec_perm_d): Add a vec_flags field.
11845         (emit_unspec2, aarch64_expand_sve_vec_perm): New functions.
11846         (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_zip)
11847         (aarch64_evpc_ext): Don't apply a big-endian lane correction
11848         for SVE modes.
11849         (aarch64_evpc_rev): Rename to...
11850         (aarch64_evpc_rev_local): ...this.  Use a predicated operation for SVE.
11851         (aarch64_evpc_rev_global): New function.
11852         (aarch64_evpc_dup): Enforce a 64-byte range for SVE DUP.
11853         (aarch64_evpc_tbl): Use MAX_COMPILE_TIME_VEC_BYTES instead of
11854         MAX_VECT_LEN.
11855         (aarch64_evpc_sve_tbl): New function.
11856         (aarch64_expand_vec_perm_const_1): Update after rename of
11857         aarch64_evpc_rev.  Handle SVE permutes too, trying
11858         aarch64_evpc_rev_global and using aarch64_evpc_sve_tbl rather
11859         than aarch64_evpc_tbl.
11860         (aarch64_vectorize_vec_perm_const): Initialize vec_flags.
11861         (aarch64_sve_cmp_operand_p, aarch64_unspec_cond_code)
11862         (aarch64_gen_unspec_cond, aarch64_expand_sve_vec_cmp_int)
11863         (aarch64_emit_unspec_cond, aarch64_emit_unspec_cond_or)
11864         (aarch64_emit_inverted_unspec_cond, aarch64_expand_sve_vec_cmp_float)
11865         (aarch64_expand_sve_vcond): New functions.
11866         (aarch64_modes_tieable_p): Use aarch64_vector_data_mode_p instead
11867         of aarch64_vector_mode_p.
11868         (aarch64_dwarf_poly_indeterminate_value): New function.
11869         (aarch64_compute_pressure_classes): Likewise.
11870         (aarch64_can_change_mode_class): Likewise.
11871         (TARGET_GET_RAW_RESULT_MODE, TARGET_GET_RAW_ARG_MODE): Redefine.
11872         (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): Likewise.
11873         (TARGET_VECTORIZE_GET_MASK_MODE): Likewise.
11874         (TARGET_DWARF_POLY_INDETERMINATE_VALUE): Likewise.
11875         (TARGET_COMPUTE_PRESSURE_CLASSES): Likewise.
11876         (TARGET_CAN_CHANGE_MODE_CLASS): Likewise.
11877         * config/aarch64/constraints.md (Upa, Upl, Uav, Uat, Usv, Usi, Utr)
11878         (Uty, Dm, vsa, vsc, vsd, vsi, vsn, vsl, vsm, vsA, vsM, vsN): New
11879         constraints.
11880         (Dn, Dl, Dr): Accept const as well as const_vector.
11881         (Dz): Likewise.  Compare against CONST0_RTX.
11882         * config/aarch64/iterators.md: Refer to "Advanced SIMD" instead
11883         of "vector" where appropriate.
11884         (SVE_ALL, SVE_BH, SVE_BHS, SVE_BHSI, SVE_HSDI, SVE_HSF, SVE_SD)
11885         (SVE_SDI, SVE_I, SVE_F, PRED_ALL, PRED_BHS): New mode iterators.
11886         (UNSPEC_SEL, UNSPEC_ANDF, UNSPEC_IORF, UNSPEC_XORF, UNSPEC_COND_LT)
11887         (UNSPEC_COND_LE, UNSPEC_COND_EQ, UNSPEC_COND_NE, UNSPEC_COND_GE)
11888         (UNSPEC_COND_GT, UNSPEC_COND_LO, UNSPEC_COND_LS, UNSPEC_COND_HS)
11889         (UNSPEC_COND_HI, UNSPEC_COND_UO): New unspecs.
11890         (Vetype, VEL, Vel, VWIDE, Vwide, vw, vwcore, V_INT_EQUIV)
11891         (v_int_equiv): Extend to SVE modes.
11892         (Vesize, V128, v128, Vewtype, V_FP_EQUIV, v_fp_equiv, VPRED): New
11893         mode attributes.
11894         (LOGICAL_OR, SVE_INT_UNARY, SVE_FP_UNARY): New code iterators.
11895         (optab): Handle popcount, smin, smax, umin, umax, abs and sqrt.
11896         (logical_nn, lr, sve_int_op, sve_fp_op): New code attributs.
11897         (LOGICALF, OPTAB_PERMUTE, UNPACK, UNPACK_UNSIGNED, SVE_COND_INT_CMP)
11898         (SVE_COND_FP_CMP): New int iterators.
11899         (perm_hilo): Handle the new unpack unspecs.
11900         (optab, logicalf_op, su, perm_optab, cmp_op, imm_con): New int
11901         attributes.
11902         * config/aarch64/predicates.md (aarch64_sve_cnt_immediate)
11903         (aarch64_sve_addvl_addpl_immediate, aarch64_split_add_offset_immediate)
11904         (aarch64_pluslong_or_poly_operand, aarch64_nonmemory_operand)
11905         (aarch64_equality_operator, aarch64_constant_vector_operand)
11906         (aarch64_sve_ld1r_operand, aarch64_sve_ldr_operand): New predicates.
11907         (aarch64_sve_nonimmediate_operand): Likewise.
11908         (aarch64_sve_general_operand): Likewise.
11909         (aarch64_sve_dup_operand, aarch64_sve_arith_immediate): Likewise.
11910         (aarch64_sve_sub_arith_immediate, aarch64_sve_inc_dec_immediate)
11911         (aarch64_sve_logical_immediate, aarch64_sve_mul_immediate): Likewise.
11912         (aarch64_sve_dup_immediate, aarch64_sve_cmp_vsc_immediate): Likewise.
11913         (aarch64_sve_cmp_vsd_immediate, aarch64_sve_index_immediate): Likewise.
11914         (aarch64_sve_float_arith_immediate): Likewise.
11915         (aarch64_sve_float_arith_with_sub_immediate): Likewise.
11916         (aarch64_sve_float_mul_immediate, aarch64_sve_arith_operand): Likewise.
11917         (aarch64_sve_add_operand, aarch64_sve_logical_operand): Likewise.
11918         (aarch64_sve_lshift_operand, aarch64_sve_rshift_operand): Likewise.
11919         (aarch64_sve_mul_operand, aarch64_sve_cmp_vsc_operand): Likewise.
11920         (aarch64_sve_cmp_vsd_operand, aarch64_sve_index_operand): Likewise.
11921         (aarch64_sve_float_arith_operand): Likewise.
11922         (aarch64_sve_float_arith_with_sub_operand): Likewise.
11923         (aarch64_sve_float_mul_operand): Likewise.
11924         (aarch64_sve_vec_perm_operand): Likewise.
11925         (aarch64_pluslong_operand): Include aarch64_sve_addvl_addpl_immediate.
11926         (aarch64_mov_operand): Accept const_poly_int and const_vector.
11927         (aarch64_simd_lshift_imm, aarch64_simd_rshift_imm): Accept const
11928         as well as const_vector.
11929         (aarch64_simd_imm_zero, aarch64_simd_imm_minus_one): Move earlier
11930         in file.  Use CONST0_RTX and CONSTM1_RTX.
11931         (aarch64_simd_or_scalar_imm_zero): Likewise.  Add match_codes.
11932         (aarch64_simd_reg_or_zero): Accept const as well as const_vector.
11933         Use aarch64_simd_imm_zero.
11934         * config/aarch64/aarch64-sve.md: New file.
11935         * config/aarch64/aarch64.md: Include it.
11936         (VG_REGNUM, P0_REGNUM, P7_REGNUM, P15_REGNUM): New register numbers.
11937         (UNSPEC_REV, UNSPEC_LD1_SVE, UNSPEC_ST1_SVE, UNSPEC_MERGE_PTRUE)
11938         (UNSPEC_PTEST_PTRUE, UNSPEC_UNPACKSHI, UNSPEC_UNPACKUHI)
11939         (UNSPEC_UNPACKSLO, UNSPEC_UNPACKULO, UNSPEC_PACK)
11940         (UNSPEC_FLOAT_CONVERT, UNSPEC_WHILE_LO): New unspec constants.
11941         (sve): New attribute.
11942         (enabled): Disable instructions with the sve attribute unless
11943         TARGET_SVE.
11944         (movqi, movhi): Pass CONST_POLY_INT operaneds through
11945         aarch64_expand_mov_immediate.
11946         (*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64): Handle
11947         CNT[BHSD] immediates.
11948         (movti): Split CONST_POLY_INT moves into two halves.
11949         (add<mode>3): Accept aarch64_pluslong_or_poly_operand.
11950         Split additions that need a temporary here if the destination
11951         is the stack pointer.
11952         (*add<mode>3_aarch64): Handle ADDVL and ADDPL immediates.
11953         (*add<mode>3_poly_1): New instruction.
11954         (set_clobber_cc): New expander.
11956 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11958         * simplify-rtx.c (simplify_immed_subreg): Add an inner_bytes
11959         parameter and use it instead of GET_MODE_SIZE (innermode).  Use
11960         inner_bytes * BITS_PER_UNIT instead of GET_MODE_BITSIZE (innermode).
11961         Use CEIL (inner_bytes, GET_MODE_UNIT_SIZE (innermode)) instead of
11962         GET_MODE_NUNITS (innermode).  Also add a first_elem parameter.
11963         Change innermode from fixed_mode_size to machine_mode.
11964         (simplify_subreg): Update call accordingly.  Handle a constant-sized
11965         subreg of a variable-length CONST_VECTOR.
11967 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11968             Alan Hayward  <alan.hayward@arm.com>
11969             David Sherwood  <david.sherwood@arm.com>
11971         * tree-ssa-address.c (mem_ref_valid_without_offset_p): New function.
11972         (add_offset_to_base): New function, split out from...
11973         (create_mem_ref): ...here.  When handling a scale other than 1,
11974         check first whether the address is valid without the offset.
11975         Add it into the base if so, leaving the index and scale as-is.
11977 2018-01-12  Jakub Jelinek  <jakub@redhat.com>
11979         PR c++/83778
11980         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Call
11981         fold_for_warn before checking if arg2 is INTEGER_CST.
11983 2018-01-12  Segher Boessenkool  <segher@kernel.crashing.org>
11985         * config/rs6000/predicates.md (load_multiple_operation): Delete.
11986         (store_multiple_operation): Delete.
11987         * config/rs6000/rs6000-cpus.def (601): Remove MASK_STRING.
11988         * config/rs6000/rs6000-protos.h (rs6000_output_load_multiple): Delete.
11989         * config/rs6000/rs6000-string.c (expand_block_move): Delete everything
11990         guarded by TARGET_STRING.
11991         (rs6000_output_load_multiple): Delete.
11992         * config/rs6000/rs6000.c (rs6000_option_override_internal): Delete
11993         OPTION_MASK_STRING / TARGET_STRING handling.
11994         (print_operand) <'N', 'O'>: Add comment that these are unused now.
11995         (const rs6000_opt_masks) <"string">: Change mask to 0.
11996         * config/rs6000/rs6000.h (TARGET_DEFAULT): Remove MASK_STRING.
11997         (MASK_STRING): Delete.
11998         * config/rs6000/rs6000.md (*mov<mode>_string): Delete TARGET_STRING
11999         parts.  Simplify.
12000         (load_multiple): Delete.
12001         (*ldmsi8): Delete.
12002         (*ldmsi7): Delete.
12003         (*ldmsi6): Delete.
12004         (*ldmsi5): Delete.
12005         (*ldmsi4): Delete.
12006         (*ldmsi3): Delete.
12007         (store_multiple): Delete.
12008         (*stmsi8): Delete.
12009         (*stmsi7): Delete.
12010         (*stmsi6): Delete.
12011         (*stmsi5): Delete.
12012         (*stmsi4): Delete.
12013         (*stmsi3): Delete.
12014         (movmemsi_8reg): Delete.
12015         (corresponding unnamed define_insn): Delete.
12016         (movmemsi_6reg): Delete.
12017         (corresponding unnamed define_insn): Delete.
12018         (movmemsi_4reg): Delete.
12019         (corresponding unnamed define_insn): Delete.
12020         (movmemsi_2reg): Delete.
12021         (corresponding unnamed define_insn): Delete.
12022         (movmemsi_1reg): Delete.
12023         (corresponding unnamed define_insn): Delete.
12024         * config/rs6000/rs6000.opt (mno-string): New.
12025         (mstring): Replace by deprecation warning stub.
12026         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mstring.
12028 2018-01-12  Jakub Jelinek  <jakub@redhat.com>
12030         * regrename.c (regrename_do_replace): If replacing the same
12031         reg multiple times, try to reuse last created gen_raw_REG.
12033         PR debug/81155
12034         * bb-reorder.c (pass_partition_blocks::gate): In lto don't partition
12035         main to workaround a bug in GDB.
12037 2018-01-12  Tom de Vries  <tom@codesourcery.com>
12039         PR target/83737
12040         * config.gcc (nvptx*-*-*): Set use_gcc_stdint=wrap.
12042 2018-01-12  Vladimir Makarov  <vmakarov@redhat.com>
12044         PR rtl-optimization/80481
12045         * ira-color.c (get_cap_member): New function.
12046         (allocnos_conflict_by_live_ranges_p): Use it.
12047         (slot_coalesced_allocno_live_ranges_intersect_p): Add assert.
12048         (setup_slot_coalesced_allocno_live_ranges): Ditto.
12050 2018-01-12  Uros Bizjak  <ubizjak@gmail.com>
12052         PR target/83628
12053         * config/alpha/alpha.md (*saddsi_1): New insn_ans_split pattern.
12054         (*saddl_se_1): Ditto.
12055         (*ssubsi_1): Ditto.
12056         (*ssubl_se_1): Ditto.
12058 2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
12060         * tree-predcom.c (aff_combination_dr_offset): Use wi::to_poly_widest
12061         rather than wi::to_widest for DR_INITs.
12062         * tree-vect-data-refs.c (vect_find_same_alignment_drs): Use
12063         wi::to_poly_offset rather than wi::to_offset for DR_INIT.
12064         (vect_analyze_data_ref_accesses): Require both DR_INITs to be
12065         INTEGER_CSTs.
12066         (vect_analyze_group_access_1): Note that here.
12068 2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
12070         * tree-vectorizer.c (get_vec_alignment_for_array_type): Handle
12071         polynomial type sizes.
12073 2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
12075         * gimplify.c (gimple_add_tmp_var_fn): Allow variables to have a
12076         poly_uint64 size, rather than requiring an unsigned HOST_WIDE_INT size.
12077         (gimple_add_tmp_var): Likewise.
12079 2018-01-12  Martin Liska  <mliska@suse.cz>
12081         * gimple.c (gimple_alloc_counts): Use uint64_t instead of int.
12082         (gimple_alloc_sizes): Likewise.
12083         (dump_gimple_statistics): Use PRIu64 in printf format.
12084         * gimple.h: Change uint64_t to int.
12086 2018-01-12  Martin Liska  <mliska@suse.cz>
12088         * tree-core.h: Use uint64_t instead of int.
12089         * tree.c (tree_node_counts): Likewise.
12090         (tree_node_sizes): Likewise.
12091         (dump_tree_statistics): Use PRIu64 in printf format.
12093 2018-01-12  Martin Liska  <mliska@suse.cz>
12095         * Makefile.in: As qsort_chk is implemented in vec.c, add
12096         vec.o to linkage of gencfn-macros.
12097         * tree.c (build_new_poly_int_cst): Add CXX_MEM_STAT_INFO as it's
12098         passing the info to record_node_allocation_statistics.
12099         (test_vector_cst_patterns): Add CXX_MEM_STAT_INFO to declaration
12100         and pass the info.
12101         * ggc-common.c (struct ggc_usage): Add operator== and use
12102         it in operator< and compare function.
12103         * mem-stats.h (struct mem_usage): Likewise.
12104         * vec.c (struct vec_usage): Remove operator< and compare
12105         function. Can be simply inherited.
12107 2018-01-12  Martin Jambor  <mjambor@suse.cz>
12109         PR target/81616
12110         * params.def: New parameter PARAM_AVOID_FMA_MAX_BITS.
12111         * tree-ssa-math-opts.c: Include domwalk.h.
12112         (convert_mult_to_fma_1): New function.
12113         (fma_transformation_info): New type.
12114         (fma_deferring_state): Likewise.
12115         (cancel_fma_deferring): New function.
12116         (result_of_phi): Likewise.
12117         (last_fma_candidate_feeds_initial_phi): Likewise.
12118         (convert_mult_to_fma): Added deferring logic, split actual
12119         transformation to convert_mult_to_fma_1.
12120         (math_opts_dom_walker): New type.
12121         (math_opts_dom_walker::after_dom_children): New method, body moved
12122         here from pass_optimize_widening_mul::execute, added deferring logic
12123         bits.
12124         (pass_optimize_widening_mul::execute): Moved most of code to
12125         math_opts_dom_walker::after_dom_children.
12126         * config/i386/x86-tune.def (X86_TUNE_AVOID_128FMA_CHAINS): New.
12127         * config/i386/i386.c (ix86_option_override_internal): Added
12128         maybe_setting of PARAM_AVOID_FMA_MAX_BITS.
12130 2018-01-12  Richard Biener  <rguenther@suse.de>
12132         PR debug/83157
12133         * dwarf2out.c (gen_variable_die): Do not reset old_die for
12134         inline instance vars.
12136 2018-01-12  Oleg Endo  <olegendo@gcc.gnu.org>
12138         PR target/81819
12139         * config/rx/rx.c (rx_is_restricted_memory_address):
12140         Handle SUBREG case.
12142 2018-01-12  Richard Biener  <rguenther@suse.de>
12144         PR tree-optimization/80846
12145         * target.def (split_reduction): New target hook.
12146         * targhooks.c (default_split_reduction): New function.
12147         * targhooks.h (default_split_reduction): Declare.
12148         * tree-vect-loop.c (vect_create_epilog_for_reduction): If the
12149         target requests first reduce vectors by combining low and high
12150         parts.
12151         * tree-vect-stmts.c (vect_gen_perm_mask_any): Adjust.
12152         (get_vectype_for_scalar_type_and_size): Export.
12153         * tree-vectorizer.h (get_vectype_for_scalar_type_and_size): Declare.
12154         * doc/tm.texi.in (TARGET_VECTORIZE_SPLIT_REDUCTION): Document.
12155         * doc/tm.texi: Regenerate.
12156         * config/i386/i386.c (ix86_split_reduction): Implement
12157         TARGET_VECTORIZE_SPLIT_REDUCTION.
12159 2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
12161         PR target/83368
12162         * config/sparc/sparc.h (PIC_OFFSET_TABLE_REGNUM): Set to INVALID_REGNUM
12163         in PIC mode except for TARGET_VXWORKS_RTP.
12164         * config/sparc/sparc.c: Include cfgrtl.h.
12165         (TARGET_INIT_PIC_REG): Define.
12166         (TARGET_USE_PSEUDO_PIC_REG): Likewise.
12167         (sparc_pic_register_p): New predicate.
12168         (sparc_legitimate_address_p): Use it.
12169         (sparc_legitimize_pic_address): Likewise.
12170         (sparc_delegitimize_address): Likewise.
12171         (sparc_mode_dependent_address_p): Likewise.
12172         (gen_load_pcrel_sym): Remove 4th parameter.
12173         (load_got_register): Adjust call to above.  Remove obsolete stuff.
12174         (sparc_expand_prologue): Do not call load_got_register here.
12175         (sparc_flat_expand_prologue): Likewise.
12176         (sparc_output_mi_thunk): Set the pic_offset_table_rtx object.
12177         (sparc_use_pseudo_pic_reg): New function.
12178         (sparc_init_pic_reg): Likewise.
12179         * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
12180         (builtin_setjmp_receiver): Enable only for TARGET_VXWORKS_RTP.
12182 2018-01-12  Christophe Lyon  <christophe.lyon@linaro.org>
12184         * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
12185         Add item for branch_cost.
12187 2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
12189         PR rtl-optimization/83565
12190         * rtlanal.c (nonzero_bits1): On WORD_REGISTER_OPERATIONS machines, do
12191         not extend the result to a larger mode for rotate operations.
12192         (num_sign_bit_copies1): Likewise.
12194 2018-01-12  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
12196         PR target/40411
12197         * config/sol2.h (STARTFILE_ARCH_SPEC): Don't use with -shared or
12198         -symbolic.
12199         Use values-Xc.o for -pedantic.
12200         Link with values-xpg4.o for C90, values-xpg6.o otherwise.
12202 2018-01-12  Martin Liska  <mliska@suse.cz>
12204         PR ipa/83054
12205         * ipa-devirt.c (final_warning_record::grow_type_warnings):
12206         New function.
12207         (possible_polymorphic_call_targets): Use it.
12208         (ipa_devirt): Likewise.
12210 2018-01-12  Martin Liska  <mliska@suse.cz>
12212         * profile-count.h (enum profile_quality): Use 0 as invalid
12213         enum value of profile_quality.
12215 2018-01-12  Chung-Ju Wu  <jasonwucj@gmail.com>
12217         * doc/invoke.texi (NDS32 Options): Add -mext-perf, -mext-perf2 and
12218         -mext-string options.
12220 2018-01-12  Richard Biener  <rguenther@suse.de>
12222         * lto-streamer-out.c (DFS::DFS_write_tree_body): Process
12223         DECL_DEBUG_EXPR conditional on DECL_HAS_DEBUG_EXPR_P.
12224         * tree-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
12225         Likewise.
12226         * tree-streamer-out.c (write_ts_decl_common_tree_pointers): Likewise.
12228 2018-01-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
12230         * configure.ac (--with-long-double-format): Add support for the
12231         configuration option to change the default long double format on
12232         PowerPC systems.
12233         * config.gcc (powerpc*-linux*-*): Likewise.
12234         * configure: Regenerate.
12235         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): If long
12236         double is IEEE, define __KC__ and __KF__ to allow floatn.h to be
12237         used without modification.
12239 2018-01-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
12241         * config/rs6000/rs6000-builtin.def (BU_P7_MISC_X): New #define.
12242         (SPEC_BARRIER): New instantiation of BU_P7_MISC_X.
12243         * config/rs6000/rs6000.c (rs6000_expand_builtin): Handle
12244         MISC_BUILTIN_SPEC_BARRIER.
12245         (rs6000_init_builtins): Likewise.
12246         * config/rs6000/rs6000.md (UNSPECV_SPEC_BARRIER): New UNSPECV
12247         enum value.
12248         (speculation_barrier): New define_insn.
12249         * doc/extend.texi: Document __builtin_speculation_barrier.
12251 2018-01-11  Jakub Jelinek  <jakub@redhat.com>
12253         PR target/83203
12254         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): If one_var
12255         is 0, for V{8,16}S[IF] and V[48]D[IF]mode use gen_vec_set<mode>_0.
12256         * config/i386/sse.md (VI8_AVX_AVX512F, VI4F_256_512): New mode
12257         iterators.
12258         (ssescalarmodesuffix): Add 512-bit vectors.  Use "d" or "q" for
12259         integral modes instead of "ss" and "sd".
12260         (vec_set<mode>_0): New define_insns for 256-bit and 512-bit
12261         vectors with 32-bit and 64-bit elements.
12262         (vecdupssescalarmodesuffix): New mode attribute.
12263         (vec_dup<mode>): Use it.
12265 2018-01-11  H.J. Lu  <hongjiu.lu@intel.com>
12267         PR target/83330
12268         * config/i386/i386.c (ix86_compute_frame_layout): Align stack
12269         frame if argument is passed on stack.
12271 2018-01-11  Jakub Jelinek  <jakub@redhat.com>
12273         PR target/82682
12274         * ree.c (combine_reaching_defs): Optimize also
12275         reg2=exp; reg1=reg2; reg2=any_extend(reg1); into
12276         reg2=any_extend(exp); reg1=reg2;, formatting fix.
12278 2018-01-11  Jan Hubicka  <hubicka@ucw.cz>
12280         PR middle-end/83189
12281         * gimple-ssa-isolate-paths.c (isolate_path): Fix profile update.
12283 2018-01-11  Jan Hubicka  <hubicka@ucw.cz>
12285         PR middle-end/83718
12286         * tree-inline.c (copy_cfg_body): Adjust num&den for scaling
12287         after they are computed.
12289 2018-01-11  Bin Cheng  <bin.cheng@arm.com>
12291         PR tree-optimization/83695
12292         * gimple-loop-linterchange.cc
12293         (tree_loop_interchange::interchange_loops): Call scev_reset_htab to
12294         reset cached scev information after interchange.
12295         (pass_linterchange::execute): Remove call to scev_reset_htab.
12297 2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
12299         * config/arm/arm_neon.h (vfmlal_lane_low_u32, vfmlal_lane_high_u32,
12300         vfmlalq_laneq_low_u32, vfmlalq_lane_low_u32, vfmlal_laneq_low_u32,
12301         vfmlalq_laneq_high_u32, vfmlalq_lane_high_u32, vfmlal_laneq_high_u32,
12302         vfmlsl_lane_low_u32, vfmlsl_lane_high_u32, vfmlslq_laneq_low_u32,
12303         vfmlslq_lane_low_u32, vfmlsl_laneq_low_u32, vfmlslq_laneq_high_u32,
12304         vfmlslq_lane_high_u32, vfmlsl_laneq_high_u32): Define.
12305         * config/arm/arm_neon_builtins.def (vfmal_lane_low,
12306         vfmal_lane_lowv4hf, vfmal_lane_lowv8hf, vfmal_lane_high,
12307         vfmal_lane_highv4hf, vfmal_lane_highv8hf, vfmsl_lane_low,
12308         vfmsl_lane_lowv4hf, vfmsl_lane_lowv8hf, vfmsl_lane_high,
12309         vfmsl_lane_highv4hf, vfmsl_lane_highv8hf): New sets of builtins.
12310         * config/arm/iterators.md (VFMLSEL2, vfmlsel2): New mode attributes.
12311         (V_lane_reg): Likewise.
12312         * config/arm/neon.md (neon_vfm<vfml_op>l_lane_<vfml_half><VCVTF:mode>):
12313         New define_expand.
12314         (neon_vfm<vfml_op>l_lane_<vfml_half><vfmlsel2><mode>): Likewise.
12315         (vfmal_lane_low<mode>_intrinsic,
12316         vfmal_lane_low<vfmlsel2><mode>_intrinsic,
12317         vfmal_lane_high<vfmlsel2><mode>_intrinsic,
12318         vfmal_lane_high<mode>_intrinsic, vfmsl_lane_low<mode>_intrinsic,
12319         vfmsl_lane_low<vfmlsel2><mode>_intrinsic,
12320         vfmsl_lane_high<vfmlsel2><mode>_intrinsic,
12321         vfmsl_lane_high<mode>_intrinsic): New define_insns.
12323 2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
12325         * config/arm/arm-cpus.in (fp16fml): New feature.
12326         (ALL_SIMD): Add fp16fml.
12327         (armv8.2-a): Add fp16fml as an option.
12328         (armv8.3-a): Likewise.
12329         (armv8.4-a): Add fp16fml as part of fp16.
12330         * config/arm/arm.h (TARGET_FP16FML): Define.
12331         * config/arm/arm-c.c (arm_cpu_builtins): Define __ARM_FEATURE_FP16_FML
12332         when appropriate.
12333         * config/arm/arm-modes.def (V2HF): Define.
12334         * config/arm/arm_neon.h (vfmlal_low_u32, vfmlsl_low_u32,
12335         vfmlal_high_u32, vfmlsl_high_u32, vfmlalq_low_u32,
12336         vfmlslq_low_u32, vfmlalq_high_u32, vfmlslq_high_u32): Define.
12337         * config/arm/arm_neon_builtins.def (vfmal_low, vfmal_high,
12338         vfmsl_low, vfmsl_high): New set of builtins.
12339         * config/arm/iterators.md (PLUSMINUS): New code iterator.
12340         (vfml_op): New code attribute.
12341         (VFMLHALVES): New int iterator.
12342         (VFML, VFMLSEL): New mode attributes.
12343         (V_reg): Define mapping for V2HF.
12344         (V_hi, V_lo): New mode attributes.
12345         (VF_constraint): Likewise.
12346         (vfml_half, vfml_half_selector): New int attributes.
12347         * config/arm/neon.md (neon_vfm<vfml_op>l_<vfml_half><mode>): New
12348         define_expand.
12349         (vfmal_low<mode>_intrinsic, vfmsl_high<mode>_intrinsic,
12350         vfmal_high<mode>_intrinsic, vfmsl_low<mode>_intrinsic):
12351         New define_insn.
12352         * config/arm/t-arm-elf (v8_fps): Add fp16fml.
12353         * config/arm/t-multilib (v8_2_a_simd_variants): Add fp16fml.
12354         * config/arm/unspecs.md (UNSPEC_VFML_LO, UNSPEC_VFML_HI): New unspecs.
12355         * doc/invoke.texi (ARM Options): Document fp16fml.  Update armv8.4-a
12356         documentation.
12357         * doc/sourcebuild.texi (arm_fp16fml_neon_ok, arm_fp16fml_neon):
12358         Document new effective target and option set.
12360 2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
12362         * config/arm/arm-cpus.in (armv8_4): New feature.
12363         (ARMv8_4a): New fgroup.
12364         (armv8.4-a): New arch.
12365         * config/arm/arm-tables.opt: Regenerate.
12366         * config/arm/t-aprofile: Add matching rules for -march=armv8.4-a.
12367         * config/arm/t-arm-elf (all_v8_archs): Add armv8.4-a.
12368         * config/arm/t-multilib (v8_4_a_simd_variants): New variable.
12369         Add matching rules for -march=armv8.4-a and extensions.
12370         * doc/invoke.texi (ARM Options): Document -march=armv8.4-a.
12372 2018-01-11  Oleg Endo  <olegendo@gcc.gnu.org>
12374         PR target/81821
12375         * config/rx/rx.md (BW): New mode attribute.
12376         (sync_lock_test_and_setsi): Add mode suffix to insn output.
12378 2018-01-11  Richard Biener  <rguenther@suse.de>
12380         PR tree-optimization/83435
12381         * graphite.c (canonicalize_loop_form): Ignore fake loop exit edges.
12382         * graphite-scop-detection.c (scop_detection::get_sese): Likewise.
12383         * tree-vrp.c (add_assert_info): Drop TREE_OVERFLOW if they appear.
12385 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
12386             Alan Hayward  <alan.hayward@arm.com>
12387             David Sherwood  <david.sherwood@arm.com>
12389         * config/aarch64/aarch64.c (aarch64_address_info): Add a const_offset
12390         field.
12391         (aarch64_classify_address): Initialize it.  Track polynomial offsets.
12392         (aarch64_print_address_internal): Use it to check for a zero offset.
12394 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
12395             Alan Hayward  <alan.hayward@arm.com>
12396             David Sherwood  <david.sherwood@arm.com>
12398         * config/aarch64/aarch64-modes.def (NUM_POLY_INT_COEFFS): Set to 2.
12399         * config/aarch64/aarch64-protos.h (aarch64_initial_elimination_offset):
12400         Return a poly_int64 rather than a HOST_WIDE_INT.
12401         (aarch64_offset_7bit_signed_scaled_p): Take the offset as a poly_int64
12402         rather than a HOST_WIDE_INT.
12403         * config/aarch64/aarch64.h (aarch64_frame): Protect with
12404         HAVE_POLY_INT_H rather than HOST_WIDE_INT.  Change locals_offset,
12405         hard_fp_offset, frame_size, initial_adjust, callee_offset and
12406         final_offset from HOST_WIDE_INT to poly_int64.
12407         * config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args): Use
12408         to_constant when getting the number of units in an Advanced SIMD
12409         mode.
12410         (aarch64_builtin_vectorized_function): Check for a constant number
12411         of units.
12412         * config/aarch64/aarch64-simd.md (mov<mode>): Handle polynomial
12413         GET_MODE_SIZE.
12414         (aarch64_ld<VSTRUCT:nregs>_lane<VALLDIF:mode>): Use the nunits
12415         attribute instead of GET_MODE_NUNITS.
12416         * config/aarch64/aarch64.c (aarch64_hard_regno_nregs)
12417         (aarch64_class_max_nregs): Use the constant_lowest_bound of the
12418         GET_MODE_SIZE for fixed-size registers.
12419         (aarch64_const_vec_all_same_in_range_p): Use const_vec_duplicate_p.
12420         (aarch64_hard_regno_call_part_clobbered, aarch64_classify_index)
12421         (aarch64_mode_valid_for_sched_fusion_p, aarch64_classify_address)
12422         (aarch64_legitimize_address_displacement, aarch64_secondary_reload)
12423         (aarch64_print_operand, aarch64_print_address_internal)
12424         (aarch64_address_cost, aarch64_rtx_costs, aarch64_register_move_cost)
12425         (aarch64_short_vector_p, aapcs_vfp_sub_candidate)
12426         (aarch64_simd_attr_length_rglist, aarch64_operands_ok_for_ldpstp):
12427         Handle polynomial GET_MODE_SIZE.
12428         (aarch64_hard_regno_caller_save_mode): Likewise.  Return modes
12429         wider than SImode without modification.
12430         (tls_symbolic_operand_type): Use strip_offset instead of split_const.
12431         (aarch64_pass_by_reference, aarch64_layout_arg, aarch64_pad_reg_upward)
12432         (aarch64_gimplify_va_arg_expr): Assert that we don't yet handle
12433         passing and returning SVE modes.
12434         (aarch64_function_value, aarch64_layout_arg): Use gen_int_mode
12435         rather than GEN_INT.
12436         (aarch64_emit_probe_stack_range): Take the size as a poly_int64
12437         rather than a HOST_WIDE_INT, but call sorry if it isn't constant.
12438         (aarch64_allocate_and_probe_stack_space): Likewise.
12439         (aarch64_layout_frame): Cope with polynomial offsets.
12440         (aarch64_save_callee_saves, aarch64_restore_callee_saves): Take the
12441         start_offset as a poly_int64 rather than a HOST_WIDE_INT.  Track
12442         polynomial offsets.
12443         (offset_9bit_signed_unscaled_p, offset_12bit_unsigned_scaled_p)
12444         (aarch64_offset_7bit_signed_scaled_p): Take the offset as a
12445         poly_int64 rather than a HOST_WIDE_INT.
12446         (aarch64_get_separate_components, aarch64_process_components)
12447         (aarch64_expand_prologue, aarch64_expand_epilogue)
12448         (aarch64_use_return_insn_p): Handle polynomial frame offsets.
12449         (aarch64_anchor_offset): New function, split out from...
12450         (aarch64_legitimize_address): ...here.
12451         (aarch64_builtin_vectorization_cost): Handle polynomial
12452         TYPE_VECTOR_SUBPARTS.
12453         (aarch64_simd_check_vect_par_cnst_half): Handle polynomial
12454         GET_MODE_NUNITS.
12455         (aarch64_simd_make_constant, aarch64_expand_vector_init): Get the
12456         number of elements from the PARALLEL rather than the mode.
12457         (aarch64_shift_truncation_mask): Use GET_MODE_UNIT_BITSIZE
12458         rather than GET_MODE_BITSIZE.
12459         (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_ext)
12460         (aarch64_evpc_rev, aarch64_evpc_dup, aarch64_evpc_zip)
12461         (aarch64_expand_vec_perm_const_1): Handle polynomial
12462         d->perm.length () and d->perm elements.
12463         (aarch64_evpc_tbl): Likewise.  Use nelt rather than GET_MODE_NUNITS.
12464         Apply to_constant to d->perm elements.
12465         (aarch64_simd_valid_immediate, aarch64_vec_fpconst_pow_of_2): Handle
12466         polynomial CONST_VECTOR_NUNITS.
12467         (aarch64_move_pointer): Take amount as a poly_int64 rather
12468         than an int.
12469         (aarch64_progress_pointer): Avoid temporary variable.
12470         * config/aarch64/aarch64.md (aarch64_<crc_variant>): Use
12471         the mode attribute instead of GET_MODE.
12473 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
12474             Alan Hayward  <alan.hayward@arm.com>
12475             David Sherwood  <david.sherwood@arm.com>
12477         * config/aarch64/aarch64.c (aarch64_force_temporary): Assert that
12478         x exists before using it.
12479         (aarch64_add_constant_internal): Rename to...
12480         (aarch64_add_offset_1): ...this.  Replace regnum with separate
12481         src and dest rtxes.  Handle the case in which they're different,
12482         including when the offset is zero.  Replace scratchreg with an rtx.
12483         Use 2 additions if there is no spare register into which we can
12484         move a 16-bit constant.
12485         (aarch64_add_constant): Delete.
12486         (aarch64_add_offset): Replace reg with separate src and dest
12487         rtxes.  Take a poly_int64 offset instead of a HOST_WIDE_INT.
12488         Use aarch64_add_offset_1.
12489         (aarch64_add_sp, aarch64_sub_sp): Take the scratch register as
12490         an rtx rather than an int.  Take the delta as a poly_int64
12491         rather than a HOST_WIDE_INT.  Use aarch64_add_offset.
12492         (aarch64_expand_mov_immediate): Update uses of aarch64_add_offset.
12493         (aarch64_expand_prologue): Update calls to aarch64_sub_sp,
12494         aarch64_allocate_and_probe_stack_space and aarch64_add_offset.
12495         (aarch64_expand_epilogue): Update calls to aarch64_add_offset
12496         and aarch64_add_sp.
12497         (aarch64_output_mi_thunk): Use aarch64_add_offset rather than
12498         aarch64_add_constant.
12500 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
12502         * config/aarch64/aarch64.c (aarch64_reinterpret_float_as_int):
12503         Use scalar_float_mode.
12505 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
12507         * config/aarch64/aarch64-simd.md
12508         (aarch64_fml<f16mac1>l<f16quad>_low<mode>): Avoid GET_MODE_NUNITS.
12509         (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Likewise.
12510         (aarch64_fml<f16mac1>l_lane_lowv2sf): Likewise.
12511         (aarch64_fml<f16mac1>l_lane_highv2sf): Likewise.
12512         (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Likewise.
12513         (aarch64_fml<f16mac1>lq_laneq_highv4sf): Likewise.
12514         (aarch64_fml<f16mac1>l_laneq_lowv2sf): Likewise.
12515         (aarch64_fml<f16mac1>l_laneq_highv2sf): Likewise.
12516         (aarch64_fml<f16mac1>lq_lane_lowv4sf): Likewise.
12517         (aarch64_fml<f16mac1>lq_lane_highv4sf): Likewise.
12519 2018-01-11  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
12521         PR target/83514
12522         * config/arm/arm.c (arm_declare_function_name): Set arch_to_print if
12523         targ_options->x_arm_arch_string is non NULL.
12525 2018-01-11  Tamar Christina  <tamar.christina@arm.com>
12527         * config/aarch64/aarch64.h
12528         (AARCH64_FL_FOR_ARCH8_4): Add  AARCH64_FL_DOTPROD.
12530 2018-01-11  Sudakshina Das  <sudi.das@arm.com>
12532         PR target/82096
12533         * expmed.c (emit_store_flag_force): Swap if const op0
12534         and change VOIDmode to mode of op0.
12536 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
12538         PR rtl-optimization/83761
12539         * caller-save.c (replace_reg_with_saved_mem): Pass bits rather
12540         than bytes to mode_for_size.
12542 2018-01-10  Jan Hubicka  <hubicka@ucw.cz>
12544         PR middle-end/83189
12545         * gfortran.fortran-torture/compile/pr83189.f90: New testcase.
12546         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Handle zero
12547         profile.
12549 2018-01-10  Jan Hubicka  <hubicka@ucw.cz>
12551         PR middle-end/83575
12552         * cfgrtl.c (rtl_verify_edges): Only verify fixability of partition
12553         when in layout mode.
12554         (cfg_layout_finalize): Do not verify cfg before we are out of layout.
12555         * cfgcleanup.c (try_optimize_cfg): Only verify flow info when doing
12556         partition fixup.
12558 2018-01-10  Michael Collison  <michael.collison@arm.com>
12560         * config/aarch64/aarch64-modes.def (V2HF): New VECTOR_MODE.
12561         * config/aarch64/aarch64-option-extension.def: Add
12562         AARCH64_OPT_EXTENSION of 'fp16fml'.
12563         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
12564         (__ARM_FEATURE_FP16_FML): Define if TARGET_F16FML is true.
12565         * config/aarch64/predicates.md (aarch64_lane_imm3): New predicate.
12566         * config/aarch64/constraints.md (Ui7): New constraint.
12567         * config/aarch64/iterators.md (VFMLA_W): New mode iterator.
12568         (VFMLA_SEL_W): Ditto.
12569         (f16quad): Ditto.
12570         (f16mac1): Ditto.
12571         (VFMLA16_LOW): New int iterator.
12572         (VFMLA16_HIGH): Ditto.
12573         (UNSPEC_FMLAL): New unspec.
12574         (UNSPEC_FMLSL): Ditto.
12575         (UNSPEC_FMLAL2): Ditto.
12576         (UNSPEC_FMLSL2): Ditto.
12577         (f16mac): New code attribute.
12578         * config/aarch64/aarch64-simd-builtins.def
12579         (aarch64_fmlal_lowv2sf): Ditto.
12580         (aarch64_fmlsl_lowv2sf): Ditto.
12581         (aarch64_fmlalq_lowv4sf): Ditto.
12582         (aarch64_fmlslq_lowv4sf): Ditto.
12583         (aarch64_fmlal_highv2sf): Ditto.
12584         (aarch64_fmlsl_highv2sf): Ditto.
12585         (aarch64_fmlalq_highv4sf): Ditto.
12586         (aarch64_fmlslq_highv4sf): Ditto.
12587         (aarch64_fmlal_lane_lowv2sf): Ditto.
12588         (aarch64_fmlsl_lane_lowv2sf): Ditto.
12589         (aarch64_fmlal_laneq_lowv2sf): Ditto.
12590         (aarch64_fmlsl_laneq_lowv2sf): Ditto.
12591         (aarch64_fmlalq_lane_lowv4sf): Ditto.
12592         (aarch64_fmlsl_lane_lowv4sf): Ditto.
12593         (aarch64_fmlalq_laneq_lowv4sf): Ditto.
12594         (aarch64_fmlsl_laneq_lowv4sf): Ditto.
12595         (aarch64_fmlal_lane_highv2sf): Ditto.
12596         (aarch64_fmlsl_lane_highv2sf): Ditto.
12597         (aarch64_fmlal_laneq_highv2sf): Ditto.
12598         (aarch64_fmlsl_laneq_highv2sf): Ditto.
12599         (aarch64_fmlalq_lane_highv4sf): Ditto.
12600         (aarch64_fmlsl_lane_highv4sf): Ditto.
12601         (aarch64_fmlalq_laneq_highv4sf): Ditto.
12602         (aarch64_fmlsl_laneq_highv4sf): Ditto.
12603         * config/aarch64/aarch64-simd.md:
12604         (aarch64_fml<f16mac1>l<f16quad>_low<mode>): New pattern.
12605         (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
12606         (aarch64_simd_fml<f16mac1>l<f16quad>_low<mode>): Ditto.
12607         (aarch64_simd_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
12608         (aarch64_fml<f16mac1>l_lane_lowv2sf): Ditto.
12609         (aarch64_fml<f16mac1>l_lane_highv2sf): Ditto.
12610         (aarch64_simd_fml<f16mac>l_lane_lowv2sf): Ditto.
12611         (aarch64_simd_fml<f16mac>l_lane_highv2sf): Ditto.
12612         (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Ditto.
12613         (aarch64_fml<f16mac1>lq_laneq_highv4sf): Ditto.
12614         (aarch64_simd_fml<f16mac>lq_laneq_lowv4sf): Ditto.
12615         (aarch64_simd_fml<f16mac>lq_laneq_highv4sf): Ditto.
12616         (aarch64_fml<f16mac1>l_laneq_lowv2sf): Ditto.
12617         (aarch64_fml<f16mac1>l_laneq_highv2sf): Ditto.
12618         (aarch64_simd_fml<f16mac>l_laneq_lowv2sf): Ditto.
12619         (aarch64_simd_fml<f16mac>l_laneq_highv2sf): Ditto.
12620         (aarch64_fml<f16mac1>lq_lane_lowv4sf): Ditto.
12621         (aarch64_fml<f16mac1>lq_lane_highv4sf): Ditto.
12622         (aarch64_simd_fml<f16mac>lq_lane_lowv4sf): Ditto.
12623         (aarch64_simd_fml<f16mac>lq_lane_highv4sf): Ditto.
12624         * config/aarch64/arm_neon.h (vfmlal_low_u32): New intrinsic.
12625         (vfmlsl_low_u32): Ditto.
12626         (vfmlalq_low_u32): Ditto.
12627         (vfmlslq_low_u32): Ditto.
12628         (vfmlal_high_u32): Ditto.
12629         (vfmlsl_high_u32): Ditto.
12630         (vfmlalq_high_u32): Ditto.
12631         (vfmlslq_high_u32): Ditto.
12632         (vfmlal_lane_low_u32): Ditto.
12633         (vfmlsl_lane_low_u32): Ditto.
12634         (vfmlal_laneq_low_u32): Ditto.
12635         (vfmlsl_laneq_low_u32): Ditto.
12636         (vfmlalq_lane_low_u32): Ditto.
12637         (vfmlslq_lane_low_u32): Ditto.
12638         (vfmlalq_laneq_low_u32): Ditto.
12639         (vfmlslq_laneq_low_u32): Ditto.
12640         (vfmlal_lane_high_u32): Ditto.
12641         (vfmlsl_lane_high_u32): Ditto.
12642         (vfmlal_laneq_high_u32): Ditto.
12643         (vfmlsl_laneq_high_u32): Ditto.
12644         (vfmlalq_lane_high_u32): Ditto.
12645         (vfmlslq_lane_high_u32): Ditto.
12646         (vfmlalq_laneq_high_u32): Ditto.
12647         (vfmlslq_laneq_high_u32): Ditto.
12648         * config/aarch64/aarch64.h (AARCH64_FL_F16SML): New flag.
12649         (AARCH64_FL_FOR_ARCH8_4): New.
12650         (AARCH64_ISA_F16FML): New ISA flag.
12651         (TARGET_F16FML): New feature flag for fp16fml.
12652         (doc/invoke.texi): Document new fp16fml option.
12654 2018-01-10  Michael Collison  <michael.collison@arm.com>
12656         * config/aarch64/aarch64-builtins.c:
12657         (aarch64_types_ternopu_imm_qualifiers, TYPES_TERNOPUI): New.
12658         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
12659         (__ARM_FEATURE_SHA3): Define if TARGET_SHA3 is true.
12660         * config/aarch64/aarch64.h (AARCH64_FL_SHA3): New flags.
12661         (AARCH64_ISA_SHA3): New ISA flag.
12662         (TARGET_SHA3): New feature flag for sha3.
12663         * config/aarch64/iterators.md (sha512_op): New int attribute.
12664         (CRYPTO_SHA512): New int iterator.
12665         (UNSPEC_SHA512H): New unspec.
12666         (UNSPEC_SHA512H2): Ditto.
12667         (UNSPEC_SHA512SU0): Ditto.
12668         (UNSPEC_SHA512SU1): Ditto.
12669         * config/aarch64/aarch64-simd-builtins.def
12670         (aarch64_crypto_sha512hqv2di): New builtin.
12671         (aarch64_crypto_sha512h2qv2di): Ditto.
12672         (aarch64_crypto_sha512su0qv2di): Ditto.
12673         (aarch64_crypto_sha512su1qv2di): Ditto.
12674         (aarch64_eor3qv8hi): Ditto.
12675         (aarch64_rax1qv2di): Ditto.
12676         (aarch64_xarqv2di): Ditto.
12677         (aarch64_bcaxqv8hi): Ditto.
12678         * config/aarch64/aarch64-simd.md:
12679         (aarch64_crypto_sha512h<sha512_op>qv2di): New pattern.
12680         (aarch64_crypto_sha512su0qv2di): Ditto.
12681         (aarch64_crypto_sha512su1qv2di): Ditto.
12682         (aarch64_eor3qv8hi): Ditto.
12683         (aarch64_rax1qv2di): Ditto.
12684         (aarch64_xarqv2di): Ditto.
12685         (aarch64_bcaxqv8hi): Ditto.
12686         * config/aarch64/arm_neon.h (vsha512hq_u64): New intrinsic.
12687         (vsha512h2q_u64): Ditto.
12688         (vsha512su0q_u64): Ditto.
12689         (vsha512su1q_u64): Ditto.
12690         (veor3q_u16): Ditto.
12691         (vrax1q_u64): Ditto.
12692         (vxarq_u64): Ditto.
12693         (vbcaxq_u16): Ditto.
12694         * config/arm/types.md (crypto_sha512): New type attribute.
12695         (crypto_sha3): Ditto.
12696         (doc/invoke.texi): Document new sha3 option.
12698 2018-01-10  Michael Collison  <michael.collison@arm.com>
12700         * config/aarch64/aarch64-builtins.c:
12701         (aarch64_types_quadopu_imm_qualifiers, TYPES_QUADOPUI): New.
12702         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
12703         (__ARM_FEATURE_SM3): Define if TARGET_SM4 is true.
12704         (__ARM_FEATURE_SM4): Define if TARGET_SM4 is true.
12705         * config/aarch64/aarch64.h (AARCH64_FL_SM4): New flags.
12706         (AARCH64_ISA_SM4): New ISA flag.
12707         (TARGET_SM4): New feature flag for sm4.
12708         * config/aarch64/aarch64-simd-builtins.def
12709         (aarch64_sm3ss1qv4si): Ditto.
12710         (aarch64_sm3tt1aq4si): Ditto.
12711         (aarch64_sm3tt1bq4si): Ditto.
12712         (aarch64_sm3tt2aq4si): Ditto.
12713         (aarch64_sm3tt2bq4si): Ditto.
12714         (aarch64_sm3partw1qv4si): Ditto.
12715         (aarch64_sm3partw2qv4si): Ditto.
12716         (aarch64_sm4eqv4si): Ditto.
12717         (aarch64_sm4ekeyqv4si): Ditto.
12718         * config/aarch64/aarch64-simd.md:
12719         (aarch64_sm3ss1qv4si): Ditto.
12720         (aarch64_sm3tt<sm3tt_op>qv4si): Ditto.
12721         (aarch64_sm3partw<sm3part_op>qv4si): Ditto.
12722         (aarch64_sm4eqv4si): Ditto.
12723         (aarch64_sm4ekeyqv4si): Ditto.
12724         * config/aarch64/iterators.md (sm3tt_op): New int iterator.
12725         (sm3part_op): Ditto.
12726         (CRYPTO_SM3TT): Ditto.
12727         (CRYPTO_SM3PART): Ditto.
12728         (UNSPEC_SM3SS1): New unspec.
12729         (UNSPEC_SM3TT1A): Ditto.
12730         (UNSPEC_SM3TT1B): Ditto.
12731         (UNSPEC_SM3TT2A): Ditto.
12732         (UNSPEC_SM3TT2B): Ditto.
12733         (UNSPEC_SM3PARTW1): Ditto.
12734         (UNSPEC_SM3PARTW2): Ditto.
12735         (UNSPEC_SM4E): Ditto.
12736         (UNSPEC_SM4EKEY): Ditto.
12737         * config/aarch64/constraints.md (Ui2): New constraint.
12738         * config/aarch64/predicates.md (aarch64_imm2): New predicate.
12739         * config/arm/types.md (crypto_sm3): New type attribute.
12740         (crypto_sm4): Ditto.
12741         * config/aarch64/arm_neon.h (vsm3ss1q_u32): New intrinsic.
12742         (vsm3tt1aq_u32): Ditto.
12743         (vsm3tt1bq_u32): Ditto.
12744         (vsm3tt2aq_u32): Ditto.
12745         (vsm3tt2bq_u32): Ditto.
12746         (vsm3partw1q_u32): Ditto.
12747         (vsm3partw2q_u32): Ditto.
12748         (vsm4eq_u32): Ditto.
12749         (vsm4ekeyq_u32): Ditto.
12750         (doc/invoke.texi): Document new sm4 option.
12752 2018-01-10  Michael Collison  <michael.collison@arm.com>
12754         * config/aarch64/aarch64-arches.def (armv8.4-a): New architecture.
12755         * config/aarch64/aarch64.h (AARCH64_ISA_V8_4): New ISA flag.
12756         (AARCH64_FL_FOR_ARCH8_4): New.
12757         (AARCH64_FL_V8_4): New flag.
12758         (doc/invoke.texi): Document new armv8.4-a option.
12760 2018-01-10  Michael Collison  <michael.collison@arm.com>
12762         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
12763         (__ARM_FEATURE_AES): Define if TARGET_AES is true.
12764         (__ARM_FEATURE_SHA2): Define if TARGET_SHA2 is true.
12765         * config/aarch64/aarch64-option-extension.def: Add
12766         AARCH64_OPT_EXTENSION of 'sha2'.
12767         (aes): Add AARCH64_OPT_EXTENSION of 'aes'.
12768         (crypto): Disable sha2 and aes if crypto disabled.
12769         (crypto): Enable aes and sha2 if enabled.
12770         (simd): Disable sha2 and aes if simd disabled.
12771         * config/aarch64/aarch64.h (AARCH64_FL_AES, AARCH64_FL_SHA2):
12772         New flags.
12773         (AARCH64_ISA_AES, AARCH64_ISA_SHA2): New ISA flags.
12774         (TARGET_SHA2): New feature flag for sha2.
12775         (TARGET_AES): New feature flag for aes.
12776         * config/aarch64/aarch64-simd.md:
12777         (aarch64_crypto_aes<aes_op>v16qi): Make pattern
12778         conditional on TARGET_AES.
12779         (aarch64_crypto_aes<aesmc_op>v16qi): Ditto.
12780         (aarch64_crypto_sha1hsi): Make pattern conditional
12781         on TARGET_SHA2.
12782         (aarch64_crypto_sha1hv4si): Ditto.
12783         (aarch64_be_crypto_sha1hv4si): Ditto.
12784         (aarch64_crypto_sha1su1v4si): Ditto.
12785         (aarch64_crypto_sha1<sha1_op>v4si): Ditto.
12786         (aarch64_crypto_sha1su0v4si): Ditto.
12787         (aarch64_crypto_sha256h<sha256_op>v4si): Ditto.
12788         (aarch64_crypto_sha256su0v4si): Ditto.
12789         (aarch64_crypto_sha256su1v4si): Ditto.
12790         (doc/invoke.texi): Document new aes and sha2 options.
12792 2018-01-10  Martin Sebor  <msebor@redhat.com>
12794         PR tree-optimization/83781
12795         * gimple-fold.c (get_range_strlen): Avoid treating arrays of pointers
12796         as string arrays.
12798 2018-01-11  Martin Sebor  <msebor@gmail.com>
12799             Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
12801         PR tree-optimization/83501
12802         PR tree-optimization/81703
12804         * tree-ssa-strlen.c (get_string_cst): Rename...
12805         (get_string_len): ...to this.  Handle global constants.
12806         (handle_char_store): Adjust.
12808 2018-01-10  Kito Cheng  <kito.cheng@gmail.com>
12809             Jim Wilson  <jimw@sifive.com>
12811         * config/riscv/riscv-protos.h (riscv_output_return): New.
12812         * config/riscv/riscv.c (struct machine_function): New naked_p field.
12813         (riscv_attribute_table, riscv_output_return),
12814         (riscv_handle_fndecl_attribute, riscv_naked_function_p),
12815         (riscv_allocate_stack_slots_for_args, riscv_warn_func_return): New.
12816         (riscv_compute_frame_info): Only compute frame->mask if not a naked
12817         function.
12818         (riscv_expand_prologue): Add early return for naked function.
12819         (riscv_expand_epilogue): Likewise.
12820         (riscv_function_ok_for_sibcall): Return false for naked function.
12821         (riscv_set_current_function): New.
12822         (TARGET_SET_CURRENT_FUNCTION, TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS),
12823         (TARGET_ATTRIBUTE_TABLE, TARGET_WARN_FUNC_RETURN): New.
12824         * config/riscv/riscv.md (simple_return): Call riscv_output_return.
12825         * doc/extend.texi (RISC-V Function Attributes): New.
12827 2018-01-10  Michael Meissner  <meissner@linux.vnet.ibm.com>
12829         * config/rs6000/rs6000.c (is_complex_IBM_long_double): Explicitly
12830         check for 128-bit long double before checking TCmode.
12831         * config/rs6000/rs6000.h (FLOAT128_IEEE_P): Explicitly check for
12832         128-bit long doubles before checking TFmode or TCmode.
12833         (FLOAT128_IBM_P): Likewise.
12835 2018-01-10  Martin Sebor  <msebor@redhat.com>
12837         PR tree-optimization/83671
12838         * builtins.c (c_strlen): Unconditionally return zero for the empty
12839         string.
12840         Use -Warray-bounds for warnings.
12841         * gimple-fold.c (get_range_strlen): Handle non-constant lengths
12842         for non-constant array indices with COMPONENT_REF, arrays of
12843         arrays, and pointers to arrays.
12844         (gimple_fold_builtin_strlen): Determine and set length range for
12845         non-constant character arrays.
12847 2018-01-10  Aldy Hernandez  <aldyh@redhat.com>
12849         PR middle-end/81897
12850         * tree-ssa-uninit.c (convert_control_dep_chain_into_preds): Skip
12851         empty blocks.
12853 2018-01-10  Eric Botcazou  <ebotcazou@adacore.com>
12855         * dwarf2out.c (dwarf2out_var_location): Do not pass NULL to fprintf.
12857 2018-01-10  Peter Bergner  <bergner@vnet.ibm.com>
12859         PR target/83399
12860         * config/rs6000/rs6000.c (print_operand) <'y'>: Use
12861         VECTOR_MEM_ALTIVEC_OR_VSX_P.
12862         * config/rs6000/vsx.md (*vsx_le_perm_load_<mode> for VSX_D): Use
12863         indexed_or_indirect_operand predicate.
12864         (*vsx_le_perm_load_<mode> for VSX_W): Likewise.
12865         (*vsx_le_perm_load_v8hi): Likewise.
12866         (*vsx_le_perm_load_v16qi): Likewise.
12867         (*vsx_le_perm_store_<mode> for VSX_D): Likewise.
12868         (*vsx_le_perm_store_<mode> for VSX_W): Likewise.
12869         (*vsx_le_perm_store_v8hi): Likewise.
12870         (*vsx_le_perm_store_v16qi): Likewise.
12871         (eight unnamed splitters): Likewise.
12873 2018-01-10  Peter Bergner  <bergner@vnet.ibm.com>
12875         * config/rs6000/x86intrin.h: Change #warning to #error. Update message.
12876         * config/rs6000/emmintrin.h: Likewise.
12877         * config/rs6000/mmintrin.h: Likewise.
12878         * config/rs6000/xmmintrin.h: Likewise.
12880 2018-01-10  David Malcolm  <dmalcolm@redhat.com>
12882         PR c++/43486
12883         * tree-core.h: Document EXPR_LOCATION_WRAPPER_P's usage of
12884         "public_flag".
12885         * tree.c (tree_nop_conversion): Return true for location wrapper
12886         nodes.
12887         (maybe_wrap_with_location): New function.
12888         (selftest::check_strip_nops): New function.
12889         (selftest::test_location_wrappers): New function.
12890         (selftest::tree_c_tests): Call it.
12891         * tree.h (STRIP_ANY_LOCATION_WRAPPER): New macro.
12892         (maybe_wrap_with_location): New decl.
12893         (EXPR_LOCATION_WRAPPER_P): New macro.
12894         (location_wrapper_p): New inline function.
12895         (tree_strip_any_location_wrapper): New inline function.
12897 2018-01-10  H.J. Lu  <hongjiu.lu@intel.com>
12899         PR target/83735
12900         * config/i386/i386.c (ix86_compute_frame_layout): Always adjust
12901         stack_realign_offset for the largest alignment of stack slot
12902         actually used.
12903         (ix86_find_max_used_stack_alignment): New function.
12904         (ix86_finalize_stack_frame_flags): Use it.  Set
12905         max_used_stack_alignment if we don't realign stack.
12906         * config/i386/i386.h (machine_function): Add
12907         max_used_stack_alignment.
12909 2018-01-10  Christophe Lyon  <christophe.lyon@linaro.org>
12911         * config/arm/arm.opt (-mbranch-cost): New option.
12912         * config/arm/arm.h (BRANCH_COST): Take arm_branch_cost into
12913         account.
12915 2018-01-10  Segher Boessenkool  <segher@kernel.crashing.org>
12917         PR target/83629
12918         * config/rs6000/rs6000.md (load_toc_v4_PIC_2, load_toc_v4_PIC_3b,
12919         load_toc_v4_PIC_3c): Wrap const term in CONST RTL.
12921 2018-01-10  Richard Biener  <rguenther@suse.de>
12923         PR debug/83765
12924         * dwarf2out.c (gen_subprogram_die): Hoist old_die && declaration
12925         early out so it also covers the case where we have a non-NULL
12926         origin.
12928 2018-01-10  Richard Sandiford  <richard.sandiford@linaro.org>
12930         PR tree-optimization/83753
12931         * tree-vect-stmts.c (get_group_load_store_type): Use VMAT_CONTIGUOUS
12932         for non-strided grouped accesses if the number of elements is 1.
12934 2018-01-10  Jan Hubicka  <hubicka@ucw.cz>
12936         PR target/81616
12937         * i386.c (ix86_vectorize_builtin_gather): Check TARGET_USE_GATHER.
12938         * i386.h (TARGET_USE_GATHER): Define.
12939         * x86-tune.def (X86_TUNE_USE_GATHER): New.
12941 2018-01-10  Martin Liska  <mliska@suse.cz>
12943         PR bootstrap/82831
12944         * basic-block.h (CLEANUP_NO_PARTITIONING): New define.
12945         * bb-reorder.c (pass_reorder_blocks::execute): Do not clean up
12946         partitioning.
12947         * cfgcleanup.c (try_optimize_cfg): Fix up partitioning if
12948         CLEANUP_NO_PARTITIONING is not set.
12950 2018-01-10  Richard Sandiford  <richard.sandiford@linaro.org>
12952         * doc/rtl.texi: Remove documentation of (const ...) wrappers
12953         for vectors, as a partial revert of r254296.
12954         * rtl.h (const_vec_p): Delete.
12955         (const_vec_duplicate_p): Don't test for vector CONSTs.
12956         (unwrap_const_vec_duplicate, const_vec_series_p): Likewise.
12957         * expmed.c (make_tree): Likewise.
12959         Revert:
12960         * common.md (E, F): Use CONSTANT_P instead of checking for
12961         CONST_VECTOR.
12962         * emit-rtl.c (gen_lowpart_common): Use const_vec_p instead of
12963         checking for CONST_VECTOR.
12965 2018-01-09  Jan Hubicka  <hubicka@ucw.cz>
12967         PR middle-end/83575
12968         * predict.c (force_edge_cold): Handle in more sane way edges
12969         with no prediction.
12971 2018-01-09  Carl Love  <cel@us.ibm.com>
12973         * config/rs6002/altivec.md (p8_vmrgow): Add support for V2DI, V2DF,
12974         V4SI, V4SF types.
12975         (p8_vmrgew): Add support for V2DI, V2DF, V4SF types.
12976         * config/rs6000/rs6000-builtin.def: Add definitions for FLOAT2_V2DF,
12977         VMRGEW_V2DI, VMRGEW_V2DF, VMRGEW_V4SF, VMRGOW_V4SI, VMRGOW_V4SF,
12978         VMRGOW_V2DI, VMRGOW_V2DF.  Remove definition for VMRGOW.
12979         * config/rs6000/rs6000-c.c (VSX_BUILTIN_VEC_FLOAT2,
12980         P8V_BUILTIN_VEC_VMRGEW, P8V_BUILTIN_VEC_VMRGOW):  Add definitions.
12981         * config/rs6000/rs6000-protos.h: Add extern defition for
12982         rs6000_generate_float2_double_code.
12983         * config/rs6000/rs6000.c (rs6000_generate_float2_double_code): Add
12984         function.
12985         * config/rs6000/vsx.md (vsx_xvcdpsp): Add define_insn.
12986         (float2_v2df): Add define_expand.
12988 2018-01-09  Uros Bizjak  <ubizjak@gmail.com>
12990         PR target/83628
12991         * combine.c (force_int_to_mode) <case ASHIFT>: Use mode instead of
12992         op_mode in the force_to_mode call.
12994 2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
12996         * config/aarch64/aarch64.c (aarch64_evpc_trn): Use d.perm.series_p
12997         instead of checking each element individually.
12998         (aarch64_evpc_uzp): Likewise.
12999         (aarch64_evpc_zip): Likewise.
13000         (aarch64_evpc_ext): Likewise.
13001         (aarch64_evpc_rev): Likewise.
13002         (aarch64_evpc_dup): Test the encoding for a single duplicated element,
13003         instead of checking each element individually.  Return true without
13004         generating rtl if
13005         (aarch64_vectorize_vec_perm_const): Use all_from_input_p to test
13006         whether all selected elements come from the same input, instead of
13007         checking each element individually.  Remove calls to gen_rtx_REG,
13008         start_sequence and end_sequence and instead assert that no rtl is
13009         generated.
13011 2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
13013         * config/aarch64/aarch64.c (aarch64_legitimate_constant_p): Fix
13014         order of HIGH and CONST checks.
13016 2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
13018         * tree-vect-stmts.c (permute_vec_elements): Create a fresh variable
13019         if the destination isn't an SSA_NAME.
13021 2018-01-09  Richard Biener  <rguenther@suse.de>
13023         PR tree-optimization/83668
13024         * graphite.c (canonicalize_loop_closed_ssa): Add edge argument,
13025         move prologue...
13026         (canonicalize_loop_form): ... here, renamed from ...
13027         (canonicalize_loop_closed_ssa_form): ... this and amended to
13028         swap successor edges for loop exit blocks to make us use
13029         the RPO order we need for initial schedule generation.
13031 2018-01-09  Joseph Myers  <joseph@codesourcery.com>
13033         PR tree-optimization/64811
13034         * match.pd: When optimizing comparisons with Inf, avoid
13035         introducing or losing exceptions from comparisons with NaN.
13037 2018-01-09  Martin Liska  <mliska@suse.cz>
13039         PR sanitizer/82517
13040         * asan.c (shadow_mem_size): Add gcc_assert.
13042 2018-01-09  Georg-Johann Lay  <avr@gjlay.de>
13044         Don't save registers in main().
13046         PR target/83738
13047         * doc/invoke.texi (AVR Options) [-mmain-is-OS_task]: Document it.
13048         * config/avr/avr.opt (-mmain-is-OS_task): New target option.
13049         * config/avr/avr.c (avr_set_current_function): Don't error if
13050         naked, OS_task or OS_main are specified at the same time.
13051         (avr_function_ok_for_sibcall): Don't disable sibcalls for OS_task,
13052         OS_main.
13053         (avr_insert_attributes) [-mmain-is-OS_task] <main>: Add OS_task
13054         attribute.
13055         * common/config/avr/avr-common.c (avr_option_optimization_table):
13056         Switch on -mmain-is-OS_task for optimizing compilations.
13058 2018-01-09  Richard Biener  <rguenther@suse.de>
13060         PR tree-optimization/83572
13061         * graphite.c: Include cfganal.h.
13062         (graphite_transform_loops): Connect infinite loops to exit
13063         and remove fake edges at the end.
13065 2018-01-09  Jan Hubicka  <hubicka@ucw.cz>
13067         * ipa-inline.c (edge_badness): Revert accidental checkin.
13069 2018-01-09  Jan Hubicka  <hubicka@ucw.cz>
13071         PR ipa/80763
13072         * ipa-comdats.c (set_comdat_group): Only set comdat group of real
13073         symbols; not inline clones.
13075 2018-01-09  Jakub Jelinek  <jakub@redhat.com>
13077         PR target/83507
13078         * modulo-sched.c (schedule_reg_moves): Punt if we'd need to move
13079         hard registers.  Formatting fixes.
13081         PR preprocessor/83722
13082         * gcc.c (try_generate_repro): Pass
13083         &temp_stderr_files[RETRY_ICE_ATTEMPTS - 1] rather than
13084         &temp_stdout_files[RETRY_ICE_ATTEMPTS - 1] as last argument to
13085         do_report_bug.
13087 2018-01-08  Monk Chiang  <sh.chiang04@gmail.com>
13088             Kito Cheng  <kito.cheng@gmail.com>
13090         * config/riscv/riscv.c (machine_function::is_leaf): Remove field.
13091         (riscv_leaf_function_p): Delete.
13092         (riscv_function_ok_for_sibcall): Return false when TARGET_SAVE_RESTORE.
13094 2018-01-08  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
13096         * config/rs6000/rs6000-string.c (do_load_for_compare_from_addr): New
13097         function.
13098         (do_ifelse): New function.
13099         (do_isel): New function.
13100         (do_sub3): New function.
13101         (do_add3): New function.
13102         (do_load_mask_compare): New function.
13103         (do_overlap_load_compare): New function.
13104         (expand_compare_loop): New function.
13105         (expand_block_compare): Call expand_compare_loop() when appropriate.
13106         * config/rs6000/rs6000.opt (-mblock-compare-inline-limit): Change
13107         option description.
13108         (-mblock-compare-inline-loop-limit): New option.
13110 2018-01-08  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
13112         PR target/83677
13113         * config/rs6000/altivec.md (*altivec_vpermr_<mode>_internal):
13114         Reverse order of second and third operands in first alternative.
13115         * config/rs6000/rs6000.c (rs6000_expand_vector_set): Reverse order
13116         of first and second elements in UNSPEC_VPERMR vector.
13117         (altivec_expand_vec_perm_le): Likewise.
13119 2018-01-08  Jeff Law  <law@redhat.com>
13121         PR rtl-optimizatin/81308
13122         * tree-switch-conversion.c (cfg_altered): New file scoped static.
13123         (process_switch): If group_case_labels makes a change, then set
13124         cfg_altered.
13125         (pass_convert_switch::execute): If a switch is converted, then
13126         set cfg_altered.  Return TODO_cfg_cleanup if cfg_altered is true.
13128         PR rtl-optimization/81308
13129         * recog.c (split_all_insns): Conditionally cleanup the CFG after
13130         splitting insns.
13132 2018-01-08  Vidya Praveen  <vidyapraveen@arm.com>
13134         PR target/83663 - Revert r255946
13135         * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify code
13136         generation for cases where splatting a value is not useful.
13137         * simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge
13138         across a vec_duplicate and a paradoxical subreg forming a vector
13139         mode to a vec_concat.
13141 2018-01-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
13143         * config/arm/t-aprofile (MULTILIB_MATCHES): Add mapping rules for
13144         -march=armv8.3-a variants.
13145         * config/arm/t-multilib: Likewise.
13146         * config/arm/t-arm-elf: Likewise.  Handle dotprod extension.
13148 2018-01-08  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
13150         * config/rs6000/rs6000.md (cceq_ior_compare): Remove * so I can use it
13151         to generate rtl.
13152         (cceq_ior_compare_complement): Give it a name so I can use it, and
13153         change boolean_or_operator predicate to boolean_operator so it can
13154         be used to generate a crand.
13155         (eqne): New code iterator.
13156         (bd/bd_neg): New code_attrs.
13157         (<bd>_<mode>): New name for ctr<mode>_internal[12] now combined into
13158         a single define_insn.
13159         (<bd>tf_<mode>): A new insn pattern for the conditional form branch
13160         decrement (bdnzt/bdnzf/bdzt/bdzf).
13161         * config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Updated
13162         with the new names of the branch decrement patterns, and added the
13163         names of the branch decrement conditional patterns.
13165 2018-01-08  Richard Biener  <rguenther@suse.de>
13167         PR tree-optimization/83563
13168         * graphite.c (canonicalize_loop_closed_ssa_form): Reset the SCEV
13169         cache.
13171 2018-01-08  Richard Biener  <rguenther@suse.de>
13173         PR middle-end/83713
13174         * convert.c (do_narrow): Properly guard TYPE_OVERFLOW_WRAPS checks.
13176 2018-01-08  Richard Biener  <rguenther@suse.de>
13178         PR tree-optimization/83685
13179         * tree-ssa-pre.c (create_expression_by_pieces): Do not insert
13180         references to abnormals.
13182 2018-01-08  Richard Biener  <rguenther@suse.de>
13184         PR lto/83719
13185         * dwarf2out.c (output_indirect_strings): Handle empty
13186         skeleton_debug_str_hash.
13187         (dwarf2out_early_finish): Index strings for -gsplit-dwarf.
13189 2018-01-08  Claudiu Zissulescu  <claziss@synopsys.com>
13191         * config/arc/arc.c (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Delete.
13192         (emit_store_direct): Likewise.
13193         (arc_trampoline_adjust_address): Likewise.
13194         (arc_asm_trampoline_template): New function.
13195         (arc_initialize_trampoline): Use asm_trampoline_template.
13196         (TARGET_ASM_TRAMPOLINE_TEMPLATE): Define.
13197         * config/arc/arc.h (TRAMPOLINE_SIZE): Adjust to 16.
13198         * config/arc/arc.md (flush_icache): Delete pattern.
13200 2018-01-08  Claudiu Zissulescu  <claziss@synopsys.com>
13202         * config/arc/arc-c.def (__ARC_UNALIGNED__): New define.
13203         * config/arc/arc.h (STRICT_ALIGNMENT): Control this macro using
13204         munaligned-access.
13206 2018-01-08  Sebastian Huber  <sebastian.huber@embedded-brains.de>
13208         PR target/83681
13209         * config/epiphany/epiphany.h (make_pass_mode_switch_use): Guard
13210         by not USED_FOR_TARGET.
13211         (make_pass_resolve_sw_modes): Likewise.
13213 2018-01-08  Sebastian Huber  <sebastian.huber@embedded-brains.de>
13215         * config/nios2/nios2.h (nios2_section_threshold): Guard by not
13216         USED_FOR_TARGET.
13218 2018-01-08  Richard Biener  <rguenther@suse.de>
13220         PR middle-end/83580
13221         * tree-data-ref.c (split_constant_offset): Remove STRIP_NOPS.
13223 2018-01-08  Richard Biener  <rguenther@suse.de>
13225         PR middle-end/83517
13226         * match.pd ((t * 2) / 2) -> t): Add missing :c.
13228 2018-01-06  Aldy Hernandez  <aldyh@redhat.com>
13230         PR middle-end/81897
13231         * tree-ssa-uninit.c (compute_control_dep_chain): Do not bail on
13232         basic blocks with a small number of successors.
13233         (convert_control_dep_chain_into_preds): Improve handling of
13234         forwarder blocks.
13235         (dump_predicates): Split apart into...
13236         (dump_pred_chain): ...here...
13237         (dump_pred_info): ...and here.
13238         (can_one_predicate_be_invalidated_p): Add debugging printfs.
13239         (can_chain_union_be_invalidated_p): Improve check for invalidation
13240         of paths.
13241         (uninit_uses_cannot_happen): Avoid unnecessary if
13242         convert_control_dep_chain_into_preds yielded nothing.
13244 2018-01-06  Martin Sebor  <msebor@redhat.com>
13246         PR tree-optimization/83640
13247         * gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Avoid
13248         subtracting negative offset from size.
13249         (builtin_access::overlap): Adjust offset bounds of the access to fall
13250         within the size of the object if possible.
13252 2018-01-06  Richard Sandiford  <richard.sandiford@linaro.org>
13254         PR rtl-optimization/83699
13255         * expmed.c (extract_bit_field_1): Restrict the vector usage of
13256         extract_bit_field_as_subreg to cases in which the extracted
13257         value is also a vector.
13259         * lra-constraints.c (process_alt_operands): Test for the equivalence
13260         substitutions when detecting a possible reload cycle.
13262 2018-01-06  Jakub Jelinek  <jakub@redhat.com>
13264         PR debug/83480
13265         * toplev.c (process_options): Don't enable debug_nonbind_markers_p
13266         by default if flag_selective_schedling{,2}.  Formatting fixes.
13268         PR rtl-optimization/83682
13269         * rtl.h (const_vec_duplicate_p): Only return true for VEC_DUPLICATE
13270         if it has non-VECTOR_MODE element mode.
13271         (vec_duplicate_p): Likewise.
13273         PR middle-end/83694
13274         * cfgexpand.c (expand_debug_expr): Punt if mode1 is VOIDmode
13275         and bitsize might be greater than MAX_BITSIZE_MODE_ANY_INT.
13277 2018-01-05  Jakub Jelinek  <jakub@redhat.com>
13279         PR target/83604
13280         * config/i386/i386-builtin.def
13281         (__builtin_ia32_vgf2p8affineinvqb_v64qi,
13282         __builtin_ia32_vgf2p8affineqb_v64qi, __builtin_ia32_vgf2p8mulb_v64qi):
13283         Require also OPTION_MASK_ISA_AVX512F in addition to
13284         OPTION_MASK_ISA_GFNI.
13285         (__builtin_ia32_vgf2p8affineinvqb_v16qi_mask,
13286         __builtin_ia32_vgf2p8affineqb_v16qi_mask): Require
13287         OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_SSE in addition
13288         to OPTION_MASK_ISA_GFNI.
13289         (__builtin_ia32_vgf2p8mulb_v32qi_mask): Require
13290         OPTION_MASK_ISA_AVX512VL in addition to OPTION_MASK_ISA_GFNI and
13291         OPTION_MASK_ISA_AVX512BW.
13292         (__builtin_ia32_vgf2p8mulb_v16qi_mask): Require
13293         OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_AVX512BW in
13294         addition to OPTION_MASK_ISA_GFNI.
13295         (__builtin_ia32_vgf2p8affineinvqb_v16qi,
13296         __builtin_ia32_vgf2p8affineqb_v16qi, __builtin_ia32_vgf2p8mulb_v16qi):
13297         Require OPTION_MASK_ISA_SSE2 instead of OPTION_MASK_ISA_SSE in addition
13298         to OPTION_MASK_ISA_GFNI.
13299         * config/i386/i386.c (def_builtin): Change to builtin isa/isa2 being
13300         a requirement for all ISAs rather than any of them with a few
13301         exceptions.
13302         (ix86_add_new_builtins): Clear OPTION_MASK_ISA_64BIT from isa before
13303         processing.
13304         (ix86_expand_builtin): Require all ISAs from builtin's isa and isa2
13305         bitmasks to be enabled with 3 exceptions, instead of requiring any
13306         enabled ISA with lots of exceptions.
13307         * config/i386/sse.md (vgf2p8affineinvqb_<mode><mask_name>,
13308         vgf2p8affineqb_<mode><mask_name>, vgf2p8mulb_<mode><mask_name>):
13309         Change avx512bw in isa attribute to avx512f.
13310         * config/i386/sgxintrin.h: Add license boilerplate.
13311         * config/i386/vaesintrin.h: Likewise.  Fix macro spelling __AVX512F
13312         to __AVX512F__ and __AVX512VL to __AVX512VL__.
13313         (_mm256_aesdec_epi128, _mm256_aesdeclast_epi128, _mm256_aesenc_epi128,
13314         _mm256_aesenclast_epi128): Enable temporarily avx if __AVX__ is not
13315         defined.
13316         * config/i386/gfniintrin.h (_mm_gf2p8mul_epi8,
13317         _mm_gf2p8affineinv_epi64_epi8, _mm_gf2p8affine_epi64_epi8): Enable
13318         temporarily sse2 rather than sse if not enabled already.
13320         PR target/83604
13321         * config/i386/sse.md (VI248_VLBW): Rename to ...
13322         (VI248_AVX512VL): ... this.  Don't guard V32HI with TARGET_AVX512BW.
13323         (vpshrd_<mode><mask_name>, vpshld_<mode><mask_name>,
13324         vpshrdv_<mode>, vpshrdv_<mode>_mask, vpshrdv_<mode>_maskz,
13325         vpshrdv_<mode>_maskz_1, vpshldv_<mode>, vpshldv_<mode>_mask,
13326         vpshldv_<mode>_maskz, vpshldv_<mode>_maskz_1): Use VI248_AVX512VL
13327         mode iterator instead of VI248_VLBW.
13329 2018-01-05  Jan Hubicka  <hubicka@ucw.cz>
13331         * ipa-fnsummary.c (record_modified_bb_info): Add OP.
13332         (record_modified): Skip clobbers; add debug output.
13333         (param_change_prob): Use sreal frequencies.
13335 2018-01-05  Richard Sandiford  <richard.sandiford@linaro.org>
13337         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Don't
13338         punt for user-aligned variables.
13340 2018-01-05  Richard Sandiford  <richard.sandiford@linaro.org>
13342         * tree-chrec.c (chrec_contains_symbols): Return true for
13343         POLY_INT_CST.
13345 2018-01-05  Sudakshina Das  <sudi.das@arm.com>
13347         PR target/82439
13348         * simplify-rtx.c (simplify_relational_operation_1): Add simplifications
13349         of (x|y) == x for BICS pattern.
13351 2018-01-05  Jakub Jelinek  <jakub@redhat.com>
13353         PR tree-optimization/83605
13354         * gimple-ssa-strength-reduction.c: Include tree-eh.h.
13355         (find_candidates_dom_walker::before_dom_children): Ignore stmts that
13356         can throw.
13358 2018-01-05  Sebastian Huber  <sebastian.huber@embedded-brains.de>
13360         * config.gcc (epiphany-*-elf*): Add (epiphany-*-rtems*) configuration.
13361         * config/epiphany/rtems.h: New file.
13363 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
13364             Uros Bizjak  <ubizjak@gmail.com>
13366         PR target/83554
13367         * config/i386/i386.md (*<rotate_insn>hi3_1 splitter): Use
13368         QIreg_operand instead of register_operand predicate.
13369         * config/i386/i386.c (ix86_rop_should_change_byte_p,
13370         set_rop_modrm_reg_bits, ix86_mitigate_rop): Use -mmitigate-rop in
13371         comments instead of -fmitigate[-_]rop.
13373 2018-01-04  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
13375         PR bootstrap/81926
13376         * cgraphunit.c (symbol_table::compile): Switch to text_section
13377         before calling assembly_start debug hook.
13378         * run-rtl-passes.c (run_rtl_passes): Likewise.
13379         Include output.h.
13381 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
13383         * tree-vrp.c (extract_range_from_binary_expr_1): Check
13384         range_int_cst_p rather than !symbolic_range_p before calling
13385         extract_range_from_multiplicative_op_1.
13387 2018-01-04  Jeff Law  <law@redhat.com>
13389         * tree-ssa-math-opts.c (execute_cse_reciprocals_1): Remove
13390         redundant test in assertion.
13392 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
13394         * doc/rtl.texi: Document machine_mode wrapper classes.
13396 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
13398         * fold-const.c (fold_ternary_loc): Check tree_fits_uhwi_p before
13399         using tree_to_uhwi.
13401 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
13403         * tree-ssa-forwprop.c (is_combined_permutation_identity): Allow
13404         the VEC_PERM_EXPR fold to fail.
13406 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
13408         PR debug/83585
13409         * bb-reorder.c (insert_section_boundary_note): Set has_bb_partition
13410         to switched_sections.
13412 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
13414         PR target/83680
13415         * config/arm/arm.c (arm_vectorize_vec_perm_const): Fix inverted
13416         test for d.testing.
13418 2018-01-04  Peter Bergner  <bergner@vnet.ibm.com>
13420         PR target/83387
13421         * config/rs6000/rs6000.c (rs6000_discover_homogeneous_aggregate): Do not
13422         allow arguments in FP registers if TARGET_HARD_FLOAT is false.
13424 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
13426         PR debug/83666
13427         * cfgexpand.c (expand_debug_expr) <case BIT_FIELD_REF>: Punt if mode
13428         is BLKmode and bitpos not zero or mode change is needed.
13430 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
13432         PR target/83675
13433         * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): Require
13434         TARGET_VIS2.
13436 2018-01-04  Uros Bizjak  <ubizjak@gmail.com>
13438         PR target/83628
13439         * config/alpha/alpha.md (*sadd<modesuffix>): Use ASHIFT
13440         instead of MULT rtx.  Update all corresponding splitters.
13441         (*saddl_se): Ditto.
13442         (*ssub<modesuffix>): Ditto.
13443         (*ssubl_se): Ditto.
13444         (*cmp_sadd_di): Update split patterns.
13445         (*cmp_sadd_si): Ditto.
13446         (*cmp_sadd_sidi): Ditto.
13447         (*cmp_ssub_di): Ditto.
13448         (*cmp_ssub_si): Ditto.
13449         (*cmp_ssub_sidi): Ditto.
13450         * config/alpha/predicates.md (const23_operand): New predicate.
13451         * config/alpha/alpha.c (alpha_rtx_costs) [PLUS, MINUS]:
13452         Look for ASHIFT, not MULT inner operand.
13453         (alpha_split_conditional_move): Update for *sadd<modesuffix> change.
13455 2018-01-04  Martin Liska  <mliska@suse.cz>
13457         PR gcov-profile/83669
13458         * gcov.c (output_intermediate_file): Add version to intermediate
13459         gcov file.
13460         * doc/gcov.texi: Document new field 'version' in intermediate
13461         file format. Fix location of '-k' option of gcov command.
13463 2018-01-04  Martin Liska  <mliska@suse.cz>
13465         PR ipa/82352
13466         * ipa-icf.c (sem_function::merge): Do not cross comdat boundary.
13468 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
13470         * gimple-ssa-sprintf.c (parse_directive): Cast second dir.len to uhwi.
13472 2018-01-03  Martin Sebor  <msebor@redhat.com>
13474         PR tree-optimization/83655
13475         * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call): Avoid
13476         checking calls with invalid arguments.
13478 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13480         * tree-vect-stmts.c (vect_get_store_rhs): New function.
13481         (vectorizable_mask_load_store): Delete.
13482         (vectorizable_call): Return false for masked loads and stores.
13483         (vectorizable_store): Handle IFN_MASK_STORE.  Use vect_get_store_rhs
13484         instead of gimple_assign_rhs1.
13485         (vectorizable_load): Handle IFN_MASK_LOAD.
13486         (vect_transform_stmt): Don't set is_store for call_vec_info_type.
13488 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13490         * tree-vect-stmts.c (vect_build_gather_load_calls): New function,
13491         split out from..,
13492         (vectorizable_mask_load_store): ...here.
13493         (vectorizable_load): ...and here.
13495 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13497         * tree-vect-stmts.c (vect_build_all_ones_mask)
13498         (vect_build_zero_merge_argument): New functions, split out from...
13499         (vectorizable_load): ...here.
13501 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13503         * tree-vect-stmts.c (vect_check_store_rhs): New function,
13504         split out from...
13505         (vectorizable_mask_load_store): ...here.
13506         (vectorizable_store): ...and here.
13508 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13510         * tree-vect-stmts.c (vect_check_load_store_mask): New function,
13511         split out from...
13512         (vectorizable_mask_load_store): ...here.
13514 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13516         * tree-vectorizer.h (vec_load_store_type): Moved from tree-vec-stmts.c
13517         (vect_model_store_cost): Take a vec_load_store_type instead of a
13518         vect_def_type.
13519         * tree-vect-stmts.c (vec_load_store_type): Move to tree-vectorizer.h.
13520         (vect_model_store_cost): Take a vec_load_store_type instead of a
13521         vect_def_type.
13522         (vectorizable_mask_load_store): Update accordingly.
13523         (vectorizable_store): Likewise.
13524         * tree-vect-slp.c (vect_analyze_slp_cost_1): Update accordingly.
13526 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13528         * tree-vect-loop.c (vect_transform_loop): Stub out scalar
13529         IFN_MASK_LOAD calls here rather than...
13530         * tree-vect-stmts.c (vectorizable_mask_load_store): ...here.
13532 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13533             Alan Hayward  <alan.hayward@arm.com>
13534             David Sherwood  <david.sherwood@arm.com>
13536         * expmed.c (extract_bit_field_1): For vector extracts,
13537         fall back to extract_bit_field_as_subreg if vec_extract
13538         isn't available.
13540 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13541             Alan Hayward  <alan.hayward@arm.com>
13542             David Sherwood  <david.sherwood@arm.com>
13544         * lra-spills.c (pseudo_reg_slot_compare): Sort slots by whether
13545         they are variable or constant sized.
13546         (assign_stack_slot_num_and_sort_pseudos): Don't reuse variable-sized
13547         slots for constant-sized data.
13549 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13550             Alan Hayward  <alan.hayward@arm.com>
13551             David Sherwood  <david.sherwood@arm.com>
13553         * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): When
13554         handling COND_EXPRs with boolean comparisons, try to find a better
13555         basis for the mask type than the boolean itself.
13557 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13559         * doc/rtl.texi (MAX_BITSIZE_MODE_ANY_MODE): Describe how the default
13560         is calculated and how it can be overridden.
13561         * genmodes.c (max_bitsize_mode_any_mode): New variable.
13562         (create_modes): Initialize it from MAX_BITSIZE_MODE_ANY_MODE,
13563         if defined.
13564         (emit_max_int): Use it to set the output MAX_BITSIZE_MODE_ANY_MODE,
13565         if nonzero.
13567 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13568             Alan Hayward  <alan.hayward@arm.com>
13569             David Sherwood  <david.sherwood@arm.com>
13571         * config/aarch64/aarch64-protos.h (aarch64_output_simd_mov_immediate):
13572         Remove the mode argument.
13573         (aarch64_simd_valid_immediate): Remove the mode and inverse
13574         arguments.
13575         * config/aarch64/iterators.md (bitsize): New iterator.
13576         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>, and<mode>3)
13577         (ior<mode>3): Update calls to aarch64_output_simd_mov_immediate.
13578         * config/aarch64/constraints.md (Do, Db, Dn): Update calls to
13579         aarch64_simd_valid_immediate.
13580         * config/aarch64/predicates.md (aarch64_reg_or_orr_imm): Likewise.
13581         (aarch64_reg_or_bic_imm): Likewise.
13582         * config/aarch64/aarch64.c (simd_immediate_info): Replace mvn
13583         with an insn_type enum and msl with a modifier_type enum.
13584         Replace element_width with a scalar_mode.  Change the shift
13585         to unsigned int.  Add constructors for scalar_float_mode and
13586         scalar_int_mode elements.
13587         (aarch64_vect_float_const_representable_p): Delete.
13588         (aarch64_can_const_movi_rtx_p)
13589         (aarch64_simd_scalar_immediate_valid_for_move)
13590         (aarch64_simd_make_constant): Update call to
13591         aarch64_simd_valid_immediate.
13592         (aarch64_advsimd_valid_immediate_hs): New function.
13593         (aarch64_advsimd_valid_immediate): Likewise.
13594         (aarch64_simd_valid_immediate): Remove mode and inverse
13595         arguments.  Rewrite to use the above.  Use const_vec_duplicate_p
13596         to detect duplicated constants and use aarch64_float_const_zero_rtx_p
13597         and aarch64_float_const_representable_p on the result.
13598         (aarch64_output_simd_mov_immediate): Remove mode argument.
13599         Update call to aarch64_simd_valid_immediate and use of
13600         simd_immediate_info.
13601         (aarch64_output_scalar_simd_mov_immediate): Update call
13602         accordingly.
13604 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13605             Alan Hayward  <alan.hayward@arm.com>
13606             David Sherwood  <david.sherwood@arm.com>
13608         * machmode.h (mode_precision): Prefix with CONST_MODE_PRECISION.
13609         (mode_nunits): Likewise CONST_MODE_NUNITS.
13610         * machmode.def (ADJUST_NUNITS): Document.
13611         * genmodes.c (mode_data::need_nunits_adj): New field.
13612         (blank_mode): Update accordingly.
13613         (adj_nunits): New variable.
13614         (print_maybe_const_decl): Replace CATEGORY with a NEEDS_ADJ
13615         parameter.
13616         (emit_mode_size_inline): Set need_bytesize_adj for all modes
13617         listed in adj_nunits.
13618         (emit_mode_nunits_inline): Set need_nunits_adj for all modes
13619         listed in adj_nunits.  Don't emit case statements for such modes.
13620         (emit_insn_modes_h): Emit definitions of CONST_MODE_NUNITS
13621         and CONST_MODE_PRECISION.  Make CONST_MODE_SIZE expand to
13622         nothing if adj_nunits is nonnull.
13623         (emit_mode_precision, emit_mode_nunits): Use print_maybe_const_decl.
13624         (emit_mode_unit_size, emit_mode_base_align, emit_mode_ibit)
13625         (emit_mode_fbit): Update use of print_maybe_const_decl.
13626         (emit_move_size): Likewise.  Treat the array as non-const
13627         if adj_nunits.
13628         (emit_mode_adjustments): Handle adj_nunits.
13630 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13632         * machmode.def (VECTOR_MODES_WITH_PREFIX): Document.
13633         * genmodes.c (VECTOR_MODES_WITH_PREFIX): New macro.
13634         (VECTOR_MODES): Use it.
13635         (make_vector_modes): Take the prefix as an argument.
13637 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13638             Alan Hayward  <alan.hayward@arm.com>
13639             David Sherwood  <david.sherwood@arm.com>
13641         * mode-classes.def (MODE_VECTOR_BOOL): New mode class.
13642         * machmode.h (INTEGRAL_MODE_P, VECTOR_MODE_P): Return true
13643         for MODE_VECTOR_BOOL.
13644         * machmode.def (VECTOR_BOOL_MODE): Document.
13645         * genmodes.c (VECTOR_BOOL_MODE): New macro.
13646         (make_vector_bool_mode): New function.
13647         (complete_mode, emit_mode_wider, emit_mode_adjustments): Handle
13648         MODE_VECTOR_BOOL.
13649         * lto-streamer-in.c (lto_input_mode_table): Likewise.
13650         * rtx-vector-builder.c (rtx_vector_builder::find_cached_value):
13651         Likewise.
13652         * stor-layout.c (int_mode_for_mode): Likewise.
13653         * tree.c (build_vector_type_for_mode): Likewise.
13654         * varasm.c (output_constant_pool_2): Likewise.
13655         * emit-rtl.c (init_emit_once): Make sure that CONST1_RTX (BImode) and
13656         CONSTM1_RTX (BImode) are the same thing.  Initialize const_tiny_rtx
13657         for MODE_VECTOR_BOOL.
13658         * expr.c (expand_expr_real_1): Use VECTOR_MODE_P instead of a list
13659         of mode class checks.
13660         * tree-vect-generic.c (expand_vector_operation): Use VECTOR_MODE_P
13661         instead of a list of mode class checks.
13662         (expand_vector_scalar_condition): Likewise.
13663         (type_for_widest_vector_mode): Handle BImode as an inner mode.
13665 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13666             Alan Hayward  <alan.hayward@arm.com>
13667             David Sherwood  <david.sherwood@arm.com>
13669         * machmode.h (mode_size): Change from unsigned short to
13670         poly_uint16_pod.
13671         (mode_to_bytes): Return a poly_uint16 rather than an unsigned short.
13672         (GET_MODE_SIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
13673         or if measurement_type is not polynomial.
13674         (fixed_size_mode::includes_p): Check for constant-sized modes.
13675         * genmodes.c (emit_mode_size_inline): Make mode_size_inline
13676         return a poly_uint16 rather than an unsigned short.
13677         (emit_mode_size): Change the type of mode_size from unsigned short
13678         to poly_uint16_pod.  Use ZERO_COEFFS for the initializer.
13679         (emit_mode_adjustments): Cope with polynomial vector sizes.
13680         * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
13681         for GET_MODE_SIZE.
13682         * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
13683         for GET_MODE_SIZE.
13684         * auto-inc-dec.c (try_merge): Treat GET_MODE_SIZE as polynomial.
13685         * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Likewise.
13686         * caller-save.c (setup_save_areas): Likewise.
13687         (replace_reg_with_saved_mem): Likewise.
13688         * calls.c (emit_library_call_value_1): Likewise.
13689         * combine-stack-adj.c (combine_stack_adjustments_for_block): Likewise.
13690         * combine.c (simplify_set, make_extraction, simplify_shift_const_1)
13691         (gen_lowpart_for_combine): Likewise.
13692         * convert.c (convert_to_integer_1): Likewise.
13693         * cse.c (equiv_constant, cse_insn): Likewise.
13694         * cselib.c (autoinc_split, cselib_hash_rtx): Likewise.
13695         (cselib_subst_to_values): Likewise.
13696         * dce.c (word_dce_process_block): Likewise.
13697         * df-problems.c (df_word_lr_mark_ref): Likewise.
13698         * dwarf2cfi.c (init_one_dwarf_reg_size): Likewise.
13699         * dwarf2out.c (multiple_reg_loc_descriptor, mem_loc_descriptor)
13700         (concat_loc_descriptor, concatn_loc_descriptor, loc_descriptor)
13701         (rtl_for_decl_location): Likewise.
13702         * emit-rtl.c (gen_highpart, widen_memory_access): Likewise.
13703         * expmed.c (extract_bit_field_1, extract_integral_bit_field): Likewise.
13704         * expr.c (emit_group_load_1, clear_storage_hints): Likewise.
13705         (emit_move_complex, emit_move_multi_word, emit_push_insn): Likewise.
13706         (expand_expr_real_1): Likewise.
13707         * function.c (assign_parm_setup_block_p, assign_parm_setup_block)
13708         (pad_below): Likewise.
13709         * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
13710         * gimple-ssa-store-merging.c (rhs_valid_for_store_merging_p): Likewise.
13711         * ira.c (get_subreg_tracking_sizes): Likewise.
13712         * ira-build.c (ira_create_allocno_objects): Likewise.
13713         * ira-color.c (coalesced_pseudo_reg_slot_compare): Likewise.
13714         (ira_sort_regnos_for_alter_reg): Likewise.
13715         * ira-costs.c (record_operand_costs): Likewise.
13716         * lower-subreg.c (interesting_mode_p, simplify_gen_subreg_concatn)
13717         (resolve_simple_move): Likewise.
13718         * lra-constraints.c (get_reload_reg, operands_match_p): Likewise.
13719         (process_addr_reg, simplify_operand_subreg, curr_insn_transform)
13720         (lra_constraints): Likewise.
13721         (CONST_POOL_OK_P): Reject variable-sized modes.
13722         * lra-spills.c (slot, assign_mem_slot, pseudo_reg_slot_compare)
13723         (add_pseudo_to_slot, lra_spill): Likewise.
13724         * omp-low.c (omp_clause_aligned_alignment): Likewise.
13725         * optabs-query.c (get_best_extraction_insn): Likewise.
13726         * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
13727         * optabs.c (expand_vec_perm_var, expand_vec_cond_expr): Likewise.
13728         (expand_mult_highpart, valid_multiword_target_p): Likewise.
13729         * recog.c (offsettable_address_addr_space_p): Likewise.
13730         * regcprop.c (maybe_mode_change): Likewise.
13731         * reginfo.c (choose_hard_reg_mode, record_subregs_of_mode): Likewise.
13732         * regrename.c (build_def_use): Likewise.
13733         * regstat.c (dump_reg_info): Likewise.
13734         * reload.c (complex_word_subreg_p, push_reload, find_dummy_reload)
13735         (find_reloads, find_reloads_subreg_address): Likewise.
13736         * reload1.c (eliminate_regs_1): Likewise.
13737         * rtlanal.c (for_each_inc_dec_find_inc_dec, rtx_cost): Likewise.
13738         * simplify-rtx.c (avoid_constant_pool_reference): Likewise.
13739         (simplify_binary_operation_1, simplify_subreg): Likewise.
13740         * targhooks.c (default_function_arg_padding): Likewise.
13741         (default_hard_regno_nregs, default_class_max_nregs): Likewise.
13742         * tree-cfg.c (verify_gimple_assign_binary): Likewise.
13743         (verify_gimple_assign_ternary): Likewise.
13744         * tree-inline.c (estimate_move_cost): Likewise.
13745         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
13746         * tree-ssa-loop-ivopts.c (add_autoinc_candidates): Likewise.
13747         (get_address_cost_ainc): Likewise.
13748         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
13749         (vect_supportable_dr_alignment): Likewise.
13750         * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
13751         (vectorizable_reduction): Likewise.
13752         * tree-vect-stmts.c (vectorizable_assignment, vectorizable_shift)
13753         (vectorizable_operation, vectorizable_load): Likewise.
13754         * tree.c (build_same_sized_truth_vector_type): Likewise.
13755         * valtrack.c (cleanup_auto_inc_dec): Likewise.
13756         * var-tracking.c (emit_note_insn_var_location): Likewise.
13757         * config/arc/arc.h (ASM_OUTPUT_CASE_END): Use as_a <scalar_int_mode>.
13758         (ADDR_VEC_ALIGN): Likewise.
13760 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13761             Alan Hayward  <alan.hayward@arm.com>
13762             David Sherwood  <david.sherwood@arm.com>
13764         * machmode.h (mode_to_bits): Return a poly_uint16 rather than an
13765         unsigned short.
13766         (GET_MODE_BITSIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
13767         or if measurement_type is polynomial.
13768         * calls.c (shift_return_value): Treat GET_MODE_BITSIZE as polynomial.
13769         * combine.c (make_extraction): Likewise.
13770         * dse.c (find_shift_sequence): Likewise.
13771         * dwarf2out.c (mem_loc_descriptor): Likewise.
13772         * expmed.c (store_integral_bit_field, extract_bit_field_1): Likewise.
13773         (extract_bit_field, extract_low_bits): Likewise.
13774         * expr.c (convert_move, convert_modes, emit_move_insn_1): Likewise.
13775         (optimize_bitfield_assignment_op, expand_assignment): Likewise.
13776         (store_expr_with_bounds, store_field, expand_expr_real_1): Likewise.
13777         * fold-const.c (optimize_bit_field_compare, merge_ranges): Likewise.
13778         * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
13779         * reload.c (find_reloads): Likewise.
13780         * reload1.c (alter_reg): Likewise.
13781         * stor-layout.c (bitwise_mode_for_mode, compute_record_mode): Likewise.
13782         * targhooks.c (default_secondary_memory_needed_mode): Likewise.
13783         * tree-if-conv.c (predicate_mem_writes): Likewise.
13784         * tree-ssa-strlen.c (handle_builtin_memcmp): Likewise.
13785         * tree-vect-patterns.c (adjust_bool_pattern): Likewise.
13786         * tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise.
13787         * valtrack.c (dead_debug_insert_temp): Likewise.
13788         * varasm.c (mergeable_constant_section): Likewise.
13789         * config/sh/sh.h (LOCAL_ALIGNMENT): Use as_a <fixed_size_mode>.
13791 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13792             Alan Hayward  <alan.hayward@arm.com>
13793             David Sherwood  <david.sherwood@arm.com>
13795         * expr.c (expand_assignment): Cope with polynomial mode sizes
13796         when assigning to a CONCAT.
13798 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13799             Alan Hayward  <alan.hayward@arm.com>
13800             David Sherwood  <david.sherwood@arm.com>
13802         * machmode.h (mode_precision): Change from unsigned short to
13803         poly_uint16_pod.
13804         (mode_to_precision): Return a poly_uint16 rather than an unsigned
13805         short.
13806         (GET_MODE_PRECISION): Return a constant if ONLY_FIXED_SIZE_MODES,
13807         or if measurement_type is not polynomial.
13808         (HWI_COMPUTABLE_MODE_P): Turn into a function.  Optimize the case
13809         in which the mode is already known to be a scalar_int_mode.
13810         * genmodes.c (emit_mode_precision): Change the type of mode_precision
13811         from unsigned short to poly_uint16_pod.  Use ZERO_COEFFS for the
13812         initializer.
13813         * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
13814         for GET_MODE_PRECISION.
13815         * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
13816         for GET_MODE_PRECISION.
13817         * combine.c (update_rsp_from_reg_equal): Treat GET_MODE_PRECISION
13818         as polynomial.
13819         (try_combine, find_split_point, combine_simplify_rtx): Likewise.
13820         (expand_field_assignment, make_extraction): Likewise.
13821         (make_compound_operation_int, record_dead_and_set_regs_1): Likewise.
13822         (get_last_value): Likewise.
13823         * convert.c (convert_to_integer_1): Likewise.
13824         * cse.c (cse_insn): Likewise.
13825         * expr.c (expand_expr_real_1): Likewise.
13826         * lra-constraints.c (simplify_operand_subreg): Likewise.
13827         * optabs-query.c (can_atomic_load_p): Likewise.
13828         * optabs.c (expand_atomic_load): Likewise.
13829         (expand_atomic_store): Likewise.
13830         * ree.c (combine_reaching_defs): Likewise.
13831         * rtl.h (partial_subreg_p, paradoxical_subreg_p): Likewise.
13832         * rtlanal.c (nonzero_bits1, lsb_bitfield_op_p): Likewise.
13833         * tree.h (type_has_mode_precision_p): Likewise.
13834         * ubsan.c (instrument_si_overflow): Likewise.
13836 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13837             Alan Hayward  <alan.hayward@arm.com>
13838             David Sherwood  <david.sherwood@arm.com>
13840         * tree.h (TYPE_VECTOR_SUBPARTS): Turn into a function and handle
13841         polynomial numbers of units.
13842         (SET_TYPE_VECTOR_SUBPARTS): Likewise.
13843         (valid_vector_subparts_p): New function.
13844         (build_vector_type): Remove temporary shim and take the number
13845         of units as a poly_uint64 rather than an int.
13846         (build_opaque_vector_type): Take the number of units as a
13847         poly_uint64 rather than an int.
13848         * tree.c (build_vector_from_ctor): Handle polynomial
13849         TYPE_VECTOR_SUBPARTS.
13850         (type_hash_canon_hash, type_cache_hasher::equal): Likewise.
13851         (uniform_vector_p, vector_type_mode, build_vector): Likewise.
13852         (build_vector_from_val): If the number of units is variable,
13853         use build_vec_duplicate_cst for constant operands and
13854         VEC_DUPLICATE_EXPR otherwise.
13855         (make_vector_type): Remove temporary is_constant ().
13856         (build_vector_type, build_opaque_vector_type): Take the number of
13857         units as a poly_uint64 rather than an int.
13858         (check_vector_cst): Handle polynomial TYPE_VECTOR_SUBPARTS and
13859         VECTOR_CST_NELTS.
13860         * cfgexpand.c (expand_debug_expr): Likewise.
13861         * expr.c (count_type_elements, categorize_ctor_elements_1): Likewise.
13862         (store_constructor, expand_expr_real_1): Likewise.
13863         (const_scalar_mask_from_tree): Likewise.
13864         * fold-const-call.c (fold_const_reduction): Likewise.
13865         * fold-const.c (const_binop, const_unop, fold_convert_const): Likewise.
13866         (operand_equal_p, fold_vec_perm, fold_ternary_loc): Likewise.
13867         (native_encode_vector, vec_cst_ctor_to_array): Likewise.
13868         (fold_relational_const): Likewise.
13869         (native_interpret_vector): Likewise.  Change the size from an
13870         int to an unsigned int.
13871         * gimple-fold.c (gimple_fold_stmt_to_constant_1): Handle polynomial
13872         TYPE_VECTOR_SUBPARTS.
13873         (gimple_fold_indirect_ref, gimple_build_vector): Likewise.
13874         (gimple_build_vector_from_val): Use VEC_DUPLICATE_EXPR when
13875         duplicating a non-constant operand into a variable-length vector.
13876         * hsa-brig.c (hsa_op_immed::emit_to_buffer): Handle polynomial
13877         TYPE_VECTOR_SUBPARTS and VECTOR_CST_NELTS.
13878         * ipa-icf.c (sem_variable::equals): Likewise.
13879         * match.pd: Likewise.
13880         * omp-simd-clone.c (simd_clone_subparts): Likewise.
13881         * print-tree.c (print_node): Likewise.
13882         * stor-layout.c (layout_type): Likewise.
13883         * targhooks.c (default_builtin_vectorization_cost): Likewise.
13884         * tree-cfg.c (verify_gimple_comparison): Likewise.
13885         (verify_gimple_assign_binary): Likewise.
13886         (verify_gimple_assign_ternary): Likewise.
13887         (verify_gimple_assign_single): Likewise.
13888         * tree-pretty-print.c (dump_generic_node): Likewise.
13889         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
13890         (simplify_bitfield_ref, is_combined_permutation_identity): Likewise.
13891         * tree-vect-data-refs.c (vect_permute_store_chain): Likewise.
13892         (vect_grouped_load_supported, vect_permute_load_chain): Likewise.
13893         (vect_shift_permute_load_chain): Likewise.
13894         * tree-vect-generic.c (nunits_for_known_piecewise_op): Likewise.
13895         (expand_vector_condition, optimize_vector_constructor): Likewise.
13896         (lower_vec_perm, get_compute_type): Likewise.
13897         * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
13898         (get_initial_defs_for_reduction, vect_transform_loop): Likewise.
13899         * tree-vect-patterns.c (vect_recog_bool_pattern): Likewise.
13900         (vect_recog_mask_conversion_pattern): Likewise.
13901         * tree-vect-slp.c (vect_supported_load_permutation_p): Likewise.
13902         (vect_get_constant_vectors, vect_transform_slp_perm_load): Likewise.
13903         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
13904         (get_group_load_store_type, vectorizable_mask_load_store): Likewise.
13905         (vectorizable_bswap, simd_clone_subparts, vectorizable_assignment)
13906         (vectorizable_shift, vectorizable_operation, vectorizable_store)
13907         (vectorizable_load, vect_is_simple_cond, vectorizable_comparison)
13908         (supportable_widening_operation): Likewise.
13909         (supportable_narrowing_operation): Likewise.
13910         * tree-vector-builder.c (tree_vector_builder::binary_encoded_nelts):
13911         Likewise.
13912         * varasm.c (output_constant): Likewise.
13914 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13915             Alan Hayward  <alan.hayward@arm.com>
13916             David Sherwood  <david.sherwood@arm.com>
13918         * tree-vect-data-refs.c (vect_permute_store_chain): Reorganize
13919         so that both the length == 3 and length != 3 cases set up their
13920         own permute vectors.  Add comments explaining why we know the
13921         number of elements is constant.
13922         (vect_permute_load_chain): Likewise.
13924 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13925             Alan Hayward  <alan.hayward@arm.com>
13926             David Sherwood  <david.sherwood@arm.com>
13928         * machmode.h (mode_nunits): Change from unsigned char to
13929         poly_uint16_pod.
13930         (ONLY_FIXED_SIZE_MODES): New macro.
13931         (pod_mode::measurement_type, scalar_int_mode::measurement_type)
13932         (scalar_float_mode::measurement_type, scalar_mode::measurement_type)
13933         (complex_mode::measurement_type, fixed_size_mode::measurement_type):
13934         New typedefs.
13935         (mode_to_nunits): Return a poly_uint16 rather than an unsigned short.
13936         (GET_MODE_NUNITS): Return a constant if ONLY_FIXED_SIZE_MODES,
13937         or if measurement_type is not polynomial.
13938         * genmodes.c (ZERO_COEFFS): New macro.
13939         (emit_mode_nunits_inline): Make mode_nunits_inline return a
13940         poly_uint16.
13941         (emit_mode_nunits): Change the type of mode_nunits to poly_uint16_pod.
13942         Use ZERO_COEFFS when emitting initializers.
13943         * data-streamer.h (bp_pack_poly_value): New function.
13944         (bp_unpack_poly_value): Likewise.
13945         * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
13946         for GET_MODE_NUNITS.
13947         * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
13948         for GET_MODE_NUNITS.
13949         * tree.c (make_vector_type): Remove temporary shim and make
13950         the real function take the number of units as a poly_uint64
13951         rather than an int.
13952         (build_vector_type_for_mode): Handle polynomial nunits.
13953         * dwarf2out.c (loc_descriptor, add_const_value_attribute): Likewise.
13954         * emit-rtl.c (const_vec_series_p_1): Likewise.
13955         (gen_rtx_CONST_VECTOR): Likewise.
13956         * fold-const.c (test_vec_duplicate_folding): Likewise.
13957         * genrecog.c (validate_pattern): Likewise.
13958         * optabs-query.c (can_vec_perm_var_p, can_mult_highpart_p): Likewise.
13959         * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
13960         * optabs.c (expand_vector_broadcast, expand_binop_directly): Likewise.
13961         (shift_amt_for_vec_perm_mask, expand_vec_perm_var): Likewise.
13962         (expand_vec_cond_expr, expand_mult_highpart): Likewise.
13963         * rtlanal.c (subreg_get_info): Likewise.
13964         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
13965         (vect_grouped_load_supported): Likewise.
13966         * tree-vect-generic.c (type_for_widest_vector_mode): Likewise.
13967         * tree-vect-loop.c (have_whole_vector_shift): Likewise.
13968         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
13969         (simplify_const_unary_operation, simplify_binary_operation_1)
13970         (simplify_const_binary_operation, simplify_ternary_operation)
13971         (test_vector_ops_duplicate, test_vector_ops): Likewise.
13972         (simplify_immed_subreg): Use GET_MODE_NUNITS on a fixed_size_mode
13973         instead of CONST_VECTOR_NUNITS.
13974         * varasm.c (output_constant_pool_2): Likewise.
13975         * rtx-vector-builder.c (rtx_vector_builder::build): Only include the
13976         explicit-encoded elements in the XVEC for variable-length vectors.
13978 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13980         * lra-constraints.c (curr_insn_transform): Use partial_subreg_p.
13982 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13983             Alan Hayward  <alan.hayward@arm.com>
13984             David Sherwood  <david.sherwood@arm.com>
13986         * coretypes.h (fixed_size_mode): Declare.
13987         (fixed_size_mode_pod): New typedef.
13988         * builtins.h (target_builtins::x_apply_args_mode)
13989         (target_builtins::x_apply_result_mode): Change type to
13990         fixed_size_mode_pod.
13991         * builtins.c (apply_args_size, apply_result_size, result_vector)
13992         (expand_builtin_apply_args_1, expand_builtin_apply)
13993         (expand_builtin_return): Update accordingly.
13995 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13997         * cse.c (hash_rtx_cb): Hash only the encoded elements.
13998         * cselib.c (cselib_hash_rtx): Likewise.
13999         * expmed.c (make_tree): Build VECTOR_CSTs directly from the
14000         CONST_VECTOR encoding.
14002 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
14003             Jeff Law  <law@redhat.com>
14005         PR target/83641
14006         * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): For
14007         noreturn probe, use gen_pop instead of ix86_emit_restore_reg_using_pop,
14008         only set RTX_FRAME_RELATED_P on both the push and pop if cfa_reg is sp
14009         and add REG_CFA_ADJUST_CFA notes in that case to both insns.
14011         PR target/83641
14012         * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): Do not
14013         explicitly probe *sp in a noreturn function if there were any callee
14014         register saves or frame pointer is needed.
14016 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
14018         PR debug/83621
14019         * cfgexpand.c (expand_debug_expr): Return NULL if mode is
14020         BLKmode for ternary, binary or unary expressions.
14022         PR debug/83645
14023         * var-tracking.c (delete_vta_debug_insn): New inline function.
14024         (delete_vta_debug_insns): Add USE_CFG argument, if true, walk just
14025         insns from get_insns () to NULL instead of each bb separately.
14026         Use delete_vta_debug_insn.  No longer static.
14027         (vt_debug_insns_local, variable_tracking_main_1): Adjust
14028         delete_vta_debug_insns callers.
14029         * rtl.h (delete_vta_debug_insns): Declare.
14030         * final.c (rest_of_handle_final): Call delete_vta_debug_insns
14031         instead of variable_tracking_main.
14033 2018-01-03  Martin Sebor  <msebor@redhat.com>
14035         PR tree-optimization/83603
14036         * calls.c (maybe_warn_nonstring_arg): Avoid accessing function
14037         arguments past the endof the argument list in functions declared
14038         without a prototype.
14039         * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call):
14040         Avoid checking when arguments are null.
14042 2018-01-03  Martin Sebor  <msebor@redhat.com>
14044         PR c/83559
14045         * doc/extend.texi (attribute const): Fix a typo.
14046         * ipa-pure-const.c ((warn_function_const, warn_function_pure): Avoid
14047         issuing -Wsuggest-attribute for void functions.
14049 2018-01-03  Martin Sebor  <msebor@redhat.com>
14051         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Use
14052         offset_int::from instead of wide_int::to_shwi.
14053         (maybe_diag_overlap): Remove assertion.
14054         Use HOST_WIDE_INT_PRINT_DEC instead of %lli.
14055         * gimple-ssa-sprintf.c (format_directive): Same.
14056         (parse_directive): Same.
14057         (sprintf_dom_walker::compute_format_length): Same.
14058         (try_substitute_return_value): Same.
14060 2018-01-03  Jeff Law  <law@redhat.com>
14062         PR middle-end/83654
14063         * explow.c (anti_adjust_stack_and_probe_stack_clash): Test a
14064         non-constant residual for zero at runtime and avoid probing in
14065         that case.  Reorganize code for trailing problem to mirror handling
14066         of the residual.
14068 2018-01-03  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
14070         PR tree-optimization/83501
14071         * tree-ssa-strlen.c (get_string_cst): New.
14072         (handle_char_store): Call get_string_cst.
14074 2018-01-03  Martin Liska  <mliska@suse.cz>
14076         PR tree-optimization/83593
14077         * tree-ssa-strlen.c: Include tree-cfg.h.
14078         (strlen_check_and_optimize_stmt): Add new argument cleanup_eh.
14079         (strlen_dom_walker): Add new member variable m_cleanup_cfg.
14080         (strlen_dom_walker::strlen_dom_walker): Initialize m_cleanup_cfg
14081         to false.
14082         (strlen_dom_walker::before_dom_children): Call
14083         gimple_purge_dead_eh_edges. Dump tranformation with details
14084         dump flags.
14085         (strlen_dom_walker::before_dom_children): Update call by adding
14086         new argument cleanup_eh.
14087         (pass_strlen::execute): Return TODO_cleanup_cfg if needed.
14089 2018-01-03  Martin Liska  <mliska@suse.cz>
14091         PR ipa/83549
14092         * cif-code.def (VARIADIC_THUNK): New enum value.
14093         * ipa-fnsummary.c (compute_fn_summary): Do not inline variadic
14094         thunks.
14096 2018-01-03  Jan Beulich  <jbeulich@suse.com>
14098         * sse.md (mov<mode>_internal): Tighten condition for when to use
14099         vmovdqu<ssescalarsize> for TI and OI modes.
14101 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
14103         Update copyright years.
14105 2018-01-03  Martin Liska  <mliska@suse.cz>
14107         PR ipa/83594
14108         * ipa-visibility.c (function_and_variable_visibility): Skip
14109         functions with noipa attribure.
14111 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
14113         * gcc.c (process_command): Update copyright notice dates.
14114         * gcov-dump.c (print_version): Ditto.
14115         * gcov.c (print_version): Ditto.
14116         * gcov-tool.c (print_version): Ditto.
14117         * gengtype.c (create_file): Ditto.
14118         * doc/cpp.texi: Bump @copying's copyright year.
14119         * doc/cppinternals.texi: Ditto.
14120         * doc/gcc.texi: Ditto.
14121         * doc/gccint.texi: Ditto.
14122         * doc/gcov.texi: Ditto.
14123         * doc/install.texi: Ditto.
14124         * doc/invoke.texi: Ditto.
14126 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14128         * vector-builder.h (vector_builder::m_full_nelts): Change from
14129         unsigned int to poly_uint64.
14130         (vector_builder::full_nelts): Update prototype accordingly.
14131         (vector_builder::new_vector): Likewise.
14132         (vector_builder::encoded_full_vector_p): Handle polynomial full_nelts.
14133         (vector_builder::operator ==): Likewise.
14134         (vector_builder::finalize): Likewise.
14135         * int-vector-builder.h (int_vector_builder::int_vector_builder):
14136         Take the number of elements as a poly_uint64 rather than an
14137         unsigned int.
14138         * vec-perm-indices.h (vec_perm_indices::m_nelts_per_input): Change
14139         from unsigned int to poly_uint64.
14140         (vec_perm_indices::vec_perm_indices): Update prototype accordingly.
14141         (vec_perm_indices::new_vector): Likewise.
14142         (vec_perm_indices::length): Likewise.
14143         (vec_perm_indices::nelts_per_input): Likewise.
14144         (vec_perm_indices::input_nelts): Likewise.
14145         * vec-perm-indices.c (vec_perm_indices::new_vector): Take the
14146         number of elements per input as a poly_uint64 rather than an
14147         unsigned int.  Use the original encoding for variable-length
14148         vectors, rather than clamping each individual element.
14149         For the second and subsequent elements in each pattern,
14150         clamp the step and base before clamping their sum.
14151         (vec_perm_indices::series_p): Handle polynomial element counts.
14152         (vec_perm_indices::all_in_range_p): Likewise.
14153         (vec_perm_indices_to_tree): Likewise.
14154         (vec_perm_indices_to_rtx): Likewise.
14155         * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise.
14156         * tree-vector-builder.c (tree_vector_builder::new_unary_operation)
14157         (tree_vector_builder::new_binary_operation): Handle polynomial
14158         element counts.  Return false if we need to know the number
14159         of elements at compile time.
14160         * fold-const.c (fold_vec_perm): Punt if the number of elements
14161         isn't known at compile time.
14163 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14165         * vec-perm-indices.h (vec_perm_builder): Change element type
14166         from HOST_WIDE_INT to poly_int64.
14167         (vec_perm_indices::element_type): Update accordingly.
14168         (vec_perm_indices::clamp): Handle polynomial element_types.
14169         * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
14170         (vec_perm_indices::all_in_range_p): Likewise.
14171         (tree_to_vec_perm_builder): Check for poly_int64 trees rather
14172         than shwi trees.
14173         * vector-builder.h (vector_builder::stepped_sequence_p): Handle
14174         polynomial vec_perm_indices element types.
14175         * int-vector-builder.h (int_vector_builder::equal_p): Likewise.
14176         * fold-const.c (fold_vec_perm): Likewise.
14177         * optabs.c (shift_amt_for_vec_perm_mask): Likewise.
14178         * tree-vect-generic.c (lower_vec_perm): Likewise.
14179         * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
14180         * config/aarch64/aarch64.c (aarch64_evpc_tbl): Cast d->perm
14181         element type to HOST_WIDE_INT.
14183 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14184             Alan Hayward  <alan.hayward@arm.com>
14185             David Sherwood  <david.sherwood@arm.com>
14187         * alias.c (addr_side_effect_eval): Take the size as a poly_int64
14188         rather than an int.  Use plus_constant.
14189         (memrefs_conflict_p): Take the sizes as poly_int64s rather than ints.
14190         Take the offset "c" as a poly_int64 rather than a HOST_WIDE_INT.
14192 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14193             Alan Hayward  <alan.hayward@arm.com>
14194             David Sherwood  <david.sherwood@arm.com>
14196         * calls.c (emit_call_1, expand_call): Change struct_value_size from
14197         a HOST_WIDE_INT to a poly_int64.
14199 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14200             Alan Hayward  <alan.hayward@arm.com>
14201             David Sherwood  <david.sherwood@arm.com>
14203         * calls.c (load_register_parameters): Cope with polynomial
14204         mode sizes.  Require a constant size for BLKmode parameters
14205         that aren't described by a PARALLEL.  If BLOCK_REG_PADDING
14206         forces a parameter to be padded at the lsb end in order to
14207         fill a complete number of words, require the parameter size
14208         to be ordered wrt UNITS_PER_WORD.
14210 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14211             Alan Hayward  <alan.hayward@arm.com>
14212             David Sherwood  <david.sherwood@arm.com>
14214         * reload1.c (spill_stack_slot_width): Change element type
14215         from unsigned int to poly_uint64_pod.
14216         (alter_reg): Treat mode sizes as polynomial.
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         * reload.c (complex_word_subreg_p): New function.
14223         (reload_inner_reg_of_subreg, push_reload): Use it.
14225 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14226             Alan Hayward  <alan.hayward@arm.com>
14227             David Sherwood  <david.sherwood@arm.com>
14229         * lra-constraints.c (process_alt_operands): Reject matched
14230         operands whose sizes aren't ordered.
14231         (match_reload): Refer to this check here.
14233 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14234             Alan Hayward  <alan.hayward@arm.com>
14235             David Sherwood  <david.sherwood@arm.com>
14237         * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Assert
14238         that the mode size is in the set {1, 2, 4, 8, 16}.
14240 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14241             Alan Hayward  <alan.hayward@arm.com>
14242             David Sherwood  <david.sherwood@arm.com>
14244         * var-tracking.c (adjust_mems): Treat mode sizes as polynomial.
14245         Use plus_constant instead of gen_rtx_PLUS.
14247 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14248             Alan Hayward  <alan.hayward@arm.com>
14249             David Sherwood  <david.sherwood@arm.com>
14251         * config/cr16/cr16-protos.h (cr16_push_rounding): Declare.
14252         * config/cr16/cr16.h (PUSH_ROUNDING): Move implementation to...
14253         * config/cr16/cr16.c (cr16_push_rounding): ...this new function.
14254         * config/h8300/h8300-protos.h (h8300_push_rounding): Declare.
14255         * config/h8300/h8300.h (PUSH_ROUNDING): Move implementation to...
14256         * config/h8300/h8300.c (h8300_push_rounding): ...this new function.
14257         * config/i386/i386-protos.h (ix86_push_rounding): Declare.
14258         * config/i386/i386.h (PUSH_ROUNDING): Move implementation to...
14259         * config/i386/i386.c (ix86_push_rounding): ...this new function.
14260         * config/m32c/m32c-protos.h (m32c_push_rounding): Take and return
14261         a poly_int64.
14262         * config/m32c/m32c.c (m32c_push_rounding): Likewise.
14263         * config/m68k/m68k-protos.h (m68k_push_rounding): Declare.
14264         * config/m68k/m68k.h (PUSH_ROUNDING): Move implementation to...
14265         * config/m68k/m68k.c (m68k_push_rounding): ...this new function.
14266         * config/pdp11/pdp11-protos.h (pdp11_push_rounding): Declare.
14267         * config/pdp11/pdp11.h (PUSH_ROUNDING): Move implementation to...
14268         * config/pdp11/pdp11.c (pdp11_push_rounding): ...this new function.
14269         * config/stormy16/stormy16-protos.h (xstormy16_push_rounding): Declare.
14270         * config/stormy16/stormy16.h (PUSH_ROUNDING): Move implementation to...
14271         * config/stormy16/stormy16.c (xstormy16_push_rounding): ...this new
14272         function.
14273         * expr.c (emit_move_resolve_push): Treat the input and result
14274         of PUSH_ROUNDING as a poly_int64.
14275         (emit_move_complex_push, emit_single_push_insn_1): Likewise.
14276         (emit_push_insn): Likewise.
14277         * lra-eliminations.c (mark_not_eliminable): Likewise.
14278         * recog.c (push_operand): Likewise.
14279         * reload1.c (elimination_effects): Likewise.
14280         * rtlanal.c (nonzero_bits1): Likewise.
14281         * calls.c (store_one_arg): Likewise.  Require the padding to be
14282         known at compile time.
14284 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14285             Alan Hayward  <alan.hayward@arm.com>
14286             David Sherwood  <david.sherwood@arm.com>
14288         * expr.c (emit_single_push_insn_1): Treat mode sizes as polynomial.
14289         Use plus_constant instead of gen_rtx_PLUS.
14291 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14292             Alan Hayward  <alan.hayward@arm.com>
14293             David Sherwood  <david.sherwood@arm.com>
14295         * auto-inc-dec.c (set_inc_state): Take the mode size as a poly_int64
14296         rather than an int.
14298 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14299             Alan Hayward  <alan.hayward@arm.com>
14300             David Sherwood  <david.sherwood@arm.com>
14302         * expr.c (expand_expr_real_1): Use tree_to_poly_uint64
14303         instead of int_size_in_bytes when handling VIEW_CONVERT_EXPRs
14304         via stack temporaries.  Treat the mode size as polynomial too.
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         * expr.c (expand_expr_real_2): When handling conversions involving
14311         unions, apply tree_to_poly_uint64 to the TYPE_SIZE rather than
14312         multiplying int_size_in_bytes by BITS_PER_UNIT.  Treat GET_MODE_BISIZE
14313         as a poly_uint64 too.
14315 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14316             Alan Hayward  <alan.hayward@arm.com>
14317             David Sherwood  <david.sherwood@arm.com>
14319         * rtlanal.c (subreg_get_info): Handle polynomial mode sizes.
14321 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14322             Alan Hayward  <alan.hayward@arm.com>
14323             David Sherwood  <david.sherwood@arm.com>
14325         * combine.c (can_change_dest_mode): Handle polynomial
14326         REGMODE_NATURAL_SIZE.
14327         * expmed.c (store_bit_field_1): Likewise.
14328         * expr.c (store_constructor): Likewise.
14329         * emit-rtl.c (validate_subreg): Operate on polynomial mode sizes
14330         and polynomial REGMODE_NATURAL_SIZE.
14331         (gen_lowpart_common): Likewise.
14332         * reginfo.c (record_subregs_of_mode): Likewise.
14333         * rtlanal.c (read_modify_subreg_p): Likewise.
14335 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14336             Alan Hayward  <alan.hayward@arm.com>
14337             David Sherwood  <david.sherwood@arm.com>
14339         * internal-fn.c (expand_vector_ubsan_overflow): Handle polynomial
14340         numbers of elements.
14342 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14343             Alan Hayward  <alan.hayward@arm.com>
14344             David Sherwood  <david.sherwood@arm.com>
14346         * match.pd: Cope with polynomial numbers of vector elements.
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         * fold-const.c (fold_indirect_ref_1): Handle polynomial offsets
14353         in a POINTER_PLUS_EXPR.
14355 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14356             Alan Hayward  <alan.hayward@arm.com>
14357             David Sherwood  <david.sherwood@arm.com>
14359         * omp-simd-clone.c (simd_clone_subparts): New function.
14360         (simd_clone_init_simd_arrays): Use it instead of TYPE_VECTOR_SUBPARTS.
14361         (ipa_simd_modify_function_body): Likewise.
14363 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14364             Alan Hayward  <alan.hayward@arm.com>
14365             David Sherwood  <david.sherwood@arm.com>
14367         * tree-vect-generic.c (nunits_for_known_piecewise_op): New function.
14368         (expand_vector_piecewise): Use it instead of TYPE_VECTOR_SUBPARTS.
14369         (expand_vector_addition, add_rshift, expand_vector_divmod): Likewise.
14370         (expand_vector_condition, vector_element): Likewise.
14371         (subparts_gt): New function.
14372         (get_compute_type): Use subparts_gt.
14373         (count_type_subparts): Delete.
14374         (expand_vector_operations_1): Use subparts_gt instead of
14375         count_type_subparts.
14377 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14378             Alan Hayward  <alan.hayward@arm.com>
14379             David Sherwood  <david.sherwood@arm.com>
14381         * tree-vect-data-refs.c (vect_no_alias_p): Replace with...
14382         (vect_compile_time_alias): ...this new function.  Do the calculation
14383         on poly_ints rather than trees.
14384         (vect_prune_runtime_alias_test_list): Update call accordingly.
14386 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14387             Alan Hayward  <alan.hayward@arm.com>
14388             David Sherwood  <david.sherwood@arm.com>
14390         * tree-vect-slp.c (vect_build_slp_tree_1): Handle polynomial
14391         numbers of units.
14392         (vect_schedule_slp_instance): Likewise.
14394 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14395             Alan Hayward  <alan.hayward@arm.com>
14396             David Sherwood  <david.sherwood@arm.com>
14398         * tree-vect-slp.c (vect_get_and_check_slp_defs): Reject
14399         constant and extern definitions for variable-length vectors.
14400         (vect_get_constant_vectors): Note that the number of units
14401         is known to be constant.
14403 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14404             Alan Hayward  <alan.hayward@arm.com>
14405             David Sherwood  <david.sherwood@arm.com>
14407         * tree-vect-stmts.c (vectorizable_conversion): Treat the number
14408         of units as polynomial.  Choose between WIDE and NARROW based
14409         on multiple_p.
14411 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14412             Alan Hayward  <alan.hayward@arm.com>
14413             David Sherwood  <david.sherwood@arm.com>
14415         * tree-vect-stmts.c (simd_clone_subparts): New function.
14416         (vectorizable_simd_clone_call): Use it instead of TYPE_VECTOR_SUBPARTS.
14418 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14419             Alan Hayward  <alan.hayward@arm.com>
14420             David Sherwood  <david.sherwood@arm.com>
14422         * tree-vect-stmts.c (vectorizable_call): Treat the number of
14423         vectors as polynomial.  Use build_index_vector for
14424         IFN_GOMP_SIMD_LANE.
14426 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14427             Alan Hayward  <alan.hayward@arm.com>
14428             David Sherwood  <david.sherwood@arm.com>
14430         * tree-vect-stmts.c (get_load_store_type): Treat the number of
14431         units as polynomial.  Reject VMAT_ELEMENTWISE and VMAT_STRIDED_SLP
14432         for variable-length vectors.
14433         (vectorizable_mask_load_store): Treat the number of units as
14434         polynomial, asserting that it is constant if the condition has
14435         already been enforced.
14436         (vectorizable_store, vectorizable_load): Likewise.
14438 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14439             Alan Hayward  <alan.hayward@arm.com>
14440             David Sherwood  <david.sherwood@arm.com>
14442         * tree-vect-loop.c (vectorizable_live_operation): Treat the number
14443         of units as polynomial.  Punt if we can't tell at compile time
14444         which vector contains the final result.
14446 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14447             Alan Hayward  <alan.hayward@arm.com>
14448             David Sherwood  <david.sherwood@arm.com>
14450         * tree-vect-loop.c (vectorizable_induction): Treat the number
14451         of units as polynomial.  Punt on SLP inductions.  Use an integer
14452         VEC_SERIES_EXPR for variable-length integer reductions.  Use a
14453         cast of such a series for variable-length floating-point
14454         reductions.
14456 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14457             Alan Hayward  <alan.hayward@arm.com>
14458             David Sherwood  <david.sherwood@arm.com>
14460         * tree.h (build_index_vector): Declare.
14461         * tree.c (build_index_vector): New function.
14462         * tree-vect-loop.c (get_initial_defs_for_reduction): Treat the number
14463         of units as polynomial, forcibly converting it to a constant if
14464         vectorizable_reduction has already enforced the condition.
14465         (vect_create_epilog_for_reduction): Likewise.  Use build_index_vector
14466         to create a {1,2,3,...} vector.
14467         (vectorizable_reduction): Treat the number of units as polynomial.
14468         Choose vectype_in based on the largest scalar element size rather
14469         than the smallest number of units.  Enforce the restrictions
14470         relied on above.
14472 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14473             Alan Hayward  <alan.hayward@arm.com>
14474             David Sherwood  <david.sherwood@arm.com>
14476         * tree-vect-data-refs.c (vector_alignment_reachable_p): Treat the
14477         number of units as polynomial.
14479 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14480             Alan Hayward  <alan.hayward@arm.com>
14481             David Sherwood  <david.sherwood@arm.com>
14483         * target.h (vector_sizes, auto_vector_sizes): New typedefs.
14484         * target.def (autovectorize_vector_sizes): Return the vector sizes
14485         by pointer, using vector_sizes rather than a bitmask.
14486         * targhooks.h (default_autovectorize_vector_sizes): Update accordingly.
14487         * targhooks.c (default_autovectorize_vector_sizes): Likewise.
14488         * config/aarch64/aarch64.c (aarch64_autovectorize_vector_sizes):
14489         Likewise.
14490         * config/arc/arc.c (arc_autovectorize_vector_sizes): Likewise.
14491         * config/arm/arm.c (arm_autovectorize_vector_sizes): Likewise.
14492         * config/i386/i386.c (ix86_autovectorize_vector_sizes): Likewise.
14493         * config/mips/mips.c (mips_autovectorize_vector_sizes): Likewise.
14494         * omp-general.c (omp_max_vf): Likewise.
14495         * omp-low.c (omp_clause_aligned_alignment): Likewise.
14496         * optabs-query.c (can_vec_mask_load_store_p): Likewise.
14497         * tree-vect-loop.c (vect_analyze_loop): Likewise.
14498         * tree-vect-slp.c (vect_slp_bb): Likewise.
14499         * doc/tm.texi: Regenerate.
14500         * tree-vectorizer.h (current_vector_size): Change from an unsigned int
14501         to a poly_uint64.
14502         * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Take
14503         the vector size as a poly_uint64 rather than an unsigned int.
14504         (current_vector_size): Change from an unsigned int to a poly_uint64.
14505         (get_vectype_for_scalar_type): Update accordingly.
14506         * tree.h (build_truth_vector_type): Take the size and number of
14507         units as a poly_uint64 rather than an unsigned int.
14508         (build_vector_type): Add a temporary overload that takes
14509         the number of units as a poly_uint64 rather than an unsigned int.
14510         * tree.c (make_vector_type): Likewise.
14511         (build_truth_vector_type): Take the number of units as a poly_uint64
14512         rather than an unsigned int.
14514 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14515             Alan Hayward  <alan.hayward@arm.com>
14516             David Sherwood  <david.sherwood@arm.com>
14518         * target.def (get_mask_mode): Take the number of units and length
14519         as poly_uint64s rather than unsigned ints.
14520         * targhooks.h (default_get_mask_mode): Update accordingly.
14521         * targhooks.c (default_get_mask_mode): Likewise.
14522         * config/i386/i386.c (ix86_get_mask_mode): Likewise.
14523         * doc/tm.texi: Regenerate.
14525 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14526             Alan Hayward  <alan.hayward@arm.com>
14527             David Sherwood  <david.sherwood@arm.com>
14529         * omp-general.h (omp_max_vf): Return a poly_uint64 instead of an int.
14530         * omp-general.c (omp_max_vf): Likewise.
14531         * omp-expand.c (omp_adjust_chunk_size): Update call to omp_max_vf.
14532         (expand_omp_simd): Handle polynomial safelen.
14533         * omp-low.c (omplow_simd_context): Add a default constructor.
14534         (omplow_simd_context::max_vf): Change from int to poly_uint64.
14535         (lower_rec_simd_input_clauses): Update accordingly.
14536         (lower_rec_input_clauses): Likewise.
14538 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14539             Alan Hayward  <alan.hayward@arm.com>
14540             David Sherwood  <david.sherwood@arm.com>
14542         * tree-vectorizer.h (vect_nunits_for_cost): New function.
14543         * tree-vect-loop.c (vect_model_reduction_cost): Use it.
14544         * tree-vect-slp.c (vect_analyze_slp_cost_1): Likewise.
14545         (vect_analyze_slp_cost): Likewise.
14546         * tree-vect-stmts.c (vect_model_store_cost): Likewise.
14547         (vect_model_load_cost): Likewise.
14549 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14550             Alan Hayward  <alan.hayward@arm.com>
14551             David Sherwood  <david.sherwood@arm.com>
14553         * tree-vect-slp.c (vect_record_max_nunits, vect_build_slp_tree_1)
14554         (vect_build_slp_tree_2, vect_build_slp_tree): Change max_nunits
14555         from an unsigned int * to a poly_uint64_pod *.
14556         (calculate_unrolling_factor): New function.
14557         (vect_analyze_slp_instance): Use it.  Track polynomial max_nunits.
14559 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14560             Alan Hayward  <alan.hayward@arm.com>
14561             David Sherwood  <david.sherwood@arm.com>
14563         * tree-vectorizer.h (_slp_instance::unrolling_factor): Change
14564         from an unsigned int to a poly_uint64.
14565         (_loop_vec_info::slp_unrolling_factor): Likewise.
14566         (_loop_vec_info::vectorization_factor): Change from an int
14567         to a poly_uint64.
14568         (MAX_VECTORIZATION_FACTOR): Bump from 64 to INT_MAX.
14569         (vect_get_num_vectors): New function.
14570         (vect_update_max_nunits, vect_vf_for_cost): Likewise.
14571         (vect_get_num_copies): Use vect_get_num_vectors.
14572         (vect_analyze_data_ref_dependences): Change max_vf from an int *
14573         to an unsigned int *.
14574         (vect_analyze_data_refs): Change min_vf from an int * to a
14575         poly_uint64 *.
14576         (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
14577         than an unsigned HOST_WIDE_INT.
14578         * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr)
14579         (vect_analyze_data_ref_dependence): Change max_vf from an int *
14580         to an unsigned int *.
14581         (vect_analyze_data_ref_dependences): Likewise.
14582         (vect_compute_data_ref_alignment): Handle polynomial vf.
14583         (vect_enhance_data_refs_alignment): Likewise.
14584         (vect_prune_runtime_alias_test_list): Likewise.
14585         (vect_shift_permute_load_chain): Likewise.
14586         (vect_supportable_dr_alignment): Likewise.
14587         (dependence_distance_ge_vf): Take the vectorization factor as a
14588         poly_uint64 rather than an unsigned HOST_WIDE_INT.
14589         (vect_analyze_data_refs): Change min_vf from an int * to a
14590         poly_uint64 *.
14591         * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Take
14592         vfm1 as a poly_uint64 rather than an int.  Make the same change
14593         for the returned bound_scalar.
14594         (vect_gen_vector_loop_niters): Handle polynomial vf.
14595         (vect_do_peeling): Likewise.  Update call to
14596         vect_gen_scalar_loop_niters and handle polynomial bound_scalars.
14597         (vect_gen_vector_loop_niters_mult_vf): Assert that the vf must
14598         be constant.
14599         * tree-vect-loop.c (vect_determine_vectorization_factor)
14600         (vect_update_vf_for_slp, vect_analyze_loop_2): Handle polynomial vf.
14601         (vect_get_known_peeling_cost): Likewise.
14602         (vect_estimate_min_profitable_iters, vectorizable_reduction): Likewise.
14603         (vect_worthwhile_without_simd_p, vectorizable_induction): Likewise.
14604         (vect_transform_loop): Likewise.  Use the lowest possible VF when
14605         updating the upper bounds of the loop.
14606         (vect_min_worthwhile_factor): Make static.  Return an unsigned int
14607         rather than an int.
14608         * tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Cope with
14609         polynomial unroll factors.
14610         (vect_analyze_slp_cost_1, vect_analyze_slp_instance): Likewise.
14611         (vect_make_slp_decision): Likewise.
14612         (vect_supported_load_permutation_p): Likewise, and polynomial
14613         vf too.
14614         (vect_analyze_slp_cost): Handle polynomial vf.
14615         (vect_slp_analyze_node_operations): Likewise.
14616         (vect_slp_analyze_bb_1): Likewise.
14617         (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
14618         than an unsigned HOST_WIDE_INT.
14619         * tree-vect-stmts.c (vectorizable_simd_clone_call, vectorizable_store)
14620         (vectorizable_load): Handle polynomial vf.
14621         * tree-vectorizer.c (simduid_to_vf::vf): Change from an int to
14622         a poly_uint64.
14623         (adjust_simduid_builtins, shrink_simd_arrays): Update accordingly.
14625 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14626             Alan Hayward  <alan.hayward@arm.com>
14627             David Sherwood  <david.sherwood@arm.com>
14629         * match.pd: Handle bit operations involving three constants
14630         and try to fold one pair.
14632 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14634         * tree-vect-loop-manip.c: Include gimple-fold.h.
14635         (slpeel_make_loop_iterate_ntimes): Add step, final_iv and
14636         niters_maybe_zero parameters.  Handle other cases besides a step of 1.
14637         (vect_gen_vector_loop_niters): Add a step_vector_ptr parameter.
14638         Add a path that uses a step of VF instead of 1, but disable it
14639         for now.
14640         (vect_do_peeling): Add step_vector, niters_vector_mult_vf_var
14641         and niters_no_overflow parameters.  Update calls to
14642         slpeel_make_loop_iterate_ntimes and vect_gen_vector_loop_niters.
14643         Create a new SSA name if the latter choses to use a ste other
14644         than zero, and return it via niters_vector_mult_vf_var.
14645         * tree-vect-loop.c (vect_transform_loop): Update calls to
14646         vect_do_peeling, vect_gen_vector_loop_niters and
14647         slpeel_make_loop_iterate_ntimes.
14648         * tree-vectorizer.h (slpeel_make_loop_iterate_ntimes, vect_do_peeling)
14649         (vect_gen_vector_loop_niters): Update declarations after above changes.
14651 2018-01-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
14653         * config/rs6000/rs6000.md (floor<mode>2): Add support for IEEE
14654         128-bit round to integer instructions.
14655         (ceil<mode>2): Likewise.
14656         (btrunc<mode>2): Likewise.
14657         (round<mode>2): Likewise.
14659 2018-01-02  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
14661         * config/rs6000/rs6000-string.c (expand_block_move): Allow the use of
14662         unaligned VSX load/store on P8/P9.
14663         (expand_block_clear): Allow the use of unaligned VSX
14664         load/store on P8/P9.
14666 2018-01-02  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
14668         * config/rs6000/rs6000-p8swap.c (swap_feeds_both_load_and_store):
14669         New function.
14670         (rs6000_analyze_swaps): Mark a web unoptimizable if it contains a
14671         swap associated with both a load and a store.
14673 2018-01-02  Andrew Waterman  <andrew@sifive.com>
14675         * config/riscv/linux.h (ICACHE_FLUSH_FUNC): New.
14676         * config/riscv/riscv.md (clear_cache): Use it.
14678 2018-01-02  Artyom Skrobov  <tyomitch@gmail.com>
14680         * web.c: Remove out-of-date comment.
14682 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14684         * expr.c (fixup_args_size_notes): Check that any existing
14685         REG_ARGS_SIZE notes are correct, and don't try to re-add them.
14686         (emit_single_push_insn_1): Move stack_pointer_delta adjustment to...
14687         (emit_single_push_insn): ...here.
14689 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14691         * rtl.h (CONST_VECTOR_ELT): Redefine to const_vector_elt.
14692         (const_vector_encoded_nelts): New function.
14693         (CONST_VECTOR_NUNITS): Redefine to use GET_MODE_NUNITS.
14694         (const_vector_int_elt, const_vector_elt): Declare.
14695         * emit-rtl.c (const_vector_int_elt_1): New function.
14696         (const_vector_elt): Likewise.
14697         * simplify-rtx.c (simplify_immed_subreg): Avoid taking the address
14698         of CONST_VECTOR_ELT.
14700 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14702         * expr.c: Include rtx-vector-builder.h.
14703         (const_vector_mask_from_tree): Use rtx_vector_builder and operate
14704         directly on the tree encoding.
14705         (const_vector_from_tree): Likewise.
14706         * optabs.c: Include rtx-vector-builder.h.
14707         (expand_vec_perm_var): Use rtx_vector_builder and create a repeating
14708         sequence of "u" values.
14709         * vec-perm-indices.c: Include rtx-vector-builder.h.
14710         (vec_perm_indices_to_rtx): Use rtx_vector_builder and operate
14711         directly on the vec_perm_indices encoding.
14713 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14715         * doc/rtl.texi (const_vector): Describe new encoding scheme.
14716         * Makefile.in (OBJS): Add rtx-vector-builder.o.
14717         * rtx-vector-builder.h: New file.
14718         * rtx-vector-builder.c: Likewise.
14719         * rtl.h (rtx_def::u2): Add a const_vector field.
14720         (CONST_VECTOR_NPATTERNS): New macro.
14721         (CONST_VECTOR_NELTS_PER_PATTERN): Likewise.
14722         (CONST_VECTOR_DUPLICATE_P): Likewise.
14723         (CONST_VECTOR_STEPPED_P): Likewise.
14724         (CONST_VECTOR_ENCODED_ELT): Likewise.
14725         (const_vec_duplicate_p): Check for a duplicated vector encoding.
14726         (unwrap_const_vec_duplicate): Likewise.
14727         (const_vec_series_p): Check for a non-duplicated vector encoding.
14728         Say that the function only returns true for integer vectors.
14729         * emit-rtl.c: Include rtx-vector-builder.h.
14730         (gen_const_vec_duplicate_1): Delete.
14731         (gen_const_vector): Call gen_const_vec_duplicate instead of
14732         gen_const_vec_duplicate_1.
14733         (const_vec_series_p_1): Operate directly on the CONST_VECTOR encoding.
14734         (gen_const_vec_duplicate): Use rtx_vector_builder.
14735         (gen_const_vec_series): Likewise.
14736         (gen_rtx_CONST_VECTOR): Likewise.
14737         * config/powerpcspe/powerpcspe.c: Include rtx-vector-builder.h.
14738         (swap_const_vector_halves): Take an rtx pointer rather than rtx.
14739         Build a new vector rather than modifying a CONST_VECTOR in-place.
14740         (handle_special_swappables): Update call accordingly.
14741         * config/rs6000/rs6000-p8swap.c: Include rtx-vector-builder.h.
14742         (swap_const_vector_halves): Take an rtx pointer rather than rtx.
14743         Build a new vector rather than modifying a CONST_VECTOR in-place.
14744         (handle_special_swappables): Update call accordingly.
14746 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14748         * simplify-rtx.c (simplify_const_binary_operation): Use
14749         CONST_VECTOR_ELT instead of XVECEXP.
14751 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14753         * tree-cfg.c (verify_gimple_assign_ternary): Allow the size of
14754         the selector elements to be different from the data elements
14755         if the selector is a VECTOR_CST.
14756         * tree-vect-stmts.c (vect_gen_perm_mask_any): Use a vector of
14757         ssizetype for the selector.
14759 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14761         * optabs.c (shift_amt_for_vec_perm_mask): Try using series_p
14762         before testing each element individually.
14763         * tree-vect-generic.c (lower_vec_perm): Likewise.
14765 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14767         * selftest.h (selftest::vec_perm_indices_c_tests): Declare.
14768         * selftest-run-tests.c (selftest::run_tests): Call it.
14769         * vector-builder.h (vector_builder::operator ==): New function.
14770         (vector_builder::operator !=): Likewise.
14771         * vec-perm-indices.h (vec_perm_indices::series_p): Declare.
14772         (vec_perm_indices::all_from_input_p): New function.
14773         * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
14774         (test_vec_perm_12, selftest::vec_perm_indices_c_tests): Likewise.
14775         * fold-const.c (fold_ternary_loc): Use tree_to_vec_perm_builder
14776         instead of reading the VECTOR_CST directly.  Detect whether both
14777         vector inputs are the same before constructing the vec_perm_indices,
14778         and update the number of inputs argument accordingly.  Use the
14779         utility functions added above.  Only construct sel2 if we need to.
14781 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14783         * optabs.c (expand_vec_perm_var): Use an explicit encoding for
14784         the broadcast of the low byte.
14785         (expand_mult_highpart): Use an explicit encoding for the permutes.
14786         * optabs-query.c (can_mult_highpart_p): Likewise.
14787         * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Likewise.
14788         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
14789         (vectorizable_bswap): Likewise.
14790         * tree-vect-data-refs.c (vect_grouped_store_supported): Use an
14791         explicit encoding for the power-of-2 permutes.
14792         (vect_permute_store_chain): Likewise.
14793         (vect_grouped_load_supported): Likewise.
14794         (vect_permute_load_chain): Likewise.
14796 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14798         * vec-perm-indices.h (vec_perm_indices_to_tree): Declare.
14799         * vec-perm-indices.c (vec_perm_indices_to_tree): New function.
14800         * tree-ssa-forwprop.c (simplify_vector_constructor): Use it.
14801         * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
14802         * tree-vect-stmts.c (vectorizable_bswap): Likewise.
14803         (vect_gen_perm_mask_any): Likewise.
14805 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14807         * int-vector-builder.h: New file.
14808         * vec-perm-indices.h: Include int-vector-builder.h.
14809         (vec_perm_indices): Redefine as an int_vector_builder.
14810         (auto_vec_perm_indices): Delete.
14811         (vec_perm_builder): Redefine as a stand-alone class.
14812         (vec_perm_indices::vec_perm_indices): New function.
14813         (vec_perm_indices::clamp): Likewise.
14814         * vec-perm-indices.c: Include fold-const.h and tree-vector-builder.h.
14815         (vec_perm_indices::new_vector): New function.
14816         (vec_perm_indices::new_expanded_vector): Update for new
14817         vec_perm_indices class.
14818         (vec_perm_indices::rotate_inputs): New function.
14819         (vec_perm_indices::all_in_range_p): Operate directly on the
14820         encoded form, without computing elided elements.
14821         (tree_to_vec_perm_builder): Operate directly on the VECTOR_CST
14822         encoding.  Update for new vec_perm_indices class.
14823         * optabs.c (expand_vec_perm_const): Create a vec_perm_indices for
14824         the given vec_perm_builder.
14825         (expand_vec_perm_var): Update vec_perm_builder constructor.
14826         (expand_mult_highpart): Use vec_perm_builder instead of
14827         auto_vec_perm_indices.
14828         * optabs-query.c (can_mult_highpart_p): Use vec_perm_builder and
14829         vec_perm_indices instead of auto_vec_perm_indices.  Use a single
14830         or double series encoding as appropriate.
14831         * fold-const.c (fold_ternary_loc): Use vec_perm_builder and
14832         vec_perm_indices instead of auto_vec_perm_indices.
14833         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
14834         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
14835         (vect_permute_store_chain): Likewise.
14836         (vect_grouped_load_supported): Likewise.
14837         (vect_permute_load_chain): Likewise.
14838         (vect_shift_permute_load_chain): Likewise.
14839         * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
14840         (vect_transform_slp_perm_load): Likewise.
14841         (vect_schedule_slp_instance): Likewise.
14842         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
14843         (vectorizable_mask_load_store): Likewise.
14844         (vectorizable_bswap): Likewise.
14845         (vectorizable_store): Likewise.
14846         (vectorizable_load): Likewise.
14847         * tree-vect-generic.c (lower_vec_perm): Use vec_perm_builder and
14848         vec_perm_indices instead of auto_vec_perm_indices.  Use
14849         tree_to_vec_perm_builder to read the vector from a tree.
14850         * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Take a
14851         vec_perm_builder instead of a vec_perm_indices.
14852         (have_whole_vector_shift): Use vec_perm_builder and
14853         vec_perm_indices instead of auto_vec_perm_indices.  Leave the
14854         truncation to calc_vec_perm_mask_for_shift.
14855         (vect_create_epilog_for_reduction): Likewise.
14856         * config/aarch64/aarch64.c (expand_vec_perm_d::perm): Change
14857         from auto_vec_perm_indices to vec_perm_indices.
14858         (aarch64_expand_vec_perm_const_1): Use rotate_inputs on d.perm
14859         instead of changing individual elements.
14860         (aarch64_vectorize_vec_perm_const): Use new_vector to install
14861         the vector in d.perm.
14862         * config/arm/arm.c (expand_vec_perm_d::perm): Change
14863         from auto_vec_perm_indices to vec_perm_indices.
14864         (arm_expand_vec_perm_const_1): Use rotate_inputs on d.perm
14865         instead of changing individual elements.
14866         (arm_vectorize_vec_perm_const): Use new_vector to install
14867         the vector in d.perm.
14868         * config/powerpcspe/powerpcspe.c (rs6000_expand_extract_even):
14869         Update vec_perm_builder constructor.
14870         (rs6000_expand_interleave): Likewise.
14871         * config/rs6000/rs6000.c (rs6000_expand_extract_even): Likewise.
14872         (rs6000_expand_interleave): Likewise.
14874 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14876         * optabs-query.c (can_vec_perm_var_p): Check whether lowering
14877         to qimode could truncate the indices.
14878         * optabs.c (expand_vec_perm_var): Likewise.
14880 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14882         * Makefile.in (OBJS): Add vec-perm-indices.o.
14883         * vec-perm-indices.h: New file.
14884         * vec-perm-indices.c: Likewise.
14885         * target.h (vec_perm_indices): Replace with a forward class
14886         declaration.
14887         (auto_vec_perm_indices): Move to vec-perm-indices.h.
14888         * optabs.h: Include vec-perm-indices.h.
14889         (expand_vec_perm): Delete.
14890         (selector_fits_mode_p, expand_vec_perm_var): Declare.
14891         (expand_vec_perm_const): Declare.
14892         * target.def (vec_perm_const_ok): Replace with...
14893         (vec_perm_const): ...this new hook.
14894         * doc/tm.texi.in (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Replace with...
14895         (TARGET_VECTORIZE_VEC_PERM_CONST): ...this new hook.
14896         * doc/tm.texi: Regenerate.
14897         * optabs.def (vec_perm_const): Delete.
14898         * doc/md.texi (vec_perm_const): Likewise.
14899         (vec_perm): Refer to TARGET_VECTORIZE_VEC_PERM_CONST.
14900         * expr.c (expand_expr_real_2): Use expand_vec_perm_const rather than
14901         expand_vec_perm for constant permutation vectors.  Assert that
14902         the mode of variable permutation vectors is the integer equivalent
14903         of the mode that is being permuted.
14904         * optabs-query.h (selector_fits_mode_p): Declare.
14905         * optabs-query.c: Include vec-perm-indices.h.
14906         (selector_fits_mode_p): New function.
14907         (can_vec_perm_const_p): Check whether targetm.vectorize.vec_perm_const
14908         is defined, instead of checking whether the vec_perm_const_optab
14909         exists.  Use targetm.vectorize.vec_perm_const instead of
14910         targetm.vectorize.vec_perm_const_ok.  Check whether the indices
14911         fit in the vector mode before using a variable permute.
14912         * optabs.c (shift_amt_for_vec_perm_mask): Take a mode and a
14913         vec_perm_indices instead of an rtx.
14914         (expand_vec_perm): Replace with...
14915         (expand_vec_perm_const): ...this new function.  Take the selector
14916         as a vec_perm_indices rather than an rtx.  Also take the mode of
14917         the selector.  Update call to shift_amt_for_vec_perm_mask.
14918         Use targetm.vectorize.vec_perm_const instead of vec_perm_const_optab.
14919         Use vec_perm_indices::new_expanded_vector to expand the original
14920         selector into bytes.  Check whether the indices fit in the vector
14921         mode before using a variable permute.
14922         (expand_vec_perm_var): Make global.
14923         (expand_mult_highpart): Use expand_vec_perm_const.
14924         * fold-const.c: Includes vec-perm-indices.h.
14925         * tree-ssa-forwprop.c: Likewise.
14926         * tree-vect-data-refs.c: Likewise.
14927         * tree-vect-generic.c: Likewise.
14928         * tree-vect-loop.c: Likewise.
14929         * tree-vect-slp.c: Likewise.
14930         * tree-vect-stmts.c: Likewise.
14931         * config/aarch64/aarch64-protos.h (aarch64_expand_vec_perm_const):
14932         Delete.
14933         * config/aarch64/aarch64-simd.md (vec_perm_const<mode>): Delete.
14934         * config/aarch64/aarch64.c (aarch64_expand_vec_perm_const)
14935         (aarch64_vectorize_vec_perm_const_ok): Fuse into...
14936         (aarch64_vectorize_vec_perm_const): ...this new function.
14937         (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
14938         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
14939         * config/arm/arm-protos.h (arm_expand_vec_perm_const): Delete.
14940         * config/arm/vec-common.md (vec_perm_const<mode>): Delete.
14941         * config/arm/arm.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
14942         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
14943         (arm_expand_vec_perm_const, arm_vectorize_vec_perm_const_ok): Merge
14944         into...
14945         (arm_vectorize_vec_perm_const): ...this new function.  Explicitly
14946         check for NEON modes.
14947         * config/i386/i386-protos.h (ix86_expand_vec_perm_const): Delete.
14948         * config/i386/sse.md (VEC_PERM_CONST, vec_perm_const<mode>): Delete.
14949         * config/i386/i386.c (ix86_expand_vec_perm_const_1): Update comment.
14950         (ix86_expand_vec_perm_const, ix86_vectorize_vec_perm_const_ok): Merge
14951         into...
14952         (ix86_vectorize_vec_perm_const): ...this new function.  Incorporate
14953         the old VEC_PERM_CONST conditions.
14954         * config/ia64/ia64-protos.h (ia64_expand_vec_perm_const): Delete.
14955         * config/ia64/vect.md (vec_perm_const<mode>): Delete.
14956         * config/ia64/ia64.c (ia64_expand_vec_perm_const)
14957         (ia64_vectorize_vec_perm_const_ok): Merge into...
14958         (ia64_vectorize_vec_perm_const): ...this new function.
14959         * config/mips/loongson.md (vec_perm_const<mode>): Delete.
14960         * config/mips/mips-msa.md (vec_perm_const<mode>): Delete.
14961         * config/mips/mips-ps-3d.md (vec_perm_constv2sf): Delete.
14962         * config/mips/mips-protos.h (mips_expand_vec_perm_const): Delete.
14963         * config/mips/mips.c (mips_expand_vec_perm_const)
14964         (mips_vectorize_vec_perm_const_ok): Merge into...
14965         (mips_vectorize_vec_perm_const): ...this new function.
14966         * config/powerpcspe/altivec.md (vec_perm_constv16qi): Delete.
14967         * config/powerpcspe/paired.md (vec_perm_constv2sf): Delete.
14968         * config/powerpcspe/spe.md (vec_perm_constv2si): Delete.
14969         * config/powerpcspe/vsx.md (vec_perm_const<mode>): Delete.
14970         * config/powerpcspe/powerpcspe-protos.h (altivec_expand_vec_perm_const)
14971         (rs6000_expand_vec_perm_const): Delete.
14972         * config/powerpcspe/powerpcspe.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK):
14973         Delete.
14974         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
14975         (altivec_expand_vec_perm_const_le): Take each operand individually.
14976         Operate on constant selectors rather than rtxes.
14977         (altivec_expand_vec_perm_const): Likewise.  Update call to
14978         altivec_expand_vec_perm_const_le.
14979         (rs6000_expand_vec_perm_const): Delete.
14980         (rs6000_vectorize_vec_perm_const_ok): Delete.
14981         (rs6000_vectorize_vec_perm_const): New function.
14982         (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
14983         an element count and rtx array.
14984         (rs6000_expand_extract_even): Update call accordingly.
14985         (rs6000_expand_interleave): Likewise.
14986         * config/rs6000/altivec.md (vec_perm_constv16qi): Delete.
14987         * config/rs6000/paired.md (vec_perm_constv2sf): Delete.
14988         * config/rs6000/vsx.md (vec_perm_const<mode>): Delete.
14989         * config/rs6000/rs6000-protos.h (altivec_expand_vec_perm_const)
14990         (rs6000_expand_vec_perm_const): Delete.
14991         * config/rs6000/rs6000.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
14992         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
14993         (altivec_expand_vec_perm_const_le): Take each operand individually.
14994         Operate on constant selectors rather than rtxes.
14995         (altivec_expand_vec_perm_const): Likewise.  Update call to
14996         altivec_expand_vec_perm_const_le.
14997         (rs6000_expand_vec_perm_const): Delete.
14998         (rs6000_vectorize_vec_perm_const_ok): Delete.
14999         (rs6000_vectorize_vec_perm_const): New function.  Remove stray
15000         reference to the SPE evmerge intructions.
15001         (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
15002         an element count and rtx array.
15003         (rs6000_expand_extract_even): Update call accordingly.
15004         (rs6000_expand_interleave): Likewise.
15005         * config/sparc/sparc.md (vec_perm_constv8qi): Delete in favor of...
15006         * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): ...this
15007         new function.
15008         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
15010 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
15012         * optabs.c (expand_vec_perm_1): Assert that SEL has an integer
15013         vector mode and that that mode matches the mode of the data
15014         being permuted.
15015         (expand_vec_perm): Split handling of non-CONST_VECTOR selectors
15016         out into expand_vec_perm_var.  Do all CONST_VECTOR handling here,
15017         directly using expand_vec_perm_1 when forcing selectors into
15018         registers.
15019         (expand_vec_perm_var): New function, split out from expand_vec_perm.
15021 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
15023         * optabs-query.h (can_vec_perm_p): Delete.
15024         (can_vec_perm_var_p, can_vec_perm_const_p): Declare.
15025         * optabs-query.c (can_vec_perm_p): Split into...
15026         (can_vec_perm_var_p, can_vec_perm_const_p): ...these two functions.
15027         (can_mult_highpart_p): Use can_vec_perm_const_p to test whether a
15028         particular selector is valid.
15029         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
15030         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
15031         (vect_grouped_load_supported): Likewise.
15032         (vect_shift_permute_load_chain): Likewise.
15033         * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
15034         (vect_transform_slp_perm_load): Likewise.
15035         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
15036         (vectorizable_bswap): Likewise.
15037         (vect_gen_perm_mask_checked): Likewise.
15038         * fold-const.c (fold_ternary_loc): Likewise.  Don't take
15039         implementations of variable permutation vectors into account
15040         when deciding which selector to use.
15041         * tree-vect-loop.c (have_whole_vector_shift): Don't check whether
15042         vec_perm_const_optab is supported; instead use can_vec_perm_const_p
15043         with a false third argument.
15044         * tree-vect-generic.c (lower_vec_perm): Use can_vec_perm_const_p
15045         to test whether the constant selector is valid and can_vec_perm_var_p
15046         to test whether a variable selector is valid.
15048 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
15050         * optabs-query.h (can_vec_perm_p): Take a const vec_perm_indices *.
15051         * optabs-query.c (can_vec_perm_p): Likewise.
15052         * fold-const.c (fold_vec_perm): Take a const vec_perm_indices &
15053         instead of vec_perm_indices.
15054         * tree-vectorizer.h (vect_gen_perm_mask_any): Likewise,
15055         (vect_gen_perm_mask_checked): Likewise,
15056         * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise,
15057         (vect_gen_perm_mask_checked): Likewise,
15059 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
15061         * optabs-query.h (qimode_for_vec_perm): Declare.
15062         * optabs-query.c (can_vec_perm_p): Split out qimode search to...
15063         (qimode_for_vec_perm): ...this new function.
15064         * optabs.c (expand_vec_perm): Use qimode_for_vec_perm.
15066 2018-01-02  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
15068         * rtlanal.c (canonicalize_condition): Return 0 if final rtx
15069         does not have a conditional at the top.
15071 2018-01-02  Richard Biener  <rguenther@suse.de>
15073         * ipa-inline.c (big_speedup_p): Fix expression.
15075 2018-01-02  Jan Hubicka  <hubicka@ucw.cz>
15077         PR target/81616
15078         * config/i386/x86-tune-costs.h: Increase cost of integer load costs
15079         for generic 4->6.
15081 2018-01-02  Jan Hubicka  <hubicka@ucw.cz>
15083         PR target/81616
15084         Generic tuning.
15085         * x86-tune-costs.h (generic_cost): Reduce cost of FDIV 20->17,
15086         cost of sqrt 20->14, DIVSS 18->13, DIVSD 32->17, SQRtSS 30->14
15087         and SQRTsD 58->18, cond_not_taken_branch_cost. 2->1. Increase
15088         cond_taken_branch_cost 3->4.
15090 2018-01-01  Jakub Jelinek  <jakub@redhat.com>
15092         PR tree-optimization/83581
15093         * tree-loop-distribution.c (pass_loop_distribution::execute): Return
15094         TODO_cleanup_cfg if any changes have been made.
15096         PR middle-end/83608
15097         * expr.c (store_expr_with_bounds): Use simplify_gen_subreg instead of
15098         convert_modes if target mode has the right side, but different mode
15099         class.
15101         PR middle-end/83609
15102         * expr.c (expand_assignment): Fix up a typo in simplify_gen_subreg
15103         last argument when extracting from CONCAT.  If either from_real or
15104         from_imag is NULL, use expansion through memory.  If result is not
15105         a CONCAT and simplify_gen_subreg fails, try to simplify_gen_subreg
15106         the parts directly to inner mode, if even that fails, use expansion
15107         through memory.
15109         PR middle-end/83623
15110         * expmed.c (expand_shift_1): For 2-byte rotates by BITS_PER_UNIT,
15111         check for bswap in mode rather than HImode and use that in expand_unop
15112         too.
15114 Copyright (C) 2018 Free Software Foundation, Inc.
15116 Copying and distribution of this file, with or without modification,
15117 are permitted in any medium without royalty provided the copyright
15118 notice and this notice are preserved.