S/390: Fix __builtin_tbeginc signature
[platform/upstream/gcc.git] / gcc / ChangeLog
1 2018-06-05  Andreas Krebbel  <krebbel@linux.ibm.com>
2
3         * config/s390/s390-builtin-types.def: Add void function type.
4         * config/s390/s390-builtins.def: Use the function type for the
5         tbeginc builtin.
6
7 2018-06-04  Jim Wilson  <jimw@sifive.com>
8
9         * config/riscv/riscv-protos.h (riscv_expand_epilogue): Change bool arg
10         to int.
11         * config/riscv/riscv.c (riscv_for_each_saved_reg): New args epilogue
12         and maybe_eh_return.  Change regno to unsigned int.  Use new args to
13         handle EH_RETURN_DATA_REGNO registers properly.
14         (riscv_expand_prologue): Pass new args to riscv_for_each_saved_reg.
15         (riscv_expand_epilogue): Update comment.  Change argument name and
16         type.  Update code to use new name and type.  Pass new args to
17         riscv_for_each_saved_reg.  Only use EH_RETURN_STACKADJ_RTX when
18         EXCEPTION_RETURN.
19         * config/riscv/riscv.md (NORMAL_RETURN): New.
20         (SIBCALL_RETURN, EXCEPTION_RETURN): New.
21         (epilogue, sibcall_epilogue): Update riscv_expand_epilogue arg.
22         (eh_return): Call gen_eh_return_internal and emit barrier.
23         (eh_return_internal): Call riscv_expand_epilogue.
24
25 2018-06-04  Eric Botcazou  <ebotcazou@adacore.com>
26
27         * gimple-ssa-store-merging.c (struct merged_store_group): Move up
28         bit_insertion field and declare can_be_merged_into method.
29         (merged_store_group::can_be_merged_into): New method.
30         (imm_store_chain_info::coalesce_immediate): Call it to decide whether
31         consecutive non-overlapping stores can be merged.  Turn MEM_REF stores
32         into BIT_INSERT_EXPR stores if the group contains a non-MEM_REF store.
33
34 2018-06-04  Richard Biener  <rguenther@suse.de>
35
36         PR tree-optimization/85955
37         * builtins.c (fold_builtin_sincos): Convert pointers to
38         destination to appropriate type before dereferencing.
39
40 2018-06-04  Segher Boessenkool  <segher@kernel.crashing.org>
41
42         * config/rs6000/rs6000.md (abs<mode>2 for FLOAT128): Handle IFmode.
43
44 2018-06-04  Richard Sandiford  <richard.sandiford@linaro.org>
45
46         * expr.c (expand_expr_real_1): Force the operand into memory if
47         its TYPE_MODE is BLKmode and if there is no integer mode for
48         the number of bits being extracted.
49
50 2018-06-04  Jakub Jelinek  <jakub@redhat.com>
51
52         PR target/85832
53         PR target/86036
54         * config/i386/sse.md (<avx512>_eq<mode>3<mask_scalar_merge_name>_1):
55         Use vptestnm rather than vptestm in (=Yc,v,C) variant.
56
57 2018-06-04  Richard Biener  <rguenther@suse.de>
58
59         * tree-cfgcleanup.c (cleanup_tree_cfg_1): Fold into...
60         (cleanup_tree_cfg_noloop): ... single caller.  Do
61         start_recording_case_labels later.
62
63 2018-06-04  Sebastian Peryt  <sebastian.peryt@intel.com>
64
65         * config/i386/cldemoteintrin.h: Change define from _X86INTRIN_H_INCLUDED
66         to _IMMINTRIN_H_INCLUDED.
67         * config/i386/pconfigintrin.h: Ditto.
68         * config/i386/waitpkgintrin.h: Ditto.
69         * config/i386/immintrin.h: Add includes for sgxintrin.h,
70         pconfigintrin.h, waitpkgintrin.h and cldemoteintrin.h.
71         * config/i386/x86intrin.h: Remove includes for mintrin.h, xmmintrin.h,
72         emmintrin.h, pmmintrin.h, tmmintrin.h, smmintrin.h, wmmintrin.h,
73         bmiintrin.h, bmi2intrin.h, lzcntintrin.h, sgxintrin.h, pconfigintrin.h,
74         waitpkgintrin.h and cldemoteintrin.h.
75
76 2018-06-04  Richard Biener  <rguenther@suse.de>
77
78         PR tree-optimization/86038
79         * tracer.c (find_best_successor): Check probability for
80         being initialized, bail out if not.
81
82 2018-06-04  Richard Earnshaw  <rearnsha@arm.com>
83
84         PR target/86003
85         * config/arm/arm-cpus.in (ALL_QUIRKS): Add xscale feature to the list
86         of bits to ignore when comparing architectures.
87
88 2018-06-04  Jakub Jelinek  <jakub@redhat.com>
89
90         PR tree-optimization/69615
91         * fold-const.c (merge_ranges): If range1 is - [x, x] and x is the
92         maximum or minimum of the type, try to merge it also as if
93         range1 is + [-, x - 1] or + [x + 1, -].
94
95         PR c++/86025
96         * tree.c (inchash::add_expr): Handle IDENTIFIER_NODE.
97
98 2018-06-03  Eric Botcazou  <ebotcazou@adacore.com>
99
100         PR tree-optimization/86034
101         * gimple-ssa-store-merging.c (output_merged_store): Convert the RHS to
102         the unsigned bitfield type in a bit insertion sequence if it does not
103         have a larger precision than the bitfield size.
104         (process_store): Also bypass widening conversions for BIT_INSERT_EXPR.
105
106 2018-06-03  Kito Cheng  <kito.cheng@gmail.com>
107
108         * config/nds32/nds32-peephole2.md: Add new patterns for code size.
109
110 2018-06-03  Chung-Ju Wu  <jasonwucj@gmail.com>
111
112         * config/nds32/nds32-opts.h (nds32_arch_type): Add ARCH_V3J.
113         * config/nds32/nds32.c (nds32_option_override): Consider ARCH_V3J.
114         * config/nds32/nds32.h (TARGET_ISA_V3): Add ARCH_V3J checking.
115         * config/nds32/nds32.opt (march): Add enum value Value(ARCH_V3J).
116
117 2018-06-03  Chung-Ju Wu  <jasonwucj@gmail.com>
118
119         * common/config/nds32/nds32-common.c (nds32_option_optimization_table):
120         Disable -fdelete-null-pointer-checks for ELF toolchain.
121
122 2018-06-02  Chung-Ju Wu  <jasonwucj@gmail.com>
123             Kito Cheng  <kito.cheng@gmail.com>
124
125         * config.gcc (nds32*): Use nds32-linux.opt and nds32-elf.opt.
126         (nds32le-*-*, nds32be-*-*): Integrate checking process.
127         (nds32*-*-*): Add glibc and uclibc conditions.
128         * common/config/nds32/nds32-common.c (nds32_except_unwind_info): New.
129         (TARGET_EXCEPT_UNWIND_INFO): Define.
130         * config/nds32/elf.h: New file.
131         * config/nds32/linux.h: New file.
132         * config/nds32/nds32-elf.opt: New file.
133         * config/nds32/nds32-linux.opt: New file.
134         * config/nds32/nds32-fp-as-gp.c
135         (pass_nds32_fp_as_gp::gate): Consider TARGET_LINUX_ABI.
136         * config/nds32/nds32.c (nds32_conditional_register_usage): Consider
137         TARGET_LINUX_ABI.
138         (nds32_asm_file_end): Ditto.
139         (nds32_print_operand): Ditto.
140         (nds32_insert_attributes): Ditto.
141         (nds32_init_libfuncs): New function.
142         (TARGET_HAVE_TLS): Define.
143         (TARGET_INIT_LIBFUNCS): Define.
144         * config/nds32/nds32.h (TARGET_DEFAULT_RELAX): Apply different relax
145         spec content.
146         (TARGET_ELF): Apply different mcmodel setting.
147         (LINK_SPEC, LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): The content has
148         been migrated into elf.h and linux.h files.
149         * config/nds32/nds32.md (add_pc): Consider TARGET_LINUX_ABI.
150         * config/nds32/nds32.opt (mvh): Consider TARGET_LINUX_ABI.
151         (mcmodel): The content has been migrated into nds32-elf.opt and
152         nds32-linux.opt files.
153         * config/nds32/t-elf: New file.
154         * config/nds32/t-linux: New file.
155
156 2018-06-02  Chung-Ju Wu  <jasonwucj@gmail.com>
157             Shiva Chen  <shiva0217@gmail.com>
158
159         * config/nds32/constants.md (unspec_volatile_element): Add
160         UNSPEC_VOLATILE_OMIT_FP_BEGIN and UNSPEC_VOLATILE_OMIT_FP_END.
161         * config/nds32/nds32-fp-as-gp.c: New implementation of fp_as_gp
162         optimization.
163         * config/nds32/nds32-protos.h (nds32_naked_function_p): Declare.
164         (make_pass_nds32_fp_as_gp): Declare.
165         * config/nds32/nds32.c (nds32_register_passes): Add fp_as_gp as one
166         optmization pass.
167         (nds32_asm_function_end_prologue): Remove unused asm output.
168         (nds32_asm_function_begin_epilogue): Remove unused asm output.
169         (nds32_asm_file_start): Output necessary fp_as_gp information.
170         (nds32_option_override): Adjust register usage.
171         (nds32_expand_prologue): Consider fp_as_gp situation.
172         (nds32_expand_prologue_v3push): Consider fp_as_gp situation.
173         * config/nds32/nds32.md (prologue): Check fp_as_gp_p and naked_p.
174         (epilogue): Ditto.
175         (return): Ditto.
176         (simple_return): Ditto.
177         (omit_fp_begin): Output special directive for fp_as_gp.
178         (omit_fp_end): Output special directive for fp_as_gp.
179         * config/nds32/nds32.opt (mfp-as-gp, mno-fp-as-gp, mforce-fp-as-gp,
180         mforbid-fp-as-gp): New options.
181
182 2018-06-01  Mark Wielaard  <mark@klomp.org>
183
184         * dwarf2out.c (dwarf2out_finish): Remove generation of
185         DW_AT_loclists_base.
186
187 2018-06-01  Eric Botcazou  <ebotcazou@adacore.com>
188
189         * gimple-ssa-store-merging.c: Include gimple-fold.h.
190         (struct store_immediate_info): Document BIT_INSERT_EXPR stores.
191         (struct merged_store_group): Add bit_insertion field.
192         (dump_char_array): Use standard hexadecimal format.
193         (merged_store_group::merged_store_group): Set bit_insertion to false.
194         (merged_store_group::apply_stores): Use optimal buffer size.  Deal
195         with BIT_INSERT_EXPR stores.  Move up code updating the mask and
196         also print the mask in the dump file.
197         (pass_store_merging::gate): Minor tweak.
198         (imm_store_chain_info::coalesce_immediate): Fix wrong association
199         of stores with groups in dump.  Allow coalescing of BIT_INSERT_EXPR
200         stores with INTEGER_CST stores.
201         (count_multiple_uses) <BIT_INSERT_EXPR>: New case.
202         (imm_store_chain_info::output_merged_store): Add try_bitpos variable
203         and use it throughout.  Generate bit insertion sequences if need be.
204         (pass_store_merging::process_store): Remove redundant condition.
205         Record stores from a SSA name to a bit-field with BIT_INSERT_EXPR.
206
207 2018-06-01  Segher Boessenkool  <segher@kernel.crashing.org>
208
209         * config/rs6000/rs6000.c (rs6000_mangle_type): Change the mangling of
210         the 128-bit floating point types.  Fix function comment.
211
212 2018-06-01  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
213
214         * config/aarch64/aarch64-simd.md
215         (aarch64_simd_vec_unpack<su>_lo_<mode>): Use UXTL and SXTL assembler
216         mnemonics.
217         (aarch64_simd_vec_unpack<su>_hi_<mode>): Use UXTL2 and SXTL2 assembler
218         mnemonics.
219
220 2018-06-01  Richard Sandiford  <richard.sandiford@linaro.org>
221
222         PR tree-optimization/85989
223         * gimple-ssa-backprop.c (backprop::m_visited_phis): New member
224         variable.
225         (backprop::intersect_uses): Check it when deciding whether this
226         is a backedge reference.
227         (backprop::process_block): Add each phi to m_visited_phis
228         after visiting it, then clear it at the end.
229
230 2018-06-01  Richard Biener  <rguenther@suse.de>
231
232         * tree-vectorizer.h (vect_dr_stmt): New function.
233         (vect_get_load_cost): Adjust.
234         (vect_get_store_cost): Likewise.
235         * tree-vect-data-refs.c (vect_analyze_data_ref_dependence):
236         Use vect_dr_stmt instead of DR_SMTT.
237         (vect_record_base_alignments): Likewise.
238         (vect_calculate_target_alignment): Likewise.
239         (vect_compute_data_ref_alignment): Likewise and make static.
240         (vect_update_misalignment_for_peel): Likewise.
241         (vect_verify_datarefs_alignment): Likewise.
242         (vector_alignment_reachable_p): Likewise.
243         (vect_get_data_access_cost): Likewise.  Pass down
244         vinfo to vect_get_load_cost/vect_get_store_cost instead of DR.
245         (vect_get_peeling_costs_all_drs): Likewise.
246         (vect_peeling_hash_get_lowest_cost): Likewise.
247         (vect_enhance_data_refs_alignment): Likewise.
248         (vect_find_same_alignment_drs): Likewise.
249         (vect_analyze_data_refs_alignment): Likewise.
250         (vect_analyze_group_access_1): Likewise.
251         (vect_analyze_group_access): Likewise.
252         (vect_analyze_data_ref_access): Likewise.
253         (vect_analyze_data_ref_accesses): Likewise.
254         (vect_vfa_segment_size): Likewise.
255         (vect_small_gap_p): Likewise.
256         (vectorizable_with_step_bound_p): Likewise.
257         (vect_prune_runtime_alias_test_list): Likewise.
258         (vect_analyze_data_refs): Likewise.
259         (vect_supportable_dr_alignment): Likewise.
260         * tree-vect-loop-manip.c (get_misalign_in_elems): Likewise.
261         (vect_gen_prolog_loop_niters): Likewise.
262         * tree-vect-loop.c (vect_analyze_loop_2): Likewise.
263         * tree-vect-patterns.c (vect_recog_bool_pattern): Do not
264         modify DR_STMT.
265         (vect_recog_mask_conversion_pattern): Likewise.
266         (vect_try_gather_scatter_pattern): Likewise.
267         * tree-vect-stmts.c (vect_model_store_cost): Pass stmt_info
268         to vect_get_store_cost.
269         (vect_get_store_cost): Get stmt_info instead of DR.
270         (vect_model_load_cost): Pass stmt_info to vect_get_load_cost.
271         (vect_get_load_cost): Get stmt_info instead of DR.
272
273 2018-06-01  Richard Biener  <rguenther@suse.de>
274
275         PR middle-end/86017
276         * gimple-fold.c (var_decl_component_p): Also allow offsetted
277         vars wrapped in MEM_REFs.
278
279 2018-06-01  Richard Sandiford  <richard.sandiford@linaro.org>
280
281         * config/aarch64/aarch64.c (aarch64_ira_change_pseudo_allocno_class):
282         Fix subreg tests so that we only return a choice between
283         GENERAL_REGS and FP_REGS if the original classes included both.
284
285 2018-06-01  Richard Biener  <rguenther@suse.de>
286
287         PR ipa/85960
288         * tree-ssa-structalias.c (get_function_part_constraint):
289         Handle NULL fi->decl.
290         (find_func_aliases_for_call): Properly handle indirect
291         fi from direct call.
292         (find_func_clobbers): Likewise.
293         (ipa_pta_execute): Likewise.
294         (create_variable_info_for): For functions that are ifunc_resolver
295         resolve to a varinfo that contains the result of the resolver
296         call.
297         (associate_varinfo_to_alias): Do not treat ifunc resolvers as
298         aliases.
299
300 2018-05-31  Michael Collison  <michael.collison@arm.com>
301
302         * config/aarch64/aarch64.md:
303         (*fix_to_zero_extenddfdi2): New pattern.
304         * gcc.target/aarch64/fix_extend1.c: New testcase.
305
306 2018-05-31  Qing Zhao <qing.zhao@oracle.com>
307
308         PR middle-end/78809
309         PR middle-end/83026
310         * builtins.c (expand_builtin): Add the handling of BUILT_IN_STRCMP_EQ
311         and BUILT_IN_STRNCMP_EQ.
312         * builtins.def: Add new builtins BUILT_IN_STRCMP_EQ and
313         BUILT_IN_STRNCMP_EQ.
314         * gimple-fold.c (gimple_fold_builtin_string_compare): Add the
315         handling of BUILTIN_IN_STRCMP_EQ and BUILT_IN_STRNCMP_EQ.
316         (gimple_fold_builtin): Likewise.
317         * tree-ssa-strlen.c (compute_string_length): New function.
318         (determine_min_obsize): New function.
319         (handle_builtin_string_cmp): New function to handle calls to
320         string compare functions.
321         (strlen_optimize_stmt): Add handling to builtin string compare
322         calls.
323         * tree-ssa-structalias.c (find_func_aliases_for_builtin_call):
324         Add the handling of BUILT_IN_STRCMP_EQ and BUILT_IN_STRNCMP_EQ.
325         * tree.c (build_common_builtin_nodes): Add new defines of
326         BUILT_IN_STRNCMP_EQ and BUILT_IN_STRCMP_EQ.
327
328 2018-05-31  Jakub Jelinek  <jakub@redhat.com>
329
330         PR target/85984
331         * bb-reorder.c (pass_partition_blocks::gate): Return false for
332         functions with naked attribute.
333
334 2018-05-31  Uros Bizjak  <ubizjak@gmail.com>
335
336         * config/i386/sse.md (avx_vec_concat<mode>):
337         Substitute concat_tg_mode mode attribute with xtg_mode.
338         (<mask_codefor>avx512dq_broadcast<mode><mask_name>_1): Ditto.
339         (concat_tg_mode): Remove mode attribute.
340
341 2018-05-31  Martin Sebor  <msebor@redhat.com>
342
343         PR c/82063
344         * calls.c (alloc_max_size): Correct a logic error/typo.
345         Treat excessive arguments as infinite.  Warn for invalid arguments.
346         * doc/invoke.texi (-Walloc-size-larger-than): Update.
347
348 2018-05-31  H.J. Lu  <hongjiu.lu@intel.com>
349
350         PR target/85829
351         * config/i386/x86-tune.def: Re-enable partial_reg_dependency
352         and movx for Haswell.
353
354 2018-05-31  Chung-Lin Tang  <cltang@codesourcery.com>
355             Cesar Philippidis  <cesar@codesourcery.com>
356
357         PR middle-end/85879
358         * gimplify.c (gimplify_adjust_omp_clauses): Add 'remove = true'
359         when emitting error on private/firstprivate reductions.
360         * omp-low.c (lower_omp_target): Avoid reference-type processing
361         on pointers for firstprivate clause.
362
363 2018-05-31 Sameera Deshpande <sameera.deshpande@linaro.org>
364
365         * config/aarch64/aarch64-simd-builtins.def (ld1x3): New.
366         (st1x2): Likewise.
367         (st1x3): Likewise.
368         * config/aarch64/aarch64-simd.md
369         (aarch64_ld1x3<VALLDIF:mode>): New pattern.
370         (aarch64_ld1_x3_<mode>): Likewise
371         (aarch64_st1x2<VALLDIF:mode>): Likewise
372         (aarch64_st1_x2_<mode>): Likewise
373         (aarch64_st1x3<VALLDIF:mode>): Likewise
374         (aarch64_st1_x3_<mode>): Likewise
375         * config/aarch64/arm_neon.h (vld1_u8_x3): New function.
376         (vld1_s8_x3): Likewise.
377         (vld1_u16_x3): Likewise.
378         (vld1_s16_x3): Likewise.
379         (vld1_u32_x3): Likewise.
380         (vld1_s32_x3): Likewise.
381         (vld1_u64_x3): Likewise.
382         (vld1_s64_x3): Likewise.
383         (vld1_f16_x3): Likewise.
384         (vld1_f32_x3): Likewise.
385         (vld1_f64_x3): Likewise.
386         (vld1_p8_x3): Likewise.
387         (vld1_p16_x3): Likewise.
388         (vld1_p64_x3): Likewise.
389         (vld1q_u8_x3): Likewise.
390         (vld1q_s8_x3): Likewise.
391         (vld1q_u16_x3): Likewise.
392         (vld1q_s16_x3): Likewise.
393         (vld1q_u32_x3): Likewise.
394         (vld1q_s32_x3): Likewise.
395         (vld1q_u64_x3): Likewise.
396         (vld1q_s64_x3): Likewise.
397         (vld1q_f16_x3): Likewise.
398         (vld1q_f32_x3): Likewise.
399         (vld1q_f64_x3): Likewise.
400         (vld1q_p8_x3): Likewise.
401         (vld1q_p16_x3): Likewise.
402         (vld1q_p64_x3): Likewise.
403         (vst1_s64_x2): Likewise.
404         (vst1_u64_x2): Likewise.
405         (vst1_f64_x2): Likewise.
406         (vst1_s8_x2): Likewise.
407         (vst1_p8_x2): Likewise.
408         (vst1_s16_x2): Likewise.
409         (vst1_p16_x2): Likewise.
410         (vst1_s32_x2): Likewise.
411         (vst1_u8_x2): Likewise.
412         (vst1_u16_x2): Likewise.
413         (vst1_u32_x2): Likewise.
414         (vst1_f16_x2): Likewise.
415         (vst1_f32_x2): Likewise.
416         (vst1_p64_x2): Likewise.
417         (vst1q_s8_x2): Likewise.
418         (vst1q_p8_x2): Likewise.
419         (vst1q_s16_x2): Likewise.
420         (vst1q_p16_x2): Likewise.
421         (vst1q_s32_x2): Likewise.
422         (vst1q_s64_x2): Likewise.
423         (vst1q_u8_x2): Likewise.
424         (vst1q_u16_x2): Likewise.
425         (vst1q_u32_x2): Likewise.
426         (vst1q_u64_x2): Likewise.
427         (vst1q_f16_x2): Likewise.
428         (vst1q_f32_x2): Likewise.
429         (vst1q_f64_x2): Likewise.
430         (vst1q_p64_x2): Likewise.
431         (vst1_s64_x3): Likewise.
432         (vst1_u64_x3): Likewise.
433         (vst1_f64_x3): Likewise.
434         (vst1_s8_x3): Likewise.
435         (vst1_p8_x3): Likewise.
436         (vst1_s16_x3): Likewise.
437         (vst1_p16_x3): Likewise.
438         (vst1_s32_x3): Likewise.
439         (vst1_u8_x3): Likewise.
440         (vst1_u16_x3): Likewise.
441         (vst1_u32_x3): Likewise.
442         (vst1_f16_x3): Likewise.
443         (vst1_f32_x3): Likewise.
444         (vst1_p64_x3): Likewise.
445         (vst1q_s8_x3): Likewise.
446         (vst1q_p8_x3): Likewise.
447         (vst1q_s16_x3): Likewise.
448         (vst1q_p16_x3): Likewise.
449         (vst1q_s32_x3): Likewise.
450         (vst1q_s64_x3): Likewise.
451         (vst1q_u8_x3): Likewise.
452         (vst1q_u16_x3): Likewise.
453         (vst1q_u32_x3): Likewise.
454         (vst1q_u64_x3): Likewise.
455         (vst1q_f16_x3): Likewise.
456         (vst1q_f32_x3): Likewise.
457         (vst1q_f64_x3): Likewise.
458         (vst1q_p64_x3): Likewise.
459
460 2018-05-30  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
461
462         * config/msp430/msp430.c (msp430_output_labelref): Prepend
463         user_label_prefix to name.
464
465         * tree-core.h: Update comment about the format of NAME string
466         passed to handler in attribute_spec.
467
468         * config/msp430/msp430.md: Remove erroneous subreg expression from
469         zero_extendqisi2 insn pattern. Remove msp430x ISA restriction on
470         zero_extend{q,h}isi2.
471
472 2018-05-30  Borislav Petkov  <bp@suse.de>
473
474         * doc/extend.texi: Document some architecture specific
475         constraints and sort entries.
476
477 2018-05-30  Martin Sebor  <msebor@redhat.com>
478
479         PR middle-end/85369
480         * builtins.c (expand_builtin_stpcpy_1): New function.
481         (expand_builtin_stpcpy): Call it, and call maybe_warn_nonstring_arg
482         only if the former succeeds.
483
484 2018-05-31 Sameera Deshpande <sameera.deshpande@linaro.org>
485
486         * config/aarch64/aarch64-cores.def (saphira) : Add support for ARMv8.4
487         in saphira.
488
489 2018-05-30  Jan Hubicka  <hubicka@ucw.cz>
490
491         * doc/invoke.texi (-flinker-output): Document
492
493 2018-05-30  Jan Hubicka  <hubicka@ucw.cz>
494
495         * passes.c (ipa_write_summaries): Only modify statements if body
496         is in memory.
497         * cgraphunit.c (ipa_passes): Also produce intermeidate code when
498         incrementally linking.
499         (ipa_passes): Likewise.
500         * lto-cgraph.c (lto_output_node): When incrementally linking do not
501         pass down resolution info.
502         * common.opt (flag_incremental_link): Update info.
503         * gcc.c (plugin specs): Turn flinker-output=* to
504         -plugin-opt=-linker-output-known
505         * toplev.c (compile_file): Also cut compilation when doing incremental
506         link.
507         * flag-types. (enum lto_partition_model): Add
508         LTO_LINKER_OUTPUT_NOLTOREL.
509         (invoke.texi): Add -flinker-output docs.
510         * ipa.c (symbol_table::remove_unreachable_nodes): Handle LTO incremental
511         link same way as WPA; do not stream in dead initializers.
512
513         * dwarf2out.c (dwarf2out_die_ref_for_decl,
514         darf2out_register_external_decl): Support incremental link.
515
516 2018-05-30  Jan Hubicka  <hubicka@ucw.cz>
517
518         * lto-opts.c (lto_write_options): Skip OPT_dumpdir, OPT_fresolution_.
519
520 2018-05-30  Jan Hubicka  <hubicka@ucw.cz>
521
522         * lto-wrapper.c (debug_objcopy): Add rename parameter; pass
523         it down to simple_object_copy_lto_debug_sections.
524         (run_gcc): Determine incremental LTO link time and configure
525         lto1 into non-wpa mode, disable renaming of debug sections.
526
527 2018-05-30  Kelvin Nilsen  <kelvin@gcc.gnu.org>
528
529         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Remove
530         descriptions of various incorrectly documented functions.
531
532 2018-05-30  Andre Vieira  <andre.simoesdiasvieira@arm.com>
533
534         Revert:
535         * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): Make
536         address check not strict.
537
538 2018-05-30  Richard Biener  <rguenther@suse.de>
539
540         PR tree-optimization/85964
541         * tracer.c (better_p): Drop initialized count check, we only
542         call the function with initialized counts now.
543         (find_best_successor): Do find a best edge if one
544         has uninitialized count.
545         (find_best_predecessor): Likewise.  Do BB frequency check only
546         if count is initialized.
547
548 2017-05-30  Jackson Woodruff  <jackson.woodruff@arm.com>
549
550         * config/aarch64/aarch64.c (aarch64_host_wide_int_compare): New.
551         (aarch64_ldrstr_offset_compare): New.
552         (aarch64_operands_adjust_ok_for_ldpstp): Update to consider all
553         load/store orderings.
554         (aarch64_gen_adjusted_ldpstp): Likewise.
555
556 2018-05-30  Wilco Dijkstra  <wdijkstr@arm.com>
557
558         * config/aarch64/aarch64.c (aarch64_ira_change_pseudo_allocno_class):
559         Check for subset of GENERAL_REGS and FP_REGS.
560         * config/aarch64/aarch64-simd.md (aarch64_get_lane): Increase cost of
561         r=w alternative.
562
563 2018-05-30  Richard Sandiford  <richard.sandiford@linaro.org>
564
565         * alias.c (adjust_offset_for_component_ref): Use poly_int_tree_p
566         and wi::to_poly_offset.  Add the current offset and then check
567         whether the sum fits, rather than using an unchecked addition of
568         a checked term.  Check for a shwi rather than a uhwi.
569         * expr.c (get_bit_range): Use tree_to_poly_uint64.
570         (store_constructor): Use poly_int_tree_p.
571         (expand_expr_real_1): Likewise.
572         * function.c (assign_temp): Likewise.
573         * fold-const.c (const_binop): Use poly_int_tree_p and
574         wi::to_poly_offset.
575         (fold_indirect_ref_1): Likewise.  Use multiple_p to attempt an exact
576         division.
577         * ipa-icf-gimple.c (func_checker::compare_operand): Use
578         to_poly_offset for MEM offsets.
579         * ipa-icf.c (sem_variable::equals): Likewise.
580         * stor-layout.c (compute_record_mode): Use poly_int_tree_p.
581         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): Use
582         wi::to_poly_offset for BIT_FIELD_REF offsets.
583         (vn_reference_maybe_forwprop_address): Use poly_int_tree_p and
584         wi::to_poly_offset.
585         * var-tracking.c (emit_note_insn_var_location): Use
586         tree_to_poly_uint64.
587
588 2018-05-29  Jim Wilson  <jimw@sifive.com>
589
590         * config/riscv/riscv.c (riscv_interrupt_type): Fix comment typo.
591
592 2018-05-29  Uros Bizjak  <ubizjak@gmail.com>
593
594         PR target/85950
595         * config/i386/i386.md (l<rounding_insn><MODEF:mode><SWI48:mode>2):
596         Enable for TARGET_SSE4_1 and generate rounds{s,d} and cvtts{s,d}2si{,q}
597         sequence.
598         (sse4_1_round<mode>2): Use nonimmediate_operand
599         for operand 1 predicate.
600
601 2018-05-29  Martin Sebor  <msebor@redhat.com>
602             Richard Biener  <rguenther@suse.de>
603
604         PR testsuite/85888
605         * calls.c (get_size_range): Call determine_value_range instead
606         of get_value_range..
607         * tree-vrp.h (determine_value_range): Declared new function.
608         * tree-vrp.c (determine_value_range_1, determine_value_range): New.
609
610 2018-05-29  Richard Biener  <rguenther@suse.de>
611
612         * tree-vect-data-refs.c (vect_preserves_scalar_order_p): Make
613         sure to use non-pattern stmts for get_earlier_stmt arguments.
614         * tree-vectorizer.h (get_earlier_stmt): Assert we do not get
615         called on pattern stmts.
616         (get_later_stmt): Likewise.
617
618 2018-05-29  Martin Liska  <mliska@suse.cz>
619
620         PR gcov-profile/85759
621         * doc/gcov.texi: Document GCOV_ERROR_FILE and GCOV_EXIT_AT_ERROR
622         env variables.
623
624 2018-05-29  Jakub Jelinek  <jakub@redhat.com>
625
626         * tree-cfg.c (verify_gimple_assign_unary): Add checking for
627         VEC_UNPACK_*_EXPR.
628         (verify_gimple_assign_binary): Check TYPE_VECTOR_SUBPARTS for
629         VEC_PACK_*_EXPR.
630
631         PR target/85918
632         * tree.def (VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR,
633         VEC_PACK_FLOAT_EXPR): New tree codes.
634         * tree-pretty-print.c (op_code_prio): Handle
635         VEC_UNPACK_FIX_TRUNC_HI_EXPR and VEC_UNPACK_FIX_TRUNC_LO_EXPR.
636         (dump_generic_node): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR,
637         VEC_UNPACK_FIX_TRUNC_LO_EXPR and VEC_PACK_FLOAT_EXPR.
638         * tree-inline.c (estimate_operator_cost): Likewise.
639         * gimple-pretty-print.c (dump_binary_rhs): Handle VEC_PACK_FLOAT_EXPR.
640         * fold-const.c (const_binop): Likewise.
641         (const_unop): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR and
642         VEC_UNPACK_FIX_TRUNC_LO_EXPR.
643         * tree-cfg.c (verify_gimple_assign_unary): Likewise.
644         (verify_gimple_assign_binary): Handle VEC_PACK_FLOAT_EXPR.
645         * cfgexpand.c (expand_debug_expr): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR,
646         VEC_UNPACK_FIX_TRUNC_LO_EXPR and VEC_PACK_FLOAT_EXPR.
647         * expr.c (expand_expr_real_2): Likewise.
648         * optabs.def (vec_packs_float_optab, vec_packu_float_optab,
649         vec_unpack_sfix_trunc_hi_optab, vec_unpack_sfix_trunc_lo_optab,
650         vec_unpack_ufix_trunc_hi_optab, vec_unpack_ufix_trunc_lo_optab): New
651         optabs.
652         * optabs.c (expand_widen_pattern_expr): For
653         VEC_UNPACK_FIX_TRUNC_HI_EXPR and VEC_UNPACK_FIX_TRUNC_LO_EXPR use
654         sign from result type rather than operand's type.
655         (expand_binop_directly): For vec_packu_float_optab and
656         vec_packs_float_optab allow result type to be different from operand's
657         type.
658         * optabs-tree.c (optab_for_tree_code): Handle
659         VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR and
660         VEC_PACK_FLOAT_EXPR.  Formatting fixes.
661         * tree-vect-generic.c (expand_vector_operations_1):  Handle
662         VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR and
663         VEC_PACK_FLOAT_EXPR.
664         * tree-vect-stmts.c (supportable_widening_operation): Handle
665         FIX_TRUNC_EXPR.
666         (supportable_narrowing_operation): Handle FLOAT_EXPR.
667         * config/i386/i386.md (fixprefix, floatprefix): New code attributes.
668         * config/i386/sse.md (*float<floatunssuffix>v2div2sf2): Rename to ...
669         (float<floatunssuffix>v2div2sf2): ... this.  Formatting fix.
670         (vpckfloat_concat_mode, vpckfloat_temp_mode, vpckfloat_op_mode): New
671         mode attributes.
672         (vec_pack<floatprefix>_float_<mode>): New expander.
673         (vunpckfixt_mode, vunpckfixt_model, vunpckfixt_extract_mode): New mode
674         attributes.
675         (vec_unpack_<fixprefix>fix_trunc_lo_<mode>,
676         vec_unpack_<fixprefix>fix_trunc_hi_<mode>): New expanders.
677         * doc/md.texi (vec_packs_float_@var{m}, vec_packu_float_@var{m},
678         vec_unpack_sfix_trunc_hi_@var{m}, vec_unpack_sfix_trunc_lo_@var{m},
679         vec_unpack_ufix_trunc_hi_@var{m}, vec_unpack_ufix_trunc_lo_@var{m}):
680         Document.
681         * doc/generic.texi (VEC_UNPACK_FLOAT_HI_EXPR,
682         VEC_UNPACK_FLOAT_LO_EXPR): Fix pasto in description.
683         (VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR,
684         VEC_PACK_FLOAT_EXPR): Document.
685
686 2018-05-29  Richard Biener  <rguenther@suse.de>
687
688         * tree-vectorizer.h (struct vec_info): Add stmt_vec_infos
689         member.
690         (stmt_vec_info_vec): Make pointer.
691         (init_stmt_vec_info_vec): Remove.
692         (free_stmt_vec_info_vec): Likewise.
693         (set_stmt_vec_info_vec): New function.
694         (free_stmt_vec_infos): Likewise.
695         (vinfo_for_stmt): Adjust for stmt_vec_info_vec indirection.
696         (set_vinfo_for_stmt): Likewise.
697         (get_earlier_stmt): Likewise.
698         (get_later_stmt): Likewise.
699         * tree-vectorizer.c (stmt_vec_info_vec): Make pointer.
700         (vec_info::vec_info): Allocate stmt_vec_infos and set the global.
701         (vec_info::~vec_info): Free stmt_vec_infos.
702         (vectorize_loops): Set the global stmt_vec_info_vec to NULL.
703         Remove old init_stmt_vec_info_vec/free_stmt_vec_info_vec calls.
704         (pass_slp_vectorize::execute): Likewise.
705         * tree-vect-stmts.c (init_stmt_vec_info_vec): Remove.
706         (free_stmt_vec_info_vec): Likewise.
707         (set_stmt_vec_info_vec): New function.
708         (free_stmt_vec_infos): Likewise.
709         * tree-vect-loop.c (_loop_vec_info::~_loop_vec_info): Set
710         the global stmt_vec_info_vec.
711         * tree-parloops.c (gather_scalar_reductions): Use
712         set_stmt_vec_info_vec/free_stmt_vec_infos and maintain a local
713         vector.
714
715 2018-05-29  Richard Biener  <rguenther@suse.de>
716
717         * dominance.c (iterate_fix_dominators): Push/pop TV_DOMINANCE.
718
719 2018-05-29  Martin Liska  <mliska@suse.cz>
720             David Malcolm  <dmalcolm@redhat.com>
721
722         * vec.c (test_reverse): New.
723         (vec_c_tests): Add new test.
724         * vec.h (vl_ptr>::reverse): New function.
725
726 2018-05-29  Gerald Pfeifer  <gerald@pfeifer.com>
727
728         * config.gcc: Identify FreeBSD 3.x and 4.x as unsupported.
729
730         * config/freebsd-spec.h (FBSD_LIB_SPEC): Only consider FreeBSD 5
731         and later.
732
733 2018-05-28  Bernd Edlinger  <bernd.edlinger@hotmail.de>
734
735         * tree-dump.c (dump_node): Use splay_tree_delete_pointers.
736
737 2018-05-28  Richard Biener  <rguenther@suse.de>
738
739         PR tree-optimization/85933
740         * tree-vect-data-refs.c (vect_record_base_alignments): Only
741         look at stmts marked as vectorizable.
742
743 2018-05-28  Richard Biener  <rguenther@suse.de>
744
745         PR tree-optimization/85934
746         * tree-vect-generic.c (expand_vector_operations_1): Hoist
747         vector boolean check before scalar optimization.
748
749 2018-05-28  Jakub Jelinek  <jakub@redhat.com>
750
751         * doc/invoke.texi (ARM Options): Use @item instead of @itemx
752         for armv5te.
753
754 2018-05-28  Mark Wielaard  <mark@klomp.org>
755
756         * dwarf2asm.c (dw2_asm_output_delta_uleb128): Add brackets around lab2
757         if it is an expression containing a minus sign.
758
759 2018-05-27  John David Anglin  <danglin@gcc.gnu.org>
760
761         * config/pa/pa-linux.h (NEED_INDICATE_EXEC_STACK): Define to 0.
762
763 2018-05-27  Paul Koning  <ni1d@arrl.net>
764
765         * config/pdp11/pdp11.md (truncsihi2): Remove.
766
767 2018-05-27  Monk Chiang  <sh.chiang04@gmail.com>
768             Chung-Ju Wu  <jasonwucj@gmail.com>
769
770         * config/nds32/nds32-intrinsic.md (unaligned_storedi): Modify patterns
771         implementation.
772         (unaligned_store_dw): Ditto.
773         * config/nds32/nds32-memory-manipulation.c
774         (nds32_expand_movmemsi_loop_known_size): Refactoring implementation.
775         (nds32_gen_dup_4_byte_to_word_value): Rename to ...
776         (nds32_gen_dup_4_byte_to_word_value_aux): ... this.
777         (emit_setmem_word_loop): Rename to ...
778         (emit_setmem_doubleword_loop): ... this.
779         (nds32_gen_dup_4_byte_to_word_value): New function.
780         (nds32_gen_dup_8_byte_to_double_word_value): New function.
781         (nds32_expand_setmem_loop): Refine implementation.
782         (nds32_expand_setmem_loop_v3m): Ditto.
783         * config/nds32/nds32-multiple.md (unaligned_store_update_base_dw): New
784         pattern.
785
786 2018-05-27  Chung-Ju Wu  <jasonwucj@gmail.com>
787
788         * config/nds32/nds32.md (bswapsi2, bswaphi2): New patterns.
789
790 2018-05-27  Chung-Ju Wu  <jasonwucj@gmail.com>
791
792         * config/nds32/nds32.c (nds32_attribute_table): Add "no_prologue".
793         (nds32_init_machine_status): Initialize machine->attr_naked_p and
794         machine->attr_no_prologue_p.
795         (nds32_compute_stack_frame): Check "naked" and "no_prologue" attributes.
796         (nds32_naked_function_p): Handle "naked" and "no_prologue" attributes.
797         (nds32_expand_epilogue): Consider attr_naked_p.
798         (nds32_expand_epilogue_v3pop): Likewise.
799         (nds32_can_use_return_insn): Likewise.
800         * config/nds32/nds32.h (machine_function): Add attr_naked_p and
801         attr_no_prologue_p fields.
802         * config/nds32/nds32.opt (mret-in-naked-func): New option.
803
804 2018-05-27  Jakub Jelinek  <jakub@redhat.com>
805
806         PR target/85918
807         * config/i386/i386.md (fixunssuffix, floatunssuffix): New code
808         attributes.
809         * config/i386/sse.md
810         (<floatsuffix>float<sseintvecmodelower><mode>2<mask_name><round_name>):
811         Rename to ...
812         (float<floatunssuffix><sseintvecmodelower><mode>2<mask_name><round_name>):
813         ... this.
814         (<floatsuffix>float<sselongvecmodelower><mode>2<mask_name><round_name>):
815         Rename to ...
816         (float<floatunssuffix><sselongvecmodelower><mode>2<mask_name><round_name>):
817         ... this.
818         (*<floatsuffix>floatv2div2sf2): Rename to ...
819         (*float<floatunssuffix>v2div2sf2): ... this.
820         (<floatsuffix>floatv2div2sf2_mask): Rename to ...
821         (float<floatunssuffix>v2div2sf2_mask): ... this.
822         (*<floatsuffix>floatv2div2sf2_mask_1): Rename to ...
823         (*float<floatunssuffix>v2div2sf2_mask_1): ... this.
824         (<fixsuffix>fix_truncv8dfv8si2<mask_name><round_saeonly_name>): Rename
825         to ...
826         (fix<fixunssuffix>_truncv8dfv8si2<mask_name><round_saeonly_name>):
827         ... this.
828         (<fixsuffix>fix_trunc<mode><sseintvecmodelower>2<mask_name><round_saeonly_name>):
829         Rename to ...
830         (fix<fixunssuffix>_trunc<mode><sseintvecmodelower>2<mask_name><round_saeonly_name>):
831         ... this.
832         (<fixsuffix>fix_trunc<mode><sselongvecmodelower>2<mask_name><round_saeonly_name>):
833         Rename to ...
834         (fix<fixunssuffix>_trunc<mode><sselongvecmodelower>2<mask_name><round_saeonly_name>):
835         ... this.
836         (<fixsuffix>fix_truncv2sfv2di2<mask_name>): Rename to ...
837         (fix<fixunssuffix>_truncv2sfv2di2<mask_name>): ... this.
838         (vec_pack_ufix_trunc_<mode>): Use gen_fixuns_truncv8dfv8si2 instead of
839         gen_ufix_truncv8dfv8si2.
840         * config/i386/i386-builtin.def (__builtin_ia32_cvttpd2uqq256_mask,
841         __builtin_ia32_cvttpd2uqq128_mask, __builtin_ia32_cvttps2uqq256_mask,
842         __builtin_ia32_cvttps2uqq128_mask, __builtin_ia32_cvtuqq2ps256_mask,
843         __builtin_ia32_cvtuqq2ps128_mask, __builtin_ia32_cvtuqq2pd256_mask,
844         __builtin_ia32_cvtuqq2pd128_mask, __builtin_ia32_cvttpd2udq512_mask,
845         __builtin_ia32_cvtuqq2ps512_mask, __builtin_ia32_cvtuqq2pd512_mask,
846         __builtin_ia32_cvttps2uqq512_mask, __builtin_ia32_cvttpd2uqq512_mask):
847         Use fixuns instead ufix or floatuns instead ufloat in CODE_FOR_ names.
848
849 2018-05-24  H.J. Lu  <hongjiu.lu@intel.com>
850
851         PR target/85900
852         PR target/85345
853         * varasm.c (assemble_alias): Lookup ifunc attribute on error.
854
855 2018-05-25  Jim Wilson  <jimw@sifive.com>
856
857         * config/riscv/riscv-protos.h (riscv_epilogue_uses): New.
858         * config/riscv/riscv.c (struct machine_function): Add
859         interrupt_handler_p and attribute_checked_p fields.
860         (riscv_attribute_table): Add interrupt.
861         (riscv_interrupt_type_p): New.
862         (riscv_save_reg_p): Save extra regs for interrupt handler.
863         (riscv_use_save_libcall): Return false  for interrupt handler.
864         (riscv_first_stack_step): Add forward declaration.
865         (riscv_compute_frame_info): New local interrupt_save_t1.  Set it
866         for interrupt handler with large frame.  Use it for saved reg list.
867         (riscv_expand_prologue): Move flag_stack_usage_info support to
868         eliminate duplication.
869         (riscv_expand_epilogue): Generate mret for interrupt handler.
870         (riscv_epilogue_uses): New.
871         (riscv_can_use_return_insn): Return false for interrupt handler.
872         (riscv_function_ok_for_sibcall): Likewise.
873         (riscv_set_current_function): Add interrupt handler support.
874         * config/riscv/riscv.h (EPILOGUE_USES): Call riscv_epilogue_uses.
875         * config/riscv/riscv.md (UNSPECV_MRET): New.
876         (GP_REGNUM): New.
877         (riscv_frflags, riscv_fsflags): Use tab after opcode.
878         (riscv_mret): New.
879         * doc/extend.texi (RISC-V Function Attributes) <interrupt>: New.
880
881 2018-05-25  Bill Schmidt  <wschmidt@linux.ibm.com>
882
883         PR tree-optimization/85712
884         * gimple-ssa-strength-reduction.c (replace_one_candidate): Skip if
885         this candidate has already been replaced in-situ by a copy.
886
887 2018-05-25  Jason Merrill  <jason@redhat.com>
888
889         PR c++/80485 - inline function non-zero address.
890         * symtab.c (nonzero_address): Check DECL_COMDAT.
891
892 2018-05-25  Uros Bizjak  <ubizjak@gmail.com>
893
894         PR target/83628
895         * config/alpha/alpha.md (ashlsi3): New insn pattern.
896         (*ashlsi_se): Rename from *ashldi_se.  Define as sign
897         extension of SImode operation.  Use const123_operand predicate.
898         (*saddsi_1): Remove.
899         (*saddl_se_1): Ditto.
900         (*ssubsi_1): Ditto.
901         (*ssubl_se_1): Ditto.
902         * config/alpha/predicates.md (const123_operand): New predicate.
903         * config/alpha/constraints.md (P): Use IN_RANGE.
904
905 2018-05-25  Richard Biener  <rguenther@suse.de>
906
907         * tree-ssa-alias.h (refs_may_alias_p): Add tbaa_p bool parameter,
908         defaulted to true.
909         (ref_maybe_used_by_stmt_p): Likewise.
910         (stmt_may_clobber_ref_p): Likewise.
911         (stmt_may_clobber_ref_p_1): Likewise.
912         * tree-ssa-alias.c (refs_may_alias_p): Add tbaa_p bool parameter
913         and pass it along.
914         (ref_maybe_used_by_stmt_p): Likewise.
915         (stmt_may_clobber_ref_p): Likewise.
916         (stmt_may_clobber_ref_p_1): Likewise.
917         * tree-vect-data-refs.c (vect_slp_analyze_node_dependences): Use
918         the alias oracle to disambiguate DRs with stmts DR analysis
919         couldn't handle.
920         (vect_analyze_data_refs): Do not give up on not analyzable
921         DRs for BB vectorization.  Remove code truncating the dataref
922         vector.
923
924 2018-05-25  Jakub Jelinek  <jakub@redhat.com>
925
926         PR target/85832
927         * config/i386/sse.md (<avx512>_eq<mode>3<mask_scalar_merge_name>_1):
928         Add (=Yk,v,C) variant using vptestm insn.  Use TARGET_AVX512BW
929         in test instead of TARGET_AVX512F for VI12_AVX512VL iterator.
930
931 2018-05-25  Richard Biener  <rguenther@suse.de>
932
933         * tree-vect-data-refs.c (vect_find_stmt_data_reference): New
934         function, combining stmt data ref gathering and fatal analysis
935         parts.
936         (vect_analyze_data_refs): Remove now redudnant code and simplify.
937         * tree-vect-loop.c (vect_get_datarefs_in_loop): Factor out from
938         vect_analyze_loop_2 and use vect_find_stmt_data_reference.
939         * tree-vect-slp.c (vect_slp_bb): Use vect_find_stmt_data_reference.
940         * tree-vectorizer.h (vect_find_stmt_data_reference): Declare.
941
942 2018-05-25  Bin Cheng  <bin.cheng@arm.com>
943
944         PR tree-optimization/85720
945         * tree-loop-distribution.c (break_alias_scc_partitions): Don't merge
946         SCC if all partitions are builtins.
947         (version_loop_by_alias_check): New parameter.  Generate cancelable
948         runtime alias check if all partitions are builtins.
949         (distribute_loop): Update call to above function.
950
951 2018-05-25  Bin Cheng  <bin.cheng@arm.com>
952
953         * tree-outof-ssa.c (tree-ssa.h, tree-dfa.h): Include header files.
954         (create_default_def, for_all_parms): Moved from tree-ssa-coalesce.c.
955         (parm_default_def_partition_arg): Ditto.
956         (set_parm_default_def_partition): Ditto.
957         (get_parm_default_def_partitions): Ditto and make it static.
958         (get_undefined_value_partitions): Ditto and make it static.
959         (remove_ssa_form): Refactor call to init_var_map here.
960         * tree-ssa-coalesce.c (build_ssa_conflict_graph): Support live range
961         computation for loop region.
962         (coalesce_partitions, compute_optimized_partition_bases): Ditto.
963         (register_default_def): Delete.
964         (for_all_parms, create_default_def): Move to tree-outof-ssa.c.
965         (parm_default_def_partition_arg): Ditto.
966         (set_parm_default_def_partition): Ditto.
967         (get_parm_default_def_partitions): Ditto and make it static.
968         (get_undefined_value_partitions): Ditto and make it static.
969         (coalesce_with_default, coalesce_with_default): Update comment.
970         (create_coalesce_list_for_region): New func factored out from
971         create_outofssa_var_map.
972         (populate_coalesce_list_for_outofssa): New func factored out from
973         create_outofssa_var_map and coalesce_ssa_name.
974         (create_outofssa_var_map): Delete.
975         (coalesce_ssa_name): Refactor to support live range computation.
976         * tree-ssa-coalesce.h (coalesce_ssa_name): Change decl.
977         (get_parm_default_def_partitions): Delete.
978         (get_undefined_value_partitions): Ditto.
979         * tree-ssa-live.c (init_var_map, delete_var_map): Support live range
980         computation for loop region.
981         (new_tree_live_info, loe_visit_block): Ditto.
982         (live_worklist, set_var_live_on_entry): Ditto.
983         (calculate_live_on_exit, verify_live_on_entry): Ditto.
984         * tree-ssa-live.h (struct _var_map): New fields.
985         (init_var_map): Change decl.
986         (region_contains_p): New.
987
988 2018-05-25  Bin Cheng  <bin.cheng@arm.com>
989
990         * tree-ssa-live.h (live_merge_and_clear): Delete.
991
992 2018-05-25  Richard Biener  <rguenther@suse.de>
993
994         PR c++/85912
995         * tree-dump.c (dequeue_and_dump): Remove access to removed
996         operand 2 of a SWITCH_EXPR.
997
998 2018-05-25  Richard Sandiford  <richard.sandiford@linaro.org>
999
1000         * doc/sourcebuild.texi (vect_double_cond_arith): Include
1001         multiplication and division.
1002         * doc/md.texi (cond_mul@var{m}, cond_div@var{m}, cond_mod@var{m})
1003         (cond_udiv@var{m}, cond_umod@var{m}): Document.
1004         * optabs.def (cond_smul_optab, cond_sdiv_optab, cond_smod_optab)
1005         (cond_udiv_optab, cond_umod_optab): New optabs.
1006         * internal-fn.def (IFN_COND_MUL, IFN_COND_DIV, IFN_COND_MOD)
1007         (IFN_COND_RDIV): New internal functions.
1008         * internal-fn.c (get_conditional_internal_fn): Handle TRUNC_DIV_EXPR,
1009         TRUNC_MOD_EXPR and RDIV_EXPR.
1010         * match.pd (UNCOND_BINARY, COND_BINARY): Handle them.
1011         * config/aarch64/iterators.md (UNSPEC_COND_MUL, UNSPEC_COND_DIV):
1012         New unspecs.
1013         (SVE_INT_BINARY): Include mult.
1014         (SVE_COND_FP_BINARY): Include UNSPEC_MUL and UNSPEC_DIV.
1015         (optab, sve_int_op): Handle mult.
1016         (optab, sve_fp_op, commutative): Handle UNSPEC_COND_MUL and
1017         UNSPEC_COND_DIV.
1018         * config/aarch64/aarch64-sve.md (cond_<optab><mode>): New pattern
1019         for SVE_INT_BINARY_SD.
1020
1021 2018-05-25  Richard Sandiford  <richard.sandiford@linaro.org>
1022
1023         * config/aarch64/iterators.md (SVE_INT_BINARY_SD): New code iterator.
1024         (optab, sve_int_op): Handle div and udiv.
1025         * config/aarch64/aarch64-sve.md (<optab><mode>3): New expander
1026         for SVE_INT_BINARY_SD.
1027         (*<optab><mode>3): New insn for the same.
1028
1029 2018-05-25  Richard Sandiford  <richard.sandiford@linaro.org>
1030
1031         * tree-vect-patterns.c: Include predict.h.
1032         (vect_recog_divmod_pattern): Restrict check for division support
1033         to when optimizing for size.
1034
1035 2018-05-25  Richard Sandiford  <richard.sandiford@linaro.org>
1036
1037         * doc/sourcebuild.texi (vect_double_cond_arith: Document.
1038         * gimple-match.h (gimple_match_op::MAX_NUM_OPS): Bump to 4.
1039         (gimple_match_op::gimple_match_op): Add an overload for 4 operands.
1040         (gimple_match_op::set_op): Likewise.
1041         (gimple_resimplify4): Declare.
1042         * genmatch.c (get_operand_type): Handle CFN_COND_* functions.
1043         (expr::gen_transform): Likewise.
1044         (decision_tree::gen): Generate a simplification routine for 4 operands.
1045         * gimple-match-head.c (gimple_simplify): Add an overload for
1046         4 operands.  In the top-level function, handle up to 4 call
1047         arguments and call gimple_resimplify4.
1048         (gimple_resimplify4): New function.
1049         (build_call_internal): Pass a fourth operand.
1050         (maybe_push_to_seq): Likewise.
1051         * match.pd (UNCOND_BINARY, COND_BINARY): New operator lists.
1052         Fold VEC_COND_EXPRs of an operation and a default value into
1053         an IFN_COND_* function if possible.
1054         * config/aarch64/iterators.md (UNSPEC_COND_MAX, UNSPEC_COND_MIN):
1055         New unspecs.
1056         (SVE_COND_FP_BINARY): Include them.
1057         (optab, sve_fp_op): Handle them.
1058         (SVE_INT_BINARY_REV): New code iterator.
1059         (SVE_COND_FP_BINARY_REV): New int iterator.
1060         (commutative): New int attribute.
1061         * config/aarch64/aarch64-protos.h (aarch64_sve_prepare_conditional_op):
1062         Declare.
1063         * config/aarch64/aarch64.c (aarch64_sve_prepare_conditional_op): New
1064         function.
1065         * config/aarch64/aarch64-sve.md (cond_<optab><mode>): Use it.
1066         (*cond_<optab><mode>): New patterns for reversed operands.
1067
1068 2018-05-25  Richard Biener  <rguenther@suse.de>
1069
1070         * tree-vectorizer.h (STMT_VINFO_GROUP_*, GROUP_*): Remove.
1071         (DR_GROUP_*): New, assert we have non-NULL ->data_ref_info.
1072         (REDUC_GROUP_*): New, assert we have NULL ->data_ref_info.
1073         (STMT_VINFO_GROUPED_ACCESS): Adjust.
1074         * tree-vect-data-refs.c (everywhere): Adjust users.
1075         * tree-vect-loop.c (everywhere): Likewise.
1076         * tree-vect-slp.c (everywhere): Likewise.
1077         * tree-vect-stmts.c (everywhere): Likewise.
1078         * tree-vect-patterns.c (vect_reassociating_reduction_p): Likewise.
1079
1080 2018-05-25  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1081
1082         * configure.ac (gcc_cv_as_section_has_e): Move to common section.
1083         Rename to...
1084         (gcc_cv_as_section_exclude): ... this.
1085         Try Solaris as #exclude syntax.
1086         * configure: Regenerate.
1087         * config.in: Regenerate.
1088         * config/i386/i386.c (i386_solaris_elf_named_section): Handle
1089         SECTION_EXCLUDE.
1090         * config/sparc/sparc.c (sparc_solaris_elf_asm_named_section)
1091         [HAVE_GAS_SECTION_EXCLUDE]: Handle SECTION_EXCLUDE.
1092
1093         * varasm.c (default_elf_asm_named_section): Don't check if
1094         HAVE_GAS_SECTION_EXCLUDE is defined.
1095
1096 2018-05-25  Richard Sandiford  <richard.sandiford@linaro.org>
1097
1098         * doc/md.texi: Update the documentation of the cond_* optabs
1099         to mention the new final operand.  Fix GET_MODE_NUNITS call.
1100         Describe the scalar case too.
1101         * internal-fn.def (IFN_EXTRACT_LAST): Change type to fold_left.
1102         * internal-fn.c (expand_cond_unary_optab_fn): Expect 3 operands
1103         instead of 2.
1104         (expand_cond_binary_optab_fn): Expect 4 operands instead of 3.
1105         (get_conditional_internal_fn): Update comment.
1106         * tree-vect-loop.c (vectorizable_reduction): Pass the original
1107         accumulator value as a final argument to conditional functions.
1108         * config/aarch64/aarch64-sve.md (cond_<optab><mode>): Turn into
1109         a define_expand and add an "else" operand.  Assert for now that
1110         the else operand is equal to operand 2.  Use SVE_INT_BINARY and
1111         SVE_COND_FP_BINARY instead of SVE_COND_INT_OP and SVE_COND_FP_OP.
1112         (*cond_<optab><mode>): New patterns.
1113         * config/aarch64/iterators.md (UNSPEC_COND_SMAX, UNSPEC_COND_UMAX)
1114         (UNSPEC_COND_SMIN, UNSPEC_COND_UMIN, UNSPEC_COND_AND, UNSPEC_COND_ORR)
1115         (UNSPEC_COND_EOR): Delete.
1116         (optab): Remove associated mappings.
1117         (SVE_INT_BINARY): New code iterator.
1118         (sve_int_op): Remove int attribute and add "minus" to the code
1119         attribute.
1120         (SVE_COND_INT_OP): Delete.
1121         (SVE_COND_FP_OP): Rename to...
1122         (SVE_COND_FP_BINARY): ...this.
1123
1124 2018-05-25  Richard Sandiford  <richard.sandiford@linaro.org>
1125
1126         * optabs.c (can_reuse_operands_p): New function.
1127         (maybe_legitimize_operands): Try to reuse the results for
1128         earlier operands.
1129
1130 2018-05-24  Uros Bizjak  <ubizjak@gmail.com>
1131
1132         * config/i386/sse.md (cvtusi2<ssescalarmodesuffix>64<round_name>):
1133         Add {q} suffix to insn mnemonic.
1134
1135 2018-05-23  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
1136
1137         * config/msp430/msp430.c (TARGET_WARN_FUNC_RETURN): Define.
1138         (msp430_warn_func_return): New.
1139
1140 2018-05-24  Roger Sayle  <roger@nextmovesoftware.com>
1141
1142         * fold-const.c (tree_nonzero_bits): New function.
1143         * fold-const.h (tree_nonzero_bits): Likewise.
1144         * match.pd (POPCOUNT): New patterns to fold BUILTIN_POPCOUNT and
1145         friends.  POPCOUNT(x&1) => x&1, POPCOUNT(x)==0 => x==0, etc.
1146
1147 2018-05-24  H.J. Lu  <hongjiu.lu@intel.com>
1148
1149         PR target/85900
1150         PR target/85345
1151         * varasm.c (assemble_alias): Check ifunc_resolver only on
1152         FUNCTION_DECL.
1153
1154 2018-05-24  Uros Bizjak  <ubizjak@gmail.com>
1155
1156         PR target/85903
1157         * config/i386/sse.md (movdi_to_sse): Do not generate pseudo
1158         when memory input operand is handled.
1159
1160 2018-05-24  Luis Machado  <luis.machado@linaro.org>
1161
1162         * config/aarch64/aarch64.c (qdf24xx_addrcost_table): New static
1163         global.
1164         (qdf24xx_tunings) <addr_costs>: Set to qdf24xx_addrcost_table.
1165
1166 2018-05-24  Richard Sandiford  <richard.sandiford@linaro.org>
1167
1168         * match.pd: Delay FMA folds until after vectorization.
1169
1170 2018-05-24  Andre Vieira  <andre.simoesdiasvieira@arm.com>
1171
1172         PR target/83009
1173         * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): Make
1174         address check not strict.
1175
1176 2018-05-24  Richard Sandiford  <richard.sandiford@linaro.org>
1177
1178         * gimple-match.h (gimple_match_op): New class.
1179         (mprts_hook): Replace parameters with a gimple_match_op *.
1180         (maybe_build_generic_op): Likewise.
1181         (gimple_simplified_result_is_gimple_val): Replace parameters with
1182         a const gimple_match_op *.
1183         (gimple_simplify): Replace code_helper * and tree * parameters with
1184         a gimple_match_op * parameter.
1185         (gimple_resimplify1): Replace code_helper *, tree and tree *
1186         parameters with a gimple_match_op * parameter.
1187         (gimple_resimplify2): Likewise.
1188         (gimple_resimplify3): Likewise.
1189         (maybe_push_res_to_seq): Replace code_helper, tree and tree *
1190         parameters with a gimple_match_op * parameter.
1191         * gimple-match-head.c (gimple_simplify): Change prototypes of
1192         auto-generated functions to take a gimple_match_op * instead of
1193         separate code_helper * and tree * parameters.  Make the same
1194         change in the top-level overload and update calls to the
1195         gimple_resimplify routines.  Update calls to the auto-generated
1196         functions and to maybe_push_res_to_seq in the publicly-facing
1197         operation-specific gimple_simplify overloads.
1198         (gimple_match_op::MAX_NUM_OPS): Define.
1199         (gimple_resimplify1): Replace rcode and ops with a single res_op
1200         parameter.  Update call to gimple_simplify.
1201         (gimple_resimplify2): Likewise.
1202         (gimple_resimplify3): Likewise.
1203         (mprts_hook): Replace parameters with a gimple_match_op *.
1204         (maybe_build_generic_op): Likewise.
1205         (build_call_internal): Replace type, nargs and ops with
1206         a gimple_match_op *.
1207         (maybe_push_res_to_seq): Replace res_code, type and ops parameters
1208         with a single gimple_match_op *.  Update calls to mprts_hook,
1209         build_call_internal and gimple_simplified_result_is_gimple_val.
1210         Factor out code that is common to the tree_code and combined_fn cases.
1211         * genmatch.c (expr::gen_transform): Replace tem_code and
1212         tem_ops with a gimple_match_op called tem_op.  Update calls
1213         to the gimple_resimplify functions and maybe_push_res_to_seq.
1214         (dt_simplify::gen_1): Manipulate res_op instead of res_code and
1215         res_ops.  Update call to the gimple_resimplify functions.
1216         (dt_simplify::gen): Pass res_op instead of res_code and res_ops.
1217         (decision_tree::gen): Make the functions take a gimple_match_op *
1218         called res_op instead of separate res_code and res_ops parameters.
1219         Update call accordingly.
1220         * gimple-fold.c (replace_stmt_with_simplification): Replace rcode
1221         and ops with a single res_op parameter.  Update calls to
1222         maybe_build_generic_op and maybe_push_res_to_seq.
1223         (fold_stmt_1): Update calls to gimple_simplify and
1224         replace_stmt_with_simplification.
1225         (gimple_fold_stmt_to_constant_1): Update calls to gimple_simplify
1226         and gimple_simplified_result_is_gimple_val.
1227         * tree-cfgcleanup.c (cleanup_control_expr_graph): Update call to
1228         gimple_simplify.
1229         * tree-ssa-sccvn.c (vn_lookup_simplify_result): Replace parameters
1230         with a gimple_match_op *.
1231         (vn_nary_build_or_lookup): Likewise.  Update call to
1232         vn_nary_build_or_lookup_1.
1233         (vn_nary_build_or_lookup_1): Replace rcode, type and ops with a
1234         gimple_match_op *.  Update calls to the gimple_resimplify routines
1235         and to gimple_simplified_result_is_gimple_val.
1236         (vn_nary_simplify): Update call to vn_nary_build_or_lookup_1.
1237         Use gimple_match_op::MAX_NUM_OPS instead of a hard-coded 3.
1238         (vn_reference_lookup_3): Update call to vn_nary_build_or_lookup.
1239         (visit_nary_op): Likewise.
1240         (visit_reference_op_load): Likewise.
1241
1242 2018-05-23  Luis Machado  <luis.machado@linaro.org>
1243
1244         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Use correct type
1245         modifier for printing the step amount.
1246
1247 2018-05-23  Jozef Lawrynowicz  <jozef.l@somniumtech.com>
1248
1249         PR target/78849
1250         * gcc/tree.c (build_common_tree_nodes): Dont set TYPE_SIZE for __intN
1251         types.
1252
1253 2018-05-23  Segher Boessenkool  <segher@kernel.crashing.org>
1254
1255         * doc/sourcebuild.texi (Endianness): New subsubsection.
1256
1257 2018-05-23  Luis Machado  <luis.machado@linaro.org>
1258
1259         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
1260         <prefetch_dynamic_strides>: New const bool field.
1261         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
1262         prefetch_dynamic_strides.
1263         (exynosm1_prefetch_tune): Likewise.
1264         (thunderxt88_prefetch_tune): Likewise.
1265         (thunderx_prefetch_tune): Likewise.
1266         (thunderx2t99_prefetch_tune): Likewise.
1267         (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides to
1268         false.
1269         (aarch64_override_options_internal): Update to set
1270         PARAM_PREFETCH_DYNAMIC_STRIDES.
1271         * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
1272         * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
1273         * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
1274         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
1275         prefetch-dynamic-strides setting.
1276
1277 2018-05-23  Luis Machado  <luis.machado@linaro.org>
1278
1279         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
1280         <minimum_stride>: New const int field.
1281         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
1282         minimum_stride field defaulting to -1.
1283         (exynosm1_prefetch_tune): Likewise.
1284         (thunderxt88_prefetch_tune): Likewise.
1285         (thunderx_prefetch_tune): Likewise.
1286         (thunderx2t99_prefetch_tune): Likewise.
1287         (qdf24xx_prefetch_tune) <minimum_stride>: Set to 2048.
1288         <default_opt_level>: Set to 3.
1289         (aarch64_override_options_internal): Update to set
1290         PARAM_PREFETCH_MINIMUM_STRIDE.
1291         * doc/invoke.texi (prefetch-minimum-stride): Document new option.
1292         * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
1293         * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
1294         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
1295         stride is constant and is below the minimum stride threshold.
1296
1297 2018-05-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1298
1299         * config/arm/arm-cpus.in (mode26): Delete.
1300         (armv4): Delete mode26 reference.
1301         * config/arm/arm.c (arm_configure_build_target): Delete use of
1302         isa_bit_mode26.
1303
1304 2018-05-23  Uros Bizjak  <ubizjak@gmail.com>
1305
1306         * config/i386/i386.md (*floatuns<SWI48:mode><MODEF:mode>2_avx512):
1307         New insn pattern.
1308         (floatunssi<mode>2): Also enable for AVX512F and TARGET_SSE_MATH.
1309         Rewrite expander pattern.  Emit gen_floatunssi<mode>2_i387_with_xmm
1310         for non-SSE modes.
1311         (floatunsdisf2): Rewrite expander pattern.  Hanlde TARGET_AVX512F.
1312         (floatunsdidf2): Ditto.
1313
1314 2018-05-23  Uros Bizjak  <ubizjak@gmail.com>
1315
1316         * config/i386/i386.md (fixuns_trunc<mode>di2): New insn pattern.
1317         (fixuns_trunc<mode>si2_avx512f): Ditto.
1318         (*fixuns_trunc<mode>si2_avx512f_zext): Ditto.
1319         (fixuns_trunc<mode>si2): Also enable for AVX512F and TARGET_SSE_MATH.
1320         Emit fixuns_trunc<mode>si2_avx512f for AVX512F targets.
1321
1322 2018-05-23  Alexander Monakov  <amonakov@ispras.ru>
1323
1324         PR rtl-optimization/79985
1325         * df-scan.c (df_insn_refs_collect): Remove special case for
1326         global registers and asm statements.
1327
1328 2018-05-23  Alexander Monakov  <amonakov@ispras.ru>
1329
1330         * extend.texi (Global Register Variables): Rewrite the bullet list.
1331         Note that the register is available for allocation. Note that access
1332         via inline asm must use constraints. Add note about async-signal
1333         handlers. Remove paragraph about automagic register selection.
1334
1335 2018-05-23  Richard Biener  <rguenther@suse.de>
1336
1337         * tree-ssa-sccvn.c (vn_reference_lookup_3): Remove restriction
1338         of fixed offset from memset VN.
1339
1340 2018-05-23  Bill Schmidt  <wschmidt@linux.ibm.com>
1341
1342         * gimple-ssa-strength-reduction.c (struct slsr_cand_d): Add
1343         first_interp field.
1344         (alloc_cand_and_find_basis): Initialize first_interp field.
1345         (slsr_process_mul): Modify first_interp field.
1346         (slsr_process_add): Likewise.
1347         (slsr_process_cast): Modify first_interp field for each new
1348         interpretation.
1349         (slsr_process_copy): Likewise.
1350         (dump_candidate): Dump first_interp field.
1351         (replace_mult_candidate): Process all interpretations, not just
1352         subsequent ones.
1353         (replace_rhs_if_not_dup): Likewise.
1354         (replace_one_candidate): Likewise.
1355
1356 2018-05-23  Wilco Dijkstra  <wdijkstr@arm.com>
1357
1358         * config/aarch64/aarch64.c (aarch64_use_frame_pointer):
1359         Add new boolean.
1360         (aarch64_needs_frame_chain): New function.
1361         (aarch64_parse_override_string): Set aarch64_use_frame_pointer.
1362
1363 2018-05-23  Sudakshina Das  <sudi.das@arm.com>
1364
1365         PR target/84882
1366         * common/config/aarch64/aarch64-common.c (aarch64_handle_option):
1367         Check val before adding MASK_STRICT_ALIGN to opts->x_target_flags.
1368         * config/aarch64/aarch64.opt (mstrict-align): Remove RejectNegative.
1369         * config/aarch64/aarch64.c (aarch64_attributes): Mark allow_neg
1370         as true for strict-align.
1371         (aarch64_can_inline_p): Perform checks even when callee has no
1372         attributes to check for strict alignment.
1373         * doc/extend.texi (AArch64 Function Attributes): Document
1374         no-strict-align.
1375         * doc/invoke.texi: (AArch64 Options): Likewise.
1376
1377 2018-05-23  Richard Sandiford  <richard.sandiford@linaro.org>
1378
1379         PR tree-optimization/85853
1380         * tree-vect-slp.c (vect_slp_analyze_node_operations): Split out
1381         the handling of the root of the node to...
1382         (vect_slp_analyze_node_operations_1): ...this new function,
1383         and run the whole thing with the child nodes' def types
1384         set according to their SLP node's def type.
1385
1386 2018-05-23  Richard Biener  <rguenther@suse.de>
1387
1388         PR middle-end/85874
1389         * tree-data-ref.c (create_runtime_alias_checks): Defer
1390         and ignore overflow warnings.
1391
1392 2018-05-23  Yury Gribov  <tetra2005@gmail.com>
1393
1394         PR tree-optimization/85822
1395         * tree-vrp.c (is_masked_range_test): Fix handling of negative
1396         constants.
1397
1398 2018-05-23  Richard Biener  <rguenther@suse.de>
1399
1400         * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle arbitrary
1401         memset constants via native_interpret_expr.
1402
1403 2018-05-22  H.J. Lu  <hongjiu.lu@intel.com>
1404
1405         PR target/85345
1406         * cgraph.h (cgraph_node::create): Set ifunc_resolver for ifunc
1407         attribute.
1408         (cgraph_node::create_alias): Likewise.
1409         (cgraph_node::get_availability): Check ifunc_resolver instead
1410         of looking up ifunc attribute.
1411         * cgraphunit.c (maybe_diag_incompatible_alias): Likewise.
1412         * varasm.c (do_assemble_alias): Likewise.
1413         (assemble_alias): Likewise.
1414         (default_binds_local_p_3): Likewise.
1415         * cgraph.h (cgraph_node): Add ifunc_resolver.
1416         (cgraph_node::only_called_directly_or_aliased_p): Return false
1417         for IFUNC resolver.
1418         * lto-cgraph.c (input_node): Set ifunc_resolver for ifunc
1419         attribute.
1420         * symtab.c (symtab_node::verify_base): Verify that ifunc_resolver
1421         is equivalent to lookup_attribute ("ifunc", DECL_ATTRIBUTES (decl)).
1422         (symtab_node::binds_to_current_def_p): Check ifunc_resolver
1423         instead of looking up ifunc attribute.
1424
1425 2018-05-22  Luis Machado  <luis.machado@linaro.org>
1426
1427         * config/aarch64/aarch64.md (*ashift<mode>_extv_bfiz): New pattern.
1428
1429 2018-05-22  Martin Sebor  <msebor@redhat.com>
1430
1431         PR middle-end/85359
1432         * builtins.c (expand_builtin_strcpy): Call maybe_warn_nonstring_arg
1433         only when expasion succeeds.
1434         (expand_builtin_strcmp): Same.
1435         (expand_builtin_strncmp): Same.
1436
1437 2018-05-22  Martin Sebor  <msebor@redhat.com>
1438
1439         * calls.c (maybe_warn_nonstring_arg): Fix a typo in a comment.
1440
1441 2018-05-22  Jackson Woodruff  <jackson.woodruff@arm.com>
1442             Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1443
1444         * config/aarch64/aarch64-ldpstp.md: Replace uses of
1445         aarch64_mem_pair_operand with memory_operand and delete operand swapping
1446         code.
1447         * config/aarch64/aarch64.c (aarch64_operands_ok_for_ldpstp):
1448         Add check for legitimate_address.
1449         (aarch64_gen_adjusted_ldpstp): Swap operands where appropriate.
1450         (aarch64_swap_ldrstr_operands): New.
1451         * config/aarch64/aarch64-protos.h (aarch64_swap_ldrstr_operands):
1452         Define prototype.
1453
1454 2018-05-22  Jackson Woodruff  <jackson.woodruff@arm.com>
1455             Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1456
1457         * config/aarch64/aarch64.md: New patterns to generate stp
1458         and ldp.
1459         (store_pair_sw, store_pair_dw): New patterns to generate stp for
1460         single words and double words.
1461         (load_pair_sw, load_pair_dw): Likewise.
1462         (store_pair_sf, store_pair_df, store_pair_si, store_pair_di):
1463         Delete.
1464         (load_pair_sf, load_pair_df, load_pair_si, load_pair_di):
1465         Delete.
1466         * config/aarch64/aarch64-ldpstp.md: Modify peephole
1467         for different mode ldpstp and add peephole for merged zero stores.
1468         Likewise for loads.
1469         * config/aarch64/aarch64.c (aarch64_operands_ok_for_ldpstp):
1470         Add size check.
1471         (aarch64_gen_store_pair): Rename calls to match new patterns.
1472         (aarch64_gen_load_pair): Rename calls to match new patterns.
1473         * config/aarch64/aarch64-simd.md (load_pair<mode>): Rename to...
1474         (load_pair<DREG:mode><DREG2:mode>): ... This.
1475         (store_pair<mode>): Rename to...
1476         (vec_store_pair<DREG:mode><DREG2:mode>): ... This.
1477         * config/aarch64/iterators.md (DREG, DREG2, DX2, SX, SX2, DSX):
1478         New mode iterators.
1479         (V_INT_EQUIV): Handle SImode.
1480         * config/aarch64/predicates.md (aarch64_reg_zero_or_fp_zero):
1481         New predicate.
1482
1483 2018-05-22  Martin Sebor  <msebor@redhat.com>
1484
1485         PR c/85623
1486         * calls.c (maybe_warn_nonstring_arg): Use string length to set
1487         or ajust the presumed bound on an operation to avoid unnecessary
1488         warnings.
1489
1490 2018-05-22  Martin Sebor  <msebor@redhat.com>
1491
1492         PR tree-optimization/85826
1493         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Avoid
1494         assuming that a DECL necesarily has a constant size.
1495
1496 2018-05-22  Richard Sandiford  <richard.sandiford@linaro.org>
1497
1498         PR middle-end/85862
1499         * internal-fn.c (expand_direct_optab_fn): Cope with a null lhs.
1500
1501 2018-05-22  Richard Biener  <rguenther@suse.de>
1502
1503         PR tree-optimization/85834
1504         * tree-ssa-sccvn.c (vn_reference_lookup_3): Properly handle
1505         non-constant and non-zero memset arguments.
1506
1507 2018-05-22  Martin Liska  <mliska@suse.cz>
1508
1509         PR ipa/85607
1510         * ipa-icf.c (sem_item::add_type): Do not ICE for incomplete types.
1511
1512 2018-05-22  Richard Biener  <rguenther@suse.de>
1513
1514         PR tree-optimization/85863
1515         * tree-vect-stmts.c (vect_is_simple_cond): Only widen invariant
1516         comparisons when vectype is specified.
1517         (vectorizable_condition): Do not specify vectype for
1518         vect_is_simple_cond when SLP vectorizing.
1519
1520 2018-05-21  Michael Meissner  <meissner@linux.ibm.com>
1521
1522         PR target/85657
1523         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Do not
1524         define __ibm128 as long double.
1525         * config/rs6000/rs6000.c (rs6000_init_builtins): Create __ibm128
1526         as a distinct type when IEEE 128-bit support is enabled.
1527         (init_float128_ieee): Fix up conversions between IFmode and IEEE
1528         128-bit types to use the correct functions.
1529         (rs6000_expand_float128_convert): Use explicit FLOAT_EXTEND to
1530         convert between 128-bit floating point types that have different
1531         modes but the same representation, instead of using gen_lowpart to
1532         makean alias.
1533         * config/rs6000/rs6000.md (IFKF): New iterator for IFmode and
1534         KFmode.
1535         (IFKF_reg): New attributes to give the register constraints for
1536         IFmode and KFmode.
1537         (extend<mode>tf2_internal): New insns to mark an explicit
1538         conversion between 128-bit floating point types that have a
1539         different mode but share the same representation.
1540
1541 2018-05-21  Richard Sandiford  <richard.sandiford@linaro.org>
1542
1543         PR tree-optimization/85814
1544         * tree-ssa-strlen.c (get_stridx_plus_constant): Cope with
1545         a null return from get_strinfo when unsharing the next
1546         strinfo in the chain.
1547
1548 2018-05-21  Vladimir Mezentsev  <vladimir.mezentsev@oracle.com>
1549
1550         PR gcc/84923
1551         * varasm.c (weak_finish): Clean up weak_decls.
1552
1553 2018-05-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1554
1555         * config/aarch64/aarch64.md ("unspec"): Define UNSPEC_SABAL,
1556         UNSPEC_SABDL2, UNSPEC_SADALP, UNSPEC_UABAL, UNSPEC_UABDL2,
1557         UNSPEC_UADALP values.
1558         * config/aarch64/iterators.md (ABAL): New int iterator.
1559         (ABDL2): Likewise.
1560         (ADALP): Likewise.
1561         (sur): Add mappings for the above.
1562         * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl2<mode>_3):
1563         New define_insn.
1564         (aarch64_<sur>abal<mode>_4): Likewise.
1565         (aarch64_<sur>adalp<mode>_3): Likewise.
1566         (<sur>sadv16qi): New define_expand.
1567
1568 2018-05-21  Alexander Nesterovskiy  <alexander.nesterovskiy@intel.com>
1569
1570         * config/i386/i386.md (*movsf_internal): AVX falsedep fix.
1571         (*movdf_internal): Ditto.
1572         (*rcpsf2_sse): Ditto.
1573         (*rsqrtsf2_sse): Ditto.
1574         (*sqrt<mode>2_sse): Ditto.
1575
1576 2018-05-21  Tamar Christina  <tamar.christina@arm.com>
1577
1578         * config/aarch64/aarch64-simd.md (aarch64_eor3qv8hi): Change to
1579         eor3q<mode>4.
1580         (aarch64_bcaxqv8hi): Change to bcaxq<mode>4.
1581         * config/aarch64/aarch64-simd-builtins.def (veor3q_u8, veor3q_u32,
1582         veor3q_u64, veor3q_s8, veor3q_s16, veor3q_s32, veor3q_s64, vbcaxq_u8,
1583         vbcaxq_u32, vbcaxq_u64, vbcaxq_s8, vbcaxq_s16, vbcaxq_s32,
1584         vbcaxq_s64): New.
1585         * config/aarch64/arm_neon.h: Likewise.
1586         * config/aarch64/iterators.md (VQ_I): New.
1587
1588 2018-05-21  Alexey Brodkin <abrodkin@synopsys.com>
1589
1590         * config.gcc: Add arc/t-multilib-linux to tmake_file for
1591         arc*-*-linux*.
1592         * config/arc/t-multilib-linux: Specify MULTILIB_OPTIONS and
1593         MULTILIB_DIRNAMES
1594
1595 2018-05-20  Chung-Ju Wu  <jasonwucj@gmail.com>
1596
1597         * config/nds32/constraints.md (S): New constraint.
1598         * config/nds32/nds32.md (call_internal): Use constraint S.
1599         (call_value_internal): Likewise.
1600         (sibcall_internal): Likewise.
1601         (sibcall_value_internal): Likewise.
1602
1603 2018-05-20  Kito Cheng  <kito.cheng@gmail.com>
1604             Chung-Ju Wu  <jasonwucj@gmail.com>
1605
1606         * config/nds32/nds32.c (nds32_register_move_cost): Take garywolf cpu
1607         into consideration.
1608
1609 2018-05-20  Kito Cheng  <kito.cheng@gmail.com>
1610             Chung-Ju Wu  <jasonwucj@gmail.com>
1611
1612         * config/nds32/nds32-cost.c (rtx_cost_model_t): New structure.
1613         (insn_size_16bit, insn_size_32bit): New variables for cost evaluation.
1614         (nds32_rtx_costs_impl): Simplify.
1615         (nds32_address_cost_impl): Simplify.
1616         (nds32_init_rtx_costs): New function.
1617         (nds32_rtx_costs_speed_prefer): Likewise.
1618         (nds32_rtx_costs_size_prefer): Likewise.
1619         (nds32_address_cost_speed_prefer): Likewise.
1620         (nds32_address_cost_speed_fwprop): Likewise.
1621         (nds32_address_cost_size_prefer): Likewise.
1622         * config/nds32/nds32-protos.h (nds32_init_rtx_costs): Declare.
1623         * config/nds32/nds32.c (nds32_option_override): Use
1624         nds32_init_rtx_costs function.
1625
1626 2018-05-20  Chung-Ju Wu  <jasonwucj@gmail.com>
1627
1628         * config/nds32/nds32.c (nds32_asm_file_start): Output pipeline model.
1629         * config/nds32/nds32.h (TARGET_PIPELINE_N7): Define.
1630         (TARGET_PIPELINE_N8): Likewise.
1631         (TARGET_PIPELINE_N10): Likewise.
1632         (TARGET_PIPELINE_N13): Likewise.
1633         (TARGET_PIPELINE_GRAYWOLF): Likewise.
1634
1635 2018-05-19  Monk Chiang  <sh.chiang04@gmail.com>
1636
1637         * config/nds32/nds32-fpu.md: Update copyright year.
1638
1639 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
1640
1641         * config/nds32/nds32.h (ASM_SPEC): Adjust spec rule.
1642
1643 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
1644
1645         * config/nds32/nds32.c
1646         (nds32_md_asm_adjust): Consider flag_inline_asm_r15 variable.
1647         * config/nds32/nds32.opt (minline-asm-r15): New option.
1648
1649 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
1650
1651         * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS): Add
1652         MASK_HW_ABS.
1653         * config/nds32/nds32.md (abssi2): New pattern.
1654
1655 2018-05-19  Uros Bizjak  <ubizjak@gmail.com>
1656
1657         * config/i386/i386.md (rex64namesuffix): New mode attribute.
1658         * config/i386/sse.md (sse_cvtsi2ss<rex64namesuffix><round_name>):
1659         Merge insn pattern from sse_cvtsi2ss<round_name> and
1660         sse_cvtsi2ssq<round_name> using SWI48 mode iterator.
1661         (sse_cvtss2si<rex64namesuffix><round_name>): Merge insn pattern
1662         from sse_cvtss2si<round_name> and sse_cvtss2siq<round_name>
1663         using SWI48 mode iterator.
1664         (sse_cvtss2si<rex64namesuffix>_2): Merge insn pattern from
1665         sse_cvtss2si_2 and sse_cvtss2siq_2 using SWI48 mode iterator.
1666         (sse_cvttss2si<rex64namesuffix><round_saeonly_name>): Merge insn
1667         pattern from sse_cvttss2si<round_saeonly_name>
1668         and sse_cvttss2siq<round_saeonly_name> using SWI48 mode iterator.
1669         (avx512f_vcvtss2usi<rex64namesuffix><round_name>): Merge insn pattern
1670         from avx512f_vcvtss2usi<round_name> and avx512f_vcvtss2usiq<round_name>
1671         using SWI48 mode iterator.
1672         (avx512f_vcvttss2usi<rex64namesuffix><round_saeonly_name>): Merge
1673         insn pattern from avx512f_vcvttss2usi<round_saeonly_name> and
1674         avx512f_vcvttss2usiq<round_saeonly_name> using SWI48 mode iterator.
1675         (avx512f_vcvtsd2usi<rex64namesuffix><round_name>): Merge insn pattern
1676         from avx512f_vcvtsd2usi<round_name> and avx512f_vcvtsd2usiq<round_name>
1677         using SWI48 mode iterator.
1678         (avx512f_vcvttsd2usi<rex64namesuffix><round_saeonly_name>): Merge
1679         insn pattern from avx512f_vcvttsd2usi<round_saeonly_name> and
1680         avx512f_vcvttsd2usiq<round_saeonly_name> using SWI48 mode iterator.
1681         (sse2_cvtsd2si<rex64namesuffix><round_name>): Merge insn pattern from
1682         sse2_cvtsd2si<round_name> and sse2_cvtsd2siq<round_name> using
1683         SWI48 mode iterator.
1684         (sse2_cvtsd2si<rex64namesuffix>_2): Merge insn pattern from
1685         sse2_cvtsd2si_2 and sse2_cvtsd2siq_2 using SWI48 mode iterator.
1686         (sse_cvttsd2si<rex64namesuffix><round_saeonly_name>): Merge insn
1687         pattern from sse_cvttsd2si<round_saeonly_name>
1688         and sse_cvttsd2siq<round_saeonly_name> using SWI48 mode iterator.
1689
1690 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
1691
1692         * config/nds32/nds32-md-auxiliary.c
1693         (nds32_valid_smw_lwm_base_p): Refine.
1694         (nds32_output_smw_single_word): Refine.
1695         (nds32_output_smw_double_word): New.
1696         * config/nds32/nds32-protos.h (nds32_output_smw_double_word): New.
1697
1698 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
1699
1700         * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push): Refine.
1701         (nds32_output_stack_pop): Refine.
1702         (nds32_expand_unaligned_load): Refine.
1703         (nds32_expand_unaligned_store): Refine.
1704
1705 2018-05-19  Kuan-Lin Chen <kuanlinchentw@gmail.com>
1706             Chung-Ju Wu  <jasonwucj@gmail.com>
1707
1708         * config/nds32/constants.md: Add TP_REGNUM constant.
1709         (unspec_element): Add UNSPEC_GOTINIT, UNSPEC_GOT, UNSPEC_GOTOFF,
1710         UNSPEC_PLT, UNSPEC_TLSGD, UNSPEC_TLSLD, UNSPEC_TLSIE, UNSPEC_TLSLE and
1711         UNSPEC_ADD32.
1712         * config/nds32/nds32-doubleword.md: Consider flag_pic.
1713         * config/nds32/nds32-dspext.md (mov<mode>): Expand TLS and PIC cases.
1714         * config/nds32/nds32-predicates.c (nds32_const_unspec_p): New.
1715         * config/nds32/nds32-md-auxiliary.c: Implementation that support TLS
1716         and PIC code generation.
1717         * config/nds32/nds32-protos.h: Declarations that support TLS and PIC
1718         code generation.
1719         * config/nds32/nds32-relax-opt.c: Consider TLS and PIC for relax
1720         optimization.
1721         * config/nds32/nds32.md: Support TLS and PIC.
1722         * config/nds32/nds32.c: Support TLS and PIC.
1723         * config/nds32/nds32.h (nds32_relax_insn_type): New enum type.
1724         * config/nds32/predicates.md (nds32_nonunspec_symbolic_operand): New
1725         predicate.
1726
1727 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
1728
1729         * config/nds32/nds32-predicates.c (const_vector_to_hwint): Use machine
1730         mode with E_ prefix.
1731
1732 2018-05-19  Kuan-Lin Chen <kuanlinchentw@gmail.com>
1733             Chung-Ju Wu  <jasonwucj@gmail.com>
1734
1735         * config/nds32/constants.md (unspec_element): Add UNSPEC_ICT.
1736         * config/nds32/nds32-md-auxiliary.c
1737         (symbolic_reference_mentioned_p): New.
1738         (nds32_legitimize_ict_address): New.
1739         (nds32_expand_ict_move): New.
1740         (nds32_indirect_call_referenced_p): New.
1741         (nds32_symbol_binds_local_p): Delete.
1742         (nds32_long_call_p): Modify.
1743         * config/nds32/nds32-opts.h (nds32_ict_model_type): New enum type.
1744         * config/nds32/nds32-protos.h
1745         (symbolic_reference_mentioned_p): Declare.
1746         (nds32_legitimize_ict_address): Declare.
1747         (nds32_expand_ict_move): Declare.
1748         (nds32_indirect_call_referenced_p): Declare.
1749         * config/nds32/nds32-relax-opt.c (nds32_ict_const_p): New.
1750         (nds32_relax_group): Use nds32_ict_const_p as condition.
1751         * config/nds32/nds32.c (nds32_attribute_table): Add "indirect_call".
1752         (nds32_asm_file_start): Output ict_model directive in asm code.
1753         (nds32_legitimate_address_p): Consider indirect call.
1754         (nds32_print_operand): Consider indirect call.
1755         (nds32_print_operand_address): Consider indirect call.
1756         (nds32_insert_attributes): Handle "indirect_call" attribute.
1757         (TARGET_LEGITIMATE_ADDRESS_P): Define.
1758         (TARGET_LEGITIMATE_CONSTANT_P): Define.
1759         (TARGET_CANNOT_FORCE_CONST_MEM): Define.
1760         (TARGET_DELEGITIMIZE_ADDRESS): Define.
1761         (TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA): Define.
1762         * config/nds32/nds32.h (SYMBOLIC_CONST_P): Define.
1763         (TARGET_ICT_MODEL_SMALL): Define.
1764         (TARGET_ICT_MODEL_LARGE): Define.
1765         * config/nds32/nds32.md (movsi): Consider ict model.
1766         (call, call_value): Consider ict model.
1767         (sibcall, sibcall_value): Consider ict model.
1768         * config/nds32/nds32.opt (mict-model): New option.
1769         * config/nds32/predicates.md (nds32_symbolic_operand): Consider ict
1770         model.
1771
1772 2018-05-18  Kito Cheng  <kito.cheng@gmail.com>
1773             Monk Chiang  <sh.chiang04@gmail.com>
1774             Jim Wilson <jimw@sifive.com>
1775
1776         * common/config/riscv/riscv-common.c (riscv_parse_arch_string):
1777         Add support to parse rv32e*.  Clear MASK_RVE for rv32i and rv64i.
1778         * config.gcc (riscv*-*-*): Add support for rv32e* and ilp32e.
1779         * config/riscv/riscv-c.c (riscv_cpu_cpp_builtins): Define
1780         __riscv_32e when TARGET_RVE.  Handle ABI_ILP32E as soft-float ABI.
1781         * config/riscv/riscv-opts.h (riscv_abi_type): Add ABI_ILP32E.
1782         * config/riscv/riscv.c (riscv_compute_frame_info): When TARGET_RVE,
1783         compute save_libcall_adjustment properly.
1784         (riscv_option_override): Call error if TARGET_RVE and not ABI_ILP32E.
1785         (riscv_conditional_register_usage): Handle TARGET_RVE and ABI_ILP32E.
1786         * config/riscv/riscv.h (UNITS_PER_FP_ARG): Handle ABI_ILP32E.
1787         (STACK_BOUNDARY, ABI_STACK_BOUNDARY): Handle TARGET_RVE.
1788         (GP_REG_LAST, MAX_ARGS_IN_REGISTERS): Likewise.
1789         (ABI_SPEC): Handle mabi=ilp32e.
1790         * config/riscv/riscv.opt (abi_type): Add ABI_ILP32E.
1791         (RVE): Add RVE mask.
1792         * doc/invoke.texi (RISC-V options) <-mabi>: Add ilp32e info.
1793         <-march>: Add rv32e as an example.
1794
1795 2018-05-18  Marc Glisse  <marc.glisse@inria.fr>
1796
1797         PR c++/82899
1798         * tree-ssa-structalias.c (create_variable_info_for_1): Extra argument.
1799         (intra_create_variable_infos): Handle C++ constructors.
1800
1801 2018-05-18  Martin Liska  <mliska@suse.cz>
1802
1803         * passes.def: Remove a redundant pass.
1804
1805 2018-05-18  Eric Botcazou  <ebotcazou@adacore.com>
1806
1807         PR bootstrap/85838
1808         * config/sparc/sparc.c (sparc_expand_builtin): Always initialize op[0].
1809
1810 2018-05-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1811
1812         * config/arm/arm-cpus.in (armv3m, mode32): Delete features.
1813         (ARMv4): Update.
1814         (ARMv2, ARMv3, ARMv3m): Delete fgroups.
1815         (ARMv6m): Update.
1816         (armv2, armv2a, armv3, armv3m): Delete architectures.
1817         (arm2, arm250, arm3, arm6, arm60, arm600, arm610, arm620,
1818         arm7, arm7d, arm7di, arm70, arm700, arm700i, arm710, arm720,
1819         arm710c, arm7100, arm7500, arm7500fe, arm7m, arm7dm, arm7dmi):
1820         Delete cpus.
1821         * config/arm/arm.md (maddsidi4): Remove check for arm_arch3m.
1822         (*mulsidi3adddi): Likewise.
1823         (mulsidi3): Likewise.
1824         (*mulsidi3_nov6): Likewise.
1825         (umulsidi3): Likewise.
1826         (umulsidi3_nov6): Likewise.
1827         (umaddsidi4): Likewise.
1828         (*umulsidi3adddi): Likewise.
1829         (smulsi3_highpart): Likewise.
1830         (*smulsi3_highpart_nov6): Likewise.
1831         (umulsi3_highpart): Likewise.
1832         (*umulsi3_highpart_nov6): Likewise.
1833         * config/arm/arm.h (arm_arch3m): Delete.
1834         * config/arm/arm.c (arm_arch3m): Delete.
1835         (arm_option_override_internal): Update armv3-related comment.
1836         (arm_configure_build_target): Delete use of isa_bit_mode32.
1837         (arm_option_reconfigure_globals): Delete set of arm_ach3m.
1838         (arm_rtx_costs_internal): Delete check of arm_arch3m.
1839         * config/arm/arm-fixed.md (mulsq3): Delete check for arm_arch3m.
1840         (mulsa3): Likewise.
1841         (mulusa3): Likewise.
1842         * config/arm/arm-protos.h (arm_arch3m): Delete.
1843         * config/arm/arm-tables.opt: Regenerate.
1844         * config/arm/arm-tune.md: Likewise.
1845         * config/arm/t-arm-elf (all_early_nofp): Delete mentions of
1846         deleted architectures.
1847
1848 2018-05-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1849
1850         * config/arm/arm-cpus.in (armv5, armv5e): Delete features.
1851         (armv5t, armv5te): New features.
1852         (ARMv5, ARMv5e): Delete fgroups.
1853         (ARMv5t, ARMv5te): Adjust for above changes.
1854         (ARMv6m): Likewise.
1855         (armv5, armv5e): Delete arches.
1856         * config/arm/arm.md (*call_reg_armv5): Use arm_arch5t instead of
1857         arm_arch5.
1858         (*call_reg_arm): Likewise.
1859         (*call_value_reg_armv5): Likewise.
1860         (*call_value_reg_arm): Likewise.
1861         (*call_symbol): Likewise.
1862         (*call_value_symbol): Likewise.
1863         (*sibcall_insn): Likewise.
1864         (*sibcall_value_insn): Likewise.
1865         (clzsi2): Likewise.
1866         (prefetch): Likewise.
1867         (define_split and define_peephole2 dependent on arm_arch5):
1868         Likewise.
1869         * config/arm/arm.h (TARGET_LDRD): Use arm_arch5te instead of
1870         arm_arch5e.
1871         (TARGET_ARM_QBIT): Likewise.
1872         (TARGET_DSP_MULTIPLY): Likewise.
1873         (enum base_architecture): Delete BASE_ARCH_5, BASE_ARCH_5E.
1874         (arm_arch5, arm_arch5e): Delete.
1875         (arm_arch5t, arm_arch5te): Declare.
1876         * config/arm/arm.c (arm_arch5, arm_arch5e): Delete.
1877         (arm_arch5t): Declare.
1878         (arm_option_reconfigure_globals): Update for the above.
1879         (arm_options_perform_arch_sanity_checks): Update comment, replace
1880         use of arm_arch5 with arm_arch5t.
1881         (use_return_insn): Likewise.
1882         (arm_emit_call_insn): Likewise.
1883         (output_return_instruction): Likewise.
1884         (arm_final_prescan_insn): Likewise.
1885         (arm_coproc_builtin_available): Likewise.
1886         * config/arm/arm-c.c (arm_cpu_builtins): Replace arm_arch5 and
1887         arm_arch5e with arm_arch5t and arm_arch5te.
1888         * config/arm/arm-protos.h (arm_arch5, arm_arch5e): Delete.
1889         (arm_arch5t, arm_arch5te): Declare.
1890         * config/arm/arm-tables.opt: Regenerate.
1891         * config/arm/t-arm-elf: Remove references to armv5, armv5e.
1892         * config/arm/t-multilib: Likewise.
1893         * config/arm/thumb1.md (*call_reg_thumb1_v5): Check arm_arch5t
1894         instead of arm_arch5.
1895         (*call_reg_thumb1): Likewise.
1896         (*call_value_reg_thumb1_v5): Likewise.
1897         (*call_value_reg_thumb1): Likewise.
1898         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Remove now
1899         unreachable path.
1900         * doc/invoke.texi (ARM Options): Remove references to armv5, armv5e.
1901
1902 2018-05-18  Martin Liska  <mliska@suse.cz>
1903
1904         PR gcov-profile/84846
1905         * doc/gcov.texi: Document -t option of gcov tool.
1906
1907 2018-05-18  Martin Liska  <mliska@suse.cz>
1908
1909         PR gcov-profile/84846
1910         * gcov.c (print_usage): Add new -t option.
1911         (process_args): Handle the option.
1912         (generate_results): Use stdout as output when requested by
1913         the option.
1914
1915 2018-05-18  Martin Liska  <mliska@suse.cz>
1916
1917         PR gcov-profile/84846
1918         * coverage.c (coverage_init): Write PWD to .gcno file.
1919         * doc/gcov.texi: Document how working directory is printed.
1920         * gcov-dump.c (dump_gcov_file): Print PWD.
1921         * gcov.c (output_intermediate_file): Likewise.
1922         (read_graph_file): Read PWD string.
1923         (output_lines): Print PWD.
1924
1925 2018-05-18  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
1926
1927         PR middle-end/85817
1928         * ipa-pure-const.c (malloc_candidate_p): Remove the check integer_zerop
1929         for retval and return false if all args to phi are zero.        
1930
1931 2018-05-18  Richard Biener  <rguenther@suse.de>
1932
1933         * gimple-ssa-evrp.c (class evrp_folder): Add simplify_stmt_using_ranges
1934         method.
1935         (evrp_dom_walker::before_dom_children): Call it.
1936
1937 2018-05-18  Richard Biener  <rguenther@suse.de>
1938
1939         * tree-dfa.c (get_ref_base_and_extent): Use range-info to refine
1940         results when processing array refs with variable index.
1941
1942 2018-05-18  Toon Moene  <toon@moene.org>
1943
1944         * doc/invoke.texi: Move -floop-unroll-and-jam documentation
1945         directly after that of -floop-interchange. Indicate that both
1946         options are enabled by default when specifying -O3. 
1947
1948 2018-05-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1949
1950         * config/aarch64/aarch64-simd.md (vec_set<mode>): Use VALL_F16 mode
1951         iterator.  Delete separate integer-mode vec_set<mode> expander.
1952         (aarch64_simd_vec_setv2di): Delete.
1953         (vec_setv2di): Delete.
1954         (aarch64_simd_vec_set<mode>): Delete all other patterns with that name.
1955         Use VALL_F16 mode iterator.  Add LD1 alternative and use vwcore for
1956         the "w, r" alternative.
1957
1958 2018-05-18  Martin Liska  <mliska@suse.cz>
1959
1960         * passes.def: Add pass_lower_switch and pass_lower_switch_O0.
1961         * tree-pass.h (make_pass_lower_switch_O0): New function.
1962         * tree-switch-conversion.c (node_has_low_bound): Remove.
1963         (node_has_high_bound): Likewise.
1964         (node_is_bounded): Likewise.
1965         (class pass_lower_switch): Make it a template type and create
1966         two instances.
1967         (pass_lower_switch::execute): Add template argument.
1968         (make_pass_lower_switch): New function.
1969         (make_pass_lower_switch_O0): New function.
1970         (do_jump_if_equal): Remove.
1971         (emit_case_nodes): Simplify to just handle all 3 cases and leave
1972         all the hard work to tree optimization passes.
1973
1974 2018-05-18  Martin Liska  <mliska@suse.cz>
1975
1976         * dbgcnt.c (limit_low): Renamed from limit.
1977         (limit_high): New variable.
1978         (dbg_cnt_is_enabled): Check for upper limit.
1979         (dbg_cnt): Adjust dumping.
1980         (dbg_cnt_set_limit_by_index): Add new argument for high
1981         value.
1982         (dbg_cnt_set_limit_by_name): Likewise.
1983         (dbg_cnt_process_single_pair): Parse new format.
1984         (dbg_cnt_process_opt): Use strtok.
1985         (dbg_cnt_list_all_counters): Remove 'value' and add
1986         'limit_high'.
1987         * doc/invoke.texi: Document changes.
1988
1989 2018-05-18  Richard Sandiford  <richard.sandiford@linaro.org>
1990
1991         * doc/sourcebuild.texi (scalar_all_fma): Document.
1992         * tree.def (FMA_EXPR): Delete.
1993         * internal-fn.def (FMA, FMS, FNMA, FNMS): New internal functions.
1994         * internal-fn.c (ternary_direct): New macro.
1995         (expand_ternary_optab_fn): Likewise.
1996         (direct_ternary_optab_supported_p): Likewise.
1997         * Makefile.in (build/genmatch.o): Depend on case-fn-macros.h.
1998         * builtins.c (fold_builtin_fma): Delete.
1999         (fold_builtin_3): Don't call it.
2000         * cfgexpand.c (expand_debug_expr): Remove FMA_EXPR handling.
2001         * expr.c (expand_expr_real_2): Likewise.
2002         * fold-const.c (operand_equal_p): Likewise.
2003         (fold_ternary_loc): Likewise.
2004         * gimple-pretty-print.c (dump_ternary_rhs): Likewise.
2005         * gimple.c (DEFTREECODE): Likewise.
2006         * gimplify.c (gimplify_expr): Likewise.
2007         * optabs-tree.c (optab_for_tree_code): Likewise.
2008         * tree-cfg.c (verify_gimple_assign_ternary): Likewise.
2009         * tree-eh.c (operation_could_trap_p): Likewise.
2010         (stmt_could_throw_1_p): Likewise.
2011         * tree-inline.c (estimate_operator_cost): Likewise.
2012         * tree-pretty-print.c (dump_generic_node): Likewise.
2013         (op_code_prio): Likewise.
2014         * tree-ssa-loop-im.c (stmt_cost): Likewise.
2015         * tree-ssa-operands.c (get_expr_operands): Likewise.
2016         * tree.c (commutative_ternary_tree_code, add_expr): Likewise.
2017         * fold-const-call.h (fold_fma): Delete.
2018         * fold-const-call.c (fold_const_call_ssss): Handle CFN_FMS,
2019         CFN_FNMA and CFN_FNMS.
2020         (fold_fma): Delete.
2021         * genmatch.c (combined_fn): New enum.
2022         (commutative_ternary_tree_code): Remove FMA_EXPR handling.
2023         (commutative_op): New function.
2024         (commutate): Use it.  Handle more than 2 operands.
2025         (dt_operand::gen_gimple_expr): Use commutative_op.
2026         (parser::parse_expr): Allow :c to be used with non-binary
2027         operators if the commutative operand is known.
2028         * gimple-ssa-backprop.c (backprop::process_builtin_call_use): Handle
2029         CFN_FMS, CFN_FNMA and CFN_FNMS.
2030         (backprop::process_assign_use): Remove FMA_EXPR handling.
2031         * hsa-gen.c (gen_hsa_insns_for_operation_assignment): Likewise.
2032         (gen_hsa_fma): New function.
2033         (gen_hsa_insn_for_internal_fn_call): Use it for IFN_FMA, IFN_FMS,
2034         IFN_FNMA and IFN_FNMS.
2035         * match.pd: Add folds for IFN_FMS, IFN_FNMA and IFN_FNMS.
2036         * gimple-fold.h (follow_all_ssa_edges): Declare.
2037         * gimple-fold.c (follow_all_ssa_edges): New function.
2038         * tree-ssa-math-opts.c (convert_mult_to_fma_1): Use the
2039         gimple_build interface and use follow_all_ssa_edges to fold the result.
2040         (convert_mult_to_fma): Use direct_internal_fn_suppoerted_p
2041         instead of checking for optabs directly.
2042         * config/i386/i386.c (ix86_add_stmt_cost): Recognize FMAs as calls
2043         rather than FMA_EXPRs.
2044         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Create a
2045         call to IFN_FMA instead of an FMA_EXPR.
2046
2047 2018-05-17  Jim Wilson  <jimw@sifive.com>
2048
2049         * expr.c (do_tablejump): When converting index to Pmode, if we have a
2050         sign extended promoted subreg, and the range does not have the sign bit
2051         set, then do a sign extend.
2052
2053         * config/riscv/riscv.c (riscv_extend_comparands): In unsigned QImode
2054         test, check for sign extended subreg and/or constant operands, and
2055         do a sign extend in that case.
2056
2057 2018-05-17  Steve Ellcey  <sellcey@cavium.com>
2058
2059         * config/aarch64/thunderx2t99.md (thunderx2t99_ls_both): Delete.
2060         (thunderx2t99_multiple): Delete psuedo-units from used cpus.
2061         Add untyped.
2062         (thunderx2t99_alu_shift): Remove alu_shift_reg, alus_shift_reg.
2063         Change logics_shift_reg to logics_shift_imm.
2064         (thunderx2t99_fp_loadpair_basic): Delete.
2065         (thunderx2t99_fp_storepair_basic): Delete.
2066         (thunderx2t99_asimd_int): Add neon_sub and neon_sub_q types.
2067         (thunderx2t99_asimd_polynomial): Delete.
2068         (thunderx2t99_asimd_fp_simple): Add neon_fp_mul_s_scalar_q
2069         and neon_fp_mul_d_scalar_q.
2070         (thunderx2t99_asimd_fp_conv): Add *int_to_fp* types.
2071         (thunderx2t99_asimd_misc): Delete neon_dup and neon_dup_q.
2072         (thunderx2t99_asimd_recip_step): Add missing *sqrt* types.
2073         (thunderx2t99_asimd_lut): Add missing tbl types.
2074         (thunderx2t99_asimd_ext): Delete.
2075         (thunderx2t99_asimd_load1_1_mult): Delete.
2076         (thunderx2t99_asimd_load1_2_mult): Delete.
2077         (thunderx2t99_asimd_load1_ldp): New.
2078         (thunderx2t99_asimd_load1): New.
2079         (thunderx2t99_asimd_load2): Add missing *load2* types.
2080         (thunderx2t99_asimd_load3): New.
2081         (thunderx2t99_asimd_load4): New.
2082         (thunderx2t99_asimd_store1_1_mult): Delete.
2083         (thunderx2t99_asimd_store1_2_mult): Delete.
2084         (thunderx2t99_asimd_store2_mult): Delete.
2085         (thunderx2t99_asimd_store2_onelane): Delete.
2086         (thunderx2t99_asimd_store_stp): New.
2087         (thunderx2t99_asimd_store1): New.
2088         (thunderx2t99_asimd_store2): New.
2089         (thunderx2t99_asimd_store3): New.
2090         (thunderx2t99_asimd_store4): New.
2091
2092 2018-05-17  Jerome Lambourg  <lambourg@adacore.com>
2093
2094         * config/arm/arm_cmse.h (cmse_nsfptr_create, cmse_is_nsfptr): Remove
2095         #include <stdint.h>.  Replace intptr_t with __INTPTR_TYPE__.
2096
2097 2018-05-17  Pat Haugen  <pthaugen@us.ibm.com>
2098             Segher Boessenkool  <segher@kernel.crashing.org>
2099
2100         PR target/85698
2101         * config/rs6000/rs6000.c (rs6000_output_move_128bit): Check dest
2102         operand.
2103
2104 2018-05-17  Richard Biener  <rguenther@suse.de>
2105
2106         * tree-ssa-dse.c (dse_classify_store): Fix iterator increment
2107         for pruning loop and prune defs feeding only already visited PHIs.
2108
2109 2018-05-17  Richard Biener  <rguenther@suse.de>
2110
2111         * tree-ssa-sccvn.c (vn_reference_lookup_3): Improve memset handling.
2112
2113 2018-05-17  Bin Cheng  <bin.cheng@arm.com>
2114             Richard Biener  <rguenther@suse.de>
2115
2116         PR tree-optimization/85793
2117         * tree-vect-stmts.c (vectorizable_load): Handle 1 element-wise load
2118         for VMAT_ELEMENTWISE.
2119
2120 2018-05-17  Richard Sandiford  <richard.sandiford@linaro.org>
2121
2122         * internal-fn.h (lookup_internal_fn): Declare
2123         * internal-fn.c (lookup_internal_fn): New function.
2124         * gimple.c (gimple_build_call_from_tree): Handle calls to
2125         internal functions.
2126         * gimple-pretty-print.c (dump_gimple_call): Print "." before
2127         internal function names.
2128         * tree-pretty-print.c (dump_generic_node): Likewise.
2129         * tree-ssa-scopedtables.c (expr_hash_elt::print): Likewise.
2130
2131 2018-05-17  Richard Sandiford  <richard.sandiford@linaro.org>
2132
2133         * gimple-fold.h (gimple_build): Make the function forms take
2134         combined_fn rather than built_in_function.
2135         (gimple_simplify): Likewise.
2136         * gimple-match-head.c (gimple_simplify): Likewise.
2137         * gimple-fold.c (gimple_build): Likewise.
2138         * tree-vect-loop.c (get_initial_def_for_reduction): Use gimple_build
2139         rather than gimple_build_call_internal.
2140         (get_initial_defs_for_reduction): Likewise.
2141         (vect_create_epilog_for_reduction): Likewise.
2142         (vectorizable_live_operation): Likewise.
2143
2144 2018-05-17  Martin Liska  <mliska@suse.cz>
2145
2146         * gimple-ssa-sprintf.c (format_directive): Do not use
2147         space in between 'G_' and '('.
2148
2149 2018-05-17  Jakub Jelinek  <jakub@redhat.com>
2150
2151         PR target/85323
2152         * config/i386/i386.c (ix86_fold_builtin): Handle masked shifts
2153         even if the mask is not all ones.
2154
2155         PR target/85323
2156         * config/i386/i386.c (ix86_fold_builtin): Fold shift builtins by
2157         vector.
2158         (ix86_gimple_fold_builtin): Likewise.
2159
2160         PR target/85323
2161         * config/i386/i386.c: Include tree-vector-builder.h.
2162         (ix86_vector_shift_count): New function.
2163         (ix86_fold_builtin): Fold shift builtins by scalar count.
2164         (ix86_gimple_fold_builtin): Likewise.
2165
2166         * config/i386/avx512fintrin.h (_mm512_set_epi16, _mm512_set_epi8,
2167         _mm512_setzero): New intrinsics.
2168
2169 2018-05-17  James Greenhalgh  <james.greenhalgh@arm.com>
2170             Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2171
2172         * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify
2173         code generation for cases where splatting a value is not useful.
2174         * simplify-rtx.c (simplify_ternary_operation): Simplify
2175         vec_merge across a vec_duplicate and a paradoxical subreg forming a vector
2176         mode to a vec_concat.
2177
2178 2018-05-17  Olga Makhotina  <olga.makhotina@intel.com>
2179
2180         * config.gcc: Support "goldmont-plus".
2181         * config/i386/driver-i386.c (host_detect_local_cpu): Detect
2182         "goldmont-plus".
2183         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
2184         PROCESSOR_GOLDMONT_PLUS.
2185         * config/i386/i386.c (m_GOLDMONT_PLUS): Define.
2186         (processor_target_table): Add "goldmont-plus".
2187         (PTA_GOLDMONT_PLUS): Define.
2188         (ix86_lea_outperforms): Add TARGET_GOLDMONT_PLUS.
2189         (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT_PLUS.
2190         (fold_builtin_cpu): Add M_INTEL_GOLDMONT_PLUS.
2191         (fold_builtin_cpu): Add "goldmont-plus".
2192         (ix86_add_stmt_cost): Add TARGET_GOLDMONT_PLUS.
2193         (ix86_option_override_internal): Add "goldmont-plus".
2194         * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT_PLUS.
2195         (processor_type): Add PROCESSOR_GOLDMONT_PLUS.
2196         * config/i386/x86-tune.def: Add m_GOLDMONT_PLUS.
2197         * doc/invoke.texi: Add goldmont-plus as x86 -march=/-mtune= CPU type.
2198
2199 2018-05-17  Richard Biener  <rguenther@suse.de>
2200
2201         PR tree-optimization/85757
2202         * tree-ssa-dse.c (dse_classify_store): Record a PHI def and
2203         remove defs that only feed that PHI from further processing.
2204
2205 2018-05-16  Jim Wilson  <jimw@sifive.com>
2206
2207         * config/riscv/riscv.md (<optab>si3_mask, <optab>si3_mask_1): Prepend
2208         asterisk to name.
2209         (<optab>di3_mask, <optab>di3_mask_1): Likewise.
2210
2211 2018-05-16  Mark Wielaard  <mark@klomp.org>
2212
2213         * dwarf2out.c (count_index_strings): New function.
2214         (output_indirect_strings): Call count_index_strings and generate
2215         header for dwarf_version >= 5.
2216
2217 2018-05-16  Mark Wielaard  <mark@klomp.org>
2218
2219         * dwarf2out.c (dwarf_FORM): New function.
2220         (set_indirect_string): Use dwarf_FORM.
2221         (reset_indirect_string): Likewise.
2222         (size_of_die): Likewise.
2223         (value_format): Likewise.
2224         (output_die): Likewise.
2225         (add_skeleton_AT_string): Likewise.
2226         (output_macinfo_op): Likewise.
2227         (index_string): Likewise.
2228         (output_index_string_offset): Likewise.
2229         (output_index_string): Likewise.
2230         (count_index_strings): Likewise.
2231
2232 2018-05-16  Carl Love  <cel@us.ibm.com>
2233
2234         * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions
2235         dcbt and dcbtstt with TH=16 if operands[2] is 0 and Power 8 or newer.
2236
2237 2018-05-16  Martin Jambor  <mjambor@suse.cz>
2238
2239         * ipa-prop.c (ipa_free_all_edge_args): Remove.
2240         * ipa-prop.h (ipa_free_all_edge_args): Likewise.
2241
2242 2018-05-16  Wilco Dijkstra  <wdijkstr@arm.com>
2243
2244         * config/aarch64/aarch64.md (fma<mode>4): Change into expand pattern.
2245         (fnma<mode>4): Likewise.
2246         (fms<mode>4): Likewise.
2247         (fnms<mode>4): Likewise.
2248         (aarch64_fma<mode>4): Rename insn, reorder accumulator operand.
2249         (aarch64_fnma<mode>4): Likewise.
2250         (aarch64_fms<mode>4): Likewise.
2251         (aarch64_fnms<mode>4): Likewise.
2252         (aarch64_fnmadd<mode>4): Likewise.
2253
2254 2018-05-16  Jason Merrill  <jason@redhat.com>
2255
2256         * tree.c (warn_deprecated_use): Return bool.  Simplify logic.
2257
2258 2018-05-16  Richard Biener  <rguenther@suse.de>
2259
2260         * tree-vectorizer.h (struct stmt_info_for_cost): Add where member.
2261         (dump_stmt_cost): Declare.
2262         (add_stmt_cost): Dump cost we add.
2263         (add_stmt_costs): New function.
2264         (vect_model_simple_cost, vect_model_store_cost, vect_model_load_cost):
2265         No longer exported.
2266         (vect_analyze_stmt): Adjust prototype.
2267         (vectorizable_condition): Likewise.
2268         (vectorizable_live_operation): Likewise.
2269         (vectorizable_reduction): Likewise.
2270         (vectorizable_induction): Likewise.
2271         * tree-vect-loop.c (vect_analyze_loop_operations): Create local
2272         cost vector to pass to vectorizable_ and record afterwards.
2273         (vect_model_reduction_cost): Take cost vector argument and adjust.
2274         (vect_model_induction_cost): Likewise.
2275         (vectorizable_reduction): Likewise.
2276         (vectorizable_induction): Likewise.
2277         (vectorizable_live_operation): Likewise.
2278         * tree-vect-slp.c (vect_create_new_slp_node): Initialize
2279         SLP_TREE_NUMBER_OF_VEC_STMTS.
2280         (vect_analyze_slp_cost_1): Remove.
2281         (vect_analyze_slp_cost): Likewise.
2282         (vect_slp_analyze_node_operations): Take visited args and
2283         a target cost vector.  Avoid processing already visited stmt sets.
2284         (vect_slp_analyze_operations): Use a local cost vector to gather
2285         costs and register those of non-discarded instances.
2286         (vect_bb_vectorization_profitable_p): Use add_stmt_costs.
2287         (vect_schedule_slp_instance): Remove copying of
2288         SLP_TREE_NUMBER_OF_VEC_STMTS.  Instead assert that it is not
2289         zero.
2290         * tree-vect-stmts.c (record_stmt_cost): Remove path directly
2291         adding cost.  Record cost entry location.
2292         (vect_prologue_cost_for_slp_op): Function to compute cost of
2293         a constant or invariant generated for SLP vect in the prologue,
2294         split out from vect_analyze_slp_cost_1.
2295         (vect_model_simple_cost): Make static.  Adjust for SLP costing.
2296         (vect_model_promotion_demotion_cost): Likewise.
2297         (vect_model_store_cost): Likewise, make static.
2298         (vect_model_load_cost): Likewise.
2299         (vectorizable_bswap): Add cost vector arg and adjust.
2300         (vectorizable_call): Likewise.
2301         (vectorizable_simd_clone_call): Likewise.
2302         (vectorizable_conversion): Likewise.
2303         (vectorizable_assignment): Likewise.
2304         (vectorizable_shift): Likewise.
2305         (vectorizable_operation): Likewise.
2306         (vectorizable_store): Likewise.
2307         (vectorizable_load): Likewise.
2308         (vectorizable_condition): Likewise.
2309         (vectorizable_comparison): Likewise.
2310         (can_vectorize_live_stmts): Likewise.
2311         (vect_analyze_stmt): Likewise.
2312         (vect_transform_stmt): Adjust calls to vectorizable_*.
2313         * tree-vectorizer.c: Include gimple-pretty-print.h.
2314         (dump_stmt_cost): New function.
2315
2316 2018-05-16  Richard Biener  <rguenther@suse.de>
2317
2318         * params.def (PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE): New param.
2319         * doc/invoke.texi (dse-max-alias-queries-per-store): Document.
2320         * tree-ssa-dse.c: Include tree-ssa-loop.h.
2321         (check_name): New callback.
2322         (dse_classify_store): Track cycles via a visited bitmap of PHI
2323         defs and simplify handling of in-loop and across loop dead stores
2324         and properly fail for loop-variant refs.  Handle byte-tracking with
2325         multiple defs.  Use PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE for
2326         limiting the walk.
2327
2328 2018-05-16  Richard Sandiford  <richard.sandiford@linaro.org>
2329
2330         * tree-vectorizer.h (vect_get_vector_types_for_stmt): Declare.
2331         (vect_get_mask_type_for_stmt): Likewise.
2332         * tree-vect-slp.c (vect_two_operations_perm_ok_p): New function,
2333         split out from...
2334         (vect_build_slp_tree_1): ...here.  Use vect_get_vector_types_for_stmt
2335         to determine the statement's vector type and the vector type that
2336         should be used for calculating nunits.  Deal with cases in which
2337         the type has to be deferred.
2338         (vect_slp_analyze_node_operations): Use vect_get_vector_types_for_stmt
2339         and vect_get_mask_type_for_stmt to calculate STMT_VINFO_VECTYPE.
2340         * tree-vect-loop.c (vect_determine_vf_for_stmt_1)
2341         (vect_determine_vf_for_stmt): New functions, split out from...
2342         (vect_determine_vectorization_factor): ...here.
2343         * tree-vect-stmts.c (vect_get_vector_types_for_stmt)
2344         (vect_get_mask_type_for_stmt): New functions, split out from
2345         vect_determine_vectorization_factor.
2346
2347 2018-05-16  Richard Biener  <rguenther@suse.de>
2348
2349         * tree-cfg.c (verify_gimple_assign_ternary): Properly
2350         verify the [VEC_]COND_EXPR embedded comparison.
2351
2352 2018-05-15  Martin Sebor  <msebor@redhat.com>
2353
2354         PR tree-optimization/85753
2355         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Handle
2356         RECORD_TYPE in addition to ARRAY_TYPE.
2357
2358 2018-05-15  Martin Sebor  <msebor@redhat.com>
2359
2360         PR middle-end/85643
2361         * calls.c (get_attr_nonstring_decl): Handle MEM_REF.
2362
2363 2018-05-15  Richard Biener  <rguenther@suse.de>
2364
2365         * tree-ssa-dse.c (dse_classify_store): Remove use_stmt parameter,
2366         add by_clobber_p one.  Change algorithm to collect all defs
2367         representing uses we need to walk and try reducing them to
2368         a single one before failing.
2369         (dse_dom_walker::dse_optimize_stmt): Adjust.
2370
2371 2018-05-13  Mark Wielaard  <mark@klomp.org>
2372
2373         * dwarf2out.c (dwarf_OP): Handle DW_OP_addrx and DW_OP_constx.
2374         (size_of_loc_descr): Likewise.
2375         (output_loc_operands): Likewise.
2376         (output_loc_operands_raw): Likewise.
2377         (dw_addr_op): Use dwarf_OP () for DW_OP_constx and DW_OP_addrx.
2378         (resolve_addr_in_expr): Handle DW_OP_addrx and DW_OP_constx.
2379         (hash_loc_operands): Likewise.
2380         (compare_loc_operands): Likewise.
2381
2382 2018-05-14  Mark Wielaard  <mark@klomp.org>
2383
2384         * dwarf2out.c (count_index_addrs): New function.
2385         (dwarf2out_finish): Use count_index_addrs to calculate addrs_length.
2386
2387 2018-05-15  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
2388
2389         PR tree-optimization/83648
2390         * ipa-pure-const.c (malloc_candidate_p): Allow function with NULL
2391         return value as malloc candidate.
2392
2393 2018-05-15  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
2394
2395         PR ipa/85734
2396         * ipa-pure-const.c (warn_function_malloc): Pass value of known_finite param
2397         as true in call to suggest_attribute.
2398
2399 2018-05-14  Segher Boessenkool  <segher@kernel.crashing.org>
2400
2401         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete @itemx for
2402         -mreadonly-in-sdata.
2403
2404 2018-05-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2405
2406         * config/aarch64/aarch64-simd.md (*aarch64_crypto_aese_fused):
2407         New pattern.
2408         (aarch64_crypto_aesd_fused): Likewise.
2409
2410 2018-05-14  Wilco Dijkstra  <wdijkstr@arm.com>
2411
2412         * config/aarch64/aarch64.md (mov<mode>): Remove '*' in alternatives.
2413         (movsi_aarch64): Likewise.
2414         (load_pairsi): Likewise.
2415         (load_pairdi): Likewise.
2416         (store_pairsi): Likewise.
2417         (store_pairdi): Likewise.
2418         (load_pairsf): Likewise.
2419         (load_pairdf): Likewise.
2420         (store_pairsf): Likewise.
2421         (store_pairdf): Likewise.
2422         (zero_extend): Likewise.
2423         (trunc): Swap alternatives.
2424         (fcvt_target): Add '?' to prefer w over r.
2425
2426 2018-05-14  Jakub Jelinek  <jakub@redhat.com>
2427
2428         PR target/85756
2429         * config/i386/i386.md: Disallow non-commutative arithmetics in
2430         last twpeephole for mem {+,-,&,|,^}= x; mem != 0 after cmpelim
2431         optimization.  Use COMMUTATIVE_ARITH_P test rather than != MINUS
2432         in the peephole2 before it.
2433
2434 2018-05-14  Sebastian Peryt  <sebastian.peryt@intel.com>
2435
2436         * common/config/i386/i386-common.c (OPTION_MASK_ISA_CLDEMOTE_SET,
2437         OPTION_MASK_ISA_CLDEMOTE_UNSET): New defines.
2438         (ix86_handle_option): Handle -mcldemote.
2439         * config.gcc: New header.
2440         * config/i386/cldemoteintrin.h: New file.
2441         * config/i386/cpuid.h (bit_CLDEMOTE): New bit.
2442         * config/i386/driver-i386.c (host_detect_local_cpu): Detect
2443         -mcldemote.
2444         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
2445         OPTION_MASK_ISA_CLDEMOTE.
2446         * config/i386/i386.c (ix86_target_string): Add -mcldemote.
2447         (ix86_valid_target_attribute_inner_p): Ditto.
2448         (enum ix86_builtins): Add IX86_BUILTIN_CLDEMOTE.
2449         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_cldemote.
2450         (ix86_expand_builtin): Expand IX86_BUILTIN_CLDEMOTE.
2451         * config/i386/i386.h (TARGET_CLDEMOTE, TARGET_CLDEMOTE_P): New.
2452         * config/i386/i386.md (UNSPECV_CLDEMOTE): New.
2453         (cldemote): New.
2454         * config/i386/i386.opt: Add -mcldemote.
2455         * config/i386/x86intrin.h: New header.
2456         * doc/invoke.texi: Add -mcldemote.
2457
2458 2018-05-14  Richard Biener  <rguenther@suse.de>
2459
2460         * doc/match-and-simplify.texi: Adjust :s documentation.
2461
2462 2018-05-14  Alexander Monakov  <amonakov@ispras.ru>
2463
2464         * sort.cc (REORDER_23): Pass the type for the temporaries instead of
2465         intended memcpy size.
2466         (REORDER_45): Likewise.
2467
2468 2018-05-13  Alexander Monakov  <amonakov@ispras.ru>
2469
2470         * sort.cc: New file.
2471         * system.h [!CHECKING_P] (qsort): Redirect to gcc_qsort.
2472         * vec.c (qsort_chk): Use gcc_qsort.
2473         * Makefile.in (OBJS-libcommon): Add sort.o.
2474         (build/sort.o): New target.  Use it...
2475         (BUILD_RTL): ... here, and...
2476         (build/gencfn-macros): ... here, and...
2477         (build/genmatch): ... here.
2478
2479 2018-05-13  Kito Cheng  <kito.cheng@gmail.com>
2480             Chung-Ju Wu  <jasonwucj@gmail.com>
2481
2482         * config.gcc (nds32*-*-*): Check that n15 is valid to --with-cpu.
2483         * config/nds32/nds32-graywolf.md: New file.
2484         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_GRAYWOLF.
2485         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n15
2486         pipeline.
2487         * config/nds32/nds32-protos.h: More declarations for n15 pipeline.
2488         * config/nds32/nds32-utils.c: More implementations for n15 pipeline.
2489         * config/nds32/nds32.md (pipeline_model): Add graywolf.
2490         * config/nds32/nds32.opt (mcpu): Support n15 pipeline cpus.
2491         * config/nds32/pipelines.md: Include n15 settings.
2492
2493 2018-05-13  Kito Cheng  <kito.cheng@gmail.com>
2494             Chung-Ju Wu  <jasonwucj@gmail.com>
2495
2496         * config.gcc (nds32*-*-*): Check that n12/n13 are valid to --with-cpu.
2497         * config/nds32/nds32-n13.md: New file.
2498         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N12 and CPU_N13.
2499         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n12/n13
2500         pipeline.
2501         * config/nds32/nds32-protos.h: More declarations for n12/n13 pipeline.
2502         * config/nds32/nds32.md (pipeline_model): Add n13.
2503         * config/nds32/nds32.opt (mcpu): Support n12/n13 pipeline cpus.
2504         * config/nds32/pipelines.md: Include n13 settings.
2505
2506 2018-05-13  Kito Cheng  <kito.cheng@gmail.com>
2507             Chung-Ju Wu  <jasonwucj@gmail.com>
2508
2509         * config.gcc (nds32*-*-*): Check that n10/d10 are valid to --with-cpu.
2510         * config/nds32/nds32-n10.md: New file.
2511         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N10.
2512         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n10
2513         pipeline.
2514         * config/nds32/nds32-protos.h: More declarations for n10 pipeline.
2515         * config/nds32/nds32-utils.c: More implementations for n10 pipeline.
2516         * config/nds32/nds32.md (pipeline_model): Add n10.
2517         * config/nds32/nds32.opt (mcpu): Support n10 pipeline cpus.
2518         * config/nds32/pipelines.md: Include n10 settings.
2519
2520 2018-05-13  Monk Chiang  <sh.chiang04@gmail.com>
2521             Kito Cheng  <kito.cheng@gmail.com>
2522             Chung-Ju Wu  <jasonwucj@gmail.com>
2523
2524         * config.gcc (nds32be-*-*): Handle --with-ext-dsp.
2525         * config/nds32/constants.md (unspec_element, unspec_volatile_element):
2526         Add enum values for DSP extension instructions.
2527         * config/nds32/constraints.md (Iu06, IU06, CVp5, CVs5, CVs2, CVhi):
2528         New constraints.
2529         * config/nds32/iterators.md (shifts, shiftrt, sat_plus, all_plus,
2530         sat_minus, all_minus, plus_minus, extend, sumax, sumin, sumin_max):
2531         New code iterators.
2532         (su, zs, uk, opcode, add_rsub, add_sub): New code attributes.
2533         * config/nds32/nds32-dspext.md: New file for DSP implementation.
2534         * config/nds32/nds32-intrinsic.c: Implementation of DSP extension.
2535         * config/nds32/nds32-intrinsic.md: Likewise.
2536         * config/nds32/nds32_intrinsic.h: Likewise.
2537         * config/nds32/nds32-md-auxiliary.c: Likewise.
2538         * config/nds32/nds32-memory-manipulation.c: Consider DSP extension.
2539         * config/nds32/nds32-predicates.c (const_vector_to_hwint): New.
2540         (nds32_valid_CVp5_p, nds32_valid_CVs5_p): New.
2541         (nds32_valid_CVs2_p, nds32_valid_CVhi_p): New.
2542         * config/nds32/nds32-protos.h: New declarations for DSP extension.
2543         * config/nds32/nds32-utils.c (extract_mac_non_acc_rtx): New case
2544         TYPE_DMAC in switch statement.
2545         * config/nds32/nds32.c: New checking and implementation for DSP
2546         extension instructions.
2547         * config/nds32/nds32.h: Likewise.
2548         * config/nds32/nds32.md: Likewise.
2549         * config/nds32/nds32.opt (mhw-abs, mext-dsp): New options.
2550         * config/nds32/predicates.md: Implement new predicates for DSP
2551         extension.
2552
2553 2018-05-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
2554
2555         * config/rs6000/rs6000.md (mov<mode>_softfloat, FMOVE32):
2556         Reformat alternatives and attributes so it is easier to identify
2557         which constraints/attributes go with which instruction.
2558         (mov<mode>_hardfloat32, FMOVE64): Likewise.
2559         (mov<mode>_softfloat32, FMOVE64): Likewise.
2560         (mov<mode>_hardfloat64, FMOVE64): Likewise.
2561         (mov<mode>_softfloat64, FMOVE64): Likewise.
2562
2563 2018-05-11  Kelvin Nilsen  <kelvin@gcc.gnu.org>
2564
2565         * doc/extend.texi (PowerPC Built-in Functions): Rename this
2566         subsection.
2567         (Basic PowerPC Built-in Functions): The new name of the
2568         subsection previously known as "PowerPC Built-in Functions".
2569         (Basic PowerPC Built-in Functions Available on all Configurations):
2570         New subsubsection.
2571         (Basic PowerPC Built-in Functions Available on ISA 2.05): Likewise.
2572         (Basic PowerPC Built-in Functions Available on ISA 2.06): Likewise.
2573         (Basic PowerPC Built-in Functions Available on ISA 2.07): Likewise.
2574         (Basic PowerPC Built-in Functions Available on ISA 3.0): Likewise.
2575
2576 2018-05-11  Martin Jambor  <mjambor@suse.cz>
2577
2578         PR ipa/85655
2579         * ipa-cp.c (intersect_with_plats): Check that the lattice contains
2580         single const.
2581
2582 2018-05-11  Richard Earnshaw  <rearnsha@arm.com>
2583
2584         PR target/85733
2585         * config/arm/arm-cpus.in (fgroup ARMv6m): Add be8 feature.
2586
2587 2018-05-11  Sebastian Peryt  <sebastian.peryt@intel.com>
2588
2589         * common/config/i386/i386-common.c (OPTION_MASK_ISA_WAITPKG_SET,
2590         OPTION_MASK_ISA_WAITPKG_UNSET): New defines.
2591         (ix86_handle_option): Handle -mwaitpkg.
2592         * config.gcc: New header.
2593         * config/i386/cpuid.h (bit_WAITPKG): New bit.
2594         * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mwaitpkg.
2595         * config/i386/i386-builtin-types.def ((UINT8, UNSIGNED, UINT64)): New
2596         function type.
2597         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
2598         OPTION_MASK_ISA_WAITPKG.
2599         * config/i386/i386.c (ix86_target_string): Add -mwaitpkg.
2600         (ix86_option_override_internal): Add PTA_WAITPKG.
2601         (ix86_valid_target_attribute_inner_p): Add -mwaitpkg.
2602         (enum ix86_builtins): Add IX86_BUILTIN_UMONITOR, IX86_BUILTIN_UMWAIT,
2603         IX86_BUILTIN_TPAUSE.
2604         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_umonitor,
2605         __builtin_ia32_umwait and __builtin_ia32_tpause.
2606         (ix86_expand_builtin): Expand IX86_BUILTIN_UMONITOR,
2607         IX86_BUILTIN_UMWAIT, IX86_BUILTIN_TPAUSE.
2608         * config/i386/i386.h (TARGET_WAITPKG, TARGET_WAITPKG_P): New.
2609         * config/i386/i386.md (UNSPECV_UMWAIT, UNSPECV_UMONITOR,
2610         UNSPECV_TPAUSE): New.
2611         (umwait, umwait_rex64, umonitor_<mode>, tpause, tpause_rex64): New.
2612         * config/i386/i386.opt: Add -mwaitpkg.
2613         * config/i386/waitpkgintrin.h: New file.
2614         * config/i386/x86intrin.h: New header.
2615         * doc/invoke.texi: Add -mwaitpkg.
2616
2617 2018-05-11  Richard Earnshaw  <rearnsha@arm.com>
2618
2619         PR target/85606
2620         * config/arm/arm-cpus.in: Add comment that ARMv6-m and ARMv6S-m are now
2621         equivalent.
2622         (cortex-m0): Use armv6s-m isa.
2623         (cortex-m0plus): Likewise.
2624         (cortex-m1): Likewise.
2625         (cortex-m0.small-multiply): Likewise.
2626         (cortex-m0plus.small-multiply): Likewise.
2627         (cortex-m1.small-multiply): Likewise.
2628
2629 2018-05-11  Allan Sandfeld Jensen  <allan.jensen@qt.io>
2630             Jakub Jelinek  <jakub@redhat.com>
2631
2632         PR tree-optimization/85692
2633         * tree-ssa-forwprop.c (simplify_vector_constructor): Try two
2634         source permute as well.
2635
2636 2018-05-11  Martin Liska  <mliska@suse.cz>
2637
2638         PR sanitizer/85556
2639         * doc/extend.texi: Document LLVM style format for no_sanitize
2640         attribute.
2641
2642 2018-05-10  Michael Meissner  <meissner@linux.vnet.ibm.com>
2643
2644         * config/rs6000/rs6000.c (mode_supports_dq_form): Rename
2645         mode_supports_vsx_dform_quad to mode_supports_dq_form.
2646         (mode_supports_vsx_dform_quad): Likewise.
2647         (mode_supports_vmx_dform): Move these functions to be next to the
2648         other mode_supports functions.
2649         (mode_supports_dq_form): Likewise.
2650         (quad_address_p): Change calls of mode_supports_vsx_dform_quad to
2651         mode_supports_dq_form.
2652         (reg_offset_addressing_ok_p): Likewise.
2653         (offsettable_ok_by_alignment): Likewise.
2654         (rs6000_legitimate_offset_address_p): Likewise.
2655         (legitimate_lo_sum_address_p): Likewise.
2656         (rs6000_legitimize_address): Likewise.
2657         (rs6000_legitimize_reload_address): Likewise.
2658         (rs6000_secondary_reload_inner): Likewise.
2659         (rs6000_preferred_reload_class): Likewise.
2660         (rs6000_output_move_128bit): Likewise.
2661
2662 2018-05-10  Uros Bizjak  <ubizjak@gmail.com>
2663
2664         * config/i386/i386.c (ix86_expand_builtin) <case IX86_BUILTIN_RDPID>:
2665         Generate SImode target register for null target.
2666         <case IX86_BUILTIN_XGETBV>: Ditto.
2667         <case IX86_BUILTIN_XSETBV>: Optimize LSHIFTRT generation.
2668         * config/i386/xsaveintrin.h (_xgetbv): Add missing return.
2669
2670 2018-05-10  Carl Love  <cel@us.ibm.com>
2671
2672         * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions
2673         dcbtt and dcbtstt if operands[2] is 0.
2674
2675 2018-05-10  Uros Bizjak  <ubizjak@gmail.com>
2676
2677         PR target/85693
2678         * config/i386/sse.md (usadv64qi): New expander.
2679
2680 2018-05-10  Segher Boessenkool  <segher@kernel.crashing.org>
2681
2682         * config/rs6000/altivec.md (altivec_vmrghb, altivec_vmrghh,
2683         altivec_vmrghw, altivec_vmrglb, altivec_vmrglh, altivec_vmrglw): Remove
2684         -maltivec=be support.
2685         (vec_widen_umult_even_v16qi, vec_widen_smult_even_v16qi,
2686         vec_widen_umult_even_v8hi, vec_widen_smult_even_v8hi,
2687         vec_widen_umult_even_v4si, vec_widen_smult_even_v4si,
2688         vec_widen_umult_odd_v16qi, vec_widen_smult_odd_v16qi,
2689         vec_widen_umult_odd_v8hi, vec_widen_smult_odd_v8hi,
2690         vec_widen_umult_odd_v4si, vec_widen_smult_odd_v4si, altivec_vpkpx,
2691         altivec_vpks<VI_char>ss, altivec_vpks<VI_char>us,
2692         altivec_vpku<VI_char>us, altivec_vpku<VI_char>um, altivec_vsum2sws,
2693         altivec_vsumsws): Adjust.
2694         (altivec_vspltb *altivec_vspltb_internal, altivec_vsplth,
2695         *altivec_vsplth_internal, altivec_vspltw, *altivec_vspltw_internal,
2696         altivec_vspltsf, *altivec_vspltsf_internal): Remove -maltivec=be
2697         support.
2698         (altivec_vperm_<mode>, altivec_vperm_<mode>_uns,
2699         altivec_vupkhs<VU_char>, altivec_vupkls<VU_char>, altivec_vupkhpx,
2700         altivec_vupklpx, altivec_lvsl, altivec_lvsr): Adjust.
2701         (altivec_lve<VI_char>x): Delete expand.
2702         (*altivec_lve<VI_char>x_internal): Rename to...
2703         (altivec_lve<VI_char>x): ... this.
2704         (altivec_lvxl_<mode>): Delete expand.
2705         (*altivec_lvxl_<mode>_internal): Rename to ...
2706         (altivec_lvxl_<mode>): ... this.
2707         (altivec_stvxl_<mode>): Delete expand.
2708         (*altivec_stvxl_<mode>_internal): Rename to ...
2709         (altivec_stvxl_<mode>): ... this.
2710         (altivec_stve<VI_char>x): Delete expand.
2711         (*altivec_stve<VI_char>x_internal): Rename to ...
2712         (altivec_stve<VI_char>x): ... this.
2713         (doublee<mode>2, unsdoubleev4si2, doubleo<mode>2, unsdoubleov4si2,
2714         doubleh<mode>2, unsdoublehv4si2, doublel<mode>2, unsdoublelv4si2,
2715         reduc_plus_scal_<mode>): Adjust.
2716         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Adjust
2717         comment.
2718         (rs6000_cpu_cpp_builtins): Adjust.
2719         (altivec_resolve_overloaded_builtin): Remove -maltivec=be support.
2720         * config/rs6000/rs6000-protos.h (altivec_expand_lvx_be,
2721         altivec_expand_stvx_be, altivec_expand_stvex_be): Delete.
2722         * config/rs6000/rs6000.c (rs6000_option_override_internal): Remove
2723         -maltivec=be support.
2724         (rs6000_split_vec_extract_var): Adjust.
2725         (rs6000_split_v4si_init): Adjust.
2726         (swap_selector_for_mode): Delete.
2727         (altivec_expand_lvx_be, altivec_expand_stvx_be,
2728         altivec_expand_stvex_be): Delete.
2729         (altivec_expand_lv_builtin, altivec_expand_stv_builtin): Remove
2730         -maltivec=be support.
2731         (rs6000_gimple_fold_builtin): Ditto.
2732         (rs6000_generate_float2_double_code, rs6000_generate_float2_code):
2733         Adjust.
2734         * config/rs6000/rs6000.h (VECTOR_ELT_ORDER_BIG): Delete.
2735         (TARGET_DIRECT_MOVE_64BIT): Adjust.
2736         * config/rs6000/rs6000.md (split for extendsidi2 for vectors): Adjust.
2737         * config/rs6000/rs6000.opt (maltivec=le, maltivec=be): Delete.
2738         * config/rs6000/vsx.md (floate<mode>, unsfloatev2di, floato<mode>,
2739         unsfloatov2di, vsignedo_v2df, vsignede_v2df, vunsignedo_v2df,
2740         vunsignede_v2df, vsx_extract_<mode>_p9, *vsx_extract_si,
2741         *vsx_extract_<mode>_p8, *vsx_extract_si_<uns>float_df,
2742         *vsx_extract_si_<uns>float_<mode>, vsx_set_<mode>_p9, vsx_set_v4sf_p9,
2743         *vsx_insert_extract_v4sf_p9, *vsx_insert_extract_v4sf_p9_2, and an
2744         anonymous split): Adjust.
2745         (vsx_mergel_<mode>, vsx_mergeh_<mode>): Remove -maltivec=be support.
2746         (vsx_xxspltd_<mode>, extract4b, insert4b): Adjust.
2747
2748 2018-05-10  Eric Botcazou  <ebotcazou@adacore.com>
2749
2750         * configure.ac (gcc_gxx_include_dir_add_sysroot): Set it to 1 only
2751         when --with-gxx-include-dir is also specified.
2752         * configure: Regenerate.
2753
2754 2018-05-09  Jim Wilson  <jimw@sifive.com>
2755
2756         PR target/84797
2757         * config.gcc (riscv*-*-*): Handle --with-multilib-list.
2758         * config/riscv/t-withmultilib: New.
2759         * config/riscv/withmultilib.h: New.
2760         * doc/install.texi: Document RISC-V --with-multilib-list support.
2761
2762 2018-05-09  Richard Biener  <rguenther@suse.de>
2763
2764         * tree-vect-slp.c (vect_bb_slp_scalar_cost): Fill a cost
2765         vector.
2766         (vect_bb_vectorization_profitable_p): Adjust.  Compute
2767         actual scalar cost using the cost vector and the add_stmt_cost
2768         machinery.
2769
2770 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
2771
2772         PR rtl-optimization/85645
2773         * config/rs6000/rs6000.c (rs6000_emit_prologue_components): Put a SET
2774         in the REG_CFA_REGISTER note for LR, don't leave it empty.
2775
2776 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
2777
2778         PR rtl-optimization/85645
2779         * shrink-wrap.c (spread_components): Return a boolean saying if
2780         anything was changed.
2781         (try_shrink_wrapping_separate): Iterate spread_components until
2782         nothing changes anymore.
2783
2784 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
2785
2786         PR rtl-optimization/85645
2787         * regrename.c (build_def_use): Also kill the chains that include the
2788         destination of a REG_CFA_REGISTER note.
2789
2790 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
2791
2792         PR rtl-optimization/85645
2793         *  regcprop.c (copyprop_hardreg_forward_1): Don't propagate into an
2794         insn that has a REG_CFA_REGISTER note.
2795
2796 2018-05-09  Richard Sandiford  <richard.sandiford@linaro.org>
2797
2798         * cfgexpand.c (expand_clobber): New function.
2799         (expand_gimple_stmt_1): Use it.
2800         * tree-vect-stmts.c (vect_clobber_variable): New function,
2801         split out from...
2802         (vectorizable_simd_clone_call): ...here.
2803         (vectorizable_store): Emit a clobber either side of an
2804         IFN_STORE_LANES sequence.
2805         (vectorizable_load): Emit a clobber after an IFN_LOAD_LANES sequence.
2806
2807 2018-05-09  Tom de Vries  <tom@codesourcery.com>
2808
2809         PR target/85626
2810         * config/nvptx/nvptx.md (define_insn "trap", define_insn "trap_if_true")
2811         (define_insn "trap_if_false"): Add exit after trap.
2812
2813 2018-05-09  Eric Botcazou  <ebotcazou@adacore.com>
2814
2815         PR rtl-optimization/85638
2816         * bb-reorder.c: Include common/common-target.h.
2817         (create_forwarder_block): New function extracted from...
2818         (fix_up_crossing_landing_pad): ...here.  Rename into...
2819         (dw2_fix_up_crossing_landing_pad): ...this.
2820         (sjlj_fix_up_crossing_landing_pad): New function.
2821         (find_rarely_executed_basic_blocks_and_crossing_edges): In SJLJ mode,
2822         call sjlj_fix_up_crossing_landing_pad if there are incoming EH edges
2823         from both partitions and exit the loop after one iteration.
2824
2825 2018-05-08  Kelvin Nilsen  <kelvin@gcc.gnu.org>
2826
2827         Revert:
2828         * doc/extend.texi (PowerPC Built-in Functions): Rename this
2829         subsection.
2830         (Basic PowerPC Built-in Functions): The new name of the
2831         subsection previously known as "PowerPC Built-in Functions".
2832         (Basic PowerPC Built-in Functions Available on all Configurations):
2833         New subsubsection.
2834         (Basic PowerPC Built-in Functions Available on ISA 2.05): New
2835         subsubsection.
2836         (Basic PowerPC Built-in Functions Available on ISA 2.06): New
2837         subsubsection.
2838         (Basic PowerPC Built-in Functions Available on ISA 2.07): New
2839         subsubsection.
2840         (Basic PowerPC Built-in Functions Available on ISA 3.0): New
2841         subsubsection.
2842
2843 2018-05-08  Jim Wilson  <jimw@sifive.com>
2844
2845         * config/riscv/linux.h (MUSL_ABI_SUFFIX): Delete unnecessary backslash.
2846         (LD_EMUL_SUFFIX): New.
2847         (LINK_SPEC): Use it.
2848
2849 2018-05-08  Kelvin Nilsen  <kelvin@gcc.gnu.org>
2850
2851         * doc/extend.texi (PowerPC Built-in Functions): Rename this
2852         subsection.
2853         (Basic PowerPC Built-in Functions): The new name of the
2854         subsection previously known as "PowerPC Built-in Functions".
2855         (Basic PowerPC Built-in Functions Available on all Configurations):
2856         New subsubsection.
2857         (Basic PowerPC Built-in Functions Available on ISA 2.05): New
2858         subsubsection.
2859         (Basic PowerPC Built-in Functions Available on ISA 2.06): New
2860         subsubsection.
2861         (Basic PowerPC Built-in Functions Available on ISA 2.07): New
2862         subsubsection.
2863         (Basic PowerPC Built-in Functions Available on ISA 3.0): New
2864         subsubsection.
2865
2866 2018-05-08  Jakub Jelinek  <jakub@redhat.com>
2867
2868         PR target/85683
2869         * config/i386/i386.md: Add peepholes for mem {+,-,&,|,^}= x; mem != 0
2870         after cmpelim optimization.
2871
2872 2018-05-08  Olga Makhotina  <olga.makhotina@intel.com>
2873
2874         * config.gcc: Support "goldmont".
2875         * config/i386/driver-i386.c (host_detect_local_cpu): Detect "goldmont".
2876         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
2877         PROCESSOR_GOLDMONT.
2878         * config/i386/i386.c (m_GOLDMONT): Define.
2879         (processor_target_table): Add "goldmont".
2880         (PTA_GOLDMONT): Define.
2881         (ix86_lea_outperforms): Add TARGET_GOLDMONT.
2882         (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT.
2883         (fold_builtin_cpu): Add M_INTEL_GOLDMONT.
2884         (fold_builtin_cpu): Add "goldmont".
2885         (ix86_add_stmt_cost): Add TARGET_GOLDMONT.
2886         (ix86_option_override_internal): Add "goldmont".
2887         * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT.
2888         (processor_type): Add PROCESSOR_GOLDMONT.
2889         * config/i386/i386.md: Add CPU "glm".
2890         * config/i386/glm.md: New file.
2891         * config/i386/x86-tune.def: Add m_GOLDMONT.
2892         * doc/invoke.texi: Add goldmont as x86 -march=/-mtune= CPU type.
2893
2894 2018-05-08  Jakub Jelinek  <jakub@redhat.com>
2895
2896         PR target/85572
2897         * config/i386/i386.c (ix86_expand_sse2_abs): Handle E_V2DImode and
2898         E_V4DImode.
2899         * config/i386/sse.md (abs<mode>2): Use VI_AVX2 iterator instead of
2900         VI1248_AVX512VL_AVX512BW.  Handle V2DImode and V4DImode if not
2901         TARGET_AVX512VL using ix86_expand_sse2_abs.  Formatting fixes.
2902
2903         PR target/85317
2904         * config/i386/i386.c (ix86_fold_builtin): Handle
2905         IX86_BUILTIN_{,P}MOVMSK{PS,PD,B}{,128,256}.
2906
2907         PR target/85480
2908         * config/i386/sse.md (ssequaterinsnmode): New mode attribute.
2909         (*<extract_type>_vinsert<shuffletype><extract_suf>_0): New pattern.
2910
2911 2018-05-08  Richard Earnshaw  <rearnsha@arm.com>
2912
2913         PR target/85658
2914         * config/arm/parsecpu.awk (check_cpu): Fix operator precedence.
2915         (check_arch): Likewise.
2916         (check_fpu): Return the result rather than printing it.
2917         (end arch): Fix operator precedence.
2918         (end cpu): Likewise.
2919         (END): Print the result from check_fpu.
2920
2921 2018-05-08  Richard Sandiford  <richard.sandiford@linaro.org>
2922             Alan Hayward  <alan.hayward@arm.com>
2923             David Sherwood  <david.sherwood@arm.com>
2924
2925         * config/aarch64/aarch64-sve.md (*pred_cmp<cmp_op><mode>_combine)
2926         (*pred_cmp<cmp_op><mode>, *fcm<cmp_op><mode>_and_combine)
2927         (*fcmuo<mode>_and_combine, *fcm<cmp_op><mode>_and)
2928         (*fcmuo<mode>_and): New patterns.
2929
2930 2018-05-08  Richard Sandiford  <richard.sandiford@linaro.org>
2931
2932         * config/aarch64/iterators.md (UNSPEC_COND_LO, UNSPEC_COND_LS)
2933         (UNSPEC_COND_HI, UNSPEC_COND_HS, UNSPEC_COND_UO): Delete.
2934         (SVE_INT_CMP, SVE_FP_CMP): New code iterators.
2935         (cmp_op, sve_imm_con): New code attributes.
2936         (SVE_COND_INT_CMP, imm_con): Delete.
2937         (cmp_op): Remove above unspecs from int attribute.
2938         * config/aarch64/aarch64-sve.md (*vec_cmp<cmp_op>_<mode>): Rename
2939         to...
2940         (*cmp<cmp_op><mode>): ...this.  Use UNSPEC_MERGE_PTRUE instead of
2941         comparison-specific unspecs.
2942         (*vec_cmp<cmp_op>_<mode>_ptest): Rename to...
2943         (*cmp<cmp_op><mode>_ptest): ...this and adjust likewise.
2944         (*vec_cmp<cmp_op>_<mode>_cc): Rename to...
2945         (*cmp<cmp_op><mode>_cc): ...this and adjust likewise.
2946         (*vec_fcm<cmp_op><mode>): Rename to...
2947         (*fcm<cmp_op><mode>): ...this and adjust likewise.
2948         (*vec_fcmuo<mode>): Rename to...
2949         (*fcmuo<mode>): ...this and adjust likewise.
2950         (*pred_fcm<cmp_op><mode>): New pattern.
2951         * config/aarch64/aarch64.c (aarch64_emit_unop, aarch64_emit_binop)
2952         (aarch64_emit_sve_ptrue_op, aarch64_emit_sve_ptrue_op_cc): New
2953         functions.
2954         (aarch64_unspec_cond_code): Remove handling of LTU, GTU, LEU, GEU
2955         and UNORDERED.
2956         (aarch64_gen_unspec_cond, aarch64_emit_unspec_cond): Delete.
2957         (aarch64_emit_sve_predicated_cond): New function.
2958         (aarch64_expand_sve_vec_cmp_int): Use aarch64_emit_sve_ptrue_op_cc.
2959         (aarch64_emit_unspec_cond_or): Replace with...
2960         (aarch64_emit_sve_or_conds): ...this new function.  Use
2961         aarch64_emit_sve_ptrue_op for the individual comparisons and
2962         aarch64_emit_binop to OR them together.
2963         (aarch64_emit_inverted_unspec_cond): Replace with...
2964         (aarch64_emit_sve_inverted_cond): ...this new function.  Use
2965         aarch64_emit_sve_ptrue_op for the comparison and
2966         aarch64_emit_unop to invert the result.
2967         (aarch64_expand_sve_vec_cmp_float): Update after the above
2968         changes.  Use aarch64_emit_sve_ptrue_op for native comparisons.
2969
2970 2018-05-07  Nathan Sidwell  <nathan@acm.org>
2971
2972         * doc/invoke.texi (C++ Dialect Options): Remove -ffor-scope.
2973         * doc/extend.texi (Deprecated Features): Remove -fno-for-scope
2974         (Backwards Compatibility): Likewise.
2975
2976 2018-05-07  Luis Machado  <luis.machado@linaro.org>
2977
2978         PR bootstrap/85681
2979         Revert:
2980         2018-05-07  Luis Machado  <luis.machado@linaro.org>
2981
2982         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
2983         <prefetch_dynamic_strides>: New const bool field.
2984         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
2985         prefetch_dynamic_strides.
2986         (exynosm1_prefetch_tune): Likewise.
2987         (thunderxt88_prefetch_tune): Likewise.
2988         (thunderx_prefetch_tune): Likewise.
2989         (thunderx2t99_prefetch_tune): Likewise.
2990         (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides to false.
2991         (aarch64_override_options_internal): Update to set
2992         PARAM_PREFETCH_DYNAMIC_STRIDES.
2993         * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
2994         * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
2995         * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
2996         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
2997         prefetch-dynamic-strides setting.
2998
2999         2018-05-07  Luis Machado  <luis.machado@linaro.org>
3000
3001         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
3002         <minimum_stride>: New const int field.
3003         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
3004         minimum_stride field.
3005         (exynosm1_prefetch_tune): Likewise.
3006         (thunderxt88_prefetch_tune): Likewise.
3007         (thunderx_prefetch_tune): Likewise.
3008         (thunderx2t99_prefetch_tune): Likewise.
3009         (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048.
3010         (aarch64_override_options_internal): Update to set
3011         PARAM_PREFETCH_MINIMUM_STRIDE.
3012         * doc/invoke.texi (prefetch-minimum-stride): Document new option.
3013         * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
3014         * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
3015         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
3016         stride is constant and is below the minimum stride threshold.
3017
3018 2018-05-07  Luis Machado  <luis.machado@linaro.org>
3019
3020         * config/aarch64/aarch64.c (qdf24xx_prefetch_tune) <l2_cache_size>: Set
3021         to 512.
3022
3023 2018-05-07  Luis Machado  <luis.machado@linaro.org>
3024
3025         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
3026         <prefetch_dynamic_strides>: New const bool field.
3027         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
3028         prefetch_dynamic_strides.
3029         (exynosm1_prefetch_tune): Likewise.
3030         (thunderxt88_prefetch_tune): Likewise.
3031         (thunderx_prefetch_tune): Likewise.
3032         (thunderx2t99_prefetch_tune): Likewise.
3033         (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides to false.
3034         (aarch64_override_options_internal): Update to set
3035         PARAM_PREFETCH_DYNAMIC_STRIDES.
3036         * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
3037         * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
3038         * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
3039         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
3040         prefetch-dynamic-strides setting.
3041
3042 2018-05-07  Luis Machado  <luis.machado@linaro.org>
3043
3044         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
3045         <minimum_stride>: New const int field.
3046         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
3047         minimum_stride field.
3048         (exynosm1_prefetch_tune): Likewise.
3049         (thunderxt88_prefetch_tune): Likewise.
3050         (thunderx_prefetch_tune): Likewise.
3051         (thunderx2t99_prefetch_tune): Likewise.
3052         (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048.
3053         (aarch64_override_options_internal): Update to set
3054         PARAM_PREFETCH_MINIMUM_STRIDE.
3055         * doc/invoke.texi (prefetch-minimum-stride): Document new option.
3056         * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
3057         * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
3058         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
3059         stride is constant and is below the minimum stride threshold.
3060
3061 2018-05-06  Jakub Jelinek  <jakub@redhat.com>
3062
3063         PR c++/85659
3064         * cfgexpand.c (expand_asm_stmt): Don't create a temporary if
3065         the type is addressable.  Don't force op into register if it has
3066         BLKmode.
3067
3068 2018-05-05  Roland McGrath  <mcgrathr@google.com>
3069
3070         PR other/77609
3071         * varasm.c (default_section_type_flags): Set SECTION_NOTYPE for
3072         any section for which we don't know a specific type it should have,
3073         regardless of name.  Previously this was done only for the exact
3074         names ".init_array", ".fini_array", and ".preinit_array".
3075         (default_elf_asm_named_section): Add comment about
3076         relationship with default_section_type_flags and SECTION_NOTYPE.
3077         (get_section): Don't consider it a type conflict if one side has
3078         SECTION_NOTYPE and the other doesn't, as long as neither has the
3079         SECTION_BSS et al used in the default_section_type_flags logic.
3080
3081 2018-05-05  Tom de Vries  <tom@codesourcery.com>
3082
3083         PR target/85653
3084         * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_3): Define.
3085         (workaround_barsyncs): New function.
3086         (nvptx_reorg): Use workaround_barsyncs.
3087         * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
3088         (define_expand "nvptx_membar_cta"): New define_expand.
3089         (define_insn "*nvptx_membar_cta"): New insn.
3090
3091 2018-05-04  Pekka Jääskeläinen  <pekka.jaaskelainen@parmance.com>
3092
3093         * brig-builtins.def: Add consts to ptrs etc. in BRIG builtin defs.
3094         To improve optimization opportunities.
3095         * builtin-types.def: The new needed builtin types for the above.
3096
3097 2018-05-04  Richard Biener  <rguenther@suse.de>
3098
3099         * bb-reorder.c (sanitize_hot_paths): Release hot_bbs_to_check.
3100         * gimple-ssa-store-merging.c
3101         (imm_store_chain_info::output_merged_store): Remove redundant create,
3102         release split_store vector contents on failure.
3103         * tree-vect-slp.c (vect_schedule_slp_instance): Avoid leaking
3104         scalar stmt vector on cache hit.
3105
3106 2018-05-04  Segher Boessenkool  <segher@kernel.crashing.org>
3107
3108         * common/config/rs6000/rs6000-common.c (rs6000_handle_option): Remove
3109         Xilinx FP support.
3110         * config.gcc (powerpc-xilinx-eabi*): Remove.
3111         * config/rs6000/predicates.md (easy_fp_constant): Remove Xilinx FP
3112         support.
3113         (fusion_addis_mem_combo_load): Ditto.
3114         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Remove Xilinx
3115         FP support.
3116         (rs6000_cpu_cpp_builtins): Ditto.
3117         * config/rs6000/rs6000-linux.c
3118         (rs6000_linux_float_exceptions_rounding_supported_p): Ditto.
3119         * config/rs6000/rs6000-opts.h (enum fpu_type_t): Delete.
3120         * config/rs6000/rs6000.c (rs6000_debug_reg_global): Remove Xilinx FP
3121         support.
3122         (rs6000_setup_reg_addr_masks): Ditto.
3123         (rs6000_init_hard_regno_mode_ok): Ditto.
3124         (rs6000_option_override_internal): Ditto.
3125         (legitimate_lo_sum_address_p): Ditto.
3126         (rs6000_legitimize_address): Ditto.
3127         (rs6000_legitimize_reload_address): Ditto.
3128         (rs6000_legitimate_address_p): Ditto.
3129         (abi_v4_pass_in_fpr): Ditto.
3130         (setup_incoming_varargs): Ditto.
3131         (rs6000_gimplify_va_arg): Ditto.
3132         (rs6000_split_multireg_move): Ditto.
3133         (rs6000_savres_strategy): Ditto.
3134         (rs6000_emit_prologue_components): Ditto.
3135         (rs6000_emit_epilogue_components): Ditto.
3136         (rs6000_emit_prologue): Ditto.
3137         (rs6000_emit_epilogue): Ditto.
3138         (rs6000_elf_file_end): Ditto.
3139         (rs6000_function_value): Ditto.
3140         (rs6000_libcall_value): Ditto.
3141         * config/rs6000/rs6000.h: Ditto.
3142         (TARGET_MINMAX_SF, TARGET_MINMAX_DF): Delete, merge to ...
3143         (TARGET_MINMAX): ... this.  New.
3144         (TARGET_SF_FPR, TARGET_DF_FPR, TARGET_SF_INSN, TARGET_DF_INSN): Delete.
3145         * config/rs6000/rs6000.md: Remove Xilinx FP support.
3146         (*movsi_internal1_single): Delete.
3147         * config/rs6000/rs6000.opt (msingle-float, mdouble-float, msimple-fpu,
3148         mfpu=, mxilinx-fpu): Delete.
3149         * config/rs6000/singlefp.h: Delete.
3150         * config/rs6000/sysv4.h: Remove Xilinx FP support.
3151         * config/rs6000/t-rs6000: Ditto.
3152         * config/rs6000/t-xilinx: Delete.
3153         * gcc/config/rs6000/titan.md: Adjust for fp_type removal.
3154         * gcc/config/rs6000/vsx.md: Remove Xilinx FP support.
3155         (VStype_simple): Delete.
3156         (VSfptype_simple, VSfptype_mul, VSfptype_div, VSfptype_sqrt): Delete.
3157         * config/rs6000/xfpu.h: Delete.
3158         * config/rs6000/xfpu.md: Delete.
3159         * config/rs6000/xilinx.h: Delete.
3160         * config/rs6000/xilinx.opt: Delete.
3161         * gcc/doc/invoke.texi (RS/6000 and PowerPC Options): Remove
3162         -msingle-float, -mdouble-float, -msimple-fpu, -mfpu=, and -mxilinx-fpu.
3163
3164 2018-05-04  Tom de Vries  <tom@codesourcery.com>
3165
3166         PR libgomp/85639
3167         * builtins.c (expand_builtin_goacc_parlevel_id_size): Handle null target
3168         if ignore == 0.
3169
3170 2018-05-04  Richard Biener  <rguenther@suse.de>
3171
3172         PR middle-end/85627
3173         * tree-complex.c (update_complex_assignment): We are always in SSA form.
3174         (expand_complex_div_wide): Likewise.
3175         (expand_complex_operations_1): Likewise.
3176         (expand_complex_libcall): Preserve EH info of the original stmt.
3177         (tree_lower_complex): Handle removed blocks.
3178         * tree.c (build_common_builtin_nodes): Do not set ECF_NOTRHOW
3179         on complex multiplication and division libcall builtins.
3180
3181 2018-05-04  Richard Biener  <rguenther@suse.de>
3182
3183         PR middle-end/85574
3184         * fold-const.c (negate_expr_p): Restrict negation of operand
3185         zero of a division to when we know that can happen without
3186         overflow.
3187         (fold_negate_expr_1): Likewise.
3188
3189 2018-05-04  Jakub Jelinek  <jakub@redhat.com>
3190
3191         PR libstdc++/85466
3192         * real.h (real_nextafter): Declare.
3193         * real.c (real_nextafter): New function.
3194         * fold-const-call.c (fold_const_nextafter): New function.
3195         (fold_const_call_sss): Call it for CASE_CFN_NEXTAFTER and
3196         CASE_CFN_NEXTTOWARD.
3197         (fold_const_call_1): For CASE_CFN_NEXTTOWARD call fold_const_call_sss
3198         even when arg1_mode is different from arg0_mode.
3199
3200 2018-05-03  Nathan Sidwell  <nathan@acm.org>
3201
3202         * doc/extend.texi (Deprecated Features): Remove
3203         -ffriend-injection.
3204         (Backwards Compatibility): Likewise.
3205         * doc/invoke.texi (C++ Language Options): Likewise.
3206         (C++ Dialect Options): Likewise.
3207
3208 2018-05-03  Jakub Jelinek  <jakub@redhat.com>
3209
3210         PR target/85530
3211         * config/i386/avx512fintrin.h (_mm512_mullox_epi64,
3212         _mm512_mask_mullox_epi64): New intrinsics.
3213
3214 2018-05-03  Tom de Vries  <tom@codesourcery.com>
3215
3216         PR testsuite/85106
3217         * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
3218         dump files): Add offload-tree.
3219
3220 2018-05-03  Richard Biener  <rguenther@suse.de>
3221
3222         PR tree-optimization/85615
3223         * tree-ssa-threadupdate.c (thread_block_1): Only allow exits
3224         to loops not nested in BBs loop father to avoid creating multi-entry
3225         loops.
3226
3227 2018-05-03  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3228
3229         PR tree-optimization/70291
3230         * tree-complex.c (expand_complex_libcall): Add type, inplace_p
3231         arguments.  Change return type to tree.  Emit libcall as a new
3232         statement rather than replacing existing one when inplace_p is true.
3233         (expand_complex_multiplication_components): New function.
3234         (expand_complex_multiplication): Expand floating-point complex
3235         multiplication using the above.
3236         (expand_complex_division): Rename inner_type parameter to type.
3237         Update expand_complex_libcall call-site.
3238         (expand_complex_operations_1): Update expand_complex_multiplication
3239         and expand_complex_division call-sites.
3240
3241 2018-05-02  Jakub Jelinek  <jakub@redhat.com>
3242
3243         PR target/85582
3244         * config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
3245         *ashl<dwi>3_doubleword_mask_1, *<shift_insn><dwi>3_doubleword_mask,
3246         *<shift_insn><dwi>3_doubleword_mask_1): In condition require that
3247         the highest significant bit of the shift count mask is clear.  In
3248         check whether and[sq]i3 is needed verify that all significant bits
3249         of the shift count other than the highest are set.
3250
3251 2018-05-02  Tom de Vries  <tom@codesourcery.com>
3252
3253         PR libgomp/82428
3254         * builtins.def (DEF_GOACC_BUILTIN_ONLY): Define.
3255         * omp-builtins.def (BUILT_IN_GOACC_PARLEVEL_ID)
3256         (BUILT_IN_GOACC_PARLEVEL_SIZE): New builtin.
3257         * builtins.c (expand_builtin_goacc_parlevel_id_size): New function.
3258         (expand_builtin): Call expand_builtin_goacc_parlevel_id_size.
3259         * doc/extend.texi (Other Builtins): Add __builtin_goacc_parlevel_id and
3260         __builtin_goacc_parlevel_size.
3261
3262 2018-05-02  Richard Biener  <rguenther@suse.de>
3263
3264         PR tree-optimization/85597
3265         * tree-vect-stmts.c (vectorizable_operation): For ternary SLP
3266         do not use split vect_get_vec_defs call but call vect_get_slp_defs
3267         directly.
3268
3269 2018-05-02  Tom de Vries  <tom@codesourcery.com>
3270
3271         PR testsuite/85106
3272         * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
3273         dump files): Add ltrans-tree.
3274
3275 2018-05-02  Tom de Vries  <tom@codesourcery.com>
3276
3277         PR testsuite/85106
3278         * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
3279         dump files): Add wpa-ipa.
3280
3281 2018-05-02  Segher Boessenkool  <segher@kernel.crashing.org>
3282
3283         * config.gcc (powerpc*-*-*): Remove paired.h.  Unsupport the
3284         powerpc*-*-linux*paired* target.
3285         * config/rs6000/750cl.h: Delete.
3286         * config/rs6000/paired.h: Delete.
3287         * config/rs6000/paired.md: Delete.
3288         * config/rs6000/predicates.md (easy_vector_constant): Remove paired
3289         float support.
3290         * config/rs6000/rs6000-builtin.def: Remove paired float support.
3291         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Update
3292         comment.  Remove paired float support.
3293         * config/rs6000/rs6000-modes.def: Remove V2SF and V2SI.
3294         * config/rs6000/rs6000-opts.h (enum rs6000_vector): Delete
3295         VECTOR_PAIRED.
3296         * config/rs6000/rs6000-protos.h (paired_expand_vector_init,
3297         paired_emit_vector_cond_expr, paired_expand_vector_move): Delete
3298         declarations.
3299         * config/rs6000/rs6000.c: Remove paired float support.
3300         (paired_expand_vector_init, paired_expand_vector_move,
3301         paired_emit_vector_compare, paired_emit_vector_cond_expr,
3302         (paired_expand_lv_builtin, paired_expand_stv_builtin,
3303         paired_expand_builtin, paired_expand_predicate_builtin,
3304         paired_init_builtins): Delete.
3305         * config/rs6000/rs6000.h: Remove paired float support.
3306         * config/rs6000/rs6000.md: Remove paired float support.
3307         (move_from_CR_ov_bit): Delete.
3308         * config/rs6000/rs6000.opt (mpaired): Delete.
3309         * config/rs6000/t-rs6000: Remove paired.md from MD_INCLUDES.
3310         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mpaired.
3311
3312 2018-05-02  Richard Biener  <rguenther@suse.de>
3313
3314         PR middle-end/85567
3315         * gimplify.c (gimplify_save_expr): When in SSA form allow
3316         SAVE_EXPRs to compute to SSA vars.
3317
3318 2018-05-02  Jakub Jelinek  <jakub@redhat.com>
3319
3320         PR target/85582
3321         * config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
3322         *ashl<dwi>3_doubleword_mask_1, *<shift_insn><dwi>3_doubleword_mask,
3323         *<shift_insn><dwi>3_doubleword_mask_1): If and[sq]i3 is needed, don't
3324         clobber operands[2], instead use a new pseudo.  Formatting fixes.
3325
3326 2018-05-02  Richard Sandiford  <richard.sandiford@linaro.org>
3327
3328         PR tree-optimization/85586
3329         * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Only
3330         exit early for statements in the same group if the accesses are
3331         not strided.
3332
3333 2018-05-02  Tom de Vries  <tom@codesourcery.com>
3334
3335         PR lto/85451
3336         * lto-wrapper.c (compile_offload_image): Add "could not find mkoffload"
3337         error message.
3338
3339 2018-05-01  Marc Glisse  <marc.glisse@inria.fr>
3340
3341         PR tree-optimization/85143
3342         * match.pd (A<B&A<C): Extend to BIT_IOR_EXPR.
3343
3344 2018-05-01  Tom de Vries  <tom@codesourcery.com>
3345
3346         PR lto/85451
3347         * config/nvptx/mkoffload.c (main): Suggest using -B in "offload compiler
3348         not found" error message.
3349
3350 2018-05-01  Tom de Vries  <tom@codesourcery.com>
3351
3352         PR other/83786
3353         * vec.h (VEC_ORDERED_REMOVE_IF, VEC_ORDERED_REMOVE_IF_FROM_TO): Define.
3354         * vec.c (test_ordered_remove_if): New function.
3355         (vec_c_tests): Call test_ordered_remove_if.
3356         * dwarf2cfi.c (connect_traces): Use VEC_ORDERED_REMOVE_IF_FROM_TO.
3357         * lto-streamer-out.c (prune_offload_funcs): Use VEC_ORDERED_REMOVE_IF.
3358         * tree-vect-patterns.c (vect_pattern_recog_1): Use
3359         VEC_ORDERED_REMOVE_IF.
3360
3361 2018-05-01  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
3362
3363         PR tree-optimization/82665
3364         * vr-values.c (vr_values::extract_range_from_binary_expr): Handle
3365         pointer subtraction where arguments come from a memchr call.
3366
3367 2018-05-01  Jakub Jelinek  <jakub@redhat.com>
3368
3369         * configure.ac (LD_AS_NEEDED_OPTION, LD_NO_AS_NEEDED_OPTION): Use
3370         --push-state --as-needed and --pop-state instead of --as-needed and
3371         --no-as-needed if ld supports it.
3372         * configure: Regenerated.
3373
3374         PR web/85578
3375         * doc/install.texi2html: Replace _002d with - and _002a with * in
3376         generated html files using sed.
3377
3378 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
3379
3380         PR c++/85523
3381         * gcc-rich-location.c (blank_line_before_p): New function.
3382         (use_new_line): New function.
3383         (gcc_rich_location::add_fixit_insert_formatted): New function.
3384         * gcc-rich-location.h
3385         (gcc_rich_location::add_fixit_insert_formatted): New function.
3386
3387 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
3388
3389         * selftest.c (assert_streq): Rename "expected" and "actual" to
3390         "val1" and "val2".  Extend NULL-handling to cover both inputs
3391         symmetrically, while still requiring both to be non-NULL for a pass.
3392         * selftest.h (assert_streq): Rename "expected" and "actual" to
3393         "val1" and "val2".
3394         (ASSERT_EQ): Likewise.
3395         (ASSERT_EQ_AT): Likewise.
3396         (ASSERT_KNOWN_EQ): Likewise.
3397         (ASSERT_KNOWN_EQ_AT): Likewise.
3398         (ASSERT_NE): Likewise.
3399         (ASSERT_MAYBE_NE): Likewise.
3400         (ASSERT_MAYBE_NE_AT): Likewise.
3401         (ASSERT_STREQ): Likewise.  Clarify that both must be non-NULL for
3402         the assertion to pass.
3403         (ASSERT_STREQ_AT): Likewise.
3404
3405 2018-04-30  Jonathan Wakely  <jwakely@redhat.com>
3406
3407         * doc/invoke.texi (-fpie, -fPIE): Fix grammar and clarify
3408         interaction with -pie.
3409
3410 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
3411
3412         * selftest.h: Fix alphabetization of per-source-file selftest
3413         declarations.
3414
3415 2018-04-30  Jason Merrill  <jason@redhat.com>
3416
3417         PR c++/61982 - dead stores to destroyed objects.
3418         * gimplify.c (gimplify_modify_expr): Simplify complex lvalue on LHS
3419         of clobber.
3420
3421 2018-04-30  Jason Merrill  <jason@redhat.com>
3422
3423         * tree.c (build_clobber): New.
3424         * tree.h: Declare it.
3425         * gimplify.c (gimplify_bind_expr, gimplify_target_expr): Use it.
3426
3427 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
3428
3429         * diagnostic-show-locus.c (layout::layout): Update for
3430         location_get_source_line returning a char_span.
3431         (struct char_span): Move to input.h.
3432         (struct correction): Update for fields in char_span becoming
3433         private.
3434         (struct source_line): Update for location_get_source_line
3435         returning a char_span.
3436         (layout::print_line): Likewise.
3437         * edit-context.c (edited_file::print_content): Likewise.
3438         (edited_file::print_diff_hunk): Likewise.
3439         (edited_file::print_run_of_changed_lines): Likewise.
3440         (edited_file::get_num_lines): Likewise.
3441         (edited_line::edited_line): Likewise.
3442         * final.c (asm_show_source): Likewise.
3443         * input.c (location_get_source_line): Convert return type
3444         from const char * to char_span, losing the final "line_len"
3445         param.
3446         (dump_location_info): Update for the above.
3447         (get_substring_ranges_for_loc): Likewise.  Use a char_span
3448         when handling the literal within the line.
3449         (test_reading_source_line): Update for location_get_source_line
3450         returning a char_span.
3451         * input.h (class char_span): Move here from
3452         diagnostic-show-locus.c, converting from a struct to a class.
3453         Make data members private.
3454         (char_span::operator bool): New.
3455         (char_span::length): New.
3456         (char_span::get_buffer): New.
3457         (char_span::operator[]): New.
3458         (char_span::subspan): Make const.
3459         (char_span::xstrdup): New.
3460         (location_get_source_line): Convert return type from const char *
3461         to char_span, losing the final "line_size" param.
3462
3463 2018-04-30  Jan Hubicka  <jh@suse.cz>
3464
3465         * lto-wrapper.c (ltrans_priorities): New static var.
3466         (cmp_priority): New.
3467         (run_gcc): Read priorities and if doing parallel build order
3468         the Makefile by them.
3469
3470 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
3471
3472         * input.h (builtins_location_check): Convert to a STATIC_ASSERT.
3473
3474 2018-04-30  Richard Biener  <rguenther@suse.de>
3475
3476         * tree-cfg.c (verify_address): Remove base argument, add
3477         flag whether to check TREE_ADDRESSABLE and do that.
3478         (verify_expr): Remove.
3479         (verify_types_in_gimple_reference): Add pieces from verify_expr.
3480         (verify_gimple_assign_single): Likewise.
3481         (verify_gimple_switch): Likewise.
3482         (verify_expr_location_1): Dereference tp once.  Add (disabled)
3483         piece from verify_expr.
3484         (verify_gimple_in_cfg): Do not call verify_expr on all ops.
3485
3486 2018-04-30  Claudiu Zissulescu  <claziss@synopsys.com>
3487
3488         * config/arc/linux.h (CLEAR_INSN_CACHE): Define.
3489
3490 2018-04-30  Claudiu Zissulescu  <claziss@synopsys.com>
3491
3492         * config/arc/arc-protos.h (prepare_extend_operands): Remove.
3493         (small_data_pattern): Likewise.
3494         (arc_rewrite_small_data): Likewise.
3495         * config/arc/arc.c (LEGITIMATE_SMALL_DATA_OFFSET_P): Remove.
3496         (LEGITIMATE_SMALL_DATA_ADDRESS_P): Likewise.
3497         (get_symbol_alignment): New function.
3498         (legitimate_small_data_address_p): Likewise.
3499         (legitimate_scaled_address): Update, call
3500         legitimate_small_data_address_p.
3501         (output_sdata): New static variable.
3502         (arc_print_operand): Update how we handle small data operands.
3503         (arc_print_operand_address): Likewise.
3504         (arc_legitimate_address_p): Update, use
3505         legitimate_small_data_address_p.
3506         (arc_rewrite_small_data_p): Remove.
3507         (arc_rewrite_small_data_1): Likewise.
3508         (arc_rewrite_small_data): Likewise.
3509         (small_data_pattern): Likewise.
3510         (compact_sda_memory_operand): Update to use
3511         legitimate_small_data_address_p and get_symbol_alignment.
3512         (prepare_move_operands): Don't rewite sdata pattern.
3513         (prepare_extend_operands): Remove.
3514         * config/arc/arc.md (zero_extendqihi2): Don't rewrite sdata
3515         pattern.
3516         (zero_extendqisi2): Likewise.
3517         (zero_extendhisi2): Likewise.
3518         (extendqihi2): Likewise.
3519         (extendqisi2): Likewise.
3520         (extendhisi2): Likewise.
3521         (addsi3): Likewise.
3522         (subsi3): Likewise.
3523         (andsi3): Likewise.
3524         * config/arc/constraints.md (Usd): Change it to memory constraint.
3525
3526 2018-04-30  Claudiu Zissulescu  <claziss@synopsys.com>
3527
3528         * config/arc/arc.c (arc_split_move): Allow signed 6-bit constants
3529         as source of std instructions.
3530         * config/arc/arc.md (movsi_insn): Update pattern predicate to
3531         allow 6-bit constants as source for store instructions.
3532         (movdi_insn): Update instruction pattern to allow 6-bit constants
3533         as source for store instructions.
3534
3535 2018-04-30  Jonathan Wakely  <jwakely@redhat.com>
3536
3537         * doc/invoke.texi (-fdebug-types-section): Fix grammar.
3538
3539 2018-04-30  Nathan Sidwell  <nathan@acm.org>
3540             Sandra Loosemore <sandra@codesourcery.com>
3541
3542         * dumpfile.c (dump_open): Allow '-' for stdout.
3543         * doc/invoke.texi (Developer Options): Document dump filename
3544         determination early.  Document stdin/stdout selection.
3545
3546 2018-04-30 Andrew Sadek  <andrew.sadek.se@gmail.com>
3547
3548         Microblaze Target: PIC data text relative
3549
3550         * config/microblaze/microblaze.opt: add new option -mpic-data-text-rel.
3551         * config/microblaze/microblaze-protos.h (microblaze_constant_address_p):
3552         Add declaration.
3553         * gcc/config/microblaze/microblaze.h (microblaze_constant_address_p):
3554         CONSTANT_ADDRESS_P definition to microblaze_constant_address_p.
3555         * config/microblaze/microblaze.c (TARGET_PIC_DATA_TEXT_REL):
3556         New addressing mode for data-text relative position indepenedent code.
3557         (microblaze_classify_unspec): add 'UNSPEC_TEXT' case ->
3558         'ADDRESS_SYMBOLIC_TXT_REL'.
3559         (microblaze_classify_address): Add handling for UNSPEC + CONST_INT.
3560         (microblaze_legitimate_pic_operand): Exclude function calls from
3561         pic operands in case of TARGET_PIC_DATA_TEXT_REL option.
3562         (microblaze_legitimize_address): Generate 'UNSPEC_TEXT' for all possible
3563         addresses cases.
3564         (microblaze_address_insns): Add 'ADDRESS_SYMBOLIC_TXT_REL' case.
3565         (print_operand): Add 'ADDRESS_SYMBOLIC_TXT_REL' case.
3566         (print_operand_address): Add 'ADDRESS_SYMBOLIC_TXT_REL' case + handling
3567         for 'address + offset'.
3568         (microblaze_expand_prologue): Add new function prologue call for
3569         'r20' assignation.
3570         (microblaze_asm_generate_pic_addr_dif_vec): Override new target hook
3571         'TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC' to disable address diff vector
3572         table in case of TARGET_PIC_DATA_TEXT_REL.
3573         (expand_pic_symbol_ref): Add handling for 'UNSPEC_TEXT'.
3574         * gcc/config/microblaze/microblaze.md (TARGET_PIC_DATA_TEXT_REL):
3575         Add new macros 'UNSPEC_TEXT',
3576         'UNSPEC_SET_TEXT' + add rule for setting r20 in function prologue
3577         + exclude function calls from 'UNSPEC_PLT' in case of data text
3578         relative mode.
3579         * doc/tm.texi.in (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add
3580         new target hook for generating address diff vector tables in case of
3581         flag_pic.
3582         * doc/tm.texi : Regenerate.
3583         * stmt.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Append new condition
3584         'targetm.asm_out.generate_pic_addr_diff_vec' to flag_pic in case
3585         of addr diff vector generation.
3586         * target.def (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add
3587         target hook definition.
3588         * targhooks.h, gcc/targhooks.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC):
3589         Add default function for generate_pic_addr_diff_vec -> flag_pic.
3590         * doc/invoke.texi (Add new pic option): Add new microblaze pic
3591         option for data text relative.
3592
3593 2018-04-30  Richard Biener  <rguenther@suse.de>
3594
3595         * tree-chrec.h (evolution_function_is_constant_p): Remove
3596         redundant check.
3597         * tree-cfg.c (tree_node_can_be_shared): Re-order checks.
3598
3599 2018-04-30  Richard Biener  <rguenther@suse.de>
3600
3601         PR bootstrap/85571
3602         * dwarf2out.c (gen_producer_string): Ignore -fchecking[=].
3603
3604 2018-04-30  Richard Biener  <rguenther@suse.de>
3605
3606         PR tree-optimization/28364
3607         PR tree-optimization/85275
3608         * tree-ssa-loop-ch.c (ch_base::copy_headers): Stop after
3609         copying first exit test.
3610
3611 2018-04-28  Mark Wielaard  <mark@klomp.org>
3612
3613         * dwarf2out.c (dwarf2out_finish): Add .debug_addr table header for
3614         dwarf_version >= 5.
3615         (dwarf_AT): Handle DW_AT_addr_base.
3616         (add_top_level_skeleton_die_attrs): Use dwarf_AT for DW_AT_addr_base.
3617
3618 2018-04-28  Uros Bizjak  <ubizjak@gmail.com>
3619
3620         PR target/84431
3621         * config/i386/i386.md (*ashl<dwi>3_doubleword_mask): New pattern.
3622         (*ashl<dwi>3_doubleword_mask_1): Ditto.
3623         (*<shift_insn><dwi>3_doubleword_mask): Ditto.
3624         (*<shift_insn><dwi>3_doubleword_mask_1): Ditto.
3625
3626 2018-04-28  Richard Biener  <rguenther@suse.de>
3627
3628         * tree-cfg.c (verify_gimple_phi): Take a gphi * argument.
3629         (verify_gimple_in_cfg): Rename visited_stmts to visited_throwing_stmts
3630         to reflect use.  Only add interesting stmts.
3631
3632 2018-04-27  Martin Jambor  <mjambor@suse.cz>
3633
3634         PR ipa/85549
3635         * ipa-cp.c (find_aggregate_values_for_callers_subset): Make sure
3636         the jump function allows for passing through aggregate values.
3637
3638 2018-04-27  David Malcolm  <dmalcolm@redhat.com>
3639
3640         * input.h (in_system_header_at): Convert from macro to inline
3641         function.
3642         (from_macro_expansion_at): Likewise.
3643         (from_macro_definition_at): Likewise.
3644
3645 2018-04-27  Jeff Law  <law@redhat.com>
3646
3647         * config.gcc: Mark tile* targets as deprecated/obsolete.
3648
3649 2018-04-27  Richard Biener  <rguenther@suse.de>
3650
3651         * config/aarch64/aarch64.c: Simplify ap.__stack advance and
3652         fix for ILP32.
3653
3654 2018-04-27  Richard Biener  <rguenther@suse.de>
3655
3656         * tree-cfg.c (verify_expr): Make dead code hit gcc_unreachable.
3657
3658 2018-04-27  Uros Bizjak  <ubizjak@gmail.com>
3659
3660         * config/i386/i386.md (*movti_internal): Substitute Ye constraint
3661         with Yd constraint. Set "preferred_for_speed" attribute from
3662         TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for alternatives
3663         with Yd constraint.
3664         (*movdi_internal): Ditto.
3665         (movti_interunit splitters): Remove
3666         TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC from insn condition.
3667         (movdi_interunit splitters): Ditto.
3668         * config/i386/constraints.md (Ye): Remove.
3669         (Yd): Do not depend on TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC.
3670
3671 2018-04-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3672
3673         PR target/85512
3674         * config/aarch64/constraints.md (Usg): Limit to 31.
3675         (Usj): Limit to 63.
3676
3677 2018-04-27  Jakub Jelinek  <jakub@redhat.com>
3678
3679         PR tree-optimization/85529
3680         * tree-ssa-reassoc.c (optimize_range_tests_var_bound): Add FIRST_BB
3681         argument.  Don't call get_nonzero_bits if opcode is ERROR_MARK_NODE,
3682         rhs2 def stmt's bb is dominated by first_bb and it isn't an obvious
3683         zero extension or masking of the MSB bit.
3684         (optimize_range_tests): Add FIRST_BB argument, pass it through
3685         to optimize_range_tests_var_bound.
3686         (maybe_optimize_range_tests, reassociate_bb): Adjust
3687         optimize_range_tests callers.
3688
3689 2018-04-26  Richard Biener  <rguenther@suse.de>
3690             Jakub Jelinek  <jakub@redhat.com>
3691
3692         * cgraph.h (symbol_table): Just declare debug method here.
3693         * symtab.c (symbol_table::debug): Define.
3694
3695 2018-04-26  Eric Botcazou  <ebotcazou@adacore.com>
3696
3697         * loop-invariant.c (may_assign_reg_p): Return false for frame pointer.
3698
3699 2018-04-26  Uros Bizjak  <ubizjak@gmail.com>
3700
3701         * config/i386/i386.md ("isa" attribute): Add x64_sse2.
3702         ("enabled" attribute): Handle x64_sse2 "isa" attribute.
3703         (*movdi_internal): Substitute Yi and Yj constraint with x
3704         and Ym and Yn constraint with y constraint.  Update "isa"
3705         attribute and set "preferred_for_speed" attribute from
3706         TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for updated alternatives.
3707         (*movsi_internal): Ditto.
3708         (*movdf_internal): Ditto.
3709         (*movsf_internal): Ditto.
3710         (*zero_extendsidi2): Ditto.
3711         * config/i386/sse.md (vec_set<mode>_0): Ditto.
3712         (sse2_loadld): Ditto.
3713         (*vec_extract<ssevecmodelower>_0): Ditto.
3714         (*vec_extractv4si_0_zext_sse4): Ditto.
3715         (vec_concatv2di): Ditto.
3716         (*vec_dup<mode>): Ditto.
3717         * config/i386/mmx.md (*mov<mode>_internal): Ditto.
3718         * config/i386/constraints.md (Yi): Remove.
3719         (Yj): Remove.
3720         (Ym): Remove.
3721         (Yn): Remove.
3722
3723 2018-04-26  Nathan Sidwell  <nathan@acm.org>
3724
3725         * dumpfile.c (dump_open): New.
3726         (dump_open_alternate_stream, dump_start, dump_begin): Call it.
3727         (dump_finish): Detect stdio/stderr by value not name.
3728
3729 2018-04-26  Jonathan Wakely  <jwakely@redhat.com>
3730
3731         * doc/invoke.texi (-Wreturn-type): Document default status for C++.
3732
3733 2018-04-26  Tom de Vries  <tom@codesourcery.com>
3734
3735         PR target/84952
3736         * config/nvptx/nvptx.c (verify_neutering_jumps)
3737         (verify_neutering_labels): New function
3738         (nvptx_single): Use verify_neutering_jumps and verify_neutering_labels.
3739
3740 2018-04-26  Tom de Vries  <tom@codesourcery.com>
3741
3742         PR target/84025
3743         * config/nvptx/nvptx.c (needs_neutering_p): New function.
3744         (nvptx_single): Use needs_neutering_p to skip over insns that do not
3745         need neutering.
3746
3747 2018-04-26  Richard Biener <rguenther@suse.de>
3748             Tom de Vries  <tom@codesourcery.com>
3749
3750         PR lto/85422
3751         * lto-streamer-out.c (output_function): Fixup loops if required to match
3752         discovery done in the reader.
3753
3754 2018-04-26  Richard Biener  <rguenther@suse.de>
3755
3756         PR tree-optimization/85116
3757         * tree-ssa-loop-ch.c (do_while_loop_p): A do-while loop should
3758         have a loop exit from the single latch predecessor.  Remove
3759         case of header with just condition.
3760         (ch_base::copy_headers): Exclude infinite loops from any
3761         processing.
3762         (pass_ch::execute): Record exits.
3763
3764 2018-04-26  Richard Biener  <rguenther@suse.de>
3765
3766         * tree-vect-data-refs.c (vect_get_data_access_cost): Get
3767         prologue cost vector and pass it to vect_get_load_cost.
3768         (vect_get_peeling_costs_all_drs): Likewise.
3769         (vect_peeling_hash_get_lowest_cost): Likewise.
3770         (vect_enhance_data_refs_alignment): Likewise.
3771
3772 2018-04-26  Richard Biener  <rguenther@suse.de>
3773
3774         PR middle-end/85450
3775         * tree-cfg.c (verify_gimple_assign_unary): Restore proper
3776         checking of integer<->pointer conversions.
3777         * omp-expand.c (expand_omp_for_static_nochunk): Avoid
3778         sign-/zero-extending pointer types.
3779         (expand_omp_for_static_chunk): Likewise.
3780
3781 2018-03-22  Hans-Peter Nilsson  <hp@axis.com>
3782             Jean Lee  <xiaoyur347@gmail.com>
3783
3784         * config/mips/mips.c (mips_asan_shadow_offset): New function.
3785         (TARGET_ASAN_SHADOW_OFFSET): Define.
3786         * config/mips/mips.h (FRAME_GROWS_DOWNWARD): Augment to also be
3787         true for -fsanitize=address.
3788
3789 2018-04-25  Mark Wielaard  <mark@klomp.org>
3790
3791         * dwarf2out.c (file_info_cmp): Sort longer dir prefixes before
3792         shorter ones.
3793
3794 2018-04-25  Jakub Jelinek  <jakub@redhat.com>
3795
3796         * config/i386/i386.md (*x86_mov<mode>cc_0_m1): Use type "alu1" rather
3797         than "alu", remove explicit "memory" and "imm_disp" attributes.
3798         (*x86_mov<mode>cc_0_m1_se, *x86_mov<mode>cc_0_m1_neg): Likewise.
3799
3800         PR middle-end/85414
3801         * simplify-rtx.c (simplify_unary_operation_1) <case SIGN_EXTEND,
3802         case ZERO_EXTEND>: Pass SUBREG_REG (op) rather than op to
3803         gen_lowpart_no_emit.
3804
3805 2018-04-25  Sebastian Peryt  <sebastian.peryt@intel.com>
3806
3807         PR target/85473
3808         * config/i386/i386.c (ix86_expand_builtin): Change memory
3809         operand to XI, extend p0 to Pmode.
3810         * config/i386/i386.md: Change unspec volatile and operand
3811         1 mode to XI, change operand 0 mode to P.
3812
3813 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
3814
3815         * config/nds32/nds32-predicates.c (nds32_can_use_bclr_p): Mask with
3816         GET_MODE_MASK before any checking.
3817         (nds32_can_use_bset_p): Likewise.
3818         (nds32_can_use_btgl_p): Likewise.
3819
3820 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
3821
3822         * config/nds32/nds32-doubleword.md: New define_split pattern for
3823         illegal register number.
3824
3825 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
3826
3827         * config/nds32/nds32.c (nds32_print_operand): Set op_value ealier.
3828
3829 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
3830
3831         * config/nds32/nds32.h (ASM_APP_ON): Add missing newline character.
3832
3833 2018-04-25  Richard Biener  <rguenther@suse.de>
3834
3835         * lto-streamer.h (LTO_major_version): Bump to 8.
3836
3837 2018-04-25  Jakub Jelinek  <jakub@redhat.com>
3838
3839         * BASE-VER: Set to 9.0.0.
3840
3841 2018-04-24  Segher Boessenkool  <segher@kernel.crashing.org>
3842
3843         * config/rs6000/rs6000.c (init_float128_ieee): Fix spelling mistakes
3844         in __abskf2 and __powikf2.
3845
3846 2018-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3847
3848         PR target/85512
3849         * config/aarch64/constraints.md (Usg, Usj): New constraints.
3850         * config/aarch64/iterators.md (cmode_simd): New mode attribute.
3851         * config/aarch64/aarch64.md (*aarch64_ashr_sisd_or_int_<mode>3):
3852         Use the above on operand 2.  Reindent.
3853         (*aarch64_lshr_sisd_or_int_<mode>3): Likewise.
3854
3855 2018-04-24  H.J. Lu  <hongjiu.lu@intel.com>
3856
3857         PR target/85485
3858         * common/config/i386/i386-common.c (ix86_handle_option): Don't
3859         handle OPT_mcet.
3860         * config/i386/i386.opt (mcet): Removed.
3861         * doc/install.texi: Remove -mcet documentation.
3862         * doc/invoke.texi: Likewise.
3863
3864 2018-04-24  H.J. Lu  <hongjiu.lu@intel.com>
3865
3866         PR target/85485
3867         * doc/install.texi: Remove -mcet from bootstrap-cet.
3868
3869 2018-04-24  Jakub Jelinek  <jakub@redhat.com>
3870
3871         PR target/85511
3872         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Don't define
3873         __builtin_ia32_readeflags_u32 and __builtin_ia32_writeeflags_u32
3874         if TARGET_64BIT.
3875
3876         PR target/85503
3877         * config/rs6000/rs6000-p8swap.c (const_load_sequence_p): Punt if
3878         const_vector is not CONST_VECTOR or SYMBOL_REF for a constant pool
3879         containing a CONST_VECTOR.
3880
3881 2018-04-24  Cesar Philippidis  <cesar@codesourcery.com>
3882
3883         * doc/install.texi: Update newlib dependency for nvptx.
3884
3885 2018-04-24  Jakub Jelinek  <jakub@redhat.com>
3886
3887         PR target/85508
3888         * config/i386/i386.c (ix86_expand_vector_init_one_var): Use UINTVAL
3889         instead of INTVAL when shifting x left.
3890
3891 2018-04-24  Andreas Krebbel  <krebbel@linux.ibm.com>
3892
3893         PR tree-optimization/85478
3894         * tree-vect-loop.c (vect_analyze_loop_2): Do not call
3895         vect_grouped_store_supported for single element vectors.
3896
3897 2018-04-24  Richard Biener  <rguenther@suse.de>
3898
3899         PR target/85491
3900         * config/i386/i386.c (ix86_add_stmt_cost): Restrict strided
3901         load cost increase to the case of non-constant step.
3902
3903 2018-04-24  Jakub Jelinek  <jakub@redhat.com>
3904
3905         PR target/84828
3906         * reg-stack.c (move_for_stack_reg): Don't fail assertion about dead
3907         destination if any_malformed_asm.
3908
3909 2018-04-23  Eric Botcazou  <ebotcazou@adacore.com>
3910
3911         PR middle-end/85496
3912         * expr.c (store_field): In the bitfield case, if the value comes from
3913         a function call and is returned in registers by means of a PARALLEL,
3914         do not change the mode of the temporary unless BLKmode and VOIDmode.
3915
3916 2018-04-23  Andrey Belevantsev  <abel@ispras.ru>
3917
3918         PR rtl-optimization/85423
3919         * sel-sched-ir.c (has_dependence_note_mem_dep): Only discard
3920         dependencies to debug insns when the previous insn is non-debug.
3921
3922 2018-04-23  Claudiu Zissulescu  <claziss@synopsys.com>
3923
3924         * config/arc/arc.md ("vunspec"): Delete it, unify all the unspec
3925         enums into a single definition.
3926         (fls): Fix predicates and printing.
3927         (seti): Likewise.
3928
3929 2018-04-23  Claudiu Zissulescu  <claziss@synopsys.com>
3930
3931         * config/arc/arc-protos.h (check_if_valid_sleep_operand): Remove.
3932         * config/arc/arc.c (arc_expand_builtin): Sleep accepts registers
3933         and short u6 immediate.
3934         (check_if_valid_sleep_operand): Remove.
3935         * config/arc/arc.md (Sleep): Accepts registers and u6 immediates.
3936
3937 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
3938
3939         * config/nds32/nds32.c (nds32_compute_stack_frame): Consider
3940         flag_always_save_lp condition.
3941         * config/nds32/nds32.opt (malways-save-lp): New option.
3942
3943 2018-04-22  Shiva Chen  <shiva0217@gmail.com>
3944
3945         * config/nds32/nds32-protos.h (nds32_use_load_post_increment): Declare.
3946         * config/nds32/nds32.c (nds32_use_load_post_increment): New.
3947         * config/nds32/nds32.h
3948         (USE_LOAD_POST_INCREMENT, USE_LOAD_POST_DECREMENT): Define.
3949         (USE_STORE_POST_INCREMENT, USE_STORE_POST_DECREMENT): Define.
3950
3951 2018-04-22  Shiva Chen  <shiva0217@gmail.com>
3952
3953         * config/nds32/nds32-protos.h (nds32_ls_333_p): Remove.
3954         * config/nds32/nds32.c (nds32_ls_333_p): Remove.
3955
3956 2018-04-22  Shiva Chen  <shiva0217@gmail.com>
3957             Chung-Ju Wu  <jasonwucj@gmail.com>
3958
3959         * config/nds32/nds32-protos.h (nds32_case_vector_shorten_mode):
3960         Declare.
3961         * config/nds32/nds32.c (nds32_case_vector_shorten_mode): New function.
3962         * config/nds32/nds32.h (CASE_VECTOR_SHORTEN_MODE): Modify.
3963
3964 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
3965
3966         * config/nds32/nds32.c (nds32_compute_stack_frame): Fix wrong value.
3967
3968 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
3969
3970         * config/nds32/nds32-protos.h (nds32_data_alignment,
3971         nds32_local_alignment): Declare.
3972         * config/nds32/nds32.c (nds32_data_alignment, nds32_constant_alignment,
3973         nds32_local_alignment): New functions.
3974         (TARGET_CONSTANT_ALIGNMENT): Define.
3975         * config/nds32/nds32.h (DATA_ALIGNMENT, LOCAL_ALIGNMENT): Define.
3976
3977 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
3978
3979         * config/nds32/nds32.c
3980         (TARGET_HARD_REGNO_MODE_OK): Move to the bottom of file.
3981         (TARGET_MODES_TIEABLE_P): Likewise.
3982
3983 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
3984
3985         * config/nds32/nds32.c (nds32_asm_file_start): Display optimization
3986         level Ofast and Og.
3987
3988 2018-04-22  Monk Chiang  <sh.chiang04@gmail.com>
3989             Chung-Ju Wu  <jasonwucj@gmail.com>
3990
3991         * config/nds32/constants.md (unspec_volatile_element): Add enum values
3992         for unaligned access.
3993         * config/nds32/nds32-intrinsic.c: Implementation of expanding
3994         unaligned access.
3995         * config/nds32/nds32-intrinsic.md: Likewise.
3996         * config/nds32/nds32_intrinsic.h: Likewise.
3997         * config/nds32/nds32.h (nds32_builtins): Likewise.
3998         * config/nds32/nds32.opt (munaligned-access): New option.
3999         * config/nds32/nds32.c (nds32_asm_file_start): Display
4000         flag_unaligned_access status.
4001
4002 2018-04-20  Kito Cheng  <kito.cheng@gmail.com>
4003
4004         * config/riscv/elf.h (LINK_SPEC): Pass --no-relax if
4005         -mno-relax is present.
4006         * config/riscv/linux.h (LINK_SPEC): Ditto.
4007
4008 2018-04-20  Martin Sebor  <msebor@redhat.com>
4009
4010         PR c/85365
4011         * gimple-fold.c (gimple_fold_builtin_strcpy): Suppress -Wrestrict
4012         for null pointers.
4013         (gimple_fold_builtin_stxcpy_chk): Same.
4014         * gimple-ssa-warn-restrict.c (check_bounds_or_overlap): Same.
4015
4016 2018-04-20  Michael Meissner  <meissner@linux.ibm.com>
4017
4018         PR target/85456
4019         * config/rs6000/rs6000.c (init_float128_ieee): Add support to call
4020         __powikf2 when long double is IEEE 128-bit.
4021
4022 2018-04-20  Kito Cheng  <kito.cheng@gmail.com>
4023
4024         * config/riscv/riscv.c (riscv_first_stack_step): Round up min
4025         step to make sure stack always aligned.
4026
4027 2018-04-20  Carl Love  <cel@us.ibm.com>
4028
4029         PR target/83402
4030         * config/rs6000/rs6000-c.c (rs6000_gimple_fold_builtin): Add
4031         size check for arg0.
4032
4033 2018-04-20  Nathan Sidwell  <nathan@codesourcery.com>
4034             Tom de Vries  <tom@codesourcery.com>
4035
4036         PR target/85445
4037         * config/nvptx/nvptx.c (nvptx_emit_forking, nvptx_emit_joining):
4038         Emit insns for calls too.
4039         (nvptx_find_par): Always look for worker-level predecessor insn.
4040         (nvptx_propagate): Add is_call parm, return bool.  Copy frame for
4041         calls.
4042         (nvptx_vpropagate, nvptx_wpropagate): Adjust.
4043         (nvptx_process_pars): Propagate frames for calls.
4044
4045 2018-04-20  H.J. Lu  <hongjiu.lu@intel.com>
4046
4047         PR target/85469
4048         * common/config/i386/i386-common.c (OPTION_MASK_ISA_IBT_SET):
4049         Removed.
4050         (OPTION_MASK_ISA_IBT_UNSET): Likewise.
4051         (ix86_handle_option): Don't handle OPT_mibt.
4052         * config/i386/cet.h: Check __CET__ instead of __IBT__ and
4053         __SHSTK__.
4054         * config/i386/driver-i386.c (host_detect_local_cpu): Remove
4055         has_ibt and ibt.
4056         * config/i386/i386-c.c (ix86_target_macros_internal): Don't
4057         check OPTION_MASK_ISA_IBT nor flag_cf_protection.
4058         (ix86_target_macros): Define __CET__ with flag_cf_protection
4059         for -fcf-protection.
4060         * config/i386/i386.c (isa2_opts): Remove -mibt.
4061         * config/i386/i386.h (TARGET_IBT): Removed.
4062         (TARGET_IBT_P): Likewise.
4063         (ix86_valid_target_attribute_inner_p): Don't check OPT_mibt.
4064         * config/i386/i386.md (nop_endbr): Don't check TARGET_IBT.
4065         * config/i386/i386.opt (mcet): Update help message.
4066         (mshstk): Likewise.
4067         (mibt): Removed.
4068         * doc/invoke.texi: Remove -mibt.  Document __CET__.  Document
4069         -mcet as an alias for -mshstk.
4070
4071 2018-04-20  Richard Biener <rguenther@suse.de>
4072
4073         PR middle-end/85475
4074         * match.pd ((X * CST) * Y -> (X * Y) * CST): Avoid exponential
4075         complexity by forcing a single use of the multiply operand.
4076
4077 2018-04-20  Martin Jambor  <mjambor@suse.cz>
4078
4079         ipa/85449
4080         * ipa-cp.c (cgraph_edge_brings_value_p): Move check for self-feeding
4081         recursion dependency to only apply to non-clones.
4082
4083 2018-04-20  Martin Jambor  <mjambor@suse.cz>
4084
4085         ipa/85447
4086         * ipa-cp.c (create_specialized_node): Check that clones of
4087         self-recursive edges exist during IPA-CP.
4088
4089 2018-04-19  Toon Moene  <toon@moene.org>
4090
4091         * doc/invoke.texi: Add -floop-unroll-and-jam to options enabled
4092         by -O3. 
4093
4094 2018-04-19  Jakub Jelinek  <jakub@redhat.com>
4095
4096         PR tree-optimization/85467
4097         * fold-const.c (fold_ternary_loc) <case BIT_FIELD_REF>: Use
4098         VECTOR_TYPE_P macro.  If type is vector type, VIEW_CONVERT_EXPR the
4099         VECTOR_CST element to type.
4100
4101 2018-04-19  H.J. Lu  <hongjiu.lu@intel.com>
4102
4103         PR target/85397
4104         * config/i386/i386.h (STACK_SAVEAREA_MODE): New.
4105         * config/i386/i386.md (builtin_setjmp_setup): Removed.
4106         (builtin_longjmp): Likewise.
4107         (save_stack_nonlocal): New pattern.
4108         (restore_stack_nonlocal): Likewise.
4109
4110 2018-04-19  H.J. Lu  <hongjiu.lu@intel.com>
4111
4112         PR target/85404
4113         * config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
4114         Replace ASM_OUTPUT_LABEL with fprintf.
4115
4116 2018-04-19  H.J. Lu  <hongjiu.lu@intel.com>
4117
4118         PR target/85417
4119         * config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
4120         Check flag_cf_protection instead of TARGET_IBT and TARGET_SHSTK.
4121         * config/i386/i386-c.c (ix86_target_macros_internal): Also
4122         define __IBT__ and __SHSTK__ for -fcf-protection.
4123         * config/i386/i386.c (pass_insert_endbranch::gate): Don't check
4124         TARGET_IBT.
4125         (ix86_trampoline_init): Likewise.
4126         (x86_output_mi_thunk): Likewise.
4127         (ix86_notrack_prefixed_insn_p): Likewise.
4128         (ix86_option_override_internal): Don't disallow -fcf-protection.
4129         * config/i386/i386.md (rdssp<mode>): Also enable for
4130         -fcf-protection.
4131         (incssp<mode>): Likewise.
4132         (nop_endbr): Likewise.
4133         * config/i386/i386.opt (mcet): Change help message to built-in
4134         functions only.
4135         (mibt): Likewise.
4136         (mshstk): Likewise.
4137         * doc/invoke.texi: Remove -mcet, -mibt and -mshstk condition
4138         on -fcf-protection.  Change -mcet, -mibt and -mshstk to only
4139         enable CET built-in functions.
4140
4141 2018-04-19  Sebastian Peryt  <sebastian.peryt@intel.com>
4142
4143         * common/config/i386/i386-common.c 
4144         (OPTION_MASK_ISA_MOVDIRI_SET, OPTION_MASK_ISA_MOVDIR64B_SET,
4145         OPTION_MASK_ISA_MOVDIRI_UNSET,
4146         OPTION_MASK_ISA_MOVDIR64B_UNSET): New defines.
4147         (ix86_handle_option): Handle -mmovdiri and -mmovdir64b.
4148         * config.gcc (movdirintrin.h): New header.
4149         * config/i386/cpuid.h (bit_MOVDIRI,
4150         bit_MOVDIR64B): New bits.
4151         * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mmovdiri
4152         and -mmvodir64b.
4153         * config/i386/i386-builtin-types.def ((VOID, PUNSIGNED, UNSIGNED),
4154         (VOID, PVOID, PCVOID)): New function types.
4155         * config/i386/i386-builtin.def (__builtin_ia32_directstoreu_u32,
4156         __builtin_ia32_directstoreu_u64,
4157          __builtin_ia32_movdir64b): New builtins.
4158         * config/i386/i386-c.c (__MOVDIRI__, __MOVDIR64B__): New.
4159         * config/i386/i386.c (ix86_target_string): Added -mmovdir64b
4160         and -mmovdiri.
4161         (ix86_valid_target_attribute_inner_p): Ditto.
4162         (ix86_expand_special_args_builtin): Added VOID_FTYPE_PUNSIGNED_UNSIGNED
4163         and VOID_FTYPE_PUNSIGNED_UNSIGNED.
4164         (ix86_expand_builtin): Expand IX86_BUILTIN_MOVDIR64B.
4165         * config/i386/i386.h (TARGET_MOVDIRI, TARGET_MOVDIRI_P,
4166         TARGET_MOVDIR64B, TARGET_MOVDIR64B_P): New.
4167         * config/i386/i386.md (UNSPECV_MOVDIRI, UNSPECV_MOVDIR64B): New.
4168         (movdiri<mode>, movdir64b_<mode>): New.
4169         * config/i386/i386.opt: Add -mmovdiri and -mmovdir64b.
4170         * config/i386/immintrin.h: Include movdirintrin.h.
4171         * config/i386/movdirintrin.h: New file.
4172         * doc/invoke.texi: Added -mmovdiri and -mmovdir64b.
4173
4174 2018-04-19  Richard Biener  <rguenther@suse.de>
4175
4176         PR middle-end/85455
4177         * cfg.c (clear_bb_flags): When loop state says we have
4178         marked irreducible regions also preserve BB_IRREDUCIBLE_LOOP.
4179
4180 2018-04-19  Richard Biener  <rguenther@suse.de>
4181
4182         PR tree-optimization/84737
4183         * tree-vect-data-refs.c (vect_copy_ref_info): New function
4184         copying restrict info.
4185         (vect_setup_realignment): Use it.
4186         * tree-vectorizer.h (vect_copy_ref_info): Declare.
4187         * tree-vect-stmts.c (vectorizable_store): Copy ref info from
4188         the first DR to all generated stores.
4189         (vectorizable_load): Likewise for loads.
4190
4191 2018-04-19  Jakub Jelinek  <jakub@redhat.com>
4192
4193         PR tree-optimization/85446
4194         * match.pd ((intptr_t) x eq/ne CST to x eq/ne (typeof x) cst): Require
4195         the integral and pointer types to have the same precision.
4196
4197         * doc/install.texi: Document --disable-cet being the default and
4198         --enable-cet=auto.
4199
4200 2018-04-18  Martin Liska  <mliska@suse.cz>
4201
4202         * ipa-devirt.c (odr_subtypes_equivalent_p): Fix GNU coding
4203         style.
4204
4205 2018-04-18  Martin Liska  <mliska@suse.cz>
4206
4207         Revert
4208         2018-03-02  Eric Botcazou  <ebotcazou@adacore.com>
4209
4210         PR ipa/83983
4211         * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
4212         arguments if they are comparable.
4213
4214 2018-04-18  Martin Liska  <mliska@suse.cz>
4215
4216         Revert
4217         2018-03-13  Eric Botcazou  <ebotcazou@adacore.com>
4218
4219         PR lto/84805
4220         * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
4221         incomplete types.
4222
4223 2018-04-18  H.J. Lu  <hongjiu.lu@intel.com>
4224
4225         PR target/85388
4226         * config/i386/i386.c (ix86_expand_split_stack_prologue): Insert
4227         ENDBR after calling __morestack.
4228
4229 2018-04-18  David Malcolm  <dmalcolm@redhat.com>
4230
4231         PR jit/85384
4232         * configure.ac (gcc-driver-name.h): Honor --with-gcc-major-version
4233         by using gcc_base_ver to generate a gcc_driver_version, and use
4234         it when generating GCC_DRIVER_NAME.
4235         * configure: Regenerate.
4236
4237 2018-04-18  Jakub Jelinek  <jakub@redhat.com>
4238
4239         PR target/81084
4240         * config.gcc: Obsolete powerpc*-*-*spe*.
4241
4242 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
4243
4244         PR debug/84637
4245         * dbxout.c (dbxout_int): Perform negation in unsigned int type.
4246         (stabstr_D): Change type of unum from unsigned int to
4247         unsigned HOST_WIDE_INT.  Perform negation in unsigned HOST_WIDE_INT
4248         type.
4249
4250 2018-04-17  Jim Wilson  <jimw@sifive.com>
4251
4252         PR 84856
4253         * config/riscv/riscv.c (riscv_compute_frame_info): Add calls to
4254         RISCV_STACK_ALIGN when using outgoing_args_size and pretend_args_size.
4255         Set arg_pointer_offset after using pretend_args_size.
4256
4257 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
4258
4259         PR rtl-optimization/85431
4260         * dse.c (record_store): Ignore zero width stores.
4261
4262         PR sanitizer/85230
4263         * asan.c (handle_builtin_stack_restore): Adjust comment.  Emit
4264         __asan_allocas_unpoison call and last_alloca_addr = new_sp before
4265         __builtin_stack_restore rather than after it.
4266         * builtins.c (expand_asan_emit_allocas_unpoison): Pass
4267         arg1 + (virtual_dynamic_stack_rtx - stack_pointer_rtx) as second
4268         argument instead of virtual_dynamic_stack_rtx.
4269
4270 2018-04-17  Kelvin Nilsen  <kelvin@gcc.gnu.org>
4271
4272         * config/rs6000/rs6000-protos.h (rs6000_builtin_is_supported_p):
4273         New prototype.
4274         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
4275         Add note to error message to explain internal mapping of overloaded
4276         built-in function name to non-overloaded built-in function name.
4277         * config/rs6000/rs6000.c (rs6000_builtin_is_supported_p): New
4278         function.
4279
4280 2018-04-17  Michael Meissner  <meissner@linux.vnet.ibm.com>
4281
4282         PR target/85424
4283         * config/rs6000/rs6000.md (pack<mode>): Do not try handle a pack
4284         where the inputs overlap with the output.
4285
4286 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
4287
4288         * config/i386/sse.md (vec_extract_lo_<mode><mask_name>): Add
4289         (=v, v) alternative and explicit "memory" attribute.
4290         (vec_extract_lo_<mode><mask_name>): Likewise.  Also add
4291         "type", "prefix", "prefix_extra", "length_immediate" and "mode"
4292         attributes.
4293         (vec_extract_lo_<mode><mask_name>): Add (=v, v) alternative and use
4294         "sselog1" type instead of "sselog".
4295         (vec_extract_hi_<mode><mask_name>): Use "sselog1" type instead of
4296         "sselog".  Remove explicit "memory" attribute.
4297         (vec_extract_lo_v32hi): Add (=v, v) alternative and explicit "memory",
4298         "type", "prefix", "prefix_extra", "length_immediate" and "mode"
4299         attributes.
4300         (vec_extract_hi_v32hi): Merge all alternatives into one, use
4301         "sselog1" type instead of "sselog".  Remove explicit "memory"
4302         attribute.
4303         (vec_extract_hi_v16hi): Merge each pair of alternatives into one,
4304         use "sselog1" type instead of "sselog".  Remove explicit "memory"
4305         attribute.
4306         (vec_extract_lo_v64qi): Add (=v, v) alternative and explicit "memory",
4307         "type", "prefix", "prefix_extra", "length_immediate" and "mode"
4308         attributes.
4309         (vec_extract_hi_v64qi): Merge all alternatives into one, use
4310         "sselog1" type instead of "sselog".  Remove explicit "memory"
4311         attribute.
4312         (vec_extract_hi_v32qi): Merge each pair of alternatives into one,
4313         use "sselog1" type instead of "sselog".  Remove explicit "memory"
4314         attribute.
4315
4316         PR target/85430
4317         * config/i386/i386.md (*ashlqi3_1_slp): Use alu1 type instead of alu.
4318
4319         PR middle-end/85414
4320         * rtlhooks.c (gen_lowpart_if_possible): Don't call gen_lowpart_SUBREG
4321         on a SUBREG.
4322
4323 2018-04-17  Martin Jambor  <mjambor@suse.cz>
4324
4325         PR ipa/85421
4326         * ipa-cp.c (create_specialized_node): Call
4327         expand_all_artificial_thunks if necessary.
4328
4329 2018-04-17  Martin Liska  <mliska@suse.cz>
4330
4331         PR lto/85405
4332         * ipa-devirt.c (odr_types_equivalent_p): Remove trailing
4333         in message, remote space in between '_G' and '('.
4334
4335 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
4336
4337         PR target/85281
4338         * config/i386/sse.md (reduces<mode><mask_scalar_name>,
4339         avx512f_vmcmp<mode>3<round_saeonly_name>,
4340         avx512f_vmcmp<mode>3_mask<round_saeonly_name>,
4341         avx512f_sgetexp<mode><mask_scalar_name><round_saeonly_scalar_name>,
4342         avx512f_rndscale<mode><round_saeonly_name>,
4343         avx512dq_ranges<mode><mask_scalar_name><round_saeonly_scalar_name>,
4344         avx512f_vgetmant<mode><mask_scalar_name><round_saeonly_scalar_name>):
4345         Use %<iptr>2 instead of %2 for -masm=intel.
4346         (avx512f_vcvtss2usi<round_name>, avx512f_vcvtss2usiq<round_name>,
4347         avx512f_vcvttss2usi<round_saeonly_name>,
4348         avx512f_vcvttss2usiq<round_saeonly_name>): Use %k1 instead of %1 for
4349         -masm=intel.
4350         (avx512f_vcvtsd2usi<round_name>, avx512f_vcvtsd2usiq<round_name>,
4351         avx512f_vcvttsd2usi<round_saeonly_name>,
4352         avx512f_vcvttsd2usiq<round_saeonly_name>, ufloatv2siv2df2<mask_name>):
4353         Use %q1 instead of %1 for -masm=intel.
4354         (avx512f_sfixupimm<mode><sd_maskz_name><round_saeonly_name>,
4355         avx512f_sfixupimm<mode>_mask<round_saeonly_name>): Use %<iptr>3 instead
4356         of %3 for -masm=intel.
4357         (sse2_shufpd_v2df_mask): Fix a typo, change %{6%} to %{%6%} for
4358         -masm=intel.
4359         (*avx512vl_<code>v2div2qi2_store): Use %w0 instead of %0 for
4360         -masm=intel.
4361         (*avx512vl_<code><mode>v4qi2_store): Use %k0 instead of %0 for
4362         -masm=intel.
4363         (avx512vl_<code><mode>v4qi2_mask_store): Use a single pattern with
4364         %k0 and %1 for -masm=intel rather than two patterns, one with %0 and
4365         %g1.
4366         (*avx512vl_<code><mode>v8qi2_store): Use %q0 instead of %0 for
4367         -masm=intel.
4368         (avx512vl_<code><mode>v8qi2_mask_store): Use a single pattern with
4369         %q0 and %1 for -masm=intel rather than two patterns, one with %0 and
4370         %g1 and one with %0 and %1.
4371         (avx512er_vmrcp28<mode><round_saeonly_name>,
4372         avx512er_vmrsqrt28<mode><round_saeonly_name>): Use %<iptr>1 instead of
4373         %1 for -masm=intel.
4374         (avx5124fmaddps_4fmaddps_mask, avx5124fmaddps_4fmaddss_mask,
4375         avx5124fmaddps_4fnmaddps_mask, avx5124fmaddps_4fnmaddss_mask,
4376         avx5124vnniw_vp4dpwssd_mask, avx5124vnniw_vp4dpwssds_mask): Swap order
4377         of %0 and %{%4%} for -masm=intel.
4378         (avx5124fmaddps_4fmaddps_maskz, avx5124fmaddps_4fmaddss_maskz,
4379         avx5124fmaddps_4fnmaddps_maskz, avx5124fmaddps_4fnmaddss_maskz,
4380         avx5124vnniw_vp4dpwssd_maskz, avx5124vnniw_vp4dpwssds_maskz): Swap
4381         order of %0 and %{%5%}%{z%} for -masm=intel.
4382
4383 2018-04-17  Jan Hubicka  <jh@suse.cz>
4384
4385         PR lto/85405
4386         * ipa-devirt.c (odr_types_equivalent_p): Handle bit fields.
4387
4388 2018-04-17  Martin Liska  <mliska@suse.cz>
4389
4390         PR ipa/85329
4391         * multiple_target.c (create_dispatcher_calls): Set apostrophes
4392         for target_clone error message.  Make default implementation
4393         clone to be a local declaration.
4394         (separate_attrs): Add new argument and check for an empty
4395         string.
4396         (expand_target_clones): Handle it.
4397         (ipa_target_clone): Make redirection just for target_clones
4398         functions.
4399
4400 2018-04-16  Cesar Philippidis  <cesar@codesourcery.com>
4401             Tom de Vries  <tom@codesourcery.com>
4402
4403         PR middle-end/84955
4404         * omp-expand.c (expand_oacc_for): Add dummy false branch for
4405         tiled basic blocks without omp continue statements.
4406
4407 2018-04-16  Aaron Sawdey  <acsawdey@linux.ibm.com>
4408
4409         PR target/83660
4410         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Mark
4411         vec_extract expression as having side effects to make sure it gets
4412         a cleanup point.
4413
4414 2018-04-16  H.J. Lu  <hongjiu.lu@intel.com>
4415
4416         PR target/85403
4417         * config/i386/i386.c (get_builtin_code_for_version): Check
4418         error_mark_node.
4419
4420 2018-04-16  Olga Makhotina  <olga.makhotina@intel.com>
4421
4422         PR target/84331
4423         * gcc/config.gcc: Support "skylake".
4424         * gcc/config/i386/i386-c.c (ix86_target_macros_internal): Handle
4425         PROCESSOR_SKYLAKE.
4426         * gcc/config/i386/i386.c (m_SKYLAKE): Define.
4427         (processor_target_table): Add "skylake".
4428         (ix86_option_override_internal): Add "skylake".
4429         (get_builtin_code_for_version): Handle PROCESSOR_SKYLAKE,
4430         PROCESSOR_CANNONLAKE.
4431         (get_builtin_code_for_version): Fix priority for
4432         PROCESSOR_ICELAKE_CLIENT, PROCESSOR_ICELAKE_SERVER,
4433         PROCESSOR_SKYLAKE-AVX512.
4434         * gcc/config/i386/i386.h (processor_costs): Define TARGET_SKYLAKE.
4435         (processor_type): Add PROCESSOR_SKYLAKE.
4436
4437 2018-04-16  Paolo Carlini  <paolo.carlini@oracle.com>
4438             Jason Merrill  <jason@redhat.com>
4439
4440         PR c++/85112
4441         * convert.c (convert_to_integer_1): Use direct recursion for
4442         enumeral types and types with a precision less than the number
4443         of bits in their mode.
4444
4445 2018-04-16  Julia Koval  <julia.koval@intel.com>
4446
4447         PR target/84413
4448         * config/i386/x86-tune.def (X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL,
4449         X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL): Add m_SKYLAKE_AVX512
4450
4451 2018-04-14  Segher Boessenkool  <segher@kernel.crashing.org>
4452
4453         PR target/85293
4454         * config/rs6000/rs6000.opt (mdirect-move): Make deprecated.
4455         * doc/invoke.texi (RS/6000 and PowerPC Options): Remove -mdirect-move
4456         and -mno-direct-move.
4457
4458 2018-04-13  Paul A. Clarke  <pc@us.ibm.com>
4459
4460         PR target/83402
4461         * config/rs6000/emmintrin.h (_mm_slli_epi{16,32,64}):
4462         Ensure that vec_splat_s32 is only called with 0 <= shift < 16.
4463         Ensure negative shifts result in {0}.
4464
4465 2018-04-13  Vladimir Makarov  <vmakarov@redhat.com>
4466
4467         PR rtl-optimization/79916
4468         * config/rs6000/rs6000.c (rs6000_emit_move): Use assigned hard
4469         regs (if any) to define how to gnerate SD moves when LRA is in
4470         progress.
4471
4472 2018-04-13  Jakub Jelinek  <jakub@redhat.com>
4473
4474         PR rtl-optimization/85393
4475         * except.h (expand_dw2_landing_pad_for_region): Remove declaration.
4476         * except.c (expand_dw2_landing_pad_for_region): Make static.
4477         * bb-reorder.c (fix_up_crossing_landing_pad): In new_bb emit just
4478         a label and unconditional jump to old_bb, rather than
4479         expand_dw2_landing_pad_for_region insn(s) and jump to single_succ
4480         basic block.
4481
4482         PR rtl-optimization/85376
4483         * simplify-rtx.c (simplify_const_unary_operation): For CLZ and CTZ and
4484         zero op0, if C?Z_DEFINED_VALUE_AT_ZERO is false, return NULL_RTX
4485         instead of a specific value.
4486
4487 2018-04-13  Jan Hubicka  <hubicka@ucw.cz>
4488             Bin Cheng  <bin.cheng@arm.com>
4489
4490         PR tree-optimization/82965
4491         PR tree-optimization/83991
4492         * cfgloopanal.c (expected_loop_iterations_unbounded): Add
4493         by_profile_only parameter.
4494         * cfgloopmanip.c (scale_loop_profile): Further scale loop's profile
4495         information if the loop was predicted to iterate too many times.
4496         * cfgloop.h (expected_loop_iterations_unbounded): Update prototype
4497
4498 2018-04-13  Jan Hubicka  <hubicka@ucw.cz>
4499
4500         PR lto/71991
4501         * config/i386/i386.c (ix86_can_inline_p): Allow safe transitions for
4502         always inline.
4503
4504 2018-04-13  Martin Liska  <mliska@suse.cz>
4505             Jakub Jelinek  <jakub@redhat.com>
4506
4507         PR middle-end/81657
4508         * expr.h (enum block_op_methods): Add BLOCK_OP_NO_LIBCALL_RET.
4509         * expr.c (emit_block_move_hints): Handle BLOCK_OP_NO_LIBCALL_RET.
4510         * builtins.c (expand_builtin_memory_copy_args): Use
4511         BLOCK_OP_NO_LIBCALL_RET method for mempcpy with non-ignored target,
4512         handle dest_addr == pc_rtx.
4513
4514 2018-04-12  Segher Boessenkool  <segher@kernel.crashing.org>
4515
4516         PR target/85291
4517         * config/rs6000/rs6000.md (fix_trunc<mode>si2): Use legacy code if
4518         asked to not generate direct moves.
4519         (fix_trunc<mode>si2_stfiwx): Similar.
4520         (fix_trunc<mode>si2_internal): Similar.
4521
4522 2018-04-12  Jakub Jelinek  <jakub@redhat.com>
4523
4524         PR debug/83157
4525         * var-tracking.c (add_stores): Handle STRICT_LOW_PART SET_DEST.
4526         * cselib.c (cselib_record_sets): For STRICT_LOW_PART dest,
4527         lookup if dest in some wider mode is known to be const0_rtx and
4528         if so, record permanent equivalence for it to be ZERO_EXTEND of
4529         the narrower mode destination.
4530
4531 2018-04-12  Cesar Philippidis  <cesar@codesourcery.com>
4532
4533         * lto-streamer-out.c (output_function): Revert 259346.
4534         * omp-expand.c (expand_oacc_for): Likewise.
4535
4536 2018-04-12  Alexander Monakov  <amonakov@ispras.ru>
4537
4538         PR rtl-optimization/85354
4539         * sel-sched-ir.c (sel_init_pipelining): Move cfg_cleanup call...
4540         * sel-sched.c (sel_global_init): ... here.
4541
4542 2018-04-12  Eric Botcazou  <ebotcazou@adacore.com>
4543
4544         PR target/85238
4545         * lto-wrapper.c (debug_objcopy): Open the files in binary mode.
4546         * dwarf2out.c (dwarf2out_early_finish): Do not generate assembly in LTO
4547         mode for PE-COFF targets.
4548         * config/i386/i386-protos.h (i386_pe_asm_lto_start): Declare.
4549         (i386_pe_asm_lto_end): Likewise.
4550         * config/i386/cygming.h (TARGET_ASM_LTO_START): Define.
4551         (TARGET_ASM_LTO_END): Likewise.
4552         * config/i386/winnt.c (saved_debug_info_level): New static variable.
4553         (i386_pe_asm_lto_start): New function.
4554         (i386_pe_asm_lto_end): Likewise.
4555
4556 2018-04-12  Cesar Philippidis  <cesar@codesourcery.com>
4557             Richard Biener  <rguenther@suse.de>
4558
4559         PR middle-end/84955
4560         * lto-streamer-out.c (output_function): Fix CFG loop state before
4561         streaming out.
4562         * omp-expand.c (expand_oacc_for): Handle calls to internal
4563         functions like regular functions.
4564
4565 2018-04-12  Richard Biener  <rguenther@suse.de>
4566
4567         PR lto/85371
4568         * dwarf2out.c (init_sections_and_labels): Use debug_line_section[_label]
4569         for the early LTO debug to properly generate references to it
4570         during DIE emission.  Do not re-use that for the skeleton for
4571         split-dwarf.
4572         (dwarf2out_early_finish): Likewise.
4573
4574 2018-04-12  Jakub Jelinek  <jakub@redhat.com>
4575
4576         PR target/85328
4577         * config/i386/sse.md
4578         (<mask_codefor>avx512dq_vextract<shuffletype>64x2_1<mask_name> split,
4579         <mask_codefor>avx512f_vextract<shuffletype>32x4_1<mask_name> split,
4580         vec_extract_lo_<mode><mask_name> split, vec_extract_lo_v32hi,
4581         vec_extract_lo_v64qi): For non-AVX512VL if input is xmm16+ reg
4582         and output is a reg, avoid creating invalid lowpart subreg, but
4583         instead split into a 512-bit move.  Don't split if not AVX512VL,
4584         input is xmm16+ reg and output is a mem.
4585         (vec_extract_lo_<mode><mask_name>, vec_extract_lo_v32hi,
4586         vec_extract_lo_v64qi): Don't require split if not AVX512VL, input is
4587         xmm16+ reg and output is a mem.
4588
4589 2018-04-12  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
4590
4591         * config/s390/s390.c (s390_output_indirect_thunk_function): Check
4592         also for flag_dwarf2_cfi_asm.
4593
4594 2018-04-12  Jakub Jelinek  <jakub@redhat.com>
4595
4596         PR rtl-optimization/85342
4597         * regcprop.c (copyprop_hardreg_forward_1): Remove replaced array, use
4598         a bool scalar var inside of the loop instead.  Don't try to update
4599         recog_data.operand after failed apply_change_group.
4600
4601 2018-04-12  Tom de Vries  <tom@codesourcery.com>
4602
4603         PR target/85296
4604         * config/nvptx/nvptx.c (flexible_array_member_type_p): New function.
4605         (nvptx_assemble_decl_begin): Add undefined param.  Declare undefined
4606         array with flexible array member as array without given dimension.
4607         (nvptx_assemble_undefined_decl): Set nvptx_assemble_decl_begin call
4608         argument for undefined param to true.
4609
4610 2018-04-11  Aaron Sawdey  <acsawdey@linux.ibm.com>
4611
4612         PR target/85321
4613         * doc/invoke.texi (RS/6000 and PowerPC Options): Document options
4614         -mcall- and -mtraceback=. Remove options -mabi=spe and -mabi=no-spe
4615         from PowerPC section.
4616         * config/rs6000/sysv4.opt (mcall-): Improve help text.
4617         * config/rs6000/rs6000.opt (mblock-compare-inline-limit=): Trim
4618         help text that is too long.
4619         * config/rs6000/rs6000.opt (mblock-compare-inline-loop-limit=): Trim
4620         help text that is too long.
4621         * config/rs6000/rs6000.opt (mstring-compare-inline-limit=): Trim
4622         help text that is too long.
4623
4624 2018-04-11  Uros Bizjak  <ubizjak@gmail.com>
4625
4626         * config/alpha/alpha.md (stack_probe_internal): Rename
4627         from "probe_stack".  Update all callers.
4628
4629 2018-04-11  Alexander Monakov  <amonakov@ispras.ru>
4630
4631         PR rtl-optimization/84566
4632         * sched-deps.c (sched_analyze_insn): Check deps->readonly when invoking
4633         sched_macro_fuse_insns.
4634
4635 2018-04-11  Alexander Monakov  <amonakov@ispras.ru>
4636
4637         PR target/84301
4638         * sched-rgn.c (add_branch_dependences): Move sel_sched_p check here...
4639         (compute_block_dependences): ... from here.
4640
4641 2018-04-11  Jakub Jelinek  <jakub@redhat.com>
4642
4643         PR tree-optimization/85331
4644         * vec-perm-indices.h (vec_perm_indices::clamp): Change input type
4645         from int to HOST_WIDE_INT.
4646
4647 2018-04-11  Martin Jambor  <mjambor@suse.cz>
4648
4649         PR ipa/84149
4650         * ipa-cp.c (propagate_vals_across_pass_through): Expand comment.
4651         (cgraph_edge_brings_value_p): New parameter dest_val, check if it is
4652         not the same as the source val.
4653         (cgraph_edge_brings_value_p): New parameter.
4654         (gather_edges_for_value): Pass destination value to
4655         cgraph_edge_brings_value_p.
4656         (perhaps_add_new_callers): Likewise.
4657         (get_info_about_necessary_edges): Likewise and exclude values brought
4658         only by self-recursive edges.
4659         (create_specialized_node): Redirect only clones of self-calling edges.
4660         (+self_recursive_pass_through_p): New function.
4661         (find_more_scalar_values_for_callers_subset): Use it.
4662         (find_aggregate_values_for_callers_subset): Likewise.
4663         (known_aggs_to_agg_replacement_list): Removed.
4664         (decide_whether_version_node): Re-calculate known constants for all
4665         remaining context clones.
4666
4667 2018-04-11  Richard Biener  <rguenther@suse.de>
4668
4669         PR lto/85339
4670         * dwarf2out.c (dwarf2out_finish): Remove DW_AT_stmt_list attribute
4671         from early DWARF output.
4672         (dwarf2out_early_finish): Output line info unconditionally into
4673         early DWARF and add reference to it.
4674
4675 2018-04-11  Jakub Jelinek  <jakub@redhat.com>
4676
4677         PR target/85281
4678         * config/i386/sse.md (iptr): Add V16SFmode and V8DFmode cases.
4679         (<avx512>_vec_dup<mode><mask_name>): Use a single pattern for modes
4680         other than V2DFmode using iptr mode attribute.
4681         (<avx512>_vec_dup<mode><mask_name>): Use iptr mode attribute.
4682
4683 2018-04-11  Alexander Monakov  <amonakov@ispras.ru>
4684
4685         PR rtl-optimization/84659
4686         * sel-sched-ir.c (sel_init_pipelining): Invoke cleanup_cfg.
4687
4688 2018-04-11  Jakub Jelinek  <jakub@redhat.com>
4689
4690         PR debug/85302
4691         * dwarf2out.c (skip_loc_list_entry): Don't call size_of_locs if
4692         SIZEP is NULL.
4693         (output_loc_list): Pass address of a dummy size variable even in the
4694         locview handling loop.
4695         (index_location_lists): Add comment on why skip_loc_list_entry can't
4696         call size_of_locs.
4697
4698 2018-04-11  Thomas Preud'homme  <thomas.preudhomme@arm.com>
4699
4700         PR target/85261
4701         * config/arm/arm-builtins.c (arm_expand_builtin): Force input operand
4702         into register.
4703
4704 2018-04-10  Aaron Sawdey  <acsawdey@linux.ibm.com>
4705
4706         PR target/85321
4707         * doc/invoke.texi (RS/6000 and PowerPC Options): Document options
4708         -mblock-compare-inline-limit, -mblock-compare-inline-loop-limit,
4709         and -mstring-compare-inline-limit.
4710
4711 2018-04-10  Segher Boessenkool  <segher@kernel.crashing.org>
4712
4713         PR target/85287
4714         * gcc/config/rs6000/rs6000.md (allocate_stack): Put the residual size
4715         for stack clash protection in a register whenever we need it to be in
4716         a register.
4717
4718 2018-04-10  Segher Boessenkool  <segher@kernel.crashing.org>
4719
4720         * common/config/rs6000/rs6000-common.c (rs6000_option_init_struct):
4721         Enable -fasynchronous-unwind-tables by default if OBJECT_FORMAT_ELF.
4722
4723 2018-04-10  Segher Boessenkool  <segher@kernel.crashing.org>
4724
4725         PR target/85321
4726         * config/rs6000/rs6000.opt (mtraceback=): Show the allowed values in
4727         the help text.
4728         (mlong-double-): Ditto.
4729         * config/rs6000/sysv4.opt (msdata=): Ditto.
4730         (mtls-size=): Ditto.
4731
4732 2018-04-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
4733
4734         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Remove
4735         erroneous entries for
4736         "vector int vec_ldl (int, long int *)", and
4737         "vector unsigned int vec_ldl (int, unsigned long int *)".
4738         Add comments and entries for
4739         "vector bool char vec_ldl (int, bool char *)",
4740         "vector bool short vec_ldl (int, bool short *)",
4741         "vector bool int vec_ldl (int, bool int *)",
4742         "vector bool long long vec_ldl (int, bool long long *)",
4743         "vector pixel vec_ldl (int, pixel *)",
4744         "vector long long vec_ldl (int, long long *)",
4745         "vector unsigned long long vec_ldl (int, unsigned long long *)".
4746         * config/rs6000/rs6000.c (rs6000_init_builtins): Initialize new
4747         type tree bool_long_long_type_node and correct definition of
4748         bool_V2DI_type_node to make reference to this new type tree.
4749         (rs6000_mangle_type): Replace erroneous reference to
4750         bool_long_type_node with bool_long_long_type_node.
4751         * config/rs6000/rs6000.h (enum rs6000_builtin_type_index): Add
4752         comments to emphasize sign distinctions for char and int types and
4753         replace RS6000_BTI_bool_long constant with
4754         RS6000_BTI_bool_long_long constant.  Also add comment to restrict
4755         use of RS6000_BTI_pixel.
4756         (bool_long_type_node): Remove this macro definition.
4757         (bool_long_long_type_node): New macro definition
4758
4759 2018-04-10  Jakub Jelinek  <jakub@redhat.com>
4760
4761         PR rtl-optimization/85300
4762         * combine.c (subst): Handle subst of CONST_SCALAR_INT_P new_rtx also
4763         into FLOAT and UNSIGNED_FLOAT like ZERO_EXTEND, return a CLOBBER if
4764         simplify_unary_operation fails.
4765
4766 2018-04-10  Martin Liska  <mliska@suse.cz>
4767
4768         * gdbhooks.py: Add pretty-printers for varpool_node, symtab_node,
4769         cgraph_edge and ipa_ref.
4770
4771 2018-04-10  Jakub Jelinek  <jakub@redhat.com>
4772
4773         PR target/85177
4774         PR target/85255
4775         * config/i386/sse.md
4776         (<extract_type>_vinsert<shuffletype><extract_suf>_mask): Fix
4777         computation of the VEC_MERGE selector from mask.
4778         (<extract_type>_vinsert<shuffletype><extract_suf>_1<mask_name>):
4779         Fix decoding of the VEC_MERGE selector into mask.
4780
4781 2018-04-10  Richard Sandiford  <richard.sandiford@linaro.org>
4782
4783         PR tree-optimization/85286
4784         * tree-vect-data-refs.c (vect_get_smallest_scalar_type):
4785
4786 2018-04-10  Richard Sandiford  <richard.sandiford@linaro.org>
4787
4788         * final.c (final_1): Set insn_last_address as well as
4789         insn_current_address.
4790
4791 2018-04-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4792
4793         PR target/85173
4794         * explow.c (emit_stack_probe): Call validize_mem on memory location
4795         before passing it to gen_probe_stack.  Create address operand and
4796         legitimize it for the probe_stack_address case.
4797
4798 2018-04-09  Jan Hubicka  <jh@suse.cz>
4799
4800         PR lto/85078
4801         * ipa-devirt.c (rebuild_type_inheritance-hash): New.
4802         * ipa-utils.h (rebuild_type_inheritance-hash): Declare.
4803         * tree.c (free_lang_data_in_type): Fix handling of binfos;
4804         walk basetypes.
4805         (free_lang_data): Rebuild type inheritance graph.
4806
4807 2018-04-09  Martin Sebor  <msebor@redhat.com>
4808
4809         * invoke.texi (-finline-small-functions): Mention other optimization
4810         options.
4811         (-findirect-inlining, -fpartial-inlining): Same.
4812         (-finline-functions-called-once): Same.
4813         (-freorder-blocks-and-partition): Same.
4814
4815 2018-04-09  Jan Hubicka  <jh@suse.cz>
4816
4817         PR rtl/84058
4818         * cfgcleanup.c (try_forward_edges): Do not give up on crossing
4819         jumps; choose last target that matches the criteria (i.e.
4820         no partition changes for non-crossing jumps).
4821         * cfgrtl.c (cfg_layout_redirect_edge_and_branch): Add basic
4822         support for redirecting crossing jumps to non-crossing.
4823
4824 2018-04-09  Alexey Brodkin  <abrodkin@synopsys.com>
4825
4826         * config/arc/arc.c (arc_expand_prologue): Set stack usage info
4827         also for naked functions.
4828
4829 2018-04-09  Claudiu Zissulescu  <claziss@synopsys.com>
4830
4831         * config/arc/arc.md (add_shift): New pattern.
4832         (add_shift2): Likewise.
4833         (sub_shift): Likewise.
4834         (sub_shift_cmp0_noout): Likewise.
4835         (compare_si_ashiftsi): Likewise.
4836         (xbfu_cmp0_noout): New combine pattern.
4837         (xbfu_cmp0"): Likewise.
4838         (movsi_set_cc_insn): Place the predicable variant first.
4839         (commutative_binary_cmp0_noout): Remove clobber.
4840         (commutative_binary_cmp0): New pattern.
4841         (noncommutative_binary_cmp0): Likewise.
4842         (noncommutative_binary_cmp0_noout): Likewise.
4843         (noncommutative_binary_comparison_result_used): Removed.
4844         (rsub_cmp0): New pattern.
4845         (rsub_cmp0_noout): Likewise.
4846         (extzvsi): Changed, keep only meaningful variants.
4847         (SQH, SEZ): New iterators.
4848         (SQH_postfix): New mode attribute.
4849         (SEZ_prefix): New code attribute.
4850         (<SEZ_prefix>xt<SQH_postfix>_cmp0_noout): New instruction pattern.
4851         (<SEZ_prefix>xt<SQH_postfix>_cmp0): Likewise.
4852         * config/arc/predicates.md (cc_set_register): Use CC_REG instead
4853         of numerical value.
4854         (noncommutative_operator): Check the availability of barrel
4855         shifter option.
4856
4857 2018-04-09  Richard Biener  <rguenther@suse.de>
4858
4859         PR tree-optimization/85284
4860         * tree-ssa-loop-niter.c (number_of_iterations_exit_assumptions):
4861         Only use the niter constraining form of simple_iv when the exit
4862         is always executed.
4863
4864 2018-04-09  Tom de Vries  <tom@codesourcery.com>
4865
4866         PR target/84041
4867         * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
4868         (define_expand "*memory_barrier"): New define_expand.
4869         (define_insn "memory_barrier"): New insn.
4870
4871 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
4872
4873         PR rtl-optimization/80463
4874         PR rtl-optimization/83972
4875         PR rtl-optimization/83480
4876
4877         * sel-sched-ir.c (has_dependence_note_mem_dep): Take into account the
4878         correct producer for the insn.
4879         (tidy_control_flow): Fixup seqnos in case of debug insns.
4880
4881 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
4882
4883         PR rtl-optimization/83913
4884
4885         * sel-sched-ir.c (merge_expr_data): Choose the middle between two
4886         different sched-times when merging exprs.
4887
4888 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
4889
4890         PR rtl-optimization/83962
4891
4892         * sel-sched-ir.c (tidy_control_flow): Correct the order in which we call
4893         tidy_fallthru_edge and tidy_control_flow.
4894
4895 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
4896
4897         PR rtl-optimization/83530
4898
4899         * sel-sched.c (force_next_insn): New global variable.
4900         (remove_insn_for_debug): When force_next_insn is true, also leave only
4901         next insn in the ready list.
4902         (sel_sched_region): When the region wasn't scheduled, make another pass
4903         over it with force_next_insn set to 1.
4904
4905 2018-04-08  Monk Chiang  <sh.chiang04@gmail.com>
4906
4907         * config.gcc (nds32le-*-*, nds32be-*-*): Add nds32/nds32_intrinsic.h
4908         into tm_file.
4909         * config/nds32/constants.md (unspec_volatile_element): Add enum values
4910         for interrupt control.
4911         * config/nds32/nds32-intrinsic.c: Implementation of intrinsic
4912         functions for interrupt control.
4913         * config/nds32/nds32-intrinsic.md: Likewise.
4914         * config/nds32/nds32_intrinsic.h: Likewise.
4915         * config/nds32/nds32.h (nds32_builtins): Likewise.
4916
4917 2018-04-08  Chung-Ju Wu  <jasonwucj@gmail.com>
4918
4919         * config/nds32/nds32.c (nds32_init_machine_status,
4920         nds32_legitimate_index_p, nds32_legitimate_address_p): Consider
4921         strict_aligned_p field.
4922         (nds32_expand_to_rtl_hook): New function.
4923         (TARGET_EXPAND_TO_RTL_HOOK): Define.
4924         * config/nds32/nds32.h (machine_function): Add strict_aligned_p field.
4925
4926 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
4927             Chung-Ju Wu  <jasonwucj@gmail.com>
4928
4929         * config.gcc (nds32*-*-*): Check that n7 is valid to --with-cpu.
4930         * config/nds32/nds32-n7.md: New file.
4931         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N7.
4932         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n7
4933         pipeline.
4934         * config/nds32/nds32-protos.h: More declarations for n7 pipeline.
4935         * config/nds32/nds32.md (pipeline_model): Add n7.
4936         * config/nds32/nds32.opt (mcpu): Support n7 pipeline cpus.
4937         * config/nds32/pipelines.md: Include n7 settings.
4938
4939 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
4940             Chung-Ju Wu  <jasonwucj@gmail.com>
4941
4942         * config.gcc (nds32*-*-*): Check that e8 is valid to --with-cpu.
4943         * config/nds32/nds32-e8.md: New file.
4944         * config/nds32/nds32-opts.h (nds32-cpu_type): Add CPU_E8.
4945         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for e8
4946         pipeline.
4947         * config/nds32/nds32-protos.h: More declarations for e8 pipeline.
4948         * config/nds32/nds32.md (pipeline_model): Add e8.
4949         * config/nds32/nds32.opt (mcpu): Support e8 pipeline cpus.
4950         * config/nds32/pipelines.md: Include e8 settings.
4951
4952 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
4953             Chung-Ju Wu  <jasonwucj@gmail.com>
4954
4955         * config.gcc (nds32*-*-*): Check that n6/n8/s8 are valid to --with-cpu.
4956         * config/nds32/nds32-n8.md: New file.
4957         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N6 and CPU_N8.
4958         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n8
4959         pipeline.
4960         * config/nds32/nds32-protos.h: More declarations for n8 pipeline.
4961         * config/nds32/nds32-utils.c: More implementations for n8 pipeline.
4962         * config/nds32/nds32.md (pipeline_model): Add n8.
4963         * config/nds32/nds32.opt (mcpu): Support n8 pipeline cpus.
4964         * config/nds32/pipelines.md: Include n8 settings.
4965
4966 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
4967             Chung-Ju Wu  <jasonwucj@gmail.com>
4968
4969         * config.gcc (nds32*): Add nds32-utils.o into extra_objs.
4970         * config/nds32/nds32-n9-2r1w.md: New file.
4971         * config/nds32/nds32-n9-3r2w.md: New file.
4972         * config/nds32/nds32-opts.h (nds32_cpu_type, nds32_mul_type,
4973         nds32_register_ports): New or modify for cpu n9.
4974         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n9
4975         pipeline.
4976         * config/nds32/nds32-protos.h: More declarations for n9 pipeline.
4977         * config/nds32/nds32-utils.c: New file.
4978         * config/nds32/nds32.h (TARGET_PIPELINE_N9, TARGET_PIPELINE_SIMPLE,
4979         TARGET_MUL_SLOW): Define.
4980         * config/nds32/nds32.md (pipeline_model): New attribute.
4981         * config/nds32/nds32.opt (mcpu, mconfig-mul, mconfig-register-ports):
4982         New options that support cpu n9.
4983         * config/nds32/pipelines.md: Include n9 settings.
4984         * config/nds32/t-nds32 (nds32-utils.o): Add dependency.
4985
4986 2018-04-08  Chung-Ju Wu  <jasonwucj@gmail.com>
4987
4988         * config/nds32/nds32-md-auxiliary.c (output_cond_branch): Output align
4989         information if necessary.
4990         (output_cond_branch_compare_zero): Likewise.
4991         * config/nds32/nds32.c (nds32_adjust_insn_length): Consider align case.
4992         (nds32_target_alignment): Refine for alignment.
4993         * config/nds32/nds32.h (NDS32_ALIGN_P): Define.
4994         (FUNCTION_BOUNDARY): Modify.
4995         * config/nds32/nds32.md (call_internal, call_value_internal): Consider
4996         align case.
4997         * config/nds32/nds32.opt (malways-align, malign-functions): New.
4998
4999 2018-04-08  Monk Chiang  <sh.chiang04@gmail.com>
5000
5001         * config/nds32/constants.md (unspec_volatile_element): Add values for
5002         TLB operation and data prefetch.
5003         * config/nds32/nds32-intrinsic.c: Implementation of intrinsic
5004         functions for TLB operation and data prefetch.
5005         * config/nds32/nds32-intrinsic.md: Likewise.
5006         * config/nds32/nds32_intrinsic.h: Likewise.
5007         * config/nds32/nds32.c (nds32_dpref_names): Likewise.
5008         (nds32_print_operand): Likewise.
5009         * config/nds32/nds32.h (nds32_builtins): Likewise.
5010
5011 2018-04-07  Thomas Koenig  <tkoenig@gcc.gnu.org>
5012         Andrew Pinski <pinsika@gcc.gnu.org>
5013
5014         PR middle-end/82976
5015         * match.pd: Use constant_boolean_node of correct type instead of
5016         boolean_true_node or boolean_false_node for simplifying
5017         pointer comparisons to zero.
5018
5019 2018-04-07  Jakub Jelinek  <jakub@redhat.com>
5020
5021         PR tree-optimization/80021
5022         * tree.c (verify_type_variant): Make error call in verify_variant_match
5023         translatable and remove final full stop.
5024
5025 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
5026
5027         * config/nds32/constants.md (unspec_volatile_element): Add
5028         UNSPEC_VOLATILE_EH_RETURN.
5029         * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push,
5030         nds32_output_stack_pop): Support dwarf exception handling process.
5031         * config/nds32/nds32-protos.h (nds32_dynamic_chain_address): Declare.
5032         * config/nds32/nds32.c (nds32_init_machine_status): Support dwarf
5033         exception handling process.
5034         (nds32_compute_stack_frame): Likewise.
5035         (nds32_return_addr_rtx): Likewise.
5036         (nds32_initial_elimination_offset): Likewise.
5037         (nds32_expand_prologue): Likewise.
5038         (nds32_expand_epilogue): Likewise.
5039         (nds32_dynamic_chain_address): New function.
5040         * config/nds32/nds32.h (machine_function): Add fields for dwarf
5041         exception handling.
5042         (DYNAMIC_CHAIN_ADDRESS): Define.
5043         (EH_RETURN_DATA_REGNO): Define.
5044         (EH_RETURN_STACKADJ_RTX): Define.
5045         * config/nds32/nds32.md (eh_return, nds32_eh_return): Implement
5046         patterns for dwarf exception handling.
5047
5048 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
5049
5050         * config/nds32/nds32.h: Clean up obsolete macros.
5051
5052 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
5053
5054         * config/nds32/constants.md (unspec_element, unspec_volatile_element):
5055         Add enum values for particular instructions.
5056         * config/nds32/nds32-intrinsic.c: Implementation of expanding
5057         particular intrinsic functions.
5058         * config/nds32/nds32-intrinsic.md: Likewise.
5059         * config/nds32/nds32_intrinsic.h: Likewise.
5060         * config/nds32/nds32.h (nds32_builtins): Likewise.
5061         * config/nds32/nds32.md (type): Add pbsad and pbsada.
5062         (btst, ave): New patterns for particular instructions.
5063
5064 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
5065
5066         * config/nds32/constants.md (unspec_element, unspec_volatile_element):
5067         Add enum values for atomic load/store and memory sync.
5068         * config/nds32/nds32-intrinsic.c: Implementation for atomic load/store
5069         and memory sync.
5070         * config/nds32/nds32-intrinsic.md: Likewise.
5071         * config/nds32/nds32_intrinsic.h: Likewise.
5072         * config/nds32/nds32.h (nds32_builtins): Likewise.
5073
5074 2018-04-07  Jakub Jelinek  <jakub@redhat.com>
5075
5076         PR tree-optimization/85257
5077         * fold-const.c (native_encode_vector): If not all elts could fit
5078         and off is -1, return 0 rather than offset.
5079         * tree-ssa-sccvn.c (vn_reference_lookup_3): Pass
5080         (offseti - offset2) / BITS_PER_UNIT as 4th argument to
5081         native_encode_expr.  Verify len * BITS_PER_UNIT >= maxsizei.  Don't
5082         adjust buffer in native_interpret_expr call.
5083
5084 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
5085
5086         * config/nds32/constants.md (unspec_volatile_element): Add cache
5087         control enum values.
5088         * config/nds32/nds32-intrinsic.c: Add cache control expand functions.
5089         * config/nds32/nds32-intrinsic.md: Add cache control patterns.
5090         * config/nds32/nds32.c (nds32_cctl_names): New.
5091         (nds32_print_operand): Handle cache control register names.
5092         * config/nds32/nds32.h (nds32_builtins): New enum values.
5093         * config/nds32/nds32_intrinsic.h: Add cache control enum types and
5094         macros.
5095         * config/nds32/nds32.md (type): Add mmu.
5096         * config/nds32/pipelines.md (simple_insn): Add mmu.
5097
5098 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
5099
5100         * config/nds32/nds32.md (type): Remove call.
5101         * config/nds32/pipelines.md (simple_insn): Likewise.
5102
5103 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
5104
5105         * config/nds32/constants.md (unspec_volatile_element): Add
5106         UNSPEC_VOLATILE_FMFCSR, UNSPEC_VOLATILE_FMTCSR and
5107         UNSPEC_VOLATILE_FMFCFG.
5108         * config/nds32/nds32-intrinsic.c (bdesc_noarg): New builtin
5109         description for fmfcfg and fmfcsr.
5110         (bdesc_1arg): Add fmtcsr.
5111         (bdesc_2arg): Add fcpynss, fcpyss, fcpynsd and fcpysd.
5112         (nds32_expand_builtin_impl): Deal with FPU intrinsic functions.
5113         * config/nds32/nds32-intrinsic.md (unspec_fcpynsd, unspec_fcpysd,
5114         unspec_fcpynss, unspec_fcpysd, unspec_fcpyss, unspec_fmfcsr,
5115         unspec_fmfcfg): New patterns.
5116         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FMFCFG,
5117         NDS32_BUILTIN_FMFCSR, NDS32_BUILTIN_FMTCSR, NDS32_BUILTIN_FCPYNSS,
5118         NDS32_BUILTIN_FCPYSS,NDS32_BUILTIN_FCPYNSD and NDS32_BUILTIN_FCPYSD.
5119         * config/nds32/nds32_intrinsic.h (__nds32__fcpynsd, __nds32__fcpynss,
5120         __nds32__fcpysd, __nds32__fcpyss, __nds32__fmfcsr, __nds32__fmtcsr,
5121         __nds32__fmfcfg): Define.
5122
5123 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
5124
5125         * config/nds32/nds32.c (nds32_intrinsic_register_names): Add more
5126         intrinsic register names.
5127         * config/nds32/nds32_intrinsic.h (nds32_intrinsic_registers): Add more
5128         intrinsic register enum values and macros.
5129
5130 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
5131
5132         * config/nds32/nds32.c (nds32_legitimate_index_p): Modify condition
5133         for load/store addressing form.
5134         (nds32_print_operand_address): Likewise.
5135
5136 2018-04-06  Eric Botcazou  <ebotcazou@adacore.com>
5137
5138         PR target/85196
5139         * config/sparc/sparc.c (sparc_expand_move): Deal with symbolic operands
5140         based on LABEL_REF.  Remove useless assertion.
5141         (pic_address_needs_scratch): Fix formatting.
5142         (sparc_legitimize_pic_address): Minor tweaks.
5143         (sparc_delegitimize_address): Adjust assertion accordingly.
5144         * config/sparc/sparc.md (movsi_pic_label_ref): Change label_ref_operand
5145         into symbolic_operand.
5146         (movsi_high_pic_label_ref): Likewise.
5147         (movsi_lo_sum_pic_label_ref): Likewise.
5148         (movdi_pic_label_ref): Likewise.
5149         (movdi_high_pic_label_ref): Likewise.
5150         (movdi_lo_sum_pic_label_ref): Likewise.
5151
5152 2018-04-06  Amaan Cheval  <amaan.cheval@gmail.com>
5153
5154         * config.gcc (x86_64-*-rtems*): Add rtems.h to tm_file for
5155         custom LIB_SPEC setup.
5156
5157 2018-04-06  Ruslan Bukin  <br@bsdpad.com>
5158             Kito Cheng  <kito.cheng@gmail.com>
5159
5160         * config.gcc (riscv*-*-freebsd*): Add RISC-V FreeBSD support.
5161         * config/riscv/freebsd.h: New.
5162
5163 2018-04-06  Chung-Ju Wu  <jasonwucj@gmail.com>
5164
5165         * config/nds32/nds32.c (nds32_adjust_insn_length): Refine.
5166         * config/nds32/nds32.h (ADJUST_INSN_LENGTH): Change the location in
5167         file.
5168
5169 2018-04-06  Chung-Ju Wu  <jasonwucj@gmail.com>
5170             Kito Cheng  <kito.cheng@gmail.com>
5171
5172         * config/nds32/nds32-md-auxiliary.c (nds32_output_return,
5173         nds32_output_call, nds32_symbol_binds_local_p): New functions.
5174         * config/nds32/nds32-protos.h (nds32_output_call,
5175         nds32_output_return): Declare.
5176         * config/nds32/nds32.md: Refine all the call and return patterns.
5177
5178 2018-04-06  Jakub Jelinek  <jakub@redhat.com>
5179
5180         PR debug/85252
5181         * dwarf2out.c (rtl_for_decl_init): For STRING_CST initializer only
5182         build CONST_STRING if TYPE_MAX_VALUE is non-NULL and is INTEGER_CST.
5183
5184         PR rtl-optimization/84872
5185         * cfgloopmanip.c (create_preheader): Use make_forwarder_block even if
5186         nentry == 1 when CP_FALLTHRU_PREHEADERS and single_entry is
5187         EDGE_CROSSING edge.
5188
5189 2018-04-06  Tamar Christina  <tamar.christina@arm.com>
5190
5191         * expr.c (copy_blkmode_to_reg): Revert 254862.
5192         * doc/sourcebuild.texi (word_mode_no_slow_unalign): Likewise.
5193
5194 2018-04-06  Richard Biener  <rguenther@suse.de>
5195
5196         PR middle-end/85244
5197         * tree-dfa.c (get_ref_base_and_extent): Reset seen_variable_array_ref
5198         after seeing a component reference with an adjacent field.  Treat
5199         refs to arrays at struct end of external decls similar to
5200         refs to unconstrained commons.
5201
5202 2018-04-06  Jakub Jelinek  <jakub@redhat.com>
5203
5204         PR sanitizer/85213
5205         * fold-const.c (twoval_comparison_p): Remove SAVE_P argument and don't
5206         look through SAVE_EXPRs with non-side-effects argument.  Adjust
5207         recursive calls.
5208         (fold_comparison): Adjust twoval_comparison_p caller, don't handle
5209         save_p here.
5210
5211 2018-04-06  Richard Biener  <rguenther@suse.de>
5212
5213         PR middle-end/85180
5214         * alias.c (find_base_term): New wrapper around find_base_term
5215         unwinding CSELIB_VAL_PTR changes.
5216         (find_base_term): Do not restore CSELIB_VAL_PTR during the
5217         recursion.
5218
5219 2018-04-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
5220
5221         * config/s390/s390.c (s390_z10_optimize_cmp): Expand dedicated NOP
5222         instructions.
5223         * config/s390/s390.md (UNSPECV_NOP_LR_0, UNSPECV_NOP_LR_1): New
5224         constant definitions.
5225         ("nop"): lr 0,0 -> nopr r0
5226         ("nop_lr0", "nop_lr1"): New insn definitions.
5227
5228 2018-04-06  Chung-Ju Wu  <jasonwucj@gmail.com>
5229
5230         * config/nds32/nds32.md (*stack_push, *stack_pop): Use
5231         NDS32_V3PUSH_AVAILABLE_P macro.
5232
5233 2018-04-06  Monk Chiang  <sh.chiang04@gmail.com>
5234             Chung-Ju Wu  <jasonwucj@gmail.com>
5235
5236         * config.gcc (nds32*-*-*): Add v2j v3f v3s checking.
5237         (nds32*-*-*): Add float and fpu_config into supported_defaults.
5238         * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS):
5239         Include TARGET_DEFAULT_FPU_ISA and TARGET_DEFAULT_FPU_FMA.
5240         * config/nds32/constants.md (unspec_element): Add UNSPEC_COPYSIGN,
5241         UNSPEC_FCPYNSD, UNSPEC_FCPYNSS, UNSPEC_FCPYSD and UNSPEC_FCPYSS.
5242         * config/nds32/constraints.md: New constraints and checking for hard
5243         float configuration.
5244         * config/nds32/iterators.md: New mode iterator and attribute for hard
5245         float configuration.
5246         * config/nds32/nds32-doubleword.md: Use hard float alternatives and
5247         patterns.
5248         * config/nds32/nds32-fpu.md: New file.
5249         * config/nds32/nds32-md-auxiliary.c: New functions and checkings to
5250         deal with hard float code generation.
5251         * config/nds32/nds32-opts.h (nds32_arch_type): Add ARCH_V3F and
5252         ARCH_V3S.
5253         (abi_type, float_reg_number): New enum type.
5254         * config/nds32/nds32-predicates.c: New predicates for hard float.
5255         * config/nds32/nds32-protos.h: Declare functions for hard float.
5256         * config/nds32/nds32.c: Implementation for hard float configuration.
5257         * config/nds32/nds32.h: Definitions for hard float configuration.
5258         * config/nds32/nds32.md: Include hard float machine description and
5259         modify patterns for hard float configuration.
5260         * config/nds32/nds32.opt: New options for hard float configuration.
5261         * config/nds32/predicates.md: New predicates for hard float
5262         configuration.
5263
5264 2018-04-06  Kuan-Lin Chen  <kuanlinchentw@gmail.com>
5265
5266         * common/config/nds32/nds32-common.c
5267         (nds32_option_optimization_table): Enable -mreleax-hint by default.
5268
5269 2018-04-05  Jakub Jelinek  <jakub@redhat.com>
5270
5271         PR middle-end/85195
5272         * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Use view_convert around
5273         CONSTRUCTOR_ELT (ctor, ...)->value.
5274
5275 2018-04-05  Uros Bizjak  <ubizjak@gmail.com>
5276
5277         PR target/85193
5278         * config/i386/i386.md (define_attr "memory"): Handle rotate1 type.
5279
5280 2018-04-05  Tom de Vries  <tom@codesourcery.com>
5281
5282         PR target/85204
5283         * config/nvptx/nvptx.c (nvptx_single): Fix neutering of bb with only
5284         cond jump.
5285
5286 2018-04-05  Shiva Chen  <shiva0217@gmail.com>
5287             Kito Cheng  <kito.cheng@gmail.com>
5288
5289         * config/nds32/constraints.md (U33): Fine-tune checking condition.
5290         * config/nds32/nds32-md-auxiliary.c (nds32_mem_format): Ditto.
5291         * config/nds32/nds32.h (nds32_16bit_address_type): Add
5292         ADDRESS_POST_MODIFY_LO_REG_IMM3U.
5293
5294 2018-04-05  Shiva Chen  <shiva0217@gmail.com>
5295             Kito Cheng  <kito.cheng@gmail.com>
5296
5297         * config/nds32/constraints.md (Ufe): New memory constraint.
5298         * config/nds32/nds32-md-auxiliary.c (nds32_mem_format,
5299         nds32_output_16bit_load): Consider r8 register for lwi45.fe format.
5300         * config/nds32/nds32.c (nds32_print_operand): Output lwi45.fe
5301         operands.
5302         * config/nds32/nds32.h (nds32_16bit_address_type): Add ADDRESS_R8_IMM7U.
5303         * config/nds32/nds32.md (*mov<mode>): Adjust pattern.
5304
5305 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
5306
5307         * config/nds32/nds32.md: Use optimize_size in the condition for
5308         alu-shift instructions.
5309
5310 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
5311
5312         * config/nds32/nds32.md (divsi4, udivsi4): New patterns.
5313
5314 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
5315
5316         * config/nds32/nds32.md (negsi2): Refine pattern.
5317
5318 2018-04-05  Kito Cheng  <kito.cheng@gmail.com>
5319             Chung-Ju Wu  <jasonwucj@gmail.com>
5320
5321         * config/nds32/iterators.md (shift_rotate): New code iterator.
5322         (shift): New code attribute.
5323         * config/nds32/nds32-md-auxiliary.c (nds32_expand_constant): New.
5324         * config/nds32/nds32-protos.h (nds32_expand_constant): Declare.
5325         * config/nds32/nds32.c (nds32_print_operand): Deal with more cases.
5326         * config/nds32/nds32.md (addsi3, *add_srli): Refine implementation for
5327         bit-wise operations.
5328         (andsi3, *andsi3): Ditto.
5329         (iorsi3, *iorsi3, *or_slli, *or_srli): Ditto.
5330         (xorsi3, *xorsi3, *xor_slli, *xor_srli): Ditto.
5331         (<shift>si3, *ashlsi3, *ashrsi3, *lshrsi3, *rotrsi3): Ditto.
5332         * config/nds32/predicates.md (nds32_rimm5u_operand, nds32_and_operand,
5333         nds32_ior_operand, nds32_xor_operand): New predicates.
5334
5335 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
5336
5337         * config/nds32/nds32.md (add<mode>3, sub<mode>3): Rename to ...
5338         (addsi3, subsi3): ... this.
5339
5340 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
5341
5342         * config/nds32/nds32.md (*sub_srli, *and_slli): Fine-tune predicator.
5343
5344 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
5345
5346         * config/nds32/nds32.md: Adjust indention.
5347
5348 2018-04-05  Kito Cheng  <kito.cheng@gmail.com>
5349
5350         * config/nds32/nds32.md (feature): New attribute.
5351
5352 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
5353
5354         * config/nds32/nds32.md (subtype): New attribute.
5355
5356 2018-04-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>
5357
5358         PR target/85203
5359         * config/arm/arm-builtins.c (arm_expand_builtin): Change
5360         expansion to perform a bitwise AND of the argument followed by a
5361         boolean negation of the result.
5362
5363 2018-04-04  Peter Bergner  <bergner@vnet.ibm.com>
5364
5365         PR rtl-optimization/84878
5366         * ddg.c (add_cross_iteration_register_deps): Use DF_REF_BB to determine
5367         the basic block.  Assert the use reference is not artificial and that
5368         it has an associated insn.
5369
5370 2018-04-04  Michael Matz  <matz@suse.de>
5371
5372         * builtins.c (compute_objsize): Pass correct operand
5373         to array_at_struct_end_p.
5374
5375 2018-04-04  Richard Biener  <rguenther@suse.de>
5376
5377         PR lto/85176
5378         * dwarf2out.c (dwarf2out_register_external_die): Peel namespaces
5379         from contexts for DINFO_LEVEL_TERSE and below.
5380
5381 2018-04-04  Kito Cheng  <kito.cheng@gmail.com>
5382
5383         * config/nds32/nds32-doubleword.md (move_<mode>): Require
5384         resiter_operand condition.
5385         * config/nds32/nds32.md (*move<mode>): Ditto.
5386
5387 2018-04-04  Kito Cheng  <kito.cheng@gmail.com>
5388             Monk Chiang  <sh.chiang04@gmail.com>
5389
5390         * config/nds32/nds32.md (movmisalign<mode>): New pattern.
5391
5392 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
5393
5394         * config/nds32/nds32.md (movqi, movhi): Merge into mov<mode>.
5395
5396 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
5397             Kito Cheng  <kito.cheng@gmail.com>
5398
5399         * config/nds32/nds32-md-auxiliary.c (nds32_inverse_cond_code,
5400         nds32_cond_code_str, output_cond_branch,
5401         output_cond_branch_compare_zero, nds32_expand_cbranch,
5402         nds32_expand_cstore, nds32_expand_movcc,
5403         nds32_output_cbranchsi4_equality_zero,
5404         nds32_output_cbranchsi4_equality_reg,
5405         nds32_output_cbranchsi4_equality_reg_or_const_int,
5406         nds32_output_cbranchsi4_greater_less_zero: New functions.
5407         * config/nds32/nds32-protos.h (nds32_expand_cbranch,
5408         nds32_expand_cstore, nds32_expand_movcc,
5409         nds32_output_cbranchsi4_equality_zero,
5410         nds32_output_cbranchsi4_equality_reg,
5411         nds32_output_cbranchsi4_equality_reg_or_const_int,
5412         nds32_output_cbranchsi4_greater_less_zero): Declare.
5413         * config/nds32/predicates.md (nds32_movecc_comparison_operator,
5414         nds32_rimm11s_operand): New predicates.
5415         * config/nds32/nds32.h (nds32_expand_result_type): New enum type.
5416         * config/nds32/nds32.md: Rewrite all the branch and conditional move
5417         patterns.
5418
5419 2018-04-04  Kito Cheng  <kito.cheng@gmail.com>
5420
5421         * config/nds32/nds32-doubleword.md: Refine all the instruction type.
5422         * config/nds32/nds32.md: Ditto.
5423         * config/nds32/pipelines.md: Ditto.
5424
5425 2018-04-04  Richard Biener  <rguenther@suse.de>
5426
5427         PR tree-optimization/85168
5428         * tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address): Avoid
5429         propagating abnormals.
5430
5431 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
5432
5433         * config/nds32/nds32.md (enabled): Use yes/no for this attribute.
5434
5435 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
5436             Kito Cheng  <kito.cheng@gmail.com>
5437
5438         * config/nds32/nds32-md-auxiliary.c (nds32_long_call_p): New function.
5439         * config/nds32/nds32-protos.h (nds32_long_call_p): Declare.
5440         * config/nds32/nds32.c (nds32_function_ok_for_sibcall): New function.
5441         (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
5442         * config/nds32/nds32.md (sibcall_internal): New.
5443         (sibcall_register): Remove.
5444         (sibcall_immediate): Remove.
5445         (sibcall_value_internal): New.
5446         (sibcall_value_register): Remove.
5447         (sibcall_value_immediate): Remove.
5448         * config/nds32/predicates.md (nds32_general_register_operand): New.
5449         (nds32_call_address_operand): New.
5450
5451 2018-04-03  Jakub Jelinek  <jakub@redhat.com>
5452
5453         PR rtl-optimization/85167
5454         * shrink-wrap.c (move_insn_for_shrink_wrap): Don't set bb_uses and
5455         bb_defs if *split_p, instead preinitialize it to NULL.
5456
5457         PR tree-optimization/85156
5458         * builtins.c (fold_builtin_expect): Use save_expr on arg1 to avoid
5459         evaluating the argument multiple times.
5460
5461 2018-04-03  Bill Schmidt  <wschmidt@linux.ibm.com>
5462
5463         * config/rs6000/emmintrin.h (_mm_cvtpd_epi32): Use __vector rather
5464         than vector.
5465         (_mm_cvtpd_ps): Likewise.
5466         (_mm_cvttpd_epi32): Likewise.
5467         * config/rs6000/mmintrin.h (_mm_unpacklo_pi8): Likewise.
5468         * config/rs6000/xmmintrin.h: For strict-ANSI C++ or C11, undefine
5469         vector, pixel, and bool following altivec.h include.
5470
5471 2018-04-03  Martin Sebor  <msebor@redhat.com>
5472
5473         * doc/extend.texi (Common Function Attributes): Clarify.
5474         (const attribute): Likewise.
5475         (pure attribute): Likewise.
5476
5477 2018-04-03  Jakub Jelinek  <jakub@redhat.com>
5478
5479         PR target/85169
5480         * config/i386/i386.c (ix86_expand_vector_set): Use
5481         HOST_WIDE_INT_1U << elt instead of 1 << elt.  Formatting fix.
5482
5483 2018-04-03  Uros Bizjak  <ubizjak@gmail.com>
5484
5485         * config/i386/i386.c (emit_i387_cw_initialization): Always use logic
5486         instructions when changing rounding bits to preserve precision bits
5487         in the x87 control word.
5488
5489 2018-04-03  Martin Liska  <mliska@suse.cz>
5490
5491         PR tree-optimization/82491
5492         * rtl.h (strip_offset_and_add): Replace += suboffset with
5493         poly_uint64 () + suboffset.
5494
5495 2018-03-29  Martin Liska  <mliska@suse.cz>
5496             Martin Jambor  <mjambor@suse.cz>
5497
5498         PR ipa/84947
5499         * ipa-cp.c (propagate_bits_across_jump_function): Bail out if
5500         param_type is not an integral or pointer type.
5501
5502 2018-04-03  Richard Biener  <rguenther@suse.de>
5503
5504         * sese.h (recompute_all_dominators): Remove.
5505
5506 2018-04-02  Martin Sebor  <msebor@redhat.com>
5507
5508         * doc/invoke.texi (-Wrestrict): Fix typos.
5509
5510 2018-04-02  Jim Wilson  <jimw@sifive.com>
5511
5512         * config/riscv/riscv.h (SHIFT_COUNT_TRUNCATED): Set to zero.
5513         * config/riscv/riscv.md (<optab>si3): Use QImode shift count.
5514         (<optab>di3, <optab>si3_extend): Likewise.
5515         (<optab>si3_mask, <optab>si3_mask_1): New.
5516         (<optab>di3_mask, <optab>di3_mask_1): New.
5517         (<optab>si3_extend_mask, <optab>si3_extend_mask_1): New.
5518         (lshrsi3_zero_extend_1): Use VOIDmode shift count.
5519         * config/riscv/sync.md (atomic_test_and_set): Emit QImode shift count.
5520
5521 2018-04-02  Gerald Pfeifer  <gerald@pfeifer.com>
5522
5523         * doc/cpp.texi (Variadic Macros): Fix line continuation in an
5524         example.
5525
5526 2018-04-02  Chung-Ju Wu  <jasonwucj@gmail.com>
5527
5528         * config/nds32/nds32.c (TARGET_CANONICALIZE_COMPARISON): Define.
5529         (nds32_canonicalize_comparison): New function.
5530
5531 2018-04-01  Chung-Ju Wu  <jasonwucj@gmail.com>
5532             Kito Cheng  <kito.cheng@gmail.com>
5533             Kuan-Lin Chen  <kuanlinchentw@gmail.com>
5534
5535         * config.gcc (nds32): Add nds32-relax-opt.o into extra_objs.
5536         * config/nds32/constants.md (unspec_volatile_element): Add
5537         UNSPEC_VOLATILE_RELAX_GROUP.
5538         * config/nds32/nds32-relax-opt.c: New file.
5539         * config/nds32/nds32-predicates.c
5540         (nds32_symbol_load_store_p): New function.
5541         * config/nds32/nds32-protos.h
5542         (nds32_symbol_load_store_p): Declare function.
5543         (make_pass_nds32_relax_opt): Declare new rtl pass function.
5544         * config/nds32/nds32.c
5545         (nds32_register_pass): New function to register pass.
5546         (nds32_register_passes): New function to register passes.
5547         * config/nds32/nds32.md (relax_group): New pattern.
5548         * config/nds32/nds32.opt (mrelax-hint): New option.
5549         * config/nds32/t-nds32 (nds32-relax-opt.o): New dependency.
5550
5551 2018-04-01  Kito Cheng  <kito.cheng@gmail.com>
5552
5553         * config/nds32/t-nds32: Modify files dependency.
5554
5555 2018-04-01  Chung-Ju Wu  <jasonwucj@gmail.com>
5556
5557         * config/nds32/nds32.h (FUNCTION_PROFILER): Output newline character.
5558         (PROFILE_HOOK): Define its implementation.
5559
5560 2018-04-01  Chung-Ju Wu  <jasonwucj@gmail.com>
5561
5562         * config/nds32/nds32.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Use unsigned int
5563         type and 32-bit size.
5564
5565 2018-04-01  Jakub Jelinek  <jakub@redhat.com>
5566
5567         PR middle-end/85090
5568         * config/i386/sse.md (V): Add V64QI and V32HI for TARGET_AVX512F.
5569         (V_128_256): New mode iterator.
5570         (*avx512dq_vextract<shuffletype>64x2_1 splitter): New define_split.
5571         (*avx512f_vextract<shuffletype>32x4_1 splitter): Likewise.
5572         (xop_pcmov_<mode><avxsizesuffix>): Use V_128_256 mode iterator instead
5573         of V.
5574         * config/i386/i386.c (ix86_expand_vector_set): Improve V32HImode and
5575         V64QImode expansion for !TARGET_AVX512BW && TARGET_AVX512F.
5576
5577 2018-03-31  Segher Boessenkool  <segher@kernel.crashing.org>
5578
5579         PR target/83315
5580         * config/rs6000/xmmintrin.h (_mm_set_ps, _mm_max_ps): Handle (quiet)
5581         NaN inputs correctly.
5582
5583 2018-03-30  Peter Bergner  <bergner@vnet.ibm.com>
5584
5585         PR target/80546
5586         * config/rs6000/vsx.md (??r): New mode attribute.
5587         (*vsx_mov<mode>_64bit): Use it.
5588         (*vsx_mov<mode>_32bit): Likewise.
5589
5590 2018-03-30  Martin Sebor  <msebor@redhat.com>
5591
5592         PR tree-optimization/84818
5593         * builtins.c (check_access): Use warning_n.
5594
5595 2018-03-30  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
5596
5597         PR target/83822
5598         * config/rs6000/rs6000-string.c (expand_compare_loop): Fix redundant
5599         condition.
5600         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Fix redundant
5601         condition.
5602
5603 2018-03-30  Julia Koval  <julia.koval@intel.com>
5604
5605         PR target/84413
5606         * x86-tune.def (movx, partial_reg_dependency): Enable for
5607         m_SKYLAKE_AVX512.
5608
5609 2018-03-29  Vladimir Makarov  <vmakarov@redhat.com>
5610
5611         PR inline-asm/84985
5612         * lra-constraints.c (process_alt_operands): Move setting
5613         this_alternative_matches below.
5614
5615 2018-03-29  Martin Liska  <mliska@suse.cz>
5616
5617         PR lto/84995.
5618         * doc/invoke.texi: Document how LTO works with debug info.
5619         Describe auto-load support of binutils.  Mention 'x86-64'
5620         as valid option value of -march option.
5621
5622 2018-03-29  Jakub Jelinek  <jakub@redhat.com>
5623
5624         * config/i386/sse.md (<avx512>_blendm<mode>): Use <sseintprefix>.
5625
5626         PR c/85094
5627         * fold-const.c (operand_equal_p): Handle DEBUG_BEGIN_STMT.
5628         For STATEMENT_LIST, pass down OEP_LEXICOGRAPHIC and maybe
5629         OEP_NO_HASH_CHECK for recursive call, to avoid exponential
5630         checking.
5631
5632 2018-03-28  Peter Bergner  <bergner@vnet.ibm.com>
5633
5634         PR target/84912
5635         * config/rs6000/rs6000.h (RS6000_BTM_POWERPC64): New define.
5636         (RS6000_BTM_COMMON): Add RS6000_BTM_POWERPC64.
5637         * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add support
5638         for RS6000_BTM_POWERPC64.
5639         (rs6000_invalid_builtin): Add handling for RS6000_BTM_POWERPC64
5640         (rs6000_builtin_mask_names): Add RS6000_BTM_POWERPC64.
5641         * config/rs6000/rs6000-builtin.def (BU_P7_POWERPC64_MISC_2): New macro
5642         definition.
5643         (DIVDE): Use it.
5644         (DIVDEU): Likewise.
5645
5646 2018-03-28 Carl Love  <cel@us.ibm.com>
5647
5648         Revert
5649         2017-09-27  Carl Love  <cel@us.ibm.com>
5650
5651         * config/rs6000/rs6000-builtin.def (BU_FP_1MISC_1): Add define macro.
5652         (FCTID, FCTIW): Add BU_FP_MISC_1 macro expansion for builtins.
5653         * config/rs6000/rs6000.md (lrintsfsi2): Add define_insn for the
5654         fctiw instruction.
5655
5656 2018-03-28  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
5657
5658         * config/rs6000/xmmintrin.h (_mm_max_pi16): Use __vector __bool
5659         instead of __vector bool.
5660         (_mm_max_pu8): Likewise.
5661         (_mm_min_pi16): Likewise.
5662
5663 2018-03-28  Peter Bergner  <bergner@vnet.ibm.com>
5664
5665         PR target/84912
5666         * config/rs6000/rs6000-builtin.def (DIVWEO): Delete macro expansion.
5667         (DIVWEUO): Likewise.
5668         (DIVDEO): Likewise.
5669         (DIVDEUO): Likewise.
5670         * config/rs6000/rs6000.c (builtin_function_type): Remove support for
5671         DIVWEUO and DIVDEUO.
5672         * config/rs6000/rs6000.md (UNSPEC_DIVEO, UNSPEC_DIVEUO): Delete unspecs.
5673         (UNSPEC_DIV_EXTEND): Remove deleted unspecs.
5674         (div_extend): Likewise.
5675         * doc/extend.texi (__builtin_divweo): Remove documentation for deleted
5676         builtin function.
5677         (__builtin_divweuo): Likewise.
5678         (__builtin_divdeo): Likewise.
5679         (__builtin_divdeuo): Likewise.
5680
5681 2018-03-28  Jakub Jelinek  <jakub@redhat.com>
5682
5683         PR target/85095
5684         * config/i386/i386.md (*add<mode>3_carry_0, *addsi3_carry_zext_0,
5685         *sub<mode>3_carry_0, *subsi3_carry_zext_0): New patterns.
5686
5687         PR tree-optimization/82004
5688         * gimple-match-head.c (optimize_pow_to_exp): New function.
5689         * match.pd (pow(C,x) -> exp(log(C)*x)): Wrap with #if GIMPLE.
5690         Don't fold to exp if optimize_pow_to_exp is false.
5691
5692 2018-03-28  Martin Liska  <mliska@suse.cz>
5693
5694         PR other/84819
5695         * calls.c (initialize_argument_information): Fix trailing space.
5696         * common.opt: Fix typo and provide better explanation for
5697         -fsanitize-coverage option.
5698         * config/i386/i386.opt: Fix typo.
5699
5700 2018-03-28  Jakub Jelinek  <jakub@redhat.com>
5701             Martin Liska  <mliska@suse.cz>
5702
5703         PR sanitizer/85081
5704         * gimplify.c (asan_poison_variable): Don't do the check for
5705         gimplify_omp_ctxp here.
5706         (gimplify_decl_expr): Do it here.
5707         (gimplify_target_expr): Likewise.
5708
5709 2018-03-28  Martin Liska  <mliska@suse.cz>
5710
5711         PR target/84988
5712         * config/i386/i386.c (ix86_function_arg_advance): Do not call
5713         chkp_type_bounds_count if MPX is not enabled.
5714
5715 2018-03-27  Chung-Ju Wu  <jasonwucj@gmail.com>
5716
5717         * config/nds32/nds32.h (BRANCH_COST): Adjust cost.
5718
5719 2018-03-27  Michael Meissner  <meissner@linux.vnet.ibm.com>
5720
5721         PR target/84914
5722         * config/rs6000/rs6000.c (create_complex_muldiv): New helper
5723         function to create the function decl for complex long double
5724         multiply and divide for -mabi=ieeelongdouble.
5725         (init_float128_ieee): Call it.
5726
5727 2018-03-27  H.J. Lu  <hongjiu.lu@intel.com>
5728
5729         PR target/85044
5730         * config/i386/i386.c (ix86_trampoline_init): Insert ENDBR for
5731         -fcf-protection=branch -mibt.
5732         * config/i386/i386.h (TRAMPOLINE_SIZE): Increased by 4 bytes.
5733
5734 2018-03-27  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
5735
5736         PR target/81863
5737         * config/arm/arm.c (arm_valid_symbolic_address): Handle arm_word_relocations
5738
5739 2018-03-27  Cesar Philippidis  <cesar@codesourcery.com>
5740
5741         PR target/85056
5742         * config/nvptx/nvptx.c (nvptx_assemble_decl_begin): Add '[]' to
5743         extern array declarations.
5744
5745 2018-03-27  Richard Biener  <rguenther@suse.de>
5746
5747         PR middle-end/84067
5748         * match.pd ((A * C) +- (B * C) -> (A+-B) * C): Guard with
5749         explicit single_use checks.
5750
5751 2018-03-27  Richard Biener  <rguenther@suse.de>
5752
5753         PR tree-optimization/85082
5754         * tree-ssa-sccvn.c (vn_reference_lookup_or_insert_for_pieces):
5755         Valueize the VUSE.
5756
5757 2018-03-27  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
5758
5759         * config.gcc (aarch64*-*-linux*): New TARGET_DEFAULT_ASYNC_UNWIND_TABLES
5760         * common/config/aarch64/aarch64-common.c (aarch64_optimization_table[]):
5761         Turn on fasynchronous-unwind-tables and funwind-tables.
5762
5763 2018-03-26  Uros Bizjak  <ubizjak@gmail.com>
5764
5765         PR target/85073
5766         * config/i386/i386.md (*bmi_blsr_<mode>_cmp): New insn pattern.
5767         (*bmi_blsr_<mode>_ccz): Ditto.
5768
5769 2018-03-26  Tom de Vries  <tom@codesourcery.com>
5770
5771         PR tree-optimization/85063
5772         * omp-general.c (offloading_function_p): New function.  Factor out
5773         of ...
5774         * omp-offload.c (pass_omp_target_link::gate): ... here.
5775         * omp-general.h (offloading_function_p): Declare.
5776         * tree-switch-conversion.c (build_one_array): Mark CSWTCH.x variable
5777         with attribute omp declare target for offloading functions.
5778
5779 2018-03-24  Richard Sandiford  <richard.sandiford@linaro.org>
5780
5781         PR tree-optimization/84005
5782         * tree-data-ref.h (get_base_for_alignment): Declare.
5783         * tree-data-ref.c (get_base_for_alignment_1): New function.
5784         (get_base_for_alignment): Likewise.
5785         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Use
5786         get_base_for_alignment to find a suitable base object, instead
5787         of always using drb->base_address.
5788
5789 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
5790
5791         PR inline-asm/85022
5792         * emit-rtl.c (init_emit_regs): Indicate that VOIDmode MEMs don't have
5793         known size by default.
5794
5795 2018-03-23  Vladimir Makarov  <vmakarov@redhat.com>
5796
5797         PR inline-asm/85030
5798         * lra-constraints.c (process_alt_operands): Don't match BLKmode
5799         and non BLKmode operands.
5800
5801 2018-03-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5802
5803         PR target/85026
5804         * config/arm/arm.md (unaligned_loadhis): Remove first alternative.
5805         Clean up attributes.
5806
5807 2018-03-23  Richard Biener  <rguenther@suse.de>
5808
5809         PR debug/85020
5810         * dwarf2out.c (rtl_for_decl_location): Do not generate RTL early when
5811         we are going to emit early debug for LTO.
5812
5813 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
5814
5815         PR inline-asm/85034
5816         * function.c (match_asm_constraints_1): Don't optimize if input
5817         doesn't satisfy general_operand predicate for output's mode.
5818
5819         PR inline-asm/85022
5820         * alias.c (write_dependence_p): Don't require for x_canonicalized
5821         non-VOIDmode if x has VOIDmode.
5822
5823         PR sanitizer/85029
5824         * sanopt.c (maybe_optimize_ubsan_ptr_ifn): If DECL_REGISTER (base),
5825         just don't try to optimize it rather than assert it never happens.
5826
5827 2018-03-22  Kelvin Nilsen  <kelvin@gcc.gnu.org>
5828
5829         * config/rs6000/rs6000-builtin.def: Remove various BU_ALTIVEC_X
5830         macro expansions for definition of ST_INTERNAL_<mode> and
5831         LD_INTERNAL_<mode> builtins.
5832         * config/rs6000/rs6000-protos.h (rs6000_address_for_altivec):
5833         Remove prototype.
5834         * config/rs6000/rs6000.c (altivec_expand_ld_builtin): Delete this
5835         function.
5836         (altivec_expand_st_builtin): Likewise.
5837         (altivec_expand_builtin): Remove calls to deleted functions.
5838         (rs6000_address_for_altivec): Delete this function.
5839         * config/rs6000/vector.md: Remove expands for
5840         vector_altivec_load_<mode> and vector_altivec_store_<mode>.
5841
5842 2018-03-22  Sudakshina Das  <sudi.das@arm.com>
5843
5844         PR target/84826
5845         * config/arm/arm.h (machine_function): Add static_chain_stack_bytes.
5846         * config/arm/arm.c (arm_compute_static_chain_stack_bytes): Avoid
5847         re-computing once computed.
5848         (arm_expand_prologue): Compute machine->static_chain_stack_bytes.
5849         (arm_init_machine_status): Initialize
5850         machine->static_chain_stack_bytes.
5851
5852 2018-03-22  Kelvin Nilsen  <kelvin@gcc.gnu.org>
5853
5854         PR target/84760
5855         * doc/extend.texi: Add four new prototypes for vec_ld.
5856         * config/rs6000/rs6000-builtin.def (LVX_V1TI): Reorder symbol
5857         definitions for more logical presentation.
5858         * config/rs6000/rs6000-c.c: (altivec_overloaded_builtins): Add
5859         entries for V1TI variants of __builtin_altivec_ld builtin.
5860         * config/rs6000/rs6000.c: (altivec_expand_lv_builtin): Add test and
5861         handling of V1TI variant of LVX icode pattern.
5862         (altivec_expand_builtin): Add case for ALTIVEC_BUILTIN_LVX_V1TI.
5863         (rs6000_gimple_fold_builtin): Likewise.
5864         (altivec_init_builtins): Add code to define
5865         __builtin_altivec_lvx_v1ti function.
5866
5867 2018-03-22  Jakub Jelinek  <jakub@redhat.com>
5868
5869         PR inline-asm/84941
5870         * function.c (match_asm_constraints_1): Don't do the optimization
5871         if input isn't a REG, SUBREG, MEM or constant.
5872
5873 2018-03-22  Tom de Vries  <tom@codesourcery.com>
5874
5875         PR tree-optimization/84956
5876         * tree-ssa-tail-merge.c (find_clusters_1): Skip bbs with
5877         bb_has_abnormal_pred.
5878
5879 2018-03-22  Jakub Jelinek  <jakub@redhat.com>
5880
5881         PR sanitizer/85018
5882         * dwarf2asm.c (dw2_output_indirect_constant_1): Set
5883         DECL_INITIAL (decl) to decl at the end.
5884         * varasm.c (use_blocks_for_decl_p): Revert the 2018-03-20 change,
5885         adjust the comment.
5886
5887 2018-03-21  Joseph Myers  <joseph@codesourcery.com>
5888
5889         * doc/extend.texi (__builtin_tgmath): Document when complex
5890         integer types are treated as _Complex _Float64.
5891
5892 2018-03-21  Tom de Vries  <tom@codesourcery.com>
5893
5894         * doc/extend.texi (__builtin_extend_pointer): Remove pasto.
5895
5896 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
5897
5898         PR tree-optimization/84960
5899         * tree-cfg.c (remove_bb): Don't move forced labels into bb->prev_bb
5900         if it is ENTRY block, move them into single succ of ENTRY in that case.
5901
5902 2018-03-21  Richard Sandiford  <richard.sandiford@linaro.org>
5903
5904         PR tree-optimization/84811
5905         * poly-int.h (poly_span_traits): Remove the T3 parameter and
5906         promote HOST_WIDE_INT T2 - T1 results to unsigned HOST_WIDE_INT.
5907         (maybe_in_range_p, known_in_range_p, ranges_known_overlap_p):
5908         (known_subrange_p): Update accordingly.  Cast each value involved
5909         in the size comparison, rather than casting the result of the
5910         subtraction.
5911
5912 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
5913
5914         PR tree-optimization/84982
5915         * gimple-ssa-store-merging.c (invert_op): Handle boolean inversion
5916         by flipping the least significant bit rather than all bits from
5917         bitpos to bitpos + bitsize - 1.
5918
5919 2018-03-21  Nathan Sidwell  <nathan@acm.org>
5920
5921         * doc/extend.texi (Deprecated Features): Remove mention of
5922         long-deleted deprecations.
5923
5924 2018-03-21  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
5925
5926         PR jit/84288
5927         * configure.ac (gcc_cv_ld_soname) <*-*-solaris2*>: Set.
5928         * configure: Regenerate.
5929
5930 2018-03-21  Tom de Vries  <tom@codesourcery.com>
5931
5932         PR tree-optimization/83126
5933         * tree-parloops.c (num_phis): New function.
5934         (gen_parallel_loop): Detect and handle canonicalize_loop_ivs failure.
5935
5936 2018-03-21  Nathan Sidwell  <nathan@acm.org>
5937
5938         * doc/extend.texi (Deprecated Features): Update deprecated flags,
5939         mention anon-struct/union members and trailing attributes.
5940
5941 2018-03-21  Bin Cheng  <bin.cheng@arm.com>
5942
5943         PR tree-optimization/84969
5944         * tree-loop-distribution.c (fuse_memset_builtins): Don't reorder
5945         builtin memset partitions if they set different rhs values.
5946
5947 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
5948
5949         PR rtl-optimization/84989
5950         * simplify-rtx.c (simplify_unary_operation_1): Don't try to simplify
5951         VEC_DUPLICATE with scalar result mode.
5952
5953 2018-03-21  Martin Liska  <mliska@suse.cz>
5954
5955         PR ipa/84963
5956         * ipa-icf.c (sem_item_optimizer::fixup_points_to_sets): Remove
5957         not intended return statement.
5958
5959 2018-03-21  Martin Liska  <mliska@suse.cz>
5960
5961         PR target/84988
5962         * tree-chkp.c (CHKP_ARRAY_MAX_CHECK_STEPS): Define a new macro.
5963         (chkp_find_bound_slots_1): Limit number of iterations.
5964
5965 2018-03-20  David H. Gutteridge  <dhgutteridge@sympatico.ca>
5966
5967         PR target/84838
5968         * Minor grammar fixes for x86 options.
5969
5970 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
5971
5972         PR debug/84875
5973         * dce.c (delete_unmarked_insns): Don't remove frame related noop moves
5974         holding REG_CFA_RESTORE notes, instead turn them into a USE.
5975
5976 2018-03-20  Peter Bergner  <bergner@vnet.ibm.com>
5977
5978         PR target/83789
5979         * config/rs6000/altivec.md (altivec_lvx_<mode>_2op): Delete define_insn.
5980         (altivec_lvx_<mode>_1op): Likewise.
5981         (altivec_stvx_<mode>_2op): Likewise.
5982         (altivec_stvx_<mode>_1op): Likewise.
5983         (altivec_lvx_<VM2:mode>): New define_expand.
5984         (altivec_stvx_<VM2:mode>): Likewise.
5985         (altivec_lvx_<VM2:mode>_2op_<P:mptrsize>): New define_insn.
5986         (altivec_lvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
5987         (altivec_stvx_<VM2:mode>_2op_<P:mptrsize>): Likewise.
5988         (altivec_stvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
5989         * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Use new expanders.
5990         (rs6000_gen_lvx): Likewise.
5991         * config/rs6000/rs6000.c (altivec_expand_lv_builtin): Likewise.
5992         (altivec_expand_stv_builtin): Likewise.
5993         (altivec_expand_builtin): Likewise.
5994         * config/rs6000/vector.md: Likewise.
5995
5996 2018-03-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5997
5998         PR target/82518
5999         * config/arm/arm.c (arm_array_mode_supported_p): Return false for
6000         BYTES_BIG_ENDIAN.
6001
6002 2018-03-20  Richard Biener  <rguenther@suse.de>
6003
6004         PR target/84986
6005         * config/i386/i386.c (ix86_add_stmt_cost): Only cost
6006         sign-conversions as zero, fall back to standard scalar_stmt
6007         cost for the rest.
6008
6009 2018-03-20  Martin Liska  <mliska@suse.cz>
6010
6011         PR ipa/84825
6012         * predict.c (rebuild_frequencies): Handle case when we have
6013         PROFILE_ABSENT, but flag_guess_branch_prob is false.
6014
6015 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
6016
6017         PR target/84990
6018         * dwarf2asm.c (dw2_output_indirect_constant_1): Temporarily turn off
6019         flag_section_anchors.
6020         * varasm.c (use_blocks_for_decl_p): Remove hack for
6021         dw2_force_const_mem.
6022
6023         PR target/84845
6024         * config/aarch64/aarch64.md (*aarch64_reg_<mode>3_neg_mask2): Rename
6025         to ...
6026         (*aarch64_<optab>_reg_<mode>3_neg_mask2): ... this.  If pseudos can't
6027         be created, use lowpart_subreg of operands[0] rather than operands[0]
6028         itself.
6029         (*aarch64_reg_<mode>3_minus_mask): Rename to ...
6030         (*aarch64_ashl_reg_<mode>3_minus_mask): ... this.
6031         (*aarch64_<optab>_reg_di3_mask2): Use const_int_operand predicate
6032         and n constraint instead of aarch64_shift_imm_di and Usd.
6033         (*aarch64_reg_<optab>_minus<mode>3): Rename to ...
6034         (*aarch64_<optab>_reg_minus<mode>3): ... this.
6035
6036 2018-03-20  Sudakshina Das  <sudi.das@arm.com>
6037
6038         PR target/82989
6039         * config/arm/neon.md (ashldi3_neon): Update ?s for constraints
6040         to favor GPR over NEON registers.
6041         (<shift>di3_neon): Likewise.
6042
6043 2018-03-20  Tom de Vries  <tom@codesourcery.com>
6044
6045         PR target/84952
6046         * config/nvptx/nvptx.c (nvptx_single): Don't neuter bar.sync.
6047         (nvptx_process_pars): Emit bar.sync asap and alap.
6048
6049 2018-03-20  Tom de Vries  <tom@codesourcery.com>
6050
6051         PR target/84954
6052         * config/nvptx/nvptx.c (prevent_branch_around_nothing): Also update
6053         seen_label if seen_label is already set.
6054
6055 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
6056
6057         PR target/84945
6058         * config/i386/i386.c (fold_builtin_cpu): For features above 31
6059         use __cpu_features2 variable instead of __cpu_model.__cpu_features[0].
6060         Use 1U instead of 1.  Formatting fixes.
6061
6062         PR c/84953
6063         * builtins.c (fold_builtin_strpbrk): For strpbrk(x, "") use type
6064         instead of TREE_TYPE (s1) for the return value.
6065
6066 2018-03-19  Jakub Jelinek  <jakub@redhat.com>
6067
6068         PR tree-optimization/84946
6069         * gimple-ssa-store-merging.c (mem_valid_for_store_merging): Compute
6070         bitsize + bitsize in poly_uint64 rather than poly_int64.
6071
6072         PR sanitizer/78651
6073         * dwarf2asm.c: Include fold-const.c.
6074         (dw2_output_indirect_constant_1): Set DECL_INITIAL (decl) to ADDR_EXPR
6075         of decl rather than decl itself.
6076
6077         PR rtl-optimization/84643
6078         * memmodel.h (enum memmodel): Add MEMMODEL_MAX enumerator.
6079
6080 2018-03-19  Maxim Ostapenko  <m.ostapenko@samsung.com>
6081
6082         PR sanitizer/78651
6083         * dwarf2asm.c (dw2_output_indirect_constant_1): Disable ASan before
6084         calling assemble_variable.
6085
6086 2018-03-19  Sudakshina Das  <sudi.das@arm.com>
6087
6088         PR target/81647
6089         * config/aarch64/aarch64-simd.md (vec_cmp<mode><v_int_equiv>): Modify
6090         instructions for UNLT, UNLE, UNGT, UNGE, UNEQ, UNORDERED and ORDERED.
6091
6092 2018-03-19  Jim Wilson  <jimw@sifive.com>
6093
6094         PR bootstrap/84856
6095         * config/riscv/riscv.c (riscv_function_arg_boundary): Use
6096         PREFERRED_STACK_BOUNDARY instead of STACK_BOUNDARY.
6097         (riscv_first_stack_step): Likewise.
6098         (riscv_option_override): Use STACK_BOUNDARY instead of
6099         MIN_STACK_BOUNDARY.
6100         * config/riscv/riscv.h (STACK_BOUNDARY): Renamed from
6101         MIN_STACK_BOUNDARY.
6102         (BIGGEST_ALIGNMENT): Set to 128.
6103         (PREFERRED_STACK_BOUNDARY): Renamed from STACK_BOUNDARY.
6104         (RISCV_STACK_ALIGN): Use PREFERRED_STACK_BOUNDARY instead of
6105         STACK_BOUNDARY.
6106
6107 2018-03-19  Richard Biener  <rguenther@suse.de>
6108
6109         PR tree-optimization/84933
6110         * tree-vrp.c (set_and_canonicalize_value_range): Treat out-of-bound
6111         values as -INF/INF when canonicalizing an ANTI_RANGE to a RANGE.
6112
6113 2018-03-19  Richard Biener  <rguenther@suse.de>
6114
6115         PR tree-optimization/84859
6116         * tree-ssa-phiopt.c (single_trailing_store_in_bb): New function.
6117         (cond_if_else_store_replacement): Perform sinking operation on
6118         single-store BBs regardless of MAX_STORES_TO_SINK setting.
6119         Generalize what a BB with a single eligible store is.
6120
6121 2018-03-19  Richard Biener  <rguenther@suse.de>
6122
6123         PR tree-optimization/84929
6124         * tree-data-ref.c (analyze_siv_subscript_cst_affine): Guard
6125         chrec_is_positive against non-chrec arg.
6126
6127 2018-03-19  Tamar Christina  <tamar.christina@arm.com>
6128
6129         PR target/84711
6130         * config/arm/arm.c (arm_can_change_mode_class): revert r258554.
6131
6132 2018-03-18  Martin Liska  <mliska@suse.cz>
6133
6134         PR rtl-optimization/84635
6135         * regrename.c (build_def_use): Use matches_mode only when
6136         matches >= 0.
6137
6138 2018-03-18  Richard Sandiford  <richard.sandiford@linaro.org>
6139
6140         PR tree-optimization/84913
6141         * tree-vect-loop.c (vectorizable_reduction): Don't try to
6142         vectorize chains of COND_EXPRs.
6143
6144 2018-03-18  Chung-Ju Wu  <jasonwucj@gmail.com>
6145
6146         * config/nds32/nds32.h (MAX_REGS_PER_ADDRESS): Fix the value.
6147
6148 2018-03-18  Chung-Ju Wu  <jasonwucj@gmail.com>
6149
6150         * config/nds32/nds32.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Define.
6151
6152 2018-03-18  Chung-Ju Wu  <jasonwucj@gmail.com>
6153
6154         * config/nds32/nds32.h (CLZ_DEFINED_VALUE_AT_ZERO): Define.
6155
6156 2018-03-17  Chung-Ju Wu  <jasonwucj@gmail.com>
6157             Kito Cheng  <kito.cheng@gmail.com>
6158
6159         * config/nds32/nds32-protos.h (nds32_adjust_reg_alloc_order): Declare.
6160         * config/nds32/nds32.c (nds32_reg_alloc_order_for_speed): New array.
6161         (nds32_adjust_reg_alloc_order): New function.
6162         * config/nds32/nds32.h (ADJUST_REG_ALLOC_ORDER): Define.
6163
6164 2018-03-17  Kito Cheng  <kito.cheng@gmail.com>
6165
6166         * config/nds32/nds32.c (nds32_asm_output_mi_thunk,
6167         nds32_print_operand, nds32_print_operand_address): Use
6168         HOST_WIDE_INT_PRINT_DEC instead.
6169
6170 2018-03-17  Chung-Ju Wu  <jasonwucj@gmail.com>
6171
6172         * config/nds32/nds32.c (nds32_register_priority): Modify cost.
6173
6174 2018-03-17  Jakub Jelinek  <jakub@redhat.com>
6175
6176         PR target/84902
6177         * config/i386/i386.c (initial_ix86_tune_features,
6178         initial_ix86_arch_features): Use unsigned HOST_WIDE_INT rather than
6179         unsigned long long.
6180         (set_ix86_tune_features): Change ix86_tune_mask from unsigned int
6181         to unsigned HOST_WIDE_INT, initialize to HOST_WIDE_INT_1U << ix86_tune
6182         rather than 1u << ix86_tune.  Formatting fix.
6183         (ix86_option_override_internal): Change ix86_arch_mask from
6184         unsigned int to unsigned HOST_WIDE_INT, initialize to
6185         HOST_WIDE_INT_1U << ix86_arch rather than 1u << ix86_arch.
6186         (ix86_function_specific_restore): Likewise.
6187
6188 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
6189
6190         PR target/84899
6191         * postreload.c (reload_combine_recognize_pattern): Perform
6192         INTVAL addition in unsigned HOST_WIDE_INT type to avoid UB and
6193         truncate_int_for_mode the result for the destination's mode.
6194
6195         PR c/84909
6196         * hsa-gen.c (mem_type_for_type): Fix comment typo.
6197         * tree-vect-loop-manip.c (vect_create_cond_for_niters_checks):
6198         Likewise.
6199         * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
6200         Likewise.
6201
6202 2018-03-16  Vladimir Makarov  <vmakarov@redhat.com>
6203
6204         PR target/84876
6205         * lra-assigns.c (lra_split_hard_reg_for): Don't use
6206         regno_allocno_class_array and sorted_pseudos.
6207         * lra-constraints.c (spill_hard_reg_in_range): Ignore hard regs in
6208         insns where regno is used.
6209
6210 2018-03-16  Martin Liska  <mliska@suse.cz>
6211
6212         PR ipa/84833
6213         * multiple_target.c (create_dispatcher_calls): Redirect
6214         reference in the symbol table.
6215
6216 2018-03-16  Martin Liska  <mliska@suse.cz>
6217
6218         PR ipa/84722
6219         * multiple_target.c (create_dispatcher_calls): Redirect also
6220         an alias.
6221
6222 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
6223
6224         PR c++/79937
6225         PR c++/82410
6226         * tree.h (TARGET_EXPR_NO_ELIDE): Define.
6227         * gimplify.c (gimplify_modify_expr_rhs): Don't elide TARGET_EXPRs with
6228         TARGET_EXPR_NO_ELIDE flag set unless *expr_p is INIT_EXPR.
6229
6230 2018-03-16  Julia Koval  <julia.koval@intel.com>
6231
6232         * doc/invoke.texi (Skylake Server): Add CLWB.
6233         Cannonlake): Remove CLWB.
6234
6235 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
6236
6237         PR tree-optimization/84841
6238         * tree-ssa-reassoc.c (INTEGER_CONST_TYPE): Change to 1 << 4 from
6239         1 << 3.
6240         (FLOAT_ONE_CONST_TYPE): Define.
6241         (constant_type): Return FLOAT_ONE_CONST_TYPE for -1.0 and 1.0.
6242         (sort_by_operand_rank): Put entries with higher constant_type last
6243         rather than first to match comments.
6244
6245 2018-03-15  Sandra Loosemore  <sandra@codesourcery.com>
6246
6247         * config/nios2/nios2.md (movsi_internal): Fix thinko in 
6248         split predicate.
6249
6250 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
6251
6252         PR c++/79085
6253         * calls.c (expand_call): For TREE_ADDRESSABLE rettype ignore alignment
6254         check and use address of target always.
6255
6256 2018-03-15  H.J. Lu  <hongjiu.lu@intel.com>
6257
6258         PR target/84574
6259         * config/i386/i386.c (indirect_thunk_needed): Update comments.
6260         (indirect_thunk_bnd_needed): Likewise.
6261         (indirect_thunks_used): Likewise.
6262         (indirect_thunks_bnd_used): Likewise.
6263         (indirect_return_needed): New.
6264         (indirect_return_bnd_needed): Likewise.
6265         (output_indirect_thunk_function): Add a bool argument for
6266         function return.
6267         (output_indirect_thunk_function): Don't generate alias for
6268         function return thunk.
6269         (ix86_code_end): Call output_indirect_thunk_function to generate
6270         function return thunks.
6271         (ix86_output_function_return): Set indirect_return_bnd_needed
6272         and indirect_return_needed instead of indirect_thunk_bnd_needed
6273         and indirect_thunk_needed.
6274
6275 2018-03-15  Olga Makhotina  <olga.makhotina@intel.com>
6276
6277         * config/i386/sgxintrin.h (_enclv_u32): New intrinsic.
6278         (__enclv_bc, __enclv_cd, __enclv_generic): New definitions.
6279         (ERDINFO, ETRACKC, ELDBC, ELDUC): New leaves.
6280
6281 2018-03-15  David Malcolm  <dmalcolm@redhat.com>
6282             Paul Hua <paul.hua.gm@gmail.com>
6283
6284         PR c/84852
6285         * gcc.dg/fixits-pr84852-1.c: Fix filename in dg-regexp.
6286
6287 2018-03-15  Segher Boessenkool  <segher@kernel.crashing.org>
6288
6289         * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add back the
6290         TARGET_DOUBLE_FLOAT and TARGET_SINGLE_FLOAT conditions on the DFmode
6291         resp. SFmode cases.
6292
6293 2018-03-15  Tamar Christina  <tamar.christina@arm.com>
6294
6295         PR target/84711
6296         * config/arm/arm.c (arm_can_change_mode_class): Use GET_MODE_UNIT_SIZE
6297         instead of GET_MODE_SIZE when comparing Units.
6298
6299 2018-03-15  Vladimir Mezentsev  <vladimir.mezentsev@oracle.com>
6300
6301         PR target/68256
6302         * varasm.c (hash_section): Return an unchangeble hash value
6303         * config/aarch64/aarch64.c (aarch64_use_blocks_for_constant_p):
6304         Return !aarch64_can_use_per_function_literal_pools_p ().
6305
6306 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
6307
6308         PR target/84860
6309         * optabs.c (emit_conditional_move): Pass address of cmode's copy
6310         rather than address of cmode as last argument to prepare_cmp_insn.
6311
6312 2018-03-15  Julia Koval  <julia.koval@intel.com>
6313
6314         * config/i386/i386.c (F_AVX512VBMI2, F_GFNI, F_VPCLMULQDQ,
6315         F_AVX512VNNI, F_AVX512BITALG): New.
6316
6317 2018-03-14  John David Anglin  <danglin@gcc.gnu.org>
6318
6319         PR target/83451
6320         * config/pa/pa.c (pa_emit_move_sequence):  Always emit secondary reload
6321         insn for floating-point loads and stores.
6322
6323 2018-03-14  Carl Love  <cel@us.ibm.com>
6324
6325         * config/rs6000/rs6000-c.c: Add macro definitions for
6326         ALTIVEC_BUILTIN_VEC_PERMXOR.
6327         * config/rs6000/rs6000.h: Add #define for vec_permxor builtin.
6328         * config/rs6000/rs6000-builtin.def: Add macro expansions for VPERMXOR.
6329         * config/rs6000/altivec.md (altivec_vpermxor): New define expand.
6330         * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Add case
6331         UNSPEC_VPERMXOR.
6332         * config/doc/extend.texi: Add prototypes for vec_permxor.
6333
6334 2018-03-14  David Malcolm  <dmalcolm@redhat.com>
6335
6336         PR c/84852
6337         * diagnostic-show-locus.c (class layout_point): Convert m_line
6338         from int to linenum_type.
6339         (line_span::comparator): Use linenum "compare" function when
6340         comparing line numbers.
6341         (test_line_span): New function.
6342         (layout_range::contains_point): Convert param "row" from int to
6343         linenum_type.
6344         (layout_range::intersects_line_p): Likewise.
6345         (layout::will_show_line_p): Likewise.
6346         (layout::print_source_line): Likewise.
6347         (layout::should_print_annotation_line_p): Likewise.
6348         (layout::print_annotation_line): Likewise.
6349         (layout::print_leading_fixits): Likewise.
6350         (layout::annotation_line_showed_range_p): Likewise.
6351         (struct line_corrections): Likewise for field m_row.
6352         (line_corrections::line_corrections): Likewise for param "row".
6353         (layout::print_trailing_fixits): Likewise.
6354         (layout::get_state_at_point): Likewise.
6355         (layout::get_x_bound_for_row): Likewise.
6356         (layout::print_line): Likewise.
6357         (diagnostic_show_locus): Likewise for locals "last_line" and
6358         "row".
6359         (selftest::diagnostic_show_locus_c_tests): Call test_line_span.
6360         * input.c (selftest::test_linenum_comparisons): New function.
6361         (selftest::input_c_tests): Call it.
6362         * selftest.c (selftest::test_assertions): Test ASSERT_GT,
6363         ASSERT_GT_AT, ASSERT_LT, and ASSERT_LT_AT.
6364         * selftest.h (ASSERT_GT): New macro.
6365         (ASSERT_GT_AT): New macro.
6366         (ASSERT_LT): New macro.
6367         (ASSERT_LT_AT): New macro.
6368
6369 2018-03-14  Segher Boessenkool  <segher@kernel.crashing.org>
6370
6371         PR rtl-optimization/84780
6372         * combine.c (distribute_links): Don't make a link based on pc_rtx.
6373
6374 2018-03-14  Martin Liska  <mliska@suse.cz>
6375
6376         * tree.c (record_node_allocation_statistics): Use
6377         get_stats_node_kind.
6378         (get_stats_node_kind): New function extracted from
6379         record_node_allocation_statistics.
6380         (free_node): Use get_stats_node_kind.
6381
6382 2018-03-14  Richard Biener  <rguenther@suse.de>
6383
6384         * tree-ssa-pre.c (compute_antic_aux): Remove code that asserts
6385         that the value-set of ANTIC_IN doesn't grow.
6386
6387         Revert
6388         * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
6389         member.
6390         (BB_VISITED_WITH_VISITED_SUCCS): New define.
6391         (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
6392
6393 2018-03-14  Julia Koval  <julia.koval@intel.com>
6394
6395         * config.gcc (icelake-client, icelake-server): New.
6396         (icelake): Remove.
6397         * config/i386/i386.c (initial_ix86_tune_features): Extend to 64 bit.
6398         (initial_ix86_arch_features): Ditto.
6399         (PTA_SKYLAKE): Add SGX.
6400         (PTA_ICELAKE): Remove.
6401         (PTA_ICELAKE_CLIENT): New.
6402         (PTA_ICELAKE_SERVER): New.
6403         (ix86_option_override_internal): Split up icelake on icelake client and
6404         icelake server.
6405         (get_builtin_code_for_version): Ditto.
6406         (fold_builtin_cpu): Ditto.
6407         * config/i386/driver-i386.c (config/i386/driver-i386.c): Ditto.
6408         * config/i386/i386-c.c (ix86_target_macros_internal): Ditto
6409         * config/i386/i386.h (processor_type): Ditto.
6410         * doc/invoke.texi: Ditto.
6411
6412 2018-03-14  Jakub Jelinek  <jakub@redhat.com>
6413
6414         PR sanitizer/83392
6415         * sanopt.c (maybe_optimize_ubsan_ptr_ifn): Handle also
6416         INTEGER_CST offset, add it together with bitpos / 8 and
6417         sign extend based on POINTER_SIZE.
6418
6419         PR target/84844
6420         Revert
6421         2017-04-20  Uros Bizjak  <ubizjak@gmail.com>
6422
6423         PR target/78090
6424         * config/i386/constraints.md (Yc): New register constraint.
6425         * config/i386/i386.md (*float<SWI48:mode><MODEF:mode>2_mixed):
6426         Use Yc constraint for alternative 2 of operand 0.  Remove
6427         preferred_for_speed attribute.
6428
6429 2018-03-14  Richard Biener  <rguenther@suse.de>
6430
6431         PR tree-optimization/84830
6432         * tree-ssa-pre.c (compute_antic_aux): Intersect the new ANTIC_IN
6433         with the old one to avoid oscillations.
6434
6435 2018-03-13  Vladimir Makarov  <vmakarov@redhat.com>
6436
6437         PR target/83712
6438         * lra-assigns.c (find_all_spills_for): Ignore uninteresting
6439         pseudos.
6440         (assign_by_spills): Return a flag of reload assignment failure.
6441         Do not process the reload assignment failures.  Do not spill other
6442         reload pseudos if they has the same reg class.  Update n if
6443         necessary.
6444         (lra_assign): Add a return arg.  Set up from the result of
6445         assign_by_spills call.
6446         (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
6447         * lra-constraints.c (split_reg): Add a new arg.  Use it instead of
6448         usage_insns if it is not NULL.
6449         (spill_hard_reg_in_range): New function.
6450         (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
6451         * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
6452         function prototypes.
6453         (lra_assign): Change prototype.
6454         * lra.c (lra): Add code to deal with fails by splitting hard reg
6455         live ranges.
6456
6457 2018-03-01  Palmer Dabbelt  <palmer@sifive.com>
6458
6459         * config/riscv/riscv.opt (mrelax): New option.
6460         * config/riscv/riscv.c (riscv_file_start): Emit ".option
6461         "norelax" when riscv_mrelax is disabled.
6462         * doc/invoke.texi (RISC-V): Document "-mrelax" and "-mno-relax".
6463
6464 2018-03-13  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
6465
6466         PR target/84743
6467         * config/rs6000/rs6000.c (rs6000_reassociation_width): Disable parallel
6468         reassociation for int modes.
6469
6470 2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>
6471
6472         * tree-vect-loop-manip.c (vect_maybe_permute_loop_masks):
6473         Reverse the choice between VEC_UNPACK_LO_EXPR and VEC_UNPACK_HI_EXPR
6474         for big-endian.
6475         * config/aarch64/iterators.md (hi_lanes_optab): New int attribute.
6476         * config/aarch64/aarch64-sve.md
6477         (*aarch64_sve_<perm_insn><perm_hilo><mode>): Rename to...
6478         (aarch64_sve_<perm_insn><perm_hilo><mode>): ...this.
6479         (*extend<mode><Vwide>2): Rename to...
6480         (aarch64_sve_extend<mode><Vwide>2): ...this.
6481         (vec_unpack<su>_<perm_hilo>_<mode>): Turn into a define_expand,
6482         renaming the old pattern to...
6483         (aarch64_sve_punpk<perm_hilo>_<mode>): ...this.  Only define
6484         unsigned packs.
6485         (vec_unpack<su>_<perm_hilo>_<SVE_BHSI:mode>): Turn into a
6486         define_expand, renaming the old pattern to...
6487         (aarch64_sve_<su>unpk<perm_hilo>_<SVE_BHSI:mode>): ...this.
6488         (*vec_unpacku_<perm_hilo>_<mode>_no_convert): Delete.
6489         (vec_unpacks_<perm_hilo>_<mode>): Take BYTES_BIG_ENDIAN into
6490         account when deciding which SVE instruction the optab should use.
6491         (vec_unpack<su_optab>_float_<perm_hilo>_vnx4si): Likewise.
6492
6493 2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>
6494
6495         * config/aarch64/aarch64.md (V4_REGNUM, V8_REGNUM, V12_REGNUM)
6496         (V20_REGNUM, V24_REGNUM, V28_REGNUM, P1_REGNUM, P2_REGNUM, P3_REGNUM)
6497         (P4_REGNUM, P5_REGNUM, P6_REGNUM, P8_REGNUM, P9_REGNUM, P10_REGNUM)
6498         (P11_REGNUM, P12_REGNUM, P13_REGNUM, P14_REGNUM): New define_constants.
6499         (tlsdesc_small_<mode>): Turn a define_expand and use
6500         tlsdesc_small_sve_<mode> for SVE.  Rename original define_insn to...
6501         (tlsdesc_small_advsimd_<mode>): ...this.
6502         (tlsdesc_small_sve_<mode>): New pattern.
6503
6504 2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>
6505
6506         * config/aarch64/iterators.md (UNSPEC_SMUL_HIGHPART)
6507         (UNSPEC_UMUL_HIGHPART): New constants.
6508         (MUL_HIGHPART): New int iteraor.
6509         (su): Handle UNSPEC_SMUL_HIGHPART and UNSPEC_UMUL_HIGHPART.
6510         * config/aarch64/aarch64-sve.md (<su>mul<mode>3_highpart): New
6511         define_expand.
6512         (*<su>mul<mode>3_highpart): New define_insn.
6513
6514 2018-03-13  Eric Botcazou  <ebotcazou@adacore.com>
6515
6516         PR lto/84805
6517         * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
6518         incomplete types.
6519
6520 2018-03-13  Martin Liska  <mliska@suse.cz>
6521
6522         PR ipa/84658.
6523         * (sem_item_optimizer::sem_item_optimizer): Initialize new
6524         vector.
6525         (sem_item_optimizer::~sem_item_optimizer): Release it.
6526         (sem_item_optimizer::merge_classes): Register variable aliases.
6527         (sem_item_optimizer::fixup_pt_set): New function.
6528         (sem_item_optimizer::fixup_points_to_sets): Likewise.
6529         * ipa-icf.h: Declare new variables and functions.
6530
6531 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
6532
6533         PR middle-end/84834
6534         * match.pd ((A & C) != 0 ? D : 0): Use INTEGER_CST@2 instead of
6535         integer_pow2p@2 and test integer_pow2p in condition.
6536         (A < 0 ? C : 0): Similarly for @1.
6537
6538         PR middle-end/84831
6539         * stmt.c (parse_output_constraint): If the CONSTRAINT_LEN (*p, p)
6540         characters starting at p contain '\0' character, don't look beyond
6541         that.
6542
6543         PR target/84827
6544         * config/i386/i386.md (round<mode>2): For 387 fancy math, disable
6545         pattern if -ftrapping-math -fno-fp-int-builtin-inexact.
6546
6547         PR target/84828
6548         * reg-stack.c (change_stack): Change update_end var from int to
6549         rtx_insn *, if non-NULL don't update just BB_END (current_block), but
6550         also call set_block_for_insn on the newly added insns and rescan.
6551
6552         PR target/84786
6553         * config/i386/sse.md (sse2_loadhpd): Use Yv constraint rather than v
6554         on the last operand.
6555
6556         PR c++/84704
6557         * tree.c (stabilize_reference_1): Return save_expr (e) for
6558         STATEMENT_LIST even if it doesn't have side-effects.
6559
6560 2018-03-12  Jonathan Wakely  <jwakely@redhat.com>
6561
6562         * doc/invoke.texi (-mclflushopt): Fix spelling of option.
6563
6564 2018-03-12  Renlin Li  <renlin.li@arm.com>
6565
6566         * config/aarch64/aarch64.md (movhf_aarch64): Fix mode argument to
6567         aarch64_output_scalar_simd_mov_immediate.
6568
6569 2018-03-12  Martin Sebor  <msebor@redhat.com>
6570
6571         PR tree-optimization/83456
6572         * gimple-fold.c (gimple_fold_builtin_memory_op): Avoid warning
6573         for perfectly overlapping calls to memcpy.
6574         (gimple_fold_builtin_memory_chk): Same.
6575         (gimple_fold_builtin_strcpy): Handle no-warning.
6576         (gimple_fold_builtin_stxcpy_chk): Same.
6577         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Handle no-warning.
6578
6579 2018-03-12  Segher Boessenkool  <segher@kernel.crashing.org>
6580
6581         * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add bool "named"
6582         parameter.  Use it for SFmode.
6583         (rs6000_function_arg_advance_1): Adjust.
6584         (rs6000_function_arg): Adjust.
6585         (rs6000_gimplify_va_arg): Pass false for that new parameter.
6586
6587 2018-03-12  Segher Boessenkool  <segher@kernel.crashing.org>
6588
6589         PR rtl-optimization/84169
6590         PR rtl-optimization/84780
6591         * combine.c (can_combine_p): Check for a 2-insn combination whether
6592         the destination register is used between the two insns, too.
6593
6594 2018-03-12  Richard Biener  <rguenther@suse.de>
6595
6596         PR tree-optimization/84803
6597         * tree-if-conv.c (ifcvt_memrefs_wont_trap): Don't do anything
6598         for refs DR analysis didn't process.
6599
6600 2018-03-12  Richard Biener  <rguenther@suse.de>
6601
6602         PR tree-optimization/84777
6603         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): For
6604         force-vectorize loops ignore whether we are optimizing for size.
6605
6606 2018-03-12  Chung-Ju Wu  <jasonwucj@gmail.com>
6607
6608         * config/nds32/nds32.c (nds32_md_asm_adjust): New function.
6609         (TARGET_MD_ASM_ADJUST): Define.
6610
6611 2018-03-12  Monk Chiang  <sh.chiang04@gmail.com>
6612             Kito Cheng  <kito.cheng@gmail.com>
6613             Chung-Ju Wu  <jasonwucj@gmail.com>
6614
6615         * config/nds32/nds32.c (nds32_compute_stack_frame,
6616         nds32_emit_stack_push_multiple, nds32_emit_stack_pop_multiple,
6617         nds32_emit_stack_v3push, nds32_emit_stack_v3pop,
6618         nds32_emit_adjust_frame, nds32_expand_prologue, nds32_expand_epilogue,
6619         nds32_expand_prologue_v3push, nds32_expand_epilogue_v3pop): Refine.
6620         * config/nds32/nds32.h (NDS32_FIRST_CALLEE_SAVE_GPR_REGNUM,
6621         NDS32_LAST_CALLEE_SAVE_GPR_REGNUM, NDS32_V3PUSH_AVAILABLE_P): New.
6622         * config/nds32/nds32.md (prologue, epilogue): Use macro
6623         NDS32_V3PUSH_AVAILABLE_P to do checking.
6624
6625 2018-03-11  Jakub Jelinek  <jakub@redhat.com>
6626
6627         PR debug/58150
6628         * dwarf2out.c (gen_enumeration_type_die): Don't guard adding
6629         DW_AT_declaration for ENUM_IS_OPAQUE on -gdwarf-4 or -gno-strict-dwarf,
6630         but on TYPE_SIZE.  Don't do anything for ENUM_IS_OPAQUE if not creating
6631         a new die.  Don't set TREE_ASM_WRITTEN if ENUM_IS_OPAQUE.  Guard
6632         addition of most attributes on !orig_type_die or the attribute not
6633         being present already.  Assert TYPE_VALUES is NULL for ENUM_IS_OPAQUE.
6634
6635 2018-03-11  Kito Cheng  <kito.cheng@gmail.com>
6636             Chung-Ju Wu  <jasonwucj@gmail.com>
6637
6638         * config/nds32/nds32.c (nds32_cpu_cpp_builtins): Modify to define
6639         __NDS32_VH__ macro.
6640         * config/nds32/nds32.opt (mvh): New option.
6641
6642 2018-03-11  Kito Cheng  <kito.cheng@gmail.com>
6643             Chung-Ju Wu  <jasonwucj@gmail.com>
6644
6645         * config/nds32/nds32-protos.h (nds32_cpu_cpp_builtins): Declare
6646         function.
6647         * config/nds32/nds32.c (nds32_cpu_cpp_builtins): New function.
6648         * config/nds32/nds32.h (TARGET_CPU_CPP_BUILTINS): Modify its
6649         definition.
6650
6651 2018-03-11  Kito Cheng  <kito.cheng@gmail.com>
6652             Chung-Ju Wu  <jasonwucj@gmail.com>
6653
6654         * config/nds32/nds32-memory-manipulation.c (nds32_expand_strlen): New
6655         function.
6656         * config/nds32/nds32-multiple.md (strlensi): New pattern.
6657         * config/nds32/nds32-protos.h (nds32_expand_strlen): Declare function.
6658
6659 2018-03-11  Monk Chiang  <sh.chiang04@gmail.com>
6660             Kito Cheng  <kito.cheng@gmail.com>
6661             Chung-Ju Wu  <jasonwucj@gmail.com>
6662
6663         * config/nds32/constants.md (unspec_element): Add UNSPEC_FFB,
6664         UNSPEC_FFMISM and UNSPEC_FLMISM.
6665         * config/nds32/nds32-intrinsic.c (bdesc_2arg): Add builtin description
6666         for ffb, ffmism and flmism.
6667         * config/nds32/nds32-intrinsic.md (unspec_ffb): Define new pattern.
6668         (unspec_ffmism): Ditto.
6669         (unspec_flmism): Ditto.
6670         (nds32_expand_builtin_impl): Check if string extension is available.
6671         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FFB,
6672         NDS32_BUILTIN_FFMISM and NDS32_BUILTIN_FLMISM.
6673
6674 2018-03-10  Vladimir Makarov  <vmakarov@redhat.com>
6675
6676         Reverting patch:
6677         2018-03-09  Vladimir Makarov  <vmakarov@redhat.com>
6678
6679         PR target/83712
6680         * lra-assigns.c (assign_by_spills): Return a flag of reload
6681         assignment failure.  Do not process the reload assignment
6682         failures.  Do not spill other reload pseudos if they has the same
6683         reg class.
6684         (lra_assign): Add a return arg.  Set up from the result of
6685         assign_by_spills call.
6686         (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
6687         * lra-constraints.c (split_reg): Add a new arg.  Use it instead of
6688         usage_insns if it is not NULL.
6689         (spill_hard_reg_in_range): New function.
6690         (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
6691         * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
6692         function prototypes.
6693         (lra_assign): Change prototype.
6694         * lra.c (lra): Add code to deal with fails by splitting hard reg
6695         live ranges.
6696
6697 2018-03-10  H.J. Lu  <hongjiu.lu@intel.com>
6698
6699         PR target/84807
6700         * config/i386/i386.opt: Replace Enforcment with Enforcement.
6701
6702 2018-03-10  Alexandre Oliva  <aoliva@redhat.com>
6703
6704         PR debug/84620
6705         * dwarf2out.h (dw_val_class): Add dw_val_class_symview.
6706         (dw_val_node): Add val_symbolic_view.
6707         * dwarf2out.c (dw_line_info_table): Add symviews_since_reset.
6708         (symview_upper_bound): New.
6709         (new_line_info_table): Initialize symviews_since_reset.
6710         (dwarf2out_source_line): Count symviews_since_reset and set
6711         symview_upper_bound.
6712         (dw_val_equal_p): Handle symview.
6713         (add_AT_symview): New.
6714         (print_dw_val): Handle symview.
6715         (attr_checksum, attr_checksum_ordered): Likewise.
6716         (same_dw_val_p, size_of_die): Likewise.
6717         (value_format, output_die): Likewise.
6718         (add_high_low_attributes): Use add_AT_symview for entry_view.
6719         (dwarf2out_finish): Reset symview_upper_bound, clear
6720         zero_view_p.
6721
6722 2018-03-09  Peter Bergner  <bergner@vnet.ibm.com>
6723
6724         PR target/83969
6725         * config/rs6000/rs6000.c (rs6000_offsettable_memref_p): New prototype.
6726         Add strict argument and use it.
6727         (rs6000_split_multireg_move): Update for new strict argument.
6728         (mem_operand_gpr): Disallow all non-offsettable addresses.
6729         * config/rs6000/rs6000.md (*movdi_internal64): Use YZ constraint.
6730
6731 2018-03-09  Jakub Jelinek  <jakub@redhat.com>
6732
6733         PR target/84772
6734         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Mark va_arg_tmp
6735         temporary TREE_ADDRESSABLE before gimplification of BUILT_IN_MEMCPY.
6736         * config/powerpcspe/powerpcspe.c (rs6000_gimplify_va_arg): Likewise.
6737
6738         PR c++/84767
6739         * tree-inline.c (copy_tree_body_r): For INDIRECT_REF of a remapped
6740         decl, use remap_type if we want to use the type.
6741
6742 2018-03-09  Martin Sebor  <msebor@redhat.com>
6743
6744         PR tree-optimization/84526
6745         * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
6746         Remove dead code.
6747         (builtin_access::generic_overlap): Be prepared to handle non-array
6748         base objects.
6749
6750 2018-03-09  Alexandre Oliva  <aoliva@redhat.com>
6751
6752         PR rtl-optimization/84682
6753         * lra-constraints.c (process_address_1): Check is_address flag
6754         for address constraints.
6755         (process_alt_operands): Likewise.
6756         * lra.c (lra_set_insn_recog_data): Pass asm operand locs to
6757         preprocess_constraints.
6758         * recog.h (preprocess_constraints): Add oploc parameter.
6759         Adjust callers.
6760         * recog.c (preprocess_constraints): Test address_operand for
6761         CT_ADDRESS constraints.
6762
6763 2018-03-09  Vladimir Makarov  <vmakarov@redhat.com>
6764
6765         PR target/83712
6766         * lra-assigns.c (assign_by_spills): Return a flag of reload
6767         assignment failure.  Do not process the reload assignment
6768         failures.  Do not spill other reload pseudos if they has the same
6769         reg class.
6770         (lra_assign): Add a return arg.  Set up from the result of
6771         assign_by_spills call.
6772         (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
6773         * lra-constraints.c (split_reg): Add a new arg.  Use it instead of
6774         usage_insns if it is not NULL.
6775         (spill_hard_reg_in_range): New function.
6776         (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
6777         * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
6778         function prototypes.
6779         (lra_assign): Change prototype.
6780         * lra.c (lra): Add code to deal with fails by splitting hard reg
6781         live ranges.
6782
6783 2018-03-09  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6784
6785         PR target/83193
6786         * common/config/arm/arm-common.c (arm_parse_arch_option_name):
6787         Accept complain bool parameter.  Only emit errors if it is true.
6788         (arm_parse_cpu_option_name): Likewise.
6789         (arm_target_thumb_only): Adjust callers of the above.
6790         * config/arm/arm-protos.h (arm_parse_cpu_option_name): Adjust
6791         prototype to take a default true bool parameter.
6792         (arm_parse_arch_option_name): Likewise.
6793
6794 2018-03-09  David Malcolm  <dmalcolm@redhat.com>
6795             Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
6796
6797         PR jit/64089
6798         PR jit/84288
6799         * Makefile.in (LD_VERSION_SCRIPT_OPTION, LD_SONAME_OPTION): New.
6800         * configure: Regenerate.
6801         * configure.ac ("linker --version-script option"): New.
6802         ("linker soname option"): New.
6803
6804 2018-03-09  Richard Biener  <rguenther@suse.de>
6805
6806         PR tree-optimization/84775
6807         * tree-if-conv.c (add_bb_predicate_gimplified_stmts): Delink
6808         immediate uses of predicate stmts and mark them modified.
6809
6810         Revert
6811         PR tree-optimization/84178
6812         * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
6813         to caller.
6814         (version_loop_for_if_conversion): Delay update_ssa call.
6815         (tree_if_conversion): Delay update_ssa until after predicate
6816         insertion.
6817
6818 2018-03-09  Eric Botcazou  <ebotcazou@adacore.com>
6819
6820         PR target/84763
6821         * config/i386/winnt.c (i386_pe_seh_cold_init): Use small pre-allocation
6822         when the function accesses prior frames.
6823
6824 2018-03-08  Jakub Jelinek  <jakub@redhat.com>
6825
6826         PR debug/84456
6827         * dwarf2out.c (dw_loc_list): If list && loc_list->first->next, call
6828         gen_llsym, otherwise call maybe_gen_llsym.
6829
6830         PR inline-asm/84742
6831         * recog.c (asm_operand_ok): Return 0 if multi-character constraint
6832         has ',' character inside of it.
6833
6834 2018-03-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6835
6836         PR target/84748
6837         * config/aarch64/aarch64.md (*compare_cstore<mode>_insn): Mark pattern
6838         as clobbering CC_REGNUM.
6839
6840 2018-03-08  Richard Biener  <rguenther@suse.de>
6841
6842         PR middle-end/84552
6843         * tree-scalar-evolution.c: Include tree-into-ssa.h.
6844         (follow_copies_to_constant): Do not follow SSA names registered
6845         for update.
6846
6847 2018-03-08  Richard Biener  <rguenther@suse.de>
6848
6849         PR tree-optimization/84178
6850         * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
6851         to caller.
6852         (version_loop_for_if_conversion): Delay update_ssa call.
6853         (tree_if_conversion): Delay update_ssa until after predicate
6854         insertion.
6855
6856 2018-03-08  David Malcolm  <dmalcolm@redhat.com>
6857
6858         PR tree-optimization/84178
6859         * tree-if-conv.c (release_bb_predicate): Remove the
6860         the assertion that the stmts have NULL use_ops.
6861         Discard the statements, asserting that they haven't
6862         yet been added to a BB.
6863
6864 2018-03-08  Richard Biener  <rguenther@suse.de>
6865
6866         PR tree-optimization/84746
6867         * tree-ssa-pre.c (find_leader_in_sets): Deal with SET1 being NULL.
6868         (phi_translate): Pass in destination ANTIC_OUT set.
6869         (phi_translate_1): Likewise.  For a simplified result lookup
6870         a leader in ANTIC_OUT and AVAIL_OUT, not the ANTIC_IN sets.
6871         (phi_translate_set): Adjust.
6872         (do_pre_regular_insertion): Likewise.
6873         (do_pre_partial_partial_insertion): Likewise.
6874
6875 2018-03-08  Martin Liska  <mliska@suse.cz>
6876
6877         PR gcov-profile/84735
6878         * doc/gcov.texi: Document usage of profile files.
6879         * gcov-io.h: Document changes in the format.
6880
6881 2018-03-08  Alexandre Oliva  <aoliva@redhat.com>
6882
6883         PR debug/84404
6884         PR debug/84408
6885         * dwarf2out.c (struct dw_line_info_table): Update comments for
6886         view == -1.
6887         (FORCE_RESET_NEXT_VIEW): New.
6888         (FORCE_RESETTING_VIEW_P): New.
6889         (RESETTING_VIEW_P): Check for -1 too.
6890         (ZERO_VIEW_P): Likewise.
6891         (new_line_info_table): Force-reset next view.
6892         (dwarf2out_begin_function): Likewise.
6893         (dwarf2out_source_line): Simplify zero_view_p initialization.
6894         Test FORCE_RESETTING_VIEW_P and RESETTING_VIEW_P instead of
6895         view directly.  Omit view when omitting .loc at line 0.
6896
6897 2018-03-08  Jakub Jelinek  <jakub@redhat.com>
6898
6899         PR tree-optimization/84740
6900         * tree-switch-conversion.c (process_switch): Call build_constructors
6901         only if info.phi_count is non-zero.
6902
6903         PR tree-optimization/84739
6904         * tree-tailcall.c (find_tail_calls): Check call arguments against
6905         DECL_ARGUMENTS (current_function_decl) rather than
6906         DECL_ARGUMENTS (func) when checking for tail recursion.
6907
6908 2018-03-07  Jakub Jelinek  <jakub@redhat.com>
6909
6910         * doc/contrib.texi: Add entries for Martin Liska, David Malcolm,
6911         Marek Polacek, extend Vladimir Makarov's, Jonathan Wakely's and
6912         Volker Reichelt's entry and add entries for people that perform
6913         GCC fuzzy testing and report numerous bugs.
6914
6915 2018-03-07  Segher Boessenkool  <segher@kernel.crashing.org>
6916
6917         PR target/82411
6918         * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Don't put
6919         readonly data in sdata, if that is disabled.
6920         * config/rs6000/sysv4.opt (mreadonly-in-sdata): New option.
6921         * doc/invoke.texi (RS/6000 and PowerPC Options): Document
6922         -mreadonly-in-sdata option.
6923
6924 2018-03-07  Martin Sebor  <msebor@redhat.com>
6925
6926         PR tree-optimization/84468
6927         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Consider successor
6928         basic block when looking for nul assignment.
6929
6930 2018-03-07  Eric Botcazou  <ebotcazou@adacore.com>
6931
6932         PR target/84277
6933         * except.h (output_function_exception_table): Adjust prototype.
6934         * except.c (output_function_exception_table): Remove FNNAME parameter
6935         and add SECTION parameter.  Ouput one part of the table at a time.
6936         * final.c (final_scan_insn_1) <NOTE_INSN_SWITCH_TEXT_SECTIONS>: Output
6937         the first part of the exception table and emit unwind directives.
6938         * config/i386/i386-protos.h (i386_pe_end_cold_function): Declare.
6939         (i386_pe_seh_cold_init): Likewise.
6940         * config/i386/cygming.h (ASM_DECLARE_COLD_FUNCTION_NAME): New macro.
6941         (ASM_DECLARE_COLD_FUNCTION_SIZE): Likewise.
6942         * config/i386/i386.c (x86_expand_epilogue): Fix wording in comment.
6943         (ix86_output_call_insn): Emit a nop in one more case for SEH.
6944         * config/i386/winnt.c: Include except.h.
6945         (struct seh_frame_state): Add reg_offset, after_prologue and
6946         in_cold_section fields.
6947         (i386_pe_seh_end_prologue): Set seh->after_prologue.
6948         (i386_pe_seh_cold_init): New function.
6949         (i386_pe_seh_fini): Add COLD parameter and bail out if it is not equal
6950         to seh->in_cold_section.
6951         (seh_emit_push): Record the offset of the push.
6952         (seh_emit_save): Record the offet of the save.
6953         (i386_pe_seh_unwind_emit): Deal with NOTE_INSN_SWITCH_TEXT_SECTIONS.
6954         Test seh->after_prologue to disregard the epilogue.
6955         (i386_pe_end_function): Pass FALSE to i386_pe_seh_fini.
6956         (i386_pe_end_cold_function): New function.
6957
6958 2018-03-07  Jakub Jelinek  <jakub@redhat.com>
6959
6960         PR fortran/84565
6961         * config/aarch64/predicates.md (aarch64_simd_reg_or_zero): Use
6962         aarch64_simd_or_scalar_imm_zero rather than aarch64_simd_imm_zero.
6963
6964         PR c++/84704
6965         * gimple-expr.c (create_tmp_var_raw): Set DECL_NAMELESS flag
6966         on tmp_var.
6967         * tree-pretty-print.c (dump_decl_name): For TDF_COMPARE_DEBUG,
6968         don't print names of DECL_NAMELESS DECL_IGNORED_P decls.
6969
6970         PR middle-end/84723
6971         * multiple_target.c: Include tree-inline.h and intl.h.
6972         (expand_target_clones): Diagnose and fail if node->definition and
6973         !tree_versionable_function_p (node->decl).
6974
6975 2018-03-06  John David Anglin  <danglin@gcc.gnu.org>
6976
6977         * config/pa/pa.h (ASM_GENERATE_INTERNAL_LABEL): Revise to use
6978         sprint_ul.
6979         (ASM_OUTPUT_ADDR_VEC_ELT): Revise for above change.
6980         (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
6981         * config/pa/pa64-hpux.h (ASM_GENERATE_INTERNAL_LABEL): Revise as above.
6982
6983 2018-03-06  Jakub Jelinek  <jakub@redhat.com>
6984
6985         PR target/84710
6986         * combine.c (try_combine): Use reg_or_subregno instead of handling
6987         just paradoxical SUBREGs and REGs.
6988
6989 2018-03-06  Claudiu Zissulescu  <claziss@synopsys.com>
6990
6991          * config/arc/arc.c (arc_finalize_pic): Remove function.
6992          (arc_must_save_register): We use single base PIC register, remove
6993          checks to save/restore the PIC register.
6994          (arc_expand_prologue): Likewise.
6995          * config/arc/arc-protos.h (arc_set_default_type_attributes):
6996          Remove.
6997          (arc_verify_short): Likewise.
6998          (arc_attr_type): Likewise.
6999          * config/arc/arc.c (arc_set_default_type_attributes): Remove.
7000          (walk_stores): Likewise.
7001          (arc_address_cost): Make it static.
7002          (arc_verify_short): Likewise.
7003          (branch_dest): Likewise.
7004          (arc_attr_type): Likewise.
7005          * config/arc/arc.c (TARGET_ADJUST_INSN_LENGTH): Remove.
7006          (TARGET_INSN_LENGTH_PARAMETERS): Likewise.
7007          (arc_final_prescan_insn): Remove inserting the nops due to
7008          hardware hazards.  It is done in reorg step.
7009          (insn_length_variant_t): Remove.
7010          (insn_length_parameters_t): Likewise.
7011          (arc_insn_length_parameters): Likewise.
7012          (arc_get_insn_variants): Likewise.
7013          * config/arc/arc.h (TARGET_UPSIZE_DBR): Remove.
7014
7015 2018-03-06  Jakub Jelinek  <jakub@redhat.com>
7016
7017         PR inline-asm/84683
7018         * reg-stack.c (move_for_stack_reg): If any_malformed_asm, avoid
7019         assertion failure.
7020
7021         PR tree-optimization/84687
7022         * omp-simd-clone.c (simd_clone_create): Clear DECL_BUILT_IN_CLASS
7023         on new_node->decl.
7024         * match.pd (pow(C,x)*expN(y) -> expN(logN(C)*x+y)): New optimization.
7025
7026 2018-03-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
7027
7028         * config/rs6000/rs6000-builtin.def (rs6000_speculation_barrier):
7029         Rename to ppc_speculation_barrier.
7030         * config/rs6000/rs6000.c (rs6000_init_builtins): Rename builtin to
7031         __builtin_ppc_speculation_barrier.
7032
7033 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
7034
7035         PR target/84700
7036         * combine.c (combine_simplify_rtx): Don't try to simplify if
7037         if_then_else_cond returned non-NULL, but either true_rtx or false_rtx
7038         are equal to x.
7039
7040 2018-03-05  Segher Boessenkool  <segher@kernel.crashing.org>
7041
7042         * config/rs6000/rs6000.c (rs6000_loop_align): Don't align tiny loops
7043         to 32 bytes when compiling for POWER9.
7044
7045 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
7046
7047         PR target/84564
7048         * config/i386/i386.c (ix86_function_ok_for_sibcall): Check for
7049         regparm >= 3 with no arg reg available also for calls with
7050         flag_force_indirect_call.  Pass decl to ix86_function_regparm.
7051
7052         PR target/84524
7053         * config/i386/sse.md (*<code><mode>3): Replace <mask_prefix3> with
7054         orig,vex.
7055         (*<plusminus_insn><mode>3): Likewise.  Remove <mask_operand3> uses.
7056
7057 2018-03-05  Peter Bergner  <bergner@vnet.ibm.com>
7058
7059         PR target/84264
7060         * config/rs6000/vector.md (mov<mode>): Disallow altivec memory operands.
7061
7062 2018-03-05  Richard Biener  <rguenther@suse.de>
7063
7064         PR tree-optimization/84486
7065         * tree-ssa-pre.c (create_expression_by_pieces): Remove dead code.
7066         When inserting a __builtin_assume_aligned call set the LHS
7067         SSA name alignment info accordingly.
7068
7069 2018-03-05  Wilco Dijkstra  <wdijkstr@arm.com>
7070
7071         PR tree-optimization/84114
7072         * config/aarch64/aarch64.c (aarch64_reassociation_width)
7073         Avoid reassociation of FLOAT_MODE addition.
7074
7075 2018-03-05  Olga Makhotina  <olga.makhotina@intel.com>
7076
7077         * common/config/i386/i386-common.c (OPTION_MASK_ISA_PCONFIG_SET,
7078         OPTION_MASK_ISA_PCONFIG_UNSET, OPTION_MASK_ISA_WBNOINVD_SET,
7079         OPTION_MASK_ISA_WBNOINVD_UNSET): New definitions.
7080         (ix86_handle_option): Handle -mpconfig and -mwbnoinvd.
7081         * config.gcc (pconfigintrin.h, wbnoinvdintrin.h) : Add headers.
7082         * config/i386/cpuid.h (bit_PCONFIG, bit_WBNOINVD): New.
7083         * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mpconfig
7084         and -mwbnoinvd.
7085         * config/i386/i386-builtin.def (__builtin_ia32_wbnoinvd,
7086         __builtin_ia32_wbinvd): New builtins.
7087         (SPECIAL_ARGS2): New.
7088         * config/i386/i386-c.c (__WBNOINVD__, __PCONFIG__): New.
7089         (SPECIAL_ARGS2): New.
7090         * config/i386/i386.c (ix86_target_string): Add -mpconfig and -mwbnoinvd.
7091         (ix86_valid_target_attribute_inner_p): Ditto.
7092         (ix86_init_mmx_sse_builtins): Add special_args2.
7093         * config/i386/i386.h (TARGET_PCONFIG, TARGET_PCONFIG_P, TARGET_WBNOINVD,
7094         TARGET_WBNOINVD_P): New.
7095         * config/i386/i386.md (UNSPECV_WBINVD, UNSPECV_WBNOINVD): New.
7096         (define_insn "wbinvd", define_insn "wbnoinvd"): New.
7097         * config/i386/i386.opt: Add -mpconfig and -mwbnoinvd.
7098         * config/i386/immintrin.h (_wbinvd): New intrinsic.
7099         * config/i386/pconfigintrin.h: New file.
7100         * config/i386/wbnoinvdintrin.h: Ditto.
7101         * config/i386/x86intrin.h: Add headers pconfigintrin.h and wbnoinvdintrin.h.
7102         * doc/invoke.texi (-mpconfig, -mwbnoinvd): New.
7103
7104 2018-03-05  Richard Biener  <rguenther@suse.de>
7105
7106         PR tree-optimization/84670
7107         * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
7108         member.
7109         (BB_VISITED_WITH_VISITED_SUCCS): New define.
7110         (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
7111         (compute_antic_aux): Only assert the number of values in ANTIC_IN
7112         doesn't grow if all successors (recursively) were visited at least
7113         once.
7114
7115 2018-03-05  Richard Biener  <rguenther@suse.de>
7116
7117         PR tree-optimization/84650
7118         * tree-ssa-loop-im.c (pass_lim::execute): Reset the SCEV cache
7119         if executed in the loop pipeline.
7120
7121 2018-03-05  Sandra Loosemore  <sandra@codesourcery.com>
7122
7123         * doc/configfiles.texi (Configuration Files): Move info about
7124         conditionalizing $target-protos.h to...
7125         * doc/sourcebuild.texi (Back End): Here.  Explain how $target.h
7126         differs from $target-protos.h.
7127
7128 2018-03-05  Kito Cheng  <kito.cheng@gmail.com>
7129             Chung-Ju Wu  <jasonwucj@gmail.com>
7130
7131         * config/nds32/nds32-protos.h (nds32_expand_setmem): Declare.
7132         * config/nds32/nds32-multiple.md (setmemsi): Define.
7133         * config/nds32/nds32-memory-manipulation.c
7134         (nds32_gen_dup_4_byte_to_word_value): New.
7135         (emit_setmem_word_loop): New.
7136         (emit_setmem_byte_loop): New.
7137         (nds32_expand_setmem_loop): New.
7138         (nds32_expand_setmem_loop_v3m): New.
7139         (nds32_expand_setmem_unroll): New.
7140         (nds32_expand_setmem): New.
7141
7142 2018-03-04  Kito Cheng  <kito.cheng@gmail.com>
7143             Chung-Ju Wu  <jasonwucj@gmail.com>
7144
7145         * config/nds32/nds32-memory-manipulation.c
7146         (nds32_emit_load_store): New.
7147         (nds32_emit_post_inc_load_store): New.
7148         (nds32_emit_mem_move): New.
7149         (nds32_emit_mem_move_block): New.
7150         (nds32_expand_movmemsi_loop_unknown_size): New.
7151         (nds32_expand_movmemsi_loop_known_size): New.
7152         (nds32_expand_movmemsi_loop): New.
7153         (nds32_expand_movmemsi_unroll): New.
7154         (nds32_expand_movmemqi): Rename ...
7155         (nds32_expand_movmemsi): ... to this.
7156         * config/nds32/nds32-multiple.md (movmemqi): Rename ...
7157         (movmemsi): ... to this.
7158         * config/nds32/nds32-protos.h (nds32_expand_movmemqi): Rename ...
7159         (nds32_expand_movmemsi): ... to this.
7160
7161 2018-03-04  Kito Cheng  <kito.cheng@gmail.com>
7162             Monk Chiang  <sh.chiang04@gmail.com>
7163             Chung-Ju Wu  <jasonwucj@gmail.com>
7164
7165         * config/nds32/nds32-protos.h
7166         (nds32_expand_load_multiple): New arguments.
7167         (nds32_expand_store_multiple): Ditto.
7168         (nds32_valid_multiple_load_store): Rename ...
7169         (nds32_valid_multiple_load_store_p): ... to this.
7170         * config/nds32/nds32-memory-manipulation.c
7171         (nds32_expand_load_multiple): Refine implementation.
7172         (nds32_expand_store_multiple): Ditto.
7173         * config/nds32/nds32-multiple.md
7174         (load_multiple): Update nds32_expand_load_multiple interface.
7175         (store_multiple): Update nds32_expand_store_multiple interface.
7176         * config/nds32/nds32-predicates.c
7177         (nds32_valid_multiple_load_store): Rename ...
7178         (nds32_valid_multiple_load_store_p): ... to this and refine
7179         implementation.
7180         * config/nds32/predicates.md
7181         (nds32_load_multiple_and_update_address_operation): New predicate.
7182         (nds32_store_multiple_and_update_address_operation): New predicate.
7183
7184 2018-03-04  Kito Cheng  <kito.cheng@gmail.com>
7185             Chung-Ju Wu  <jasonwucj@gmail.com>
7186
7187         * config/nds32/nds32.md (type): Add load_multiple and store_multiple.
7188         (combo): New attribute.
7189         * config/nds32/nds32-multiple.md: Refine patterns with new attributes.
7190
7191 2018-03-03  Chung-Ju Wu  <jasonwucj@gmail.com>
7192
7193         * config/nds32/nds32.opt: Change -mcmodel= default value.
7194
7195 2018-03-03  Kito Cheng  <kito.cheng@gmail.com>
7196             Monk Chiang  <sh.chiang04@gmail.com>
7197             Chung-Ju Wu  <jasonwucj@gmail.com>
7198
7199         * config/nds32/constants.md (unspec_element): New enum.
7200         * config/nds32/constraints.md (Umw): New constraint.
7201         * config/nds32/nds32-intrinsic.c: Add more builtin functions.
7202         * config/nds32/nds32-intrinsic.md: Likewise.
7203         * config/nds32/nds32-md-auxiliary.c (nds32_regno_to_enable4): New.
7204         (nds32_valid_smw_lwm_base_p): New.
7205         (nds32_output_smw_single_word): New.
7206         (nds32_output_lmw_single_word): New.
7207         (nds32_expand_unaligned_load): New.
7208         (nds32_expand_unaligned_store): New.
7209         * config/nds32/nds32-protos.h (nds32_valid_smw_lwm_base_p): Declare.
7210         (nds32_output_smw_single_word): Declare.
7211         (nds32_output_lmw_single_word): Declare.
7212         (nds32_expand_unaligned_load): Declare.
7213         (nds32_expand_unaligned_store): Declare.
7214         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_UALOAD_HW,
7215         NDS32_BUILTIN_UALOAD_W, NDS32_BUILTIN_UALOAD_DW,
7216         NDS32_BUILTIN_UASTORE_HW, NDS32_BUILTIN_UASTORE_W,
7217         NDS32_BUILTIN_UASTORE_DW.
7218         * config/nds32/predicates.md (nds32_lmw_smw_base_operand): New
7219         predicate.
7220
7221 2018-03-03  Monk Chiang  <sh.chiang04@gmail.com>
7222             Kito Cheng  <kito.cheng@gmail.com>
7223             Chung-Ju Wu  <jasonwucj@gmail.com>
7224
7225         * config/nds32/nds32-intrinsic.c
7226         (nds32_expand_builtin_null_ftype_reg): Delete.
7227         (nds32_expand_builtin_reg_ftype_imm): Ditto.
7228         (nds32_expand_builtin_null_ftype_reg_imm): Ditto.
7229         (nds32_read_argument): New.
7230         (nds32_legitimize_target): Ditto.
7231         (nds32_legitimize_argument): Ditto.
7232         (nds32_check_constant_argument): Ditto.
7233         (nds32_expand_unop_builtin): Ditto.
7234         (nds32_expand_unopimm_builtin): Ditto.
7235         (nds32_expand_binop_builtin): Ditto.
7236         (nds32_builtin_decl_impl): Ditto.
7237         (builtin_description): Ditto.
7238         (nds32_expand_builtin_impl): Rewrite with new infrastructure.
7239         (nds32_init_builtins_impl): Ditto.
7240         * config/nds32/nds32.c (TARGET_BUILTIN_DECL): Define.
7241         (nds32_builtin_decl): New.
7242         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_COUNT.
7243         * config/nds32/nds32-protos.h (nds32_builtin_decl_impl): Declare.
7244
7245 2018-03-02  Jeff Law  <law@redhat.com>
7246
7247         * reorg.c (stop_search_p): Handle DEBUG_INSN.
7248         (redundant_insn, fill_simple_delay_slots): Likewise.
7249         (fill_slots_from_thread): Likewise.
7250         * resource.c (mark_referenced_resources): Likewise.
7251         (mark_set_resources, find_dead_or_set_registers): Likewise.
7252
7253 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
7254
7255         * substring-locations.h (format_warning_va): Formatting fix for
7256         ATTRIBUTE_GCC_DIAG.
7257         (format_warning_at_substring): Fix up ATTRIBUTE_GCC_DIAG second
7258         argument.
7259         (format_warning_n_va, format_warning_at_substring_n): New prototypes.
7260         * substring-locations.c: Include intl.h.
7261         (format_warning_va): Turned into small wrapper around
7262         format_warning_n_va, renamed to ...
7263         (format_warning_n_va): ... this, add N and PLURAL_GMSGID arguments,
7264         rename GMSGID to SINGULAR_GMSGID, if SINGULAR_GMSGID != PLURAL_GMSGID,
7265         use ngettext.
7266         (format_warning_at_substring_n): New function.
7267         * gimple-ssa-sprintf.c: Remove GCC diagnostic ignored pragma.
7268         (fmtwarn): Add ATTRIBUTE_GCC_DIAG.  Turn into a copy of
7269         format_warning_at_substring with just a shorter name instead of
7270         const function pointer.
7271         (fmtwarn_n): New function.
7272         (maybe_warn, format_directive, parse_directive): Use fmtwarn_n where
7273         appropriate, get rid of all the fmtstr temporaries, move conditionals
7274         with G_() wrapped string literals directly into fmtwarn arguments,
7275         cast dir.len to (int), formatting fixes.
7276
7277 2018-03-02  Thomas Schwinge  <thomas@codesourcery.com>
7278
7279         * doc/invoke.texi: Remove "Cilk Plus" references.
7280
7281 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
7282             Richard Biener  <rguenther@suse.de>
7283
7284         PR ipa/84628
7285         * expr.c (expand_expr_real_1) <case CALL_EXPR>: Don't emit diagnostics
7286         for error or warning attributes if CALL_FROM_THUNK_P is set.
7287         Formatting fixes.
7288
7289 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
7290
7291         PR target/56540
7292         * config/pa/pa.h (TARGET_CPU_CPP_BUILTINS): Predefine
7293         __SIZEOF_128__ macro if HPUX_LONG_DOUBLE_LIBRARY.
7294
7295         PR target/56540
7296         * config/ia64/ia64.h (TARGET_CPU_CPP_BUILTINS): Predefine
7297         __SIZEOF_{FPREG,FLOAT{80,128}}__ macros.
7298
7299         * predict.c (test_prediction_value_range): Use PROB_UNINITIALIZED
7300         instead of -1U in last predictors element's probability member.
7301
7302 2018-03-02  Eric Botcazou  <ebotcazou@adacore.com>
7303
7304         PR ipa/83983
7305         * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
7306         arguments if they are comparable.
7307
7308 2018-03-02  Richard Sandiford  <richard.sandiford@linaro.org>
7309
7310         PR tree-optimization/84634
7311         * tree-vect-stmts.c (vectorizable_store, vectorizable_load): Replace
7312         masks and masked_loop_p with a single loop_masks, making sure it's
7313         null for bb vectorization.
7314
7315 2018-03-02  Richard Sandiford  <richard.sandiford@linaro.org>
7316
7317         * tree-vect-data-refs.c (vect_analyze_data_ref_dependence)
7318         (vect_analyze_data_ref_access): Use loop->safe_len rather than
7319         loop->force_vectorize to check whether there is no alias.
7320
7321 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
7322
7323         PR target/84614
7324         * rtl.h (prev_real_nondebug_insn, next_real_nondebug_insn): New
7325         prototypes.
7326         * emit-rtl.c (next_real_insn, prev_real_insn): Fix up function
7327         comments.
7328         (next_real_nondebug_insn, prev_real_nondebug_insn): New functions.
7329         * cfgcleanup.c (try_head_merge_bb): Use prev_real_nondebug_insn
7330         instead of a loop around prev_real_insn.
7331         * combine.c (move_deaths): Use prev_real_nondebug_insn instead of
7332         prev_real_insn.
7333
7334         PR inline-asm/84625
7335         * config/i386/i386.c (ix86_print_operand): Use conditional
7336         output_operand_lossage instead of gcc_assert if CONST_VECTOR is not
7337         zero vector.
7338
7339 2018-03-02  Richard Biener  <rguenther@suse.de>
7340
7341         PR tree-optimization/84427
7342         * tree-ssa-pre.c (bitmap_remove_expr_from_set): Remove.
7343         (bitmap_set_subtract_values): Rewrite to handle multiple
7344         exprs per value.
7345         (clean): Likewise.
7346         (prune_clobbered_mems): Likewise.
7347         (phi_translate): Take edge instead of pred/phiblock.
7348         (phi_translate_1): Likewise.
7349         (phi_translate_set): Likewise.  Insert all translated
7350         exprs for a value into the set, keeping possibly multiple
7351         expressions per value.
7352         (compute_antic_aux): Adjust for phi_translate changes.
7353         When intersecting union the expressions and prune those
7354         not in the final value set, keeping possibly multiple
7355         expressions per value.  Do not use value-insertion
7356         for unioning ANTIC_OUT U EXP_GEN - TMP_GEN but merge
7357         all expressions.  Add verification that the value-sets
7358         only shrink during iteration.
7359         (compute_partial_antic_aux): Adjust for the phi_translate changes.
7360         (do_pre_regular_insertion): Likewise.
7361         (do_pre_partial_partial_insertion): Likewise.
7362
7363 2018-03-02  Richard Biener  <rguenther@suse.de>
7364
7365         PR target/82005
7366         * config/darwin.c (saved_debug_info_level): New static global.
7367         (darwin_asm_lto_start): Disable debug info generation for LTO out.
7368         (darwin_asm_lto_end): Restore debug info generation settings.
7369
7370 2018-03-01  Martin Liska  <mliska@suse.cz>
7371
7372         PR sanitizer/82484
7373         * sanopt.c (sanitize_rewrite_addressable_params): Do not handle
7374         volatile arguments.
7375
7376 2018-03-01  Richard Biener  <rguenther@suse.de>
7377
7378         PR debug/84645
7379         * dwarf2out.c (gen_variable_die): Properly handle late VLA
7380         type annotation with LTO when debug was disabled at compile-time.
7381
7382 2018-03-01  Matthew Fortune  <mfortune@gmail.com>
7383
7384         * config/mips/mips.c (mips_final_prescan_insn): Fix incorrect
7385         XINT with INTVAL.
7386         (mips_final_postscan_insn): Likewise.
7387
7388 2018-03-01  Richard Sandiford  <richard.sandiford@linaro.org>
7389
7390         PR rtl-optimization/84528
7391         * alias.c (init_alias_target): Add commentary.
7392         (init_alias_analysis): Only give HARD_FRAME_POINTER_REGNUM
7393         a unique base value if the frame pointer is not eliminated
7394         to the stack pointer.
7395
7396 2018-03-01  Tom de Vries  <tom@codesourcery.com>
7397
7398         PR rtl-optimization/83327
7399         * lra-int.h (hard_regs_spilled_into): Declare.
7400         * lra.c (hard_regs_spilled_into): Define.
7401         (init_reg_info): Init hard_regs_spilled_into.
7402         * lra-spills.c (assign_spill_hard_regs): Update hard_regs_spilled_into.
7403         * lra-lives.c (make_hard_regno_born, make_hard_regno_dead)
7404         (process_bb_lives): Handle hard_regs_spilled_into.
7405         (lra_create_live_ranges_1): Before doing liveness propagation, clear
7406         regs in all_hard_regs_bitmap if set in hard_regs_spilled_into.
7407
7408 2018-02-28  David Edelsohn  <dje.gcc@gmail.com>
7409
7410         * config.gcc (powerpc-ibm-aix7.1.*): New stanza.
7411         (powerpc-ibm-aix[789]*): Default to AIX 7.2.
7412         * config/rs6000/aix71.h (TARGET_DEFAULT): Revert to Power4 ISA.
7413         * config/rs6000/aix72.h: New file.
7414
7415 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
7416
7417         * gimple-ssa-warn-restrict.c (maybe_diag_overlap): Use warning_n
7418         instead of warning_at with conditional singular and plural messages
7419         where possible.
7420
7421         PR target/52991
7422         * stor-layout.c (update_alignment_for_field): For
7423         targetm.ms_bitfield_layout_p (rli->t), if !is_bitfield
7424         && !DECL_PACKED (field), do the alignment update, just use
7425         only desired_align instead of MAX (type_align, desired_align)
7426         as the alignment.
7427         (place_field): Don't do known_align < desired_align handling
7428         early if targetm.ms_bitfield_layout_p (rli->t) and rli->prev_field
7429         is non-NULL, instead do it after rli->prev_field handling and
7430         only if not within a bitfield word.  For DECL_PACKED (field)
7431         use type_align of BITS_PER_UNIT.
7432
7433 2018-02-28  Eric Botcazou  <ebotcazou@adacore.com>
7434
7435         * config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Remove
7436         superfluous parentheses and trailing spaces.
7437
7438 2018-02-28  Richard Biener  <rguenther@suse.de>
7439
7440         PR tree-optimization/84584
7441         * graphite-scop-detection.c (scop_detection::add_scop): Discard
7442         SCoPs with fake exit edge.
7443
7444 2018-02-28  Martin Liska  <mliska@suse.cz>
7445
7446         PR testsuite/84597
7447         * timevar.c (timer::print): Fix format to properly print 100%
7448         values.
7449
7450 2018-02-28  Richard Biener  <rguenther@suse.de>
7451
7452         PR middle-end/84607
7453         * genmatch.c (capture_info::walk_match): Do not mark
7454         captured expressions without operands as expr_p given
7455         they act more like predicates and should be subject to
7456         "lost tail" side-effect preserving.
7457
7458 2018-02-28  Alexandre Oliva  <aoliva@redhat.com>
7459
7460         PR rtl-optimization/81611
7461         * auto-inc-dec.c (attempt_change): Move dead note from
7462         mem_insn if it's the next use of regno
7463         (find_address): Take address use of reg holding
7464         non-incremented value.  Add parm to limit search to the named
7465         reg only.
7466         (merge_in_block): Attempt to use a mem insn that is the next
7467         use of the original regno.
7468
7469 2018-02-27  Martin Sebor  <msebor@redhat.com>
7470
7471         PR c++/83871
7472         * gcc/doc/invoke.texi (-Wmissing-attributes): New option.
7473         * gcc/print-tree.c (print_node): Handle DECL_UNINLINABLE.
7474
7475 2018-02-27  Martin Sebor  <msebor@redhat.com>
7476
7477         PR translation/84207
7478         * diagnostic-core.h (warning_n, error_n, inform_n): Change
7479         n argument to unsigned HOST_WIDE_INT.
7480         * diagnostic.c (warning_n, error_n, inform_n): Ditto.
7481         (diagnostic_n_impl): Ditto.  Handle arguments in excess of LONG_MAX.
7482         * gimple-ssa-sprintf.c (format_directive): Simplify inform_n call.
7483         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Use warning_n.
7484
7485 2018-02-27  Richard Biener  <rguenther@suse.de>
7486
7487         PR tree-optimization/84512
7488         * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost):
7489         Do not use the estimate returned from record_stmt_cost for
7490         the scalar iteration cost but sum properly using add_stmt_cost.
7491
7492 2018-02-27  Richard Biener  <rguenther@suse.de>
7493
7494         PR tree-optimization/84466
7495         * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
7496         Adjust last change to less strictly validate use operands.
7497
7498 2018-02-27  Martin Liska  <mliska@suse.cz>
7499
7500         PR gcov-profile/84548
7501         * gcov.c (process_file): Allow partial overlap and consider it
7502         also as group functions.
7503         (output_lines): Properly calculate range of lines for a group.
7504
7505 2018-02-27  Martin Liska  <mliska@suse.cz>
7506
7507         * timevar.c (timer::print_row): Remove 'usr', 'sys', 'wall' and
7508         'ggc' suffixes.  Change first column width.
7509         (timer::print): Fix formatting of the column.
7510
7511 2018-02-27  Alexandre Oliva  <aoliva@redhat.com>
7512
7513         * tree-ssa-live.c (remove_unused_scope_block_p): Do not
7514         preserve inline entry blocks for the sake of debug inline
7515         entry point markers alone.
7516         (remove_unused_locals): Suggest in comments a better place to
7517         force the preservation of inline entry blocks that are
7518         otherwise unused, but do not preserve them.
7519
7520 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
7521
7522         * config/i386/i386.c (ix86_output_indirect_jmp): Update comments.
7523
7524 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
7525
7526         PR target/84039
7527         * config/i386/constraints.md (Bs): Replace
7528         ix86_indirect_branch_register with
7529         TARGET_INDIRECT_BRANCH_REGISTER.
7530         (Bw): Likewise.
7531         * config/i386/i386.md (indirect_jump): Likewise.
7532         (tablejump): Likewise.
7533         (*sibcall_memory): Likewise.
7534         (*sibcall_value_memory): Likewise.
7535         Peepholes of indirect call and jump via memory: Likewise.
7536         (*sibcall_GOT_32): Disallowed for TARGET_INDIRECT_BRANCH_REGISTER.
7537         (*sibcall_value_GOT_32): Likewise.
7538         * config/i386/predicates.md (indirect_branch_operand): Likewise.
7539         (GOT_memory_operand): Likewise.
7540         (call_insn_operand): Likewise.
7541         (sibcall_insn_operand): Likewise.
7542         (GOT32_symbol_operand): Likewise.
7543         * config/i386/i386.h (TARGET_INDIRECT_BRANCH_REGISTER): New.
7544
7545 2018-02-26  Eric Botcazou  <ebotcazou@adacore.com>
7546
7547         PR rtl-optimization/83496
7548         * reorg.c (steal_delay_list_from_target): Change REDUNDANT array from
7549         booleans to RTXes.  Call fix_reg_dead_note on every non-null element.
7550         (steal_delay_list_from_fallthrough): Call fix_reg_dead_note on a
7551         redundant insn, if any.
7552         (relax_delay_slots): Likewise.
7553         (update_reg_unused_notes): Rename REDUNDANT_INSN to OTHER_INSN.
7554
7555 2018-02-26  Richard Sandiford  <richard.sandiford@linaro.org>
7556
7557         PR tree-optimization/83965
7558         * tree-vect-patterns.c (vect_reassociating_reduction_p): Assume
7559         that grouped statements are part of a reduction chain.  Return
7560         true if the statement is not marked as a reduction itself but
7561         is part of a group.
7562         (vect_recog_dot_prod_pattern): Don't check whether the statement
7563         is part of a group here.
7564         (vect_recog_sad_pattern): Likewise.
7565         (vect_recog_widen_sum_pattern): Likewise.
7566
7567 2018-02-26  Eric Botcazou  <ebotcazou@adacore.com>
7568
7569         PR debug/84545
7570         * final.c (rest_of_clean_state): Also look for calls inside sequences.
7571
7572 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
7573
7574         PR target/84530
7575         * config/i386/i386-protos.h (ix86_output_indirect_jmp): Remove
7576         the bool argument.
7577         (ix86_output_indirect_function_return): New prototype.
7578         (ix86_split_simple_return_pop_internal): Likewise.
7579         * config/i386/i386.c (indirect_return_via_cx): New.
7580         (indirect_return_via_cx_bnd): Likewise.
7581         (indirect_thunk_name): Handle return va CX_REG.
7582         (output_indirect_thunk_function): Create alias for
7583         __x86_return_thunk_[re]cx and __x86_return_thunk_[re]cx_bnd.
7584         (ix86_output_indirect_jmp): Remove the bool argument.
7585         (ix86_output_indirect_function_return): New function.
7586         (ix86_split_simple_return_pop_internal): Likewise.
7587         * config/i386/i386.md (*indirect_jump): Don't pass false
7588         to ix86_output_indirect_jmp.
7589         (*tablejump_1): Likewise.
7590         (simple_return_pop_internal): Change it to define_insn_and_split.
7591         Call ix86_split_simple_return_pop_internal to split it for
7592         -mfunction-return=.
7593         (simple_return_indirect_internal): Call
7594         ix86_output_indirect_function_return instead of
7595         ix86_output_indirect_jmp.
7596
7597 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
7598
7599         PR bootstrap/84405
7600         * vec.h (vec_default_construct): For BROKEN_VALUE_INITIALIZATION use
7601         memset and value initialization afterwards.
7602
7603 2018-02-26  Christophe Lyon  <christophe.lyon@linaro.org>
7604
7605         * Makefile.in (lto-wrapper): Use ALL_LINKERFLAGS.
7606
7607 2018-02-26  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
7608
7609         PR target/84521
7610         * common/config/aarch64/aarch64-common.c
7611         (aarch_option_optimization_table[]): Switch
7612         off fomit-frame-pointer
7613
7614 2018-02-26  Kito Cheng  <kito.cheng@gmail.com>
7615             Chung-Ju Wu  <jasonwucj@gmail.com>
7616
7617         * config/nds32/nds32-multiple.md (load_multiple): Disallow
7618         volatile memory.
7619         (store_multiple): Ditto.
7620
7621 2018-02-26  Kito Cheng  <kito.cheng@gmail.com>
7622
7623         * config.gcc: Add --with-cpu support for nds32 target.
7624         * config/nds32/nds32-opts.h (nds32_cpu_type): New.
7625         * config/nds32/nds32.opt: Add -mcpu= option.
7626
7627 2018-02-25  Segher Boessenkool  <segher@kernel.crashing.org>
7628
7629         * config/rs6000/rs6000.opt (mvrsave=no, mvrsave=yes, isel=no,
7630         isel=yes): Warn for these deprecated options.
7631
7632 2018-02-23  David Edelsohn  <dje.gcc@gmail.com>
7633
7634         * config/rs6000/aix71.h (TARGET_DEFAULT): Change to
7635         ISA_2_5_MASKS_EMBEDDED.
7636
7637 2018-02-23  Jakub Jelinek  <jakub@redhat.com>
7638
7639         * ipa-prop.c (ipa_vr_ggc_hash_traits::hash): Hash p->min and
7640         p->max as pointers rather than using iterative_hash_expr.
7641
7642 2018-02-23  Carl Love  <cel@us.ibm.com>
7643
7644         * config/rs6000/rs6000-builtin.def: Change VSIGNED2 and VUNSIGNED2
7645         macro expansions from BU_VSX_2 to BU_P8V_VSX_2 and BU_VSX_OVERLOAD_2 to
7646         BU_P8V_OVERLOAD_2.
7647         * config/rs6000/rs6000-c.c: Change VSX_BUILTIN_VEC_VSIGNED2 to
7648         P8V_BUILTIN_VEC_VSIGNED2.  Change VSX_BUILTIN_VEC_VUNSIGNED2 to
7649         P8V_BUILTIN_VEC_VUNSIGNED2.
7650
7651 2018-02-22  Vladimir Makarov  <vmakarov@redhat.com>
7652
7653         PR target/81572
7654         * lra-int.h (LRA_UNKNOWN_ALT, LRA_NON_CLOBBERED_ALT): New macros.
7655         * lra.c (lra_set_insn_recog_data, lra_update_insn_recog_data): Use
7656         LRA_UNKNOWN_ALT.
7657         * lra-constraints.c (curr_insn_transform): Set up
7658         LRA_NON_CLOBBERED_ALT for moves processed on the fast path.  Use
7659         LRA_UNKNOWN_ALT.
7660         (remove_inheritance_pseudos): Use LRA_UNKNOWN_ALT.
7661         * lra-eliminations.c (spill_pseudos): Ditto.
7662         (process_insn_for_elimination): Ditto.
7663         * lra-lives.c (reg_early_clobber_p): Use the new macros.
7664         * lra-spills.c (spill_pseudos): Use LRA_UNKNOWN_ALT and
7665         LRA_NON_CLOBBERED_ALT.
7666
7667 2018-02-22  Martin Sebor  <msebor@redhat.com>
7668
7669         PR tree-optimization/84480
7670         * gimple-fold.c (gimple_fold_builtin_strcpy): Move warnings
7671         to maybe_diag_stxncpy_trunc.  Call it.
7672         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Integrate warnings
7673         from gimple_fold_builtin_strcpy.  Print inlining stack.
7674         (handle_builtin_stxncpy): Print inlining stack.
7675         * tree-ssa-strlen.h (maybe_diag_stxncpy_trunc): Declare.
7676
7677 2018-02-22  H.J. Lu  <hongjiu.lu@intel.com>
7678
7679         PR target/84176
7680         * config/i386/i386.c (ix86_set_indirect_branch_type): Issue an
7681         error when -mindirect-branch=thunk-extern, -fcf-protection=branch
7682         and -fcheck-pointer-bounds are used together.
7683         (indirect_thunk_prefix): New enum.
7684         (indirect_thunk_need_prefix): New function.
7685         (indirect_thunk_name): Replace need_bnd_p with need_prefix.  Use
7686         "_nt" instead of "_bnd" for NOTRACK prefix.
7687         (output_indirect_thunk): Replace need_bnd_p with need_prefix.
7688         (output_indirect_thunk_function): Likewise.
7689         (): Likewise.
7690         (ix86_code_end): Update output_indirect_thunk_function calls.
7691         (ix86_output_indirect_branch_via_reg): Replace
7692         ix86_bnd_prefixed_insn_p with indirect_thunk_need_prefix.
7693         (ix86_output_indirect_branch_via_push): Likewise.
7694         (ix86_output_function_return): Likewise.
7695         * doc/invoke.texi: Document -mindirect-branch=thunk-extern is
7696         incompatible with -fcf-protection=branch and
7697         -fcheck-pointer-bounds.
7698
7699 2018-02-22  Steve Ellcey  <sellcey@cavium.com>
7700
7701         PR target/83335
7702         * config/aarch64/aarch64.c (aarch64_print_address_internal):
7703         Change gcc_assert call to output_operand_lossage.
7704
7705 2018-02-22  Steve Ellcey  <sellcey@cavium.com>
7706
7707         * doc/extend.texi (__builtin_extend_pointer): Document builtin.
7708
7709 2018-02-22  DJ Delorie  <dj@redhat.com>
7710             Sebastian Perta  <sebastian.perta@renesas.com>
7711             Oleg Endo  <olegendo@gcc.gnu.org>
7712
7713         * config/rx/rx.c (rx_rtx_costs): New function.
7714         (TARGET_RTX_COSTS): Override to use rx_rtx_costs.
7715
7716 2018-02-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
7717
7718         * config/arm/t-multilib: Map Armv8-R to Armv7 multilibs.
7719
7720 2018-02-22  Martin Liska  <mliska@suse.cz>
7721
7722         PR driver/83193
7723         * common/config/arm/arm-common.c (arm_print_hint_for_cpu_option):
7724         Add "native" as a possible value.
7725
7726 2018-02-22  Martin Liska  <mliska@suse.cz>
7727
7728         PR driver/83193
7729         * config/i386/i386.c (ix86_option_override_internal):
7730         Add "native" as a possible value for -march and -mtune.
7731
7732 2018-02-22  Jakub Jelinek  <jakub@redhat.com>
7733
7734         PR target/84502
7735         * stor-layout.c (finalize_type_size): Propagate TYPE_EMPTY_P flag
7736         to all type variants.
7737
7738         PR tree-optimization/84503
7739         * gimple-ssa-store-merging.c (merged_store_group::merge_into): Compute
7740         width as info->bitpos + info->bitsize - start.
7741         (merged_store_group::merge_overlapping): Simplify width computation.
7742         (check_no_overlap): New function.
7743         (imm_store_chain_info::try_coalesce_bswap): Compute expected
7744         start + width and last_order of the group, fail if check_no_overlap
7745         fails.
7746         (imm_store_chain_info::coalesce_immediate_stores): Don't merge info
7747         to group if check_no_overlap fails.
7748
7749 2018-02-21  Segher Boessenkool  <segher@kernel.crashing.org>
7750
7751         * config/rs6000/altivec.md: Delete contraint arguments to
7752         define_expand, define_split, and define_peephole2, and in
7753         define_insn_and_split if always unused.
7754         * config/rs6000/darwin.md: Ditto.
7755         * config/rs6000/dfp.md: Ditto.
7756         * config/rs6000/rs6000.md: Ditto.
7757         * config/rs6000/sync.md: Ditto.
7758         * config/rs6000/vector.md: Ditto.
7759         * config/rs6000/vsx.md: Ditto.
7760
7761 2018-02-21  Segher Boessenkool  <segher@kernel.crashing.org>
7762
7763         * config/rs6000/altivec.md: Write output control strings as braced
7764         blocks instead of double-quoted strings.
7765         * config/rs6000/darwin.md: Ditto.
7766         * config/rs6000/rs6000.md: Ditto.
7767         * config/rs6000/vector.md: Ditto.
7768         * config/rs6000/vsx.md: Ditto.
7769
7770 2018-02-21  Jason Merrill  <jason@redhat.com>
7771
7772         PR c++/84314 - ICE with templates and fastcall attribute.
7773         * attribs.c (build_type_attribute_qual_variant): Remove assert.
7774
7775 2018-02-21  Jan Hubicka  <hubicka@ucw.cz>
7776
7777         * ipa-cp.c (determine_versionability): Fix comment typos.
7778
7779 2018-02-21  Jan Hubicka  <hubicka@ucw.cz>
7780
7781         PR c/84229
7782         * ipa-cp.c (determine_versionability): Do not version functions caling
7783         va_arg_pack.
7784
7785 2018-02-21  Martin Liska  <mliska@suse.cz>
7786
7787         PR driver/83193
7788         * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch):
7789         Add "native" as a possible value.
7790         * config/aarch64/aarch64.h (HAVE_LOCAL_CPU_DETECT):  Define
7791         the macro when native cpu detection is available.
7792
7793 2018-02-21  Martin Liska  <mliska@suse.cz>
7794
7795         PR driver/83193
7796         * common/config/arm/arm-common.c (arm_print_hint_for_arch_option):
7797         Add "native" as a possible value.
7798         * config/arm/arm.h (HAVE_LOCAL_CPU_DETECT): Define the macro
7799         when native cpu detection is available.
7800
7801 2018-02-21  Jakub Jelinek  <jakub@redhat.com>
7802             Martin Sebor  <msebor@redhat.com>
7803
7804         PR tree-optimization/84478
7805         * gimple-fold.h (get_range_strlen): Add a bool argument defaulted to
7806         false.
7807         * gimple-fold.c (get_range_strlen): Make minlen const and assume it
7808         can't be NULL.  Change FUZZY from bool to int, for 1 add PHI/COND_EXPR
7809         support which is conservatively correct, for 2 only stay conservative
7810         for maxlen.  Formatting and comment capitalization fixes.  Add STRICT
7811         argument to the 2 argument get_range_strlen, adjust 6 arg
7812         get_range_strlen caller and clear minmaxlen[0] and [1] if it returned
7813         false.
7814         (get_maxval_strlen): Adjust 6 arg get_range_strlen caller.
7815         (gimple_fold_builtin_strlen): Pass true as last argument to
7816         get_range_strlen.
7817
7818 2018-02-20  Martin Sebor  <msebor@redhat.com>
7819
7820         PR middle-end/84095
7821         * gimple-ssa-warn-restrict.c (builtin_memref::extend_offset_range): New.
7822         (builtin_memref::set_base_and_offset): Same.  Handle inner references.
7823         (builtin_memref::builtin_memref): Factor out parts into
7824         set_base_and_offset and call it.
7825
7826 2018-02-20  Richard Sandiford  <richard.sandiford@linaro.org>
7827
7828         PR middle-end/84406
7829         * optabs-query.c (find_widening_optab_handler_and_mode): If from_mode
7830         is a scalar_int_mode, assert that to_mode is a scalar_int_mode with
7831         greater precision.  If to_mode is a MODE_PARTIAL_INT, stop the
7832         search at the associated MODE_INT.
7833
7834 2018-02-20  Jeff Law  <law@redhat.com>
7835
7836         PR middle-end/82123
7837         PR tree-optimization/81592
7838         PR middle-end/79257
7839         * gimple-ssa-sprintf.c (format_integer): Query EVRP range analyzer
7840         for range data rather than using global data.
7841         * gimple-ssa-sprintf.c (get_int_range): Query EVRP range analyzer for
7842         range data rather than using global data.
7843         * gimple-ssa-sprintf.c (get_int_range): Accept vr_values parameter
7844         pass it to children as needed.
7845         (struct directive::fmtresult): Similarly.
7846         (struct directive::set_width): Similarly.
7847         (struct directive::set_precision): Similarly.
7848         (format_integer, format_directive, parse_directive): Similarly.
7849         (format_none): Accept unnamed vr_values parameter.
7850         (format_percent, format_floating, format_character): Similarly.
7851         (format_string, format_plain): Similarly.
7852         * gimple-ssa-sprintf.c (sprintf_dom_walker::handle_gimple_call): Query
7853         the EVRP range analyzer for range data rather than using global data.
7854         * gimple-ssa-sprintf.c: Include alloc-pool.h, vr-values.h and 
7855         gimple-ssa-evrp-analyze.h
7856         (class sprintf_dom_walker): Add after_dom_children member function.
7857         Add evrp_range_analyzer member.
7858         (sprintf_dom_walker::before_dom_children): Call into the EVRP
7859         range analyzer as needed.
7860         (sprintf_dom_walker::after_dom_children): New member function.
7861         * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::enter): Do nothing
7862         if not optimizing.
7863         (evrp_range_analyzer::record_ranges_from_stmt): Likewise.
7864         (evrp_range_analyzer::pop_to_marker): Likewise.
7865
7866 2018-02-20  Richard Sandiford  <richard.sandiford@linaro.org>
7867
7868         PR tree-optimization/84419
7869         * internal-fn.c (expand_call_mem_ref): Create a TARGET_MEM_REF
7870         with the required type if its current type is compatible but
7871         different.
7872
7873 2018-02-20  Jakub Jelinek  <jakub@redhat.com>
7874
7875         PR middle-end/82004
7876         * match.pd (pow(C,x) -> exp(log(C)*x)): Delay all folding until
7877         after vectorization.
7878
7879 2018-02-20  Martin Liska  <mliska@suse.cz>
7880
7881         PR driver/83193
7882         * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch): Print
7883         possible values if we don't have a hint.
7884
7885 2018-02-20  Martin Liska  <mliska@suse.cz>
7886
7887         PR c/84310
7888         PR target/79747
7889         * final.c (shorten_branches): Build align_tab array with one
7890         more element.
7891         * opts.c (finish_options): Add alignment option limit check.
7892         (MAX_CODE_ALIGN): Likewise.
7893         (MAX_CODE_ALIGN_VALUE): Likewise.
7894         * doc/invoke.texi: Document maximum allowed option value for
7895         all -falign-* options.
7896
7897 2018-02-19  Jakub Jelinek  <jakub@redhat.com>
7898
7899         PR target/84146
7900         * reg-notes.def (REG_CALL_ARG_LOCATION): New reg note.
7901         * insn-notes.def (NOTE_INSN_CALL_ARG_LOCATION): Remove.
7902         * var-tracking.c (emit_note_insn_var_location): Remove all references
7903         to NOTE_INSN_CALL_ARG_LOCATION.
7904         (emit_notes_in_bb): Emit arguments as REG_CALL_ARG_LOCATION note on
7905         the CALL_INSN rather than separate NOTE_INSN_CALL_ARG_LOCATION note.
7906         Use copy_rtx_if_shared.
7907         * dwarf2out.c (gen_subprogram_die): Use XEXP with 0 instead of
7908         NOTE_VAR_LOCATION on ca_loc->call_arg_loc_note.
7909         (dwarf2out_var_location): Remove handling of
7910         NOTE_INSN_CALL_ARG_LOCATION, instead handle REG_CALL_ARG_LOCATION note
7911         on call_insn.
7912         * final.c (final_scan_insn): Remove all references to
7913         NOTE_INSN_CALL_ARG_LOCATION.
7914         (rest_of_clean_state): Likewise.  Remove REG_CALL_ARG_LOCATION notes
7915         before dumping final insns.
7916         * except.c (emit_note_eh_region_end): Remove all references to
7917         NOTE_INSN_CALL_ARG_LOCATION.
7918         * config/alpha/alpha.c (alpha_pad_function_end): Likewise.
7919         * config/c6x/c6x.c (c6x_gen_bundles): Likewise.
7920         * config/arc/arc.c (hwloop_optimize): Likewise.
7921         * config/arm/arm.c (create_fix_barrier): Likewise.
7922         * config/s390/s390.c (s390_chunkify_start): Likewise.
7923         * config/sh/sh.c (find_barrier): Likewise.
7924         * config/i386/i386.c (rest_of_insert_endbranch,
7925         ix86_seh_fixup_eh_fallthru): Likewise.
7926         * config/xtensa/xtensa.c (hwloop_optimize): Likewise.
7927         * config/iq2000/iq2000.c (final_prescan_insn): Likewise.
7928         * config/frv/frv.c (frv_function_prologue): Likewise.
7929         * emit-rtl.c (try_split): Likewise.  Copy over REG_CALL_ARG_LOCATION
7930         reg note.
7931         (note_outside_basic_block_p): Remove all references to
7932         NOTE_INSN_CALL_ARG_LOCATION.
7933         * gengtype.c (adjust_field_rtx_def): Likewise.
7934         * print-rtl.c (rtx_writer::print_rtx_operand_code_0, print_insn):
7935         Likewise.
7936         * jump.c (cleanup_barriers, delete_related_insns): Likewise.
7937         * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
7938
7939         PR c++/84444
7940         * builtins.c (builtin_mathfn_code): Don't check if CALL_EXPR_FN (t)
7941         is ADDR_EXPR.
7942
7943         PR tree-optimization/84452
7944         * tree-vect-patterns.c (vect_recog_pow_pattern): Don't call
7945         expand_simd_clones if targetm.simd_clone.compute_vecsize_and_simdlen
7946         is NULL.
7947
7948 2018-02-19  Martin Liska  <mliska@suse.cz>
7949
7950         PR sanitizer/82183
7951         * passes.def: Put pass_sancov_O0 before pass_lower_switch with -O0.
7952
7953 2018-02-19  Martin Liska  <mliska@suse.cz>
7954             Richard Sandiford  <richard.sandiford@linaro.org>
7955
7956         PR tree-optimization/82491
7957         * gimple-fold.c (get_base_constructor): Make earlier bail out
7958         to prevent ubsan.
7959
7960 2018-02-19  Carl Love  <cel@us.ibm.com>
7961
7962         * config/rs6000/rs6000-builtin.def: Change NEG macro expansions from
7963         BU_ALTIVEC_A to BU_P8V_AV_1 and BU_ALTIVEC_OVERLOAD_1 to
7964         BU_P8V_OVERLOAD_1.
7965         * config/rs6000/rs6000-c.c: Change ALTIVEC_BUILTIN_VEC_NEG to
7966         P8V_BUILTIN_VEC_NEG.
7967
7968 2018-02-19  Sebastian Perta  <sebastian.perta@renesas.com>
7969
7970         * config/rl78/rl78.md (movdf): New define expand.
7971
7972 2018-02-19  Martin Liska  <mliska@suse.cz>
7973
7974         PR other/80589
7975         * doc/invoke.texi: Fix typo.
7976         * params.def (PARAM_MAX_LOOP_HEADER_INSNS): Likewise.
7977
7978 2018-02-18  Segher Boessenkool  <segher@kernel.crashing.org>
7979
7980         * config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
7981         handle rs6000_single_float and rs6000_double_float specially for
7982         e500 family CPUs.
7983
7984 2018-02-16  Jeff Law  <law@redhat.com>
7985
7986         * config/rx/rx.c (add_pop_cfi_notes): New function.;
7987         (pop_regs): Use it.
7988
7989 2018-02-16  Jakub Jelinek  <jakub@redhat.com>
7990
7991         PR ipa/84425
7992         * ipa-inline.c (inline_small_functions): Fix a typo.
7993
7994 2018-02-16  Nathan Sidwell  <nathan@acm.org>
7995
7996         * doc/extend.texi (Backwards Compatibility): Americanize 'behaviour'.
7997
7998 2018-02-16  Carl Love  <cel@us.ibm.com>
7999
8000         * config/rs6000/rs6000-builtin.def: Add BU_P8V_VSX_2 macro definition.
8001         Change FLOAT2 expansions from BU_VSX_2 to BU_P8V_VSX_2 and
8002         from BU_VSX_OVERLOAD_2 to BU_P8V_OVERLOAD_2.
8003         * config/rs6000/rs6000-c.c: Changed macro VSX_BUILTIN_VEC_FLOAT2
8004         expansion to P8V_BUILTIN_VEC_FLOAT2.
8005
8006 2018-02-16  Vladimir Makarov  <vmakarov@redhat.com>
8007
8008         PR rtl-optimization/70023
8009         * lra-constraints.c (inherit_in_ebb): Take hard reg mode of
8010         src_regno into account.
8011
8012 2018-02-16  Carl Love  <cel@us.ibm.com>
8013
8014         * config/rs6000/altivec.h: Remove vec_vextract4b and vec_vinsert4b.
8015         * config/rs6000/rs6000-builtin.def: Remove macro expansion for
8016         VEXTRACT4B, VINSERT4B, VINSERT4B_DI and VEXTRACT4B.
8017         * config/rs6000/rs6000.c: Remove case statements for
8018         P9V_BUILTIN_VEXTRACT4B, P9V_BUILTIN_VEC_VEXTRACT4B,
8019         P9V_BUILTIN_VINSERT4B, P9V_BUILTIN_VINSERT4B_DI,
8020         and P9V_BUILTIN_VEC_VINSERT4B.
8021         * config/rs6000/rs6000-c.c (altivec_expand_builtin): Remove entries for
8022         P9V_BUILTIN_VEC_VEXTRACT4B and P9V_BUILTIN_VEC_VINSERT4B.
8023         * config/rs6000/vsx.md:
8024         * doc/extend.texi: Remove vec_vextract4b, non ABI definitions for
8025         vec_insert4b.
8026
8027 2018-02-16  Carl Love  <cel@us.ibm.com>
8028
8029         * config/rs6000/altivec.h: Add builtin names vec_extract4b
8030         vec_insert4b.
8031         * config/rs6000/rs6000-builtin.def: Add INSERT4B and EXTRACT4B
8032         definitions.
8033         * config/rs6000/rs6000-c.c: Add the definitions for
8034         P9V_BUILTIN_VEC_EXTRACT4B and P9V_BUILTIN_VEC_INSERT4B.
8035         * config/rs6000/rs6000.c (altivec_expand_builtin): Add
8036         P9V_BUILTIN_EXTRACT4B and P9V_BUILTIN_INSERT4B case statements.
8037         * config/rs6000/vsx.md: Add define_insn extract4b.  Add define_expand
8038         definition for insert4b and define insn *insert3b_internal.
8039         * doc/extend.texi: Add documentation for vec_extract4b.
8040
8041 2018-02-16  Nathan Sidwell  <nathan@acm.org>
8042
8043         * doc/extend.texi (Backwards Compatibility): Mention friend
8044         injection.  Note for-scope is deprecated.
8045         * doc/invoke.texi (-ffriend-injection): Deprecate.
8046
8047 2018-02-16  Segher Boessenkool  <segher@kernel.crashing.org>
8048
8049         * combine.c (try_combine): When adjusting LOG_LINKS for the destination
8050         that moved to I2, also allow destinations that are a paradoxical
8051         subreg (instead of a normal reg).
8052
8053 2018-02-16  Oleg Endo  <olegendo@gcc.gnu.org>
8054
8055         PR target/83831
8056         * config/rx/rx.c (rx_fuse_in_memory_bitop): Convert shift operand
8057         to QImode.
8058
8059 2018-02-16  Richard Biener  <rguenther@suse.de>
8060
8061         PR tree-optimization/84037
8062         PR tree-optimization/84016
8063         PR target/82862
8064         * config/i386/i386.c (ix86_builtin_vectorization_cost):
8065         Adjust vec_construct for the fact we need additional higher latency
8066         128bit inserts for AVX256 and AVX512 vector builds.
8067         (ix86_add_stmt_cost): Scale vector construction cost for
8068         elementwise loads.
8069
8070 2018-02-16  Richard Biener  <rguenther@suse.de>
8071
8072         PR tree-optimization/84417
8073         * tree-ssa.c (non_rewritable_mem_ref_base): Properly constrain
8074         the MEM_REF offset when conversion to BIT_FIELD_REF is desired.
8075         (non_rewritable_lvalue_p): Likewise, use poly-ints.
8076
8077 2018-02-16  Martin Liska  <mliska@suse.cz>
8078
8079         PR sanitizer/84307
8080         * internal-fn.def (ASAN_CHECK): Set proper flags.
8081         (ASAN_MARK): Likewise.
8082
8083 2018-02-16  Julia Koval  <julia.koval@intel.com>
8084
8085         * config/i386/i386.c (ix86_option_override_internal): Remove PTA_CLWB
8086         from PTA_CANNONLAKE.
8087
8088 2018-02-16  Jakub Jelinek  <jakub@redhat.com>
8089
8090         PR target/84272
8091         * config/aarch64/cortex-a57-fma-steering.c (fma_forest::merge_forest):
8092         Use ++iter rather than iter++ for std::list iterators.
8093         (func_fma_steering::dfs): Likewise.  Don't delete nodes right away,
8094         defer deleting them until all nodes in the forest are processed.  Do
8095         free even leaf nodes.  Change to_process into auto_vec.
8096
8097         PR bootstrap/84405
8098         * system.h (BROKEN_VALUE_INITIALIZATION): Define for GCC < 4.3.
8099         * vec.h (vec_default_construct): Use memset instead of placement new
8100         if BROKEN_VALUE_INITIALIZATION is defined.
8101         * hash-table.h (hash_table<Descriptor, Allocator>::empty_slow): Use
8102         memset instead of value initialization if BROKEN_VALUE_INITIALIZATION
8103         is defined.
8104
8105         PR rtl-optimization/83723
8106         * lra-int.h (lra_substitute_pseudo): Add DEBUG_P argument.
8107         * lra.c (lra_substitute_pseudo): Likewise.  If true, use
8108         gen_rtx_raw_SUBREG instead of gen_rtx_SUBREG.  Pass DEBUG_P to
8109         recursive calls.
8110         (lra_substitute_pseudo_within_insn): Adjust lra_substitute_pseudo
8111         callers.
8112         * lra-constraints.c (inherit_reload_reg, split_reg): Likewise.
8113
8114 2018-02-16  Eric Botcazou  <ebotcazou@adacore.com>
8115
8116         PR rtl-optimization/81443
8117         * rtlanal.c (num_sign_bit_copies1) <SUBREG>: Do not propagate results
8118         from inner REGs to paradoxical SUBREGs.
8119
8120 2018-02-16  Richard Biener  <rguenther@suse.de>
8121
8122         PR tree-optimization/84399
8123         * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
8124         For operands we can analyze at their definition make sure we can
8125         analyze them at each use as well.
8126
8127 2018-02-16  Richard Biener  <rguenther@suse.de>
8128
8129         PR tree-optimization/84190
8130         * tree-ssa.c (non_rewritable_mem_ref_base): Do not touch
8131         volatile accesses if the decl isn't volatile.
8132
8133 2018-02-15  Jason Merrill  <jason@redhat.com>
8134
8135         PR c++/84314 - ICE with templates and fastcall attribute.
8136         * attribs.c (build_type_attribute_qual_variant): Don't clobber
8137         TYPE_CANONICAL on an existing type.
8138
8139 2018-02-15  Jakub Jelinek  <jakub@redhat.com>
8140
8141         PR tree-optimization/84383
8142         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Don't look at
8143         dstoff nor call operand_equal_p if dstbase is NULL.
8144
8145         PR tree-optimization/84334
8146         * match.pd ((A +- CST1) +- CST2 -> A + CST3): If A is
8147         also a CONSTANT_CLASS_P, punt.
8148
8149 2018-02-14  Jim Wilson  <jimw@sifive.com>
8150
8151         * config/riscv/riscv.c (riscv_first_stack_step): Move locals after
8152         first SMALL_OPERAND check.  New local min_second_step.  Move assert
8153         to where locals are set.  Add TARGET_RVC support.
8154         * config/riscv/riscv.h (C_SxSP_BITS, SWSP_REACH, SDSP_REACH): New.
8155
8156 2018-02-14  Indu Bhagat  <indu.bhagat@oracle.com>
8157
8158         * doc/invoke.texi: Correct -Wformat-overflow code sample.
8159
8160 2018-02-14  Martin Sebor  <msebor@redhat.com>
8161
8162         PR tree-optimization/83698
8163         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For
8164         arrays constrain the offset range to their bounds.
8165         (builtin_access::strcat_overlap): Adjust the bounds of overlap offset.
8166         (builtin_access::overlap): Avoid setting the size of overlap if it's
8167         already been set.
8168         (maybe_diag_overlap): Also consider arrays when deciding what values
8169         of offsets to include in diagnostics.
8170
8171 2018-02-14  Martin Sebor  <msebor@redhat.com>
8172
8173         PR c/84108
8174         * attribs.c (diag_attr_exclusions): Consider the exclusion(s)
8175         that correspond to the kind of a declaration.
8176
8177 2018-02-14  John David Anglin  <danglin@gcc.gnu.org>
8178
8179         PR target/83984
8180         * config/pa/pa.md: Load address of PIC label using the linkage table
8181         if the label is nonlocal.
8182
8183 2018-02-14  Kelvin Nilsen  <kelvin@gcc.gnu.org>
8184
8185         * config/rs6000/rs6000.c (rs6000_option_override_internal): Issue
8186         warning message if user requests -maltivec=be.
8187         * doc/invoke.texi: Document deprecation of -maltivec=be.
8188
8189 2018-02-14  Will Schmidt  <will_schmidt@vnet.ibm.com>
8190
8191         PR target/84220
8192         * config/rs6000/rs6000-c.c: Update definitions for
8193         ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VEC_SLDW,
8194         VEC_XXSLDWI and ALTIVEC_BUILTIN_VEC_XXPERMDI builtins.
8195
8196 2018-02-14  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
8197
8198         PR target/84239
8199         * config/i386/cetintrin.h: Remove _rdssp[d|q] and
8200         add _get_ssp intrinsics. Remove argument from
8201         __builtin_ia32_rdssp[d|q].
8202         * config/i386/i386-builtin-types.def: Add UINT_FTYPE_VOID.
8203         * config/i386/i386-builtin.def: Remove argument from
8204         __builtin_ia32_rdssp[d|q].
8205         * config/i386/i386.c: Use UINT_FTYPE_VOID. Use
8206         ix86_expand_special_args_builtin for _rdssp[d|q].
8207         * config/i386/i386.md: Remove argument from rdssp[si|di] insn.
8208         Clear register before usage.
8209         * doc/extend.texi: Remove argument from __builtin_ia32_rdssp[d|q].
8210         Add documentation for new _get_ssp and _inc_ssp intrinsics.
8211
8212 2018-02-14  Richard Sandiford  <richard.sandiford@linaro.org>
8213
8214         PR tree-optimization/84357
8215         * tree-data-ref.c (object_address_invariant_in_loop_p): Check
8216         operand 1 of an ARRAY_REF too.
8217
8218 2018-02-14  Oleg Endo  <olegendo@gcc.gnu.org>
8219
8220         PR target/83831
8221         * config/rx/rx-protos.h (rx_reg_dead_or_unused_after_insn,
8222         rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
8223         declarations.
8224         (set_of_reg): New struct.
8225         (rx_find_set_of_reg, rx_find_use_of_reg): New functions.
8226         * config/rx/rx.c (rx_reg_dead_or_unused_after_insn,
8227         rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
8228         functions.
8229         * config/rx/rx.md (andsi3, iorsi3, xorsi3): Convert to insn_and_split.
8230         Split into bitclr, bitset, bitinvert patterns if appropriate.
8231         (*bitset, *bitinvert, *bitclr): Convert to named insn_and_split and
8232         use rx_fuse_in_memory_bitop.
8233         (*bitset_in_memory, *bitinvert_in_memory, *bitclr_in_memory): Convert
8234         to named insn, correct maximum insn length.
8235
8236 2018-02-14  Jozef Lawrynowicz  <jozefl.gcc@gmail.com>
8237
8238         PR target/79242
8239         * machmode.def: Define a complex mode for PARTIAL_INT.
8240         * genmodes.c (complex_class): Return MODE_COMPLEX_INT for
8241         MODE_PARTIAL_INT.
8242         * doc/rtl.texi: Document CSPImode.
8243         * config/msp430/msp430.c (msp430_hard_regno_nregs): Add CPSImode
8244         handling.
8245         (msp430_hard_regno_nregs_with_padding): Likewise.
8246
8247 2018-02-13  Peter Bergner  <bergner@vnet.ibm.com>
8248
8249         PR target/84279
8250         * config/rs6000/rs6000.c (mem_operand_gpr): Disallow altivec addresses.
8251
8252 2018-02-13  Segher Boessenkool  <segher@kernel.crashing.org>
8253
8254         PR rtl-optimization/84169
8255         * combine.c (try_combine): New variable split_i2i3.  Set it to true if
8256         we generated a parallel as new i3 and we split that to new i2 and i3
8257         instructions.  Handle split_i2i3 similar to swap_i2i3: scan the
8258         LOG_LINKs of i3 to see which of those need to link to i2 now.  Link
8259         those to i2, not i1.  Partially rewrite this scan code.
8260
8261 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
8262
8263         PR c/82210
8264         * stor-layout.c (place_field): For variable length fields, adjust
8265         offset_align afterwards not just based on the field's alignment,
8266         but also on the size.
8267
8268         PR middle-end/84309
8269         * match.pd (pow(C,x) -> exp(log(C)*x)): Use exp2s and log2s instead
8270         of exps and logs in the use_exp2 case.
8271
8272 2018-02-13  Jeff Law  <law@redhat.com>
8273
8274         * config/rl/rl78.c (rl78_attribute_table): Fix terminator and
8275         entry for "vector".
8276
8277         * config/rl78/rl78.c (rl78_handle_func_attribute): Mark
8278         ARGS as unused.
8279
8280 2018-02-13  Alexandre Oliva  <aoliva@redhat.com>
8281
8282         PR debug/84342
8283         PR debug/84319
8284         * common.opt (gas-loc-support, gas-locview-support): New.
8285         (ginline-points, ginternal-reset-location-views): New.
8286         * doc/invoke.texi: Document them.  Use @itemx where intended.
8287         (gvariable-location-views): Adjust.
8288         * target.def (reset_location_view): New.
8289         * doc/tm.texi.in (DWARF2_ASM_VIEW_DEBUG_INFO): New.
8290         (TARGET_RESET_LOCATION_VIEW): New.
8291         * doc/tm.texi: Rebuilt.
8292         * dwarf2out.c (dwarf2out_default_as_loc_support): New.
8293         (dwarf2out_default_as_locview_support): New.
8294         (output_asm_line_debug_info): Use option variables.
8295         (dwarf2out_maybe_output_loclist_view_pair): Likewise.
8296         (output_loc_list): Likewise.
8297         (add_high_low_attributes): Check option variables.
8298         Don't output entry view attribute in strict mode.
8299         (gen_inlined_subroutine_die): Check option variables.
8300         (dwarf2out_inline_entry): Likewise.
8301         (init_sections_and_labels): Likewise.
8302         (dwarf2out_early_finish): Likewise.
8303         (maybe_reset_location_view): New, from...
8304         (dwarf2out_var_location): ... here.  Call it.
8305         * debug.h (dwarf2out_default_as_loc_support): Declare.
8306         (dwarf2out_default_as_locview_support): Declare.
8307         * hooks.c (hook_int_rtx_insn_0): New.
8308         * hooks.h (hook_int_rtx_insn_0): Declare.
8309         * toplev.c (process_options): Take -gas-loc-support and
8310         -gas-locview-support from dwarf2out.  Enable
8311         -gvariable-location-views by default only with locview
8312         assembler support.  Enable -ginternal-reset-location-views by
8313         default only if the target defines the corresponding hook.
8314         Enable -ginline-points by default if location views are
8315         enabled; force it disabled if statement frontiers are
8316         disabled.
8317         * tree-inline.c (expand_call_inline): Check option variables.
8318         * tree-ssa-live.c (remove_unused_scope_block_p): Likewise.
8319
8320 2018-02-13  Richard Sandiford  <richard.sandiford@linaro.org>
8321
8322         PR tree-optimization/84321
8323         * tree-vrp.c (intersect_range_with_nonzero_bits): Fix VR_ANTI_RANGE
8324         handling.  Also check whether the anti-range contains any values
8325         that satisfy the mask; switch to a VR_RANGE if not.
8326
8327 2018-02-13  Paolo Bonzini  <bonzini@gnu.org>
8328
8329         PR sanitizer/84340
8330         * internal-fn.def (ASAN_CHECK, ASAN_MARK): Revert changes to fnspec.
8331
8332 2018-02-13  Martin Jambor  <mjambor@suse.cz>
8333
8334         PR c++/83990
8335         * ipa-param-manipulation.c (ipa_modify_call_arguments): Use location
8336         of call statements, also set location of a load to a temporary.
8337
8338 2018-02-13  Sebastian Perta  <sebastian.perta@renesas.com>
8339
8340         * config/rl78/rl78.c (add_vector_labels): New function.
8341         * config/rl78/rl78.c (rl78_handle_vector_attribute): New function.
8342         * config/rl78/rl78.c (rl78_start_function): Call add_vector_labels.
8343         * config/rl78/rl78.c (rl78_handle_func_attribute): Removed the assert 
8344         which checks that no arguments are passed.
8345         * config/rl78/rl78.c (rl78_attribute_table): Add "vector" attribute.
8346         * doc/extend.texi: Documentation for the new attribute.
8347
8348 2018-02-13  Andreas Schwab  <schwab@suse.de>
8349
8350         * config/riscv/linux.h (CPP_SPEC): Define.
8351
8352 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
8353
8354         PR target/84335
8355         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Pass
8356         OPTION_MASK_ISA_AES | OPTION_MASK_ISA_SSE2 instead of
8357         OPTION_MASK_ISA_AES as first argument to def_builtin_const
8358         for AES builtins.  Pass OPTION_MASK_ISA_PCLMUL | OPTION_MASK_ISA_SSE2
8359         instead of OPTION_MASK_ISA_PCLMUL as first argument to
8360         def_builtin_const for __builtin_ia32_pclmulqdq128 builtin.
8361         * config/i386/wmmintrin.h: If __SSE2__ is not defined, enable it
8362         temporarily for AES and PCLMUL builtins.
8363
8364         PR tree-optimization/84339
8365         * gimple-fold.c (get_range_strlen): Set *FLEXP to true when handling
8366         ARRAY_REF where first operand is array_at_struct_end_p COMPONENT_REF.
8367         Formatting fixes.
8368
8369         PR middle-end/84309
8370         * match.pd (pow(C,x) -> exp(log(C)*x)): Optimize instead into
8371         exp2(log2(C)*x) if C is a power of 2 and c99 runtime is available.
8372         * generic-match-head.c (canonicalize_math_after_vectorization_p): New
8373         inline function.
8374         * gimple-match-head.c (canonicalize_math_after_vectorization_p): New
8375         inline function.
8376         * omp-simd-clone.h: New file.
8377         * omp-simd-clone.c: Include omp-simd-clone.h.
8378         (expand_simd_clones): No longer static.
8379         * tree-vect-patterns.c: Include fold-const-call.h, attribs.h,
8380         cgraph.h and omp-simd-clone.h.
8381         (vect_recog_pow_pattern): Optimize pow(C,x) to exp(log(C)*x).
8382         (vect_recog_widen_shift_pattern): Formatting fix.
8383         (vect_pattern_recog_1): Don't check optab for calls.
8384
8385         PR target/84336
8386         * config/i386/sse.md (<avx512>_vpermi2var<mode>3_mask): Force
8387         operands[2] into a REG before using gen_lowpart on it.
8388
8389 2018-02-12  Jeff Law  <law@redhat.com>
8390
8391         PR target/83760
8392         * config/sh/sh.c (find_barrier): Consider a sibling call
8393         a barrier as well.
8394
8395         * cse.c (try_back_substitute_reg): Move any REG_ARGS_SIZE note when
8396         successfully back substituting a reg.
8397
8398 2018-02-12  Richard Biener  <rguenther@suse.de>
8399
8400         PR tree-optimization/84037
8401         * tree-vect-slp.c (vect_analyze_slp_cost): Add visited
8402         parameter, move visited init to caller.
8403         (vect_slp_analyze_operations): Separate cost from validity
8404         check, initialize visited once for all instances.
8405         (vect_schedule_slp): Analyze map to CSE vectorized nodes once
8406         for all instances.
8407         * tree-vect-stmts.c (vect_model_simple_cost): Make early
8408         out an assert.
8409         (vect_model_promotion_demotion_cost): Likewise.
8410         (vectorizable_bswap): Guard cost modeling with !slp_node
8411         instead of !PURE_SLP_STMT to avoid double-counting on hybrid
8412         SLP stmts.
8413         (vectorizable_call): Likewise.
8414         (vectorizable_conversion): Likewise.
8415         (vectorizable_assignment): Likewise.
8416         (vectorizable_shift): Likewise.
8417         (vectorizable_operation): Likewise.
8418         (vectorizable_store): Likewise.
8419         (vectorizable_load): Likewise.
8420         (vectorizable_condition): Likewise.
8421         (vectorizable_comparison): Likewise.
8422
8423 2018-02-12  Paolo Bonzini  <bonzini@gnu.org>
8424
8425         PR sanitizer/84307
8426         * internal-fn.def (ASAN_CHECK): Fix fnspec to account for return value.
8427         (ASAN_MARK): Fix fnspec to account for return value, change pointer
8428         argument from 'R' to 'W' so that the pointed-to datum is clobbered.
8429
8430 2018-02-08  Jan Hubicka  <hubicka@ucw.cz>
8431
8432         PR middle-end/83665
8433         * params.def (inline-min-speedup): Increase from 8 to 15.
8434         (max-inline-insns-auto): Decrease from 40 to 30.
8435         * ipa-split.c (consider_split): Add some buffer for function to
8436         be considered inlining candidate.
8437         * invoke.texi (max-inline-insns-auto, inline-min-speedup): UPdate
8438         default values.
8439
8440 2018-02-12  Richard Biener  <rguenther@suse.de>
8441
8442         PR tree-optimization/84037
8443         * tree-vect-slp.c (vect_build_slp_tree_2): Try swapping the
8444         matched stmts if we cannot swap the non-matched ones.
8445
8446 2018-02-12  Olga Makhotina  <olga.makhotina@intel.com>
8447
8448         * config/i386/avx512fintrin.h (_mm_mask_scalef_round_sd,
8449         _mm_maskz_scalef_round_sd, _mm_mask_scalef_round_ss,
8450         _mm_maskz_scalef_round_ss): New intrinsics.
8451         (__builtin_ia32_scalefsd_round, __builtin_ia32_scalefss_round): Fix.
8452         * config/i386/i386-builtin.def (__builtin_ia32_scalefsd_round,
8453         __builtin_ia32_scalefss_round): Remove.
8454         (__builtin_ia32_scalefsd_mask_round,
8455         __builtin_ia32_scalefss_mask_round): New intrinsics.
8456         * config/i386/sse.md (vmscalef<mode><round_name>): Renamed to ...
8457         (vmscalef<mode><mask_scalar_name><round_scalar_name>): ... this.
8458         ((match_operand:VF_128 2 "<round_nimm_predicate>"
8459         "<round_constraint>")): Changed to ...
8460         ((match_operand:VF_128 2 "<round_scalar_nimm_predicate>"
8461         "<round_scalar_constraint>")): ... this.
8462         ("vscalef<ssescalarmodesuffix>\t{<round_op3>%2, %1, %0|
8463         %0, %1, %2<round_op3>}"): Changed to ...
8464         ("vscalef<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%2, %1,
8465         %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %1,
8466         %2<round_scalar_mask_op3>}"): ... this.
8467         * config/i386/subst.md (round_scalar_nimm_predicate): New.
8468
8469 2018-02-12  Olga Makhotina  <olga.makhotina@intel.com>
8470
8471         * config/i386/avx512fintrin.h (_mm_mask_sqrt_round_sd)
8472         (_mm_maskz_sqrt_round_sd, _mm_mask_sqrt_round_ss)
8473         (_mm_maskz_sqrt_round_ss): New intrinsics.
8474         (__builtin_ia32_sqrtsd_round, __builtin_ia32_sqrtss_round): Remove.
8475         (__builtin_ia32_sqrtsd_mask_round)
8476         (__builtin_ia32_sqrtss_mask_round): New builtins.
8477         * config/i386/i386-builtin.def (__builtin_ia32_sqrtsd_round)
8478         (__builtin_ia32_sqrtss_round): Remove.
8479         (__builtin_ia32_sqrtsd_mask_round)
8480         (__builtin_ia32_sqrtss_mask_round): New builtins.
8481         * config/i386/sse.md (vmsqrt<mode>2<round_name>): Renamed to ...
8482         (vmsqrt<mode>2<mask_scalar_name><round_scalar_name>): ... this.
8483         ((match_operand:VF_128 1 "vector_operand"
8484         "xBm,<round_constraint>")): Changed to ...
8485         ((match_operand:VF_128 1 "vector_operand"
8486         "xBm,<round_scalar_constraint>")): ... this.
8487         (vsqrt<ssescalarmodesuffix>\t{<round_op3>%1, %2, %0|
8488         %0, %2, %<iptr>1<round_op3>}): Changed to ...
8489         (vsqrt<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%1, %2,
8490         %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %2,
8491         %<iptr>1<round_scalar_mask_op3>}): ... this.
8492         ((set_attr "prefix" "<round_prefix>")): Changed to ...
8493         ((set_attr "prefix" "<round_scalar_prefix>")): ... this.
8494
8495 2018-02-11  Steven Munroe  <munroesj@gcc.gnu.org>
8496
8497         PR target/84266
8498         * config/rs6000/mmintrin.h (_mm_cmpeq_pi32 [_ARCH_PWR9]):
8499         Cast vec_cmpeq result to correct type.
8500         * config/rs6000/mmintrin.h (_mm_cmpgt_pi32 [_ARCH_PWR9]):
8501         Cast vec_cmpgt result to correct type.
8502
8503 2018-02-11  Alexandre Oliva  <aoliva@redhat.com>
8504
8505         * final.c (final_scan_insn_1): Renamed from...
8506         (final_scan_insn): ... this.  New wrapper, to recover
8507         seen from the outermost call in recursive ones.
8508         * config/sparc/sparc.c (output_return): Drop seen from call.
8509         (output_sibcall): Likewise.
8510         * config/visium/visium.c (output_branch): Likewise.
8511
8512 2018-02-10  John David Anglin  <danglin@gcc.gnu.org>
8513
8514         * config/pa/pa.c (hppa_profile_hook): Mark SYMBOL_REF for _mcount as
8515         function label.
8516
8517 2018-02-10  Alan Modra  <amodra@gmail.com>
8518
8519         PR target/84300
8520         * config/rs6000/rs6000.md (split_stack_return): Remove (use ..).
8521         Specify LR as an input.
8522
8523 2018-02-10  Jakub Jelinek  <jakub@redhat.com>
8524
8525         PR sanitizer/83987
8526         * omp-low.c (maybe_remove_omp_member_access_dummy_vars,
8527         remove_member_access_dummy_vars): New functions.
8528         (lower_omp_for, lower_omp_taskreg, lower_omp_target,
8529         lower_omp_1, execute_lower_omp): Use them.
8530
8531         PR rtl-optimization/84308
8532         * shrink-wrap.c (spread_components): Release todo vector.
8533
8534 2018-02-09  Vladimir Makarov  <vmakarov@redhat.com>
8535
8536         PR rtl-optimization/57193
8537         * ira-color.c (struct allocno_color_data): Add member
8538         conflict_allocno_hard_prefs.
8539         (update_conflict_allocno_hard_prefs): New.
8540         (bucket_allocno_compare_func): Add a preference based on
8541         conflict_allocno_hard_prefs.
8542         (push_allocno_to_stack): Update conflict_allocno_hard_prefs.
8543         (color_allocnos): Remove a dead code.  Initiate
8544         conflict_allocno_hard_prefs.  Call update_costs_from_prefs.
8545
8546 2018-02-09  Jakub Jelinek  <jakub@redhat.com>
8547
8548         PR target/84226
8549         * config/rs6000/vsx.md (p9_xxbrq_v16qi): Change input operand
8550         constraint from =wa to wa.  Avoid a subreg on the output operand,
8551         instead use a pseudo and subreg it in a move.
8552         (p9_xxbrd_<mode>): Changed to ...
8553         (p9_xxbrd_v2di): ... this insn, without VSX_D iterator.
8554         (p9_xxbrd_v2df): New expander.
8555         (p9_xxbrw_<mode>): Changed to ...
8556         (p9_xxbrw_v4si): ... this insn, without VSX_W iterator.
8557         (p9_xxbrw_v4sf): New expander.
8558
8559 2018-02-09  Sebastian Perta  <sebastian.perta@renesas.com>
8560
8561         * config/rx/rx.md (movsicc): Update expander to be matched by GCC.
8562
8563 2018-02-09  Peter Bergner  <bergner@vnet.ibm.com>
8564
8565         PR target/83926
8566         * config/rs6000/vsx.md (vsx_mul_v2di): Handle generating a 64-bit
8567         multiply in 32-bit mode.
8568         (vsx_div_v2di): Handle generating a 64-bit signed divide in 32-bit mode.
8569         (vsx_udiv_v2di): Handle generating a 64-bit unsigned divide in 32-bit
8570         mode.
8571
8572 2018-02-09  Sebastian Perta  <sebastian.perta@renesas.com>
8573
8574         * config/rx/constraints.md (CALL_OP_SYMBOL_REF): Added new constraint
8575         to allow or block "symbol_ref" depending on the value of TARGET_JSR.
8576         * config/rx/rx.md (call_internal): Use CALL_OP_SYMBOL_REF.
8577         * config/rx/rx.md (call_value_internal): Use CALL_OP_SYMBOL_REF.
8578
8579 2018-02-09  Pierre-Marie de Rodat  <derodat@adacore.com>
8580
8581         PR lto/84213
8582         * dwarf2out.c (is_trivial_indirect_ref): New function.
8583         (dwarf2out_late_global_decl): Do not generate a location
8584         attribute for variables that have a non-trivial DECL_VALUE_EXPR
8585         and that are not defined in the current unit.
8586
8587 2018-02-09  Eric Botcazou  <ebotcazou@adacore.com>
8588
8589         * optabs.c (prepare_cmp_insn): Try harder to emit a direct comparison
8590         instead of a libcall for UNORDERED.
8591
8592 2018-02-09  Tamar Christina  <tamar.christina@arm.com>
8593
8594         PR target/82641
8595         * config/arm/arm-c.c (arm_cpu_builtins): Un-define __ARM_FEATURE_LDREX,
8596         __ARM_ARCH_PROFILE, __ARM_ARCH_ISA_THUMB, __ARM_FP and __ARM_NEON_FP.
8597
8598 2018-02-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
8599
8600         PR target/PR84295
8601         * config/s390/s390.c (s390_set_current_function): Invoke
8602         s390_indirect_branch_settings also if fndecl didn't change.
8603
8604 2018-02-09  Alexandre Oliva  <aoliva@redhat.com>
8605
8606         * config/rs6000/rs6000.md (blockage): Set length to zero.
8607
8608 2018-02-09  Eric Botcazou  <ebotcazou@adacore.com>
8609
8610         * expr.c (optimize_bitfield_assignment_op): Remove obsolete assertion.
8611
8612 2018-02-09  Jakub Jelinek  <jakub@redhat.com>
8613
8614         PR sanitizer/84285
8615         * gcc.c (STATIC_LIBASAN_LIBS, STATIC_LIBTSAN_LIBS,
8616         STATIC_LIBLSAN_LIBS, STATIC_LIBUBSAN_LIBS): Handle -static like
8617         -static-lib*san.
8618
8619         PR debug/84252
8620         * var-tracking.c (vt_add_function_parameter): Punt for non-onepart
8621         PARALLEL incoming that failed vt_get_decl_and_offset check.
8622
8623         PR middle-end/84237
8624         * output.h (bss_initializer_p): Add NAMED argument, defaulted to false.
8625         * varasm.c (bss_initializer_p): Add NAMED argument, if true, ignore
8626         TREE_READONLY bit.
8627         (get_variable_section): For decls in named .bss* sections pass true as
8628         second argument to bss_initializer_p.
8629
8630 2018-02-09  Marek Polacek  <polacek@redhat.com>
8631             Jakub Jelinek  <jakub@redhat.com>
8632
8633         PR c++/83659
8634         * fold-const.c (fold_indirect_ref_1): Use VECTOR_TYPE_P macro.
8635         Formatting fixes.  Verify first that tree_fits_poly_int64_p (op01).
8636         Sync some changes from cxx_fold_indirect_ref.
8637
8638 2018-02-09  Alexandre Oliva  <aoliva@redhat.com>
8639
8640         * cfgexpand.c (expand_gimple_basic_block): Handle inline entry
8641         markers.
8642         * dwarf2out.c (dwarf2_debug_hooks): Enable inline_entry hook.
8643         (BLOCK_INLINE_ENTRY_LABEL): New.
8644         (dwarf2out_var_location): Disregard inline entry markers.
8645         (inline_entry_data): New struct.
8646         (inline_entry_data_hasher): New hashtable type.
8647         (inline_entry_data_hasher::hash): New.
8648         (inline_entry_data_hasher::equal): New.
8649         (inline_entry_data_table): New variable.
8650         (add_high_low_attributes): Add DW_AT_entry_pc and
8651         DW_AT_GNU_entry_view attributes if a pending entry is found
8652         in inline_entry_data_table.  Add old entry_pc attribute only
8653         if debug nonbinding markers are disabled.
8654         (gen_inlined_subroutine_die): Set BLOCK_DIE if nonbinding
8655         markers are enabled.
8656         (block_within_block_p, dwarf2out_inline_entry): New.
8657         (dwarf2out_finish): Check that no entries remained in
8658         inline_entry_data_table.
8659         * final.c (reemit_insn_block_notes): Handle inline entry notes.
8660         (final_scan_insn, notice_source_line): Likewise.
8661         (rest_of_clean_state): Skip inline entry markers.
8662         * gimple-pretty-print.c (dump_gimple_debug): Handle inline entry
8663         markers.
8664         * gimple.c (gimple_build_debug_inline_entry): New.
8665         * gimple.h (enum gimple_debug_subcode): Add
8666         GIMPLE_DEBUG_INLINE_ENTRY.
8667         (gimple_build_debug_inline_entry): Declare.
8668         (gimple_debug_inline_entry_p): New.
8669         (gimple_debug_nonbind_marker_p): Adjust.
8670         * insn-notes.def (INLINE_ENTRY): New.
8671         * print-rtl.c (rtx_writer::print_rtx_operand_code_0): Handle
8672         inline entry marker notes.
8673         (print_insn): Likewise.
8674         * rtl.h (NOTE_MARKER_P): Add INLINE_ENTRY support.
8675         (INSN_DEBUG_MARKER_KIND): Likewise.
8676         (GEN_RTX_DEBUG_MARKER_INLINE_ENTRY_PAT): New.
8677         * tree-inline.c (expand_call_inline): Build and insert
8678         debug_inline_entry stmt.
8679         * tree-ssa-live.c (remove_unused_scope_block_p): Preserve
8680         inline entry blocks early, if nonbind markers are enabled.
8681         (dump_scope_block): Dump fragment info.
8682         * var-tracking.c (reemit_marker_as_note): Handle inline entry note.
8683         * doc/gimple.texi (gimple_debug_inline_entry_p): New.
8684         (gimple_build_debug_inline_entry): New.
8685         * doc/invoke.texi (gstatement-frontiers, gno-statement-frontiers):
8686         Enable/disable inline entry points too.
8687         * doc/rtl.texi (NOTE_INSN_INLINE_ENTRY): New.
8688         (DEBUG_INSN): Describe inline entry markers.
8689
8690         * common.opt (gvariable-location-views): New.
8691         (gvariable-location-views=incompat5): New.
8692         * config.in: Rebuilt.
8693         * configure: Rebuilt.
8694         * configure.ac: Test assembler for view support.
8695         * dwarf2asm.c (dw2_asm_output_symname_uleb128): New.
8696         * dwarf2asm.h (dw2_asm_output_symname_uleb128): Declare.
8697         * dwarf2out.c (var_loc_view): New typedef.
8698         (struct dw_loc_list_struct): Add vl_symbol, vbegin, vend.
8699         (dwarf2out_locviews_in_attribute): New.
8700         (dwarf2out_locviews_in_loclist): New.
8701         (dw_val_equal_p): Compare val_view_list of dw_val_class_view_lists.
8702         (enum dw_line_info_opcode): Add LI_adv_address.
8703         (struct dw_line_info_table): Add view.
8704         (RESET_NEXT_VIEW, RESETTING_VIEW_P): New macros.
8705         (DWARF2_ASM_VIEW_DEBUG_INFO): Define default.
8706         (zero_view_p): New variable.
8707         (ZERO_VIEW_P): New macro.
8708         (output_asm_line_debug_info): New.
8709         (struct var_loc_node): Add view.
8710         (add_AT_view_list, AT_loc_list): New.
8711         (add_var_loc_to_decl): Add view param.  Test it against last.
8712         (new_loc_list): Add view params.  Record them.
8713         (AT_loc_list_ptr): Handle loc and view lists.
8714         (view_list_to_loc_list_val_node): New.
8715         (print_dw_val): Handle dw_val_class_view_list.
8716         (size_of_die): Likewise.
8717         (value_format): Likewise.
8718         (loc_list_has_views): New.
8719         (gen_llsym): Set vl_symbol too.
8720         (maybe_gen_llsym, skip_loc_list_entry): New.
8721         (dwarf2out_maybe_output_loclist_view_pair): New.
8722         (output_loc_list): Output view list or entries too.
8723         (output_view_list_offset): New.
8724         (output_die): Handle dw_val_class_view_list.
8725         (output_dwarf_version): New.
8726         (output_compilation_unit_header): Use it.
8727         (output_skeleton_debug_sections): Likewise.
8728         (output_rnglists, output_line_info): Likewise.
8729         (output_pubnames, output_aranges): Update version comments.
8730         (output_one_line_info_table): Output view numbers in asm comments.
8731         (dw_loc_list): Determine current endview, pass it to new_loc_list.
8732         Call maybe_gen_llsym.
8733         (loc_list_from_tree_1): Adjust.
8734         (add_AT_location_description): Create view list attribute if
8735         needed, check it's absent otherwise.
8736         (convert_cfa_to_fb_loc_list): Adjust.
8737         (maybe_emit_file): Call output_asm_line_debug_info for test.
8738         (dwarf2out_var_location): Reset views as needed.  Precompute
8739         add_var_loc_to_decl args.  Call get_attr_min_length only if we have the
8740         attribute.  Set view.
8741         (new_line_info_table): Reset next view.
8742         (set_cur_line_info_table): Call output_asm_line_debug_info for test.
8743         (dwarf2out_source_line): Likewise.  Output view resets and labels to
8744         the assembler, or select appropriate line info opcodes.
8745         (prune_unused_types_walk_attribs): Handle dw_val_class_view_list.
8746         (optimize_string_length): Catch it.  Adjust.
8747         (resolve_addr): Copy vl_symbol along with ll_symbol.  Handle
8748         dw_val_class_view_list, and remove it if no longer needed.
8749         (hash_loc_list): Hash view numbers.
8750         (loc_list_hasher::equal): Compare them.
8751         (optimize_location_lists): Check whether a view list symbol is
8752         needed, and whether the locview attribute is present, and
8753         whether they match.  Remove the locview attribute if no longer
8754         needed.
8755         (index_location_lists): Call skip_loc_list_entry for test.
8756         (dwarf2out_finish): Call output_asm_line_debug_info for test.
8757         Use output_dwarf_version.
8758         * dwarf2out.h (enum dw_val_class): Add dw_val_class_view_list.
8759         (struct dw_val_node): Add val_view_list.
8760         * final.c (SEEN_NEXT_VIEW): New.
8761         (set_next_view_needed): New.
8762         (clear_next_view_needed): New.
8763         (maybe_output_next_view): New.
8764         (final_start_function): Rename to...
8765         (final_start_function_1): ... this.  Take pointer to FIRST,
8766         add SEEN parameter.  Emit param bindings in the initial view.
8767         (final_start_function): Reintroduce SEEN-less interface.
8768         (final): Rename to...
8769         (final_1): ... this.  Take SEEN parameter.  Output final pending
8770         next view at the end.
8771         (final): Reintroduce seen-less interface.
8772         (final_scan_insn): Output pending next view before switching
8773         sections or ending a block.  Mark the next view as needed when
8774         outputting variable locations.  Notify debug backend of section
8775         changes, and of location view changes.
8776         (rest_of_handle_final): Adjust.
8777         * toplev.c (process_options): Autodetect value for debug variable
8778         location views option.  Warn on incompat5 without -gdwarf-5.
8779         * doc/invoke.texi (gvariable-location-views): New.
8780         (gvariable-location-views=incompat5): New.
8781         (gno-variable-location-views): New.
8782
8783 2018-02-08  David Malcolm  <dmalcolm@redhat.com>
8784
8785         PR tree-optimization/84136
8786         * tree-cfg.c (find_taken_edge_computed_goto): Remove assertion
8787         that the result of find_edge is non-NULL.
8788
8789 2018-02-08  Sergey Shalnov  <sergey.shalnov@intel.com>
8790
8791         PR target/83008
8792         * config/i386/x86-tune-costs.h (skylake_cost): Fix cost of
8793         storing integer register in SImode.  Fix cost of 256 and 512
8794         byte aligned SSE register store.
8795
8796 2018-02-08  Sergey Shalnov  <sergey.shalnov@intel.com>
8797
8798         * config/i386/i386.c (ix86_multiplication_cost): Fix
8799         multiplication cost for TARGET_AVX512DQ.
8800
8801 2018-02-08  Marek Polacek  <polacek@redhat.com>
8802
8803         PR tree-optimization/84238
8804         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Verify the result of
8805         get_range_strlen.
8806
8807 2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
8808
8809         PR tree-optimization/84265
8810         * tree-vect-stmts.c (vectorizable_store): Don't treat
8811         VMAT_CONTIGUOUS accesses as grouped.
8812         (vectorizable_load): Likewise.
8813
8814 2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
8815
8816         PR tree-optimization/81635
8817         * wide-int.h (wi::round_down_for_mask, wi::round_up_for_mask): Declare.
8818         * wide-int.cc (wi::round_down_for_mask, wi::round_up_for_mask)
8819         (test_round_for_mask): New functions.
8820         (wide_int_cc_tests): Call test_round_for_mask.
8821         * tree-vrp.h (intersect_range_with_nonzero_bits): Declare.
8822         * tree-vrp.c (intersect_range_with_nonzero_bits): New function.
8823         * tree-data-ref.c (split_constant_offset_1): Use it to refine the
8824         range returned by get_range_info.
8825
8826 2018-02-08  Jan Hubicka  <hubicka@ucw.cz>
8827
8828         PR ipa/81360
8829         * cgraph.h (symtab_node::output_to_lto_symbol_table_p): Declare
8830         * symtab.c: Include builtins.h
8831         (symtab_node::output_to_lto_symbol_table_p): Move here
8832         from lto-streamer-out.c:output_symbol_p.
8833         * lto-streamer-out.c (write_symbol): Turn early exit to assert.
8834         (output_symbol_p): Move all logic to symtab.c
8835         (produce_symtab): Update.
8836
8837 2018-02-08  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
8838
8839         * config/s390/s390-opts.h (enum indirect_branch): Define.
8840         * config/s390/s390-protos.h (s390_return_addr_from_memory)
8841         (s390_indirect_branch_via_thunk)
8842         (s390_indirect_branch_via_inline_thunk): Add function prototypes.
8843         (enum s390_indirect_branch_type): Define.
8844         * config/s390/s390.c (struct s390_frame_layout, struct
8845         machine_function): Remove.
8846         (indirect_branch_prez10thunk_mask, indirect_branch_z10thunk_mask)
8847         (indirect_branch_table_label_no, indirect_branch_table_name):
8848         Define variables.
8849         (INDIRECT_BRANCH_NUM_OPTIONS): Define macro.
8850         (enum s390_indirect_branch_option): Define.
8851         (s390_return_addr_from_memory): New function.
8852         (s390_handle_string_attribute): New function.
8853         (s390_attribute_table): Add new attribute handler.
8854         (s390_execute_label): Handle UNSPEC_EXECUTE_JUMP patterns.
8855         (s390_indirect_branch_via_thunk): New function.
8856         (s390_indirect_branch_via_inline_thunk): New function.
8857         (s390_function_ok_for_sibcall): When jumping via thunk disallow
8858         sibling call optimization for non z10 compiles.
8859         (s390_emit_call): Force indirect branch target to be a single
8860         register.  Add r1 clobber for non-z10 compiles.
8861         (s390_emit_epilogue): Emit return jump via return_use expander.
8862         (s390_reorg): Handle JUMP_INSNs as execute targets.
8863         (s390_option_override_internal): Perform validity checks for the
8864         new command line options.
8865         (s390_indirect_branch_attrvalue): New function.
8866         (s390_indirect_branch_settings): New function.
8867         (s390_set_current_function): Invoke s390_indirect_branch_settings.
8868         (s390_output_indirect_thunk_function):  New function.
8869         (s390_code_end): Implement target hook.
8870         (s390_case_values_threshold): Implement target hook.
8871         (TARGET_ASM_CODE_END, TARGET_CASE_VALUES_THRESHOLD): Define target
8872         macros.
8873         * config/s390/s390.h (struct s390_frame_layout)
8874         (struct machine_function): Move here from s390.c.
8875         (TARGET_INDIRECT_BRANCH_NOBP_RET)
8876         (TARGET_INDIRECT_BRANCH_NOBP_JUMP)
8877         (TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK)
8878         (TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK)
8879         (TARGET_INDIRECT_BRANCH_NOBP_CALL)
8880         (TARGET_DEFAULT_INDIRECT_BRANCH_TABLE)
8881         (TARGET_INDIRECT_BRANCH_THUNK_NAME_EXRL)
8882         (TARGET_INDIRECT_BRANCH_THUNK_NAME_EX)
8883         (TARGET_INDIRECT_BRANCH_TABLE): Define macros.
8884         * config/s390/s390.md (UNSPEC_EXECUTE_JUMP)
8885         (INDIRECT_BRANCH_THUNK_REGNUM): Define constants.
8886         (mnemonic attribute): Add values which aren't recognized
8887         automatically.
8888         ("*cjump_long", "*icjump_long", "*basr", "*basr_r"): Disable
8889         pattern for branch conversion.  Fix mnemonic attribute.
8890         ("*c<code>", "*sibcall_br", "*sibcall_value_br", "*return"): Emit
8891         indirect branch via thunk if requested.
8892         ("indirect_jump", "<code>"): Expand patterns for branch conversion.
8893         ("*indirect_jump"): Disable for branch conversion using out of
8894         line thunks.
8895         ("indirect_jump_via_thunk<mode>_z10")
8896         ("indirect_jump_via_thunk<mode>")
8897         ("indirect_jump_via_inlinethunk<mode>_z10")
8898         ("indirect_jump_via_inlinethunk<mode>", "*casesi_jump")
8899         ("casesi_jump_via_thunk<mode>_z10", "casesi_jump_via_thunk<mode>")
8900         ("casesi_jump_via_inlinethunk<mode>_z10")
8901         ("casesi_jump_via_inlinethunk<mode>", "*basr_via_thunk<mode>_z10")
8902         ("*basr_via_thunk<mode>", "*basr_r_via_thunk_z10")
8903         ("*basr_r_via_thunk", "return<mode>_prez10"): New pattern.
8904         ("*indirect2_jump"): Disable for branch conversion.
8905         ("casesi_jump"): Turn into expander and expand patterns for branch
8906         conversion.
8907         ("return_use"): New expander.
8908         ("*return"): Emit return via thunk and rename it to ...
8909         ("*return<mode>"): ... this one.
8910         * config/s390/s390.opt: Add new options and and enum for the
8911         option values.
8912
8913 2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
8914
8915         * lra-constraints.c (match_reload): Unconditionally use
8916         gen_lowpart_SUBREG, rather than selecting between that
8917         and equivalent gen_rtx_SUBREG code.
8918
8919 2018-02-08  Richard Biener  <rguenther@suse.de>
8920
8921         PR tree-optimization/84233
8922         * tree-ssa-phiprop.c (propagate_with_phi): Use separate
8923         changed flag instead of boguously re-using phi_inserted.
8924
8925 2018-02-08  Martin Jambor  <mjambor@suse.cz>
8926
8927         * hsa-gen.c (get_symbol_for_decl): Set program allocation for
8928         static local variables.
8929
8930 2018-02-08  Richard Biener  <rguenther@suse.de>
8931
8932         PR tree-optimization/84278
8933         * tree-vect-stmts.c (vectorizable_store): When looking for
8934         smaller vector types to perform grouped strided loads/stores
8935         make sure the mode is supported by the target.
8936         (vectorizable_load): Likewise.
8937
8938 2018-02-08  Wilco Dijkstra  <wdijkstr@arm.com>
8939
8940         * config/aarch64/aarch64.c (aarch64_components_for_bb):
8941         Increase LDP/STP opportunities by adding adjacent callee-saves.
8942
8943 2018-02-08  Wilco Dijkstra  <wdijkstr@arm.com>
8944
8945         PR rtl-optimization/84068
8946         PR rtl-optimization/83459
8947         * haifa-sched.c (rank_for_schedule): Fix SCHED_PRESSURE_MODEL sorting.
8948
8949 2018-02-08  Aldy Hernandez  <aldyh@redhat.com>
8950
8951         PR tree-optimization/84224
8952         * gimple-ssa-warn-alloca.c (pass_walloca::execute): Remove assert.
8953         * calls.c (gimple_alloca_call_p): Only return TRUE when we have
8954         non-zero arguments.
8955
8956 2018-02-07  Iain Sandoe  <iain@codesourcery.com>
8957
8958         PR target/84113
8959         * config/rs6000/altivec.md (*restore_world): Remove LR use.
8960         * config/rs6000/predicates.md (restore_world_operation): Adjust op
8961         count, remove one USE.
8962
8963 2018-02-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
8964
8965         * doc/install.texi (Configuration): Document the
8966         --with-long-double-format={ibm,ieee} PowerPC configuration
8967         options.
8968
8969         PR target/84154
8970         * config/rs6000/rs6000.md (fix_trunc<SFDF:mode><QHI:mode>2):
8971         Convert from define_expand to be define_insn_and_split.  Rework
8972         float/double/_Float128 conversions to QI/HI/SImode to work with
8973         both ISA 2.07 (power8) or ISA 3.0 (power9).  Fix regression where
8974         conversions to QI/HImode types did a store and then a load to
8975         truncate the value.  For conversions to VSX registers, don't split
8976         the insn, instead emit the code directly.  Use the code iterator
8977         any_fix to combine signed and unsigned conversions.
8978         (fix<uns>_trunc<SFDF:mode>si2_p8): Likewise.
8979         (fixuns_trunc<SFDF:mode><QHI:mode>2): Likewise.
8980         (fix_trunc<IEEE128:mode><QHI:mode>2): Likewise.
8981         (fix<uns>_trunc<SFDF:mode><QHI:mode>2): Likewise.
8982         (fix_<mode>di2_hw): Likewise.
8983         (fixuns_<mode>di2_hw): Likewise.
8984         (fix_<mode>si2_hw): Likewise.
8985         (fixuns_<mode>si2_hw): Likewise.
8986         (fix<uns>_<IEEE128:mode><SDI:mode>2_hw): Likewise.
8987         (fix<uns>_trunc<IEEE128:mode><QHI:mode>2): Likewise.
8988         (fctiw<u>z_<mode>_smallint): Rename fctiw<u>z_<mode>_smallint to
8989         fix<uns>_trunc<SFDF:mode>si2_p8.
8990         (fix_trunc<SFDF:mode><QHI:mode>2_internal): Delete, no longer
8991         used.
8992         (fixuns_trunc<SFDF:mode><QHI:mode>2_internal): Likewise.
8993         (fix<uns>_<mode>_mem): Likewise.
8994         (fctiw<u>z_<mode>_mem): Likewise.
8995         (fix<uns>_<mode>_mem): Likewise.
8996         (fix<uns>_trunc<SFDF:mode><QHSI:mode>2_mem): On ISA 3.0, prevent
8997         the register allocator from doing a direct move to the GPRs to do
8998         a store, and instead use the ISA 3.0 store byte/half-word from
8999         vector register instruction.  For IEEE 128-bit floating point,
9000         also optimize stores of 32-bit ints.
9001         (fix<uns>_trunc<IEEE128:mode><QHSI:mode>2_mem): Likewise.
9002
9003 2018-02-07  Alan Hayward  <alan.hayward@arm.com>
9004
9005         * genextract.c (push_pathstr_operand): New function to support
9006         [a-zA-Z].
9007         (walk_rtx): Call push_pathstr_operand.
9008         (print_path): Support [a-zA-Z].
9009
9010 2018-02-07  Richard Biener  <rguenther@suse.de>
9011
9012         PR tree-optimization/84037
9013         * tree-vectorizer.h (struct _loop_vec_info): Add ivexpr_map member.
9014         (cse_and_gimplify_to_preheader): Declare.
9015         (vect_get_place_in_interleaving_chain): Likewise.
9016         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
9017         ivexpr_map.
9018         (_loop_vec_info::~_loop_vec_info): Delete it.
9019         (cse_and_gimplify_to_preheader): New function.
9020         * tree-vect-slp.c (vect_get_place_in_interleaving_chain): Export.
9021         * tree-vect-stmts.c (vectorizable_store): CSE base and steps.
9022         (vectorizable_load): Likewise.  For grouped stores always base
9023         the IV on the first element.
9024         * tree-vect-loop-manip.c (vect_loop_versioning): Unshare versioning
9025         condition before gimplifying.
9026
9027 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
9028
9029         * tree-eh.c (operation_could_trap_helper_p): Ignore honor_trapv for
9030         *DIV_EXPR and *MOD_EXPR.
9031
9032 2018-02-07  H.J. Lu  <hongjiu.lu@intel.com>
9033
9034         PR target/84248
9035         * config/i386/i386.c (ix86_option_override_internal): Mask out
9036         the CF_SET bit when checking -fcf-protection.
9037
9038 2018-02-07  Tom de Vries  <tom@codesourcery.com>
9039
9040         PR libgomp/84217
9041         * omp-expand.c (expand_oacc_collapse_init): Ensure diff_type is large
9042         enough.
9043
9044 2018-02-07  Richard Biener  <rguenther@suse.de>
9045
9046         PR tree-optimization/84204
9047         * tree-chrec.c (chrec_fold_plus_1): Remove size limiting in
9048         this place.
9049
9050         PR tree-optimization/84205
9051         * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Also
9052         special-case isl_ast_op_zdiv_r.
9053
9054         PR tree-optimization/84223
9055         * graphite-scop-detection.c (gather_bbs::before_dom_children):
9056         Only add conditions from within the region.
9057         (gather_bbs::after_dom_children): Adjust.
9058
9059 2018-02-07  Georg-Johann Lay  <avr@gjlay.de>
9060
9061         PR target/84209
9062         * config/avr/avr.h (GENERAL_REGNO_P, GENERAL_REG_P): New macros.
9063         * config/avr/avr.md: Only post-reload split REG-REG moves if
9064         either register is GENERAL_REG_P.
9065
9066 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
9067
9068         PR tree-optimization/84235
9069         * tree-ssa-scopedtables.c
9070         (avail_exprs_stack::simplify_binary_operation): Fir MINUS_EXPR, punt
9071         if the subtraction is performed in floating point type where NaNs are
9072         honored.  For *DIV_EXPR, punt for ALL_FRACT_MODE_Ps where we can't
9073         build 1.  Formatting fix.
9074
9075 2018-02-06  Jakub Jelinek  <jakub@redhat.com>
9076
9077         PR target/84146
9078         * config/i386/i386.c (rest_of_insert_endbranch): Only skip
9079         NOTE_INSN_CALL_ARG_LOCATION after a call, not anything else,
9080         and skip it regardless of bb boundaries.  Use CALL_P macro,
9081         don't test INSN_P (insn) together with CALL_P or JUMP_P check
9082         unnecessarily, formatting fix.
9083
9084 2018-02-06  Michael Collison  <michael.collison@arm.com>
9085
9086         * config/arm/thumb2.md:
9087         (*thumb2_mov_negscc): Split only if TARGET_THUMB2 && !arm_restrict_it.
9088         (*thumb_mov_notscc): Ditto.
9089
9090 2018-02-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
9091
9092         PR target/84154
9093         * config/rs6000/rs6000.md (su code attribute): Use "u" for
9094         unsigned_fix, not "s".
9095
9096 2018-02-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
9097
9098         * configure.ac (gcc_fn_eh_frame_ro): New function.
9099         (gcc_cv_as_cfi_directive): Check both 32 and 64-bit assembler for
9100         correct .eh_frame permissions.
9101         * configure: Regenerate.
9102
9103 2018-02-06  Andrew Jenner  <andrew@codeourcery.com>
9104
9105         * doc/invoke.texi: Add section for the PowerPC SPE backend. Remove
9106         irrelevant options.
9107
9108 2018-02-06  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
9109
9110         * config/rs6000/rs6000.c (rs6000_option_override_internal):
9111         Display warning message for -mno-speculate-indirect-jumps.
9112
9113 2018-02-06  Andrew Jenner  <andrew@codesourcery.com>
9114
9115         * config/powerpcspe/powerpcspe.opt: (msimple-fpu, mfpu) Add
9116         Undocumented.
9117         * config/powerpcspe/sysv4.opt (mbit-align): Likewise.
9118
9119 2018-02-06  Aldy Hernandez  <aldyh@redhat.com>
9120
9121         PR tree-optimization/84225
9122         * tree-eh.c (find_trapping_overflow): Only call
9123         operation_no_trapping_overflow when ANY_INTEGRAL_TYPE_P.
9124
9125 2018-02-06  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
9126
9127         PR target/84145
9128         * config/i386/i386.c: Reimplement the check of possible options
9129         -mibt/-mshstk conbination. Change error messages.
9130         * doc/invoke.texi: Fix a typo: remove extra '='.
9131
9132 2018-02-06  Marek Polacek  <polacek@redhat.com>
9133
9134         PR tree-optimization/84228
9135         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Skip debug statements.
9136
9137 2018-02-06  Tamar Christina  <tamar.christina@arm.com>
9138
9139         PR target/82641
9140         * config/arm/arm.c (arm_print_asm_arch_directives): Record already
9141         emitted arch directives.
9142         * config/arm/arm-c.c (arm_cpu_builtins): Undefine __ARM_ARCH and
9143         __ARM_FEATURE_COPROC before changing architectures.
9144
9145 2018-02-06  Richard Biener  <rguenther@suse.de>
9146
9147         * config/i386/i386.c (print_reg): Fix typo.
9148         (ix86_loop_unroll_adjust): Do not unroll beyond the original nunroll.
9149
9150 2018-02-06  Eric Botcazou  <ebotcazou@adacore.com>
9151
9152         * configure: Regenerate.
9153
9154 2018-02-05  Martin Sebor  <msebor@redhat.com>
9155
9156         PR tree-optimization/83369
9157         * tree-ssa-ccp.c (pass_post_ipa_warn::execute): Use %G to print
9158         inlining context.
9159
9160 2018-02-05  Martin Liska  <mliska@suse.cz>
9161
9162         * doc/invoke.texi: Cherry-pick upstream r323995.
9163
9164 2018-02-05  Richard Sandiford  <richard.sandiford@linaro.org>
9165
9166         * ira.c (ira_init_register_move_cost): Adjust comment.
9167
9168 2018-02-05  Martin Liska  <mliska@suse.cz>
9169
9170         PR gcov-profile/84137
9171         * doc/gcov.texi: Fix typo in documentation.
9172
9173 2018-02-05  Martin Liska  <mliska@suse.cz>
9174
9175         PR gcov-profile/83879
9176         * doc/gcov.texi: Document necessity of --dynamic-list-data when
9177         using dlopen functionality.
9178
9179 2018-02-05  Olga Makhotina  <olga.makhotina@intel.com>
9180
9181         * config/i386/avx512dqintrin.h (_mm_mask_range_sd, _mm_maskz_range_sd,
9182         _mm_mask_range_round_sd, _mm_maskz_range_round_sd, _mm_mask_range_ss,
9183         _mm_maskz_range_ss, _mm_mask_range_round_ss,
9184         _mm_maskz_range_round_ss): New intrinsics.
9185         (__builtin_ia32_rangesd128_round)
9186         (__builtin_ia32_rangess128_round): Remove.
9187         (__builtin_ia32_rangesd128_mask_round,
9188         __builtin_ia32_rangess128_mask_round): New builtins.
9189         * config/i386/i386-builtin.def (__builtin_ia32_rangesd128_round,
9190         __builtin_ia32_rangess128_round): Remove.
9191         (__builtin_ia32_rangesd128_mask_round,
9192         __builtin_ia32_rangess128_mask_round): New builtins.
9193         * config/i386/sse.md (ranges<mode><round_saeonly_name>): Renamed to ...
9194         (ranges<mode><mask_scalar_name><round_saeonly_scalar_name>): ... this.
9195         ((match_operand:VF_128 2 "<round_saeonly_nimm_predicate>"
9196         "<round_saeonly_constraint>")): Changed to ...
9197         ((match_operand:VF_128 2 "<round_saeonly_scalar_nimm_predicate>"
9198         "<round_saeonly_scalar_constraint>")): ... this.
9199         ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_op4>%2, %1, %0|
9200         %0, %1, %2<round_saeonly_op4>, %3}"): Changed to ...
9201         ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_scalar_mask_op4>%2,
9202         %1, %0<mask_scalar_operand4>|%0<mask_scalar_operand4>, %1,
9203         %2<round_saeonly_scalar_mask_op4>, %3}"): ... this.
9204
9205 2018-02-02  Andrew Jenner  <andrew@codesourcery.com>
9206
9207         * config/powerpcspe/powerpcspe.opt: Add Undocumented to irrelevant
9208         options.
9209         * config/powerpcspe/powerpcspe-tables.opt (rs6000_cpu_opt_value):
9210         Remove all values except native, 8540 and 8548.
9211
9212 2018-02-02  H.J. Lu  <hongjiu.lu@intel.com>
9213
9214         * config/i386/i386.c (ix86_output_function_return): Pass
9215         INVALID_REGNUM, instead of -1, as invalid register number to
9216         indirect_thunk_name and output_indirect_thunk.
9217
9218 2018-02-02  Julia Koval  <julia.koval@intel.com>
9219
9220         * config.gcc: Add -march=icelake.
9221         * config/i386/driver-i386.c (host_detect_local_cpu): Detect icelake.
9222         * config/i386/i386-c.c (ix86_target_macros_internal): Handle icelake.
9223         * config/i386/i386.c (processor_costs): Add m_ICELAKE.
9224         (PTA_ICELAKE, PTA_AVX512VNNI, PTA_GFNI, PTA_VAES, PTA_AVX512VBMI2,
9225         PTA_VPCLMULQDQ, PTA_RDPID, PTA_AVX512BITALG): New.
9226         (processor_target_table): Add icelake.
9227         (ix86_option_override_internal): Handle new PTAs.
9228         (get_builtin_code_for_version): Handle icelake.
9229         (M_INTEL_COREI7_ICELAKE): New.
9230         (fold_builtin_cpu): Handle icelake.
9231         * config/i386/i386.h (TARGET_ICELAKE, PROCESSOR_ICELAKE): New.
9232         * doc/invoke.texi: Add -march=icelake.
9233
9234 2018-02-02  Julia Koval  <julia.koval@intel.com>
9235
9236         * config/i386/i386.c (ix86_option_override_internal): Change flags type
9237         to wide_int_bitmask.
9238         * wide-int-bitmask.h: New.
9239
9240 2018-02-02  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
9241
9242         PR target/84066
9243         * config/i386/i386.md: Replace Pmode with word_mode in
9244         builtin_setjmp_setup and builtin_longjmp to support x32.
9245
9246 2018-02-01  Peter Bergner  <bergner@vnet.ibm.com>
9247
9248         PR target/56010
9249         PR target/83743
9250         * config/rs6000/driver-rs6000.c: #include "diagnostic.h".
9251         #include "opts.h".
9252         (rs6000_supported_cpu_names): New static variable.
9253         (linux_cpu_translation_table): Likewise.
9254         (elf_platform) <cpu>: Define new static variable and use it.
9255         Translate kernel AT_PLATFORM name to canonical name if needed.
9256         Error if platform name is unknown.
9257
9258 2018-02-01  Aldy Hernandez  <aldyh@redhat.com>
9259
9260         PR target/84089
9261         * config/pa/predicates.md (base14_operand): Handle E_VOIDmode.
9262
9263 2018-02-01  Jeff Law  <law@redhat.com>
9264
9265         PR target/84128
9266         * config/i386/i386.c (release_scratch_register_on_entry): Add new
9267         OFFSET and RELEASE_VIA_POP arguments.  Use SP+OFFSET to restore
9268         the scratch if RELEASE_VIA_POP is false.
9269         (ix86_adjust_stack_and_probe_stack_clash): Un-constify SIZE.
9270         If we have to save a temporary register, decrement SIZE appropriately.
9271         Pass new arguments to release_scratch_register_on_entry.
9272         (ix86_adjust_stack_and_probe): Likewise.
9273         (ix86_emit_probe_stack_range): Pass new arguments to
9274         release_scratch_register_on_entry.
9275
9276 2018-02-01  Uros Bizjak  <ubizjak@gmail.com>
9277
9278         PR rtl-optimization/84157
9279         * combine.c (change_zero_ext): Use REG_P predicate in
9280         front of HARD_REGISTER_P predicate.
9281
9282 2018-02-01  Georg-Johann Lay  <avr@gjlay.de>
9283
9284         * config/avr/avr.c (avr_option_override): Move disabling of
9285         -fdelete-null-pointer-checks to...
9286         * common/config/avr/avr-common.c (avr_option_optimization_table):
9287         ...here.
9288
9289 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
9290
9291         PR tree-optimization/81635
9292         * tree-data-ref.c (split_constant_offset_1): For types that
9293         wrap on overflow, try to use range info to prove that wrapping
9294         cannot occur.
9295
9296 2018-02-01  Renlin Li  <renlin.li@arm.com>
9297
9298         PR target/83370
9299         * config/aarch64/aarch64.c (aarch64_class_max_nregs): Handle
9300         TAILCALL_ADDR_REGS.
9301         (aarch64_register_move_cost): Likewise.
9302         * config/aarch64/aarch64.h (reg_class): Rename CALLER_SAVE_REGS to
9303         TAILCALL_ADDR_REGS.
9304         (REG_CLASS_NAMES): Likewise.
9305         (REG_CLASS_CONTENTS): Rename CALLER_SAVE_REGS to
9306         TAILCALL_ADDR_REGS. Remove IP registers.
9307         * config/aarch64/aarch64.md (Ucs): Update register constraint.
9308
9309 2018-02-01  Richard Biener  <rguenther@suse.de>
9310
9311         * domwalk.h (dom_walker::dom_walker): Add additional constructor
9312         for specifying RPO order and allow NULL for that.
9313         * domwalk.c (dom_walker::dom_walker): Likewise.
9314         (dom_walker::walk): Handle NULL RPO order.
9315         * tree-into-ssa.c (rewrite_dom_walker): Do not walk dom children
9316         in RPO order.
9317         (rewrite_update_dom_walker): Likewise.
9318         (mark_def_dom_walker): Likewise.
9319
9320 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
9321
9322         * config/aarch64/aarch64-protos.h (aarch64_split_sve_subreg_move)
9323         (aarch64_maybe_expand_sve_subreg_move): Declare.
9324         * config/aarch64/aarch64.md (UNSPEC_REV_SUBREG): New unspec.
9325         * config/aarch64/predicates.md (aarch64_any_register_operand): New
9326         predicate.
9327         * config/aarch64/aarch64-sve.md (mov<mode>): Optimize subreg moves
9328         that are semantically a reverse operation.
9329         (*aarch64_sve_mov<mode>_subreg_be): New pattern.
9330         * config/aarch64/aarch64.c (aarch64_maybe_expand_sve_subreg_move):
9331         (aarch64_replace_reg_mode, aarch64_split_sve_subreg_move): New
9332         functions.
9333         (aarch64_can_change_mode_class): For big-endian, forbid changes
9334         between two SVE modes if they have different element sizes.
9335
9336 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
9337
9338         * config/aarch64/aarch64.c (aarch64_expand_sve_const_vector): Prefer
9339         the TImode handling for big-endian targets.
9340
9341 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
9342
9343         * config/aarch64/aarch64-sve.md (sve_ld1rq): Replace with...
9344         (*sve_ld1rq<Vesize>): ... this new pattern.  Handle all element sizes,
9345         not just bytes.
9346         * config/aarch64/aarch64.c (aarch64_expand_sve_widened_duplicate):
9347         Remove BSWAP handing for big-endian targets and use the form of
9348         LD1RQ appropariate for the mode.
9349
9350 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
9351
9352         * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Handle
9353         all CONST_VECTOR_DUPLICATE_P vectors, not just those with a single
9354         duplicated element.
9355
9356 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
9357
9358         PR tearget/83845
9359         * config/aarch64/aarch64.c (aarch64_secondary_reload): Tighten
9360         check for operands that need to go through aarch64_sve_reload_be.
9361
9362 2018-02-01  Jakub Jelinek  <jakub@redhat.com>
9363
9364         PR tree-optimization/81661
9365         PR tree-optimization/84117
9366         * tree-eh.h (rewrite_to_non_trapping_overflow): Declare.
9367         * tree-eh.c: Include gimplify.h.
9368         (find_trapping_overflow, replace_trapping_overflow,
9369         rewrite_to_non_trapping_overflow): New functions.
9370         * tree-vect-loop.c: Include tree-eh.h.
9371         (vect_get_loop_niters): Use rewrite_to_non_trapping_overflow.
9372         * tree-data-ref.c: Include tree-eh.h.
9373         (get_segment_min_max): Use rewrite_to_non_trapping_overflow.
9374
9375 2018-01-31  Uros Bizjak  <ubizjak@gmail.com>
9376
9377         PR rtl-optimization/84123
9378         * combine.c (change_zero_ext): Check if hard register satisfies
9379         can_change_dest_mode before calling gen_lowpart_SUBREG.
9380
9381 2018-01-31  Vladimir Makarov  <vmakarov@redhat.com>
9382
9383         PR target/82444
9384         * ira.c (ira_init_register_move_cost): Remove assert.
9385
9386 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
9387
9388         PR rtl-optimization/84071
9389         * doc/tm.texi.in (WORD_REGISTER_OPERATIONS): Add explicit case.
9390         * doc/tm.texi: Regenerate.
9391
9392 2018-01-31  Richard Biener  <rguenther@suse.de>
9393
9394         PR tree-optimization/84132
9395         * tree-data-ref.c (analyze_miv_subscript): Properly
9396         check whether evolution_function_is_affine_multivariate_p
9397         before calling gcd_of_steps_may_divide_p.
9398
9399 2018-01-31  Julia Koval  <julia.koval@intel.com>
9400
9401         PR target/83618
9402         * config/i386/i386.c (ix86_expand_builtin): Handle IX86_BUILTIN_RDPID.
9403         * config/i386/i386.md (rdpid_rex64) New.
9404         (rdpid): Make 32bit only.
9405
9406 2018-01-29  Aldy Hernandez  <aldyh@redhat.com>
9407
9408         PR lto/84105
9409         * tree-pretty-print.c (dump_generic_node): Handle a TYPE_NAME with
9410         an IDENTIFIER_NODE for FUNCTION_TYPE's.
9411
9412 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
9413
9414         Revert
9415         2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
9416
9417         * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
9418
9419 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
9420
9421         PR rtl-optimization/84071
9422         * combine.c (record_dead_and_set_regs_1): Record the source unmodified
9423         for a paradoxical SUBREG on a WORD_REGISTER_OPERATIONS target.
9424
9425 2018-01-31  Claudiu Zissulescu  <claziss@synopsys.com>
9426
9427         * config/arc/arc.c (arc_handle_aux_attribute): New function.
9428         (arc_attribute_table): Add 'aux' attribute.
9429         (arc_in_small_data_p): Consider aux like variables.
9430         (arc_is_aux_reg_p): New function.
9431         (arc_asm_output_aligned_decl_local): Ignore 'aux' like variables.
9432         (arc_get_aux_arg): New function.
9433         (prepare_move_operands): Handle aux-register access.
9434         (arc_handle_aux_attribute): New function.
9435         * doc/extend.texi (ARC Variable attributes): Add subsection.
9436
9437 2018-01-31  Claudiu Zissulescu  <claziss@synopsys.com>
9438
9439         * config/arc/arc-protos.h (arc_is_uncached_mem_p): Function proto.
9440         * config/arc/arc.c (arc_handle_uncached_attribute): New function.
9441         (arc_attribute_table): Add 'uncached' attribute.
9442         (arc_print_operand): Print '.di' flag for uncached memory
9443         accesses.
9444         (arc_in_small_data_p): Do not consider for small data the uncached
9445         types.
9446         (arc_is_uncached_mem_p): New function.
9447         * config/arc/predicates.md (compact_store_memory_operand): Check
9448         for uncached memory accesses.
9449         (nonvol_nonimm_operand): Likewise.
9450         * gcc/doc/extend.texi (ARC Type Attribute): New subsection.
9451
9452 2018-01-31  Jakub Jelinek  <jakub@redhat.com>
9453
9454         PR c/84100
9455         * common.opt (falign-functions=, falign-jumps=, falign-labels=,
9456         falign-loops=): Add Optimization flag.
9457
9458 2018-01-30  Jeff Law  <law@redhat.com>
9459
9460         PR target/84064
9461         * i386.c (ix86_adjust_stack_and_probe_stack_clash): New argument
9462         INT_REGISTERS_SAVED.  Check it prior to calling
9463         get_scratch_register_on_entry.
9464         (ix86_adjust_stack_and_probe): Similarly.
9465         (ix86_emit_probe_stack_range): Similarly.
9466         (ix86_expand_prologue): Corresponding changes.
9467
9468 2018-01-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
9469
9470         PR target/40411
9471         * config/sol2.h (STARTFILE_ARCH_SPEC): Use -std=c*,
9472         -std=iso9899:199409 instead of -pedantic to select values-Xc.o.
9473
9474 2018-01-30  Vladimir Makarov  <vmakarov@redhat.com>
9475
9476         PR target/84112
9477         * lra-constraints.c (curr_insn_transform): Process AND in the
9478         address.
9479
9480 2018-01-30  Jakub Jelinek  <jakub@redhat.com>
9481
9482         PR rtl-optimization/83986
9483         * sched-deps.c (sched_analyze_insn): For frame related insns, add anti
9484         dependence against last_pending_memory_flush in addition to
9485         pending_jump_insns.
9486
9487 2018-01-30  Alexandre Oliva  <aoliva@redhat.com>
9488
9489         PR tree-optimization/81611
9490         * tree-ssa-dom.c (simple_iv_increment_p): Skip intervening
9491         copies.
9492
9493 2018-01-30  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
9494
9495         PR target/83758
9496         * config/rs6000/rs6000.c (rs6000_internal_arg_pointer): Only return
9497         a reg rtx.
9498
9499 2018-01-30  Richard Biener  <rguenther@suse.de>
9500             Jakub Jelinek  <jakub@redhat.com>
9501
9502         PR tree-optimization/84111
9503         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1): Skip
9504         inner loops added during recursion, as they don't have up-to-date
9505         SSA form.
9506
9507 2018-01-30  Jan Hubicka  <hubicka@ucw.cz>
9508
9509         PR ipa/81360
9510         * ipa-inline.c (can_inline_edge_p): Break out late tests to...
9511         (can_inline_edge_by_limits_p): ... here.
9512         (can_early_inline_edge_p, check_callers,
9513         update_caller_keys, update_callee_keys, recursive_inlining,
9514         add_new_edges_to_heap, speculation_useful_p,
9515         inline_small_functions,
9516         inline_small_functions, flatten_function,
9517         inline_to_all_callers_1): Update.
9518
9519 2018-01-30  Jan Hubicka  <hubicka@ucw.cz>
9520
9521         * profile-count.c (profile_count::combine_with_ipa_count): Handle
9522         zeros correctly.
9523
9524 2018-01-30  Richard Biener  <rguenther@suse.de>
9525
9526         PR tree-optimization/83008
9527         * tree-vect-slp.c (vect_analyze_slp_cost_1): Properly cost
9528         invariant and constant vector uses in stmts when they need
9529         more than one stmt.
9530
9531 2018-01-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
9532
9533         PR bootstrap/84017
9534         * configure.ac (gcc_cv_as_shf_merge): Disable on Solaris 10/x86.
9535         * configure: Regenerate.
9536
9537 2018-01-30  Richard Sandiford  <richard.sandiford@linaro.org>
9538
9539         * config/aarch64/aarch64-sve.md (*vec_extract<mode><Vel>_0): New
9540         pattern.
9541         (*vec_extract<mode><Vel>_v128): Require a nonzero lane number.
9542         Use gen_rtx_REG rather than gen_lowpart.
9543
9544 2018-01-30  Richard Sandiford  <richard.sandiford@linaro.org>
9545
9546         * lra-constraints.c (match_reload): Use subreg_lowpart_offset
9547         rather than 0 when creating partial subregs.
9548
9549 2018-01-30  Richard Sandiford  <richard.sandiford@linaro.org>
9550
9551         * vec-perm-indices.c (vec_perm_indices::series_p): Give examples
9552         of usage.
9553
9554 2018-01-29  Michael Meissner  <meissner@linux.vnet.ibm.com>
9555
9556         PR target/81550
9557         * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): If DFmode
9558         and SFmode can go in Altivec registers (-mcpu=power7 for DFmode,
9559         -mcpu=power8 for SFmode) don't set the PRE_INCDEC or PRE_MODIFY
9560         flags.  This restores the settings used before the 2017-07-24.
9561         Turning off pre increment/decrement/modify allows IVOPTS to
9562         optimize DF/SF loops where the index is an int.
9563
9564 2018-01-29  Richard Biener  <rguenther@suse.de>
9565             Kelvin Nilsen  <kelvin@gcc.gnu.org>
9566
9567         PR bootstrap/80867
9568         * tree-vect-stmts.c (vectorizable_call): Don't call
9569         targetm.vectorize_builtin_md_vectorized_function if callee is
9570         NULL.
9571
9572 2018-01-22  Carl Love  <cel@us.ibm.com>
9573
9574         * doc/extend.tex: Fix typo in second arg in
9575         __builtin_bcdadd_{lt|eq|gt|ov} and __builtin_bcdsub_{lt|eq|gt|ov}.
9576
9577 2018-01-29  Richard Biener  <rguenther@suse.de>
9578
9579         PR tree-optimization/84086
9580         * tree-ssanames.c: Include cfgloop.h and tree-scalar-evolution.h.
9581         (flush_ssaname_freelist): When SSA names were released reset
9582         the SCEV hash table.
9583
9584 2018-01-29  Richard Biener  <rguenther@suse.de>
9585
9586         PR tree-optimization/84057
9587         * tree-ssa-loop-ivcanon.c (unloop_loops): Deal with already
9588         removed paths when removing edges.
9589
9590 2018-01-27  H.J. Lu  <hongjiu.lu@intel.com>
9591
9592         * doc/invoke.texi: Replace -mfunction-return==@var{choice} with
9593         -mfunction-return=@var{choice}.
9594
9595 2018-01-27  Bernd Edlinger  <bernd.edlinger@hotmail.de>
9596
9597         PR diagnostic/84034
9598         * diagnostic-show-locus.c (get_line_width_without_trailing_whitespace):
9599         Handle CR like TAB.
9600         (layout::print_source_line): Likewise.
9601         (test_get_line_width_without_trailing_whitespace): Add test cases.
9602
9603 2018-01-27  Jakub Jelinek  <jakub@redhat.com>
9604
9605         PR middle-end/84040
9606         * sched-deps.c (sched_macro_fuse_insns): Return immediately for
9607         debug insns.
9608
9609 2018-01-26  Jim Wilson  <jimw@sifive.com>
9610
9611         * config/riscv/riscv.h (MAX_FIXED_MODE_SIZE): New.
9612
9613         * config/riscv/elf.h (LIB_SPEC): Don't include -lgloss when nosys.specs
9614         specified.
9615
9616 2018-01-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
9617
9618         * config/aarch64/aarch64.md: Add peepholes for CMP + SUB -> SUBS
9619         and CMP + SUB-immediate -> SUBS.
9620
9621 2018-01-26  Martin Sebor  <msebor@redhat.com>
9622
9623         PR tree-optimization/83896
9624         * tree-ssa-strlen.c (get_string_len): Rename...
9625         (get_string_cst_length): ...to this.  Return HOST_WIDE_INT.
9626         Avoid assuming length is constant.
9627         (handle_char_store): Use HOST_WIDE_INT for string length.
9628
9629 2018-01-26  Uros Bizjak  <ubizjak@gmail.com>
9630
9631         PR target/81763
9632         * config/i386/i386.md (*andndi3_doubleword): Add earlyclobber
9633         to (=&r,r,rm) alternative. Add (=r,0,rm) and (=r,r,0) alternatives.
9634
9635 2018-01-26  Richard Biener  <rguenther@suse.de>
9636
9637         PR rtl-optimization/84003
9638         * dse.c (record_store): Only record redundant stores when
9639         the earlier store aliases at least all accesses the later one does.
9640
9641 2018-01-26  Jakub Jelinek  <jakub@redhat.com>
9642
9643         PR rtl-optimization/83985
9644         * dce.c (deletable_insn_p): Return false for separate shrink wrapping
9645         REG_CFA_RESTORE insns.
9646         (delete_unmarked_insns): Don't ignore separate shrink wrapping
9647         REG_CFA_RESTORE insns here.
9648
9649         PR c/83989
9650         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Don't
9651         use SSA_NAME_VAR as base for SSA_NAMEs with non-NULL SSA_NAME_VAR.
9652
9653 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
9654
9655         * config/arc/arc-arch.h (arc_tune_attr): Add ARC_TUNE_CORE_3.
9656         * config/arc/arc.c (arc_sched_issue_rate): Use ARC_TUNE_... .
9657         (arc_init): Likewise.
9658         (arc_override_options): Likewise.
9659         (arc_file_start): Choose Tag_ARC_CPU_variation based on arc_tune
9660         value.
9661         (hwloop_fail): Use TARGET_DBNZ when we want to check for dbnz insn
9662         support.
9663         * config/arc/arc.h (TARGET_DBNZ): Define.
9664         * config/arc/arc.md (attr tune): Add core_3, use ARC_TUNE_... to
9665         properly set the tune attribute.
9666         (dbnz): Use TARGET_DBNZ guard.
9667         * config/arc/arc.opt (mtune): Add core3 option.
9668
9669 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
9670
9671         * config/arc/arc.c (arc_delegitimize_address_0): Refactored to
9672         recognize new pic like addresses.
9673         (arc_delegitimize_address): Clean up.
9674
9675 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
9676
9677         * config/arc/arc-arches.def: Option mrf16 valid for all
9678         architectures.
9679         * config/arc/arc-c.def (__ARC_RF16__): New predefined macro.
9680         * config/arc/arc-cpus.def (em_mini): New cpu with rf16 on.
9681         * config/arc/arc-options.def (FL_RF16): Add mrf16 option.
9682         * config/arc/arc-tables.opt: Regenerate.
9683         * config/arc/arc.c (arc_conditional_register_usage): Handle
9684         reduced register file case.
9685         (arc_file_start): Set must have build attributes.
9686         * config/arc/arc.h (MAX_ARC_PARM_REGS): Conditional define using
9687         mrf16 option value.
9688         * config/arc/arc.opt (mrf16): Add new option.
9689         * config/arc/elf.h (ATTRIBUTE_PCS): Define.
9690         * config/arc/genmultilib.awk: Handle new mrf16 option.
9691         * config/arc/linux.h (ATTRIBUTE_PCS): Define.
9692         * config/arc/t-multilib: Regenerate.
9693         * doc/invoke.texi (ARC Options): Document mrf16 option.
9694
9695 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
9696
9697         * config/arc/arc-protos.h: Add arc_is_secure_call_p proto.
9698         * config/arc/arc.c (arc_handle_secure_attribute): New function.
9699         (arc_attribute_table): Add 'secure_call' attribute.
9700         (arc_print_operand): Print secure call operand.
9701         (arc_function_ok_for_sibcall): Don't optimize tail calls when
9702         secure.
9703         (arc_is_secure_call_p): New function.  * config/arc/arc.md
9704         (call_i): Add support for sjli instruction.
9705         (call_value_i): Likewise.
9706         * config/arc/constraints.md (Csc): New constraint.
9707
9708 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
9709             John Eric Martin  <John.Martin@emmicro-us.com>
9710
9711         * config/arc/arc-protos.h: Add arc_is_jli_call_p proto.
9712         * config/arc/arc.c (_arc_jli_section): New struct.
9713         (arc_jli_section): New type.
9714         (rc_jli_sections): New static variable.
9715         (arc_handle_jli_attribute): New function.
9716         (arc_attribute_table): Add jli_always and jli_fixed attribute.
9717         (arc_file_end): New function.
9718         (TARGET_ASM_FILE_END): Define.
9719         (arc_print_operand): Reuse 'S' letter for JLI output instruction.
9720         (arc_add_jli_section): New function.
9721         (jli_call_scan): Likewise.
9722         (arc_reorg): Call jli_call_scan.
9723         (arc_output_addsi): Remove 'S' from printing asm operand.
9724         (arc_is_jli_call_p): New function.
9725         * config/arc/arc.md (movqi_insn): Remove 'S' from printing asm
9726         operand.
9727         (movhi_insn): Likewise.
9728         (movsi_insn): Likewise.
9729         (movsi_set_cc_insn): Likewise.
9730         (loadqi_update): Likewise.
9731         (load_zeroextendqisi_update): Likewise.
9732         (load_signextendqisi_update): Likewise.
9733         (loadhi_update): Likewise.
9734         (load_zeroextendhisi_update): Likewise.
9735         (load_signextendhisi_update): Likewise.
9736         (loadsi_update): Likewise.
9737         (loadsf_update): Likewise.
9738         (movsicc_insn): Likewise.
9739         (bset_insn): Likewise.
9740         (bxor_insn): Likewise.
9741         (bclr_insn): Likewise.
9742         (bmsk_insn): Likewise.
9743         (bicsi3_insn): Likewise.
9744         (cmpsi_cc_c_insn): Likewise.
9745         (movsi_ne): Likewise.
9746         (movsi_cond_exec): Likewise.
9747         (clrsbsi2): Likewise.
9748         (norm_f): Likewise.
9749         (normw): Likewise.
9750         (swap): Likewise.
9751         (divaw): Likewise.
9752         (flag): Likewise.
9753         (sr): Likewise.
9754         (kflag): Likewise.
9755         (ffs): Likewise.
9756         (ffs_f): Likewise.
9757         (fls): Likewise.
9758         (call_i): Remove 'S' asm letter, add jli instruction.
9759         (call_value_i): Likewise.
9760         * config/arc/arc.op (mjli-always): New option.
9761         * config/arc/constraints.md (Cji): New constraint.
9762         * config/arc/fpx.md (addsf3_fpx): Remove 'S' from printing asm
9763         operand.
9764         (subsf3_fpx): Likewise.
9765         (mulsf3_fpx): Likewise.
9766         * config/arc/simdext.md (vendrec_insn): Remove 'S' from printing
9767         asm operand.
9768         * doc/extend.texi (ARC): Document 'jli-always' and 'jli-fixed'
9769         function attrbutes.
9770         * doc/invoke.texi (ARC): Document mjli-always option.
9771
9772 2018-01-26  Sebastian Perta  <sebastian.perta@renesas.com>
9773
9774         * config/rl78/rl78.c (rl78_addsi3_internal): If operand 2 is const 
9775         avoid addition with 0 and use incw and decw where possible.
9776
9777 2018-01-26  Richard Biener  <rguenther@suse.de>
9778
9779         PR tree-optimization/81082
9780         * fold-const.c (fold_plusminus_mult_expr): Do not perform the
9781         association if it requires casting to unsigned.
9782         * match.pd ((A * C) +- (B * C) -> (A+-B)): New patterns derived
9783         from fold_plusminus_mult_expr to catch important cases late when
9784         range info is available.
9785
9786 2018-01-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
9787
9788         * config/i386/sol2.h (USE_HIDDEN_LINKONCE): Remove.
9789         * configure.ac (hidden_linkonce): New test.
9790         * configure: Regenerate.
9791         * config.in: Regenerate.
9792
9793 2018-01-26  Julia Koval  <julia.koval@intel.com>
9794
9795         * config/i386/avx512bitalgintrin.h (_mm512_bitshuffle_epi64_mask,
9796         _mm512_mask_bitshuffle_epi64_mask, _mm256_bitshuffle_epi64_mask,
9797         _mm256_mask_bitshuffle_epi64_mask, _mm_bitshuffle_epi64_mask,
9798         _mm_mask_bitshuffle_epi64_mask): Fix type.
9799         * config/i386/i386-builtin-types.def (UHI_FTYPE_V2DI_V2DI_UHI,
9800         USI_FTYPE_V4DI_V4DI_USI): Remove.
9801         * config/i386/i386-builtin.def (__builtin_ia32_vpshufbitqmb512_mask,
9802         __builtin_ia32_vpshufbitqmb256_mask,
9803         __builtin_ia32_vpshufbitqmb128_mask): Fix types.
9804         * config/i386/i386.c (ix86_expand_args_builtin): Remove old types.
9805         * config/i386/sse.md (VI1_AVX512VLBW): Change types.
9806
9807 2018-01-26  Alan Modra  <amodra@gmail.com>
9808
9809         PR target/84033
9810         * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Exclude
9811         UNSPEC_VBPERMQ.  Sort other unspecs.
9812
9813 2018-01-25  David Edelsohn  <dje.gcc@gmail.com>
9814
9815         * doc/invoke.texi (PowerPC Options): Document 'native' cpu type.
9816
9817 2018-01-25  Jan Hubicka  <hubicka@ucw.cz>
9818
9819         PR middle-end/83055
9820         * predict.c (drop_profile): Do not push/pop cfun; update also
9821         node->count.
9822         (handle_missing_profiles): Fix logic looking for zero profiles.
9823
9824 2018-01-25  Jakub Jelinek  <jakub@redhat.com>
9825
9826         PR middle-end/83977
9827         * ipa-fnsummary.c (compute_fn_summary): Clear can_change_signature
9828         on functions with #pragma omp declare simd or functions with simd
9829         attribute.
9830         * omp-simd-clone.c (expand_simd_clones): Revert 2018-01-24 change.
9831         * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen):
9832         Remove trailing \n from warning_at calls.
9833
9834 2018-01-25  Tom de Vries  <tom@codesourcery.com>
9835
9836         PR target/84028
9837         * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
9838         for neutered workers.
9839
9840 2018-01-24  Joseph Myers  <joseph@codesourcery.com>
9841
9842         PR target/68467
9843         * config/m68k/m68k.c (m68k_promote_function_mode): New function.
9844         (TARGET_PROMOTE_FUNCTION_MODE): New macro.
9845
9846 2018-01-24  Jeff Law  <law@redhat.com>
9847
9848         PR target/83994
9849         * i386.c (get_probe_interval): Move to earlier point.
9850         (ix86_compute_frame_layout): If -fstack-clash-protection and
9851         the frame is larger than the probe interval, then use pushes
9852         to save registers rather than reg->mem moves.
9853         (ix86_expand_prologue): Remove conditional for int_registers_saved
9854         assertion.
9855
9856 2018-01-24  Vladimir Makarov  <vmakarov@redhat.com>
9857
9858         PR target/84014
9859         * ira-build.c (setup_min_max_allocno_live_range_point): Set up
9860         min/max for never referenced object.
9861
9862 2018-01-24  Jakub Jelinek  <jakub@redhat.com>
9863
9864         PR middle-end/83977
9865         * tree.c (free_lang_data_in_decl): Don't clear DECL_ABSTRACT_ORIGIN
9866         here.
9867         * omp-low.c (create_omp_child_function): Remove "omp declare simd"
9868         attributes from DECL_ATTRIBUTES (decl) without affecting
9869         DECL_ATTRIBUTES (current_function_decl).
9870         * omp-simd-clone.c (expand_simd_clones): Ignore DECL_ARTIFICIAL
9871         functions with non-NULL DECL_ABSTRACT_ORIGIN.
9872
9873 2018-01-24  Richard Sandiford  <richard.sandiford@linaro.org>
9874
9875         PR tree-optimization/83979
9876         * fold-const.c (fold_comparison): Use constant_boolean_node
9877         instead of boolean_{true,false}_node.
9878
9879 2018-01-24  Jan Hubicka  <hubicka@ucw.cz>
9880
9881         * ipa-profile.c (ipa_propagate_frequency_1): Fix logic skipping calls
9882         with zero counts.
9883
9884 2018-01-24  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
9885
9886         * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
9887         Simplify the clause that sets the length attribute.
9888         (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
9889         (*sibcall_nonlocal_sysv<mode>): Clean up code block; simplify the
9890         clause that sets the length attribute.
9891         (*sibcall_value_nonlocal_sysv<mode>): Likewise.
9892
9893 2018-01-24  Tom de Vries  <tom@codesourcery.com>
9894
9895         PR target/83589
9896         * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_2): Define to 1.
9897         (nvptx_pc_set, nvptx_condjump_label): New function. Copy from jump.c.
9898         Add strict parameter.
9899         (prevent_branch_around_nothing): Insert dummy insn between branch to
9900         label and label with no ptx insn inbetween.
9901         * config/nvptx/nvptx.md (define_insn "fake_nop"): New insn.
9902
9903 2018-01-24  Tom de Vries  <tom@codesourcery.com>
9904
9905         PR target/81352
9906         * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
9907         for neutered threads in warp.
9908         * config/nvptx/nvptx.md (define_insn "exit"): New insn.
9909
9910 2018-01-24  Richard Biener  <rguenther@suse.de>
9911
9912         PR tree-optimization/83176
9913         * tree-chrec.c (chrec_fold_plus_1): Handle (signed T){(T) .. }
9914         operands.
9915
9916 2018-01-24  Richard Biener  <rguenther@suse.de>
9917
9918         PR tree-optimization/82819
9919         * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Avoid
9920         code generating pluses that are no-ops in the target precision.
9921
9922 2018-01-24  Richard Biener  <rguenther@suse.de>
9923
9924         PR middle-end/84000
9925         * tree-cfg.c (replace_loop_annotate): Handle annot_expr_parallel_kind.
9926
9927 2018-01-23  Jan Hubicka  <hubicka@ucw.cz>
9928
9929         * cfgcleanup.c (try_crossjump_to_edge): Use combine_with_count
9930         to merge probabilities.
9931         * predict.c (probably_never_executed): Also mark as cold functions
9932         with global 0 profile and guessed local profile.
9933         * profile-count.c (profile_probability::combine_with_count): New
9934         member function.
9935         * profile-count.h (profile_probability::operator*,
9936         profile_probability::operator*=, profile_probability::operator/,
9937         profile_probability::operator/=): Reduce precision to adjusted
9938         and set value to guessed on contradictory divisions.
9939         (profile_probability::combine_with_freq): Remove.
9940         (profile_probability::combine_wiht_count): Declare.
9941         (profile_count::force_nonzero):: Set to adjusted.
9942         (profile_count::probability_in):: Set quality to adjusted.
9943         * tree-ssa-tail-merge.c (replace_block_by): Use
9944         combine_with_count.
9945
9946 2018-01-23  Andrew Waterman  <andrew@sifive.com>
9947             Jim Wilson  <jimw@sifive.com>
9948
9949         * config/riscv/riscv.c (riscv_stack_boundary): New.
9950         (riscv_option_override): Set riscv_stack_boundary.  Handle
9951         riscv_preferred_stack_boundary_arg.
9952         * config/riscv/riscv.h (MIN_STACK_BOUNDARY, ABI_STACK_BOUNDARY): New.
9953         (BIGGEST_ALIGNMENT): Set to STACK_BOUNDARY.
9954         (STACK_BOUNDARY): Set to riscv_stack_boundary.
9955         (RISCV_STACK_ALIGN): Use STACK_BOUNDARY.
9956         * config/riscv/riscv.opt (mpreferred-stack-boundary): New.
9957         * doc/invoke.tex (RISC-V Options): Add -mpreferred-stack-boundary.
9958
9959 2018-01-23  H.J. Lu  <hongjiu.lu@intel.com>
9960
9961         PR target/83905
9962         * config/i386/i386.c (ix86_expand_prologue): Use cost reference
9963         of struct ix86_frame.
9964         (ix86_expand_epilogue): Likewise.  Add a local variable for
9965         the reg_save_offset field in struct ix86_frame.
9966
9967 2018-01-23  Bin Cheng  <bin.cheng@arm.com>
9968
9969         PR tree-optimization/82604
9970         * tree-loop-distribution.c (enum partition_kind): New enum item
9971         PKIND_PARTIAL_MEMSET.
9972         (partition_builtin_p): Support above new enum item.
9973         (generate_code_for_partition): Ditto.
9974         (compute_access_range): Differentiate cases that equality can be
9975         proven at all loops, the innermost loops or no loops.
9976         (classify_builtin_st, classify_builtin_ldst): Adjust call to above
9977         function.  Set PKIND_PARTIAL_MEMSET for partition appropriately.
9978         (finalize_partitions, distribute_loop): Don't fuse partition of
9979         PKIND_PARTIAL_MEMSET kind when distributing 3-level loop nest.
9980         (prepare_perfect_loop_nest): Distribute 3-level loop nest only if
9981         parloop is enabled.
9982
9983 2018-01-23  Martin Liska  <mliska@suse.cz>
9984
9985         * predict.def (PRED_INDIR_CALL): Set probability to PROB_EVEN in
9986         order to ignore the predictor.
9987         (PRED_POLYMORPHIC_CALL): Likewise.
9988         (PRED_RECURSIVE_CALL): Likewise.
9989
9990 2018-01-23  Martin Liska  <mliska@suse.cz>
9991
9992         * tree-profile.c (tree_profiling): Print function header to
9993         aware reader which function we are working on.
9994         * value-prof.c (gimple_find_values_to_profile): Do not print
9995         not interesting value histograms.
9996
9997 2018-01-23  Martin Liska  <mliska@suse.cz>
9998
9999         * profile-count.h (enum profile_quality): Add
10000         profile_uninitialized as the first value. Do not number values
10001         as they are zero based.
10002         (profile_count::verify): Update sanity check.
10003         (profile_probability::verify): Likewise.
10004
10005 2018-01-23  Nathan Sidwell  <nathan@acm.org>
10006
10007         * doc/invoke.texi (ffor-scope): Deprecate.
10008
10009 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
10010
10011         PR tree-optimization/83510
10012         * domwalk.c (set_all_edges_as_executable): New function.
10013         (dom_walker::dom_walker): Convert bool param
10014         "skip_unreachable_blocks" to enum reachability.  Move setup of
10015         edge flags to set_all_edges_as_executable and only do it when
10016         reachability is REACHABLE_BLOCKS.
10017         * domwalk.h (enum dom_walker::reachability): New enum.
10018         (dom_walker::dom_walker): Convert bool param
10019         "skip_unreachable_blocks" to enum reachability.
10020         (set_all_edges_as_executable): New decl.
10021         * graphite-scop-detection.c  (gather_bbs::gather_bbs): Convert
10022         from false for "skip_unreachable_blocks" to ALL_BLOCKS for
10023         "reachability".
10024         * tree-ssa-dom.c (dom_opt_dom_walker::dom_opt_dom_walker): Likewise,
10025         but converting true to REACHABLE_BLOCKS.
10026         * tree-ssa-sccvn.c (sccvn_dom_walker::sccvn_dom_walker): Likewise.
10027         * tree-vrp.c
10028         (check_array_bounds_dom_walker::check_array_bounds_dom_walker):
10029         Likewise, but converting it to REACHABLE_BLOCKS_PRESERVING_FLAGS.
10030         (vrp_dom_walker::vrp_dom_walker): Likewise, but converting it to
10031         REACHABLE_BLOCKS.
10032         (vrp_prop::vrp_finalize): Call set_all_edges_as_executable
10033         if check_all_array_refs will be called.
10034
10035 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
10036
10037         * tree.c (selftest::test_location_wrappers): Add more test
10038         coverage.
10039
10040 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
10041
10042         * sbitmap.c (selftest::test_set_range): Fix memory leaks.
10043         (selftest::test_bit_in_range): Likewise.
10044
10045 2018-01-23  Richard Sandiford  <richard.sandiford@linaro.org>
10046
10047         PR testsuite/83888
10048         * doc/sourcebuild.texi (vect_float): Say that the selector
10049         only describes the situation when -funsafe-math-optimizations is on.
10050         (vect_float_strict): Document.
10051
10052 2018-01-23  Richard Sandiford  <richard.sandiford@linaro.org>
10053
10054         PR tree-optimization/83965
10055         * tree-vect-patterns.c (vect_reassociating_reduction_p): New function.
10056         (vect_recog_dot_prod_pattern, vect_recog_sad_pattern): Use it
10057         instead of checking only for a reduction.
10058         (vect_recog_widen_sum_pattern): Likewise.
10059
10060 2018-01-23  Jan Hubicka  <hubicka@ucw.cz>
10061
10062         * predict.c (probably_never_executed): Only use precise profile info.
10063         (compute_function_frequency): Skip after inlining hack since we now
10064         have quality checking.
10065
10066 2018-01-23  Jan Hubicka  <hubicka@ucw.cz>
10067
10068         * profile-count.h (profile_probability::very_unlikely,
10069         profile_probability::unlikely, profile_probability::even): Set
10070         precision to guessed.
10071
10072 2018-01-23  Richard Biener  <rguenther@suse.de>
10073
10074         PR tree-optimization/83963
10075         * graphite-scop-detection.c (scop_detection::harmful_loop_in_region):
10076         Properly terminate dominator walk when crossing the exit edge not
10077         when visiting its source block.
10078
10079 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
10080
10081         PR c++/83918
10082         * tree.c (maybe_wrap_with_location): Use NON_LVALUE_EXPR rather than
10083         VIEW_CONVERT_EXPR to wrap CONST_DECLs.
10084
10085 2018-01-22  Jakub Jelinek  <jakub@redhat.com>
10086
10087         PR tree-optimization/83957
10088         * omp-expand.c (expand_omp_for_generic): Ignore virtual PHIs.  Remove
10089         semicolon after for body surrounded by braces.
10090
10091         PR tree-optimization/83081
10092         * profile-count.h (profile_probability::split): New method.
10093         * dojump.c (do_jump_1) <case TRUTH_ANDIF_EXPR, case TRUTH_ORIF_EXPR>:
10094         Use profile_probability::split.
10095         (do_compare_rtx_and_jump): Fix adjustment of probabilities
10096         when splitting a single conditional jump into 2.
10097
10098 2018-01-22  David Malcolm  <dmalcolm@redhat.com>
10099
10100         PR tree-optimization/69452
10101         * tree-ssa-loop-im.c (class move_computations_dom_walker): Remove
10102         decl.
10103
10104 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
10105
10106         * config/rl78/rl78-expand.md (bswaphi2): New define_expand.
10107         * config/rl78/rl78-virt.md (*bswaphi2_virt): New define_insn.
10108         * config/rl78/rl78-real.md (*bswaphi2_real): New define_insn.
10109
10110 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
10111
10112         * config/rl78/rl78-protos.h (rl78_split_movdi): New function declaration.
10113         * config/rl78/rl78.md (movdi): New define_expand.
10114         * config/rl78/rl78.c (rl78_split_movdi): New function.
10115
10116 2018-01-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
10117
10118         PR target/83862
10119         * config/rs6000/rs6000-protos.h (rs6000_split_signbit): Delete,
10120         no longer used.
10121         * config/rs6000/rs6000.c (rs6000_split_signbit): Likewise.
10122         * config/rs6000/rs6000.md (signbit<mode>2): Change code for IEEE
10123         128-bit to produce an UNSPEC move to get the double word with the
10124         signbit and then a shift directly to do signbit.
10125         (signbit<mode>2_dm): Replace old IEEE 128-bit signbit
10126         implementation with a new version that just does either a direct
10127         move or a regular move.  Move memory interface to separate insns.
10128         Move insns so they are next to the expander.
10129         (signbit<mode>2_dm_mem_be): New combiner insns to combine load
10130         with signbit move.  Split big and little endian case.
10131         (signbit<mode>2_dm_mem_le): Likewise.
10132         (signbit<mode>2_dm_<su>ext): Delete, no longer used.
10133         (signbit<mode>2_dm2): Likewise.
10134
10135 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
10136
10137         * config/rl78/rl78.md (anddi3): New define_expand.
10138
10139 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
10140
10141         * config/rl78/rl78.md (umindi3): New define_expand.
10142
10143 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
10144
10145         * config/rl78/rl78.md (smindi3): New define_expand.
10146
10147 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
10148
10149         * config/rl78/rl78.md (smaxdi3): New define_expand.
10150
10151 2018-01-22  Carl Love  <cel@us.ibm.com>
10152
10153         * config/rs6000/rs6000-builtin.def (ST_ELEMREV_V1TI, LD_ELEMREV_V1TI,
10154         LVX_V1TI): Add macro expansion.
10155         * config/rs6000/rs6000-c.c (altivec_builtin_types): Add argument
10156         definitions for VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_VEC_ST,
10157         VSX_BUILTIN_VEC_XL, LD_ELEMREV_V1TI builtins.
10158         * config/rs6000/rs6000-p8swap.c (insn_is_swappable_p);
10159         Change check to determine if the instruction is a byte reversing
10160         entry.  Fix typo in comment.
10161         * config/rs6000/rs6000.c (altivec_expand_builtin): Add case entry
10162         for VSX_BUILTIN_ST_ELEMREV_V1TI and VSX_BUILTIN_LD_ELEMREV_V1TI.
10163         Add def_builtin calls for new builtins.
10164         * config/rs6000/vsx.md (vsx_st_elemrev_v1ti, vsx_ld_elemrev_v1ti):
10165         Add define_insn expansion.
10166
10167 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
10168
10169         * config/rl78/rl78.md (umaxdi3): New define_expand.
10170
10171 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
10172
10173         * config/rl78/rl78.c (rl78_note_reg_set): Fixed dead reg check
10174         for non-QImode registers.
10175
10176 2018-01-22  Richard Biener  <rguenther@suse.de>
10177
10178         PR tree-optimization/83963
10179         * graphite-scop-detection.c (scop_detection::get_sese): Delay
10180         including the loop exit block.
10181         (scop_detection::merge_sese): Likewise.
10182         (scop_detection::add_scop): Do it here instead.
10183
10184 2018-01-22  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
10185
10186         * doc/sourcebuild.texi (arm_softfloat): Document.
10187
10188 2018-01-21  John David Anglin  <danglin@gcc.gnu.org>
10189
10190         PR gcc/77734
10191         * config/pa/pa.c (pa_function_ok_for_sibcall): Use
10192         targetm.binds_local_p instead of TREE_PUBLIC to check local binding.
10193         Move TARGET_PORTABLE_RUNTIME check after TARGET_64BIT check.
10194
10195 2018-01-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
10196             David Edelsohn  <dje.gcc@gmail.com>
10197
10198         PR target/83946
10199         * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
10200         Change "crset eq" to "crset 2".
10201         (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
10202         (*call_indirect_aix<mode>_nospec): Likewise.
10203         (*call_value_indirect_aix<mode>_nospec): Likewise.
10204         (*call_indirect_elfv2<mode>_nospec): Likewise.
10205         (*call_value_indirect_elfv2<mode>_nospec): Likewise.
10206         (*sibcall_nonlocal_sysv<mode>): Change "crset eq" to "crset 2";
10207         change assembly output from . to $.
10208         (*sibcall_value_nonlocal_sysv<mode>): Likewise.
10209         (indirect_jump<mode>_nospec): Change assembly output from . to $.
10210         (*tablejump<mode>_internal1_nospec): Likewise.
10211
10212 2018-01-21  Oleg Endo  <olegendo@gcc.gnu.org>
10213
10214         PR target/80870
10215         * config/sh/sh_optimize_sett_clrt.cc:
10216         Use INCLUDE_ALGORITHM and INCLUDE_VECTOR instead of direct includes.
10217
10218 2018-01-20  Richard Sandiford  <richard.sandiford@linaro.org>
10219
10220         PR tree-optimization/83940
10221         * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): Set
10222         offset_dt to vect_constant_def rather than vect_unknown_def_type.
10223         (vect_check_load_store_mask): Add a mask_dt_out parameter and
10224         use it to pass back the definition type.
10225         (vect_check_store_rhs): Likewise rhs_dt_out.
10226         (vect_build_gather_load_calls): Add a mask_dt argument and use
10227         it instead of a call to vect_is_simple_use.
10228         (vectorizable_store): Update calls to vect_check_load_store_mask
10229         and vect_check_store_rhs.  Use the dt returned by the latter instead
10230         of scatter_src_dt.  Use the cached mask_dt and gs_info.offset_dt
10231         instead of calls to vect_is_simple_use.  Pass the scalar rather
10232         than the vector operand to vect_is_simple_use when handling
10233         second and subsequent copies of an rhs value.
10234         (vectorizable_load): Update calls to vect_check_load_store_mask
10235         and vect_build_gather_load_calls.  Use the cached mask_dt and
10236         gs_info.offset_dt instead of calls to vect_is_simple_use.
10237
10238 2018-01-20  Jakub Jelinek  <jakub@redhat.com>
10239
10240         PR middle-end/83945
10241         * tree-emutls.c: Include gimplify.h.
10242         (lower_emutls_2): New function.
10243         (lower_emutls_1): If ADDR_EXPR is a gimple invariant and walk_tree
10244         with lower_emutls_2 callback finds some TLS decl in it, unshare_expr
10245         it before further processing.
10246
10247         PR target/83930
10248         * simplify-rtx.c (simplify_binary_operation_1) <case UMOD>: Use
10249         UINTVAL (trueop1) instead of INTVAL (op1).
10250
10251 2018-01-19  Jakub Jelinek  <jakub@redhat.com>
10252
10253         PR debug/81570
10254         PR debug/83728
10255         * dwarf2cfi.c (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define to
10256         INCOMING_FRAME_SP_OFFSET if not defined.
10257         (scan_trace): Add ENTRY argument.  If true and
10258         DEFAULT_INCOMING_FRAME_SP_OFFSET != INCOMING_FRAME_SP_OFFSET,
10259         emit a note to adjust the CFA offset.
10260         (create_cfi_notes): Adjust scan_trace callers.
10261         (create_cie_data): Use DEFAULT_INCOMING_FRAME_SP_OFFSET rather than
10262         INCOMING_FRAME_SP_OFFSET in the CIE.
10263         * config/i386/i386.h (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define.
10264         * config/stormy16/stormy16.h (DEFAULT_INCOMING_FRAME_SP_OFFSET):
10265         Likewise.
10266         * doc/tm.texi.in (DEFAULT_INCOMING_FRAME_SP_OFFSET): Document.
10267         * doc/tm.texi: Regenerated.
10268
10269 2018-01-19  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
10270
10271         PR rtl-optimization/83147
10272         * lra-constraints.c (remove_inheritance_pseudos): Use
10273         lra_substitute_pseudo_within_insn.
10274
10275 2018-01-19  Tom de Vries  <tom@codesourcery.com>
10276             Cesar Philippidis  <cesar@codesourcery.com>
10277
10278         PR target/83920
10279         * config/nvptx/nvptx.c (nvptx_single): Fix jit workaround.
10280
10281 2018-01-19  Cesar Philippidis  <cesar@codesourcery.com>
10282
10283         PR target/83790
10284         * config/nvptx/nvptx.c (output_init_frag): Don't use generic address
10285         spaces for function labels.
10286
10287 2018-01-19  Martin Liska  <mliska@suse.cz>
10288
10289         * predict.def (PRED_LOOP_EXIT): Change from 85 to 89.
10290         (PRED_LOOP_EXIT_WITH_RECURSION): Change from 72 to 78.
10291         (PRED_LOOP_EXTRA_EXIT): Change from 83 to 67.
10292         (PRED_OPCODE_POSITIVE): Change from 64 to 59.
10293         (PRED_TREE_OPCODE_POSITIVE): Change from 64 to 59.
10294         (PRED_CONST_RETURN): Change from 69 to 65.
10295         (PRED_NULL_RETURN): Change from 91 to 71.
10296         (PRED_LOOP_IV_COMPARE_GUESS): Change from 98 to 64.
10297         (PRED_LOOP_GUARD): Change from 66 to 73.
10298
10299 2018-01-19  Martin Liska  <mliska@suse.cz>
10300
10301         * predict.c (predict_insn_def): Add new assert.
10302         (struct branch_predictor): Change type to signed integer.
10303         (test_prediction_value_range): Amend test to cover
10304         PROB_UNINITIALIZED.
10305         * predict.def (PRED_LOOP_ITERATIONS): Use the new constant.
10306         (PRED_LOOP_ITERATIONS_GUESSED): Likewise.
10307         (PRED_LOOP_ITERATIONS_MAX): Likewise.
10308         (PRED_LOOP_IV_COMPARE): Likewise.
10309         * predict.h (PROB_UNINITIALIZED): Define new constant.
10310
10311 2018-01-19  Martin Liska  <mliska@suse.cz>
10312
10313         * predict.c (dump_prediction): Add new format for
10314         analyze_brprob.py script which is enabled with -details
10315         suboption.
10316         * profile-count.h (precise_p): New function.
10317
10318 2018-01-19  Richard Sandiford  <richard.sandiford@linaro.org>
10319
10320         PR tree-optimization/83922
10321         * tree-vect-loop.c (vect_verify_full_masking): Return false if
10322         there are no statements that need masking.
10323         (vect_active_double_reduction_p): New function.
10324         (vect_analyze_loop_operations): Use it when handling phis that
10325         are not in the loop header.
10326
10327 2018-01-19  Richard Sandiford  <richard.sandiford@linaro.org>
10328
10329         PR tree-optimization/83914
10330         * tree-vect-loop.c (vectorizable_induction): Don't convert
10331         init_expr or apply the peeling adjustment for inductions
10332         that are nested within the vectorized loop.
10333
10334 2018-01-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
10335
10336         * config/arm/thumb2.md (*thumb2_negsi2_short): Use RSB mnemonic
10337         instead of NEG.
10338
10339 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
10340
10341         PR sanitizer/81715
10342         PR testsuite/83882
10343         * function.h (gimplify_parameters): Add gimple_seq * argument.
10344         * function.c: Include gimple.h and options.h.
10345         (gimplify_parameters): Add cleanup argument, add CLOBBER stmts
10346         for the added local temporaries if needed.
10347         * gimplify.c (gimplify_body): Adjust gimplify_parameters caller,
10348         if there are any parameter cleanups, wrap whole body into a
10349         try/finally with the cleanups.
10350
10351 2018-01-18  Wilco Dijkstra  <wdijkstr@arm.com>
10352
10353         PR target/82964
10354         * config/aarch64/aarch64.c (aarch64_legitimate_constant_p):
10355         Use GET_MODE_CLASS for scalar floating point.
10356
10357 2018-01-18  Jan Hubicka  <hubicka@ucw.cz>
10358
10359         PR ipa/82256
10360         patch by PaX Team
10361         * cgraphclones.c (cgraph_node::create_version_clone_with_body):
10362         Fix call of call_cgraph_insertion_hooks.
10363
10364 2018-01-18  Martin Sebor  <msebor@redhat.com>
10365
10366         * doc/invoke.texi (-Wclass-memaccess): Tweak text.
10367
10368 2018-01-18  Jan Hubicka  <hubicka@ucw.cz>
10369
10370         PR ipa/83619
10371         * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Update edge
10372         frequencies.
10373
10374 2018-01-18  Boris Kolpackov  <boris@codesynthesis.com>
10375
10376         PR other/70268
10377         * common.opt: (-ffile-prefix-map): New option.
10378         * opts.c (common_handle_option): Defer it.
10379         * opts-global.c (handle_common_deferred_options): Handle it.
10380         * debug.h (remap_debug_filename, add_debug_prefix_map): Move to...
10381         * file-prefix-map.h: New file.
10382         (remap_debug_filename, add_debug_prefix_map): ...here.
10383         (add_macro_prefix_map, add_file_prefix_map, remap_macro_filename): New.
10384         * final.c (debug_prefix_map, add_debug_prefix_map
10385         remap_debug_filename): Move to...
10386         * file-prefix-map.c: New file.
10387         (file_prefix_map, add_prefix_map, remap_filename) ...here and rename,
10388         generalize, get rid of alloca(), use strrchr() instead of strchr().
10389         (add_macro_prefix_map, add_debug_prefix_map, add_file_prefix_map):
10390         Implement in terms of add_prefix_map().
10391         (remap_macro_filename, remap_debug_filename): Implement in term of
10392         remap_filename().
10393         * Makefile.in (OBJS, PLUGIN_HEADERS): Add new files.
10394         * builtins.c (fold_builtin_FILE): Call remap_macro_filename().
10395         * dbxout.c: Include file-prefix-map.h.
10396         * varasm.c: Likewise.
10397         * vmsdbgout.c: Likewise.
10398         * xcoffout.c: Likewise.
10399         * dwarf2out.c: Likewise plus omit new options from DW_AT_producer.
10400         * doc/cppopts.texi (-fmacro-prefix-map): Document.
10401         * doc/invoke.texi (-ffile-prefix-map): Document.
10402         (-fdebug-prefix-map): Update description.
10403
10404 2018-01-18  Martin Liska  <mliska@suse.cz>
10405
10406         * config/i386/i386.c (indirect_thunk_name): Document that also
10407         lfence is emitted.
10408         (output_indirect_thunk): Document why both instructions
10409         (pause and lfence) are generated.
10410
10411 2018-01-18  Richard Biener  <rguenther@suse.de>
10412
10413         PR tree-optimization/83887
10414         * graphite-scop-detection.c
10415         (scop_detection::get_nearest_dom_with_single_entry): Remove.
10416         (scop_detection::get_nearest_pdom_with_single_exit): Likewise.
10417         (scop_detection::merge_sese): Re-implement with a flood-fill
10418         algorithm that properly finds a SESE region if it exists.
10419
10420 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
10421
10422         PR c/61240
10423         * match.pd ((P + A) - P, P - (P + A), (P + A) - (P + B)): For
10424         pointer_diff optimizations use view_convert instead of convert.
10425
10426 2018-01-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
10427
10428         * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
10429         Generate different code for -mno-speculate-indirect-jumps.
10430         (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
10431         (*call_indirect_aix<mode>): Disable for
10432         -mno-speculate-indirect-jumps.
10433         (*call_indirect_aix<mode>_nospec): New define_insn.
10434         (*call_value_indirect_aix<mode>): Disable for
10435         -mno-speculate-indirect-jumps.
10436         (*call_value_indirect_aix<mode>_nospec): New define_insn.
10437         (*sibcall_nonlocal_sysv<mode>): Generate different code for
10438         -mno-speculate-indirect-jumps.
10439         (*sibcall_value_nonlocal_sysv<mode>): Likewise.
10440
10441 2018-01-17  Michael Meissner  <meissner@linux.vnet.ibm.com>
10442
10443         * config/rs6000/rs6000.c (rs6000_emit_move): If we load or store a
10444         long double type, set the flags for noting the default long double
10445         type, even if we don't pass or return a long double type.
10446
10447 2018-01-17  Jan Hubicka  <hubicka@ucw.cz>
10448
10449         PR ipa/83051
10450         * ipa-inline.c (flatten_function): Do not overwrite final inlining
10451         failure.
10452
10453 2018-01-17  Will Schmidt  <will_schmidt@vnet.ibm.com>
10454
10455         * config/rs6000/rs6000.c (rs6000_gimple_builtin): Add gimple folding
10456         support for merge[hl].
10457         (fold_mergehl_helper): New helper function.
10458         (tree-vector-builder.h): New #include for tree_vector_builder usage.
10459         * config/rs6000/altivec.md (altivec_vmrghw_direct): Add xxmrghw insn.
10460         (altivec_vmrglw_direct): Add xxmrglw insn.
10461
10462 2018-01-17  Andrew Waterman  <andrew@sifive.com>
10463
10464         * config/riscv/riscv.c (riscv_conditional_register_usage): If
10465         UNITS_PER_FP_ARG is 0, set call_used_regs to 1 for all FP regs.
10466
10467 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
10468
10469         PR lto/83121
10470         * ipa-devirt.c (add_type_duplicate): When comparing memory layout,
10471         call the lto_location_cache before reading the
10472         DECL_SOURCE_LOCATION of the types.
10473
10474 2018-01-17  Wilco Dijkstra  <wdijkstr@arm.com>
10475             Richard Sandiford  <richard.sandiford@linaro.org>
10476
10477         * config/aarch64/aarch64.md (movti_aarch64): Use Uti constraint.
10478         * config/aarch64/aarch64.c (aarch64_mov128_immediate): New function.
10479         (aarch64_legitimate_constant_p): Just support CONST_DOUBLE
10480         SF/DF/TF mode to avoid creating illegal CONST_WIDE_INT immediates.
10481         * config/aarch64/aarch64-protos.h (aarch64_mov128_immediate):
10482         Add declaration.
10483         * config/aarch64/constraints.md (aarch64_movti_operand):
10484         Limit immediates.
10485         * config/aarch64/predicates.md (Uti): Add new constraint.
10486
10487 2018-01-17 Carl Love  <cel@us.ibm.com>
10488
10489         * config/rs6000/vsx.md (define_expand xl_len_r,
10490         define_expand stxvl, define_expand *stxvl): Add match_dup argument.
10491         (define_insn): Add, match_dup 1 argument to define_insn stxvll and
10492         lxvll.
10493         (define_expand, define_insn): Move the shift left from  the
10494         define_insn to the define_expand for lxvl and stxvl instructions.
10495         * config/rs6000/rs6000-builtin.def (BU_P9V_64BIT_VSX_2): Change LXVL
10496         and XL_LEN_R definitions to PURE.
10497
10498 2018-01-17  Uros Bizjak  <ubizjak@gmail.com>
10499
10500         * config/i386/i386.c (indirect_thunk_name): Declare regno
10501         as unsigned int.  Compare regno with INVALID_REGNUM.
10502         (output_indirect_thunk): Ditto.
10503         (output_indirect_thunk_function): Ditto.
10504         (ix86_code_end): Declare regno as unsigned int.  Use INVALID_REGNUM
10505         in the call to output_indirect_thunk_function.
10506
10507 2018-01-17  Richard Sandiford  <richard.sandiford@linaro.org>
10508
10509         PR middle-end/83884
10510         * expr.c (expand_expr_real_1): Use the size of GET_MODE (op0)
10511         rather than the size of inner_type to determine the stack slot size
10512         when handling VIEW_CONVERT_EXPRs on strict-alignment targets.
10513
10514 2018-01-16  Sebastian Peryt  <sebastian.peryt@intel.com>
10515
10516         PR target/83546
10517         * config/i386/i386.c (ix86_option_override_internal): Add PTA_RDRND
10518         to PTA_SILVERMONT.
10519
10520 2018-01-16  Michael Meissner  <meissner@linux.vnet.ibm.com>
10521
10522         * config.gcc (powerpc*-linux*-*): Add support for 64-bit little
10523         endian Linux systems to optionally enable multilibs for selecting
10524         the long double type if the user configured an explicit type.
10525         * config/rs6000/rs6000.h (TARGET_IEEEQUAD_MULTILIB): Indicate we
10526         have no long double multilibs if not defined.
10527         * config/rs6000/rs6000.c (rs6000_option_override_internal): Do not
10528         warn if the user used -mabi={ieee,ibm}longdouble and we built
10529         multilibs for long double.
10530         * config/rs6000/linux64.h (MULTILIB_DEFAULTS_IEEE): Define as the
10531         appropriate multilib option.
10532         (MULTILIB_DEFAULTS): Add MULTILIB_DEFAULTS_IEEE to the default
10533         multilib options.
10534         * config/rs6000/t-ldouble-linux64le-ibm: New configuration files
10535         for building long double multilibs.
10536         * config/rs6000/t-ldouble-linux64le-ieee: Likewise.
10537
10538 2018-01-16  John David Anglin  <danglin@gcc.gnu.org>
10539
10540         * config.gcc (hppa*-*-linux*): Change callee copies ABI to caller
10541         copies.
10542
10543         * config/pa.h (MALLOC_ABI_ALIGNMENT): Set 32-bit alignment default to
10544         64 bits.
10545         * config/pa/pa32-linux.h (MALLOC_ABI_ALIGNMENT): Set alignment to
10546         128 bits.
10547
10548         * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Cleanup type and mode
10549         variables.
10550
10551         * config/pa/pa.c (pa_function_arg_size): Apply CEIL to GET_MODE_SIZE
10552         return value.
10553
10554 2018-01-16  Eric Botcazou  <ebotcazou@adacore.com>
10555
10556         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For an
10557         ADDR_EXPR, do not count the offset of a COMPONENT_REF twice.
10558
10559 2018-01-16  Kelvin Nilsen  <kelvin@gcc.gnu.org>
10560
10561         * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Generate
10562         different rtl trees depending on TARGET_64BIT.
10563         (rs6000_gen_lvx): Likewise.
10564
10565 2018-01-16  Eric Botcazou  <ebotcazou@adacore.com>
10566
10567         * config/visium/visium.md (nop): Tweak comment.
10568         (hazard_nop): Likewise.
10569
10570 2018-01-16  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
10571
10572         * config/rs6000/rs6000.c (rs6000_opt_vars): Add entry for
10573         -mspeculate-indirect-jumps.
10574         * config/rs6000/rs6000.md (*call_indirect_elfv2<mode>): Disable
10575         for -mno-speculate-indirect-jumps.
10576         (*call_indirect_elfv2<mode>_nospec): New define_insn.
10577         (*call_value_indirect_elfv2<mode>): Disable for
10578         -mno-speculate-indirect-jumps.
10579         (*call_value_indirect_elfv2<mode>_nospec): New define_insn.
10580         (indirect_jump): Emit different RTL for
10581         -mno-speculate-indirect-jumps.
10582         (*indirect_jump<mode>): Disable for
10583         -mno-speculate-indirect-jumps.
10584         (*indirect_jump<mode>_nospec): New define_insn.
10585         (tablejump): Emit different RTL for
10586         -mno-speculate-indirect-jumps.
10587         (tablejumpsi): Disable for -mno-speculate-indirect-jumps.
10588         (tablejumpsi_nospec): New define_expand.
10589         (tablejumpdi): Disable for -mno-speculate-indirect-jumps.
10590         (tablejumpdi_nospec): New define_expand.
10591         (*tablejump<mode>_internal1): Disable for
10592         -mno-speculate-indirect-jumps.
10593         (*tablejump<mode>_internal1_nospec): New define_insn.
10594         * config/rs6000/rs6000.opt (mspeculate-indirect-jumps): New
10595         option.
10596
10597 2018-01-16  Artyom Skrobov tyomitch@gmail.com
10598
10599         * caller-save.c (insert_save): Drop unnecessary parameter.  All
10600         callers updated.
10601
10602 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
10603             Richard Biener  <rguenth@suse.de>
10604
10605         PR libgomp/83590
10606         * gimplify.c (gimplify_one_sizepos): For is_gimple_constant (expr)
10607         return early, inline manually is_gimple_sizepos.  Make sure if we
10608         call gimplify_expr we don't end up with a gimple constant.
10609         * tree.c (variably_modified_type_p): Don't return true for
10610         is_gimple_constant (_t).  Inline manually is_gimple_sizepos.
10611         * gimplify.h (is_gimple_sizepos): Remove.
10612
10613 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
10614
10615         PR tree-optimization/83857
10616         * tree-vect-loop.c (vect_analyze_loop_operations): Don't call
10617         vectorizable_live_operation for pure SLP statements.
10618         (vectorizable_live_operation): Handle PHIs.
10619
10620 2018-01-16  Richard Biener  <rguenther@suse.de>
10621
10622         PR tree-optimization/83867
10623         * tree-vect-stmts.c (vect_transform_stmt): Precompute
10624         nested_in_vect_loop_p since the scalar stmt may get invalidated.
10625
10626 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
10627
10628         PR c/83844
10629         * stor-layout.c (handle_warn_if_not_align): Use byte_position and
10630         multiple_of_p instead of unchecked tree_to_uhwi and UHWI check.
10631         If off is not INTEGER_CST, issue a may not be aligned warning
10632         rather than isn't aligned.  Use isn%'t rather than isn't.
10633         * fold-const.c (multiple_of_p) <case BIT_AND_EXPR>: Don't fall through
10634         into MULT_EXPR.
10635         <case MULT_EXPR>: Improve the case when bottom and one of the
10636         MULT_EXPR operands are INTEGER_CSTs and bottom is multiple of that
10637         operand, in that case check if the other operand is multiple of
10638         bottom divided by the INTEGER_CST operand.
10639
10640 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
10641
10642         PR target/83858
10643         * config/pa/pa.h (FUNCTION_ARG_SIZE): Delete.
10644         * config/pa/pa-protos.h (pa_function_arg_size): Declare.
10645         * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Use
10646         pa_function_arg_size instead of FUNCTION_ARG_SIZE.
10647         * config/pa/pa.c (pa_function_arg_advance): Likewise.
10648         (pa_function_arg, pa_arg_partial_bytes): Likewise.
10649         (pa_function_arg_size): New function.
10650
10651 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
10652
10653         * fold-const.c (fold_ternary_loc): Construct the vec_perm_indices
10654         in a separate statement.
10655
10656 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
10657
10658         PR tree-optimization/83847
10659         * tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Don't
10660         group gathers and scatters.
10661
10662 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
10663
10664         PR rtl-optimization/86620
10665         * params.def (max-sched-ready-insns): Bump minimum value to 1.
10666
10667         PR rtl-optimization/83213
10668         * recog.c (peep2_attempt): Copy over CROSSING_JUMP_P from peepinsn
10669         to last if both are JUMP_INSNs.
10670
10671         PR tree-optimization/83843
10672         * gimple-ssa-store-merging.c
10673         (imm_store_chain_info::output_merged_store): Handle bit_not_p on
10674         store_immediate_info for bswap/nop orig_stores.
10675
10676 2018-01-15  Andrew Waterman  <andrew@sifive.com>
10677
10678         * config/riscv/riscv.c (riscv_rtx_costs) <MULT>: Increase cost if
10679         !TARGET_MUL.
10680         <UDIV>: Increase cost if !TARGET_DIV.
10681
10682 2018-01-15  Segher Boessenkool  <segher@kernel.crashing.org>
10683
10684         * config/rs6000/rs6000.md (define_attr "type"): Remove delayed_cr.
10685         (define_attr "cr_logical_3op"): New.
10686         (cceq_ior_compare): Adjust.
10687         (cceq_ior_compare_complement): Adjust.
10688         (*cceq_rev_compare): Adjust.
10689         * config/rs6000/rs6000.c (rs6000_adjust_cost): Adjust.
10690         (is_cracked_insn): Adjust.
10691         (insn_must_be_first_in_group): Adjust.
10692         * config/rs6000/40x.md: Adjust.
10693         * config/rs6000/440.md: Adjust.
10694         * config/rs6000/476.md: Adjust.
10695         * config/rs6000/601.md: Adjust.
10696         * config/rs6000/603.md: Adjust.
10697         * config/rs6000/6xx.md: Adjust.
10698         * config/rs6000/7450.md: Adjust.
10699         * config/rs6000/7xx.md: Adjust.
10700         * config/rs6000/8540.md: Adjust.
10701         * config/rs6000/cell.md: Adjust.
10702         * config/rs6000/e300c2c3.md: Adjust.
10703         * config/rs6000/e500mc.md: Adjust.
10704         * config/rs6000/e500mc64.md: Adjust.
10705         * config/rs6000/e5500.md: Adjust.
10706         * config/rs6000/e6500.md: Adjust.
10707         * config/rs6000/mpc.md: Adjust.
10708         * config/rs6000/power4.md: Adjust.
10709         * config/rs6000/power5.md: Adjust.
10710         * config/rs6000/power6.md: Adjust.
10711         * config/rs6000/power7.md: Adjust.
10712         * config/rs6000/power8.md: Adjust.
10713         * config/rs6000/power9.md: Adjust.
10714         * config/rs6000/rs64.md: Adjust.
10715         * config/rs6000/titan.md: Adjust.
10716
10717 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
10718
10719         * config/i386/predicates.md (indirect_branch_operand): Rewrite
10720         ix86_indirect_branch_register logic.
10721
10722 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
10723
10724         * config/i386/constraints.md (Bs): Update
10725         ix86_indirect_branch_register check.  Don't check
10726         ix86_indirect_branch_register with GOT_memory_operand.
10727         (Bw): Likewise.
10728         * config/i386/predicates.md (GOT_memory_operand): Don't check
10729         ix86_indirect_branch_register here.
10730         (GOT32_symbol_operand): Likewise.
10731
10732 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
10733
10734         * config/i386/predicates.md (constant_call_address_operand):
10735         Rewrite ix86_indirect_branch_register logic.
10736         (sibcall_insn_operand): Likewise.
10737
10738 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
10739
10740         * config/i386/constraints.md (Bs): Replace
10741         ix86_indirect_branch_thunk_register with
10742         ix86_indirect_branch_register.
10743         (Bw): Likewise.
10744         * config/i386/i386.md (indirect_jump): Likewise.
10745         (tablejump): Likewise.
10746         (*sibcall_memory): Likewise.
10747         (*sibcall_value_memory): Likewise.
10748         Peepholes of indirect call and jump via memory: Likewise.
10749         * config/i386/i386.opt: Likewise.
10750         * config/i386/predicates.md (indirect_branch_operand): Likewise.
10751         (GOT_memory_operand): Likewise.
10752         (call_insn_operand): Likewise.
10753         (sibcall_insn_operand): Likewise.
10754         (GOT32_symbol_operand): Likewise.
10755
10756 2018-01-15  Jakub Jelinek  <jakub@redhat.com>
10757
10758         PR middle-end/83837
10759         * omp-expand.c (expand_omp_atomic_pipeline): Use loaded_val
10760         type rather than type addr's type points to.
10761         (expand_omp_atomic_mutex): Likewise.
10762         (expand_omp_atomic): Likewise.
10763
10764 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
10765
10766         PR target/83839
10767         * config/i386/i386.c (output_indirect_thunk_function): Use
10768         ASM_OUTPUT_LABEL, instead of ASM_OUTPUT_DEF, for TARGET_MACHO
10769         for  __x86_return_thunk.
10770
10771 2018-01-15  Richard Biener  <rguenther@suse.de>
10772
10773         PR middle-end/83850
10774         * expmed.c (extract_bit_field_1): Fix typo.
10775
10776 2018-01-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
10777
10778         PR target/83687
10779         * config/arm/iterators.md (VF): New mode iterator.
10780         * config/arm/neon.md (neon_vabd<mode>_2): Use the above.
10781         Remove integer-related logic from pattern.
10782         (neon_vabd<mode>_3): Likewise.
10783
10784 2018-01-15  Jakub Jelinek  <jakub@redhat.com>
10785
10786         PR middle-end/82694
10787         * common.opt (fstrict-overflow): No longer an alias.
10788         (fwrapv-pointer): New option.
10789         * tree.h (TYPE_OVERFLOW_WRAPS, TYPE_OVERFLOW_UNDEFINED): Define
10790         also for pointer types based on flag_wrapv_pointer.
10791         * opts.c (common_handle_option) <case OPT_fstrict_overflow>: Set
10792         opts->x_flag_wrap[pv] to !value, clear opts->x_flag_trapv if
10793         opts->x_flag_wrapv got set.
10794         * fold-const.c (fold_comparison, fold_binary_loc): Revert 2017-08-01
10795         changes, just use TYPE_OVERFLOW_UNDEFINED on pointer type instead of
10796         POINTER_TYPE_OVERFLOW_UNDEFINED.
10797         * match.pd: Likewise in address comparison pattern.
10798         * doc/invoke.texi: Document -fwrapv and -fstrict-overflow.
10799
10800 2018-01-15  Richard Biener  <rguenther@suse.de>
10801
10802         PR lto/83804
10803         * tree.c (free_lang_data_in_type): Always unlink TYPE_DECLs
10804         from TYPE_FIELDS.  Free TYPE_BINFO if not used by devirtualization.
10805         Reset type names to their identifier if their TYPE_DECL doesn't
10806         have linkage (and thus is used for ODR and devirt).
10807         (save_debug_info_for_decl): Remove.
10808         (save_debug_info_for_type): Likewise.
10809         (add_tree_to_fld_list): Adjust.
10810         * tree-pretty-print.c (dump_generic_node): Make dumping of
10811         type names more robust.
10812
10813 2018-01-15  Richard Biener  <rguenther@suse.de>
10814
10815         * BASE-VER: Bump to 8.0.1.
10816
10817 2018-01-14  Martin Sebor  <msebor@redhat.com>
10818
10819         PR other/83508
10820         * builtins.c (check_access): Avoid warning when the no-warning bit
10821         is set.
10822
10823 2018-01-14  Cory Fields  <cory-nospam-@coryfields.com>
10824
10825         * tree-ssa-loop-im.c (sort_bbs_in_loop_postorder_cmp): Stabilize sort.
10826         * ira-color (allocno_hard_regs_compare): Likewise.
10827
10828 2018-01-14  Nathan Rossi  <nathan@nathanrossi.com>
10829
10830         PR target/83013
10831         * config/microblaze/microblaze.c (microblaze_asm_output_ident):
10832         Use .pushsection/.popsection.
10833
10834 2018-01-14  Martin Sebor  <msebor@redhat.com>
10835
10836         PR c++/81327
10837         * doc/invoke.texi (-Wlass-memaccess): Document suppression by casting.
10838
10839 2018-01-14  Jakub Jelinek  <jakub@redhat.com>
10840
10841         * config.gcc (i[34567]86-*-*): Remove one duplicate gfniintrin.h
10842         entry from extra_headers.
10843         (x86_64-*-*): Remove two duplicate gfniintrin.h entries from
10844         extra_headers, make the list bitwise identical to the i?86-*-* one.
10845
10846 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
10847
10848         * config/i386/i386.c (ix86_set_indirect_branch_type): Disallow
10849         -mcmodel=large with -mindirect-branch=thunk,
10850         -mindirect-branch=thunk-extern, -mfunction-return=thunk and
10851         -mfunction-return=thunk-extern.
10852         * doc/invoke.texi: Document -mcmodel=large is incompatible with
10853         -mindirect-branch=thunk, -mindirect-branch=thunk-extern,
10854         -mfunction-return=thunk and -mfunction-return=thunk-extern.
10855
10856 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
10857
10858         * config/i386/i386.c (print_reg): Print the name of the full
10859         integer register without '%'.
10860         (ix86_print_operand): Handle 'V'.
10861          * doc/extend.texi: Document 'V' modifier.
10862
10863 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
10864
10865         * config/i386/constraints.md (Bs): Disallow memory operand for
10866         -mindirect-branch-register.
10867         (Bw): Likewise.
10868         * config/i386/predicates.md (indirect_branch_operand): Likewise.
10869         (GOT_memory_operand): Likewise.
10870         (call_insn_operand): Likewise.
10871         (sibcall_insn_operand): Likewise.
10872         (GOT32_symbol_operand): Likewise.
10873         * config/i386/i386.md (indirect_jump): Call convert_memory_address
10874         for -mindirect-branch-register.
10875         (tablejump): Likewise.
10876         (*sibcall_memory): Likewise.
10877         (*sibcall_value_memory): Likewise.
10878         Disallow peepholes of indirect call and jump via memory for
10879         -mindirect-branch-register.
10880         (*call_pop): Replace m with Bw.
10881         (*call_value_pop): Likewise.
10882         (*sibcall_pop_memory): Replace m with Bs.
10883         * config/i386/i386.opt (mindirect-branch-register): New option.
10884         * doc/invoke.texi: Document -mindirect-branch-register option.
10885
10886 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
10887
10888         * config/i386/i386-protos.h (ix86_output_function_return): New.
10889         * config/i386/i386.c (ix86_set_indirect_branch_type): Also
10890         set function_return_type.
10891         (indirect_thunk_name): Add ret_p to indicate thunk for function
10892         return.
10893         (output_indirect_thunk_function): Pass false to
10894         indirect_thunk_name.
10895         (ix86_output_indirect_branch_via_reg): Likewise.
10896         (ix86_output_indirect_branch_via_push): Likewise.
10897         (output_indirect_thunk_function): Create alias for function
10898         return thunk if regno < 0.
10899         (ix86_output_function_return): New function.
10900         (ix86_handle_fndecl_attribute): Handle function_return.
10901         (ix86_attribute_table): Add function_return.
10902         * config/i386/i386.h (machine_function): Add
10903         function_return_type.
10904         * config/i386/i386.md (simple_return_internal): Use
10905         ix86_output_function_return.
10906         (simple_return_internal_long): Likewise.
10907         * config/i386/i386.opt (mfunction-return=): New option.
10908         (indirect_branch): Mention -mfunction-return=.
10909         * doc/extend.texi: Document function_return function attribute.
10910         * doc/invoke.texi: Document -mfunction-return= option.
10911
10912 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
10913
10914         * config/i386/i386-opts.h (indirect_branch): New.
10915         * config/i386/i386-protos.h (ix86_output_indirect_jmp): Likewise.
10916         * config/i386/i386.c (ix86_using_red_zone): Disallow red-zone
10917         with local indirect jump when converting indirect call and jump.
10918         (ix86_set_indirect_branch_type): New.
10919         (ix86_set_current_function): Call ix86_set_indirect_branch_type.
10920         (indirectlabelno): New.
10921         (indirect_thunk_needed): Likewise.
10922         (indirect_thunk_bnd_needed): Likewise.
10923         (indirect_thunks_used): Likewise.
10924         (indirect_thunks_bnd_used): Likewise.
10925         (INDIRECT_LABEL): Likewise.
10926         (indirect_thunk_name): Likewise.
10927         (output_indirect_thunk): Likewise.
10928         (output_indirect_thunk_function): Likewise.
10929         (ix86_output_indirect_branch_via_reg): Likewise.
10930         (ix86_output_indirect_branch_via_push): Likewise.
10931         (ix86_output_indirect_branch): Likewise.
10932         (ix86_output_indirect_jmp): Likewise.
10933         (ix86_code_end): Call output_indirect_thunk_function if needed.
10934         (ix86_output_call_insn): Call ix86_output_indirect_branch if
10935         needed.
10936         (ix86_handle_fndecl_attribute): Handle indirect_branch.
10937         (ix86_attribute_table): Add indirect_branch.
10938         * config/i386/i386.h (machine_function): Add indirect_branch_type
10939         and has_local_indirect_jump.
10940         * config/i386/i386.md (indirect_jump): Set has_local_indirect_jump
10941         to true.
10942         (tablejump): Likewise.
10943         (*indirect_jump): Use ix86_output_indirect_jmp.
10944         (*tablejump_1): Likewise.
10945         (simple_return_indirect_internal): Likewise.
10946         * config/i386/i386.opt (mindirect-branch=): New option.
10947         (indirect_branch): New.
10948         (keep): Likewise.
10949         (thunk): Likewise.
10950         (thunk-inline): Likewise.
10951         (thunk-extern): Likewise.
10952         * doc/extend.texi: Document indirect_branch function attribute.
10953         * doc/invoke.texi: Document -mindirect-branch= option.
10954
10955 2018-01-14  Jan Hubicka  <hubicka@ucw.cz>
10956
10957         PR ipa/83051
10958         * ipa-inline.c (edge_badness): Tolerate roundoff errors.
10959
10960 2018-01-14  Richard Sandiford  <richard.sandiford@linaro.org>
10961
10962         * ipa-inline.c (want_inline_small_function_p): Return false if
10963         inlining has already failed with CIF_FINAL_ERROR.
10964         (update_caller_keys): Call want_inline_small_function_p before
10965         can_inline_edge_p.
10966         (update_callee_keys): Likewise.
10967
10968 2018-01-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
10969
10970         * config/rs6000/rs6000-p8swap.c (rs6000_sum_of_two_registers_p):
10971         New function.
10972         (rs6000_quadword_masked_address_p): Likewise.
10973         (quad_aligned_load_p): Likewise.
10974         (quad_aligned_store_p): Likewise.
10975         (const_load_sequence_p): Add comment to describe the outer-most loop.
10976         (mimic_memory_attributes_and_flags): New function.
10977         (rs6000_gen_stvx): Likewise.
10978         (replace_swapped_aligned_store): Likewise.
10979         (rs6000_gen_lvx): Likewise.
10980         (replace_swapped_aligned_load): Likewise.
10981         (replace_swapped_load_constant): Capitalize argument name in
10982         comment describing this function.
10983         (rs6000_analyze_swaps): Add a third pass to search for vector loads
10984         and stores that access quad-word aligned addresses and replace
10985         with stvx or lvx instructions when appropriate.
10986         * config/rs6000/rs6000-protos.h (rs6000_sum_of_two_registers_p):
10987         New function prototype.
10988         (rs6000_quadword_masked_address_p): Likewise.
10989         (rs6000_gen_lvx): Likewise.
10990         (rs6000_gen_stvx): Likewise.
10991         * config/rs6000/vsx.md (*vsx_le_perm_load_<mode>): For modes
10992         VSX_D (V2DF, V2DI), modify this split to select lvx instruction
10993         when memory address is aligned.
10994         (*vsx_le_perm_load_<mode>): For modes VSX_W (V4SF, V4SI), modify
10995         this split to select lvx instruction when memory address is aligned.
10996         (*vsx_le_perm_load_v8hi): Modify this split to select lvx
10997         instruction when memory address is aligned.
10998         (*vsx_le_perm_load_v16qi): Likewise.
10999         (four unnamed splitters): Modify to select the stvx instruction
11000         when memory is aligned.
11001
11002 2018-01-13  Jan Hubicka  <hubicka@ucw.cz>
11003
11004         * predict.c (determine_unlikely_bbs): Handle correctly BBs
11005         which appears in the queue multiple times.
11006
11007 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11008             Alan Hayward  <alan.hayward@arm.com>
11009             David Sherwood  <david.sherwood@arm.com>
11010
11011         * tree-vectorizer.h (vec_lower_bound): New structure.
11012         (_loop_vec_info): Add check_nonzero and lower_bounds.
11013         (LOOP_VINFO_CHECK_NONZERO): New macro.
11014         (LOOP_VINFO_LOWER_BOUNDS): Likewise.
11015         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Check lower_bounds too.
11016         * tree-data-ref.h (dr_with_seg_len): Add access_size and align
11017         fields.  Make seg_len the distance travelled, not including the
11018         access size.
11019         (dr_direction_indicator): Declare.
11020         (dr_zero_step_indicator): Likewise.
11021         (dr_known_forward_stride_p): Likewise.
11022         * tree-data-ref.c: Include stringpool.h, tree-vrp.h and
11023         tree-ssanames.h.
11024         (runtime_alias_check_p): Allow runtime alias checks with
11025         variable strides.
11026         (operator ==): Compare access_size and align.
11027         (prune_runtime_alias_test_list): Rework for new distinction between
11028         the access_size and seg_len.
11029         (create_intersect_range_checks_index): Likewise.  Cope with polynomial
11030         segment lengths.
11031         (get_segment_min_max): New function.
11032         (create_intersect_range_checks): Use it.
11033         (dr_step_indicator): New function.
11034         (dr_direction_indicator): Likewise.
11035         (dr_zero_step_indicator): Likewise.
11036         (dr_known_forward_stride_p): Likewise.
11037         * tree-loop-distribution.c (data_ref_segment_size): Return
11038         DR_STEP * (niters - 1).
11039         (compute_alias_check_pairs): Update call to the dr_with_seg_len
11040         constructor.
11041         * tree-vect-data-refs.c (vect_check_nonzero_value): New function.
11042         (vect_preserves_scalar_order_p): New function, split out from...
11043         (vect_analyze_data_ref_dependence): ...here.  Check for zero steps.
11044         (vect_vfa_segment_size): Return DR_STEP * (length_factor - 1).
11045         (vect_vfa_access_size): New function.
11046         (vect_vfa_align): Likewise.
11047         (vect_compile_time_alias): Take access_size_a and access_b arguments.
11048         (dump_lower_bound): New function.
11049         (vect_check_lower_bound): Likewise.
11050         (vect_small_gap_p): Likewise.
11051         (vectorizable_with_step_bound_p): Likewise.
11052         (vect_prune_runtime_alias_test_list): Ignore cross-iteration
11053         depencies if the vectorization factor is 1.  Convert the checks
11054         for nonzero steps into checks on the bounds of DR_STEP.  Try using
11055         a bunds check for variable steps if the minimum required step is
11056         relatively small. Update calls to the dr_with_seg_len
11057         constructor and to vect_compile_time_alias.
11058         * tree-vect-loop-manip.c (vect_create_cond_for_lower_bounds): New
11059         function.
11060         (vect_loop_versioning): Call it.
11061         * tree-vect-loop.c (vect_analyze_loop_2): Clear LOOP_VINFO_LOWER_BOUNDS
11062         when retrying.
11063         (vect_estimate_min_profitable_iters): Account for any bounds checks.
11064
11065 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11066             Alan Hayward  <alan.hayward@arm.com>
11067             David Sherwood  <david.sherwood@arm.com>
11068
11069         * doc/sourcebuild.texi (vect_scatter_store): Document.
11070         * optabs.def (scatter_store_optab, mask_scatter_store_optab): New
11071         optabs.
11072         * doc/md.texi (scatter_store@var{m}, mask_scatter_store@var{m}):
11073         Document.
11074         * genopinit.c (main): Add supports_vec_scatter_store and
11075         supports_vec_scatter_store_cached to target_optabs.
11076         * gimple.h (gimple_expr_type): Handle IFN_SCATTER_STORE and
11077         IFN_MASK_SCATTER_STORE.
11078         * internal-fn.def (SCATTER_STORE, MASK_SCATTER_STORE): New internal
11079         functions.
11080         * internal-fn.h (internal_store_fn_p): Declare.
11081         (internal_fn_stored_value_index): Likewise.
11082         * internal-fn.c (scatter_store_direct): New macro.
11083         (expand_scatter_store_optab_fn): New function.
11084         (direct_scatter_store_optab_supported_p): New macro.
11085         (internal_store_fn_p): New function.
11086         (internal_gather_scatter_fn_p): Handle IFN_SCATTER_STORE and
11087         IFN_MASK_SCATTER_STORE.
11088         (internal_fn_mask_index): Likewise.
11089         (internal_fn_stored_value_index): New function.
11090         (internal_gather_scatter_fn_supported_p): Adjust operand numbers
11091         for scatter stores.
11092         * optabs-query.h (supports_vec_scatter_store_p): Declare.
11093         * optabs-query.c (supports_vec_scatter_store_p): New function.
11094         * tree-vectorizer.h (vect_get_store_rhs): Declare.
11095         * tree-vect-data-refs.c (vect_analyze_data_ref_access): Return
11096         true for scatter stores.
11097         (vect_gather_scatter_fn_p): Handle scatter stores too.
11098         (vect_check_gather_scatter): Consider using scatter stores if
11099         supports_vec_scatter_store_p.
11100         * tree-vect-patterns.c (vect_try_gather_scatter_pattern): Handle
11101         scatter stores too.
11102         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
11103         internal_fn_stored_value_index.
11104         (check_load_store_masking): Handle scatter stores too.
11105         (vect_get_store_rhs): Make public.
11106         (vectorizable_call): Use internal_store_fn_p.
11107         (vectorizable_store): Handle scatter store internal functions.
11108         (vect_transform_stmt): Compare GROUP_STORE_COUNT with GROUP_SIZE
11109         when deciding whether the end of the group has been reached.
11110         * config/aarch64/aarch64.md (UNSPEC_ST1_SCATTER): New unspec.
11111         * config/aarch64/aarch64-sve.md (scatter_store<mode>): New expander.
11112         (mask_scatter_store<mode>): New insns.
11113
11114 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11115             Alan Hayward  <alan.hayward@arm.com>
11116             David Sherwood  <david.sherwood@arm.com>
11117
11118         * tree-vectorizer.h (vect_gather_scatter_fn_p): Declare.
11119         * tree-vect-data-refs.c (vect_gather_scatter_fn_p): Make public.
11120         * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): New
11121         function.
11122         (vect_use_strided_gather_scatters_p): Take a masked_p argument.
11123         Use vect_truncate_gather_scatter_offset if we can't treat the
11124         operation as a normal gather load or scatter store.
11125         (get_group_load_store_type): Take the gather_scatter_info
11126         as argument.  Try using a gather load or scatter store for
11127         single-element groups.
11128         (get_load_store_type): Update calls to get_group_load_store_type
11129         and vect_use_strided_gather_scatters_p.
11130
11131 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11132             Alan Hayward  <alan.hayward@arm.com>
11133             David Sherwood  <david.sherwood@arm.com>
11134
11135         * tree-vectorizer.h (vect_create_data_ref_ptr): Take an extra
11136         optional tree argument.
11137         * tree-vect-data-refs.c (vect_check_gather_scatter): Check for
11138         null target hooks.
11139         (vect_create_data_ref_ptr): Take the iv_step as an optional argument,
11140         but continue to use the current value as a fallback.
11141         (bump_vector_ptr): Use operand_equal_p rather than tree_int_cst_compare
11142         to compare the updates.
11143         * tree-vect-stmts.c (vect_use_strided_gather_scatters_p): New function.
11144         (get_load_store_type): Use it when handling a strided access.
11145         (vect_get_strided_load_store_ops): New function.
11146         (vect_get_data_ptr_increment): Likewise.
11147         (vectorizable_load): Handle strided gather loads.  Always pass
11148         a step to vect_create_data_ref_ptr and bump_vector_ptr.
11149
11150 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11151             Alan Hayward  <alan.hayward@arm.com>
11152             David Sherwood  <david.sherwood@arm.com>
11153
11154         * doc/md.texi (gather_load@var{m}): Document.
11155         (mask_gather_load@var{m}): Likewise.
11156         * genopinit.c (main): Add supports_vec_gather_load and
11157         supports_vec_gather_load_cached to target_optabs.
11158         * optabs-tree.c (init_tree_optimization_optabs): Use
11159         ggc_cleared_alloc to allocate target_optabs.
11160         * optabs.def (gather_load_optab, mask_gather_laod_optab): New optabs.
11161         * internal-fn.def (GATHER_LOAD, MASK_GATHER_LOAD): New internal
11162         functions.
11163         * internal-fn.h (internal_load_fn_p): Declare.
11164         (internal_gather_scatter_fn_p): Likewise.
11165         (internal_fn_mask_index): Likewise.
11166         (internal_gather_scatter_fn_supported_p): Likewise.
11167         * internal-fn.c (gather_load_direct): New macro.
11168         (expand_gather_load_optab_fn): New function.
11169         (direct_gather_load_optab_supported_p): New macro.
11170         (direct_internal_fn_optab): New function.
11171         (internal_load_fn_p): Likewise.
11172         (internal_gather_scatter_fn_p): Likewise.
11173         (internal_fn_mask_index): Likewise.
11174         (internal_gather_scatter_fn_supported_p): Likewise.
11175         * optabs-query.c (supports_at_least_one_mode_p): New function.
11176         (supports_vec_gather_load_p): Likewise.
11177         * optabs-query.h (supports_vec_gather_load_p): Declare.
11178         * tree-vectorizer.h (gather_scatter_info): Add ifn, element_type
11179         and memory_type field.
11180         (NUM_PATTERNS): Bump to 15.
11181         * tree-vect-data-refs.c: Include internal-fn.h.
11182         (vect_gather_scatter_fn_p): New function.
11183         (vect_describe_gather_scatter_call): Likewise.
11184         (vect_check_gather_scatter): Try using internal functions for
11185         gather loads.  Recognize existing calls to a gather load function.
11186         (vect_analyze_data_refs): Consider using gather loads if
11187         supports_vec_gather_load_p.
11188         * tree-vect-patterns.c (vect_get_load_store_mask): New function.
11189         (vect_get_gather_scatter_offset_type): Likewise.
11190         (vect_convert_mask_for_vectype): Likewise.
11191         (vect_add_conversion_to_patterm): Likewise.
11192         (vect_try_gather_scatter_pattern): Likewise.
11193         (vect_recog_gather_scatter_pattern): New pattern recognizer.
11194         (vect_vect_recog_func_ptrs): Add it.
11195         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
11196         internal_fn_mask_index and internal_gather_scatter_fn_p.
11197         (check_load_store_masking): Take the gather_scatter_info as an
11198         argument and handle gather loads.
11199         (vect_get_gather_scatter_ops): New function.
11200         (vectorizable_call): Check internal_load_fn_p.
11201         (vectorizable_load): Likewise.  Handle gather load internal
11202         functions.
11203         (vectorizable_store): Update call to check_load_store_masking.
11204         * config/aarch64/aarch64.md (UNSPEC_LD1_GATHER): New unspec.
11205         * config/aarch64/iterators.md (SVE_S, SVE_D): New mode iterators.
11206         * config/aarch64/predicates.md (aarch64_gather_scale_operand_w)
11207         (aarch64_gather_scale_operand_d): New predicates.
11208         * config/aarch64/aarch64-sve.md (gather_load<mode>): New expander.
11209         (mask_gather_load<mode>): New insns.
11210
11211 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11212             Alan Hayward  <alan.hayward@arm.com>
11213             David Sherwood  <david.sherwood@arm.com>
11214
11215         * optabs.def (fold_left_plus_optab): New optab.
11216         * doc/md.texi (fold_left_plus_@var{m}): Document.
11217         * internal-fn.def (IFN_FOLD_LEFT_PLUS): New internal function.
11218         * internal-fn.c (fold_left_direct): Define.
11219         (expand_fold_left_optab_fn): Likewise.
11220         (direct_fold_left_optab_supported_p): Likewise.
11221         * fold-const-call.c (fold_const_fold_left): New function.
11222         (fold_const_call): Use it to fold CFN_FOLD_LEFT_PLUS.
11223         * tree-parloops.c (valid_reduction_p): New function.
11224         (gather_scalar_reductions): Use it.
11225         * tree-vectorizer.h (FOLD_LEFT_REDUCTION): New vect_reduction_type.
11226         (vect_finish_replace_stmt): Declare.
11227         * tree-vect-loop.c (fold_left_reduction_fn): New function.
11228         (needs_fold_left_reduction_p): New function, split out from...
11229         (vect_is_simple_reduction): ...here.  Accept reductions that
11230         forbid reassociation, but give them type FOLD_LEFT_REDUCTION.
11231         (vect_force_simple_reduction): Also store the reduction type in
11232         the assignment's STMT_VINFO_REDUC_TYPE.
11233         (vect_model_reduction_cost): Handle FOLD_LEFT_REDUCTION.
11234         (merge_with_identity): New function.
11235         (vect_expand_fold_left): Likewise.
11236         (vectorize_fold_left_reduction): Likewise.
11237         (vectorizable_reduction): Handle FOLD_LEFT_REDUCTION.  Leave the
11238         scalar phi in place for it.  Check for target support and reject
11239         cases that would reassociate the operation.  Defer the transform
11240         phase to vectorize_fold_left_reduction.
11241         * config/aarch64/aarch64.md (UNSPEC_FADDA): New unspec.
11242         * config/aarch64/aarch64-sve.md (fold_left_plus_<mode>): New expander.
11243         (*fold_left_plus_<mode>, *pred_fold_left_plus_<mode>): New insns.
11244
11245 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11246
11247         * tree-if-conv.c (predicate_mem_writes): Remove redundant
11248         call to ifc_temp_var.
11249
11250 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11251             Alan Hayward  <alan.hayward@arm.com>
11252             David Sherwood  <david.sherwood@arm.com>
11253
11254         * target.def (legitimize_address_displacement): Take the original
11255         offset as a poly_int.
11256         * targhooks.h (default_legitimize_address_displacement): Update
11257         accordingly.
11258         * targhooks.c (default_legitimize_address_displacement): Likewise.
11259         * doc/tm.texi: Regenerate.
11260         * lra-constraints.c (base_plus_disp_to_reg): Take the displacement
11261         as an argument, moving assert of ad->disp == ad->disp_term to...
11262         (process_address_1): ...here.  Update calls to base_plus_disp_to_reg.
11263         Try calling targetm.legitimize_address_displacement before expanding
11264         the address rather than afterwards, and adjust for the new interface.
11265         * config/aarch64/aarch64.c (aarch64_legitimize_address_displacement):
11266         Match the new hook interface.  Handle SVE addresses.
11267         * config/sh/sh.c (sh_legitimize_address_displacement): Make the
11268         new hook interface.
11269
11270 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11271
11272         * Makefile.in (OBJS): Add early-remat.o.
11273         * target.def (select_early_remat_modes): New hook.
11274         * doc/tm.texi.in (TARGET_SELECT_EARLY_REMAT_MODES): New hook.
11275         * doc/tm.texi: Regenerate.
11276         * targhooks.h (default_select_early_remat_modes): Declare.
11277         * targhooks.c (default_select_early_remat_modes): New function.
11278         * timevar.def (TV_EARLY_REMAT): New timevar.
11279         * passes.def (pass_early_remat): New pass.
11280         * tree-pass.h (make_pass_early_remat): Declare.
11281         * early-remat.c: New file.
11282         * config/aarch64/aarch64.c (aarch64_select_early_remat_modes): New
11283         function.
11284         (TARGET_SELECT_EARLY_REMAT_MODES): Define.
11285
11286 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11287             Alan Hayward  <alan.hayward@arm.com>
11288             David Sherwood  <david.sherwood@arm.com>
11289
11290         * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Replace
11291         vfm1 with a bound_epilog parameter.
11292         (vect_do_peeling): Update calls accordingly, and move the prologue
11293         call earlier in the function.  Treat the base bound_epilog as 0 for
11294         fully-masked loops and retain vf - 1 for other loops.  Add 1 to
11295         this base when peeling for gaps.
11296         * tree-vect-loop.c (vect_analyze_loop_2): Allow peeling for gaps
11297         with fully-masked loops.
11298         (vect_estimate_min_profitable_iters): Handle the single peeled
11299         iteration in that case.
11300
11301 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11302             Alan Hayward  <alan.hayward@arm.com>
11303             David Sherwood  <david.sherwood@arm.com>
11304
11305         * tree-vect-data-refs.c (vect_analyze_group_access_1): Allow
11306         single-element interleaving even if the size is not a power of 2.
11307         * tree-vect-stmts.c (get_load_store_type): Disallow elementwise
11308         accesses for single-element interleaving if the group size is
11309         not a power of 2.
11310
11311 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11312             Alan Hayward  <alan.hayward@arm.com>
11313             David Sherwood  <david.sherwood@arm.com>
11314
11315         * doc/md.texi (fold_extract_last_@var{m}): Document.
11316         * doc/sourcebuild.texi (vect_fold_extract_last): Likewise.
11317         * optabs.def (fold_extract_last_optab): New optab.
11318         * internal-fn.def (FOLD_EXTRACT_LAST): New internal function.
11319         * internal-fn.c (fold_extract_direct): New macro.
11320         (expand_fold_extract_optab_fn): Likewise.
11321         (direct_fold_extract_optab_supported_p): Likewise.
11322         * tree-vectorizer.h (EXTRACT_LAST_REDUCTION): New vect_reduction_type.
11323         * tree-vect-loop.c (vect_model_reduction_cost): Handle
11324         EXTRACT_LAST_REDUCTION.
11325         (get_initial_def_for_reduction): Do not create an initial vector
11326         for EXTRACT_LAST_REDUCTION reductions.
11327         (vectorizable_reduction): Leave the scalar phi in place for
11328         EXTRACT_LAST_REDUCTIONs.  Try using EXTRACT_LAST_REDUCTION
11329         ahead of INTEGER_INDUC_COND_REDUCTION.  Do not check for an
11330         epilogue code for EXTRACT_LAST_REDUCTION and defer the
11331         transform phase to vectorizable_condition.
11332         * tree-vect-stmts.c (vect_finish_stmt_generation_1): New function,
11333         split out from...
11334         (vect_finish_stmt_generation): ...here.
11335         (vect_finish_replace_stmt): New function.
11336         (vectorizable_condition): Handle EXTRACT_LAST_REDUCTION.
11337         * config/aarch64/aarch64-sve.md (fold_extract_last_<mode>): New
11338         pattern.
11339         * config/aarch64/aarch64.md (UNSPEC_CLASTB): New unspec.
11340
11341 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11342             Alan Hayward  <alan.hayward@arm.com>
11343             David Sherwood  <david.sherwood@arm.com>
11344
11345         * doc/md.texi (extract_last_@var{m}): Document.
11346         * optabs.def (extract_last_optab): New optab.
11347         * internal-fn.def (EXTRACT_LAST): New internal function.
11348         * internal-fn.c (cond_unary_direct): New macro.
11349         (expand_cond_unary_optab_fn): Likewise.
11350         (direct_cond_unary_optab_supported_p): Likewise.
11351         * tree-vect-loop.c (vectorizable_live_operation): Allow fully-masked
11352         loops using EXTRACT_LAST.
11353         * config/aarch64/aarch64-sve.md (aarch64_sve_lastb<mode>): Rename to...
11354         (extract_last_<mode>): ...this optab.
11355         (vec_extract<mode><Vel>): Update accordingly.
11356
11357 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11358             Alan Hayward  <alan.hayward@arm.com>
11359             David Sherwood  <david.sherwood@arm.com>
11360
11361         * target.def (empty_mask_is_expensive): New hook.
11362         * doc/tm.texi.in (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): New hook.
11363         * doc/tm.texi: Regenerate.
11364         * targhooks.h (default_empty_mask_is_expensive): Declare.
11365         * targhooks.c (default_empty_mask_is_expensive): New function.
11366         * tree-vectorizer.c (vectorize_loops): Only call optimize_mask_stores
11367         if the target says that empty masks are expensive.
11368         * config/aarch64/aarch64.c (aarch64_empty_mask_is_expensive):
11369         New function.
11370         (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Redefine.
11371
11372 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11373             Alan Hayward  <alan.hayward@arm.com>
11374             David Sherwood  <david.sherwood@arm.com>
11375
11376         * tree-vectorizer.h (_loop_vec_info::mask_skip_niters): New field.
11377         (LOOP_VINFO_MASK_SKIP_NITERS): New macro.
11378         (vect_use_loop_mask_for_alignment_p): New function.
11379         (vect_prepare_for_masked_peels, vect_gen_while_not): Declare.
11380         * tree-vect-loop-manip.c (vect_set_loop_masks_directly): Add an
11381         niters_skip argument.  Make sure that the first niters_skip elements
11382         of the first iteration are inactive.
11383         (vect_set_loop_condition_masked): Handle LOOP_VINFO_MASK_SKIP_NITERS.
11384         Update call to vect_set_loop_masks_directly.
11385         (get_misalign_in_elems): New function, split out from...
11386         (vect_gen_prolog_loop_niters): ...here.
11387         (vect_update_init_of_dr): Take a code argument that specifies whether
11388         the adjustment should be added or subtracted.
11389         (vect_update_init_of_drs): Likewise.
11390         (vect_prepare_for_masked_peels): New function.
11391         (vect_do_peeling): Skip prologue peeling if we're using a mask
11392         instead.  Update call to vect_update_inits_of_drs.
11393         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
11394         mask_skip_niters.
11395         (vect_analyze_loop_2): Allow fully-masked loops with peeling for
11396         alignment.  Do not include the number of peeled iterations in
11397         the minimum threshold in that case.
11398         (vectorizable_induction): Adjust the start value down by
11399         LOOP_VINFO_MASK_SKIP_NITERS iterations.
11400         (vect_transform_loop): Call vect_prepare_for_masked_peels.
11401         Take the number of skipped iterations into account when calculating
11402         the loop bounds.
11403         * tree-vect-stmts.c (vect_gen_while_not): New function.
11404
11405 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11406             Alan Hayward  <alan.hayward@arm.com>
11407             David Sherwood  <david.sherwood@arm.com>
11408
11409         * doc/sourcebuild.texi (vect_fully_masked): Document.
11410         * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change minimum and
11411         default value to 0.
11412         * tree-vect-loop.c (vect_analyze_loop_costing): New function,
11413         split out from...
11414         (vect_analyze_loop_2): ...here. Don't check the vectorization
11415         factor against the number of loop iterations if the loop is
11416         fully-masked.
11417
11418 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11419             Alan Hayward  <alan.hayward@arm.com>
11420             David Sherwood  <david.sherwood@arm.com>
11421
11422         * tree-ssa-loop-ivopts.c (USE_ADDRESS): Split into...
11423         (USE_REF_ADDRESS, USE_PTR_ADDRESS): ...these new use types.
11424         (dump_groups): Update accordingly.
11425         (iv_use::mem_type): New member variable.
11426         (address_p): New function.
11427         (record_use): Add a mem_type argument and initialize the new
11428         mem_type field.
11429         (record_group_use): Add a mem_type argument.  Use address_p.
11430         Remove obsolete null checks of base_object.  Update call to record_use.
11431         (find_interesting_uses_op): Update call to record_group_use.
11432         (find_interesting_uses_cond): Likewise.
11433         (find_interesting_uses_address): Likewise.
11434         (get_mem_type_for_internal_fn): New function.
11435         (find_address_like_use): Likewise.
11436         (find_interesting_uses_stmt): Try find_address_like_use before
11437         calling find_interesting_uses_op.
11438         (addr_offset_valid_p): Use the iv mem_type field as the type
11439         of the addressed memory.
11440         (add_autoinc_candidates): Likewise.
11441         (get_address_cost): Likewise.
11442         (split_small_address_groups_p): Use address_p.
11443         (split_address_groups): Likewise.
11444         (add_iv_candidate_for_use): Likewise.
11445         (autoinc_possible_for_pair): Likewise.
11446         (rewrite_groups): Likewise.
11447         (get_use_type): Check for USE_REF_ADDRESS instead of USE_ADDRESS.
11448         (determine_group_iv_cost): Update after split of USE_ADDRESS.
11449         (get_alias_ptr_type_for_ptr_address): New function.
11450         (rewrite_use_address): Rewrite address uses in calls that were
11451         identified by find_address_like_use.
11452
11453 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11454             Alan Hayward  <alan.hayward@arm.com>
11455             David Sherwood  <david.sherwood@arm.com>
11456
11457         * expr.c (expand_expr_addr_expr_1): Handle ADDR_EXPRs of
11458         TARGET_MEM_REFs.
11459         * gimple-expr.h (is_gimple_addressable: Likewise.
11460         * gimple-expr.c (is_gimple_address): Likewise.
11461         * internal-fn.c (expand_call_mem_ref): New function.
11462         (expand_mask_load_optab_fn): Use it.
11463         (expand_mask_store_optab_fn): Likewise.
11464
11465 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11466             Alan Hayward  <alan.hayward@arm.com>
11467             David Sherwood  <david.sherwood@arm.com>
11468
11469         * doc/md.texi (cond_add@var{mode}, cond_sub@var{mode})
11470         (cond_and@var{mode}, cond_ior@var{mode}, cond_xor@var{mode})
11471         (cond_smin@var{mode}, cond_smax@var{mode}, cond_umin@var{mode})
11472         (cond_umax@var{mode}): Document.
11473         * optabs.def (cond_add_optab, cond_sub_optab, cond_and_optab)
11474         (cond_ior_optab, cond_xor_optab, cond_smin_optab, cond_smax_optab)
11475         (cond_umin_optab, cond_umax_optab): New optabs.
11476         * internal-fn.def (COND_ADD, COND_SUB, COND_MIN, COND_MAX, COND_AND)
11477         (COND_IOR, COND_XOR): New internal functions.
11478         * internal-fn.h (get_conditional_internal_fn): Declare.
11479         * internal-fn.c (cond_binary_direct): New macro.
11480         (expand_cond_binary_optab_fn): Likewise.
11481         (direct_cond_binary_optab_supported_p): Likewise.
11482         (get_conditional_internal_fn): New function.
11483         * tree-vect-loop.c (vectorizable_reduction): Handle fully-masked loops.
11484         Cope with reduction statements that are vectorized as calls rather
11485         than assignments.
11486         * config/aarch64/aarch64-sve.md (cond_<optab><mode>): New insns.
11487         * config/aarch64/iterators.md (UNSPEC_COND_ADD, UNSPEC_COND_SUB)
11488         (UNSPEC_COND_SMAX, UNSPEC_COND_UMAX, UNSPEC_COND_SMIN)
11489         (UNSPEC_COND_UMIN, UNSPEC_COND_AND, UNSPEC_COND_ORR)
11490         (UNSPEC_COND_EOR): New unspecs.
11491         (optab): Add mappings for them.
11492         (SVE_COND_INT_OP, SVE_COND_FP_OP): New int iterators.
11493         (sve_int_op, sve_fp_op): New int attributes.
11494
11495 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11496             Alan Hayward  <alan.hayward@arm.com>
11497             David Sherwood  <david.sherwood@arm.com>
11498
11499         * optabs.def (while_ult_optab): New optab.
11500         * doc/md.texi (while_ult@var{m}@var{n}): Document.
11501         * internal-fn.def (WHILE_ULT): New internal function.
11502         * internal-fn.h (direct_internal_fn_supported_p): New override
11503         that takes two types as argument.
11504         * internal-fn.c (while_direct): New macro.
11505         (expand_while_optab_fn): New function.
11506         (convert_optab_supported_p): Likewise.
11507         (direct_while_optab_supported_p): New macro.
11508         * wide-int.h (wi::udiv_ceil): New function.
11509         * tree-vectorizer.h (rgroup_masks): New structure.
11510         (vec_loop_masks): New typedef.
11511         (_loop_vec_info): Add masks, mask_compare_type, can_fully_mask_p
11512         and fully_masked_p.
11513         (LOOP_VINFO_CAN_FULLY_MASK_P, LOOP_VINFO_FULLY_MASKED_P)
11514         (LOOP_VINFO_MASKS, LOOP_VINFO_MASK_COMPARE_TYPE): New macros.
11515         (vect_max_vf): New function.
11516         (slpeel_make_loop_iterate_ntimes): Delete.
11517         (vect_set_loop_condition, vect_get_loop_mask_type, vect_gen_while)
11518         (vect_halve_mask_nunits, vect_double_mask_nunits): Declare.
11519         (vect_record_loop_mask, vect_get_loop_mask): Likewise.
11520         * tree-vect-loop-manip.c: Include tree-ssa-loop-niter.h,
11521         internal-fn.h, stor-layout.h and optabs-query.h.
11522         (vect_set_loop_mask): New function.
11523         (add_preheader_seq): Likewise.
11524         (add_header_seq): Likewise.
11525         (interleave_supported_p): Likewise.
11526         (vect_maybe_permute_loop_masks): Likewise.
11527         (vect_set_loop_masks_directly): Likewise.
11528         (vect_set_loop_condition_masked): Likewise.
11529         (vect_set_loop_condition_unmasked): New function, split out from
11530         slpeel_make_loop_iterate_ntimes.
11531         (slpeel_make_loop_iterate_ntimes): Rename to..
11532         (vect_set_loop_condition): ...this.  Use vect_set_loop_condition_masked
11533         for fully-masked loops and vect_set_loop_condition_unmasked otherwise.
11534         (vect_do_peeling): Update call accordingly.
11535         (vect_gen_vector_loop_niters): Use VF as the step for fully-masked
11536         loops.
11537         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
11538         mask_compare_type, can_fully_mask_p and fully_masked_p.
11539         (release_vec_loop_masks): New function.
11540         (_loop_vec_info): Use it to free the loop masks.
11541         (can_produce_all_loop_masks_p): New function.
11542         (vect_get_max_nscalars_per_iter): Likewise.
11543         (vect_verify_full_masking): Likewise.
11544         (vect_analyze_loop_2): Save LOOP_VINFO_CAN_FULLY_MASK_P around
11545         retries, and free the mask rgroups before retrying.  Check loop-wide
11546         reasons for disallowing fully-masked loops.  Make the final decision
11547         about whether use a fully-masked loop or not.
11548         (vect_estimate_min_profitable_iters): Do not assume that peeling
11549         for the number of iterations will be needed for fully-masked loops.
11550         (vectorizable_reduction): Disable fully-masked loops.
11551         (vectorizable_live_operation): Likewise.
11552         (vect_halve_mask_nunits): New function.
11553         (vect_double_mask_nunits): Likewise.
11554         (vect_record_loop_mask): Likewise.
11555         (vect_get_loop_mask): Likewise.
11556         (vect_transform_loop): Handle the case in which the final loop
11557         iteration might handle a partial vector.  Call vect_set_loop_condition
11558         instead of slpeel_make_loop_iterate_ntimes.
11559         * tree-vect-stmts.c: Include tree-ssa-loop-niter.h and gimple-fold.h.
11560         (check_load_store_masking): New function.
11561         (prepare_load_store_mask): Likewise.
11562         (vectorizable_store): Handle fully-masked loops.
11563         (vectorizable_load): Likewise.
11564         (supportable_widening_operation): Use vect_halve_mask_nunits for
11565         booleans.
11566         (supportable_narrowing_operation): Likewise vect_double_mask_nunits.
11567         (vect_gen_while): New function.
11568         * config/aarch64/aarch64.md (umax<mode>3): New expander.
11569         (aarch64_uqdec<mode>): New insn.
11570
11571 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11572             Alan Hayward  <alan.hayward@arm.com>
11573             David Sherwood  <david.sherwood@arm.com>
11574
11575         * optabs.def (reduc_and_scal_optab, reduc_ior_scal_optab)
11576         (reduc_xor_scal_optab): New optabs.
11577         * doc/md.texi (reduc_and_scal_@var{m}, reduc_ior_scal_@var{m})
11578         (reduc_xor_scal_@var{m}): Document.
11579         * doc/sourcebuild.texi (vect_logical_reduc): Likewise.
11580         * internal-fn.def (IFN_REDUC_AND, IFN_REDUC_IOR, IFN_REDUC_XOR): New
11581         internal functions.
11582         * fold-const-call.c (fold_const_call): Handle them.
11583         * tree-vect-loop.c (reduction_fn_for_scalar_code): Return the new
11584         internal functions for BIT_AND_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR.
11585         * config/aarch64/aarch64-sve.md (reduc_<bit_reduc>_scal_<mode>):
11586         (*reduc_<bit_reduc>_scal_<mode>): New patterns.
11587         * config/aarch64/iterators.md (UNSPEC_ANDV, UNSPEC_ORV)
11588         (UNSPEC_XORV): New unspecs.
11589         (optab): Add entries for them.
11590         (BITWISEV): New int iterator.
11591         (bit_reduc_op): New int attributes.
11592
11593 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11594             Alan Hayward  <alan.hayward@arm.com>
11595             David Sherwood  <david.sherwood@arm.com>
11596
11597         * doc/md.texi (vec_shl_insert_@var{m}): New optab.
11598         * internal-fn.def (VEC_SHL_INSERT): New internal function.
11599         * optabs.def (vec_shl_insert_optab): New optab.
11600         * tree-vectorizer.h (can_duplicate_and_interleave_p): Declare.
11601         (duplicate_and_interleave): Likewise.
11602         * tree-vect-loop.c: Include internal-fn.h.
11603         (neutral_op_for_slp_reduction): New function, split out from
11604         get_initial_defs_for_reduction.
11605         (get_initial_def_for_reduction): Handle option 2 for variable-length
11606         vectors by loading the neutral value into a vector and then shifting
11607         the initial value into element 0.
11608         (get_initial_defs_for_reduction): Replace the code argument with
11609         the neutral value calculated by neutral_op_for_slp_reduction.
11610         Use gimple_build_vector for constant-length vectors.
11611         Use IFN_VEC_SHL_INSERT for variable-length vectors if all
11612         but the first group_size elements have a neutral value.
11613         Use duplicate_and_interleave otherwise.
11614         (vect_create_epilog_for_reduction): Take a neutral_op parameter.
11615         Update call to get_initial_defs_for_reduction.  Handle SLP
11616         reductions for variable-length vectors by creating one vector
11617         result for each scalar result, with the elements associated
11618         with other scalar results stubbed out with the neutral value.
11619         (vectorizable_reduction): Call neutral_op_for_slp_reduction.
11620         Require IFN_VEC_SHL_INSERT for double reductions on
11621         variable-length vectors, or SLP reductions that have
11622         a neutral value.  Require can_duplicate_and_interleave_p
11623         support for variable-length unchained SLP reductions if there
11624         is no neutral value, such as for MIN/MAX reductions.  Also require
11625         the number of vector elements to be a multiple of the number of
11626         SLP statements when doing variable-length unchained SLP reductions.
11627         Update call to vect_create_epilog_for_reduction.
11628         * tree-vect-slp.c (can_duplicate_and_interleave_p): Make public
11629         and remove initial values.
11630         (duplicate_and_interleave): Make public.
11631         * config/aarch64/aarch64.md (UNSPEC_INSR): New unspec.
11632         * config/aarch64/aarch64-sve.md (vec_shl_insert_<mode>): New insn.
11633
11634 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11635             Alan Hayward  <alan.hayward@arm.com>
11636             David Sherwood  <david.sherwood@arm.com>
11637
11638         * tree-vect-slp.c: Include gimple-fold.h and internal-fn.h
11639         (can_duplicate_and_interleave_p): New function.
11640         (vect_get_and_check_slp_defs): Take the vector of statements
11641         rather than just the current one.  Remove excess parentheses.
11642         Restriction rejectinon of vect_constant_def and vect_external_def
11643         for variable-length vectors to boolean types, or types for which
11644         can_duplicate_and_interleave_p is false.
11645         (vect_build_slp_tree_2): Update call to vect_get_and_check_slp_defs.
11646         (duplicate_and_interleave): New function.
11647         (vect_get_constant_vectors): Use gimple_build_vector for
11648         constant-length vectors and suitable variable-length constant
11649         vectors.  Use duplicate_and_interleave for other variable-length
11650         vectors.  Don't defer the update when inserting new statements.
11651
11652 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11653             Alan Hayward  <alan.hayward@arm.com>
11654             David Sherwood  <david.sherwood@arm.com>
11655
11656         * tree-vect-loop.c (vect_estimate_min_profitable_iters): Make sure
11657         min_profitable_iters doesn't go negative.
11658
11659 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11660             Alan Hayward  <alan.hayward@arm.com>
11661             David Sherwood  <david.sherwood@arm.com>
11662
11663         * doc/md.texi (vec_mask_load_lanes@var{m}@var{n}): Document.
11664         (vec_mask_store_lanes@var{m}@var{n}): Likewise.
11665         * optabs.def (vec_mask_load_lanes_optab): New optab.
11666         (vec_mask_store_lanes_optab): Likewise.
11667         * internal-fn.def (MASK_LOAD_LANES): New internal function.
11668         (MASK_STORE_LANES): Likewise.
11669         * internal-fn.c (mask_load_lanes_direct): New macro.
11670         (mask_store_lanes_direct): Likewise.
11671         (expand_mask_load_optab_fn): Handle masked operations.
11672         (expand_mask_load_lanes_optab_fn): New macro.
11673         (expand_mask_store_optab_fn): Handle masked operations.
11674         (expand_mask_store_lanes_optab_fn): New macro.
11675         (direct_mask_load_lanes_optab_supported_p): Likewise.
11676         (direct_mask_store_lanes_optab_supported_p): Likewise.
11677         * tree-vectorizer.h (vect_store_lanes_supported): Take a masked_p
11678         parameter.
11679         (vect_load_lanes_supported): Likewise.
11680         * tree-vect-data-refs.c (strip_conversion): New function.
11681         (can_group_stmts_p): Likewise.
11682         (vect_analyze_data_ref_accesses): Use it instead of checking
11683         for a pair of assignments.
11684         (vect_store_lanes_supported): Take a masked_p parameter.
11685         (vect_load_lanes_supported): Likewise.
11686         * tree-vect-loop.c (vect_analyze_loop_2): Update calls to
11687         vect_store_lanes_supported and vect_load_lanes_supported.
11688         * tree-vect-slp.c (vect_analyze_slp_instance): Likewise.
11689         * tree-vect-stmts.c (get_group_load_store_type): Take a masked_p
11690         parameter.  Don't allow gaps for masked accesses.
11691         Use vect_get_store_rhs.  Update calls to vect_store_lanes_supported
11692         and vect_load_lanes_supported.
11693         (get_load_store_type): Take a masked_p parameter and update
11694         call to get_group_load_store_type.
11695         (vectorizable_store): Update call to get_load_store_type.
11696         Handle IFN_MASK_STORE_LANES.
11697         (vectorizable_load): Update call to get_load_store_type.
11698         Handle IFN_MASK_LOAD_LANES.
11699
11700 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11701             Alan Hayward  <alan.hayward@arm.com>
11702             David Sherwood  <david.sherwood@arm.com>
11703
11704         * config/aarch64/aarch64-modes.def: Define x2, x3 and x4 vector
11705         modes for SVE.
11706         * config/aarch64/aarch64-protos.h
11707         (aarch64_sve_struct_memory_operand_p): Declare.
11708         * config/aarch64/iterators.md (SVE_STRUCT): New mode iterator.
11709         (vector_count, insn_length, VSINGLE, vsingle): New mode attributes.
11710         (VPRED, vpred): Handle SVE structure modes.
11711         * config/aarch64/constraints.md (Utx): New constraint.
11712         * config/aarch64/predicates.md (aarch64_sve_struct_memory_operand)
11713         (aarch64_sve_struct_nonimmediate_operand): New predicates.
11714         * config/aarch64/aarch64.md (UNSPEC_LDN, UNSPEC_STN): New unspecs.
11715         * config/aarch64/aarch64-sve.md (mov<mode>, *aarch64_sve_mov<mode>_le)
11716         (*aarch64_sve_mov<mode>_be, pred_mov<mode>): New patterns for
11717         structure modes.  Split into pieces after RA.
11718         (vec_load_lanes<mode><vsingle>, vec_mask_load_lanes<mode><vsingle>)
11719         (vec_store_lanes<mode><vsingle>, vec_mask_store_lanes<mode><vsingle>):
11720         New patterns.
11721         * config/aarch64/aarch64.c (aarch64_classify_vector_mode): Handle
11722         SVE structure modes.
11723         (aarch64_classify_address): Likewise.
11724         (sizetochar): Move earlier in file.
11725         (aarch64_print_operand): Handle SVE register lists.
11726         (aarch64_array_mode): New function.
11727         (aarch64_sve_struct_memory_operand_p): Likewise.
11728         (TARGET_ARRAY_MODE): Redefine.
11729
11730 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11731             Alan Hayward  <alan.hayward@arm.com>
11732             David Sherwood  <david.sherwood@arm.com>
11733
11734         * target.def (array_mode): New target hook.
11735         * doc/tm.texi.in (TARGET_ARRAY_MODE): New hook.
11736         * doc/tm.texi: Regenerate.
11737         * hooks.h (hook_optmode_mode_uhwi_none): Declare.
11738         * hooks.c (hook_optmode_mode_uhwi_none): New function.
11739         * tree-vect-data-refs.c (vect_lanes_optab_supported_p): Use
11740         targetm.array_mode.
11741         * stor-layout.c (mode_for_array): Likewise.  Support polynomial
11742         type sizes.
11743
11744 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11745             Alan Hayward  <alan.hayward@arm.com>
11746             David Sherwood  <david.sherwood@arm.com>
11747
11748         * fold-const.c (fold_binary_loc): Check the argument types
11749         rather than the result type when testing for a vector operation.
11750
11751 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11752
11753         * doc/tm.texi.in (DWARF_LAZY_REGISTER_VALUE): Document.
11754         * doc/tm.texi: Regenerate.
11755
11756 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
11757             Alan Hayward  <alan.hayward@arm.com>
11758             David Sherwood  <david.sherwood@arm.com>
11759
11760         * doc/invoke.texi (-msve-vector-bits=): Document new option.
11761         (sve): Document new AArch64 extension.
11762         * doc/md.texi (w): Extend the description of the AArch64
11763         constraint to include SVE vectors.
11764         (Upl, Upa): Document new AArch64 predicate constraints.
11765         * config/aarch64/aarch64-opts.h (aarch64_sve_vector_bits_enum): New
11766         enum.
11767         * config/aarch64/aarch64.opt (sve_vector_bits): New enum.
11768         (msve-vector-bits=): New option.
11769         * config/aarch64/aarch64-option-extensions.def (fp, simd): Disable
11770         SVE when these are disabled.
11771         (sve): New extension.
11772         * config/aarch64/aarch64-modes.def: Define SVE vector and predicate
11773         modes.  Adjust their number of units based on aarch64_sve_vg.
11774         (MAX_BITSIZE_MODE_ANY_MODE): Define.
11775         * config/aarch64/aarch64-protos.h (ADDR_QUERY_ANY): New
11776         aarch64_addr_query_type.
11777         (aarch64_const_vec_all_same_in_range_p, aarch64_sve_pred_mode)
11778         (aarch64_sve_cnt_immediate_p, aarch64_sve_addvl_addpl_immediate_p)
11779         (aarch64_sve_inc_dec_immediate_p, aarch64_add_offset_temporaries)
11780         (aarch64_split_add_offset, aarch64_output_sve_cnt_immediate)
11781         (aarch64_output_sve_addvl_addpl, aarch64_output_sve_inc_dec_immediate)
11782         (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): Declare.
11783         (aarch64_simd_imm_zero_p): Delete.
11784         (aarch64_check_zero_based_sve_index_immediate): Declare.
11785         (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
11786         (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
11787         (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
11788         (aarch64_sve_float_mul_immediate_p): Likewise.
11789         (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
11790         rather than an rtx.
11791         (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): Declare.
11792         (aarch64_expand_mov_immediate): Take a gen_vec_duplicate callback.
11793         (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move): Declare.
11794         (aarch64_expand_sve_vec_cmp_int, aarch64_expand_sve_vec_cmp_float)
11795         (aarch64_expand_sve_vcond, aarch64_expand_sve_vec_perm): Declare.
11796         (aarch64_regmode_natural_size): Likewise.
11797         * config/aarch64/aarch64.h (AARCH64_FL_SVE): New macro.
11798         (AARCH64_FL_V8_3, AARCH64_FL_RCPC, AARCH64_FL_DOTPROD): Shift
11799         left one place.
11800         (AARCH64_ISA_SVE, TARGET_SVE): New macros.
11801         (FIXED_REGISTERS, CALL_USED_REGISTERS, REGISTER_NAMES): Add entries
11802         for VG and the SVE predicate registers.
11803         (V_ALIASES): Add a "z"-prefixed alias.
11804         (FIRST_PSEUDO_REGISTER): Change to P15_REGNUM + 1.
11805         (AARCH64_DWARF_VG, AARCH64_DWARF_P0): New macros.
11806         (PR_REGNUM_P, PR_LO_REGNUM_P): Likewise.
11807         (PR_LO_REGS, PR_HI_REGS, PR_REGS): New reg_classes.
11808         (REG_CLASS_NAMES): Add entries for them.
11809         (REG_CLASS_CONTENTS): Likewise.  Update ALL_REGS to include VG
11810         and the predicate registers.
11811         (aarch64_sve_vg): Declare.
11812         (BITS_PER_SVE_VECTOR, BYTES_PER_SVE_VECTOR, BYTES_PER_SVE_PRED)
11813         (SVE_BYTE_MODE, MAX_COMPILE_TIME_VEC_BYTES): New macros.
11814         (REGMODE_NATURAL_SIZE): Define.
11815         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Handle
11816         SVE macros.
11817         * config/aarch64/aarch64.c: Include cfgrtl.h.
11818         (simd_immediate_info): Add a constructor for series vectors,
11819         and an associated step field.
11820         (aarch64_sve_vg): New variable.
11821         (aarch64_dbx_register_number): Handle VG and the predicate registers.
11822         (aarch64_vect_struct_mode_p, aarch64_vector_mode_p): Delete.
11823         (VEC_ADVSIMD, VEC_SVE_DATA, VEC_SVE_PRED, VEC_STRUCT, VEC_ANY_SVE)
11824         (VEC_ANY_DATA, VEC_STRUCT): New constants.
11825         (aarch64_advsimd_struct_mode_p, aarch64_sve_pred_mode_p)
11826         (aarch64_classify_vector_mode, aarch64_vector_data_mode_p)
11827         (aarch64_sve_data_mode_p, aarch64_sve_pred_mode)
11828         (aarch64_get_mask_mode): New functions.
11829         (aarch64_hard_regno_nregs): Handle SVE data modes for FP_REGS
11830         and FP_LO_REGS.  Handle PR_REGS, PR_LO_REGS and PR_HI_REGS.
11831         (aarch64_hard_regno_mode_ok): Handle VG.  Also handle the SVE
11832         predicate modes and predicate registers.  Explicitly restrict
11833         GPRs to modes of 16 bytes or smaller.  Only allow FP registers
11834         to store a vector mode if it is recognized by
11835         aarch64_classify_vector_mode.
11836         (aarch64_regmode_natural_size): New function.
11837         (aarch64_hard_regno_caller_save_mode): Return the original mode
11838         for predicates.
11839         (aarch64_sve_cnt_immediate_p, aarch64_output_sve_cnt_immediate)
11840         (aarch64_sve_addvl_addpl_immediate_p, aarch64_output_sve_addvl_addpl)
11841         (aarch64_sve_inc_dec_immediate_p, aarch64_output_sve_inc_dec_immediate)
11842         (aarch64_add_offset_1_temporaries, aarch64_offset_temporaries): New
11843         functions.
11844         (aarch64_add_offset): Add a temp2 parameter.  Assert that temp1
11845         does not overlap dest if the function is frame-related.  Handle
11846         SVE constants.
11847         (aarch64_split_add_offset): New function.
11848         (aarch64_add_sp, aarch64_sub_sp): Add temp2 parameters and pass
11849         them aarch64_add_offset.
11850         (aarch64_allocate_and_probe_stack_space): Add a temp2 parameter
11851         and update call to aarch64_sub_sp.
11852         (aarch64_add_cfa_expression): New function.
11853         (aarch64_expand_prologue): Pass extra temporary registers to the
11854         functions above.  Handle the case in which we need to emit new
11855         DW_CFA_expressions for registers that were originally saved
11856         relative to the stack pointer, but now have to be expressed
11857         relative to the frame pointer.
11858         (aarch64_output_mi_thunk): Pass extra temporary registers to the
11859         functions above.
11860         (aarch64_expand_epilogue): Likewise.  Prevent inheritance of
11861         IP0 and IP1 values for SVE frames.
11862         (aarch64_expand_vec_series): New function.
11863         (aarch64_expand_sve_widened_duplicate): Likewise.
11864         (aarch64_expand_sve_const_vector): Likewise.
11865         (aarch64_expand_mov_immediate): Add a gen_vec_duplicate parameter.
11866         Handle SVE constants.  Use emit_move_insn to move a force_const_mem
11867         into the register, rather than emitting a SET directly.
11868         (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move)
11869         (aarch64_get_reg_raw_mode, offset_4bit_signed_scaled_p)
11870         (offset_6bit_unsigned_scaled_p, aarch64_offset_7bit_signed_scaled_p)
11871         (offset_9bit_signed_scaled_p): New functions.
11872         (aarch64_replicate_bitmask_imm): New function.
11873         (aarch64_bitmask_imm): Use it.
11874         (aarch64_cannot_force_const_mem): Reject expressions involving
11875         a CONST_POLY_INT.  Update call to aarch64_classify_symbol.
11876         (aarch64_classify_index): Handle SVE indices, by requiring
11877         a plain register index with a scale that matches the element size.
11878         (aarch64_classify_address): Handle SVE addresses.  Assert that
11879         the mode of the address is VOIDmode or an integer mode.
11880         Update call to aarch64_classify_symbol.
11881         (aarch64_classify_symbolic_expression): Update call to
11882         aarch64_classify_symbol.
11883         (aarch64_const_vec_all_in_range_p): New function.
11884         (aarch64_print_vector_float_operand): Likewise.
11885         (aarch64_print_operand): Handle 'N' and 'C'.  Use "zN" rather than
11886         "vN" for FP registers with SVE modes.  Handle (const ...) vectors
11887         and the FP immediates 1.0 and 0.5.
11888         (aarch64_print_address_internal): Handle SVE addresses.
11889         (aarch64_print_operand_address): Use ADDR_QUERY_ANY.
11890         (aarch64_regno_regclass): Handle predicate registers.
11891         (aarch64_secondary_reload): Handle big-endian reloads of SVE
11892         data modes.
11893         (aarch64_class_max_nregs): Handle SVE modes and predicate registers.
11894         (aarch64_rtx_costs): Check for ADDVL and ADDPL instructions.
11895         (aarch64_convert_sve_vector_bits): New function.
11896         (aarch64_override_options): Use it to handle -msve-vector-bits=.
11897         (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
11898         rather than an rtx.
11899         (aarch64_legitimate_constant_p): Use aarch64_classify_vector_mode.
11900         Handle SVE vector and predicate modes.  Accept VL-based constants
11901         that need only one temporary register, and VL offsets that require
11902         no temporary registers.
11903         (aarch64_conditional_register_usage): Mark the predicate registers
11904         as fixed if SVE isn't available.
11905         (aarch64_vector_mode_supported_p): Use aarch64_classify_vector_mode.
11906         Return true for SVE vector and predicate modes.
11907         (aarch64_simd_container_mode): Take the number of bits as a poly_int64
11908         rather than an unsigned int.  Handle SVE modes.
11909         (aarch64_preferred_simd_mode): Update call accordingly.  Handle
11910         SVE modes.
11911         (aarch64_autovectorize_vector_sizes): Add BYTES_PER_SVE_VECTOR
11912         if SVE is enabled.
11913         (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
11914         (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
11915         (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
11916         (aarch64_sve_float_mul_immediate_p): New functions.
11917         (aarch64_sve_valid_immediate): New function.
11918         (aarch64_simd_valid_immediate): Use it as the fallback for SVE vectors.
11919         Explicitly reject structure modes.  Check for INDEX constants.
11920         Handle PTRUE and PFALSE constants.
11921         (aarch64_check_zero_based_sve_index_immediate): New function.
11922         (aarch64_simd_imm_zero_p): Delete.
11923         (aarch64_mov_operand_p): Use aarch64_simd_valid_immediate for
11924         vector modes.  Accept constants in the range of CNT[BHWD].
11925         (aarch64_simd_scalar_immediate_valid_for_move): Explicitly
11926         ask for an Advanced SIMD mode.
11927         (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): New functions.
11928         (aarch64_simd_vector_alignment): Handle SVE predicates.
11929         (aarch64_vectorize_preferred_vector_alignment): New function.
11930         (aarch64_simd_vector_alignment_reachable): Use it instead of
11931         the vector size.
11932         (aarch64_shift_truncation_mask): Use aarch64_vector_data_mode_p.
11933         (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): New
11934         functions.
11935         (MAX_VECT_LEN): Delete.
11936         (expand_vec_perm_d): Add a vec_flags field.
11937         (emit_unspec2, aarch64_expand_sve_vec_perm): New functions.
11938         (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_zip)
11939         (aarch64_evpc_ext): Don't apply a big-endian lane correction
11940         for SVE modes.
11941         (aarch64_evpc_rev): Rename to...
11942         (aarch64_evpc_rev_local): ...this.  Use a predicated operation for SVE.
11943         (aarch64_evpc_rev_global): New function.
11944         (aarch64_evpc_dup): Enforce a 64-byte range for SVE DUP.
11945         (aarch64_evpc_tbl): Use MAX_COMPILE_TIME_VEC_BYTES instead of
11946         MAX_VECT_LEN.
11947         (aarch64_evpc_sve_tbl): New function.
11948         (aarch64_expand_vec_perm_const_1): Update after rename of
11949         aarch64_evpc_rev.  Handle SVE permutes too, trying
11950         aarch64_evpc_rev_global and using aarch64_evpc_sve_tbl rather
11951         than aarch64_evpc_tbl.
11952         (aarch64_vectorize_vec_perm_const): Initialize vec_flags.
11953         (aarch64_sve_cmp_operand_p, aarch64_unspec_cond_code)
11954         (aarch64_gen_unspec_cond, aarch64_expand_sve_vec_cmp_int)
11955         (aarch64_emit_unspec_cond, aarch64_emit_unspec_cond_or)
11956         (aarch64_emit_inverted_unspec_cond, aarch64_expand_sve_vec_cmp_float)
11957         (aarch64_expand_sve_vcond): New functions.
11958         (aarch64_modes_tieable_p): Use aarch64_vector_data_mode_p instead
11959         of aarch64_vector_mode_p.
11960         (aarch64_dwarf_poly_indeterminate_value): New function.
11961         (aarch64_compute_pressure_classes): Likewise.
11962         (aarch64_can_change_mode_class): Likewise.
11963         (TARGET_GET_RAW_RESULT_MODE, TARGET_GET_RAW_ARG_MODE): Redefine.
11964         (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): Likewise.
11965         (TARGET_VECTORIZE_GET_MASK_MODE): Likewise.
11966         (TARGET_DWARF_POLY_INDETERMINATE_VALUE): Likewise.
11967         (TARGET_COMPUTE_PRESSURE_CLASSES): Likewise.
11968         (TARGET_CAN_CHANGE_MODE_CLASS): Likewise.
11969         * config/aarch64/constraints.md (Upa, Upl, Uav, Uat, Usv, Usi, Utr)
11970         (Uty, Dm, vsa, vsc, vsd, vsi, vsn, vsl, vsm, vsA, vsM, vsN): New
11971         constraints.
11972         (Dn, Dl, Dr): Accept const as well as const_vector.
11973         (Dz): Likewise.  Compare against CONST0_RTX.
11974         * config/aarch64/iterators.md: Refer to "Advanced SIMD" instead
11975         of "vector" where appropriate.
11976         (SVE_ALL, SVE_BH, SVE_BHS, SVE_BHSI, SVE_HSDI, SVE_HSF, SVE_SD)
11977         (SVE_SDI, SVE_I, SVE_F, PRED_ALL, PRED_BHS): New mode iterators.
11978         (UNSPEC_SEL, UNSPEC_ANDF, UNSPEC_IORF, UNSPEC_XORF, UNSPEC_COND_LT)
11979         (UNSPEC_COND_LE, UNSPEC_COND_EQ, UNSPEC_COND_NE, UNSPEC_COND_GE)
11980         (UNSPEC_COND_GT, UNSPEC_COND_LO, UNSPEC_COND_LS, UNSPEC_COND_HS)
11981         (UNSPEC_COND_HI, UNSPEC_COND_UO): New unspecs.
11982         (Vetype, VEL, Vel, VWIDE, Vwide, vw, vwcore, V_INT_EQUIV)
11983         (v_int_equiv): Extend to SVE modes.
11984         (Vesize, V128, v128, Vewtype, V_FP_EQUIV, v_fp_equiv, VPRED): New
11985         mode attributes.
11986         (LOGICAL_OR, SVE_INT_UNARY, SVE_FP_UNARY): New code iterators.
11987         (optab): Handle popcount, smin, smax, umin, umax, abs and sqrt.
11988         (logical_nn, lr, sve_int_op, sve_fp_op): New code attributs.
11989         (LOGICALF, OPTAB_PERMUTE, UNPACK, UNPACK_UNSIGNED, SVE_COND_INT_CMP)
11990         (SVE_COND_FP_CMP): New int iterators.
11991         (perm_hilo): Handle the new unpack unspecs.
11992         (optab, logicalf_op, su, perm_optab, cmp_op, imm_con): New int
11993         attributes.
11994         * config/aarch64/predicates.md (aarch64_sve_cnt_immediate)
11995         (aarch64_sve_addvl_addpl_immediate, aarch64_split_add_offset_immediate)
11996         (aarch64_pluslong_or_poly_operand, aarch64_nonmemory_operand)
11997         (aarch64_equality_operator, aarch64_constant_vector_operand)
11998         (aarch64_sve_ld1r_operand, aarch64_sve_ldr_operand): New predicates.
11999         (aarch64_sve_nonimmediate_operand): Likewise.
12000         (aarch64_sve_general_operand): Likewise.
12001         (aarch64_sve_dup_operand, aarch64_sve_arith_immediate): Likewise.
12002         (aarch64_sve_sub_arith_immediate, aarch64_sve_inc_dec_immediate)
12003         (aarch64_sve_logical_immediate, aarch64_sve_mul_immediate): Likewise.
12004         (aarch64_sve_dup_immediate, aarch64_sve_cmp_vsc_immediate): Likewise.
12005         (aarch64_sve_cmp_vsd_immediate, aarch64_sve_index_immediate): Likewise.
12006         (aarch64_sve_float_arith_immediate): Likewise.
12007         (aarch64_sve_float_arith_with_sub_immediate): Likewise.
12008         (aarch64_sve_float_mul_immediate, aarch64_sve_arith_operand): Likewise.
12009         (aarch64_sve_add_operand, aarch64_sve_logical_operand): Likewise.
12010         (aarch64_sve_lshift_operand, aarch64_sve_rshift_operand): Likewise.
12011         (aarch64_sve_mul_operand, aarch64_sve_cmp_vsc_operand): Likewise.
12012         (aarch64_sve_cmp_vsd_operand, aarch64_sve_index_operand): Likewise.
12013         (aarch64_sve_float_arith_operand): Likewise.
12014         (aarch64_sve_float_arith_with_sub_operand): Likewise.
12015         (aarch64_sve_float_mul_operand): Likewise.
12016         (aarch64_sve_vec_perm_operand): Likewise.
12017         (aarch64_pluslong_operand): Include aarch64_sve_addvl_addpl_immediate.
12018         (aarch64_mov_operand): Accept const_poly_int and const_vector.
12019         (aarch64_simd_lshift_imm, aarch64_simd_rshift_imm): Accept const
12020         as well as const_vector.
12021         (aarch64_simd_imm_zero, aarch64_simd_imm_minus_one): Move earlier
12022         in file.  Use CONST0_RTX and CONSTM1_RTX.
12023         (aarch64_simd_or_scalar_imm_zero): Likewise.  Add match_codes.
12024         (aarch64_simd_reg_or_zero): Accept const as well as const_vector.
12025         Use aarch64_simd_imm_zero.
12026         * config/aarch64/aarch64-sve.md: New file.
12027         * config/aarch64/aarch64.md: Include it.
12028         (VG_REGNUM, P0_REGNUM, P7_REGNUM, P15_REGNUM): New register numbers.
12029         (UNSPEC_REV, UNSPEC_LD1_SVE, UNSPEC_ST1_SVE, UNSPEC_MERGE_PTRUE)
12030         (UNSPEC_PTEST_PTRUE, UNSPEC_UNPACKSHI, UNSPEC_UNPACKUHI)
12031         (UNSPEC_UNPACKSLO, UNSPEC_UNPACKULO, UNSPEC_PACK)
12032         (UNSPEC_FLOAT_CONVERT, UNSPEC_WHILE_LO): New unspec constants.
12033         (sve): New attribute.
12034         (enabled): Disable instructions with the sve attribute unless
12035         TARGET_SVE.
12036         (movqi, movhi): Pass CONST_POLY_INT operaneds through
12037         aarch64_expand_mov_immediate.
12038         (*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64): Handle
12039         CNT[BHSD] immediates.
12040         (movti): Split CONST_POLY_INT moves into two halves.
12041         (add<mode>3): Accept aarch64_pluslong_or_poly_operand.
12042         Split additions that need a temporary here if the destination
12043         is the stack pointer.
12044         (*add<mode>3_aarch64): Handle ADDVL and ADDPL immediates.
12045         (*add<mode>3_poly_1): New instruction.
12046         (set_clobber_cc): New expander.
12047
12048 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
12049
12050         * simplify-rtx.c (simplify_immed_subreg): Add an inner_bytes
12051         parameter and use it instead of GET_MODE_SIZE (innermode).  Use
12052         inner_bytes * BITS_PER_UNIT instead of GET_MODE_BITSIZE (innermode).
12053         Use CEIL (inner_bytes, GET_MODE_UNIT_SIZE (innermode)) instead of
12054         GET_MODE_NUNITS (innermode).  Also add a first_elem parameter.
12055         Change innermode from fixed_mode_size to machine_mode.
12056         (simplify_subreg): Update call accordingly.  Handle a constant-sized
12057         subreg of a variable-length CONST_VECTOR.
12058
12059 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
12060             Alan Hayward  <alan.hayward@arm.com>
12061             David Sherwood  <david.sherwood@arm.com>
12062
12063         * tree-ssa-address.c (mem_ref_valid_without_offset_p): New function.
12064         (add_offset_to_base): New function, split out from...
12065         (create_mem_ref): ...here.  When handling a scale other than 1,
12066         check first whether the address is valid without the offset.
12067         Add it into the base if so, leaving the index and scale as-is.
12068
12069 2018-01-12  Jakub Jelinek  <jakub@redhat.com>
12070
12071         PR c++/83778
12072         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Call
12073         fold_for_warn before checking if arg2 is INTEGER_CST.
12074
12075 2018-01-12  Segher Boessenkool  <segher@kernel.crashing.org>
12076
12077         * config/rs6000/predicates.md (load_multiple_operation): Delete.
12078         (store_multiple_operation): Delete.
12079         * config/rs6000/rs6000-cpus.def (601): Remove MASK_STRING.
12080         * config/rs6000/rs6000-protos.h (rs6000_output_load_multiple): Delete.
12081         * config/rs6000/rs6000-string.c (expand_block_move): Delete everything
12082         guarded by TARGET_STRING.
12083         (rs6000_output_load_multiple): Delete.
12084         * config/rs6000/rs6000.c (rs6000_option_override_internal): Delete
12085         OPTION_MASK_STRING / TARGET_STRING handling.
12086         (print_operand) <'N', 'O'>: Add comment that these are unused now.
12087         (const rs6000_opt_masks) <"string">: Change mask to 0.
12088         * config/rs6000/rs6000.h (TARGET_DEFAULT): Remove MASK_STRING.
12089         (MASK_STRING): Delete.
12090         * config/rs6000/rs6000.md (*mov<mode>_string): Delete TARGET_STRING
12091         parts.  Simplify.
12092         (load_multiple): Delete.
12093         (*ldmsi8): Delete.
12094         (*ldmsi7): Delete.
12095         (*ldmsi6): Delete.
12096         (*ldmsi5): Delete.
12097         (*ldmsi4): Delete.
12098         (*ldmsi3): Delete.
12099         (store_multiple): Delete.
12100         (*stmsi8): Delete.
12101         (*stmsi7): Delete.
12102         (*stmsi6): Delete.
12103         (*stmsi5): Delete.
12104         (*stmsi4): Delete.
12105         (*stmsi3): Delete.
12106         (movmemsi_8reg): Delete.
12107         (corresponding unnamed define_insn): Delete.
12108         (movmemsi_6reg): Delete.
12109         (corresponding unnamed define_insn): Delete.
12110         (movmemsi_4reg): Delete.
12111         (corresponding unnamed define_insn): Delete.
12112         (movmemsi_2reg): Delete.
12113         (corresponding unnamed define_insn): Delete.
12114         (movmemsi_1reg): Delete.
12115         (corresponding unnamed define_insn): Delete.
12116         * config/rs6000/rs6000.opt (mno-string): New.
12117         (mstring): Replace by deprecation warning stub.
12118         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mstring.
12119
12120 2018-01-12  Jakub Jelinek  <jakub@redhat.com>
12121
12122         * regrename.c (regrename_do_replace): If replacing the same
12123         reg multiple times, try to reuse last created gen_raw_REG.
12124
12125         PR debug/81155
12126         * bb-reorder.c (pass_partition_blocks::gate): In lto don't partition
12127         main to workaround a bug in GDB.
12128
12129 2018-01-12  Tom de Vries  <tom@codesourcery.com>
12130
12131         PR target/83737
12132         * config.gcc (nvptx*-*-*): Set use_gcc_stdint=wrap.
12133
12134 2018-01-12  Vladimir Makarov  <vmakarov@redhat.com>
12135
12136         PR rtl-optimization/80481
12137         * ira-color.c (get_cap_member): New function.
12138         (allocnos_conflict_by_live_ranges_p): Use it.
12139         (slot_coalesced_allocno_live_ranges_intersect_p): Add assert.
12140         (setup_slot_coalesced_allocno_live_ranges): Ditto.
12141
12142 2018-01-12  Uros Bizjak  <ubizjak@gmail.com>
12143
12144         PR target/83628
12145         * config/alpha/alpha.md (*saddsi_1): New insn_ans_split pattern.
12146         (*saddl_se_1): Ditto.
12147         (*ssubsi_1): Ditto.
12148         (*ssubl_se_1): Ditto.
12149
12150 2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
12151
12152         * tree-predcom.c (aff_combination_dr_offset): Use wi::to_poly_widest
12153         rather than wi::to_widest for DR_INITs.
12154         * tree-vect-data-refs.c (vect_find_same_alignment_drs): Use
12155         wi::to_poly_offset rather than wi::to_offset for DR_INIT.
12156         (vect_analyze_data_ref_accesses): Require both DR_INITs to be
12157         INTEGER_CSTs.
12158         (vect_analyze_group_access_1): Note that here.
12159
12160 2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
12161
12162         * tree-vectorizer.c (get_vec_alignment_for_array_type): Handle
12163         polynomial type sizes.
12164
12165 2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
12166
12167         * gimplify.c (gimple_add_tmp_var_fn): Allow variables to have a
12168         poly_uint64 size, rather than requiring an unsigned HOST_WIDE_INT size.
12169         (gimple_add_tmp_var): Likewise.
12170
12171 2018-01-12  Martin Liska  <mliska@suse.cz>
12172
12173         * gimple.c (gimple_alloc_counts): Use uint64_t instead of int.
12174         (gimple_alloc_sizes): Likewise.
12175         (dump_gimple_statistics): Use PRIu64 in printf format.
12176         * gimple.h: Change uint64_t to int.
12177
12178 2018-01-12  Martin Liska  <mliska@suse.cz>
12179
12180         * tree-core.h: Use uint64_t instead of int.
12181         * tree.c (tree_node_counts): Likewise.
12182         (tree_node_sizes): Likewise.
12183         (dump_tree_statistics): Use PRIu64 in printf format.
12184
12185 2018-01-12  Martin Liska  <mliska@suse.cz>
12186
12187         * Makefile.in: As qsort_chk is implemented in vec.c, add
12188         vec.o to linkage of gencfn-macros.
12189         * tree.c (build_new_poly_int_cst): Add CXX_MEM_STAT_INFO as it's
12190         passing the info to record_node_allocation_statistics.
12191         (test_vector_cst_patterns): Add CXX_MEM_STAT_INFO to declaration
12192         and pass the info.
12193         * ggc-common.c (struct ggc_usage): Add operator== and use
12194         it in operator< and compare function.
12195         * mem-stats.h (struct mem_usage): Likewise.
12196         * vec.c (struct vec_usage): Remove operator< and compare
12197         function. Can be simply inherited.
12198
12199 2018-01-12  Martin Jambor  <mjambor@suse.cz>
12200
12201         PR target/81616
12202         * params.def: New parameter PARAM_AVOID_FMA_MAX_BITS.
12203         * tree-ssa-math-opts.c: Include domwalk.h.
12204         (convert_mult_to_fma_1): New function.
12205         (fma_transformation_info): New type.
12206         (fma_deferring_state): Likewise.
12207         (cancel_fma_deferring): New function.
12208         (result_of_phi): Likewise.
12209         (last_fma_candidate_feeds_initial_phi): Likewise.
12210         (convert_mult_to_fma): Added deferring logic, split actual
12211         transformation to convert_mult_to_fma_1.
12212         (math_opts_dom_walker): New type.
12213         (math_opts_dom_walker::after_dom_children): New method, body moved
12214         here from pass_optimize_widening_mul::execute, added deferring logic
12215         bits.
12216         (pass_optimize_widening_mul::execute): Moved most of code to
12217         math_opts_dom_walker::after_dom_children.
12218         * config/i386/x86-tune.def (X86_TUNE_AVOID_128FMA_CHAINS): New.
12219         * config/i386/i386.c (ix86_option_override_internal): Added
12220         maybe_setting of PARAM_AVOID_FMA_MAX_BITS.
12221
12222 2018-01-12  Richard Biener  <rguenther@suse.de>
12223
12224         PR debug/83157
12225         * dwarf2out.c (gen_variable_die): Do not reset old_die for
12226         inline instance vars.
12227
12228 2018-01-12  Oleg Endo  <olegendo@gcc.gnu.org>
12229
12230         PR target/81819
12231         * config/rx/rx.c (rx_is_restricted_memory_address):
12232         Handle SUBREG case.
12233
12234 2018-01-12  Richard Biener  <rguenther@suse.de>
12235
12236         PR tree-optimization/80846
12237         * target.def (split_reduction): New target hook.
12238         * targhooks.c (default_split_reduction): New function.
12239         * targhooks.h (default_split_reduction): Declare.
12240         * tree-vect-loop.c (vect_create_epilog_for_reduction): If the
12241         target requests first reduce vectors by combining low and high
12242         parts.
12243         * tree-vect-stmts.c (vect_gen_perm_mask_any): Adjust.
12244         (get_vectype_for_scalar_type_and_size): Export.
12245         * tree-vectorizer.h (get_vectype_for_scalar_type_and_size): Declare.
12246         * doc/tm.texi.in (TARGET_VECTORIZE_SPLIT_REDUCTION): Document.
12247         * doc/tm.texi: Regenerate.
12248         * config/i386/i386.c (ix86_split_reduction): Implement
12249         TARGET_VECTORIZE_SPLIT_REDUCTION.
12250
12251 2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
12252
12253         PR target/83368
12254         * config/sparc/sparc.h (PIC_OFFSET_TABLE_REGNUM): Set to INVALID_REGNUM
12255         in PIC mode except for TARGET_VXWORKS_RTP.
12256         * config/sparc/sparc.c: Include cfgrtl.h.
12257         (TARGET_INIT_PIC_REG): Define.
12258         (TARGET_USE_PSEUDO_PIC_REG): Likewise.
12259         (sparc_pic_register_p): New predicate.
12260         (sparc_legitimate_address_p): Use it.
12261         (sparc_legitimize_pic_address): Likewise.
12262         (sparc_delegitimize_address): Likewise.
12263         (sparc_mode_dependent_address_p): Likewise.
12264         (gen_load_pcrel_sym): Remove 4th parameter.
12265         (load_got_register): Adjust call to above.  Remove obsolete stuff.
12266         (sparc_expand_prologue): Do not call load_got_register here.
12267         (sparc_flat_expand_prologue): Likewise.
12268         (sparc_output_mi_thunk): Set the pic_offset_table_rtx object.
12269         (sparc_use_pseudo_pic_reg): New function.
12270         (sparc_init_pic_reg): Likewise.
12271         * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
12272         (builtin_setjmp_receiver): Enable only for TARGET_VXWORKS_RTP.
12273
12274 2018-01-12  Christophe Lyon  <christophe.lyon@linaro.org>
12275
12276         * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
12277         Add item for branch_cost.
12278
12279 2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
12280
12281         PR rtl-optimization/83565
12282         * rtlanal.c (nonzero_bits1): On WORD_REGISTER_OPERATIONS machines, do
12283         not extend the result to a larger mode for rotate operations.
12284         (num_sign_bit_copies1): Likewise.
12285
12286 2018-01-12  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
12287
12288         PR target/40411
12289         * config/sol2.h (STARTFILE_ARCH_SPEC): Don't use with -shared or
12290         -symbolic.
12291         Use values-Xc.o for -pedantic.
12292         Link with values-xpg4.o for C90, values-xpg6.o otherwise.
12293
12294 2018-01-12  Martin Liska  <mliska@suse.cz>
12295
12296         PR ipa/83054
12297         * ipa-devirt.c (final_warning_record::grow_type_warnings):
12298         New function.
12299         (possible_polymorphic_call_targets): Use it.
12300         (ipa_devirt): Likewise.
12301
12302 2018-01-12  Martin Liska  <mliska@suse.cz>
12303
12304         * profile-count.h (enum profile_quality): Use 0 as invalid
12305         enum value of profile_quality.
12306
12307 2018-01-12  Chung-Ju Wu  <jasonwucj@gmail.com>
12308
12309         * doc/invoke.texi (NDS32 Options): Add -mext-perf, -mext-perf2 and
12310         -mext-string options.
12311
12312 2018-01-12  Richard Biener  <rguenther@suse.de>
12313
12314         * lto-streamer-out.c (DFS::DFS_write_tree_body): Process
12315         DECL_DEBUG_EXPR conditional on DECL_HAS_DEBUG_EXPR_P.
12316         * tree-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
12317         Likewise.
12318         * tree-streamer-out.c (write_ts_decl_common_tree_pointers): Likewise.
12319
12320 2018-01-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
12321
12322         * configure.ac (--with-long-double-format): Add support for the
12323         configuration option to change the default long double format on
12324         PowerPC systems.
12325         * config.gcc (powerpc*-linux*-*): Likewise.
12326         * configure: Regenerate.
12327         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): If long
12328         double is IEEE, define __KC__ and __KF__ to allow floatn.h to be
12329         used without modification.
12330
12331 2018-01-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
12332
12333         * config/rs6000/rs6000-builtin.def (BU_P7_MISC_X): New #define.
12334         (SPEC_BARRIER): New instantiation of BU_P7_MISC_X.
12335         * config/rs6000/rs6000.c (rs6000_expand_builtin): Handle
12336         MISC_BUILTIN_SPEC_BARRIER.
12337         (rs6000_init_builtins): Likewise.
12338         * config/rs6000/rs6000.md (UNSPECV_SPEC_BARRIER): New UNSPECV
12339         enum value.
12340         (speculation_barrier): New define_insn.
12341         * doc/extend.texi: Document __builtin_speculation_barrier.
12342
12343 2018-01-11  Jakub Jelinek  <jakub@redhat.com>
12344
12345         PR target/83203
12346         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): If one_var
12347         is 0, for V{8,16}S[IF] and V[48]D[IF]mode use gen_vec_set<mode>_0.
12348         * config/i386/sse.md (VI8_AVX_AVX512F, VI4F_256_512): New mode
12349         iterators.
12350         (ssescalarmodesuffix): Add 512-bit vectors.  Use "d" or "q" for
12351         integral modes instead of "ss" and "sd".
12352         (vec_set<mode>_0): New define_insns for 256-bit and 512-bit
12353         vectors with 32-bit and 64-bit elements.
12354         (vecdupssescalarmodesuffix): New mode attribute.
12355         (vec_dup<mode>): Use it.
12356
12357 2018-01-11  H.J. Lu  <hongjiu.lu@intel.com>
12358
12359         PR target/83330
12360         * config/i386/i386.c (ix86_compute_frame_layout): Align stack
12361         frame if argument is passed on stack.
12362
12363 2018-01-11  Jakub Jelinek  <jakub@redhat.com>
12364
12365         PR target/82682
12366         * ree.c (combine_reaching_defs): Optimize also
12367         reg2=exp; reg1=reg2; reg2=any_extend(reg1); into
12368         reg2=any_extend(exp); reg1=reg2;, formatting fix.
12369
12370 2018-01-11  Jan Hubicka  <hubicka@ucw.cz>
12371
12372         PR middle-end/83189
12373         * gimple-ssa-isolate-paths.c (isolate_path): Fix profile update.
12374
12375 2018-01-11  Jan Hubicka  <hubicka@ucw.cz>
12376
12377         PR middle-end/83718
12378         * tree-inline.c (copy_cfg_body): Adjust num&den for scaling
12379         after they are computed.
12380
12381 2018-01-11  Bin Cheng  <bin.cheng@arm.com>
12382
12383         PR tree-optimization/83695
12384         * gimple-loop-linterchange.cc
12385         (tree_loop_interchange::interchange_loops): Call scev_reset_htab to
12386         reset cached scev information after interchange.
12387         (pass_linterchange::execute): Remove call to scev_reset_htab.
12388
12389 2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
12390
12391         * config/arm/arm_neon.h (vfmlal_lane_low_u32, vfmlal_lane_high_u32,
12392         vfmlalq_laneq_low_u32, vfmlalq_lane_low_u32, vfmlal_laneq_low_u32,
12393         vfmlalq_laneq_high_u32, vfmlalq_lane_high_u32, vfmlal_laneq_high_u32,
12394         vfmlsl_lane_low_u32, vfmlsl_lane_high_u32, vfmlslq_laneq_low_u32,
12395         vfmlslq_lane_low_u32, vfmlsl_laneq_low_u32, vfmlslq_laneq_high_u32,
12396         vfmlslq_lane_high_u32, vfmlsl_laneq_high_u32): Define.
12397         * config/arm/arm_neon_builtins.def (vfmal_lane_low,
12398         vfmal_lane_lowv4hf, vfmal_lane_lowv8hf, vfmal_lane_high,
12399         vfmal_lane_highv4hf, vfmal_lane_highv8hf, vfmsl_lane_low,
12400         vfmsl_lane_lowv4hf, vfmsl_lane_lowv8hf, vfmsl_lane_high,
12401         vfmsl_lane_highv4hf, vfmsl_lane_highv8hf): New sets of builtins.
12402         * config/arm/iterators.md (VFMLSEL2, vfmlsel2): New mode attributes.
12403         (V_lane_reg): Likewise.
12404         * config/arm/neon.md (neon_vfm<vfml_op>l_lane_<vfml_half><VCVTF:mode>):
12405         New define_expand.
12406         (neon_vfm<vfml_op>l_lane_<vfml_half><vfmlsel2><mode>): Likewise.
12407         (vfmal_lane_low<mode>_intrinsic,
12408         vfmal_lane_low<vfmlsel2><mode>_intrinsic,
12409         vfmal_lane_high<vfmlsel2><mode>_intrinsic,
12410         vfmal_lane_high<mode>_intrinsic, vfmsl_lane_low<mode>_intrinsic,
12411         vfmsl_lane_low<vfmlsel2><mode>_intrinsic,
12412         vfmsl_lane_high<vfmlsel2><mode>_intrinsic,
12413         vfmsl_lane_high<mode>_intrinsic): New define_insns.
12414
12415 2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
12416
12417         * config/arm/arm-cpus.in (fp16fml): New feature.
12418         (ALL_SIMD): Add fp16fml.
12419         (armv8.2-a): Add fp16fml as an option.
12420         (armv8.3-a): Likewise.
12421         (armv8.4-a): Add fp16fml as part of fp16.
12422         * config/arm/arm.h (TARGET_FP16FML): Define.
12423         * config/arm/arm-c.c (arm_cpu_builtins): Define __ARM_FEATURE_FP16_FML
12424         when appropriate.
12425         * config/arm/arm-modes.def (V2HF): Define.
12426         * config/arm/arm_neon.h (vfmlal_low_u32, vfmlsl_low_u32,
12427         vfmlal_high_u32, vfmlsl_high_u32, vfmlalq_low_u32,
12428         vfmlslq_low_u32, vfmlalq_high_u32, vfmlslq_high_u32): Define.
12429         * config/arm/arm_neon_builtins.def (vfmal_low, vfmal_high,
12430         vfmsl_low, vfmsl_high): New set of builtins.
12431         * config/arm/iterators.md (PLUSMINUS): New code iterator.
12432         (vfml_op): New code attribute.
12433         (VFMLHALVES): New int iterator.
12434         (VFML, VFMLSEL): New mode attributes.
12435         (V_reg): Define mapping for V2HF.
12436         (V_hi, V_lo): New mode attributes.
12437         (VF_constraint): Likewise.
12438         (vfml_half, vfml_half_selector): New int attributes.
12439         * config/arm/neon.md (neon_vfm<vfml_op>l_<vfml_half><mode>): New
12440         define_expand.
12441         (vfmal_low<mode>_intrinsic, vfmsl_high<mode>_intrinsic,
12442         vfmal_high<mode>_intrinsic, vfmsl_low<mode>_intrinsic):
12443         New define_insn.
12444         * config/arm/t-arm-elf (v8_fps): Add fp16fml.
12445         * config/arm/t-multilib (v8_2_a_simd_variants): Add fp16fml.
12446         * config/arm/unspecs.md (UNSPEC_VFML_LO, UNSPEC_VFML_HI): New unspecs.
12447         * doc/invoke.texi (ARM Options): Document fp16fml.  Update armv8.4-a
12448         documentation.
12449         * doc/sourcebuild.texi (arm_fp16fml_neon_ok, arm_fp16fml_neon):
12450         Document new effective target and option set.
12451
12452 2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
12453
12454         * config/arm/arm-cpus.in (armv8_4): New feature.
12455         (ARMv8_4a): New fgroup.
12456         (armv8.4-a): New arch.
12457         * config/arm/arm-tables.opt: Regenerate.
12458         * config/arm/t-aprofile: Add matching rules for -march=armv8.4-a.
12459         * config/arm/t-arm-elf (all_v8_archs): Add armv8.4-a.
12460         * config/arm/t-multilib (v8_4_a_simd_variants): New variable.
12461         Add matching rules for -march=armv8.4-a and extensions.
12462         * doc/invoke.texi (ARM Options): Document -march=armv8.4-a.
12463
12464 2018-01-11  Oleg Endo  <olegendo@gcc.gnu.org>
12465
12466         PR target/81821
12467         * config/rx/rx.md (BW): New mode attribute.
12468         (sync_lock_test_and_setsi): Add mode suffix to insn output.
12469
12470 2018-01-11  Richard Biener  <rguenther@suse.de>
12471
12472         PR tree-optimization/83435
12473         * graphite.c (canonicalize_loop_form): Ignore fake loop exit edges.
12474         * graphite-scop-detection.c (scop_detection::get_sese): Likewise.
12475         * tree-vrp.c (add_assert_info): Drop TREE_OVERFLOW if they appear.
12476
12477 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
12478             Alan Hayward  <alan.hayward@arm.com>
12479             David Sherwood  <david.sherwood@arm.com>
12480
12481         * config/aarch64/aarch64.c (aarch64_address_info): Add a const_offset
12482         field.
12483         (aarch64_classify_address): Initialize it.  Track polynomial offsets.
12484         (aarch64_print_address_internal): Use it to check for a zero offset.
12485
12486 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
12487             Alan Hayward  <alan.hayward@arm.com>
12488             David Sherwood  <david.sherwood@arm.com>
12489
12490         * config/aarch64/aarch64-modes.def (NUM_POLY_INT_COEFFS): Set to 2.
12491         * config/aarch64/aarch64-protos.h (aarch64_initial_elimination_offset):
12492         Return a poly_int64 rather than a HOST_WIDE_INT.
12493         (aarch64_offset_7bit_signed_scaled_p): Take the offset as a poly_int64
12494         rather than a HOST_WIDE_INT.
12495         * config/aarch64/aarch64.h (aarch64_frame): Protect with
12496         HAVE_POLY_INT_H rather than HOST_WIDE_INT.  Change locals_offset,
12497         hard_fp_offset, frame_size, initial_adjust, callee_offset and
12498         final_offset from HOST_WIDE_INT to poly_int64.
12499         * config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args): Use
12500         to_constant when getting the number of units in an Advanced SIMD
12501         mode.
12502         (aarch64_builtin_vectorized_function): Check for a constant number
12503         of units.
12504         * config/aarch64/aarch64-simd.md (mov<mode>): Handle polynomial
12505         GET_MODE_SIZE.
12506         (aarch64_ld<VSTRUCT:nregs>_lane<VALLDIF:mode>): Use the nunits
12507         attribute instead of GET_MODE_NUNITS.
12508         * config/aarch64/aarch64.c (aarch64_hard_regno_nregs)
12509         (aarch64_class_max_nregs): Use the constant_lowest_bound of the
12510         GET_MODE_SIZE for fixed-size registers.
12511         (aarch64_const_vec_all_same_in_range_p): Use const_vec_duplicate_p.
12512         (aarch64_hard_regno_call_part_clobbered, aarch64_classify_index)
12513         (aarch64_mode_valid_for_sched_fusion_p, aarch64_classify_address)
12514         (aarch64_legitimize_address_displacement, aarch64_secondary_reload)
12515         (aarch64_print_operand, aarch64_print_address_internal)
12516         (aarch64_address_cost, aarch64_rtx_costs, aarch64_register_move_cost)
12517         (aarch64_short_vector_p, aapcs_vfp_sub_candidate)
12518         (aarch64_simd_attr_length_rglist, aarch64_operands_ok_for_ldpstp):
12519         Handle polynomial GET_MODE_SIZE.
12520         (aarch64_hard_regno_caller_save_mode): Likewise.  Return modes
12521         wider than SImode without modification.
12522         (tls_symbolic_operand_type): Use strip_offset instead of split_const.
12523         (aarch64_pass_by_reference, aarch64_layout_arg, aarch64_pad_reg_upward)
12524         (aarch64_gimplify_va_arg_expr): Assert that we don't yet handle
12525         passing and returning SVE modes.
12526         (aarch64_function_value, aarch64_layout_arg): Use gen_int_mode
12527         rather than GEN_INT.
12528         (aarch64_emit_probe_stack_range): Take the size as a poly_int64
12529         rather than a HOST_WIDE_INT, but call sorry if it isn't constant.
12530         (aarch64_allocate_and_probe_stack_space): Likewise.
12531         (aarch64_layout_frame): Cope with polynomial offsets.
12532         (aarch64_save_callee_saves, aarch64_restore_callee_saves): Take the
12533         start_offset as a poly_int64 rather than a HOST_WIDE_INT.  Track
12534         polynomial offsets.
12535         (offset_9bit_signed_unscaled_p, offset_12bit_unsigned_scaled_p)
12536         (aarch64_offset_7bit_signed_scaled_p): Take the offset as a
12537         poly_int64 rather than a HOST_WIDE_INT.
12538         (aarch64_get_separate_components, aarch64_process_components)
12539         (aarch64_expand_prologue, aarch64_expand_epilogue)
12540         (aarch64_use_return_insn_p): Handle polynomial frame offsets.
12541         (aarch64_anchor_offset): New function, split out from...
12542         (aarch64_legitimize_address): ...here.
12543         (aarch64_builtin_vectorization_cost): Handle polynomial
12544         TYPE_VECTOR_SUBPARTS.
12545         (aarch64_simd_check_vect_par_cnst_half): Handle polynomial
12546         GET_MODE_NUNITS.
12547         (aarch64_simd_make_constant, aarch64_expand_vector_init): Get the
12548         number of elements from the PARALLEL rather than the mode.
12549         (aarch64_shift_truncation_mask): Use GET_MODE_UNIT_BITSIZE
12550         rather than GET_MODE_BITSIZE.
12551         (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_ext)
12552         (aarch64_evpc_rev, aarch64_evpc_dup, aarch64_evpc_zip)
12553         (aarch64_expand_vec_perm_const_1): Handle polynomial
12554         d->perm.length () and d->perm elements.
12555         (aarch64_evpc_tbl): Likewise.  Use nelt rather than GET_MODE_NUNITS.
12556         Apply to_constant to d->perm elements.
12557         (aarch64_simd_valid_immediate, aarch64_vec_fpconst_pow_of_2): Handle
12558         polynomial CONST_VECTOR_NUNITS.
12559         (aarch64_move_pointer): Take amount as a poly_int64 rather
12560         than an int.
12561         (aarch64_progress_pointer): Avoid temporary variable.
12562         * config/aarch64/aarch64.md (aarch64_<crc_variant>): Use
12563         the mode attribute instead of GET_MODE.
12564
12565 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
12566             Alan Hayward  <alan.hayward@arm.com>
12567             David Sherwood  <david.sherwood@arm.com>
12568
12569         * config/aarch64/aarch64.c (aarch64_force_temporary): Assert that
12570         x exists before using it.
12571         (aarch64_add_constant_internal): Rename to...
12572         (aarch64_add_offset_1): ...this.  Replace regnum with separate
12573         src and dest rtxes.  Handle the case in which they're different,
12574         including when the offset is zero.  Replace scratchreg with an rtx.
12575         Use 2 additions if there is no spare register into which we can
12576         move a 16-bit constant.
12577         (aarch64_add_constant): Delete.
12578         (aarch64_add_offset): Replace reg with separate src and dest
12579         rtxes.  Take a poly_int64 offset instead of a HOST_WIDE_INT.
12580         Use aarch64_add_offset_1.
12581         (aarch64_add_sp, aarch64_sub_sp): Take the scratch register as
12582         an rtx rather than an int.  Take the delta as a poly_int64
12583         rather than a HOST_WIDE_INT.  Use aarch64_add_offset.
12584         (aarch64_expand_mov_immediate): Update uses of aarch64_add_offset.
12585         (aarch64_expand_prologue): Update calls to aarch64_sub_sp,
12586         aarch64_allocate_and_probe_stack_space and aarch64_add_offset.
12587         (aarch64_expand_epilogue): Update calls to aarch64_add_offset
12588         and aarch64_add_sp.
12589         (aarch64_output_mi_thunk): Use aarch64_add_offset rather than
12590         aarch64_add_constant.
12591
12592 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
12593
12594         * config/aarch64/aarch64.c (aarch64_reinterpret_float_as_int):
12595         Use scalar_float_mode.
12596
12597 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
12598
12599         * config/aarch64/aarch64-simd.md
12600         (aarch64_fml<f16mac1>l<f16quad>_low<mode>): Avoid GET_MODE_NUNITS.
12601         (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Likewise.
12602         (aarch64_fml<f16mac1>l_lane_lowv2sf): Likewise.
12603         (aarch64_fml<f16mac1>l_lane_highv2sf): Likewise.
12604         (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Likewise.
12605         (aarch64_fml<f16mac1>lq_laneq_highv4sf): Likewise.
12606         (aarch64_fml<f16mac1>l_laneq_lowv2sf): Likewise.
12607         (aarch64_fml<f16mac1>l_laneq_highv2sf): Likewise.
12608         (aarch64_fml<f16mac1>lq_lane_lowv4sf): Likewise.
12609         (aarch64_fml<f16mac1>lq_lane_highv4sf): Likewise.
12610
12611 2018-01-11  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
12612
12613         PR target/83514
12614         * config/arm/arm.c (arm_declare_function_name): Set arch_to_print if
12615         targ_options->x_arm_arch_string is non NULL.
12616
12617 2018-01-11  Tamar Christina  <tamar.christina@arm.com>
12618
12619         * config/aarch64/aarch64.h
12620         (AARCH64_FL_FOR_ARCH8_4): Add  AARCH64_FL_DOTPROD.
12621
12622 2018-01-11  Sudakshina Das  <sudi.das@arm.com>
12623
12624         PR target/82096
12625         * expmed.c (emit_store_flag_force): Swap if const op0
12626         and change VOIDmode to mode of op0.
12627
12628 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
12629
12630         PR rtl-optimization/83761
12631         * caller-save.c (replace_reg_with_saved_mem): Pass bits rather
12632         than bytes to mode_for_size.
12633
12634 2018-01-10  Jan Hubicka  <hubicka@ucw.cz>
12635
12636         PR middle-end/83189
12637         * gfortran.fortran-torture/compile/pr83189.f90: New testcase.
12638         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Handle zero
12639         profile.
12640
12641 2018-01-10  Jan Hubicka  <hubicka@ucw.cz>
12642
12643         PR middle-end/83575
12644         * cfgrtl.c (rtl_verify_edges): Only verify fixability of partition
12645         when in layout mode.
12646         (cfg_layout_finalize): Do not verify cfg before we are out of layout.
12647         * cfgcleanup.c (try_optimize_cfg): Only verify flow info when doing
12648         partition fixup.
12649
12650 2018-01-10  Michael Collison  <michael.collison@arm.com>
12651
12652         * config/aarch64/aarch64-modes.def (V2HF): New VECTOR_MODE.
12653         * config/aarch64/aarch64-option-extension.def: Add
12654         AARCH64_OPT_EXTENSION of 'fp16fml'.
12655         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
12656         (__ARM_FEATURE_FP16_FML): Define if TARGET_F16FML is true.
12657         * config/aarch64/predicates.md (aarch64_lane_imm3): New predicate.
12658         * config/aarch64/constraints.md (Ui7): New constraint.
12659         * config/aarch64/iterators.md (VFMLA_W): New mode iterator.
12660         (VFMLA_SEL_W): Ditto.
12661         (f16quad): Ditto.
12662         (f16mac1): Ditto.
12663         (VFMLA16_LOW): New int iterator.
12664         (VFMLA16_HIGH): Ditto.
12665         (UNSPEC_FMLAL): New unspec.
12666         (UNSPEC_FMLSL): Ditto.
12667         (UNSPEC_FMLAL2): Ditto.
12668         (UNSPEC_FMLSL2): Ditto.
12669         (f16mac): New code attribute.
12670         * config/aarch64/aarch64-simd-builtins.def
12671         (aarch64_fmlal_lowv2sf): Ditto.
12672         (aarch64_fmlsl_lowv2sf): Ditto.
12673         (aarch64_fmlalq_lowv4sf): Ditto.
12674         (aarch64_fmlslq_lowv4sf): Ditto.
12675         (aarch64_fmlal_highv2sf): Ditto.
12676         (aarch64_fmlsl_highv2sf): Ditto.
12677         (aarch64_fmlalq_highv4sf): Ditto.
12678         (aarch64_fmlslq_highv4sf): Ditto.
12679         (aarch64_fmlal_lane_lowv2sf): Ditto.
12680         (aarch64_fmlsl_lane_lowv2sf): Ditto.
12681         (aarch64_fmlal_laneq_lowv2sf): Ditto.
12682         (aarch64_fmlsl_laneq_lowv2sf): Ditto.
12683         (aarch64_fmlalq_lane_lowv4sf): Ditto.
12684         (aarch64_fmlsl_lane_lowv4sf): Ditto.
12685         (aarch64_fmlalq_laneq_lowv4sf): Ditto.
12686         (aarch64_fmlsl_laneq_lowv4sf): Ditto.
12687         (aarch64_fmlal_lane_highv2sf): Ditto.
12688         (aarch64_fmlsl_lane_highv2sf): Ditto.
12689         (aarch64_fmlal_laneq_highv2sf): Ditto.
12690         (aarch64_fmlsl_laneq_highv2sf): Ditto.
12691         (aarch64_fmlalq_lane_highv4sf): Ditto.
12692         (aarch64_fmlsl_lane_highv4sf): Ditto.
12693         (aarch64_fmlalq_laneq_highv4sf): Ditto.
12694         (aarch64_fmlsl_laneq_highv4sf): Ditto.
12695         * config/aarch64/aarch64-simd.md:
12696         (aarch64_fml<f16mac1>l<f16quad>_low<mode>): New pattern.
12697         (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
12698         (aarch64_simd_fml<f16mac1>l<f16quad>_low<mode>): Ditto.
12699         (aarch64_simd_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
12700         (aarch64_fml<f16mac1>l_lane_lowv2sf): Ditto.
12701         (aarch64_fml<f16mac1>l_lane_highv2sf): Ditto.
12702         (aarch64_simd_fml<f16mac>l_lane_lowv2sf): Ditto.
12703         (aarch64_simd_fml<f16mac>l_lane_highv2sf): Ditto.
12704         (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Ditto.
12705         (aarch64_fml<f16mac1>lq_laneq_highv4sf): Ditto.
12706         (aarch64_simd_fml<f16mac>lq_laneq_lowv4sf): Ditto.
12707         (aarch64_simd_fml<f16mac>lq_laneq_highv4sf): Ditto.
12708         (aarch64_fml<f16mac1>l_laneq_lowv2sf): Ditto.
12709         (aarch64_fml<f16mac1>l_laneq_highv2sf): Ditto.
12710         (aarch64_simd_fml<f16mac>l_laneq_lowv2sf): Ditto.
12711         (aarch64_simd_fml<f16mac>l_laneq_highv2sf): Ditto.
12712         (aarch64_fml<f16mac1>lq_lane_lowv4sf): Ditto.
12713         (aarch64_fml<f16mac1>lq_lane_highv4sf): Ditto.
12714         (aarch64_simd_fml<f16mac>lq_lane_lowv4sf): Ditto.
12715         (aarch64_simd_fml<f16mac>lq_lane_highv4sf): Ditto.
12716         * config/aarch64/arm_neon.h (vfmlal_low_u32): New intrinsic.
12717         (vfmlsl_low_u32): Ditto.
12718         (vfmlalq_low_u32): Ditto.
12719         (vfmlslq_low_u32): Ditto.
12720         (vfmlal_high_u32): Ditto.
12721         (vfmlsl_high_u32): Ditto.
12722         (vfmlalq_high_u32): Ditto.
12723         (vfmlslq_high_u32): Ditto.
12724         (vfmlal_lane_low_u32): Ditto.
12725         (vfmlsl_lane_low_u32): Ditto.
12726         (vfmlal_laneq_low_u32): Ditto.
12727         (vfmlsl_laneq_low_u32): Ditto.
12728         (vfmlalq_lane_low_u32): Ditto.
12729         (vfmlslq_lane_low_u32): Ditto.
12730         (vfmlalq_laneq_low_u32): Ditto.
12731         (vfmlslq_laneq_low_u32): Ditto.
12732         (vfmlal_lane_high_u32): Ditto.
12733         (vfmlsl_lane_high_u32): Ditto.
12734         (vfmlal_laneq_high_u32): Ditto.
12735         (vfmlsl_laneq_high_u32): Ditto.
12736         (vfmlalq_lane_high_u32): Ditto.
12737         (vfmlslq_lane_high_u32): Ditto.
12738         (vfmlalq_laneq_high_u32): Ditto.
12739         (vfmlslq_laneq_high_u32): Ditto.
12740         * config/aarch64/aarch64.h (AARCH64_FL_F16SML): New flag.
12741         (AARCH64_FL_FOR_ARCH8_4): New.
12742         (AARCH64_ISA_F16FML): New ISA flag.
12743         (TARGET_F16FML): New feature flag for fp16fml.
12744         (doc/invoke.texi): Document new fp16fml option.
12745
12746 2018-01-10  Michael Collison  <michael.collison@arm.com>
12747
12748         * config/aarch64/aarch64-builtins.c:
12749         (aarch64_types_ternopu_imm_qualifiers, TYPES_TERNOPUI): New.
12750         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
12751         (__ARM_FEATURE_SHA3): Define if TARGET_SHA3 is true.
12752         * config/aarch64/aarch64.h (AARCH64_FL_SHA3): New flags.
12753         (AARCH64_ISA_SHA3): New ISA flag.
12754         (TARGET_SHA3): New feature flag for sha3.
12755         * config/aarch64/iterators.md (sha512_op): New int attribute.
12756         (CRYPTO_SHA512): New int iterator.
12757         (UNSPEC_SHA512H): New unspec.
12758         (UNSPEC_SHA512H2): Ditto.
12759         (UNSPEC_SHA512SU0): Ditto.
12760         (UNSPEC_SHA512SU1): Ditto.
12761         * config/aarch64/aarch64-simd-builtins.def
12762         (aarch64_crypto_sha512hqv2di): New builtin.
12763         (aarch64_crypto_sha512h2qv2di): Ditto.
12764         (aarch64_crypto_sha512su0qv2di): Ditto.
12765         (aarch64_crypto_sha512su1qv2di): Ditto.
12766         (aarch64_eor3qv8hi): Ditto.
12767         (aarch64_rax1qv2di): Ditto.
12768         (aarch64_xarqv2di): Ditto.
12769         (aarch64_bcaxqv8hi): Ditto.
12770         * config/aarch64/aarch64-simd.md:
12771         (aarch64_crypto_sha512h<sha512_op>qv2di): New pattern.
12772         (aarch64_crypto_sha512su0qv2di): Ditto.
12773         (aarch64_crypto_sha512su1qv2di): Ditto.
12774         (aarch64_eor3qv8hi): Ditto.
12775         (aarch64_rax1qv2di): Ditto.
12776         (aarch64_xarqv2di): Ditto.
12777         (aarch64_bcaxqv8hi): Ditto.
12778         * config/aarch64/arm_neon.h (vsha512hq_u64): New intrinsic.
12779         (vsha512h2q_u64): Ditto.
12780         (vsha512su0q_u64): Ditto.
12781         (vsha512su1q_u64): Ditto.
12782         (veor3q_u16): Ditto.
12783         (vrax1q_u64): Ditto.
12784         (vxarq_u64): Ditto.
12785         (vbcaxq_u16): Ditto.
12786         * config/arm/types.md (crypto_sha512): New type attribute.
12787         (crypto_sha3): Ditto.
12788         (doc/invoke.texi): Document new sha3 option.
12789
12790 2018-01-10  Michael Collison  <michael.collison@arm.com>
12791
12792         * config/aarch64/aarch64-builtins.c:
12793         (aarch64_types_quadopu_imm_qualifiers, TYPES_QUADOPUI): New.
12794         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
12795         (__ARM_FEATURE_SM3): Define if TARGET_SM4 is true.
12796         (__ARM_FEATURE_SM4): Define if TARGET_SM4 is true.
12797         * config/aarch64/aarch64.h (AARCH64_FL_SM4): New flags.
12798         (AARCH64_ISA_SM4): New ISA flag.
12799         (TARGET_SM4): New feature flag for sm4.
12800         * config/aarch64/aarch64-simd-builtins.def
12801         (aarch64_sm3ss1qv4si): Ditto.
12802         (aarch64_sm3tt1aq4si): Ditto.
12803         (aarch64_sm3tt1bq4si): Ditto.
12804         (aarch64_sm3tt2aq4si): Ditto.
12805         (aarch64_sm3tt2bq4si): Ditto.
12806         (aarch64_sm3partw1qv4si): Ditto.
12807         (aarch64_sm3partw2qv4si): Ditto.
12808         (aarch64_sm4eqv4si): Ditto.
12809         (aarch64_sm4ekeyqv4si): Ditto.
12810         * config/aarch64/aarch64-simd.md:
12811         (aarch64_sm3ss1qv4si): Ditto.
12812         (aarch64_sm3tt<sm3tt_op>qv4si): Ditto.
12813         (aarch64_sm3partw<sm3part_op>qv4si): Ditto.
12814         (aarch64_sm4eqv4si): Ditto.
12815         (aarch64_sm4ekeyqv4si): Ditto.
12816         * config/aarch64/iterators.md (sm3tt_op): New int iterator.
12817         (sm3part_op): Ditto.
12818         (CRYPTO_SM3TT): Ditto.
12819         (CRYPTO_SM3PART): Ditto.
12820         (UNSPEC_SM3SS1): New unspec.
12821         (UNSPEC_SM3TT1A): Ditto.
12822         (UNSPEC_SM3TT1B): Ditto.
12823         (UNSPEC_SM3TT2A): Ditto.
12824         (UNSPEC_SM3TT2B): Ditto.
12825         (UNSPEC_SM3PARTW1): Ditto.
12826         (UNSPEC_SM3PARTW2): Ditto.
12827         (UNSPEC_SM4E): Ditto.
12828         (UNSPEC_SM4EKEY): Ditto.
12829         * config/aarch64/constraints.md (Ui2): New constraint.
12830         * config/aarch64/predicates.md (aarch64_imm2): New predicate.
12831         * config/arm/types.md (crypto_sm3): New type attribute.
12832         (crypto_sm4): Ditto.
12833         * config/aarch64/arm_neon.h (vsm3ss1q_u32): New intrinsic.
12834         (vsm3tt1aq_u32): Ditto.
12835         (vsm3tt1bq_u32): Ditto.
12836         (vsm3tt2aq_u32): Ditto.
12837         (vsm3tt2bq_u32): Ditto.
12838         (vsm3partw1q_u32): Ditto.
12839         (vsm3partw2q_u32): Ditto.
12840         (vsm4eq_u32): Ditto.
12841         (vsm4ekeyq_u32): Ditto.
12842         (doc/invoke.texi): Document new sm4 option.
12843
12844 2018-01-10  Michael Collison  <michael.collison@arm.com>
12845
12846         * config/aarch64/aarch64-arches.def (armv8.4-a): New architecture.
12847         * config/aarch64/aarch64.h (AARCH64_ISA_V8_4): New ISA flag.
12848         (AARCH64_FL_FOR_ARCH8_4): New.
12849         (AARCH64_FL_V8_4): New flag.
12850         (doc/invoke.texi): Document new armv8.4-a option.
12851
12852 2018-01-10  Michael Collison  <michael.collison@arm.com>
12853
12854         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
12855         (__ARM_FEATURE_AES): Define if TARGET_AES is true.
12856         (__ARM_FEATURE_SHA2): Define if TARGET_SHA2 is true.
12857         * config/aarch64/aarch64-option-extension.def: Add
12858         AARCH64_OPT_EXTENSION of 'sha2'.
12859         (aes): Add AARCH64_OPT_EXTENSION of 'aes'.
12860         (crypto): Disable sha2 and aes if crypto disabled.
12861         (crypto): Enable aes and sha2 if enabled.
12862         (simd): Disable sha2 and aes if simd disabled.
12863         * config/aarch64/aarch64.h (AARCH64_FL_AES, AARCH64_FL_SHA2):
12864         New flags.
12865         (AARCH64_ISA_AES, AARCH64_ISA_SHA2): New ISA flags.
12866         (TARGET_SHA2): New feature flag for sha2.
12867         (TARGET_AES): New feature flag for aes.
12868         * config/aarch64/aarch64-simd.md:
12869         (aarch64_crypto_aes<aes_op>v16qi): Make pattern
12870         conditional on TARGET_AES.
12871         (aarch64_crypto_aes<aesmc_op>v16qi): Ditto.
12872         (aarch64_crypto_sha1hsi): Make pattern conditional
12873         on TARGET_SHA2.
12874         (aarch64_crypto_sha1hv4si): Ditto.
12875         (aarch64_be_crypto_sha1hv4si): Ditto.
12876         (aarch64_crypto_sha1su1v4si): Ditto.
12877         (aarch64_crypto_sha1<sha1_op>v4si): Ditto.
12878         (aarch64_crypto_sha1su0v4si): Ditto.
12879         (aarch64_crypto_sha256h<sha256_op>v4si): Ditto.
12880         (aarch64_crypto_sha256su0v4si): Ditto.
12881         (aarch64_crypto_sha256su1v4si): Ditto.
12882         (doc/invoke.texi): Document new aes and sha2 options.
12883
12884 2018-01-10  Martin Sebor  <msebor@redhat.com>
12885
12886         PR tree-optimization/83781
12887         * gimple-fold.c (get_range_strlen): Avoid treating arrays of pointers
12888         as string arrays.
12889
12890 2018-01-11  Martin Sebor  <msebor@gmail.com>
12891             Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
12892
12893         PR tree-optimization/83501
12894         PR tree-optimization/81703
12895
12896         * tree-ssa-strlen.c (get_string_cst): Rename...
12897         (get_string_len): ...to this.  Handle global constants.
12898         (handle_char_store): Adjust.
12899
12900 2018-01-10  Kito Cheng  <kito.cheng@gmail.com>
12901             Jim Wilson  <jimw@sifive.com>
12902
12903         * config/riscv/riscv-protos.h (riscv_output_return): New.
12904         * config/riscv/riscv.c (struct machine_function): New naked_p field.
12905         (riscv_attribute_table, riscv_output_return),
12906         (riscv_handle_fndecl_attribute, riscv_naked_function_p),
12907         (riscv_allocate_stack_slots_for_args, riscv_warn_func_return): New.
12908         (riscv_compute_frame_info): Only compute frame->mask if not a naked
12909         function.
12910         (riscv_expand_prologue): Add early return for naked function.
12911         (riscv_expand_epilogue): Likewise.
12912         (riscv_function_ok_for_sibcall): Return false for naked function.
12913         (riscv_set_current_function): New.
12914         (TARGET_SET_CURRENT_FUNCTION, TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS),
12915         (TARGET_ATTRIBUTE_TABLE, TARGET_WARN_FUNC_RETURN): New.
12916         * config/riscv/riscv.md (simple_return): Call riscv_output_return.
12917         * doc/extend.texi (RISC-V Function Attributes): New.
12918
12919 2018-01-10  Michael Meissner  <meissner@linux.vnet.ibm.com>
12920
12921         * config/rs6000/rs6000.c (is_complex_IBM_long_double): Explicitly
12922         check for 128-bit long double before checking TCmode.
12923         * config/rs6000/rs6000.h (FLOAT128_IEEE_P): Explicitly check for
12924         128-bit long doubles before checking TFmode or TCmode.
12925         (FLOAT128_IBM_P): Likewise.
12926
12927 2018-01-10  Martin Sebor  <msebor@redhat.com>
12928
12929         PR tree-optimization/83671
12930         * builtins.c (c_strlen): Unconditionally return zero for the empty
12931         string.
12932         Use -Warray-bounds for warnings.
12933         * gimple-fold.c (get_range_strlen): Handle non-constant lengths
12934         for non-constant array indices with COMPONENT_REF, arrays of
12935         arrays, and pointers to arrays.
12936         (gimple_fold_builtin_strlen): Determine and set length range for
12937         non-constant character arrays.
12938
12939 2018-01-10  Aldy Hernandez  <aldyh@redhat.com>
12940
12941         PR middle-end/81897
12942         * tree-ssa-uninit.c (convert_control_dep_chain_into_preds): Skip
12943         empty blocks.
12944
12945 2018-01-10  Eric Botcazou  <ebotcazou@adacore.com>
12946
12947         * dwarf2out.c (dwarf2out_var_location): Do not pass NULL to fprintf.
12948
12949 2018-01-10  Peter Bergner  <bergner@vnet.ibm.com>
12950
12951         PR target/83399
12952         * config/rs6000/rs6000.c (print_operand) <'y'>: Use
12953         VECTOR_MEM_ALTIVEC_OR_VSX_P.
12954         * config/rs6000/vsx.md (*vsx_le_perm_load_<mode> for VSX_D): Use
12955         indexed_or_indirect_operand predicate.
12956         (*vsx_le_perm_load_<mode> for VSX_W): Likewise.
12957         (*vsx_le_perm_load_v8hi): Likewise.
12958         (*vsx_le_perm_load_v16qi): Likewise.
12959         (*vsx_le_perm_store_<mode> for VSX_D): Likewise.
12960         (*vsx_le_perm_store_<mode> for VSX_W): Likewise.
12961         (*vsx_le_perm_store_v8hi): Likewise.
12962         (*vsx_le_perm_store_v16qi): Likewise.
12963         (eight unnamed splitters): Likewise.
12964
12965 2018-01-10  Peter Bergner  <bergner@vnet.ibm.com>
12966
12967         * config/rs6000/x86intrin.h: Change #warning to #error. Update message.
12968         * config/rs6000/emmintrin.h: Likewise.
12969         * config/rs6000/mmintrin.h: Likewise.
12970         * config/rs6000/xmmintrin.h: Likewise.
12971
12972 2018-01-10  David Malcolm  <dmalcolm@redhat.com>
12973
12974         PR c++/43486
12975         * tree-core.h: Document EXPR_LOCATION_WRAPPER_P's usage of
12976         "public_flag".
12977         * tree.c (tree_nop_conversion): Return true for location wrapper
12978         nodes.
12979         (maybe_wrap_with_location): New function.
12980         (selftest::check_strip_nops): New function.
12981         (selftest::test_location_wrappers): New function.
12982         (selftest::tree_c_tests): Call it.
12983         * tree.h (STRIP_ANY_LOCATION_WRAPPER): New macro.
12984         (maybe_wrap_with_location): New decl.
12985         (EXPR_LOCATION_WRAPPER_P): New macro.
12986         (location_wrapper_p): New inline function.
12987         (tree_strip_any_location_wrapper): New inline function.
12988
12989 2018-01-10  H.J. Lu  <hongjiu.lu@intel.com>
12990
12991         PR target/83735
12992         * config/i386/i386.c (ix86_compute_frame_layout): Always adjust
12993         stack_realign_offset for the largest alignment of stack slot
12994         actually used.
12995         (ix86_find_max_used_stack_alignment): New function.
12996         (ix86_finalize_stack_frame_flags): Use it.  Set
12997         max_used_stack_alignment if we don't realign stack.
12998         * config/i386/i386.h (machine_function): Add
12999         max_used_stack_alignment.
13000
13001 2018-01-10  Christophe Lyon  <christophe.lyon@linaro.org>
13002
13003         * config/arm/arm.opt (-mbranch-cost): New option.
13004         * config/arm/arm.h (BRANCH_COST): Take arm_branch_cost into
13005         account.
13006
13007 2018-01-10  Segher Boessenkool  <segher@kernel.crashing.org>
13008
13009         PR target/83629
13010         * config/rs6000/rs6000.md (load_toc_v4_PIC_2, load_toc_v4_PIC_3b,
13011         load_toc_v4_PIC_3c): Wrap const term in CONST RTL.
13012
13013 2018-01-10  Richard Biener  <rguenther@suse.de>
13014
13015         PR debug/83765
13016         * dwarf2out.c (gen_subprogram_die): Hoist old_die && declaration
13017         early out so it also covers the case where we have a non-NULL
13018         origin.
13019
13020 2018-01-10  Richard Sandiford  <richard.sandiford@linaro.org>
13021
13022         PR tree-optimization/83753
13023         * tree-vect-stmts.c (get_group_load_store_type): Use VMAT_CONTIGUOUS
13024         for non-strided grouped accesses if the number of elements is 1.
13025
13026 2018-01-10  Jan Hubicka  <hubicka@ucw.cz>
13027
13028         PR target/81616
13029         * i386.c (ix86_vectorize_builtin_gather): Check TARGET_USE_GATHER.
13030         * i386.h (TARGET_USE_GATHER): Define.
13031         * x86-tune.def (X86_TUNE_USE_GATHER): New.
13032
13033 2018-01-10  Martin Liska  <mliska@suse.cz>
13034
13035         PR bootstrap/82831
13036         * basic-block.h (CLEANUP_NO_PARTITIONING): New define.
13037         * bb-reorder.c (pass_reorder_blocks::execute): Do not clean up
13038         partitioning.
13039         * cfgcleanup.c (try_optimize_cfg): Fix up partitioning if
13040         CLEANUP_NO_PARTITIONING is not set.
13041
13042 2018-01-10  Richard Sandiford  <richard.sandiford@linaro.org>
13043
13044         * doc/rtl.texi: Remove documentation of (const ...) wrappers
13045         for vectors, as a partial revert of r254296.
13046         * rtl.h (const_vec_p): Delete.
13047         (const_vec_duplicate_p): Don't test for vector CONSTs.
13048         (unwrap_const_vec_duplicate, const_vec_series_p): Likewise.
13049         * expmed.c (make_tree): Likewise.
13050
13051         Revert:
13052         * common.md (E, F): Use CONSTANT_P instead of checking for
13053         CONST_VECTOR.
13054         * emit-rtl.c (gen_lowpart_common): Use const_vec_p instead of
13055         checking for CONST_VECTOR.
13056
13057 2018-01-09  Jan Hubicka  <hubicka@ucw.cz>
13058
13059         PR middle-end/83575
13060         * predict.c (force_edge_cold): Handle in more sane way edges
13061         with no prediction.
13062
13063 2018-01-09  Carl Love  <cel@us.ibm.com>
13064
13065         * config/rs6002/altivec.md (p8_vmrgow): Add support for V2DI, V2DF,
13066         V4SI, V4SF types.
13067         (p8_vmrgew): Add support for V2DI, V2DF, V4SF types.
13068         * config/rs6000/rs6000-builtin.def: Add definitions for FLOAT2_V2DF,
13069         VMRGEW_V2DI, VMRGEW_V2DF, VMRGEW_V4SF, VMRGOW_V4SI, VMRGOW_V4SF,
13070         VMRGOW_V2DI, VMRGOW_V2DF.  Remove definition for VMRGOW.
13071         * config/rs6000/rs6000-c.c (VSX_BUILTIN_VEC_FLOAT2,
13072         P8V_BUILTIN_VEC_VMRGEW, P8V_BUILTIN_VEC_VMRGOW):  Add definitions.
13073         * config/rs6000/rs6000-protos.h: Add extern defition for
13074         rs6000_generate_float2_double_code.
13075         * config/rs6000/rs6000.c (rs6000_generate_float2_double_code): Add
13076         function.
13077         * config/rs6000/vsx.md (vsx_xvcdpsp): Add define_insn.
13078         (float2_v2df): Add define_expand.
13079
13080 2018-01-09  Uros Bizjak  <ubizjak@gmail.com>
13081
13082         PR target/83628
13083         * combine.c (force_int_to_mode) <case ASHIFT>: Use mode instead of
13084         op_mode in the force_to_mode call.
13085
13086 2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
13087
13088         * config/aarch64/aarch64.c (aarch64_evpc_trn): Use d.perm.series_p
13089         instead of checking each element individually.
13090         (aarch64_evpc_uzp): Likewise.
13091         (aarch64_evpc_zip): Likewise.
13092         (aarch64_evpc_ext): Likewise.
13093         (aarch64_evpc_rev): Likewise.
13094         (aarch64_evpc_dup): Test the encoding for a single duplicated element,
13095         instead of checking each element individually.  Return true without
13096         generating rtl if
13097         (aarch64_vectorize_vec_perm_const): Use all_from_input_p to test
13098         whether all selected elements come from the same input, instead of
13099         checking each element individually.  Remove calls to gen_rtx_REG,
13100         start_sequence and end_sequence and instead assert that no rtl is
13101         generated.
13102
13103 2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
13104
13105         * config/aarch64/aarch64.c (aarch64_legitimate_constant_p): Fix
13106         order of HIGH and CONST checks.
13107
13108 2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
13109
13110         * tree-vect-stmts.c (permute_vec_elements): Create a fresh variable
13111         if the destination isn't an SSA_NAME.
13112
13113 2018-01-09  Richard Biener  <rguenther@suse.de>
13114
13115         PR tree-optimization/83668
13116         * graphite.c (canonicalize_loop_closed_ssa): Add edge argument,
13117         move prologue...
13118         (canonicalize_loop_form): ... here, renamed from ...
13119         (canonicalize_loop_closed_ssa_form): ... this and amended to
13120         swap successor edges for loop exit blocks to make us use
13121         the RPO order we need for initial schedule generation.
13122
13123 2018-01-09  Joseph Myers  <joseph@codesourcery.com>
13124
13125         PR tree-optimization/64811
13126         * match.pd: When optimizing comparisons with Inf, avoid
13127         introducing or losing exceptions from comparisons with NaN.
13128
13129 2018-01-09  Martin Liska  <mliska@suse.cz>
13130
13131         PR sanitizer/82517
13132         * asan.c (shadow_mem_size): Add gcc_assert.
13133
13134 2018-01-09  Georg-Johann Lay  <avr@gjlay.de>
13135
13136         Don't save registers in main().
13137
13138         PR target/83738
13139         * doc/invoke.texi (AVR Options) [-mmain-is-OS_task]: Document it.
13140         * config/avr/avr.opt (-mmain-is-OS_task): New target option.
13141         * config/avr/avr.c (avr_set_current_function): Don't error if
13142         naked, OS_task or OS_main are specified at the same time.
13143         (avr_function_ok_for_sibcall): Don't disable sibcalls for OS_task,
13144         OS_main.
13145         (avr_insert_attributes) [-mmain-is-OS_task] <main>: Add OS_task
13146         attribute.
13147         * common/config/avr/avr-common.c (avr_option_optimization_table):
13148         Switch on -mmain-is-OS_task for optimizing compilations.
13149
13150 2018-01-09  Richard Biener  <rguenther@suse.de>
13151
13152         PR tree-optimization/83572
13153         * graphite.c: Include cfganal.h.
13154         (graphite_transform_loops): Connect infinite loops to exit
13155         and remove fake edges at the end.
13156
13157 2018-01-09  Jan Hubicka  <hubicka@ucw.cz>
13158
13159         * ipa-inline.c (edge_badness): Revert accidental checkin.
13160
13161 2018-01-09  Jan Hubicka  <hubicka@ucw.cz>
13162
13163         PR ipa/80763
13164         * ipa-comdats.c (set_comdat_group): Only set comdat group of real
13165         symbols; not inline clones.
13166
13167 2018-01-09  Jakub Jelinek  <jakub@redhat.com>
13168
13169         PR target/83507
13170         * modulo-sched.c (schedule_reg_moves): Punt if we'd need to move
13171         hard registers.  Formatting fixes.
13172
13173         PR preprocessor/83722
13174         * gcc.c (try_generate_repro): Pass
13175         &temp_stderr_files[RETRY_ICE_ATTEMPTS - 1] rather than
13176         &temp_stdout_files[RETRY_ICE_ATTEMPTS - 1] as last argument to
13177         do_report_bug.
13178
13179 2018-01-08  Monk Chiang  <sh.chiang04@gmail.com>
13180             Kito Cheng  <kito.cheng@gmail.com>
13181
13182         * config/riscv/riscv.c (machine_function::is_leaf): Remove field.
13183         (riscv_leaf_function_p): Delete.
13184         (riscv_function_ok_for_sibcall): Return false when TARGET_SAVE_RESTORE.
13185
13186 2018-01-08  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
13187
13188         * config/rs6000/rs6000-string.c (do_load_for_compare_from_addr): New
13189         function.
13190         (do_ifelse): New function.
13191         (do_isel): New function.
13192         (do_sub3): New function.
13193         (do_add3): New function.
13194         (do_load_mask_compare): New function.
13195         (do_overlap_load_compare): New function.
13196         (expand_compare_loop): New function.
13197         (expand_block_compare): Call expand_compare_loop() when appropriate.
13198         * config/rs6000/rs6000.opt (-mblock-compare-inline-limit): Change
13199         option description.
13200         (-mblock-compare-inline-loop-limit): New option.
13201
13202 2018-01-08  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
13203
13204         PR target/83677
13205         * config/rs6000/altivec.md (*altivec_vpermr_<mode>_internal):
13206         Reverse order of second and third operands in first alternative.
13207         * config/rs6000/rs6000.c (rs6000_expand_vector_set): Reverse order
13208         of first and second elements in UNSPEC_VPERMR vector.
13209         (altivec_expand_vec_perm_le): Likewise.
13210
13211 2018-01-08  Jeff Law  <law@redhat.com>
13212
13213         PR rtl-optimizatin/81308
13214         * tree-switch-conversion.c (cfg_altered): New file scoped static.
13215         (process_switch): If group_case_labels makes a change, then set
13216         cfg_altered.
13217         (pass_convert_switch::execute): If a switch is converted, then
13218         set cfg_altered.  Return TODO_cfg_cleanup if cfg_altered is true.
13219
13220         PR rtl-optimization/81308
13221         * recog.c (split_all_insns): Conditionally cleanup the CFG after
13222         splitting insns.
13223
13224 2018-01-08  Vidya Praveen  <vidyapraveen@arm.com>
13225
13226         PR target/83663 - Revert r255946
13227         * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify code
13228         generation for cases where splatting a value is not useful.
13229         * simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge
13230         across a vec_duplicate and a paradoxical subreg forming a vector
13231         mode to a vec_concat.
13232
13233 2018-01-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
13234
13235         * config/arm/t-aprofile (MULTILIB_MATCHES): Add mapping rules for
13236         -march=armv8.3-a variants.
13237         * config/arm/t-multilib: Likewise.
13238         * config/arm/t-arm-elf: Likewise.  Handle dotprod extension.
13239
13240 2018-01-08  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
13241
13242         * config/rs6000/rs6000.md (cceq_ior_compare): Remove * so I can use it
13243         to generate rtl.
13244         (cceq_ior_compare_complement): Give it a name so I can use it, and
13245         change boolean_or_operator predicate to boolean_operator so it can
13246         be used to generate a crand.
13247         (eqne): New code iterator.
13248         (bd/bd_neg): New code_attrs.
13249         (<bd>_<mode>): New name for ctr<mode>_internal[12] now combined into
13250         a single define_insn.
13251         (<bd>tf_<mode>): A new insn pattern for the conditional form branch
13252         decrement (bdnzt/bdnzf/bdzt/bdzf).
13253         * config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Updated
13254         with the new names of the branch decrement patterns, and added the
13255         names of the branch decrement conditional patterns.
13256
13257 2018-01-08  Richard Biener  <rguenther@suse.de>
13258
13259         PR tree-optimization/83563
13260         * graphite.c (canonicalize_loop_closed_ssa_form): Reset the SCEV
13261         cache.
13262
13263 2018-01-08  Richard Biener  <rguenther@suse.de>
13264
13265         PR middle-end/83713
13266         * convert.c (do_narrow): Properly guard TYPE_OVERFLOW_WRAPS checks.
13267
13268 2018-01-08  Richard Biener  <rguenther@suse.de>
13269
13270         PR tree-optimization/83685
13271         * tree-ssa-pre.c (create_expression_by_pieces): Do not insert
13272         references to abnormals.
13273
13274 2018-01-08  Richard Biener  <rguenther@suse.de>
13275
13276         PR lto/83719
13277         * dwarf2out.c (output_indirect_strings): Handle empty
13278         skeleton_debug_str_hash.
13279         (dwarf2out_early_finish): Index strings for -gsplit-dwarf.
13280
13281 2018-01-08  Claudiu Zissulescu  <claziss@synopsys.com>
13282
13283         * config/arc/arc.c (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Delete.
13284         (emit_store_direct): Likewise.
13285         (arc_trampoline_adjust_address): Likewise.
13286         (arc_asm_trampoline_template): New function.
13287         (arc_initialize_trampoline): Use asm_trampoline_template.
13288         (TARGET_ASM_TRAMPOLINE_TEMPLATE): Define.
13289         * config/arc/arc.h (TRAMPOLINE_SIZE): Adjust to 16.
13290         * config/arc/arc.md (flush_icache): Delete pattern.
13291
13292 2018-01-08  Claudiu Zissulescu  <claziss@synopsys.com>
13293
13294         * config/arc/arc-c.def (__ARC_UNALIGNED__): New define.
13295         * config/arc/arc.h (STRICT_ALIGNMENT): Control this macro using
13296         munaligned-access.
13297
13298 2018-01-08  Sebastian Huber  <sebastian.huber@embedded-brains.de>
13299
13300         PR target/83681
13301         * config/epiphany/epiphany.h (make_pass_mode_switch_use): Guard
13302         by not USED_FOR_TARGET.
13303         (make_pass_resolve_sw_modes): Likewise.
13304
13305 2018-01-08  Sebastian Huber  <sebastian.huber@embedded-brains.de>
13306
13307         * config/nios2/nios2.h (nios2_section_threshold): Guard by not
13308         USED_FOR_TARGET.
13309
13310 2018-01-08  Richard Biener  <rguenther@suse.de>
13311
13312         PR middle-end/83580
13313         * tree-data-ref.c (split_constant_offset): Remove STRIP_NOPS.
13314
13315 2018-01-08  Richard Biener  <rguenther@suse.de>
13316
13317         PR middle-end/83517
13318         * match.pd ((t * 2) / 2) -> t): Add missing :c.
13319
13320 2018-01-06  Aldy Hernandez  <aldyh@redhat.com>
13321
13322         PR middle-end/81897
13323         * tree-ssa-uninit.c (compute_control_dep_chain): Do not bail on
13324         basic blocks with a small number of successors.
13325         (convert_control_dep_chain_into_preds): Improve handling of
13326         forwarder blocks.
13327         (dump_predicates): Split apart into...
13328         (dump_pred_chain): ...here...
13329         (dump_pred_info): ...and here.
13330         (can_one_predicate_be_invalidated_p): Add debugging printfs.
13331         (can_chain_union_be_invalidated_p): Improve check for invalidation
13332         of paths.
13333         (uninit_uses_cannot_happen): Avoid unnecessary if
13334         convert_control_dep_chain_into_preds yielded nothing.
13335
13336 2018-01-06  Martin Sebor  <msebor@redhat.com>
13337
13338         PR tree-optimization/83640
13339         * gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Avoid
13340         subtracting negative offset from size.
13341         (builtin_access::overlap): Adjust offset bounds of the access to fall
13342         within the size of the object if possible.
13343
13344 2018-01-06  Richard Sandiford  <richard.sandiford@linaro.org>
13345
13346         PR rtl-optimization/83699
13347         * expmed.c (extract_bit_field_1): Restrict the vector usage of
13348         extract_bit_field_as_subreg to cases in which the extracted
13349         value is also a vector.
13350
13351         * lra-constraints.c (process_alt_operands): Test for the equivalence
13352         substitutions when detecting a possible reload cycle.
13353
13354 2018-01-06  Jakub Jelinek  <jakub@redhat.com>
13355
13356         PR debug/83480
13357         * toplev.c (process_options): Don't enable debug_nonbind_markers_p
13358         by default if flag_selective_schedling{,2}.  Formatting fixes.
13359
13360         PR rtl-optimization/83682
13361         * rtl.h (const_vec_duplicate_p): Only return true for VEC_DUPLICATE
13362         if it has non-VECTOR_MODE element mode.
13363         (vec_duplicate_p): Likewise.
13364
13365         PR middle-end/83694
13366         * cfgexpand.c (expand_debug_expr): Punt if mode1 is VOIDmode
13367         and bitsize might be greater than MAX_BITSIZE_MODE_ANY_INT.
13368
13369 2018-01-05  Jakub Jelinek  <jakub@redhat.com>
13370
13371         PR target/83604
13372         * config/i386/i386-builtin.def
13373         (__builtin_ia32_vgf2p8affineinvqb_v64qi,
13374         __builtin_ia32_vgf2p8affineqb_v64qi, __builtin_ia32_vgf2p8mulb_v64qi):
13375         Require also OPTION_MASK_ISA_AVX512F in addition to
13376         OPTION_MASK_ISA_GFNI.
13377         (__builtin_ia32_vgf2p8affineinvqb_v16qi_mask,
13378         __builtin_ia32_vgf2p8affineqb_v16qi_mask): Require
13379         OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_SSE in addition
13380         to OPTION_MASK_ISA_GFNI.
13381         (__builtin_ia32_vgf2p8mulb_v32qi_mask): Require
13382         OPTION_MASK_ISA_AVX512VL in addition to OPTION_MASK_ISA_GFNI and
13383         OPTION_MASK_ISA_AVX512BW.
13384         (__builtin_ia32_vgf2p8mulb_v16qi_mask): Require
13385         OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_AVX512BW in
13386         addition to OPTION_MASK_ISA_GFNI.
13387         (__builtin_ia32_vgf2p8affineinvqb_v16qi,
13388         __builtin_ia32_vgf2p8affineqb_v16qi, __builtin_ia32_vgf2p8mulb_v16qi):
13389         Require OPTION_MASK_ISA_SSE2 instead of OPTION_MASK_ISA_SSE in addition
13390         to OPTION_MASK_ISA_GFNI.
13391         * config/i386/i386.c (def_builtin): Change to builtin isa/isa2 being
13392         a requirement for all ISAs rather than any of them with a few
13393         exceptions.
13394         (ix86_add_new_builtins): Clear OPTION_MASK_ISA_64BIT from isa before
13395         processing.
13396         (ix86_expand_builtin): Require all ISAs from builtin's isa and isa2
13397         bitmasks to be enabled with 3 exceptions, instead of requiring any
13398         enabled ISA with lots of exceptions.
13399         * config/i386/sse.md (vgf2p8affineinvqb_<mode><mask_name>,
13400         vgf2p8affineqb_<mode><mask_name>, vgf2p8mulb_<mode><mask_name>):
13401         Change avx512bw in isa attribute to avx512f.
13402         * config/i386/sgxintrin.h: Add license boilerplate.
13403         * config/i386/vaesintrin.h: Likewise.  Fix macro spelling __AVX512F
13404         to __AVX512F__ and __AVX512VL to __AVX512VL__.
13405         (_mm256_aesdec_epi128, _mm256_aesdeclast_epi128, _mm256_aesenc_epi128,
13406         _mm256_aesenclast_epi128): Enable temporarily avx if __AVX__ is not
13407         defined.
13408         * config/i386/gfniintrin.h (_mm_gf2p8mul_epi8,
13409         _mm_gf2p8affineinv_epi64_epi8, _mm_gf2p8affine_epi64_epi8): Enable
13410         temporarily sse2 rather than sse if not enabled already.
13411
13412         PR target/83604
13413         * config/i386/sse.md (VI248_VLBW): Rename to ...
13414         (VI248_AVX512VL): ... this.  Don't guard V32HI with TARGET_AVX512BW.
13415         (vpshrd_<mode><mask_name>, vpshld_<mode><mask_name>,
13416         vpshrdv_<mode>, vpshrdv_<mode>_mask, vpshrdv_<mode>_maskz,
13417         vpshrdv_<mode>_maskz_1, vpshldv_<mode>, vpshldv_<mode>_mask,
13418         vpshldv_<mode>_maskz, vpshldv_<mode>_maskz_1): Use VI248_AVX512VL
13419         mode iterator instead of VI248_VLBW.
13420
13421 2018-01-05  Jan Hubicka  <hubicka@ucw.cz>
13422
13423         * ipa-fnsummary.c (record_modified_bb_info): Add OP.
13424         (record_modified): Skip clobbers; add debug output.
13425         (param_change_prob): Use sreal frequencies.
13426
13427 2018-01-05  Richard Sandiford  <richard.sandiford@linaro.org>
13428
13429         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Don't
13430         punt for user-aligned variables.
13431
13432 2018-01-05  Richard Sandiford  <richard.sandiford@linaro.org>
13433
13434         * tree-chrec.c (chrec_contains_symbols): Return true for
13435         POLY_INT_CST.
13436
13437 2018-01-05  Sudakshina Das  <sudi.das@arm.com>
13438
13439         PR target/82439
13440         * simplify-rtx.c (simplify_relational_operation_1): Add simplifications
13441         of (x|y) == x for BICS pattern.
13442
13443 2018-01-05  Jakub Jelinek  <jakub@redhat.com>
13444
13445         PR tree-optimization/83605
13446         * gimple-ssa-strength-reduction.c: Include tree-eh.h.
13447         (find_candidates_dom_walker::before_dom_children): Ignore stmts that
13448         can throw.
13449
13450 2018-01-05  Sebastian Huber  <sebastian.huber@embedded-brains.de>
13451
13452         * config.gcc (epiphany-*-elf*): Add (epiphany-*-rtems*) configuration.
13453         * config/epiphany/rtems.h: New file.
13454
13455 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
13456             Uros Bizjak  <ubizjak@gmail.com>
13457
13458         PR target/83554
13459         * config/i386/i386.md (*<rotate_insn>hi3_1 splitter): Use
13460         QIreg_operand instead of register_operand predicate.
13461         * config/i386/i386.c (ix86_rop_should_change_byte_p,
13462         set_rop_modrm_reg_bits, ix86_mitigate_rop): Use -mmitigate-rop in
13463         comments instead of -fmitigate[-_]rop.
13464
13465 2018-01-04  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
13466
13467         PR bootstrap/81926
13468         * cgraphunit.c (symbol_table::compile): Switch to text_section
13469         before calling assembly_start debug hook.
13470         * run-rtl-passes.c (run_rtl_passes): Likewise.
13471         Include output.h.
13472
13473 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
13474
13475         * tree-vrp.c (extract_range_from_binary_expr_1): Check
13476         range_int_cst_p rather than !symbolic_range_p before calling
13477         extract_range_from_multiplicative_op_1.
13478
13479 2018-01-04  Jeff Law  <law@redhat.com>
13480
13481         * tree-ssa-math-opts.c (execute_cse_reciprocals_1): Remove
13482         redundant test in assertion.
13483
13484 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
13485
13486         * doc/rtl.texi: Document machine_mode wrapper classes.
13487
13488 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
13489
13490         * fold-const.c (fold_ternary_loc): Check tree_fits_uhwi_p before
13491         using tree_to_uhwi.
13492
13493 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
13494
13495         * tree-ssa-forwprop.c (is_combined_permutation_identity): Allow
13496         the VEC_PERM_EXPR fold to fail.
13497
13498 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
13499
13500         PR debug/83585
13501         * bb-reorder.c (insert_section_boundary_note): Set has_bb_partition
13502         to switched_sections.
13503
13504 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
13505
13506         PR target/83680
13507         * config/arm/arm.c (arm_vectorize_vec_perm_const): Fix inverted
13508         test for d.testing.
13509
13510 2018-01-04  Peter Bergner  <bergner@vnet.ibm.com>
13511
13512         PR target/83387
13513         * config/rs6000/rs6000.c (rs6000_discover_homogeneous_aggregate): Do not
13514         allow arguments in FP registers if TARGET_HARD_FLOAT is false.
13515
13516 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
13517
13518         PR debug/83666
13519         * cfgexpand.c (expand_debug_expr) <case BIT_FIELD_REF>: Punt if mode
13520         is BLKmode and bitpos not zero or mode change is needed.
13521
13522 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
13523
13524         PR target/83675
13525         * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): Require
13526         TARGET_VIS2.
13527
13528 2018-01-04  Uros Bizjak  <ubizjak@gmail.com>
13529
13530         PR target/83628
13531         * config/alpha/alpha.md (*sadd<modesuffix>): Use ASHIFT
13532         instead of MULT rtx.  Update all corresponding splitters.
13533         (*saddl_se): Ditto.
13534         (*ssub<modesuffix>): Ditto.
13535         (*ssubl_se): Ditto.
13536         (*cmp_sadd_di): Update split patterns.
13537         (*cmp_sadd_si): Ditto.
13538         (*cmp_sadd_sidi): Ditto.
13539         (*cmp_ssub_di): Ditto.
13540         (*cmp_ssub_si): Ditto.
13541         (*cmp_ssub_sidi): Ditto.
13542         * config/alpha/predicates.md (const23_operand): New predicate.
13543         * config/alpha/alpha.c (alpha_rtx_costs) [PLUS, MINUS]:
13544         Look for ASHIFT, not MULT inner operand.
13545         (alpha_split_conditional_move): Update for *sadd<modesuffix> change.
13546
13547 2018-01-04  Martin Liska  <mliska@suse.cz>
13548
13549         PR gcov-profile/83669
13550         * gcov.c (output_intermediate_file): Add version to intermediate
13551         gcov file.
13552         * doc/gcov.texi: Document new field 'version' in intermediate
13553         file format. Fix location of '-k' option of gcov command.
13554
13555 2018-01-04  Martin Liska  <mliska@suse.cz>
13556
13557         PR ipa/82352
13558         * ipa-icf.c (sem_function::merge): Do not cross comdat boundary.
13559
13560 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
13561
13562         * gimple-ssa-sprintf.c (parse_directive): Cast second dir.len to uhwi.
13563
13564 2018-01-03  Martin Sebor  <msebor@redhat.com>
13565
13566         PR tree-optimization/83655
13567         * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call): Avoid
13568         checking calls with invalid arguments.
13569
13570 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13571
13572         * tree-vect-stmts.c (vect_get_store_rhs): New function.
13573         (vectorizable_mask_load_store): Delete.
13574         (vectorizable_call): Return false for masked loads and stores.
13575         (vectorizable_store): Handle IFN_MASK_STORE.  Use vect_get_store_rhs
13576         instead of gimple_assign_rhs1.
13577         (vectorizable_load): Handle IFN_MASK_LOAD.
13578         (vect_transform_stmt): Don't set is_store for call_vec_info_type.
13579
13580 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13581
13582         * tree-vect-stmts.c (vect_build_gather_load_calls): New function,
13583         split out from..,
13584         (vectorizable_mask_load_store): ...here.
13585         (vectorizable_load): ...and here.
13586
13587 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13588
13589         * tree-vect-stmts.c (vect_build_all_ones_mask)
13590         (vect_build_zero_merge_argument): New functions, split out from...
13591         (vectorizable_load): ...here.
13592
13593 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13594
13595         * tree-vect-stmts.c (vect_check_store_rhs): New function,
13596         split out from...
13597         (vectorizable_mask_load_store): ...here.
13598         (vectorizable_store): ...and here.
13599
13600 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13601
13602         * tree-vect-stmts.c (vect_check_load_store_mask): New function,
13603         split out from...
13604         (vectorizable_mask_load_store): ...here.
13605
13606 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13607
13608         * tree-vectorizer.h (vec_load_store_type): Moved from tree-vec-stmts.c
13609         (vect_model_store_cost): Take a vec_load_store_type instead of a
13610         vect_def_type.
13611         * tree-vect-stmts.c (vec_load_store_type): Move to tree-vectorizer.h.
13612         (vect_model_store_cost): Take a vec_load_store_type instead of a
13613         vect_def_type.
13614         (vectorizable_mask_load_store): Update accordingly.
13615         (vectorizable_store): Likewise.
13616         * tree-vect-slp.c (vect_analyze_slp_cost_1): Update accordingly.
13617
13618 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13619
13620         * tree-vect-loop.c (vect_transform_loop): Stub out scalar
13621         IFN_MASK_LOAD calls here rather than...
13622         * tree-vect-stmts.c (vectorizable_mask_load_store): ...here.
13623
13624 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13625             Alan Hayward  <alan.hayward@arm.com>
13626             David Sherwood  <david.sherwood@arm.com>
13627
13628         * expmed.c (extract_bit_field_1): For vector extracts,
13629         fall back to extract_bit_field_as_subreg if vec_extract
13630         isn't available.
13631
13632 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13633             Alan Hayward  <alan.hayward@arm.com>
13634             David Sherwood  <david.sherwood@arm.com>
13635
13636         * lra-spills.c (pseudo_reg_slot_compare): Sort slots by whether
13637         they are variable or constant sized.
13638         (assign_stack_slot_num_and_sort_pseudos): Don't reuse variable-sized
13639         slots for constant-sized data.
13640
13641 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13642             Alan Hayward  <alan.hayward@arm.com>
13643             David Sherwood  <david.sherwood@arm.com>
13644
13645         * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): When
13646         handling COND_EXPRs with boolean comparisons, try to find a better
13647         basis for the mask type than the boolean itself.
13648
13649 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13650
13651         * doc/rtl.texi (MAX_BITSIZE_MODE_ANY_MODE): Describe how the default
13652         is calculated and how it can be overridden.
13653         * genmodes.c (max_bitsize_mode_any_mode): New variable.
13654         (create_modes): Initialize it from MAX_BITSIZE_MODE_ANY_MODE,
13655         if defined.
13656         (emit_max_int): Use it to set the output MAX_BITSIZE_MODE_ANY_MODE,
13657         if nonzero.
13658
13659 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13660             Alan Hayward  <alan.hayward@arm.com>
13661             David Sherwood  <david.sherwood@arm.com>
13662
13663         * config/aarch64/aarch64-protos.h (aarch64_output_simd_mov_immediate):
13664         Remove the mode argument.
13665         (aarch64_simd_valid_immediate): Remove the mode and inverse
13666         arguments.
13667         * config/aarch64/iterators.md (bitsize): New iterator.
13668         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>, and<mode>3)
13669         (ior<mode>3): Update calls to aarch64_output_simd_mov_immediate.
13670         * config/aarch64/constraints.md (Do, Db, Dn): Update calls to
13671         aarch64_simd_valid_immediate.
13672         * config/aarch64/predicates.md (aarch64_reg_or_orr_imm): Likewise.
13673         (aarch64_reg_or_bic_imm): Likewise.
13674         * config/aarch64/aarch64.c (simd_immediate_info): Replace mvn
13675         with an insn_type enum and msl with a modifier_type enum.
13676         Replace element_width with a scalar_mode.  Change the shift
13677         to unsigned int.  Add constructors for scalar_float_mode and
13678         scalar_int_mode elements.
13679         (aarch64_vect_float_const_representable_p): Delete.
13680         (aarch64_can_const_movi_rtx_p)
13681         (aarch64_simd_scalar_immediate_valid_for_move)
13682         (aarch64_simd_make_constant): Update call to
13683         aarch64_simd_valid_immediate.
13684         (aarch64_advsimd_valid_immediate_hs): New function.
13685         (aarch64_advsimd_valid_immediate): Likewise.
13686         (aarch64_simd_valid_immediate): Remove mode and inverse
13687         arguments.  Rewrite to use the above.  Use const_vec_duplicate_p
13688         to detect duplicated constants and use aarch64_float_const_zero_rtx_p
13689         and aarch64_float_const_representable_p on the result.
13690         (aarch64_output_simd_mov_immediate): Remove mode argument.
13691         Update call to aarch64_simd_valid_immediate and use of
13692         simd_immediate_info.
13693         (aarch64_output_scalar_simd_mov_immediate): Update call
13694         accordingly.
13695
13696 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13697             Alan Hayward  <alan.hayward@arm.com>
13698             David Sherwood  <david.sherwood@arm.com>
13699
13700         * machmode.h (mode_precision): Prefix with CONST_MODE_PRECISION.
13701         (mode_nunits): Likewise CONST_MODE_NUNITS.
13702         * machmode.def (ADJUST_NUNITS): Document.
13703         * genmodes.c (mode_data::need_nunits_adj): New field.
13704         (blank_mode): Update accordingly.
13705         (adj_nunits): New variable.
13706         (print_maybe_const_decl): Replace CATEGORY with a NEEDS_ADJ
13707         parameter.
13708         (emit_mode_size_inline): Set need_bytesize_adj for all modes
13709         listed in adj_nunits.
13710         (emit_mode_nunits_inline): Set need_nunits_adj for all modes
13711         listed in adj_nunits.  Don't emit case statements for such modes.
13712         (emit_insn_modes_h): Emit definitions of CONST_MODE_NUNITS
13713         and CONST_MODE_PRECISION.  Make CONST_MODE_SIZE expand to
13714         nothing if adj_nunits is nonnull.
13715         (emit_mode_precision, emit_mode_nunits): Use print_maybe_const_decl.
13716         (emit_mode_unit_size, emit_mode_base_align, emit_mode_ibit)
13717         (emit_mode_fbit): Update use of print_maybe_const_decl.
13718         (emit_move_size): Likewise.  Treat the array as non-const
13719         if adj_nunits.
13720         (emit_mode_adjustments): Handle adj_nunits.
13721
13722 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13723
13724         * machmode.def (VECTOR_MODES_WITH_PREFIX): Document.
13725         * genmodes.c (VECTOR_MODES_WITH_PREFIX): New macro.
13726         (VECTOR_MODES): Use it.
13727         (make_vector_modes): Take the prefix as an argument.
13728
13729 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13730             Alan Hayward  <alan.hayward@arm.com>
13731             David Sherwood  <david.sherwood@arm.com>
13732
13733         * mode-classes.def (MODE_VECTOR_BOOL): New mode class.
13734         * machmode.h (INTEGRAL_MODE_P, VECTOR_MODE_P): Return true
13735         for MODE_VECTOR_BOOL.
13736         * machmode.def (VECTOR_BOOL_MODE): Document.
13737         * genmodes.c (VECTOR_BOOL_MODE): New macro.
13738         (make_vector_bool_mode): New function.
13739         (complete_mode, emit_mode_wider, emit_mode_adjustments): Handle
13740         MODE_VECTOR_BOOL.
13741         * lto-streamer-in.c (lto_input_mode_table): Likewise.
13742         * rtx-vector-builder.c (rtx_vector_builder::find_cached_value):
13743         Likewise.
13744         * stor-layout.c (int_mode_for_mode): Likewise.
13745         * tree.c (build_vector_type_for_mode): Likewise.
13746         * varasm.c (output_constant_pool_2): Likewise.
13747         * emit-rtl.c (init_emit_once): Make sure that CONST1_RTX (BImode) and
13748         CONSTM1_RTX (BImode) are the same thing.  Initialize const_tiny_rtx
13749         for MODE_VECTOR_BOOL.
13750         * expr.c (expand_expr_real_1): Use VECTOR_MODE_P instead of a list
13751         of mode class checks.
13752         * tree-vect-generic.c (expand_vector_operation): Use VECTOR_MODE_P
13753         instead of a list of mode class checks.
13754         (expand_vector_scalar_condition): Likewise.
13755         (type_for_widest_vector_mode): Handle BImode as an inner mode.
13756
13757 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13758             Alan Hayward  <alan.hayward@arm.com>
13759             David Sherwood  <david.sherwood@arm.com>
13760
13761         * machmode.h (mode_size): Change from unsigned short to
13762         poly_uint16_pod.
13763         (mode_to_bytes): Return a poly_uint16 rather than an unsigned short.
13764         (GET_MODE_SIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
13765         or if measurement_type is not polynomial.
13766         (fixed_size_mode::includes_p): Check for constant-sized modes.
13767         * genmodes.c (emit_mode_size_inline): Make mode_size_inline
13768         return a poly_uint16 rather than an unsigned short.
13769         (emit_mode_size): Change the type of mode_size from unsigned short
13770         to poly_uint16_pod.  Use ZERO_COEFFS for the initializer.
13771         (emit_mode_adjustments): Cope with polynomial vector sizes.
13772         * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
13773         for GET_MODE_SIZE.
13774         * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
13775         for GET_MODE_SIZE.
13776         * auto-inc-dec.c (try_merge): Treat GET_MODE_SIZE as polynomial.
13777         * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Likewise.
13778         * caller-save.c (setup_save_areas): Likewise.
13779         (replace_reg_with_saved_mem): Likewise.
13780         * calls.c (emit_library_call_value_1): Likewise.
13781         * combine-stack-adj.c (combine_stack_adjustments_for_block): Likewise.
13782         * combine.c (simplify_set, make_extraction, simplify_shift_const_1)
13783         (gen_lowpart_for_combine): Likewise.
13784         * convert.c (convert_to_integer_1): Likewise.
13785         * cse.c (equiv_constant, cse_insn): Likewise.
13786         * cselib.c (autoinc_split, cselib_hash_rtx): Likewise.
13787         (cselib_subst_to_values): Likewise.
13788         * dce.c (word_dce_process_block): Likewise.
13789         * df-problems.c (df_word_lr_mark_ref): Likewise.
13790         * dwarf2cfi.c (init_one_dwarf_reg_size): Likewise.
13791         * dwarf2out.c (multiple_reg_loc_descriptor, mem_loc_descriptor)
13792         (concat_loc_descriptor, concatn_loc_descriptor, loc_descriptor)
13793         (rtl_for_decl_location): Likewise.
13794         * emit-rtl.c (gen_highpart, widen_memory_access): Likewise.
13795         * expmed.c (extract_bit_field_1, extract_integral_bit_field): Likewise.
13796         * expr.c (emit_group_load_1, clear_storage_hints): Likewise.
13797         (emit_move_complex, emit_move_multi_word, emit_push_insn): Likewise.
13798         (expand_expr_real_1): Likewise.
13799         * function.c (assign_parm_setup_block_p, assign_parm_setup_block)
13800         (pad_below): Likewise.
13801         * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
13802         * gimple-ssa-store-merging.c (rhs_valid_for_store_merging_p): Likewise.
13803         * ira.c (get_subreg_tracking_sizes): Likewise.
13804         * ira-build.c (ira_create_allocno_objects): Likewise.
13805         * ira-color.c (coalesced_pseudo_reg_slot_compare): Likewise.
13806         (ira_sort_regnos_for_alter_reg): Likewise.
13807         * ira-costs.c (record_operand_costs): Likewise.
13808         * lower-subreg.c (interesting_mode_p, simplify_gen_subreg_concatn)
13809         (resolve_simple_move): Likewise.
13810         * lra-constraints.c (get_reload_reg, operands_match_p): Likewise.
13811         (process_addr_reg, simplify_operand_subreg, curr_insn_transform)
13812         (lra_constraints): Likewise.
13813         (CONST_POOL_OK_P): Reject variable-sized modes.
13814         * lra-spills.c (slot, assign_mem_slot, pseudo_reg_slot_compare)
13815         (add_pseudo_to_slot, lra_spill): Likewise.
13816         * omp-low.c (omp_clause_aligned_alignment): Likewise.
13817         * optabs-query.c (get_best_extraction_insn): Likewise.
13818         * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
13819         * optabs.c (expand_vec_perm_var, expand_vec_cond_expr): Likewise.
13820         (expand_mult_highpart, valid_multiword_target_p): Likewise.
13821         * recog.c (offsettable_address_addr_space_p): Likewise.
13822         * regcprop.c (maybe_mode_change): Likewise.
13823         * reginfo.c (choose_hard_reg_mode, record_subregs_of_mode): Likewise.
13824         * regrename.c (build_def_use): Likewise.
13825         * regstat.c (dump_reg_info): Likewise.
13826         * reload.c (complex_word_subreg_p, push_reload, find_dummy_reload)
13827         (find_reloads, find_reloads_subreg_address): Likewise.
13828         * reload1.c (eliminate_regs_1): Likewise.
13829         * rtlanal.c (for_each_inc_dec_find_inc_dec, rtx_cost): Likewise.
13830         * simplify-rtx.c (avoid_constant_pool_reference): Likewise.
13831         (simplify_binary_operation_1, simplify_subreg): Likewise.
13832         * targhooks.c (default_function_arg_padding): Likewise.
13833         (default_hard_regno_nregs, default_class_max_nregs): Likewise.
13834         * tree-cfg.c (verify_gimple_assign_binary): Likewise.
13835         (verify_gimple_assign_ternary): Likewise.
13836         * tree-inline.c (estimate_move_cost): Likewise.
13837         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
13838         * tree-ssa-loop-ivopts.c (add_autoinc_candidates): Likewise.
13839         (get_address_cost_ainc): Likewise.
13840         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
13841         (vect_supportable_dr_alignment): Likewise.
13842         * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
13843         (vectorizable_reduction): Likewise.
13844         * tree-vect-stmts.c (vectorizable_assignment, vectorizable_shift)
13845         (vectorizable_operation, vectorizable_load): Likewise.
13846         * tree.c (build_same_sized_truth_vector_type): Likewise.
13847         * valtrack.c (cleanup_auto_inc_dec): Likewise.
13848         * var-tracking.c (emit_note_insn_var_location): Likewise.
13849         * config/arc/arc.h (ASM_OUTPUT_CASE_END): Use as_a <scalar_int_mode>.
13850         (ADDR_VEC_ALIGN): Likewise.
13851
13852 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13853             Alan Hayward  <alan.hayward@arm.com>
13854             David Sherwood  <david.sherwood@arm.com>
13855
13856         * machmode.h (mode_to_bits): Return a poly_uint16 rather than an
13857         unsigned short.
13858         (GET_MODE_BITSIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
13859         or if measurement_type is polynomial.
13860         * calls.c (shift_return_value): Treat GET_MODE_BITSIZE as polynomial.
13861         * combine.c (make_extraction): Likewise.
13862         * dse.c (find_shift_sequence): Likewise.
13863         * dwarf2out.c (mem_loc_descriptor): Likewise.
13864         * expmed.c (store_integral_bit_field, extract_bit_field_1): Likewise.
13865         (extract_bit_field, extract_low_bits): Likewise.
13866         * expr.c (convert_move, convert_modes, emit_move_insn_1): Likewise.
13867         (optimize_bitfield_assignment_op, expand_assignment): Likewise.
13868         (store_expr_with_bounds, store_field, expand_expr_real_1): Likewise.
13869         * fold-const.c (optimize_bit_field_compare, merge_ranges): Likewise.
13870         * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
13871         * reload.c (find_reloads): Likewise.
13872         * reload1.c (alter_reg): Likewise.
13873         * stor-layout.c (bitwise_mode_for_mode, compute_record_mode): Likewise.
13874         * targhooks.c (default_secondary_memory_needed_mode): Likewise.
13875         * tree-if-conv.c (predicate_mem_writes): Likewise.
13876         * tree-ssa-strlen.c (handle_builtin_memcmp): Likewise.
13877         * tree-vect-patterns.c (adjust_bool_pattern): Likewise.
13878         * tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise.
13879         * valtrack.c (dead_debug_insert_temp): Likewise.
13880         * varasm.c (mergeable_constant_section): Likewise.
13881         * config/sh/sh.h (LOCAL_ALIGNMENT): Use as_a <fixed_size_mode>.
13882
13883 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13884             Alan Hayward  <alan.hayward@arm.com>
13885             David Sherwood  <david.sherwood@arm.com>
13886
13887         * expr.c (expand_assignment): Cope with polynomial mode sizes
13888         when assigning to a CONCAT.
13889
13890 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13891             Alan Hayward  <alan.hayward@arm.com>
13892             David Sherwood  <david.sherwood@arm.com>
13893
13894         * machmode.h (mode_precision): Change from unsigned short to
13895         poly_uint16_pod.
13896         (mode_to_precision): Return a poly_uint16 rather than an unsigned
13897         short.
13898         (GET_MODE_PRECISION): Return a constant if ONLY_FIXED_SIZE_MODES,
13899         or if measurement_type is not polynomial.
13900         (HWI_COMPUTABLE_MODE_P): Turn into a function.  Optimize the case
13901         in which the mode is already known to be a scalar_int_mode.
13902         * genmodes.c (emit_mode_precision): Change the type of mode_precision
13903         from unsigned short to poly_uint16_pod.  Use ZERO_COEFFS for the
13904         initializer.
13905         * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
13906         for GET_MODE_PRECISION.
13907         * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
13908         for GET_MODE_PRECISION.
13909         * combine.c (update_rsp_from_reg_equal): Treat GET_MODE_PRECISION
13910         as polynomial.
13911         (try_combine, find_split_point, combine_simplify_rtx): Likewise.
13912         (expand_field_assignment, make_extraction): Likewise.
13913         (make_compound_operation_int, record_dead_and_set_regs_1): Likewise.
13914         (get_last_value): Likewise.
13915         * convert.c (convert_to_integer_1): Likewise.
13916         * cse.c (cse_insn): Likewise.
13917         * expr.c (expand_expr_real_1): Likewise.
13918         * lra-constraints.c (simplify_operand_subreg): Likewise.
13919         * optabs-query.c (can_atomic_load_p): Likewise.
13920         * optabs.c (expand_atomic_load): Likewise.
13921         (expand_atomic_store): Likewise.
13922         * ree.c (combine_reaching_defs): Likewise.
13923         * rtl.h (partial_subreg_p, paradoxical_subreg_p): Likewise.
13924         * rtlanal.c (nonzero_bits1, lsb_bitfield_op_p): Likewise.
13925         * tree.h (type_has_mode_precision_p): Likewise.
13926         * ubsan.c (instrument_si_overflow): Likewise.
13927
13928 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
13929             Alan Hayward  <alan.hayward@arm.com>
13930             David Sherwood  <david.sherwood@arm.com>
13931
13932         * tree.h (TYPE_VECTOR_SUBPARTS): Turn into a function and handle
13933         polynomial numbers of units.
13934         (SET_TYPE_VECTOR_SUBPARTS): Likewise.
13935         (valid_vector_subparts_p): New function.
13936         (build_vector_type): Remove temporary shim and take the number
13937         of units as a poly_uint64 rather than an int.
13938         (build_opaque_vector_type): Take the number of units as a
13939         poly_uint64 rather than an int.
13940         * tree.c (build_vector_from_ctor): Handle polynomial
13941         TYPE_VECTOR_SUBPARTS.
13942         (type_hash_canon_hash, type_cache_hasher::equal): Likewise.
13943         (uniform_vector_p, vector_type_mode, build_vector): Likewise.
13944         (build_vector_from_val): If the number of units is variable,
13945         use build_vec_duplicate_cst for constant operands and
13946         VEC_DUPLICATE_EXPR otherwise.
13947         (make_vector_type): Remove temporary is_constant ().
13948         (build_vector_type, build_opaque_vector_type): Take the number of
13949         units as a poly_uint64 rather than an int.
13950         (check_vector_cst): Handle polynomial TYPE_VECTOR_SUBPARTS and
13951         VECTOR_CST_NELTS.
13952         * cfgexpand.c (expand_debug_expr): Likewise.
13953         * expr.c (count_type_elements, categorize_ctor_elements_1): Likewise.
13954         (store_constructor, expand_expr_real_1): Likewise.
13955         (const_scalar_mask_from_tree): Likewise.
13956         * fold-const-call.c (fold_const_reduction): Likewise.
13957         * fold-const.c (const_binop, const_unop, fold_convert_const): Likewise.
13958         (operand_equal_p, fold_vec_perm, fold_ternary_loc): Likewise.
13959         (native_encode_vector, vec_cst_ctor_to_array): Likewise.
13960         (fold_relational_const): Likewise.
13961         (native_interpret_vector): Likewise.  Change the size from an
13962         int to an unsigned int.
13963         * gimple-fold.c (gimple_fold_stmt_to_constant_1): Handle polynomial
13964         TYPE_VECTOR_SUBPARTS.
13965         (gimple_fold_indirect_ref, gimple_build_vector): Likewise.
13966         (gimple_build_vector_from_val): Use VEC_DUPLICATE_EXPR when
13967         duplicating a non-constant operand into a variable-length vector.
13968         * hsa-brig.c (hsa_op_immed::emit_to_buffer): Handle polynomial
13969         TYPE_VECTOR_SUBPARTS and VECTOR_CST_NELTS.
13970         * ipa-icf.c (sem_variable::equals): Likewise.
13971         * match.pd: Likewise.
13972         * omp-simd-clone.c (simd_clone_subparts): Likewise.
13973         * print-tree.c (print_node): Likewise.
13974         * stor-layout.c (layout_type): Likewise.
13975         * targhooks.c (default_builtin_vectorization_cost): Likewise.
13976         * tree-cfg.c (verify_gimple_comparison): Likewise.
13977         (verify_gimple_assign_binary): Likewise.
13978         (verify_gimple_assign_ternary): Likewise.
13979         (verify_gimple_assign_single): Likewise.
13980         * tree-pretty-print.c (dump_generic_node): Likewise.
13981         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
13982         (simplify_bitfield_ref, is_combined_permutation_identity): Likewise.
13983         * tree-vect-data-refs.c (vect_permute_store_chain): Likewise.
13984         (vect_grouped_load_supported, vect_permute_load_chain): Likewise.
13985         (vect_shift_permute_load_chain): Likewise.
13986         * tree-vect-generic.c (nunits_for_known_piecewise_op): Likewise.
13987         (expand_vector_condition, optimize_vector_constructor): Likewise.
13988         (lower_vec_perm, get_compute_type): Likewise.
13989         * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
13990         (get_initial_defs_for_reduction, vect_transform_loop): Likewise.
13991         * tree-vect-patterns.c (vect_recog_bool_pattern): Likewise.
13992         (vect_recog_mask_conversion_pattern): Likewise.
13993         * tree-vect-slp.c (vect_supported_load_permutation_p): Likewise.
13994         (vect_get_constant_vectors, vect_transform_slp_perm_load): Likewise.
13995         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
13996         (get_group_load_store_type, vectorizable_mask_load_store): Likewise.
13997         (vectorizable_bswap, simd_clone_subparts, vectorizable_assignment)
13998         (vectorizable_shift, vectorizable_operation, vectorizable_store)
13999         (vectorizable_load, vect_is_simple_cond, vectorizable_comparison)
14000         (supportable_widening_operation): Likewise.
14001         (supportable_narrowing_operation): Likewise.
14002         * tree-vector-builder.c (tree_vector_builder::binary_encoded_nelts):
14003         Likewise.
14004         * varasm.c (output_constant): Likewise.
14005
14006 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14007             Alan Hayward  <alan.hayward@arm.com>
14008             David Sherwood  <david.sherwood@arm.com>
14009
14010         * tree-vect-data-refs.c (vect_permute_store_chain): Reorganize
14011         so that both the length == 3 and length != 3 cases set up their
14012         own permute vectors.  Add comments explaining why we know the
14013         number of elements is constant.
14014         (vect_permute_load_chain): Likewise.
14015
14016 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14017             Alan Hayward  <alan.hayward@arm.com>
14018             David Sherwood  <david.sherwood@arm.com>
14019
14020         * machmode.h (mode_nunits): Change from unsigned char to
14021         poly_uint16_pod.
14022         (ONLY_FIXED_SIZE_MODES): New macro.
14023         (pod_mode::measurement_type, scalar_int_mode::measurement_type)
14024         (scalar_float_mode::measurement_type, scalar_mode::measurement_type)
14025         (complex_mode::measurement_type, fixed_size_mode::measurement_type):
14026         New typedefs.
14027         (mode_to_nunits): Return a poly_uint16 rather than an unsigned short.
14028         (GET_MODE_NUNITS): Return a constant if ONLY_FIXED_SIZE_MODES,
14029         or if measurement_type is not polynomial.
14030         * genmodes.c (ZERO_COEFFS): New macro.
14031         (emit_mode_nunits_inline): Make mode_nunits_inline return a
14032         poly_uint16.
14033         (emit_mode_nunits): Change the type of mode_nunits to poly_uint16_pod.
14034         Use ZERO_COEFFS when emitting initializers.
14035         * data-streamer.h (bp_pack_poly_value): New function.
14036         (bp_unpack_poly_value): Likewise.
14037         * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
14038         for GET_MODE_NUNITS.
14039         * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
14040         for GET_MODE_NUNITS.
14041         * tree.c (make_vector_type): Remove temporary shim and make
14042         the real function take the number of units as a poly_uint64
14043         rather than an int.
14044         (build_vector_type_for_mode): Handle polynomial nunits.
14045         * dwarf2out.c (loc_descriptor, add_const_value_attribute): Likewise.
14046         * emit-rtl.c (const_vec_series_p_1): Likewise.
14047         (gen_rtx_CONST_VECTOR): Likewise.
14048         * fold-const.c (test_vec_duplicate_folding): Likewise.
14049         * genrecog.c (validate_pattern): Likewise.
14050         * optabs-query.c (can_vec_perm_var_p, can_mult_highpart_p): Likewise.
14051         * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
14052         * optabs.c (expand_vector_broadcast, expand_binop_directly): Likewise.
14053         (shift_amt_for_vec_perm_mask, expand_vec_perm_var): Likewise.
14054         (expand_vec_cond_expr, expand_mult_highpart): Likewise.
14055         * rtlanal.c (subreg_get_info): Likewise.
14056         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
14057         (vect_grouped_load_supported): Likewise.
14058         * tree-vect-generic.c (type_for_widest_vector_mode): Likewise.
14059         * tree-vect-loop.c (have_whole_vector_shift): Likewise.
14060         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
14061         (simplify_const_unary_operation, simplify_binary_operation_1)
14062         (simplify_const_binary_operation, simplify_ternary_operation)
14063         (test_vector_ops_duplicate, test_vector_ops): Likewise.
14064         (simplify_immed_subreg): Use GET_MODE_NUNITS on a fixed_size_mode
14065         instead of CONST_VECTOR_NUNITS.
14066         * varasm.c (output_constant_pool_2): Likewise.
14067         * rtx-vector-builder.c (rtx_vector_builder::build): Only include the
14068         explicit-encoded elements in the XVEC for variable-length vectors.
14069
14070 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14071
14072         * lra-constraints.c (curr_insn_transform): Use partial_subreg_p.
14073
14074 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14075             Alan Hayward  <alan.hayward@arm.com>
14076             David Sherwood  <david.sherwood@arm.com>
14077
14078         * coretypes.h (fixed_size_mode): Declare.
14079         (fixed_size_mode_pod): New typedef.
14080         * builtins.h (target_builtins::x_apply_args_mode)
14081         (target_builtins::x_apply_result_mode): Change type to
14082         fixed_size_mode_pod.
14083         * builtins.c (apply_args_size, apply_result_size, result_vector)
14084         (expand_builtin_apply_args_1, expand_builtin_apply)
14085         (expand_builtin_return): Update accordingly.
14086
14087 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14088
14089         * cse.c (hash_rtx_cb): Hash only the encoded elements.
14090         * cselib.c (cselib_hash_rtx): Likewise.
14091         * expmed.c (make_tree): Build VECTOR_CSTs directly from the
14092         CONST_VECTOR encoding.
14093
14094 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
14095             Jeff Law  <law@redhat.com>
14096
14097         PR target/83641
14098         * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): For
14099         noreturn probe, use gen_pop instead of ix86_emit_restore_reg_using_pop,
14100         only set RTX_FRAME_RELATED_P on both the push and pop if cfa_reg is sp
14101         and add REG_CFA_ADJUST_CFA notes in that case to both insns.
14102
14103         PR target/83641
14104         * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): Do not
14105         explicitly probe *sp in a noreturn function if there were any callee
14106         register saves or frame pointer is needed.
14107
14108 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
14109
14110         PR debug/83621
14111         * cfgexpand.c (expand_debug_expr): Return NULL if mode is
14112         BLKmode for ternary, binary or unary expressions.
14113
14114         PR debug/83645
14115         * var-tracking.c (delete_vta_debug_insn): New inline function.
14116         (delete_vta_debug_insns): Add USE_CFG argument, if true, walk just
14117         insns from get_insns () to NULL instead of each bb separately.
14118         Use delete_vta_debug_insn.  No longer static.
14119         (vt_debug_insns_local, variable_tracking_main_1): Adjust
14120         delete_vta_debug_insns callers.
14121         * rtl.h (delete_vta_debug_insns): Declare.
14122         * final.c (rest_of_handle_final): Call delete_vta_debug_insns
14123         instead of variable_tracking_main.
14124
14125 2018-01-03  Martin Sebor  <msebor@redhat.com>
14126
14127         PR tree-optimization/83603
14128         * calls.c (maybe_warn_nonstring_arg): Avoid accessing function
14129         arguments past the endof the argument list in functions declared
14130         without a prototype.
14131         * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call):
14132         Avoid checking when arguments are null.
14133
14134 2018-01-03  Martin Sebor  <msebor@redhat.com>
14135
14136         PR c/83559
14137         * doc/extend.texi (attribute const): Fix a typo.
14138         * ipa-pure-const.c ((warn_function_const, warn_function_pure): Avoid
14139         issuing -Wsuggest-attribute for void functions.
14140
14141 2018-01-03  Martin Sebor  <msebor@redhat.com>
14142
14143         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Use
14144         offset_int::from instead of wide_int::to_shwi.
14145         (maybe_diag_overlap): Remove assertion.
14146         Use HOST_WIDE_INT_PRINT_DEC instead of %lli.
14147         * gimple-ssa-sprintf.c (format_directive): Same.
14148         (parse_directive): Same.
14149         (sprintf_dom_walker::compute_format_length): Same.
14150         (try_substitute_return_value): Same.
14151
14152 2018-01-03  Jeff Law  <law@redhat.com>
14153
14154         PR middle-end/83654
14155         * explow.c (anti_adjust_stack_and_probe_stack_clash): Test a
14156         non-constant residual for zero at runtime and avoid probing in
14157         that case.  Reorganize code for trailing problem to mirror handling
14158         of the residual.
14159
14160 2018-01-03  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
14161
14162         PR tree-optimization/83501
14163         * tree-ssa-strlen.c (get_string_cst): New.
14164         (handle_char_store): Call get_string_cst.
14165
14166 2018-01-03  Martin Liska  <mliska@suse.cz>
14167
14168         PR tree-optimization/83593
14169         * tree-ssa-strlen.c: Include tree-cfg.h.
14170         (strlen_check_and_optimize_stmt): Add new argument cleanup_eh.
14171         (strlen_dom_walker): Add new member variable m_cleanup_cfg.
14172         (strlen_dom_walker::strlen_dom_walker): Initialize m_cleanup_cfg
14173         to false.
14174         (strlen_dom_walker::before_dom_children): Call
14175         gimple_purge_dead_eh_edges. Dump tranformation with details
14176         dump flags.
14177         (strlen_dom_walker::before_dom_children): Update call by adding
14178         new argument cleanup_eh.
14179         (pass_strlen::execute): Return TODO_cleanup_cfg if needed.
14180
14181 2018-01-03  Martin Liska  <mliska@suse.cz>
14182
14183         PR ipa/83549
14184         * cif-code.def (VARIADIC_THUNK): New enum value.
14185         * ipa-fnsummary.c (compute_fn_summary): Do not inline variadic
14186         thunks.
14187
14188 2018-01-03  Jan Beulich  <jbeulich@suse.com>
14189
14190         * sse.md (mov<mode>_internal): Tighten condition for when to use
14191         vmovdqu<ssescalarsize> for TI and OI modes.
14192
14193 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
14194
14195         Update copyright years.
14196
14197 2018-01-03  Martin Liska  <mliska@suse.cz>
14198
14199         PR ipa/83594
14200         * ipa-visibility.c (function_and_variable_visibility): Skip
14201         functions with noipa attribure.
14202
14203 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
14204
14205         * gcc.c (process_command): Update copyright notice dates.
14206         * gcov-dump.c (print_version): Ditto.
14207         * gcov.c (print_version): Ditto.
14208         * gcov-tool.c (print_version): Ditto.
14209         * gengtype.c (create_file): Ditto.
14210         * doc/cpp.texi: Bump @copying's copyright year.
14211         * doc/cppinternals.texi: Ditto.
14212         * doc/gcc.texi: Ditto.
14213         * doc/gccint.texi: Ditto.
14214         * doc/gcov.texi: Ditto.
14215         * doc/install.texi: Ditto.
14216         * doc/invoke.texi: Ditto.
14217
14218 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14219
14220         * vector-builder.h (vector_builder::m_full_nelts): Change from
14221         unsigned int to poly_uint64.
14222         (vector_builder::full_nelts): Update prototype accordingly.
14223         (vector_builder::new_vector): Likewise.
14224         (vector_builder::encoded_full_vector_p): Handle polynomial full_nelts.
14225         (vector_builder::operator ==): Likewise.
14226         (vector_builder::finalize): Likewise.
14227         * int-vector-builder.h (int_vector_builder::int_vector_builder):
14228         Take the number of elements as a poly_uint64 rather than an
14229         unsigned int.
14230         * vec-perm-indices.h (vec_perm_indices::m_nelts_per_input): Change
14231         from unsigned int to poly_uint64.
14232         (vec_perm_indices::vec_perm_indices): Update prototype accordingly.
14233         (vec_perm_indices::new_vector): Likewise.
14234         (vec_perm_indices::length): Likewise.
14235         (vec_perm_indices::nelts_per_input): Likewise.
14236         (vec_perm_indices::input_nelts): Likewise.
14237         * vec-perm-indices.c (vec_perm_indices::new_vector): Take the
14238         number of elements per input as a poly_uint64 rather than an
14239         unsigned int.  Use the original encoding for variable-length
14240         vectors, rather than clamping each individual element.
14241         For the second and subsequent elements in each pattern,
14242         clamp the step and base before clamping their sum.
14243         (vec_perm_indices::series_p): Handle polynomial element counts.
14244         (vec_perm_indices::all_in_range_p): Likewise.
14245         (vec_perm_indices_to_tree): Likewise.
14246         (vec_perm_indices_to_rtx): Likewise.
14247         * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise.
14248         * tree-vector-builder.c (tree_vector_builder::new_unary_operation)
14249         (tree_vector_builder::new_binary_operation): Handle polynomial
14250         element counts.  Return false if we need to know the number
14251         of elements at compile time.
14252         * fold-const.c (fold_vec_perm): Punt if the number of elements
14253         isn't known at compile time.
14254
14255 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14256
14257         * vec-perm-indices.h (vec_perm_builder): Change element type
14258         from HOST_WIDE_INT to poly_int64.
14259         (vec_perm_indices::element_type): Update accordingly.
14260         (vec_perm_indices::clamp): Handle polynomial element_types.
14261         * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
14262         (vec_perm_indices::all_in_range_p): Likewise.
14263         (tree_to_vec_perm_builder): Check for poly_int64 trees rather
14264         than shwi trees.
14265         * vector-builder.h (vector_builder::stepped_sequence_p): Handle
14266         polynomial vec_perm_indices element types.
14267         * int-vector-builder.h (int_vector_builder::equal_p): Likewise.
14268         * fold-const.c (fold_vec_perm): Likewise.
14269         * optabs.c (shift_amt_for_vec_perm_mask): Likewise.
14270         * tree-vect-generic.c (lower_vec_perm): Likewise.
14271         * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
14272         * config/aarch64/aarch64.c (aarch64_evpc_tbl): Cast d->perm
14273         element type to HOST_WIDE_INT.
14274
14275 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14276             Alan Hayward  <alan.hayward@arm.com>
14277             David Sherwood  <david.sherwood@arm.com>
14278
14279         * alias.c (addr_side_effect_eval): Take the size as a poly_int64
14280         rather than an int.  Use plus_constant.
14281         (memrefs_conflict_p): Take the sizes as poly_int64s rather than ints.
14282         Take the offset "c" as a poly_int64 rather than a HOST_WIDE_INT.
14283
14284 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14285             Alan Hayward  <alan.hayward@arm.com>
14286             David Sherwood  <david.sherwood@arm.com>
14287
14288         * calls.c (emit_call_1, expand_call): Change struct_value_size from
14289         a HOST_WIDE_INT to a poly_int64.
14290
14291 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14292             Alan Hayward  <alan.hayward@arm.com>
14293             David Sherwood  <david.sherwood@arm.com>
14294
14295         * calls.c (load_register_parameters): Cope with polynomial
14296         mode sizes.  Require a constant size for BLKmode parameters
14297         that aren't described by a PARALLEL.  If BLOCK_REG_PADDING
14298         forces a parameter to be padded at the lsb end in order to
14299         fill a complete number of words, require the parameter size
14300         to be ordered wrt UNITS_PER_WORD.
14301
14302 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14303             Alan Hayward  <alan.hayward@arm.com>
14304             David Sherwood  <david.sherwood@arm.com>
14305
14306         * reload1.c (spill_stack_slot_width): Change element type
14307         from unsigned int to poly_uint64_pod.
14308         (alter_reg): Treat mode sizes as polynomial.
14309
14310 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14311             Alan Hayward  <alan.hayward@arm.com>
14312             David Sherwood  <david.sherwood@arm.com>
14313
14314         * reload.c (complex_word_subreg_p): New function.
14315         (reload_inner_reg_of_subreg, push_reload): Use it.
14316
14317 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14318             Alan Hayward  <alan.hayward@arm.com>
14319             David Sherwood  <david.sherwood@arm.com>
14320
14321         * lra-constraints.c (process_alt_operands): Reject matched
14322         operands whose sizes aren't ordered.
14323         (match_reload): Refer to this check here.
14324
14325 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14326             Alan Hayward  <alan.hayward@arm.com>
14327             David Sherwood  <david.sherwood@arm.com>
14328
14329         * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Assert
14330         that the mode size is in the set {1, 2, 4, 8, 16}.
14331
14332 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14333             Alan Hayward  <alan.hayward@arm.com>
14334             David Sherwood  <david.sherwood@arm.com>
14335
14336         * var-tracking.c (adjust_mems): Treat mode sizes as polynomial.
14337         Use plus_constant instead of gen_rtx_PLUS.
14338
14339 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14340             Alan Hayward  <alan.hayward@arm.com>
14341             David Sherwood  <david.sherwood@arm.com>
14342
14343         * config/cr16/cr16-protos.h (cr16_push_rounding): Declare.
14344         * config/cr16/cr16.h (PUSH_ROUNDING): Move implementation to...
14345         * config/cr16/cr16.c (cr16_push_rounding): ...this new function.
14346         * config/h8300/h8300-protos.h (h8300_push_rounding): Declare.
14347         * config/h8300/h8300.h (PUSH_ROUNDING): Move implementation to...
14348         * config/h8300/h8300.c (h8300_push_rounding): ...this new function.
14349         * config/i386/i386-protos.h (ix86_push_rounding): Declare.
14350         * config/i386/i386.h (PUSH_ROUNDING): Move implementation to...
14351         * config/i386/i386.c (ix86_push_rounding): ...this new function.
14352         * config/m32c/m32c-protos.h (m32c_push_rounding): Take and return
14353         a poly_int64.
14354         * config/m32c/m32c.c (m32c_push_rounding): Likewise.
14355         * config/m68k/m68k-protos.h (m68k_push_rounding): Declare.
14356         * config/m68k/m68k.h (PUSH_ROUNDING): Move implementation to...
14357         * config/m68k/m68k.c (m68k_push_rounding): ...this new function.
14358         * config/pdp11/pdp11-protos.h (pdp11_push_rounding): Declare.
14359         * config/pdp11/pdp11.h (PUSH_ROUNDING): Move implementation to...
14360         * config/pdp11/pdp11.c (pdp11_push_rounding): ...this new function.
14361         * config/stormy16/stormy16-protos.h (xstormy16_push_rounding): Declare.
14362         * config/stormy16/stormy16.h (PUSH_ROUNDING): Move implementation to...
14363         * config/stormy16/stormy16.c (xstormy16_push_rounding): ...this new
14364         function.
14365         * expr.c (emit_move_resolve_push): Treat the input and result
14366         of PUSH_ROUNDING as a poly_int64.
14367         (emit_move_complex_push, emit_single_push_insn_1): Likewise.
14368         (emit_push_insn): Likewise.
14369         * lra-eliminations.c (mark_not_eliminable): Likewise.
14370         * recog.c (push_operand): Likewise.
14371         * reload1.c (elimination_effects): Likewise.
14372         * rtlanal.c (nonzero_bits1): Likewise.
14373         * calls.c (store_one_arg): Likewise.  Require the padding to be
14374         known at compile time.
14375
14376 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14377             Alan Hayward  <alan.hayward@arm.com>
14378             David Sherwood  <david.sherwood@arm.com>
14379
14380         * expr.c (emit_single_push_insn_1): Treat mode sizes as polynomial.
14381         Use plus_constant instead of gen_rtx_PLUS.
14382
14383 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14384             Alan Hayward  <alan.hayward@arm.com>
14385             David Sherwood  <david.sherwood@arm.com>
14386
14387         * auto-inc-dec.c (set_inc_state): Take the mode size as a poly_int64
14388         rather than an int.
14389
14390 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14391             Alan Hayward  <alan.hayward@arm.com>
14392             David Sherwood  <david.sherwood@arm.com>
14393
14394         * expr.c (expand_expr_real_1): Use tree_to_poly_uint64
14395         instead of int_size_in_bytes when handling VIEW_CONVERT_EXPRs
14396         via stack temporaries.  Treat the mode size as polynomial too.
14397
14398 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14399             Alan Hayward  <alan.hayward@arm.com>
14400             David Sherwood  <david.sherwood@arm.com>
14401
14402         * expr.c (expand_expr_real_2): When handling conversions involving
14403         unions, apply tree_to_poly_uint64 to the TYPE_SIZE rather than
14404         multiplying int_size_in_bytes by BITS_PER_UNIT.  Treat GET_MODE_BISIZE
14405         as a poly_uint64 too.
14406
14407 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14408             Alan Hayward  <alan.hayward@arm.com>
14409             David Sherwood  <david.sherwood@arm.com>
14410
14411         * rtlanal.c (subreg_get_info): Handle polynomial mode sizes.
14412
14413 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14414             Alan Hayward  <alan.hayward@arm.com>
14415             David Sherwood  <david.sherwood@arm.com>
14416
14417         * combine.c (can_change_dest_mode): Handle polynomial
14418         REGMODE_NATURAL_SIZE.
14419         * expmed.c (store_bit_field_1): Likewise.
14420         * expr.c (store_constructor): Likewise.
14421         * emit-rtl.c (validate_subreg): Operate on polynomial mode sizes
14422         and polynomial REGMODE_NATURAL_SIZE.
14423         (gen_lowpart_common): Likewise.
14424         * reginfo.c (record_subregs_of_mode): Likewise.
14425         * rtlanal.c (read_modify_subreg_p): Likewise.
14426
14427 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14428             Alan Hayward  <alan.hayward@arm.com>
14429             David Sherwood  <david.sherwood@arm.com>
14430
14431         * internal-fn.c (expand_vector_ubsan_overflow): Handle polynomial
14432         numbers of elements.
14433
14434 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14435             Alan Hayward  <alan.hayward@arm.com>
14436             David Sherwood  <david.sherwood@arm.com>
14437
14438         * match.pd: Cope with polynomial numbers of vector elements.
14439
14440 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14441             Alan Hayward  <alan.hayward@arm.com>
14442             David Sherwood  <david.sherwood@arm.com>
14443
14444         * fold-const.c (fold_indirect_ref_1): Handle polynomial offsets
14445         in a POINTER_PLUS_EXPR.
14446
14447 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14448             Alan Hayward  <alan.hayward@arm.com>
14449             David Sherwood  <david.sherwood@arm.com>
14450
14451         * omp-simd-clone.c (simd_clone_subparts): New function.
14452         (simd_clone_init_simd_arrays): Use it instead of TYPE_VECTOR_SUBPARTS.
14453         (ipa_simd_modify_function_body): Likewise.
14454
14455 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14456             Alan Hayward  <alan.hayward@arm.com>
14457             David Sherwood  <david.sherwood@arm.com>
14458
14459         * tree-vect-generic.c (nunits_for_known_piecewise_op): New function.
14460         (expand_vector_piecewise): Use it instead of TYPE_VECTOR_SUBPARTS.
14461         (expand_vector_addition, add_rshift, expand_vector_divmod): Likewise.
14462         (expand_vector_condition, vector_element): Likewise.
14463         (subparts_gt): New function.
14464         (get_compute_type): Use subparts_gt.
14465         (count_type_subparts): Delete.
14466         (expand_vector_operations_1): Use subparts_gt instead of
14467         count_type_subparts.
14468
14469 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14470             Alan Hayward  <alan.hayward@arm.com>
14471             David Sherwood  <david.sherwood@arm.com>
14472
14473         * tree-vect-data-refs.c (vect_no_alias_p): Replace with...
14474         (vect_compile_time_alias): ...this new function.  Do the calculation
14475         on poly_ints rather than trees.
14476         (vect_prune_runtime_alias_test_list): Update call accordingly.
14477
14478 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14479             Alan Hayward  <alan.hayward@arm.com>
14480             David Sherwood  <david.sherwood@arm.com>
14481
14482         * tree-vect-slp.c (vect_build_slp_tree_1): Handle polynomial
14483         numbers of units.
14484         (vect_schedule_slp_instance): Likewise.
14485
14486 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14487             Alan Hayward  <alan.hayward@arm.com>
14488             David Sherwood  <david.sherwood@arm.com>
14489
14490         * tree-vect-slp.c (vect_get_and_check_slp_defs): Reject
14491         constant and extern definitions for variable-length vectors.
14492         (vect_get_constant_vectors): Note that the number of units
14493         is known to be constant.
14494
14495 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14496             Alan Hayward  <alan.hayward@arm.com>
14497             David Sherwood  <david.sherwood@arm.com>
14498
14499         * tree-vect-stmts.c (vectorizable_conversion): Treat the number
14500         of units as polynomial.  Choose between WIDE and NARROW based
14501         on multiple_p.
14502
14503 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14504             Alan Hayward  <alan.hayward@arm.com>
14505             David Sherwood  <david.sherwood@arm.com>
14506
14507         * tree-vect-stmts.c (simd_clone_subparts): New function.
14508         (vectorizable_simd_clone_call): Use it instead of TYPE_VECTOR_SUBPARTS.
14509
14510 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14511             Alan Hayward  <alan.hayward@arm.com>
14512             David Sherwood  <david.sherwood@arm.com>
14513
14514         * tree-vect-stmts.c (vectorizable_call): Treat the number of
14515         vectors as polynomial.  Use build_index_vector for
14516         IFN_GOMP_SIMD_LANE.
14517
14518 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14519             Alan Hayward  <alan.hayward@arm.com>
14520             David Sherwood  <david.sherwood@arm.com>
14521
14522         * tree-vect-stmts.c (get_load_store_type): Treat the number of
14523         units as polynomial.  Reject VMAT_ELEMENTWISE and VMAT_STRIDED_SLP
14524         for variable-length vectors.
14525         (vectorizable_mask_load_store): Treat the number of units as
14526         polynomial, asserting that it is constant if the condition has
14527         already been enforced.
14528         (vectorizable_store, vectorizable_load): Likewise.
14529
14530 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14531             Alan Hayward  <alan.hayward@arm.com>
14532             David Sherwood  <david.sherwood@arm.com>
14533
14534         * tree-vect-loop.c (vectorizable_live_operation): Treat the number
14535         of units as polynomial.  Punt if we can't tell at compile time
14536         which vector contains the final result.
14537
14538 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14539             Alan Hayward  <alan.hayward@arm.com>
14540             David Sherwood  <david.sherwood@arm.com>
14541
14542         * tree-vect-loop.c (vectorizable_induction): Treat the number
14543         of units as polynomial.  Punt on SLP inductions.  Use an integer
14544         VEC_SERIES_EXPR for variable-length integer reductions.  Use a
14545         cast of such a series for variable-length floating-point
14546         reductions.
14547
14548 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14549             Alan Hayward  <alan.hayward@arm.com>
14550             David Sherwood  <david.sherwood@arm.com>
14551
14552         * tree.h (build_index_vector): Declare.
14553         * tree.c (build_index_vector): New function.
14554         * tree-vect-loop.c (get_initial_defs_for_reduction): Treat the number
14555         of units as polynomial, forcibly converting it to a constant if
14556         vectorizable_reduction has already enforced the condition.
14557         (vect_create_epilog_for_reduction): Likewise.  Use build_index_vector
14558         to create a {1,2,3,...} vector.
14559         (vectorizable_reduction): Treat the number of units as polynomial.
14560         Choose vectype_in based on the largest scalar element size rather
14561         than the smallest number of units.  Enforce the restrictions
14562         relied on above.
14563
14564 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14565             Alan Hayward  <alan.hayward@arm.com>
14566             David Sherwood  <david.sherwood@arm.com>
14567
14568         * tree-vect-data-refs.c (vector_alignment_reachable_p): Treat the
14569         number of units as polynomial.
14570
14571 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14572             Alan Hayward  <alan.hayward@arm.com>
14573             David Sherwood  <david.sherwood@arm.com>
14574
14575         * target.h (vector_sizes, auto_vector_sizes): New typedefs.
14576         * target.def (autovectorize_vector_sizes): Return the vector sizes
14577         by pointer, using vector_sizes rather than a bitmask.
14578         * targhooks.h (default_autovectorize_vector_sizes): Update accordingly.
14579         * targhooks.c (default_autovectorize_vector_sizes): Likewise.
14580         * config/aarch64/aarch64.c (aarch64_autovectorize_vector_sizes):
14581         Likewise.
14582         * config/arc/arc.c (arc_autovectorize_vector_sizes): Likewise.
14583         * config/arm/arm.c (arm_autovectorize_vector_sizes): Likewise.
14584         * config/i386/i386.c (ix86_autovectorize_vector_sizes): Likewise.
14585         * config/mips/mips.c (mips_autovectorize_vector_sizes): Likewise.
14586         * omp-general.c (omp_max_vf): Likewise.
14587         * omp-low.c (omp_clause_aligned_alignment): Likewise.
14588         * optabs-query.c (can_vec_mask_load_store_p): Likewise.
14589         * tree-vect-loop.c (vect_analyze_loop): Likewise.
14590         * tree-vect-slp.c (vect_slp_bb): Likewise.
14591         * doc/tm.texi: Regenerate.
14592         * tree-vectorizer.h (current_vector_size): Change from an unsigned int
14593         to a poly_uint64.
14594         * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Take
14595         the vector size as a poly_uint64 rather than an unsigned int.
14596         (current_vector_size): Change from an unsigned int to a poly_uint64.
14597         (get_vectype_for_scalar_type): Update accordingly.
14598         * tree.h (build_truth_vector_type): Take the size and number of
14599         units as a poly_uint64 rather than an unsigned int.
14600         (build_vector_type): Add a temporary overload that takes
14601         the number of units as a poly_uint64 rather than an unsigned int.
14602         * tree.c (make_vector_type): Likewise.
14603         (build_truth_vector_type): Take the number of units as a poly_uint64
14604         rather than an unsigned int.
14605
14606 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14607             Alan Hayward  <alan.hayward@arm.com>
14608             David Sherwood  <david.sherwood@arm.com>
14609
14610         * target.def (get_mask_mode): Take the number of units and length
14611         as poly_uint64s rather than unsigned ints.
14612         * targhooks.h (default_get_mask_mode): Update accordingly.
14613         * targhooks.c (default_get_mask_mode): Likewise.
14614         * config/i386/i386.c (ix86_get_mask_mode): Likewise.
14615         * doc/tm.texi: Regenerate.
14616
14617 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14618             Alan Hayward  <alan.hayward@arm.com>
14619             David Sherwood  <david.sherwood@arm.com>
14620
14621         * omp-general.h (omp_max_vf): Return a poly_uint64 instead of an int.
14622         * omp-general.c (omp_max_vf): Likewise.
14623         * omp-expand.c (omp_adjust_chunk_size): Update call to omp_max_vf.
14624         (expand_omp_simd): Handle polynomial safelen.
14625         * omp-low.c (omplow_simd_context): Add a default constructor.
14626         (omplow_simd_context::max_vf): Change from int to poly_uint64.
14627         (lower_rec_simd_input_clauses): Update accordingly.
14628         (lower_rec_input_clauses): Likewise.
14629
14630 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14631             Alan Hayward  <alan.hayward@arm.com>
14632             David Sherwood  <david.sherwood@arm.com>
14633
14634         * tree-vectorizer.h (vect_nunits_for_cost): New function.
14635         * tree-vect-loop.c (vect_model_reduction_cost): Use it.
14636         * tree-vect-slp.c (vect_analyze_slp_cost_1): Likewise.
14637         (vect_analyze_slp_cost): Likewise.
14638         * tree-vect-stmts.c (vect_model_store_cost): Likewise.
14639         (vect_model_load_cost): Likewise.
14640
14641 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14642             Alan Hayward  <alan.hayward@arm.com>
14643             David Sherwood  <david.sherwood@arm.com>
14644
14645         * tree-vect-slp.c (vect_record_max_nunits, vect_build_slp_tree_1)
14646         (vect_build_slp_tree_2, vect_build_slp_tree): Change max_nunits
14647         from an unsigned int * to a poly_uint64_pod *.
14648         (calculate_unrolling_factor): New function.
14649         (vect_analyze_slp_instance): Use it.  Track polynomial max_nunits.
14650
14651 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14652             Alan Hayward  <alan.hayward@arm.com>
14653             David Sherwood  <david.sherwood@arm.com>
14654
14655         * tree-vectorizer.h (_slp_instance::unrolling_factor): Change
14656         from an unsigned int to a poly_uint64.
14657         (_loop_vec_info::slp_unrolling_factor): Likewise.
14658         (_loop_vec_info::vectorization_factor): Change from an int
14659         to a poly_uint64.
14660         (MAX_VECTORIZATION_FACTOR): Bump from 64 to INT_MAX.
14661         (vect_get_num_vectors): New function.
14662         (vect_update_max_nunits, vect_vf_for_cost): Likewise.
14663         (vect_get_num_copies): Use vect_get_num_vectors.
14664         (vect_analyze_data_ref_dependences): Change max_vf from an int *
14665         to an unsigned int *.
14666         (vect_analyze_data_refs): Change min_vf from an int * to a
14667         poly_uint64 *.
14668         (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
14669         than an unsigned HOST_WIDE_INT.
14670         * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr)
14671         (vect_analyze_data_ref_dependence): Change max_vf from an int *
14672         to an unsigned int *.
14673         (vect_analyze_data_ref_dependences): Likewise.
14674         (vect_compute_data_ref_alignment): Handle polynomial vf.
14675         (vect_enhance_data_refs_alignment): Likewise.
14676         (vect_prune_runtime_alias_test_list): Likewise.
14677         (vect_shift_permute_load_chain): Likewise.
14678         (vect_supportable_dr_alignment): Likewise.
14679         (dependence_distance_ge_vf): Take the vectorization factor as a
14680         poly_uint64 rather than an unsigned HOST_WIDE_INT.
14681         (vect_analyze_data_refs): Change min_vf from an int * to a
14682         poly_uint64 *.
14683         * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Take
14684         vfm1 as a poly_uint64 rather than an int.  Make the same change
14685         for the returned bound_scalar.
14686         (vect_gen_vector_loop_niters): Handle polynomial vf.
14687         (vect_do_peeling): Likewise.  Update call to
14688         vect_gen_scalar_loop_niters and handle polynomial bound_scalars.
14689         (vect_gen_vector_loop_niters_mult_vf): Assert that the vf must
14690         be constant.
14691         * tree-vect-loop.c (vect_determine_vectorization_factor)
14692         (vect_update_vf_for_slp, vect_analyze_loop_2): Handle polynomial vf.
14693         (vect_get_known_peeling_cost): Likewise.
14694         (vect_estimate_min_profitable_iters, vectorizable_reduction): Likewise.
14695         (vect_worthwhile_without_simd_p, vectorizable_induction): Likewise.
14696         (vect_transform_loop): Likewise.  Use the lowest possible VF when
14697         updating the upper bounds of the loop.
14698         (vect_min_worthwhile_factor): Make static.  Return an unsigned int
14699         rather than an int.
14700         * tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Cope with
14701         polynomial unroll factors.
14702         (vect_analyze_slp_cost_1, vect_analyze_slp_instance): Likewise.
14703         (vect_make_slp_decision): Likewise.
14704         (vect_supported_load_permutation_p): Likewise, and polynomial
14705         vf too.
14706         (vect_analyze_slp_cost): Handle polynomial vf.
14707         (vect_slp_analyze_node_operations): Likewise.
14708         (vect_slp_analyze_bb_1): Likewise.
14709         (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
14710         than an unsigned HOST_WIDE_INT.
14711         * tree-vect-stmts.c (vectorizable_simd_clone_call, vectorizable_store)
14712         (vectorizable_load): Handle polynomial vf.
14713         * tree-vectorizer.c (simduid_to_vf::vf): Change from an int to
14714         a poly_uint64.
14715         (adjust_simduid_builtins, shrink_simd_arrays): Update accordingly.
14716
14717 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14718             Alan Hayward  <alan.hayward@arm.com>
14719             David Sherwood  <david.sherwood@arm.com>
14720
14721         * match.pd: Handle bit operations involving three constants
14722         and try to fold one pair.
14723
14724 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
14725
14726         * tree-vect-loop-manip.c: Include gimple-fold.h.
14727         (slpeel_make_loop_iterate_ntimes): Add step, final_iv and
14728         niters_maybe_zero parameters.  Handle other cases besides a step of 1.
14729         (vect_gen_vector_loop_niters): Add a step_vector_ptr parameter.
14730         Add a path that uses a step of VF instead of 1, but disable it
14731         for now.
14732         (vect_do_peeling): Add step_vector, niters_vector_mult_vf_var
14733         and niters_no_overflow parameters.  Update calls to
14734         slpeel_make_loop_iterate_ntimes and vect_gen_vector_loop_niters.
14735         Create a new SSA name if the latter choses to use a ste other
14736         than zero, and return it via niters_vector_mult_vf_var.
14737         * tree-vect-loop.c (vect_transform_loop): Update calls to
14738         vect_do_peeling, vect_gen_vector_loop_niters and
14739         slpeel_make_loop_iterate_ntimes.
14740         * tree-vectorizer.h (slpeel_make_loop_iterate_ntimes, vect_do_peeling)
14741         (vect_gen_vector_loop_niters): Update declarations after above changes.
14742
14743 2018-01-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
14744
14745         * config/rs6000/rs6000.md (floor<mode>2): Add support for IEEE
14746         128-bit round to integer instructions.
14747         (ceil<mode>2): Likewise.
14748         (btrunc<mode>2): Likewise.
14749         (round<mode>2): Likewise.
14750
14751 2018-01-02  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
14752
14753         * config/rs6000/rs6000-string.c (expand_block_move): Allow the use of
14754         unaligned VSX load/store on P8/P9.
14755         (expand_block_clear): Allow the use of unaligned VSX
14756         load/store on P8/P9.
14757
14758 2018-01-02  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
14759
14760         * config/rs6000/rs6000-p8swap.c (swap_feeds_both_load_and_store):
14761         New function.
14762         (rs6000_analyze_swaps): Mark a web unoptimizable if it contains a
14763         swap associated with both a load and a store.
14764
14765 2018-01-02  Andrew Waterman  <andrew@sifive.com>
14766
14767         * config/riscv/linux.h (ICACHE_FLUSH_FUNC): New.
14768         * config/riscv/riscv.md (clear_cache): Use it.
14769
14770 2018-01-02  Artyom Skrobov  <tyomitch@gmail.com>
14771
14772         * web.c: Remove out-of-date comment.
14773
14774 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14775
14776         * expr.c (fixup_args_size_notes): Check that any existing
14777         REG_ARGS_SIZE notes are correct, and don't try to re-add them.
14778         (emit_single_push_insn_1): Move stack_pointer_delta adjustment to...
14779         (emit_single_push_insn): ...here.
14780
14781 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14782
14783         * rtl.h (CONST_VECTOR_ELT): Redefine to const_vector_elt.
14784         (const_vector_encoded_nelts): New function.
14785         (CONST_VECTOR_NUNITS): Redefine to use GET_MODE_NUNITS.
14786         (const_vector_int_elt, const_vector_elt): Declare.
14787         * emit-rtl.c (const_vector_int_elt_1): New function.
14788         (const_vector_elt): Likewise.
14789         * simplify-rtx.c (simplify_immed_subreg): Avoid taking the address
14790         of CONST_VECTOR_ELT.
14791
14792 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14793
14794         * expr.c: Include rtx-vector-builder.h.
14795         (const_vector_mask_from_tree): Use rtx_vector_builder and operate
14796         directly on the tree encoding.
14797         (const_vector_from_tree): Likewise.
14798         * optabs.c: Include rtx-vector-builder.h.
14799         (expand_vec_perm_var): Use rtx_vector_builder and create a repeating
14800         sequence of "u" values.
14801         * vec-perm-indices.c: Include rtx-vector-builder.h.
14802         (vec_perm_indices_to_rtx): Use rtx_vector_builder and operate
14803         directly on the vec_perm_indices encoding.
14804
14805 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14806
14807         * doc/rtl.texi (const_vector): Describe new encoding scheme.
14808         * Makefile.in (OBJS): Add rtx-vector-builder.o.
14809         * rtx-vector-builder.h: New file.
14810         * rtx-vector-builder.c: Likewise.
14811         * rtl.h (rtx_def::u2): Add a const_vector field.
14812         (CONST_VECTOR_NPATTERNS): New macro.
14813         (CONST_VECTOR_NELTS_PER_PATTERN): Likewise.
14814         (CONST_VECTOR_DUPLICATE_P): Likewise.
14815         (CONST_VECTOR_STEPPED_P): Likewise.
14816         (CONST_VECTOR_ENCODED_ELT): Likewise.
14817         (const_vec_duplicate_p): Check for a duplicated vector encoding.
14818         (unwrap_const_vec_duplicate): Likewise.
14819         (const_vec_series_p): Check for a non-duplicated vector encoding.
14820         Say that the function only returns true for integer vectors.
14821         * emit-rtl.c: Include rtx-vector-builder.h.
14822         (gen_const_vec_duplicate_1): Delete.
14823         (gen_const_vector): Call gen_const_vec_duplicate instead of
14824         gen_const_vec_duplicate_1.
14825         (const_vec_series_p_1): Operate directly on the CONST_VECTOR encoding.
14826         (gen_const_vec_duplicate): Use rtx_vector_builder.
14827         (gen_const_vec_series): Likewise.
14828         (gen_rtx_CONST_VECTOR): Likewise.
14829         * config/powerpcspe/powerpcspe.c: Include rtx-vector-builder.h.
14830         (swap_const_vector_halves): Take an rtx pointer rather than rtx.
14831         Build a new vector rather than modifying a CONST_VECTOR in-place.
14832         (handle_special_swappables): Update call accordingly.
14833         * config/rs6000/rs6000-p8swap.c: Include rtx-vector-builder.h.
14834         (swap_const_vector_halves): Take an rtx pointer rather than rtx.
14835         Build a new vector rather than modifying a CONST_VECTOR in-place.
14836         (handle_special_swappables): Update call accordingly.
14837
14838 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14839
14840         * simplify-rtx.c (simplify_const_binary_operation): Use
14841         CONST_VECTOR_ELT instead of XVECEXP.
14842
14843 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14844
14845         * tree-cfg.c (verify_gimple_assign_ternary): Allow the size of
14846         the selector elements to be different from the data elements
14847         if the selector is a VECTOR_CST.
14848         * tree-vect-stmts.c (vect_gen_perm_mask_any): Use a vector of
14849         ssizetype for the selector.
14850
14851 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14852
14853         * optabs.c (shift_amt_for_vec_perm_mask): Try using series_p
14854         before testing each element individually.
14855         * tree-vect-generic.c (lower_vec_perm): Likewise.
14856
14857 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14858
14859         * selftest.h (selftest::vec_perm_indices_c_tests): Declare.
14860         * selftest-run-tests.c (selftest::run_tests): Call it.
14861         * vector-builder.h (vector_builder::operator ==): New function.
14862         (vector_builder::operator !=): Likewise.
14863         * vec-perm-indices.h (vec_perm_indices::series_p): Declare.
14864         (vec_perm_indices::all_from_input_p): New function.
14865         * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
14866         (test_vec_perm_12, selftest::vec_perm_indices_c_tests): Likewise.
14867         * fold-const.c (fold_ternary_loc): Use tree_to_vec_perm_builder
14868         instead of reading the VECTOR_CST directly.  Detect whether both
14869         vector inputs are the same before constructing the vec_perm_indices,
14870         and update the number of inputs argument accordingly.  Use the
14871         utility functions added above.  Only construct sel2 if we need to.
14872
14873 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14874
14875         * optabs.c (expand_vec_perm_var): Use an explicit encoding for
14876         the broadcast of the low byte.
14877         (expand_mult_highpart): Use an explicit encoding for the permutes.
14878         * optabs-query.c (can_mult_highpart_p): Likewise.
14879         * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Likewise.
14880         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
14881         (vectorizable_bswap): Likewise.
14882         * tree-vect-data-refs.c (vect_grouped_store_supported): Use an
14883         explicit encoding for the power-of-2 permutes.
14884         (vect_permute_store_chain): Likewise.
14885         (vect_grouped_load_supported): Likewise.
14886         (vect_permute_load_chain): Likewise.
14887
14888 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14889
14890         * vec-perm-indices.h (vec_perm_indices_to_tree): Declare.
14891         * vec-perm-indices.c (vec_perm_indices_to_tree): New function.
14892         * tree-ssa-forwprop.c (simplify_vector_constructor): Use it.
14893         * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
14894         * tree-vect-stmts.c (vectorizable_bswap): Likewise.
14895         (vect_gen_perm_mask_any): Likewise.
14896
14897 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14898
14899         * int-vector-builder.h: New file.
14900         * vec-perm-indices.h: Include int-vector-builder.h.
14901         (vec_perm_indices): Redefine as an int_vector_builder.
14902         (auto_vec_perm_indices): Delete.
14903         (vec_perm_builder): Redefine as a stand-alone class.
14904         (vec_perm_indices::vec_perm_indices): New function.
14905         (vec_perm_indices::clamp): Likewise.
14906         * vec-perm-indices.c: Include fold-const.h and tree-vector-builder.h.
14907         (vec_perm_indices::new_vector): New function.
14908         (vec_perm_indices::new_expanded_vector): Update for new
14909         vec_perm_indices class.
14910         (vec_perm_indices::rotate_inputs): New function.
14911         (vec_perm_indices::all_in_range_p): Operate directly on the
14912         encoded form, without computing elided elements.
14913         (tree_to_vec_perm_builder): Operate directly on the VECTOR_CST
14914         encoding.  Update for new vec_perm_indices class.
14915         * optabs.c (expand_vec_perm_const): Create a vec_perm_indices for
14916         the given vec_perm_builder.
14917         (expand_vec_perm_var): Update vec_perm_builder constructor.
14918         (expand_mult_highpart): Use vec_perm_builder instead of
14919         auto_vec_perm_indices.
14920         * optabs-query.c (can_mult_highpart_p): Use vec_perm_builder and
14921         vec_perm_indices instead of auto_vec_perm_indices.  Use a single
14922         or double series encoding as appropriate.
14923         * fold-const.c (fold_ternary_loc): Use vec_perm_builder and
14924         vec_perm_indices instead of auto_vec_perm_indices.
14925         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
14926         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
14927         (vect_permute_store_chain): Likewise.
14928         (vect_grouped_load_supported): Likewise.
14929         (vect_permute_load_chain): Likewise.
14930         (vect_shift_permute_load_chain): Likewise.
14931         * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
14932         (vect_transform_slp_perm_load): Likewise.
14933         (vect_schedule_slp_instance): Likewise.
14934         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
14935         (vectorizable_mask_load_store): Likewise.
14936         (vectorizable_bswap): Likewise.
14937         (vectorizable_store): Likewise.
14938         (vectorizable_load): Likewise.
14939         * tree-vect-generic.c (lower_vec_perm): Use vec_perm_builder and
14940         vec_perm_indices instead of auto_vec_perm_indices.  Use
14941         tree_to_vec_perm_builder to read the vector from a tree.
14942         * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Take a
14943         vec_perm_builder instead of a vec_perm_indices.
14944         (have_whole_vector_shift): Use vec_perm_builder and
14945         vec_perm_indices instead of auto_vec_perm_indices.  Leave the
14946         truncation to calc_vec_perm_mask_for_shift.
14947         (vect_create_epilog_for_reduction): Likewise.
14948         * config/aarch64/aarch64.c (expand_vec_perm_d::perm): Change
14949         from auto_vec_perm_indices to vec_perm_indices.
14950         (aarch64_expand_vec_perm_const_1): Use rotate_inputs on d.perm
14951         instead of changing individual elements.
14952         (aarch64_vectorize_vec_perm_const): Use new_vector to install
14953         the vector in d.perm.
14954         * config/arm/arm.c (expand_vec_perm_d::perm): Change
14955         from auto_vec_perm_indices to vec_perm_indices.
14956         (arm_expand_vec_perm_const_1): Use rotate_inputs on d.perm
14957         instead of changing individual elements.
14958         (arm_vectorize_vec_perm_const): Use new_vector to install
14959         the vector in d.perm.
14960         * config/powerpcspe/powerpcspe.c (rs6000_expand_extract_even):
14961         Update vec_perm_builder constructor.
14962         (rs6000_expand_interleave): Likewise.
14963         * config/rs6000/rs6000.c (rs6000_expand_extract_even): Likewise.
14964         (rs6000_expand_interleave): Likewise.
14965
14966 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14967
14968         * optabs-query.c (can_vec_perm_var_p): Check whether lowering
14969         to qimode could truncate the indices.
14970         * optabs.c (expand_vec_perm_var): Likewise.
14971
14972 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
14973
14974         * Makefile.in (OBJS): Add vec-perm-indices.o.
14975         * vec-perm-indices.h: New file.
14976         * vec-perm-indices.c: Likewise.
14977         * target.h (vec_perm_indices): Replace with a forward class
14978         declaration.
14979         (auto_vec_perm_indices): Move to vec-perm-indices.h.
14980         * optabs.h: Include vec-perm-indices.h.
14981         (expand_vec_perm): Delete.
14982         (selector_fits_mode_p, expand_vec_perm_var): Declare.
14983         (expand_vec_perm_const): Declare.
14984         * target.def (vec_perm_const_ok): Replace with...
14985         (vec_perm_const): ...this new hook.
14986         * doc/tm.texi.in (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Replace with...
14987         (TARGET_VECTORIZE_VEC_PERM_CONST): ...this new hook.
14988         * doc/tm.texi: Regenerate.
14989         * optabs.def (vec_perm_const): Delete.
14990         * doc/md.texi (vec_perm_const): Likewise.
14991         (vec_perm): Refer to TARGET_VECTORIZE_VEC_PERM_CONST.
14992         * expr.c (expand_expr_real_2): Use expand_vec_perm_const rather than
14993         expand_vec_perm for constant permutation vectors.  Assert that
14994         the mode of variable permutation vectors is the integer equivalent
14995         of the mode that is being permuted.
14996         * optabs-query.h (selector_fits_mode_p): Declare.
14997         * optabs-query.c: Include vec-perm-indices.h.
14998         (selector_fits_mode_p): New function.
14999         (can_vec_perm_const_p): Check whether targetm.vectorize.vec_perm_const
15000         is defined, instead of checking whether the vec_perm_const_optab
15001         exists.  Use targetm.vectorize.vec_perm_const instead of
15002         targetm.vectorize.vec_perm_const_ok.  Check whether the indices
15003         fit in the vector mode before using a variable permute.
15004         * optabs.c (shift_amt_for_vec_perm_mask): Take a mode and a
15005         vec_perm_indices instead of an rtx.
15006         (expand_vec_perm): Replace with...
15007         (expand_vec_perm_const): ...this new function.  Take the selector
15008         as a vec_perm_indices rather than an rtx.  Also take the mode of
15009         the selector.  Update call to shift_amt_for_vec_perm_mask.
15010         Use targetm.vectorize.vec_perm_const instead of vec_perm_const_optab.
15011         Use vec_perm_indices::new_expanded_vector to expand the original
15012         selector into bytes.  Check whether the indices fit in the vector
15013         mode before using a variable permute.
15014         (expand_vec_perm_var): Make global.
15015         (expand_mult_highpart): Use expand_vec_perm_const.
15016         * fold-const.c: Includes vec-perm-indices.h.
15017         * tree-ssa-forwprop.c: Likewise.
15018         * tree-vect-data-refs.c: Likewise.
15019         * tree-vect-generic.c: Likewise.
15020         * tree-vect-loop.c: Likewise.
15021         * tree-vect-slp.c: Likewise.
15022         * tree-vect-stmts.c: Likewise.
15023         * config/aarch64/aarch64-protos.h (aarch64_expand_vec_perm_const):
15024         Delete.
15025         * config/aarch64/aarch64-simd.md (vec_perm_const<mode>): Delete.
15026         * config/aarch64/aarch64.c (aarch64_expand_vec_perm_const)
15027         (aarch64_vectorize_vec_perm_const_ok): Fuse into...
15028         (aarch64_vectorize_vec_perm_const): ...this new function.
15029         (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
15030         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
15031         * config/arm/arm-protos.h (arm_expand_vec_perm_const): Delete.
15032         * config/arm/vec-common.md (vec_perm_const<mode>): Delete.
15033         * config/arm/arm.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
15034         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
15035         (arm_expand_vec_perm_const, arm_vectorize_vec_perm_const_ok): Merge
15036         into...
15037         (arm_vectorize_vec_perm_const): ...this new function.  Explicitly
15038         check for NEON modes.
15039         * config/i386/i386-protos.h (ix86_expand_vec_perm_const): Delete.
15040         * config/i386/sse.md (VEC_PERM_CONST, vec_perm_const<mode>): Delete.
15041         * config/i386/i386.c (ix86_expand_vec_perm_const_1): Update comment.
15042         (ix86_expand_vec_perm_const, ix86_vectorize_vec_perm_const_ok): Merge
15043         into...
15044         (ix86_vectorize_vec_perm_const): ...this new function.  Incorporate
15045         the old VEC_PERM_CONST conditions.
15046         * config/ia64/ia64-protos.h (ia64_expand_vec_perm_const): Delete.
15047         * config/ia64/vect.md (vec_perm_const<mode>): Delete.
15048         * config/ia64/ia64.c (ia64_expand_vec_perm_const)
15049         (ia64_vectorize_vec_perm_const_ok): Merge into...
15050         (ia64_vectorize_vec_perm_const): ...this new function.
15051         * config/mips/loongson.md (vec_perm_const<mode>): Delete.
15052         * config/mips/mips-msa.md (vec_perm_const<mode>): Delete.
15053         * config/mips/mips-ps-3d.md (vec_perm_constv2sf): Delete.
15054         * config/mips/mips-protos.h (mips_expand_vec_perm_const): Delete.
15055         * config/mips/mips.c (mips_expand_vec_perm_const)
15056         (mips_vectorize_vec_perm_const_ok): Merge into...
15057         (mips_vectorize_vec_perm_const): ...this new function.
15058         * config/powerpcspe/altivec.md (vec_perm_constv16qi): Delete.
15059         * config/powerpcspe/paired.md (vec_perm_constv2sf): Delete.
15060         * config/powerpcspe/spe.md (vec_perm_constv2si): Delete.
15061         * config/powerpcspe/vsx.md (vec_perm_const<mode>): Delete.
15062         * config/powerpcspe/powerpcspe-protos.h (altivec_expand_vec_perm_const)
15063         (rs6000_expand_vec_perm_const): Delete.
15064         * config/powerpcspe/powerpcspe.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK):
15065         Delete.
15066         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
15067         (altivec_expand_vec_perm_const_le): Take each operand individually.
15068         Operate on constant selectors rather than rtxes.
15069         (altivec_expand_vec_perm_const): Likewise.  Update call to
15070         altivec_expand_vec_perm_const_le.
15071         (rs6000_expand_vec_perm_const): Delete.
15072         (rs6000_vectorize_vec_perm_const_ok): Delete.
15073         (rs6000_vectorize_vec_perm_const): New function.
15074         (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
15075         an element count and rtx array.
15076         (rs6000_expand_extract_even): Update call accordingly.
15077         (rs6000_expand_interleave): Likewise.
15078         * config/rs6000/altivec.md (vec_perm_constv16qi): Delete.
15079         * config/rs6000/paired.md (vec_perm_constv2sf): Delete.
15080         * config/rs6000/vsx.md (vec_perm_const<mode>): Delete.
15081         * config/rs6000/rs6000-protos.h (altivec_expand_vec_perm_const)
15082         (rs6000_expand_vec_perm_const): Delete.
15083         * config/rs6000/rs6000.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
15084         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
15085         (altivec_expand_vec_perm_const_le): Take each operand individually.
15086         Operate on constant selectors rather than rtxes.
15087         (altivec_expand_vec_perm_const): Likewise.  Update call to
15088         altivec_expand_vec_perm_const_le.
15089         (rs6000_expand_vec_perm_const): Delete.
15090         (rs6000_vectorize_vec_perm_const_ok): Delete.
15091         (rs6000_vectorize_vec_perm_const): New function.  Remove stray
15092         reference to the SPE evmerge intructions.
15093         (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
15094         an element count and rtx array.
15095         (rs6000_expand_extract_even): Update call accordingly.
15096         (rs6000_expand_interleave): Likewise.
15097         * config/sparc/sparc.md (vec_perm_constv8qi): Delete in favor of...
15098         * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): ...this
15099         new function.
15100         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
15101
15102 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
15103
15104         * optabs.c (expand_vec_perm_1): Assert that SEL has an integer
15105         vector mode and that that mode matches the mode of the data
15106         being permuted.
15107         (expand_vec_perm): Split handling of non-CONST_VECTOR selectors
15108         out into expand_vec_perm_var.  Do all CONST_VECTOR handling here,
15109         directly using expand_vec_perm_1 when forcing selectors into
15110         registers.
15111         (expand_vec_perm_var): New function, split out from expand_vec_perm.
15112
15113 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
15114
15115         * optabs-query.h (can_vec_perm_p): Delete.
15116         (can_vec_perm_var_p, can_vec_perm_const_p): Declare.
15117         * optabs-query.c (can_vec_perm_p): Split into...
15118         (can_vec_perm_var_p, can_vec_perm_const_p): ...these two functions.
15119         (can_mult_highpart_p): Use can_vec_perm_const_p to test whether a
15120         particular selector is valid.
15121         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
15122         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
15123         (vect_grouped_load_supported): Likewise.
15124         (vect_shift_permute_load_chain): Likewise.
15125         * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
15126         (vect_transform_slp_perm_load): Likewise.
15127         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
15128         (vectorizable_bswap): Likewise.
15129         (vect_gen_perm_mask_checked): Likewise.
15130         * fold-const.c (fold_ternary_loc): Likewise.  Don't take
15131         implementations of variable permutation vectors into account
15132         when deciding which selector to use.
15133         * tree-vect-loop.c (have_whole_vector_shift): Don't check whether
15134         vec_perm_const_optab is supported; instead use can_vec_perm_const_p
15135         with a false third argument.
15136         * tree-vect-generic.c (lower_vec_perm): Use can_vec_perm_const_p
15137         to test whether the constant selector is valid and can_vec_perm_var_p
15138         to test whether a variable selector is valid.
15139
15140 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
15141
15142         * optabs-query.h (can_vec_perm_p): Take a const vec_perm_indices *.
15143         * optabs-query.c (can_vec_perm_p): Likewise.
15144         * fold-const.c (fold_vec_perm): Take a const vec_perm_indices &
15145         instead of vec_perm_indices.
15146         * tree-vectorizer.h (vect_gen_perm_mask_any): Likewise,
15147         (vect_gen_perm_mask_checked): Likewise,
15148         * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise,
15149         (vect_gen_perm_mask_checked): Likewise,
15150
15151 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
15152
15153         * optabs-query.h (qimode_for_vec_perm): Declare.
15154         * optabs-query.c (can_vec_perm_p): Split out qimode search to...
15155         (qimode_for_vec_perm): ...this new function.
15156         * optabs.c (expand_vec_perm): Use qimode_for_vec_perm.
15157
15158 2018-01-02  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
15159
15160         * rtlanal.c (canonicalize_condition): Return 0 if final rtx
15161         does not have a conditional at the top.
15162
15163 2018-01-02  Richard Biener  <rguenther@suse.de>
15164
15165         * ipa-inline.c (big_speedup_p): Fix expression.
15166
15167 2018-01-02  Jan Hubicka  <hubicka@ucw.cz>
15168
15169         PR target/81616
15170         * config/i386/x86-tune-costs.h: Increase cost of integer load costs
15171         for generic 4->6.
15172
15173 2018-01-02  Jan Hubicka  <hubicka@ucw.cz>
15174
15175         PR target/81616
15176         Generic tuning.
15177         * x86-tune-costs.h (generic_cost): Reduce cost of FDIV 20->17,
15178         cost of sqrt 20->14, DIVSS 18->13, DIVSD 32->17, SQRtSS 30->14
15179         and SQRTsD 58->18, cond_not_taken_branch_cost. 2->1. Increase
15180         cond_taken_branch_cost 3->4.
15181
15182 2018-01-01  Jakub Jelinek  <jakub@redhat.com>
15183
15184         PR tree-optimization/83581
15185         * tree-loop-distribution.c (pass_loop_distribution::execute): Return
15186         TODO_cleanup_cfg if any changes have been made.
15187
15188         PR middle-end/83608
15189         * expr.c (store_expr_with_bounds): Use simplify_gen_subreg instead of
15190         convert_modes if target mode has the right side, but different mode
15191         class.
15192
15193         PR middle-end/83609
15194         * expr.c (expand_assignment): Fix up a typo in simplify_gen_subreg
15195         last argument when extracting from CONCAT.  If either from_real or
15196         from_imag is NULL, use expansion through memory.  If result is not
15197         a CONCAT and simplify_gen_subreg fails, try to simplify_gen_subreg
15198         the parts directly to inner mode, if even that fails, use expansion
15199         through memory.
15200
15201         PR middle-end/83623
15202         * expmed.c (expand_shift_1): For 2-byte rotates by BITS_PER_UNIT,
15203         check for bswap in mode rather than HImode and use that in expand_unop
15204         too.
15205 \f
15206 Copyright (C) 2018 Free Software Foundation, Inc.
15207
15208 Copying and distribution of this file, with or without modification,
15209 are permitted in any medium without royalty provided the copyright
15210 notice and this notice are preserved.