]> gcc.gnu.org Git - gcc.git/blob - gcc/ChangeLog
rs6000: Use strlen instead of sizeof - 1
[gcc.git] / gcc / ChangeLog
1 2020-02-12 Segher Boessenkool <segher@kernel.crashing.org>
2
3 * config/rs6000/rs6000.c (rs6000_debug_print_mode): Don't use sizeof
4 where strlen is more legible.
5 (rs6000_builtin_vectorized_libmass): Ditto.
6 (rs6000_print_options_internal): Ditto.
7
8 2020-02-11 Martin Sebor <msebor@redhat.com>
9
10 PR tree-optimization/93683
11 * tree-ssa-alias.c (stmt_kills_ref_p): Avoid using LHS when not set.
12
13 2020-02-11 Michael Meissner <meissner@linux.ibm.com>
14
15 * config/rs6000/predicates.md (cint34_operand): Rename the
16 -mprefixed-addr option to be -mprefixed.
17 * config/rs6000/rs6000-cpus.def (ISA_FUTURE_MASKS_SERVER): Rename
18 the -mprefixed-addr option to be -mprefixed.
19 (OTHER_FUTURE_MASKS): Likewise.
20 (POWERPC_MASKS): Likewise.
21 * config/rs6000/rs6000.c (rs6000_option_override_internal): Rename
22 the -mprefixed-addr option to be -mprefixed. Change error
23 messages to refer to -mprefixed.
24 (num_insns_constant_gpr): Rename the -mprefixed-addr option to be
25 -mprefixed.
26 (rs6000_legitimate_offset_address_p): Likewise.
27 (rs6000_mode_dependent_address): Likewise.
28 (rs6000_opt_masks): Change the spelling of "-mprefixed-addr" to be
29 "-mprefixed" for target attributes and pragmas.
30 (address_to_insn_form): Rename the -mprefixed-addr option to be
31 -mprefixed.
32 (rs6000_adjust_insn_length): Likewise.
33 * config/rs6000/rs6000.h (FINAL_PRESCAN_INSN): Rename the
34 -mprefixed-addr option to be -mprefixed.
35 (ASM_OUTPUT_OPCODE): Likewise.
36 * config/rs6000/rs6000.md (prefixed insn attribute): Rename the
37 -mprefixed-addr option to be -mprefixed.
38 * config/rs6000/rs6000.opt (-mprefixed): Rename the
39 -mprefixed-addr option to be prefixed. Change the option from
40 being undocumented to being documented.
41 * doc/invoke.texi (RS/6000 and PowerPC Options): Document the
42 -mprefixed option. Update the -mpcrel documentation to mention
43 -mprefixed.
44
45 2020-02-11 Hans-Peter Nilsson <hp@axis.com>
46
47 * ira-conflicts.c (print_hard_reg_set): Correct output for sets
48 including FIRST_PSEUDO_REGISTER - 1.
49 * ira-color.c (print_hard_reg_set): Ditto.
50
51 2020-02-11 Stam Markianos-Wright <stam.markianos-wright@arm.com>
52
53 * config/arm/arm-builtins.c (enum arm_type_qualifiers):
54 (USTERNOP_QUALIFIERS): New define.
55 (USMAC_LANE_QUADTUP_QUALIFIERS): New define.
56 (SUMAC_LANE_QUADTUP_QUALIFIERS): New define.
57 (arm_expand_builtin_args): Add case ARG_BUILTIN_LANE_QUADTUP_INDEX.
58 (arm_expand_builtin_1): Add qualifier_lane_quadtup_index.
59 * config/arm/arm_neon.h (vusdot_s32): New.
60 (vusdot_lane_s32): New.
61 (vusdotq_lane_s32): New.
62 (vsudot_lane_s32): New.
63 (vsudotq_lane_s32): New.
64 * config/arm/arm_neon_builtins.def (usdot, usdot_lane,sudot_lane): New.
65 * config/arm/iterators.md (DOTPROD_I8MM): New.
66 (sup, opsuffix): Add <us/su>.
67 * config/arm/neon.md (neon_usdot, <us/su>dot_lane: New.
68 * config/arm/unspecs.md (UNSPEC_DOT_US, UNSPEC_DOT_SU): New.
69
70 2020-02-11 Richard Biener <rguenther@suse.de>
71
72 PR tree-optimization/93661
73 PR tree-optimization/93662
74 * tree-ssa-sccvn.c (vn_reference_lookup_3): Properly guard
75 tree_to_poly_int64.
76 * tree-sra.c (get_access_for_expr): Likewise.
77
78 2020-02-10 Jakub Jelinek <jakub@redhat.com>
79
80 PR target/93637
81 * config/i386/sse.md (VI_256_AVX2): New mode iterator.
82 (vcond_mask_<mode><sseintvecmodelower>): Use it instead of VI_256.
83 Change condition from TARGET_AVX2 to TARGET_AVX.
84
85 2020-02-10 Iain Sandoe <iain@sandoe.co.uk>
86
87 PR other/93641
88 * config/darwin-c.c (darwin_cfstring_ref_p): Fix up last
89 argument of strncmp.
90
91 2020-02-10 Hans-Peter Nilsson <hp@axis.com>
92
93 Try to generate zero-based comparisons.
94 * config/cris/cris.c (cris_reduce_compare): New function.
95 * config/cris/cris-protos.h (cris_reduce_compare): Add prototype.
96 * config/cris/cris.md ("cbranch<mode>4", "cbranchdi4", "cstoredi4")
97 (cstore<mode>4"): Apply cris_reduce_compare in expanders.
98
99 2020-02-10 Richard Earnshaw <rearnsha@arm.com>
100
101 PR target/91913
102 * config/arm/arm.md (movsi_compare0): Allow SP as a source register
103 in Thumb state and also as a destination in Arm state. Add T16
104 variants.
105
106 2020-02-10 Hans-Peter Nilsson <hp@axis.com>
107
108 * md.texi (Define Subst): Match closing paren in example.
109
110 2020-02-10 Jakub Jelinek <jakub@redhat.com>
111
112 PR target/58218
113 PR other/93641
114 * config/i386/i386.c (x86_64_elf_section_type_flags): Fix up last
115 arguments of strncmp.
116
117 2020-02-10 Feng Xue <fxue@os.amperecomputing.com>
118
119 PR ipa/93203
120 * ipa-cp.c (ipcp_lattice::add_value): Add source with same call edge
121 but different source value.
122 (adjust_callers_for_value_intersection): New function.
123 (gather_edges_for_value): Adjust order of callers to let a
124 non-self-recursive caller be the first element.
125 (self_recursive_pass_through_p): Add a new parameter "simple", and
126 check generalized self-recursive pass-through jump function.
127 (self_recursive_agg_pass_through_p): Likewise.
128 (find_more_scalar_values_for_callers_subset): Compute value from
129 pass-through jump function for self-recursive.
130 (intersect_with_plats): Cleanup previous implementation code for value
131 itersection with self-recursive call edge.
132 (intersect_with_agg_replacements): Likewise.
133 (intersect_aggregates_with_edge): Deduce value from pass-through jump
134 function for self-recursive call edge. Cleanup previous implementation
135 code for value intersection with self-recursive call edge.
136 (decide_whether_version_node): Remove dead callers and adjust order
137 to let a non-self-recursive caller be the first element.
138
139 2020-02-09 Uroš Bizjak <ubizjak@gmail.com>
140
141 * recog.c: Move pass_split_before_sched2 code in front of
142 pass_split_before_regstack.
143 (pass_data_split_before_sched2): Rename pass to split3 from split4.
144 (pass_data_split_before_regstack): Rename pass to split4 from split3.
145 (rest_of_handle_split_before_sched2): Remove.
146 (pass_split_before_sched2::execute): Unconditionally call
147 split_all_insns.
148 (enable_split_before_sched2): New function.
149 (pass_split_before_sched2::gate): Use enable_split_before_sched2.
150 (pass_split_before_regstack::gate): Ditto.
151 * config/nds32/nds32.c (nds32_split_double_word_load_store_p):
152 Update name check for renamed split4 pass.
153 * config/sh/sh.c (register_sh_passes): Update pass insertion
154 point for renamed split4 pass.
155
156 2020-02-09 Jakub Jelinek <jakub@redhat.com>
157
158 * gimplify.c (gimplify_adjust_omp_clauses_1): Promote
159 DECL_IN_CONSTANT_POOL variables into "omp declare target" to avoid
160 copying them around between host and target.
161
162 2020-02-08 Andrew Pinski <apinski@marvell.com>
163
164 PR target/91927
165 * config/aarch64/aarch64-simd.md (movmisalign<mode>): Check
166 STRICT_ALIGNMENT also.
167
168 2020-02-08 Jim Wilson <jimw@sifive.com>
169
170 PR target/93532
171 * config/riscv/riscv.h (HARD_REGNO_CALLER_SAVE_MODE): Define.
172
173 2020-02-08 Uroš Bizjak <ubizjak@gmail.com>
174 Jakub Jelinek <jakub@redhat.com>
175
176 PR target/65782
177 * config/i386/i386.h (CALL_USED_REGISTERS): Make
178 xmm16-xmm31 call-used even in 64-bit ms-abi.
179
180 2020-02-07 Dennis Zhang <dennis.zhang@arm.com>
181
182 * config/aarch64/aarch64-simd-builtins.def (simd_smmla): New entry.
183 (simd_ummla, simd_usmmla): Likewise.
184 * config/aarch64/aarch64-simd.md (aarch64_simd_<sur>mmlav16qi): New.
185 * config/aarch64/arm_neon.h (vmmlaq_s32, vmmlaq_u32): New.
186 (vusmmlaq_s32): New.
187
188 2020-02-07 Richard Biener <rguenther@suse.de>
189
190 PR middle-end/93519
191 * tree-inline.c (fold_marked_statements): Do a PRE walk,
192 skipping unreachable regions.
193 (optimize_inline_calls): Skip folding stmts when we didn't
194 inline.
195
196 2020-02-07 H.J. Lu <hongjiu.lu@intel.com>
197
198 PR target/85667
199 * config/i386/i386.c (function_arg_ms_64): Add a type argument.
200 Don't return aggregates with only SFmode and DFmode in SSE
201 register.
202 (ix86_function_arg): Pass arg.type to function_arg_ms_64.
203
204 2020-02-07 Jakub Jelinek <jakub@redhat.com>
205
206 PR target/93122
207 * config/rs6000/rs6000-logue.c
208 (rs6000_emit_probe_stack_range_stack_clash): Always use gen_add3_insn,
209 if it fails, move rs into end_addr and retry. Add
210 REG_FRAME_RELATED_EXPR note whenever it returns more than one insn or
211 the insn pattern doesn't describe well what exactly happens to
212 dwarf2cfi.c.
213
214 PR target/93594
215 * config/i386/predicates.md (avx_identity_operand): Remove.
216 * config/i386/sse.md (*avx_vec_concat<mode>_1): Remove.
217 (avx_<castmode><avxsizesuffix>_<castmode>,
218 avx512f_<castmode><avxsizesuffix>_256<castmode>): Change patterns to
219 a VEC_CONCAT of the operand and UNSPEC_CAST.
220 (avx512f_<castmode><avxsizesuffix>_<castmode>): Change pattern to
221 a VEC_CONCAT of VEC_CONCAT of the operand and UNSPEC_CAST with
222 UNSPEC_CAST.
223
224 PR target/93611
225 * config/i386/i386.c (ix86_lea_outperforms): Make sure to clear
226 recog_data.insn if distance_non_agu_define changed it.
227
228 2020-02-06 Michael Meissner <meissner@linux.ibm.com>
229
230 PR target/93569
231 * config/rs6000/rs6000.c (reg_to_non_prefixed): Before ISA 3.0
232 we only had X-FORM (reg+reg) addressing for vectors. Also before
233 ISA 3.0, we only had X-FORM addressing for scalars in the
234 traditional Altivec registers.
235
236 2020-02-06 <zhongyunde@huawei.com>
237 Vladimir Makarov <vmakarov@redhat.com>
238
239 PR rtl-optimization/93561
240 * lra-assigns.c (spill_for): Check that tested hard regno is not out of
241 hard register range.
242
243 2020-02-06 Richard Sandiford <richard.sandiford@arm.com>
244
245 * config/aarch64/aarch64.md (aarch64_movk<mode>): Add a type
246 attribute.
247
248 2020-02-06 Segher Boessenkool <segher@kernel.crashing.org>
249
250 * config/rs6000/rs6000.c (rs6000_emit_set_long_const): Handle the case
251 where the low and the high 32 bits are equal to each other specially,
252 with an rldimi instruction.
253
254 2020-02-06 Mihail Ionescu <mihail.ionescu@arm.com>
255
256 * config/arm/arm-cpus.in: Set profile M for armv8.1-m.main.
257
258 2020-02-06 Mihail Ionescu <mihail.ionescu@arm.com>
259
260 * config/arm/arm-tables.opt: Regenerate.
261
262 2020-02-06 Richard Sandiford <richard.sandiford@arm.com>
263
264 PR target/87763
265 * config/aarch64/aarch64-protos.h (aarch64_movk_shift): Declare.
266 * config/aarch64/aarch64.c (aarch64_movk_shift): New function.
267 * config/aarch64/aarch64.md (aarch64_movk<mode>): New pattern.
268
269 2020-02-06 Richard Sandiford <richard.sandiford@arm.com>
270
271 PR rtl-optimization/87763
272 * config/aarch64/aarch64.md (*ashiftsi_extvdi_bfiz): New pattern.
273
274 2020-02-06 Delia Burduv <delia.burduv@arm.com>
275
276 * config/aarch64/aarch64-simd-builtins.def
277 (bfmlaq): New built-in function.
278 (bfmlalb): New built-in function.
279 (bfmlalt): New built-in function.
280 (bfmlalb_lane): New built-in function.
281 (bfmlalt_lane): New built-in function.
282 * config/aarch64/aarch64-simd.md
283 (aarch64_bfmmlaqv4sf): New pattern.
284 (aarch64_bfmlal<bt>v4sf): New pattern.
285 (aarch64_bfmlal<bt>_lane<q>v4sf): New pattern.
286 * config/aarch64/arm_neon.h (vbfmmlaq_f32): New intrinsic.
287 (vbfmlalbq_f32): New intrinsic.
288 (vbfmlaltq_f32): New intrinsic.
289 (vbfmlalbq_lane_f32): New intrinsic.
290 (vbfmlaltq_lane_f32): New intrinsic.
291 (vbfmlalbq_laneq_f32): New intrinsic.
292 (vbfmlaltq_laneq_f32): New intrinsic.
293 * config/aarch64/iterators.md (BF_MLA): New int iterator.
294 (bt): New int attribute.
295
296 2020-02-06 Uroš Bizjak <ubizjak@gmail.com>
297
298 * config/i386/i386.md (*pushtf): Emit "#" instead of
299 calling gcc_unreachable in insn output.
300 (*pushxf): Ditto.
301 (*pushdf): Ditto.
302 (*pushsf_rex64): Ditto for alternatives other than 1.
303 (*pushsf): Ditto for alternatives other than 1.
304
305 2020-02-06 Martin Liska <mliska@suse.cz>
306
307 PR gcov-profile/91971
308 PR gcov-profile/93466
309 * coverage.c (coverage_init): Revert mangling of
310 path into filename. It can lead to huge filename length.
311 Creation of subfolders seem more natural.
312
313 2020-02-06 Stam Markianos-Wright <stam.markianos-wright@arm.com>
314
315 PR target/93300
316 * config/arm/arm.c (arm_block_arith_comp_libfuncs_for_mode): New.
317 (arm_init_libfuncs): Add BFmode support to block spurious BF libfuncs.
318 Use arm_block_arith_comp_libfuncs_for_mode for HFmode.
319
320 2020-02-06 Jakub Jelinek <jakub@redhat.com>
321
322 PR target/93594
323 * config/i386/predicates.md (avx_identity_operand): New predicate.
324 * config/i386/sse.md (*avx_vec_concat<mode>_1): New
325 define_insn_and_split.
326
327 PR libgomp/93515
328 * omp-low.c (use_pointer_for_field): For nested constructs, also
329 look for map clauses on target construct.
330 (scan_omp_1_stmt) <case GIMPLE_OMP_TARGET>: Bump temporarily
331 taskreg_nesting_level.
332
333 PR libgomp/93515
334 * gimplify.c (gimplify_scan_omp_clauses) <do_notice>: If adding
335 shared clause, call omp_notice_variable on outer context if any.
336
337 2020-02-05 Jason Merrill <jason@redhat.com>
338
339 PR c++/92003
340 * symtab.c (symtab_node::nonzero_address): A DECL_COMDAT decl has
341 non-zero address even if weak and not yet defined.
342
343 2020-02-05 Martin Sebor <msebor@redhat.com>
344
345 PR tree-optimization/92765
346 * gimple-fold.c (get_range_strlen_tree): Handle MEM_REF and PARM_DECL.
347 * tree-ssa-strlen.c (compute_string_length): Remove.
348 (determine_min_objsize): Remove.
349 (get_len_or_size): Add an argument. Call get_range_strlen_dynamic.
350 Avoid using type size as the upper bound on string length.
351 (handle_builtin_string_cmp): Add an argument. Adjust.
352 (strlen_check_and_optimize_call): Pass additional argument to
353 handle_builtin_string_cmp.
354
355 2020-02-05 Uroš Bizjak <ubizjak@gmail.com>
356
357 * config/i386/i386.md (*pushdi2_rex64 peephole2): Remove.
358 (*pushdi2_rex64 peephole2): Unconditionally split after
359 epilogue_completed.
360 (*ashl<mode>3_doubleword): Ditto.
361 (*<shift_insn><mode>3_doubleword): Ditto.
362
363 2020-02-05 Michael Meissner <meissner@linux.ibm.com>
364
365 PR target/93568
366 * config/rs6000/rs6000.c (get_vector_offset): Fix
367
368 2020-02-05 Andrew Stubbs <ams@codesourcery.com>
369
370 * config/gcn/t-gcn-hsa (MULTILIB_OPTIONS): Use / not space.
371
372 2020-02-05 David Malcolm <dmalcolm@redhat.com>
373
374 * doc/analyzer.texi
375 (Special Functions for Debugging the Analyzer): Update description
376 of __analyzer_dump_exploded_nodes.
377
378 2020-02-05 Jakub Jelinek <jakub@redhat.com>
379
380 PR target/92190
381 * config/i386/i386-features.c (ix86_add_reg_usage_to_vzeroupper): Only
382 include sets and not clobbers in the vzeroupper pattern.
383 * config/i386/sse.md (*avx_vzeroupper): Require in insn condition that
384 the parallel has 17 (64-bit) or 9 (32-bit) elts.
385 (*avx_vzeroupper_1): New define_insn_and_split.
386
387 PR target/92190
388 * recog.c (pass_split_after_reload::gate): For STACK_REGS targets,
389 don't run when !optimize.
390 (pass_split_before_regstack::gate): For STACK_REGS targets, run even
391 when !optimize.
392
393 2020-02-05 Richard Biener <rguenther@suse.de>
394
395 PR middle-end/90648
396 * genmatch.c (dt_node::gen_kids_1): Emit number of argument
397 checks before matching calls.
398
399 2020-02-05 Jakub Jelinek <jakub@redhat.com>
400
401 * tree-ssa-alias.c (aliasing_matching_component_refs_p): Fix up
402 function comment typo.
403
404 PR middle-end/93555
405 * omp-simd-clone.c (expand_simd_clones): If simd_clone_mangle or
406 simd_clone_create failed when i == 0, adjust clone->nargs by
407 clone->inbranch.
408
409 2020-02-05 Martin Liska <mliska@suse.cz>
410
411 PR c++/92717
412 * doc/invoke.texi: Document that one should
413 not combine ASLR and -fpch.
414
415 2020-02-04 Richard Biener <rguenther@suse.de>
416
417 PR tree-optimization/93538
418 * match.pd (addr EQ/NE ptr): Amend to handle &ptr->x EQ/NE ptr.
419
420 2020-02-04 Richard Biener <rguenther@suse.de>
421
422 PR tree-optimization/91123
423 * tree-ssa-sccvn.c (vn_walk_cb_data::finish): New method.
424 (vn_walk_cb_data::last_vuse): New member.
425 (vn_walk_cb_data::saved_operands): Likewsie.
426 (vn_walk_cb_data::~vn_walk_cb_data): Release saved_operands.
427 (vn_walk_cb_data::push_partial_def): Use finish.
428 (vn_reference_lookup_2): Update last_vuse and use finish if
429 we've saved operands.
430 (vn_reference_lookup_3): Use finish and update calls to
431 push_partial_defs everywhere. When translating through
432 memcpy or aggregate copies save off operands and alias-set.
433 (eliminate_dom_walker::eliminate_stmt): Restore VN_WALKREWRITE
434 operation for redundant store removal.
435
436 2020-02-04 Richard Biener <rguenther@suse.de>
437
438 PR tree-optimization/92819
439 * tree-ssa-forwprop.c (simplify_vector_constructor): Avoid
440 generating more stmts than before.
441
442 2020-02-04 Martin Liska <mliska@suse.cz>
443
444 * config/arm/arm.c (arm_gen_far_branch): Move the function
445 outside of selftests.
446
447 2020-02-03 Michael Meissner <meissner@linux.ibm.com>
448
449 * config/rs6000/rs6000.c (adjust_vec_address_pcrel): New helper
450 function to adjust PC-relative vector addresses.
451 (rs6000_adjust_vec_address): Call adjust_vec_address_pcrel to
452 handle vectors with PC-relative addresses.
453
454 2020-02-03 Michael Meissner <meissner@linux.ibm.com>
455
456 * config/rs6000/rs6000.c (reg_to_non_prefixed): Add forward
457 reference.
458 (hard_reg_and_mode_to_addr_mask): Delete.
459 (rs6000_adjust_vec_address): If the original vector address
460 was REG+REG or REG+OFFSET and the element is not zero, do the add
461 of the elements in the original address before adding the offset
462 for the vector element. Use address_to_insn_form to validate the
463 address using the register being loaded, rather than guessing
464 whether the address is a DS-FORM or DQ-FORM address.
465
466 2020-02-03 Michael Meissner <meissner@linux.ibm.com>
467
468 * config/rs6000/rs6000.c (get_vector_offset): New helper function
469 to calculate the offset in memory from the start of a vector of a
470 particular element. Add code to keep the element number in
471 bounds if the element number is variable.
472 (rs6000_adjust_vec_address): Move calculation of offset of the
473 vector element to get_vector_offset.
474 (rs6000_split_vec_extract_var): Do not do the initial AND of
475 element here, move the code to get_vector_offset.
476
477 2020-02-03 Michael Meissner <meissner@linux.ibm.com>
478
479 * config/rs6000/rs6000.c (rs6000_adjust_vec_address): Add some
480 gcc_asserts.
481
482 2020-02-03 Segher Boessenkool <segher@kernel.crashing.org>
483
484 * config/rs6000/constraints.md: Improve documentation.
485
486 2020-02-03 Richard Earnshaw <rearnsha@arm.com>
487
488 PR target/93548
489 * config/arm/t-arm: ($(srcdir)/config/arm/arm-tune.md)
490 ($(srcdir)/config/arm/arm-tables.opt): Use move-if-change.
491
492 2020-02-03 Andrew Stubbs <ams@codesourcery.com>
493
494 * config.gcc: Remove "carrizo" support.
495 * config/gcn/gcn-opts.h (processor_type): Likewise.
496 * config/gcn/gcn.c (gcn_omp_device_kind_arch_isa): Likewise.
497 * config/gcn/gcn.opt (gpu_type): Likewise.
498 * config/gcn/t-omp-device: Likewise.
499
500 2020-02-03 Stam Markianos-Wright <stam.markianos-wright@arm.com>
501
502 PR target/91816
503 * config/arm/arm-protos.h: New function arm_gen_far_branch prototype.
504 * config/arm/arm.c (arm_gen_far_branch): New function
505 arm_gen_far_branch.
506 * config/arm/arm.md: Update b<cond> for Thumb2 range checks.
507
508 2020-02-03 Julian Brown <julian@codesourcery.com>
509 Tobias Burnus <tobias@codesourcery.com>
510
511 * doc/invoke.texi: Update mention of OpenACC version to 2.6.
512
513 2020-02-03 Jakub Jelinek <jakub@redhat.com>
514
515 PR target/93533
516 * config/s390/s390.md (popcounthi2_z196): Fix up expander to emit
517 valid RTL to sum up the lowest and second lowest bytes of the popcnt
518 result.
519
520 2020-02-02 Vladimir Makarov <vmakarov@redhat.com>
521
522 PR rtl-optimization/91333
523 * ira-color.c (struct allocno_color_data): Add member
524 hard_reg_prefs.
525 (init_allocno_threads): Set the member up.
526 (bucket_allocno_compare_func): Add compare hard reg
527 prefs.
528
529 2020-01-31 Sandra Loosemore <sandra@codesourcery.com>
530
531 nios2: Support for GOT-relative DW_EH_PE_datarel encoding.
532
533 * configure.ac [nios2-*-*]: Check HAVE_AS_NIOS2_GOTOFF_RELOCATION.
534 * config.in: Regenerated.
535 * configure: Regenerated.
536 * config/nios2/nios2.h (ASM_PREFERRED_EH_DATA_FORMAT): Fix handling
537 for PIC when HAVE_AS_NIOS2_GOTOFF_RELOCATION.
538 (ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX): New.
539
540 2020-02-01 Andrew Burgess <andrew.burgess@embecosm.com>
541
542 * configure: Regenerate.
543
544 2020-01-31 Vladimir Makarov <vmakarov@redhat.com>
545
546 PR rtl-optimization/91333
547 * ira-color.c (bucket_allocno_compare_func): Move conflict hard
548 reg preferences comparison up.
549
550 2020-01-31 Richard Sandiford <richard.sandiford@arm.com>
551
552 * config/aarch64/aarch64.h (TARGET_SVE_BF16): New macro.
553 * config/aarch64/aarch64-sve-builtins-sve2.h (svcvtnt): Move to
554 aarch64-sve-builtins-base.h.
555 * config/aarch64/aarch64-sve-builtins-sve2.cc (svcvtnt): Move to
556 aarch64-sve-builtins-base.cc.
557 * config/aarch64/aarch64-sve-builtins-base.h (svbfdot, svbfdot_lane)
558 (svbfmlalb, svbfmlalb_lane, svbfmlalt, svbfmlalt_lane, svbfmmla)
559 (svcvtnt): Declare.
560 * config/aarch64/aarch64-sve-builtins-base.cc (svbfdot, svbfdot_lane)
561 (svbfmlalb, svbfmlalb_lane, svbfmlalt, svbfmlalt_lane, svbfmmla)
562 (svcvtnt): New functions.
563 * config/aarch64/aarch64-sve-builtins-base.def (svbfdot, svbfdot_lane)
564 (svbfmlalb, svbfmlalb_lane, svbfmlalt, svbfmlalt_lane, svbfmmla)
565 (svcvtnt): New functions.
566 (svcvt): Add a form that converts f32 to bf16.
567 * config/aarch64/aarch64-sve-builtins-shapes.h (ternary_bfloat)
568 (ternary_bfloat_lane, ternary_bfloat_lanex2, ternary_bfloat_opt_n):
569 Declare.
570 * config/aarch64/aarch64-sve-builtins-shapes.cc (parse_element_type):
571 Treat B as bfloat16_t.
572 (ternary_bfloat_lane_base): New class.
573 (ternary_bfloat_def): Likewise.
574 (ternary_bfloat): New shape.
575 (ternary_bfloat_lane_def): New class.
576 (ternary_bfloat_lane): New shape.
577 (ternary_bfloat_lanex2_def): New class.
578 (ternary_bfloat_lanex2): New shape.
579 (ternary_bfloat_opt_n_def): New class.
580 (ternary_bfloat_opt_n): New shape.
581 * config/aarch64/aarch64-sve-builtins.cc (TYPES_cvt_bfloat): New macro.
582 * config/aarch64/aarch64-sve.md (@aarch64_sve_<sve_fp_op>vnx4sf)
583 (@aarch64_sve_<sve_fp_op>_lanevnx4sf): New patterns.
584 (@aarch64_sve_<optab>_trunc<VNx4SF_ONLY:mode><VNx8BF_ONLY:mode>)
585 (@cond_<optab>_trunc<VNx4SF_ONLY:mode><VNx8BF_ONLY:mode>): Likewise.
586 (*cond_<optab>_trunc<VNx4SF_ONLY:mode><VNx8BF_ONLY:mode>): Likewise.
587 (@aarch64_sve_cvtnt<VNx8BF_ONLY:mode>): Likewise.
588 * config/aarch64/aarch64-sve2.md (@aarch64_sve2_cvtnt<mode>): Key
589 the pattern off the narrow mode instead of the wider one.
590 * config/aarch64/iterators.md (VNx8BF_ONLY): New mode iterator.
591 (UNSPEC_BFMLALB, UNSPEC_BFMLALT, UNSPEC_BFMMLA): New unspecs.
592 (sve_fp_op): Handle them.
593 (SVE_BFLOAT_TERNARY_LONG): New int itertor.
594 (SVE_BFLOAT_TERNARY_LONG_LANE): Likewise.
595
596 2020-01-31 Richard Sandiford <richard.sandiford@arm.com>
597
598 * config/aarch64/arm_sve.h: Include arm_bf16.h.
599 * config/aarch64/aarch64-modes.def (BF): Move definition before
600 VECTOR_MODES. Remove separate VECTOR_MODES for V4BF and V8BF.
601 (SVE_MODES): Handle BF modes.
602 * config/aarch64/aarch64.c (aarch64_classify_vector_mode): Handle
603 BF modes.
604 (aarch64_full_sve_mode): Likewise.
605 * config/aarch64/iterators.md (SVE_STRUCT): Add VNx16BF, VNx24BF
606 and VNx32BF.
607 (SVE_FULL, SVE_FULL_HSD, SVE_ALL): Add VNx8BF.
608 (Vetype, Vesize, Vctype, VEL, Vel, VEL_INT, V128, v128, vwcore)
609 (V_INT_EQUIV, v_int_equiv, V_FP_EQUIV, v_fp_equiv, vector_count)
610 (insn_length, VSINGLE, vsingle, VPRED, vpred, VDOUBLE): Handle the
611 new SVE BF modes.
612 * config/aarch64/aarch64-sve-builtins.h (TYPE_bfloat): New
613 type_class_index.
614 * config/aarch64/aarch64-sve-builtins.cc (TYPES_all_arith): New macro.
615 (TYPES_all_data): Add bf16.
616 (TYPES_reinterpret1, TYPES_reinterpret): Likewise.
617 (register_tuple_type): Increase buffer size.
618 * config/aarch64/aarch64-sve-builtins.def (svbfloat16_t): New type.
619 (bf16): New type suffix.
620 * config/aarch64/aarch64-sve-builtins-base.def (svabd, svadd, svaddv)
621 (svcmpeq, svcmpge, svcmpgt, svcmple, svcmplt, svcmpne, svmad, svmax)
622 (svmaxv, svmin, svminv, svmla, svmls, svmsb, svmul, svsub, svsubr):
623 Change type from all_data to all_arith.
624 * config/aarch64/aarch64-sve-builtins-sve2.def (svaddp, svmaxp)
625 (svminp): Likewise.
626
627 2020-01-31 Dennis Zhang <dennis.zhang@arm.com>
628 Matthew Malcomson <matthew.malcomson@arm.com>
629 Richard Sandiford <richard.sandiford@arm.com>
630
631 * doc/invoke.texi (f32mm): Document new AArch64 -march= extension.
632 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Define
633 __ARM_FEATURE_SVE_MATMUL_INT8, __ARM_FEATURE_SVE_MATMUL_FP32 and
634 __ARM_FEATURE_SVE_MATMUL_FP64 as appropriate. Don't define
635 __ARM_FEATURE_MATMUL_FP64.
636 * config/aarch64/aarch64-option-extensions.def (fp, simd, fp16)
637 (sve): Add AARCH64_FL_F32MM to the list of extensions that should
638 be disabled at the same time.
639 (f32mm): New extension.
640 * config/aarch64/aarch64.h (AARCH64_FL_F32MM): New macro.
641 (AARCH64_FL_F64MM): Bump to the next bit up.
642 (AARCH64_ISA_F32MM, TARGET_SVE_I8MM, TARGET_F32MM, TARGET_SVE_F32MM)
643 (TARGET_SVE_F64MM): New macros.
644 * config/aarch64/iterators.md (SVE_MATMULF): New mode iterator.
645 (UNSPEC_FMMLA, UNSPEC_SMATMUL, UNSPEC_UMATMUL, UNSPEC_USMATMUL)
646 (UNSPEC_TRN1Q, UNSPEC_TRN2Q, UNSPEC_UZP1Q, UNSPEC_UZP2Q, UNSPEC_ZIP1Q)
647 (UNSPEC_ZIP2Q): New unspeccs.
648 (DOTPROD_US_ONLY, PERMUTEQ, MATMUL, FMMLA): New int iterators.
649 (optab, sur, perm_insn): Handle the new unspecs.
650 (sve_fp_op): Handle UNSPEC_FMMLA. Resort.
651 * config/aarch64/aarch64-sve.md (@aarch64_sve_ld1ro<mode>): Use
652 TARGET_SVE_F64MM instead of separate tests.
653 (@aarch64_<DOTPROD_US_ONLY:sur>dot_prod<vsi2qi>): New pattern.
654 (@aarch64_<DOTPROD_US_ONLY:sur>dot_prod_lane<vsi2qi>): Likewise.
655 (@aarch64_sve_add_<MATMUL:optab><vsi2qi>): Likewise.
656 (@aarch64_sve_<FMMLA:sve_fp_op><mode>): Likewise.
657 (@aarch64_sve_<PERMUTEQ:optab><mode>): Likewise.
658 * config/aarch64/aarch64-sve-builtins.cc (TYPES_s_float): New macro.
659 (TYPES_s_float_hsd_integer, TYPES_s_float_sd_integer): Use it.
660 (TYPES_s_signed): New macro.
661 (TYPES_s_integer): Use it.
662 (TYPES_d_float): New macro.
663 (TYPES_d_data): Use it.
664 * config/aarch64/aarch64-sve-builtins-shapes.h (mmla): Declare.
665 (ternary_intq_uintq_lane, ternary_intq_uintq_opt_n, ternary_uintq_intq)
666 (ternary_uintq_intq_lane, ternary_uintq_intq_opt_n): Likewise.
667 * config/aarch64/aarch64-sve-builtins-shapes.cc (mmla_def): New class.
668 (svmmla): New shape.
669 (ternary_resize2_opt_n_base): Add TYPE_CLASS2 and TYPE_CLASS3
670 template parameters.
671 (ternary_resize2_lane_base): Likewise.
672 (ternary_resize2_base): New class.
673 (ternary_qq_lane_base): Likewise.
674 (ternary_intq_uintq_lane_def): Likewise.
675 (ternary_intq_uintq_lane): New shape.
676 (ternary_intq_uintq_opt_n_def): New class
677 (ternary_intq_uintq_opt_n): New shape.
678 (ternary_qq_lane_def): Inherit from ternary_qq_lane_base.
679 (ternary_uintq_intq_def): New class.
680 (ternary_uintq_intq): New shape.
681 (ternary_uintq_intq_lane_def): New class.
682 (ternary_uintq_intq_lane): New shape.
683 (ternary_uintq_intq_opt_n_def): New class.
684 (ternary_uintq_intq_opt_n): New shape.
685 * config/aarch64/aarch64-sve-builtins-base.h (svmmla, svsudot)
686 (svsudot_lane, svtrn1q, svtrn2q, svusdot, svusdot_lane, svusmmla)
687 (svuzp1q, svuzp2q, svzip1q, svzip2q): Declare.
688 * config/aarch64/aarch64-sve-builtins-base.cc (svdot_lane_impl):
689 Generalize to...
690 (svdotprod_lane_impl): ...this new class.
691 (svmmla_impl, svusdot_impl): New classes.
692 (svdot_lane): Update to use svdotprod_lane_impl.
693 (svmmla, svsudot, svsudot_lane, svtrn1q, svtrn2q, svusdot)
694 (svusdot_lane, svusmmla, svuzp1q, svuzp2q, svzip1q, svzip2q): New
695 functions.
696 * config/aarch64/aarch64-sve-builtins-base.def (svmmla): New base
697 function, with no types defined.
698 (svmmla, svusmmla, svsudot, svsudot_lane, svusdot, svusdot_lane): New
699 AARCH64_FL_I8MM functions.
700 (svmmla): New AARCH64_FL_F32MM function.
701 (svld1ro): Depend only on AARCH64_FL_F64MM, not on AARCH64_FL_V8_6.
702 (svmmla, svtrn1q, svtrn2q, svuz1q, svuz2q, svzip1q, svzip2q): New
703 AARCH64_FL_F64MM function.
704 (REQUIRED_EXTENSIONS):
705
706 2020-01-31 Andrew Stubbs <ams@codesourcery.com>
707
708 * config/gcn/gcn-valu.md (addv64di3_exec): Allow one '0' in each
709 alternative only.
710
711 2020-01-31 Uroš Bizjak <ubizjak@gmail.com>
712
713 * config/i386/i386.md (*movoi_internal_avx): Do not check for
714 TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL. Remove MODE_V8SF handling.
715 (*movti_internal): Do not check for
716 TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL.
717 (*movtf_internal): Move check for TARGET_SSE2 and size optimization
718 just after check for TARGET_AVX.
719 (*movdf_internal): Ditto.
720 * config/i386/mmx.md (*mov<mode>_internal): Do not check for
721 TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL.
722 * config/i386/sse.md (mov<mode>_internal): Only check
723 TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL with V2DFmode. Move check
724 for TARGET_SSE2 and size optimization just after check for TARGET_AVX.
725 (<sse>_andnot<mode>3<mask_name>): Move check for
726 TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL after check for TARGET_AVX.
727 (<code><mode>3<mask_name>): Ditto.
728 (*andnot<mode>3): Ditto.
729 (*andnottf3): Ditto.
730 (*<code><mode>3): Ditto.
731 (*<code>tf3): Ditto.
732 (*andnot<VI:mode>3): Remove
733 TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL handling.
734 (<mask_codefor><code><VI48_AVX_AVX512F:mode>3<mask_name>): Ditto.
735 (*<code><VI12_AVX_AVX512F:mode>3): Ditto.
736 (sse4_1_blendv<ssemodesuffix>): Ditto.
737 * config/i386/x86-tune.def (X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL):
738 Explain that tune applies to 128bit instructions only.
739
740 2020-01-31 Kwok Cheung Yeung <kcy@codesourcery.com>
741
742 * config/gcn/mkoffload.c (process_asm): Add sgpr_count and vgpr_count
743 to definition of hsa_kernel_description. Parse assembly to find SGPR
744 and VGPR count of kernel and store in hsa_kernel_description.
745
746 2020-01-31 Tamar Christina <tamar.christina@arm.com>
747
748 PR rtl-optimization/91838
749 * simplify-rtx.c (simplify_binary_operation_1): Update LSHIFTRT case
750 to truncate if allowed or reject combination.
751
752 2020-01-31 Andrew Stubbs <ams@codesourcery.com>
753
754 * tree-ssa-loop-ivopts.c (get_iv): Use sizetype for zero-step.
755 (find_inv_vars_cb): Likewise.
756
757 2020-01-31 David Malcolm <dmalcolm@redhat.com>
758
759 * calls.c (special_function_p): Split out the check for DECL_NAME
760 being non-NULL and fndecl being extern at file scope into a
761 new maybe_special_function_p and call it. Drop check for fndecl
762 being non-NULL that was after a usage of DECL_NAME (fndecl).
763 * tree.h (maybe_special_function_p): New inline function.
764
765 2020-01-30 Andrew Stubbs <ams@codesourcery.com>
766
767 * config/gcn/gcn-valu.md (gather<mode>_exec): Move contents ...
768 (mask_gather_load<mode>): ... here, and zero-initialize the
769 destination.
770 (maskload<mode>di): Zero-initialize the destination.
771 * config/gcn/gcn.c:
772
773 2020-01-30 David Malcolm <dmalcolm@redhat.com>
774
775 PR analyzer/93356
776 * doc/analyzer.texi (Limitations): Note that constraints on
777 floating-point values are currently ignored.
778
779 2020-01-30 Jakub Jelinek <jakub@redhat.com>
780
781 PR lto/93384
782 * symtab.c (symtab_node::noninterposable_alias): If localalias
783 already exists, but is not usable, append numbers after it until
784 a unique name is found. Formatting fix.
785
786 PR middle-end/93505
787 * combine.c (simplify_comparison) <case ROTATE>: Punt on out of range
788 rotate counts.
789
790 2020-01-30 Andrew Stubbs <ams@codesourcery.com>
791
792 * config/gcn/gcn.c (print_operand): Handle LTGT.
793 * config/gcn/predicates.md (gcn_fp_compare_operator): Allow ltgt.
794
795 2020-01-30 Richard Biener <rguenther@suse.de>
796
797 * tree-pretty-print.c (dump_generic_node): Wrap VECTOR_CST
798 and CONSTRUCTOR in _Literal (type) with TDF_GIMPLE.
799
800 2020-01-30 John David Anglin <danglin@gcc.gnu.org>
801
802 * config/pa/pa.c (pa_elf_select_rtx_section): Place function pointers
803 without a DECL in .data.rel.ro.local.
804
805 2020-01-30 Jakub Jelinek <jakub@redhat.com>
806
807 PR target/93494
808 * config/arm/arm.md (uaddvdi4): Actually emit what gen_uaddvsi4
809 returned.
810
811 PR target/91824
812 * config/i386/sse.md
813 (*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_zext): Renamed to ...
814 (*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_<u>ext): ... this. Use
815 any_extend code iterator instead of always zero_extend.
816 (*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_zext_lt): Renamed to ...
817 (*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_<u>ext_lt): ... this.
818 Use any_extend code iterator instead of always zero_extend.
819 (*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_zext_shift): Renamed to ...
820 (*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_<u>ext_shift): ... this.
821 Use any_extend code iterator instead of always zero_extend.
822 (*sse2_pmovmskb_ext): New define_insn.
823 (*sse2_pmovmskb_ext_lt): New define_insn_and_split.
824
825 PR target/91824
826 * config/i386/i386.md (*popcountsi2_zext): New define_insn_and_split.
827 (*popcountsi2_zext_falsedep): New define_insn.
828
829 2020-01-30 Dragan Mladjenovic <dmladjenovic@wavecomp.com>
830
831 * config.in: Regenerated.
832 * configure: Regenerated.
833
834 2020-01-29 Tobias Burnus <tobias@codesourcery.com>
835
836 PR bootstrap/93409
837 * config/gcn/gcn-hsa.h (ASM_SPEC): Add -mattr=-code-object-v3 as
838 LLVM's assembler changed the default in version 9.
839
840 2020-01-24 Jeff Law <law@redhat.com>
841
842 PR tree-optimization/89689
843 * builtins.def (BUILT_IN_OBJECT_SIZE): Make it const rather than pure.
844
845 2020-01-29 Richard Sandiford <richard.sandiford@arm.com>
846
847 Revert:
848
849 2020-01-28 Richard Sandiford <richard.sandiford@arm.com>
850
851 PR rtl-optimization/87763
852 * simplify-rtx.c (simplify_truncation): Extend sign/zero_extract
853 simplification to handle subregs as well as bare regs.
854 * config/i386/i386.md (*testqi_ext_3): Match QI extracts too.
855
856 2020-01-29 Joel Hutton <Joel.Hutton@arm.com>
857
858 PR target/93221
859 * ira.c (ira): Revert use of simplified LRA algorithm.
860
861 2020-01-29 Martin Jambor <mjambor@suse.cz>
862
863 PR tree-optimization/92706
864 * tree-sra.c (struct access): Fields first_link, last_link,
865 next_queued and grp_queued renamed to first_rhs_link, last_rhs_link,
866 next_rhs_queued and grp_rhs_queued respectively, new fields
867 first_lhs_link, last_lhs_link, next_lhs_queued and grp_lhs_queued.
868 (struct assign_link): Field next renamed to next_rhs, new field
869 next_lhs. Updated comment.
870 (work_queue_head): Renamed to rhs_work_queue_head.
871 (lhs_work_queue_head): New variable.
872 (add_link_to_lhs): New function.
873 (relink_to_new_repr): Also relink LHS lists.
874 (add_access_to_work_queue): Renamed to add_access_to_rhs_work_queue.
875 (add_access_to_lhs_work_queue): New function.
876 (pop_access_from_work_queue): Renamed to
877 pop_access_from_rhs_work_queue.
878 (pop_access_from_lhs_work_queue): New function.
879 (build_accesses_from_assign): Also add links to LHS lists and to LHS
880 work_queue.
881 (child_would_conflict_in_lacc): Renamed to
882 child_would_conflict_in_acc. Adjusted parameter names.
883 (create_artificial_child_access): New parameter set_grp_read, use it.
884 (subtree_mark_written_and_enqueue): Renamed to
885 subtree_mark_written_and_rhs_enqueue.
886 (propagate_subaccesses_across_link): Renamed to
887 propagate_subaccesses_from_rhs.
888 (propagate_subaccesses_from_lhs): New function.
889 (propagate_all_subaccesses): Also propagate subaccesses from LHSs to
890 RHSs.
891
892 2020-01-29 Martin Jambor <mjambor@suse.cz>
893
894 PR tree-optimization/92706
895 * tree-sra.c (struct access): Adjust comment of
896 grp_total_scalarization.
897 (find_access_in_subtree): Look for single children spanning an entire
898 access.
899 (scalarizable_type_p): Allow register accesses, adjust callers.
900 (completely_scalarize): Remove function.
901 (scalarize_elem): Likewise.
902 (create_total_scalarization_access): Likewise.
903 (sort_and_splice_var_accesses): Do not track total scalarization
904 flags.
905 (analyze_access_subtree): New parameter totally, adjust to new meaning
906 of grp_total_scalarization.
907 (analyze_access_trees): Pass new parameter to analyze_access_subtree.
908 (can_totally_scalarize_forest_p): New function.
909 (create_total_scalarization_access): Likewise.
910 (create_total_access_and_reshape): Likewise.
911 (total_should_skip_creating_access): Likewise.
912 (totally_scalarize_subtree): Likewise.
913 (analyze_all_variable_accesses): Perform total scalarization after
914 subaccess propagation using the new functions above.
915 (initialize_constant_pool_replacements): Output initializers by
916 traversing the access tree.
917
918 2020-01-29 Martin Jambor <mjambor@suse.cz>
919
920 * tree-sra.c (verify_sra_access_forest): New function.
921 (verify_all_sra_access_forests): Likewise.
922 (create_artificial_child_access): Set parent.
923 (analyze_all_variable_accesses): Call the verifier.
924
925 2020-01-28 Jan Hubicka <hubicka@ucw.cz>
926
927 * cgraph.c (cgraph_edge::resolve_speculation): Only lookup direct edge
928 if called on indirect edge.
929 (cgraph_edge::redirect_call_stmt_to_callee): Lookup indirect edge of
930 speculative call if needed.
931
932 2020-01-29 Richard Biener <rguenther@suse.de>
933
934 PR tree-optimization/93428
935 * tree-vect-slp.c (vect_build_slp_tree_2): Compute the load
936 permutation when the load node is created.
937 (vect_analyze_slp_instance): Re-use it here.
938
939 2020-01-28 Jan Hubicka <hubicka@ucw.cz>
940
941 * ipa-prop.c (update_indirect_edges_after_inlining): Fix warning.
942
943 2020-01-28 Vladimir Makarov <vmakarov@redhat.com>
944
945 PR rtl-optimization/93272
946 * ira-lives.c (process_out_of_region_eh_regs): New function.
947 (process_bb_node_lives): Call it.
948
949 2020-01-28 Jan Hubicka <hubicka@ucw.cz>
950
951 * coverage.c (read_counts_file): Make error message lowercase.
952
953 2020-01-28 Jan Hubicka <hubicka@ucw.cz>
954
955 * profile-count.c (profile_quality_display_names): Fix ordering.
956
957 2020-01-28 Jan Hubicka <hubicka@ucw.cz>
958
959 PR lto/93318
960 * cgraph.c (cgraph_add_edge_to_call_site_hash): Update call site
961 hash only when edge is first within the sequence.
962 (cgraph_edge::set_call_stmt): Update handling of speculative calls.
963 (symbol_table::create_edge): Do not set target_prob.
964 (cgraph_edge::remove_caller): Watch for speculative calls when updating
965 the call site hash.
966 (cgraph_edge::make_speculative): Drop target_prob parameter.
967 (cgraph_edge::speculative_call_info): Remove.
968 (cgraph_edge::first_speculative_call_target): New member function.
969 (update_call_stmt_hash_for_removing_direct_edge): New function.
970 (cgraph_edge::resolve_speculation): Rewrite to new API.
971 (cgraph_edge::speculative_call_for_target): New member function.
972 (cgraph_edge::make_direct): Rewrite to new API; fix handling of
973 multiple speculation targets.
974 (cgraph_edge::redirect_call_stmt_to_callee): Likewise; fix updating
975 of profile.
976 (verify_speculative_call): Verify that targets form an interval.
977 * cgraph.h (cgraph_edge::speculative_call_info): Remove.
978 (cgraph_edge::first_speculative_call_target): New member function.
979 (cgraph_edge::next_speculative_call_target): New member function.
980 (cgraph_edge::speculative_call_target_ref): New member function.
981 (cgraph_edge;:speculative_call_indirect_edge): New member funtion.
982 (cgraph_edge): Remove target_prob.
983 * cgraphclones.c (cgraph_node::set_call_stmt_including_clones):
984 Fix handling of speculative calls.
985 * ipa-devirt.c (ipa_devirt): Fix handling of speculative cals.
986 * ipa-fnsummary.c (analyze_function_body): Likewise.
987 * ipa-inline.c (speculation_useful_p): Use new speculative call API.
988 * ipa-profile.c (dump_histogram): Fix formating.
989 (ipa_profile_generate_summary): Watch for overflows.
990 (ipa_profile): Do not require probablity to be 1/2; update to new API.
991 * ipa-prop.c (ipa_make_edge_direct_to_target): Update to new API.
992 (update_indirect_edges_after_inlining): Update to new API.
993 * ipa-utils.c (ipa_merge_profiles): Rewrite merging of speculative call
994 profiles.
995 * profile-count.h: (profile_probability::adjusted): New.
996 * tree-inline.c (copy_bb): Update to new speculative call API; fix
997 updating of profile.
998 * value-prof.c (gimple_ic_transform): Rename to ...
999 (dump_ic_profile): ... this one; update dumping.
1000 (stream_in_histogram_value): Fix formating.
1001 (gimple_value_profile_transformations): Update.
1002
1003 2020-01-28 H.J. Lu <hongjiu.lu@intel.com>
1004
1005 PR target/91461
1006 * config/i386/i386.md (*movoi_internal_avx): Remove
1007 TARGET_SSE_TYPELESS_STORES check.
1008 (*movti_internal): Prefer TARGET_AVX over
1009 TARGET_SSE_TYPELESS_STORES.
1010 (*movtf_internal): Likewise.
1011 * config/i386/sse.md (mov<mode>_internal): Prefer TARGET_AVX over
1012 TARGET_SSE_TYPELESS_STORES. Remove "<MODE_SIZE> == 16" check
1013 from TARGET_SSE_TYPELESS_STORES.
1014
1015 2020-01-28 David Malcolm <dmalcolm@redhat.com>
1016
1017 * diagnostic-core.h (warning_at): Rename overload to...
1018 (warning_meta): ...this.
1019 (emit_diagnostic_valist): Delete decl of overload taking
1020 diagnostic_metadata.
1021 * diagnostic.c (emit_diagnostic_valist): Likewise for defn.
1022 (warning_at): Rename overload taking diagnostic_metadata to...
1023 (warning_meta): ...this.
1024
1025 2020-01-28 Richard Biener <rguenther@suse.de>
1026
1027 PR tree-optimization/93439
1028 * tree-parloops.c (create_loop_fn): Move clique bookkeeping...
1029 * tree-cfg.c (move_sese_region_to_fn): ... here.
1030 (verify_types_in_gimple_reference): Verify used cliques are
1031 tracked.
1032
1033 2020-01-28 H.J. Lu <hongjiu.lu@intel.com>
1034
1035 PR target/91399
1036 * config/i386/i386-options.c (set_ix86_tune_features): Add an
1037 argument of a pointer to struct gcc_options and pass it to
1038 parse_mtune_ctrl_str.
1039 (ix86_function_specific_restore): Pass opts to
1040 set_ix86_tune_features.
1041 (ix86_option_override_internal): Likewise.
1042 (parse_mtune_ctrl_str): Add an argument of a pointer to struct
1043 gcc_options and use it for x_ix86_tune_ctrl_string.
1044
1045 2020-01-28 Richard Sandiford <richard.sandiford@arm.com>
1046
1047 PR rtl-optimization/87763
1048 * simplify-rtx.c (simplify_truncation): Extend sign/zero_extract
1049 simplification to handle subregs as well as bare regs.
1050 * config/i386/i386.md (*testqi_ext_3): Match QI extracts too.
1051
1052 2020-01-28 Richard Sandiford <richard.sandiford@arm.com>
1053
1054 * tree-vect-loop.c (vectorizable_reduction): Fail gracefully
1055 for reduction chains that (now) include a call.
1056
1057 2020-01-28 Richard Sandiford <richard.sandiford@arm.com>
1058
1059 PR tree-optimization/92822
1060 * tree-ssa-forwprop.c (simplify_vector_constructor): When filling
1061 out the don't-care elements of a vector whose significant elements
1062 are duplicates, make the don't-care elements duplicates too.
1063
1064 2020-01-28 Richard Sandiford <richard.sandiford@arm.com>
1065
1066 PR tree-optimization/93434
1067 * tree-predcom.c (split_data_refs_to_components): Record which
1068 components have had aliasing loads removed. Prevent store-store
1069 commoning for all such components.
1070
1071 2020-01-28 Jakub Jelinek <jakub@redhat.com>
1072
1073 PR target/93418
1074 * config/i386/i386.c (ix86_fold_builtin) <do_shift>: If mask is not
1075 -1 or is_vshift is true, use new_vector with number of elts npatterns
1076 rather than new_unary_operation.
1077
1078 PR tree-optimization/93454
1079 * gimple-fold.c (fold_array_ctor_reference): Perform
1080 elt_size.to_uhwi () just once, instead of calling it in every
1081 iteration. Punt if that value is above size of the temporary
1082 buffer. Decrease third native_encode_expr argument when
1083 bufoff + elt_sz is above size of buf.
1084
1085 2020-01-27 Joseph Myers <joseph@codesourcery.com>
1086
1087 * config/mips/mips.c (mips_declare_object_name)
1088 [USE_GNU_UNIQUE_OBJECT]: Support use of gnu_unique_object.
1089
1090 2020-01-27 Martin Liska <mliska@suse.cz>
1091
1092 PR gcov-profile/93403
1093 * tree-profile.c (gimple_init_gcov_profiler): Generate
1094 both __gcov_indirect_call_profiler_v4 and
1095 __gcov_indirect_call_profiler_v4_atomic.
1096
1097 2020-01-27 Richard Sandiford <richard.sandiford@arm.com>
1098
1099 PR target/92822
1100 * config/aarch64/aarch64-simd.md (aarch64_get_half<mode>): New
1101 expander.
1102 (@aarch64_split_simd_mov<mode>): Use it.
1103 (aarch64_simd_mov_from_<mode>low): Add a GPR alternative.
1104 Leave the vec_extract patterns to handle 2-element vectors.
1105 (aarch64_simd_mov_from_<mode>high): Likewise.
1106 (vec_extract<VQMOV_NO2E:mode><Vhalf>): New expander.
1107 (vec_extractv2dfv1df): Likewise.
1108
1109 2020-01-27 Richard Sandiford <richard.sandiford@arm.com>
1110
1111 * config/aarch64/aarch64.c (aarch64_if_then_else_costs): Match
1112 jump conditions for *compare_condjump<GPI:mode>.
1113
1114 2020-01-27 David Malcolm <dmalcolm@redhat.com>
1115
1116 PR analyzer/93276
1117 * digraph.cc (test_edge::test_edge): Specify template for base
1118 class initializer.
1119
1120 2020-01-27 Claudiu Zissulescu <claziss@synopsys.com>
1121
1122 * config/arc/arc.c (arc_rtx_costs): Update mul64 cost.
1123
1124 2020-01-27 Claudiu Zissulescu <claziss@synopsys.com>
1125
1126 * config/arc/arc-protos.h (gen_mlo): Remove.
1127 (gen_mhi): Likewise.
1128 * config/arc/arc.c (AUX_MULHI): Define.
1129 (arc_must_save_reister): Special handling for r58/59.
1130 (arc_compute_frame_size): Consider mlo/mhi registers.
1131 (arc_save_callee_saves): Emit fp/sp move only when emit_move
1132 paramter is true.
1133 (arc_conditional_register_usage): Remove TARGET_BIG_ENDIAN from
1134 mlo/mhi name selection.
1135 (arc_restore_callee_saves): Don't early restore blink when ISR.
1136 (arc_expand_prologue): Add mlo/mhi saving.
1137 (arc_expand_epilogue): Add mlo/mhi restoring.
1138 (gen_mlo): Remove.
1139 (gen_mhi): Remove.
1140 * config/arc/arc.h (DBX_REGISTER_NUMBER): Correct register
1141 numbering when MUL64 option is used.
1142 (DWARF2_FRAME_REG_OUT): Define.
1143 * config/arc/arc.md (arc600_stall): New pattern.
1144 (VUNSPEC_ARC_ARC600_STALL): Define.
1145 (mulsi64): Use correct mlo/mhi registers.
1146 (mulsi_600): Clean it up.
1147 * config/arc/predicates.md (mlo_operand): Remove any dependency on
1148 TARGET_BIG_ENDIAN.
1149 (mhi_operand): Likewise.
1150
1151 2020-01-27 Claudiu Zissulescu <claziss@synopsys.com>
1152 Petro Karashchenko <petro.karashchenko@ring.com>
1153
1154 * config/arc/arc.c (arc_is_uncached_mem_p): Check struct
1155 attributes if needed.
1156 (prepare_move_operands): Generate special unspec instruction for
1157 direct access.
1158 (arc_isuncached_mem_p): Propagate uncached attribute to each
1159 structure member.
1160 * config/arc/arc.md (VUNSPEC_ARC_LDDI): Define.
1161 (VUNSPEC_ARC_STDI): Likewise.
1162 (ALLI): New mode iterator.
1163 (mALLI): New mode attribute.
1164 (lddi): New instruction pattern.
1165 (stdi): Likewise.
1166 (stdidi_split): Split instruction for architectures which are not
1167 supporting ll64 option.
1168 (lddidi_split): Likewise.
1169
1170 2020-01-27 Richard Sandiford <richard.sandiford@arm.com>
1171
1172 PR rtl-optimization/92989
1173 * lra-lives.c (process_bb_lives): Update the live-in set before
1174 processing additional clobbers.
1175
1176 2020-01-27 Richard Sandiford <richard.sandiford@arm.com>
1177
1178 PR rtl-optimization/93170
1179 * cselib.c (cselib_invalidate_regno_val): New function, split out
1180 from...
1181 (cselib_invalidate_regno): ...here.
1182 (cselib_invalidated_by_call_p): New function.
1183 (cselib_process_insn): Iterate over all the hard-register entries in
1184 REG_VALUES and invalidate any that cross call-clobbered registers.
1185
1186 2020-01-27 Richard Sandiford <richard.sandiford@arm.com>
1187
1188 * dojump.c (split_comparison): Use HONOR_NANS rather than
1189 HONOR_SNANS when splitting LTGT.
1190
1191 2020-01-27 Martin Liska <mliska@suse.cz>
1192
1193 PR driver/91220
1194 * opts.c (print_filtered_help): Exclude language-specific
1195 options from --help=common unless enabled in all FEs.
1196
1197 2020-01-27 Martin Liska <mliska@suse.cz>
1198
1199 * opts.c (print_help): Exclude params from
1200 all except --help=param.
1201
1202 2020-01-27 Martin Liska <mliska@suse.cz>
1203
1204 PR target/93274
1205 * config/i386/i386-features.c (make_resolver_func):
1206 Align the code with ppc64 target implementation.
1207 Do not generate a unique name for resolver function.
1208
1209 2020-01-27 Richard Biener <rguenther@suse.de>
1210
1211 PR tree-optimization/93397
1212 * tree-vect-slp.c (vect_analyze_slp_instance): Delay
1213 converted reduction chain SLP graph adjustment.
1214
1215 2020-01-26 Marek Polacek <polacek@redhat.com>
1216
1217 PR sanitizer/93436
1218 * sanopt.c (sanitize_rewrite_addressable_params): Avoid crash on
1219 null DECL_NAME.
1220
1221 2020-01-26 Jason Merrill <jason@redhat.com>
1222
1223 PR c++/92601
1224 * tree.c (verify_type_variant): Only verify TYPE_NEEDS_CONSTRUCTING
1225 of complete types.
1226
1227 2020-01-26 Darius Galis <darius.galis@cyberthorstudios.com>
1228
1229 * config/rx/rx.md (setmemsi): Added rx_allow_string_insns constraint
1230 (rx_setmem): Likewise.
1231
1232 2020-01-26 Jakub Jelinek <jakub@redhat.com>
1233
1234 PR target/93412
1235 * config/i386/i386.md (*addv<dwi>4_doubleword, *subv<dwi>4_doubleword):
1236 Use nonimmediate_operand instead of x86_64_hilo_general_operand and
1237 drop <di> from constraint of last operand.
1238
1239 PR target/93430
1240 * config/i386/sse.md (*avx_vperm_broadcast_<mode>): Disallow for
1241 TARGET_AVX2 and V4DFmode not in the split condition, but in the
1242 pattern condition, though allow { 0, 0, 0, 0 } broadcast always.
1243
1244 2020-01-25 Feng Xue <fxue@os.amperecomputing.com>
1245
1246 PR ipa/93166
1247 * ipa-cp.c (get_info_about_necessary_edges): Remove value
1248 check assertion.
1249
1250 2020-01-24 Jeff Law <law@redhat.com>
1251
1252 PR tree-optimization/92788
1253 * tree-ssa-threadedge.c (thread_across_edge): Check EDGE_COMPLEX
1254 not EDGE_ABNORMAL.
1255
1256 2020-01-24 Jakub Jelinek <jakub@redhat.com>
1257
1258 PR target/93395
1259 * config/i386/sse.md (*avx_vperm_broadcast_v4sf,
1260 *avx_vperm_broadcast_<mode>,
1261 <sse2_avx_avx512f>_vpermil<mode><mask_name>,
1262 *<sse2_avx_avx512f>_vpermilp<mode><mask_name>):
1263 Move before avx2_perm<mode>/avx512f_perm<mode>.
1264
1265 PR target/93376
1266 * simplify-rtx.c (simplify_const_unary_operation,
1267 simplify_const_binary_operation): Punt for mode precision above
1268 MAX_BITSIZE_MODE_ANY_INT.
1269
1270 2020-01-24 Andrew Pinski <apinski@marvell.com>
1271
1272 * config/arm/aarch-cost-tables.h (cortexa57_extra_costs): Change
1273 alu.shift_reg to 0.
1274
1275 2020-01-24 Jeff Law <law@redhat.com>
1276
1277 PR target/13721
1278 * config/h8300/h8300.c (h8300_print_operand): Only call byte_reg
1279 for REGs. Call output_operand_lossage to get more reasonable
1280 diagnostics.
1281
1282 2020-01-24 Andrew Stubbs <ams@codesourcery.com>
1283
1284 * config/gcn/gcn-valu.md (vec_cmp<mode>di): Use
1285 gcn_fp_compare_operator.
1286 (vec_cmpu<mode>di): Use gcn_compare_operator.
1287 (vec_cmp<u>v64qidi): Use gcn_compare_operator.
1288 (vec_cmp<mode>di_exec): Use gcn_fp_compare_operator.
1289 (vec_cmpu<mode>di_exec): Use gcn_compare_operator.
1290 (vec_cmp<u>v64qidi_exec): Use gcn_compare_operator.
1291 (vec_cmp<mode>di_dup): Use gcn_fp_compare_operator.
1292 (vec_cmp<mode>di_dup_exec): Use gcn_fp_compare_operator.
1293 (vcond<VEC_ALLREG_MODE:mode><VEC_ALLREG_ALT:mode>): Use
1294 gcn_fp_compare_operator.
1295 (vcond<VEC_ALLREG_MODE:mode><VEC_ALLREG_ALT:mode>_exec): Use
1296 gcn_fp_compare_operator.
1297 (vcondu<VEC_ALLREG_MODE:mode><VEC_ALLREG_INT_MODE:mode>): Use
1298 gcn_fp_compare_operator.
1299 (vcondu<VEC_ALLREG_MODE:mode><VEC_ALLREG_INT_MODE:mode>_exec): Use
1300 gcn_fp_compare_operator.
1301
1302 2020-01-24 Maciej W. Rozycki <macro@wdc.com>
1303
1304 * doc/install.texi (Cross-Compiler-Specific Options): Document
1305 `--with-toolexeclibdir' option.
1306
1307 2020-01-24 Hans-Peter Nilsson <hp@axis.com>
1308
1309 * target.def (flags_regnum): Also mention effect on delay slot filling.
1310 * doc/tm.texi: Regenerate.
1311
1312 2020-01-23 Jeff Law <law@redhat.com>
1313
1314 PR translation/90162
1315 * config/h8300/h8300.c (h8300_option_override): Fix diagnostic text.
1316
1317 2020-01-23 Mikael Tillenius <mti-1@tillenius.com>
1318
1319 PR target/92269
1320 * config/h8300/h8300.h (FUNCTION_PROFILER): Fix emission of
1321 profiling label
1322
1323 2020-01-23 Jakub Jelinek <jakub@redhat.com>
1324
1325 PR rtl-optimization/93402
1326 * postreload.c (reload_combine_recognize_pattern): Don't try to adjust
1327 USE insns.
1328
1329 2020-01-23 Dragan Mladjenovic <dmladjenovic@wavecomp.com>
1330
1331 * config.in: Regenerated.
1332 * config/mips/linux.h (NEED_INDICATE_EXEC_STACK): Define to 1
1333 for TARGET_LIBC_GNUSTACK.
1334 * configure: Regenerated.
1335 * configure.ac: Define TARGET_LIBC_GNUSTACK if glibc version is
1336 found to be 2.31 or greater.
1337
1338 2020-01-23 Dragan Mladjenovic <dmladjenovic@wavecomp.com>
1339
1340 * config/mips/linux.h (NEED_INDICATE_EXEC_STACK): Define to
1341 TARGET_SOFT_FLOAT.
1342 * config/mips/mips.c (TARGET_ASM_FILE_END): Define to ...
1343 (mips_asm_file_end): New function. Delegate to
1344 file_end_indicate_exec_stack if NEED_INDICATE_EXEC_STACK is true.
1345 * config/mips/mips.h (NEED_INDICATE_EXEC_STACK): Define to 0.
1346
1347 2020-01-23 Jakub Jelinek <jakub@redhat.com>
1348
1349 PR target/93376
1350 * config/i386/i386-modes.def (POImode): New mode.
1351 (MAX_BITSIZE_MODE_ANY_INT): Change from 128 to 160.
1352 * config/i386/i386.md (DPWI): New mode attribute.
1353 (addv<mode>4, subv<mode>4): Use <DPWI> instead of <DWI>.
1354 (QWI): Rename to...
1355 (QPWI): ... this. Use POI instead of OI for TImode.
1356 (*addv<dwi>4_doubleword, *addv<dwi>4_doubleword_1,
1357 *subv<dwi>4_doubleword, *subv<dwi>4_doubleword_1): Use <QPWI>
1358 instead of <QWI>.
1359
1360 2020-01-23 Richard Sandiford <richard.sandiford@arm.com>
1361
1362 PR target/93341
1363 * config/aarch64/aarch64.md (UNSPEC_SPECULATION_TRACKER_REV): New
1364 unspec.
1365 (speculation_tracker_rev): New pattern.
1366 * config/aarch64/aarch64-speculation.cc (aarch64_do_track_speculation):
1367 Use speculation_tracker_rev to track the inverse condition.
1368
1369 2020-01-23 Richard Biener <rguenther@suse.de>
1370
1371 PR tree-optimization/93381
1372 * tree-ssa-sccvn.c (vn_walk_cb_data::push_partial_def): Take
1373 alias-set of the def as argument and record the first one.
1374 (vn_walk_cb_data::first_set): New member.
1375 (vn_reference_lookup_3): Pass the alias-set of the current def
1376 to push_partial_def. Fix alias-set used in the aggregate copy
1377 case.
1378 (vn_reference_lookup): Consistently set *last_vuse_ptr.
1379 * real.c (clear_significand_below): Fix out-of-bound access.
1380
1381 2020-01-23 Jakub Jelinek <jakub@redhat.com>
1382
1383 PR target/93346
1384 * config/i386/i386.md (*bmi2_bzhi_<mode>3_2, *bmi2_bzhi_<mode>3_3):
1385 New define_insn patterns.
1386
1387 2020-01-23 Richard Sandiford <richard.sandiford@arm.com>
1388
1389 * doc/sourcebuild.texi (check-function-bodies): Add an
1390 optional target/xfail selector.
1391
1392 2020-01-23 Richard Sandiford <richard.sandiford@arm.com>
1393
1394 PR rtl-optimization/93124
1395 * auto-inc-dec.c (merge_in_block): Don't add auto inc/decs to
1396 bare USE and CLOBBER insns.
1397
1398 2020-01-22 Andrew Pinski <apinski@marvell.com>
1399
1400 * config/arc/arc.c (output_short_suffix): Check insn for nullness.
1401
1402 2020-01-22 David Malcolm <dmalcolm@redhat.com>
1403
1404 PR analyzer/93307
1405 * gdbinit.in (break-on-saved-diagnostic): Update for move of
1406 diagnostic_manager into "ana" namespace.
1407 * selftest-run-tests.c (selftest::run_tests): Update for move of
1408 selftest::run_analyzer_selftests to
1409 ana::selftest::run_analyzer_selftests.
1410
1411 2020-01-22 Richard Sandiford <richard.sandiford@arm.com>
1412
1413 * cfgexpand.c (union_stack_vars): Update the size.
1414
1415 2020-01-22 Richard Biener <rguenther@suse.de>
1416
1417 PR tree-optimization/93381
1418 * tree-ssa-structalias.c (find_func_aliases): Assume offsetting
1419 throughout, handle all conversions the same.
1420
1421 2020-01-22 Jakub Jelinek <jakub@redhat.com>
1422
1423 PR target/93335
1424 * config/aarch64/aarch64.c (aarch64_expand_subvti): Only use
1425 gen_subdi3_compare1_imm if low_in2 satisfies aarch64_plus_immediate
1426 predicate, not whenever it is CONST_INT. Otherwise, force_reg it.
1427 Call force_reg on high_in2 unconditionally.
1428
1429 2020-01-22 Martin Liska <mliska@suse.cz>
1430
1431 PR tree-optimization/92924
1432 * profile.c (compute_value_histograms): Divide
1433 all counter values.
1434
1435 2020-01-22 Jakub Jelinek <jakub@redhat.com>
1436
1437 PR target/91298
1438 * output.h (assemble_name_resolve): Declare.
1439 * varasm.c (assemble_name_resolve): New function.
1440 (assemble_name): Use it.
1441 * config/i386/i386.h (ASM_OUTPUT_SYMBOL_REF): Define.
1442
1443 2020-01-22 Joseph Myers <joseph@codesourcery.com>
1444
1445 * doc/sourcebuild.texi (Texinfo Manuals, Front End): Refer to
1446 update_web_docs_git instead of update_web_docs_svn.
1447
1448 2020-01-21 Andrew Pinski <apinski@marvell.com>
1449
1450 PR target/9311
1451 * config/aarch64/aarch64.md (tlsgd_small_<mode>): Have operand 0
1452 as PTR mode. Have operand 1 as being modeless, it can be P mode.
1453 (*tlsgd_small_<mode>): Likewise.
1454 * config/aarch64/aarch64.c (aarch64_load_symref_appropriately)
1455 <case SYMBOL_SMALL_TLSGD>: Call gen_tlsgd_small_* with a ptr_mode
1456 register. Convert that register back to dest using convert_mode.
1457
1458 2020-01-21 Jim Wilson <jimw@sifive.com>
1459
1460 * config/riscv/riscv-sr.c (riscv_sr_match_prologue): Use INTVAL
1461 instead of XINT.
1462
1463 2020-01-21 H.J. Lu <hongjiu.lu@intel.com>
1464 Uros Bizjak <ubizjak@gmail.com>
1465
1466 PR target/93319
1467 * config/i386/i386.c (ix86_tls_module_base): Replace Pmode
1468 with ptr_mode.
1469 (legitimize_tls_address): Do GNU2 TLS address computation in
1470 ptr_mode and zero-extend result to Pmode.
1471 * config/i386/i386.md (@tls_dynamic_gnu2_64_<mode>): Replace
1472 :P with :PTR and Pmode with ptr_mode.
1473 (*tls_dynamic_gnu2_lea_64_<mode>): Likewise.
1474 (*tls_dynamic_gnu2_call_64_<mode>): Likewise.
1475 (*tls_dynamic_gnu2_combine_64_<mode>): Likewise.
1476
1477 2020-01-21 Jakub Jelinek <jakub@redhat.com>
1478
1479 PR target/93333
1480 * config/riscv/riscv.c (riscv_rtx_costs) <case ZERO_EXTRACT>: Verify
1481 the last two operands are CONST_INT_P before using them as such.
1482
1483 2020-01-21 Richard Sandiford <richard.sandiford@arm.com>
1484
1485 * config/aarch64/aarch64-sve-builtins.def: Use get_typenode_from_name
1486 to get the integer element types.
1487
1488 2020-01-21 Richard Sandiford <richard.sandiford@arm.com>
1489
1490 * config/aarch64/aarch64-sve-builtins.h
1491 (function_expander::convert_to_pmode): Declare.
1492 * config/aarch64/aarch64-sve-builtins.cc
1493 (function_expander::convert_to_pmode): New function.
1494 (function_expander::get_contiguous_base): Use it.
1495 (function_expander::prepare_gather_address_operands): Likewise.
1496 * config/aarch64/aarch64-sve-builtins-sve2.cc
1497 (svwhilerw_svwhilewr_impl::expand): Likewise.
1498
1499 2020-01-21 Szabolcs Nagy <szabolcs.nagy@arm.com>
1500
1501 PR target/92424
1502 * config/aarch64/aarch64.c (aarch64_declare_function_name): Set
1503 cfun->machine->label_is_assembled.
1504 (aarch64_print_patchable_function_entry): New.
1505 (TARGET_ASM_PRINT_PATCHABLE_FUNCTION_ENTRY): Define.
1506 * config/aarch64/aarch64.h (struct machine_function): New field,
1507 label_is_assembled.
1508
1509 2020-01-21 David Malcolm <dmalcolm@redhat.com>
1510
1511 PR ipa/93315
1512 * ipa-profile.c (ipa_profile): Delete call_sums and set it to
1513 NULL on exit.
1514
1515 2020-01-18 Jan Hubicka <hubicka@ucw.cz>
1516
1517 PR lto/93318
1518 * cgraph.c (cgraph_edge::resolve_speculation,
1519 cgraph_edge::redirect_call_stmt_to_callee): Fix update of
1520 call_stmt_site_hash.
1521
1522 2020-01-21 Martin Liska <mliska@suse.cz>
1523
1524 * config/rs6000/rs6000.c (common_mode_defined): Remove
1525 unused variable.
1526
1527 2020-01-21 Richard Biener <rguenther@suse.de>
1528
1529 PR tree-optimization/92328
1530 * tree-ssa-sccvn.c (vn_reference_lookup_3): Preserve
1531 type when value-numbering same-sized store by inserting a
1532 VIEW_CONVERT_EXPR.
1533 (eliminate_dom_walker::eliminate_stmt): When eliminating
1534 a redundant store handle bit-reinterpretation of the same value.
1535
1536 2020-01-21 Andrew Pinski <apinski@marvel.com>
1537
1538 PR tree-opt/93321
1539 * tree-into-ssa.c (prepare_block_for_update_1): Split out
1540 from ...
1541 (prepare_block_for_update): This. Use a worklist instead of
1542 recursing.
1543
1544 2020-01-21 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
1545
1546 * gcc/config/arm/arm.c (clear_operation_p):
1547 Initialise last_regno, skip first iteration
1548 based on the first_set value and use ints instead
1549 of the unnecessary HOST_WIDE_INTs.
1550
1551 2020-01-21 Jakub Jelinek <jakub@redhat.com>
1552
1553 PR target/93073
1554 * config/rs6000/rs6000.c (rs6000_emit_cmove): If using fsel, punt for
1555 compare_mode other than SFmode or DFmode.
1556
1557 2020-01-21 Kito Cheng <kito.cheng@sifive.com>
1558
1559 PR target/93304
1560 * config/riscv/riscv-protos.h (riscv_hard_regno_rename_ok): New.
1561 * config/riscv/riscv.c (riscv_hard_regno_rename_ok): New.
1562 * config/riscv/riscv.h (HARD_REGNO_RENAME_OK): Defined.
1563
1564 2020-01-20 Wilco Dijkstra <wdijkstr@arm.com>
1565
1566 * config/aarch64/aarch64.c (neoversen1_tunings): Set jump_align to 4.
1567
1568 2020-01-20 Andrew Pinski <apinski@marvell.com>
1569
1570 PR middle-end/93242
1571 * targhooks.c (default_print_patchable_function_entry): Use
1572 output_asm_insn to emit the nop instruction.
1573
1574 2020-01-20 Fangrui Song <maskray@google.com>
1575
1576 PR middle-end/93194
1577 * targhooks.c (default_print_patchable_function_entry): Align to
1578 POINTER_SIZE.
1579
1580 2020-01-20 H.J. Lu <hongjiu.lu@intel.com>
1581
1582 PR target/93319
1583 * config/i386/i386.c (legitimize_tls_address): Pass Pmode to
1584 gen_tls_dynamic_gnu2_64. Compute GNU2 TLS address in ptr_mode.
1585 * config/i386/i386.md (tls_dynamic_gnu2_64): Renamed to ...
1586 (@tls_dynamic_gnu2_64_<mode>): This. Replace DI with P.
1587 (*tls_dynamic_gnu2_lea_64): Renamed to ...
1588 (*tls_dynamic_gnu2_lea_64_<mode>): This. Replace DI with P.
1589 Remove the {q} suffix from lea.
1590 (*tls_dynamic_gnu2_call_64): Renamed to ...
1591 (*tls_dynamic_gnu2_call_64_<mode>): This. Replace DI with P.
1592 (*tls_dynamic_gnu2_combine_64): Renamed to ...
1593 (*tls_dynamic_gnu2_combine_64_<mode>): This. Replace DI with P.
1594 Pass Pmode to gen_tls_dynamic_gnu2_64.
1595
1596 2020-01-20 Wilco Dijkstra <wdijkstr@arm.com>
1597
1598 * config/aarch64/aarch64.h (SLOW_BYTE_ACCESS): Set to 1.
1599
1600 2020-01-20 Richard Sandiford <richard.sandiford@arm.com>
1601
1602 * config/aarch64/aarch64-sve-builtins-base.cc
1603 (svld1ro_impl::memory_vector_mode): Remove parameter name.
1604
1605 2020-01-20 Richard Biener <rguenther@suse.de>
1606
1607 PR debug/92763
1608 * dwarf2out.c (prune_unused_types): Unconditionally mark
1609 called function DIEs.
1610
1611 2020-01-20 Martin Liska <mliska@suse.cz>
1612
1613 PR tree-optimization/93199
1614 * tree-eh.c (struct leh_state): Add
1615 new field outer_non_cleanup.
1616 (cleanup_is_dead_in): Pass leh_state instead
1617 of eh_region. Add a checking that state->outer_non_cleanup
1618 points to outer non-clean up region.
1619 (lower_try_finally): Record outer_non_cleanup
1620 for this_state.
1621 (lower_catch): Likewise.
1622 (lower_eh_filter): Likewise.
1623 (lower_eh_must_not_throw): Likewise.
1624 (lower_cleanup): Likewise.
1625
1626 2020-01-20 Richard Biener <rguenther@suse.de>
1627
1628 PR tree-optimization/93094
1629 * tree-vectorizer.h (vect_loop_versioning): Adjust.
1630 (vect_transform_loop): Likewise.
1631 * tree-vectorizer.c (try_vectorize_loop_1): Pass down
1632 loop_vectorized_call to vect_transform_loop.
1633 * tree-vect-loop.c (vect_transform_loop): Pass down
1634 loop_vectorized_call to vect_loop_versioning.
1635 * tree-vect-loop-manip.c (vect_loop_versioning): Use
1636 the earlier discovered loop_vectorized_call.
1637
1638 2020-01-19 Eric S. Raymond <esr@thyrsus.com>
1639
1640 * doc/contribute.texi: Update for SVN -> Git transition.
1641 * doc/install.texi: Likewise.
1642
1643 2020-01-18 Jan Hubicka <hubicka@ucw.cz>
1644
1645 PR lto/93318
1646 * cgraph.c (cgraph_edge::make_speculative): Increase number of
1647 speculative targets.
1648 (verify_speculative_call): New function
1649 (cgraph_node::verify_node): Use it.
1650 * ipa-profile.c (ipa_profile): Fix formating; do not set number of
1651 speculations.
1652
1653 2020-01-18 Jan Hubicka <hubicka@ucw.cz>
1654
1655 PR lto/93318
1656 * cgraph.c (cgraph_edge::resolve_speculation): Fix foramting.
1657 (cgraph_edge::make_direct): Remove all indirect targets.
1658 (cgraph_edge::redirect_call_stmt_to_callee): Use make_direct..
1659 (cgraph_node::verify_node): Verify that only one call_stmt or
1660 lto_stmt_uid is set.
1661 * cgraphclones.c (cgraph_edge::clone): Set only one call_stmt or
1662 lto_stmt_uid.
1663 * lto-cgraph.c (lto_output_edge): Simplify streaming of stmt.
1664 (lto_output_ref): Simplify streaming of stmt.
1665 * lto-streamer-in.c (fixup_call_stmt_edges_1): Clear lto_stmt_uid.
1666
1667 2020-01-18 Tamar Christina <tamar.christina@arm.com>
1668
1669 * config/aarch64/aarch64-sve-builtins-base.cc (memory_vector_mode):
1670 Mark parameter unused.
1671
1672 2020-01-18 Hans-Peter Nilsson <hp@axis.com>
1673
1674 * config.gcc <obsolete targets>: Add crisv32-*-* and cris-*-linux*
1675
1676 2019-01-18 Gerald Pfeifer <gerald@pfeifer.com>
1677
1678 * varpool.c (ctor_useable_for_folding_p): Fix grammar.
1679
1680 2020-01-18 Iain Sandoe <iain@sandoe.co.uk>
1681
1682 * Makefile.in: Add coroutine-passes.o.
1683 * builtin-types.def (BT_CONST_SIZE): New.
1684 (BT_FN_BOOL_PTR): New.
1685 (BT_FN_PTR_PTR_CONST_SIZE_BOOL): New.
1686 * builtins.def (DEF_COROUTINE_BUILTIN): New.
1687 * coroutine-builtins.def: New file.
1688 * coroutine-passes.cc: New file.
1689 * function.h (struct GTY function): Add a bit to indicate that the
1690 function is a coroutine component.
1691 * internal-fn.c (expand_CO_FRAME): New.
1692 (expand_CO_YIELD): New.
1693 (expand_CO_SUSPN): New.
1694 (expand_CO_ACTOR): New.
1695 * internal-fn.def (CO_ACTOR): New.
1696 (CO_YIELD): New.
1697 (CO_SUSPN): New.
1698 (CO_FRAME): New.
1699 * passes.def: Add pass_coroutine_lower_builtins,
1700 pass_coroutine_early_expand_ifns.
1701 * tree-pass.h (make_pass_coroutine_lower_builtins): New.
1702 (make_pass_coroutine_early_expand_ifns): New.
1703 * doc/invoke.texi: Document the fcoroutines command line
1704 switch.
1705
1706 2020-01-18 Jakub Jelinek <jakub@redhat.com>
1707
1708 * config/arm/vfp.md (*clear_vfp_multiple): Remove unused variable.
1709
1710 PR target/93312
1711 * config/arm/arm.c (clear_operation_p): Don't use REGNO until
1712 after checking the argument is a REG. Don't use REGNO (reg)
1713 again to set last_regno, reuse regno variable instead.
1714
1715 2020-01-17 David Malcolm <dmalcolm@redhat.com>
1716
1717 * doc/analyzer.texi (Limitations): Add note about NaN.
1718
1719 2020-01-17 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
1720 Sudakshina Das <sudi.das@arm.com>
1721
1722 * config/arm/arm.md (ashldi3): Generate thumb2_lsll for both reg
1723 and valid immediate.
1724 (ashrdi3): Generate thumb2_asrl for both reg and valid immediate.
1725 (lshrdi3): Generate thumb2_lsrl for valid immediates.
1726 * config/arm/constraints.md (Pg): New.
1727 * config/arm/predicates.md (long_shift_imm): New.
1728 (arm_reg_or_long_shift_imm): Likewise.
1729 * config/arm/thumb2.md (thumb2_asrl): New immediate alternative.
1730 (thumb2_lsll): Likewise.
1731 (thumb2_lsrl): New.
1732
1733 2020-01-17 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
1734 Sudakshina Das <sudi.das@arm.com>
1735
1736 * config/arm/arm.md (ashldi3): Generate thumb2_lsll for TARGET_HAVE_MVE.
1737 (ashrdi3): Generate thumb2_asrl for TARGET_HAVE_MVE.
1738 * config/arm/arm.c (arm_hard_regno_mode_ok): Allocate even odd
1739 register pairs for doubleword quantities for ARMv8.1M-Mainline.
1740 * config/arm/thumb2.md (thumb2_asrl): New.
1741 (thumb2_lsll): Likewise.
1742
1743 2020-01-17 Jakub Jelinek <jakub@redhat.com>
1744
1745 * config/arm/arm.c (cmse_nonsecure_call_inline_register_clear): Remove
1746 unused variable.
1747
1748 2020-01-17 Alexander Monakov <amonakov@ispras.ru>
1749
1750 * gdbinit.in (help-gcc-hooks): New command.
1751 (pp, pr, prl, pt, pct, pgg, pgq, pgs, pge, pmz, ptc, pdn, ptn, pdd, prc,
1752 pi, pbm, pel, trt): Take $arg0 instead of $ if supplied. Update
1753 documentation.
1754
1755 2020-01-17 Matthew Malcomson <matthew.malcomson@arm.com>
1756
1757 * config/aarch64/aarch64-sve.md (@aarch64_sve_ld1ro<mode>): Use the
1758 correct target macro.
1759
1760 2020-01-17 Matthew Malcomson <matthew.malcomson@arm.com>
1761
1762 * config/aarch64/aarch64-protos.h
1763 (aarch64_sve_ld1ro_operand_p): New.
1764 * config/aarch64/aarch64-sve-builtins-base.cc
1765 (class load_replicate): New.
1766 (class svld1ro_impl): New.
1767 (class svld1rq_impl): Change to inherit from load_replicate.
1768 (svld1ro): New sve intrinsic function base.
1769 * config/aarch64/aarch64-sve-builtins-base.def (svld1ro):
1770 New DEF_SVE_FUNCTION.
1771 * config/aarch64/aarch64-sve-builtins-base.h
1772 (svld1ro): New decl.
1773 * config/aarch64/aarch64-sve-builtins.cc
1774 (function_expander::add_mem_operand): Modify assert to allow
1775 OImode.
1776 * config/aarch64/aarch64-sve.md (@aarch64_sve_ld1ro<mode>): New
1777 pattern.
1778 * config/aarch64/aarch64.c
1779 (aarch64_sve_ld1rq_operand_p): Implement in terms of ...
1780 (aarch64_sve_ld1rq_ld1ro_operand_p): This.
1781 (aarch64_sve_ld1ro_operand_p): New.
1782 * config/aarch64/aarch64.md (UNSPEC_LD1RO): New unspec.
1783 * config/aarch64/constraints.md (UOb,UOh,UOw,UOd): New.
1784 * config/aarch64/predicates.md
1785 (aarch64_sve_ld1ro_operand_{b,h,w,d}): New.
1786
1787 2020-01-17 Matthew Malcomson <matthew.malcomson@arm.com>
1788
1789 * config/aarch64/aarch64-c.c (_ARM_FEATURE_MATMUL_FLOAT64):
1790 Introduce this ACLE specified predefined macro.
1791 * config/aarch64/aarch64-option-extensions.def (f64mm): New.
1792 (fp): Disabling this disables f64mm.
1793 (simd): Disabling this disables f64mm.
1794 (fp16): Disabling this disables f64mm.
1795 (sve): Disabling this disables f64mm.
1796 * config/aarch64/aarch64.h (AARCH64_FL_F64MM): New.
1797 (AARCH64_ISA_F64MM): New.
1798 (TARGET_F64MM): New.
1799 * doc/invoke.texi (f64mm): Document new option.
1800
1801 2020-01-17 Wilco Dijkstra <wdijkstr@arm.com>
1802
1803 * config/aarch64/aarch64.c (generic_tunings): Add branch fusion.
1804 (neoversen1_tunings): Likewise.
1805
1806 2020-01-17 Wilco Dijkstra <wdijkstr@arm.com>
1807
1808 PR target/92692
1809 * config/aarch64/aarch64.c (aarch64_split_compare_and_swap)
1810 Add assert to ensure prolog has been emitted.
1811 (aarch64_split_atomic_op): Likewise.
1812 * config/aarch64/atomics.md (aarch64_compare_and_swap<mode>)
1813 Use epilogue_completed rather than reload_completed.
1814 (aarch64_atomic_exchange<mode>): Likewise.
1815 (aarch64_atomic_<atomic_optab><mode>): Likewise.
1816 (atomic_nand<mode>): Likewise.
1817 (aarch64_atomic_fetch_<atomic_optab><mode>): Likewise.
1818 (atomic_fetch_nand<mode>): Likewise.
1819 (aarch64_atomic_<atomic_optab>_fetch<mode>): Likewise.
1820 (atomic_nand_fetch<mode>): Likewise.
1821
1822 2020-01-17 Richard Sandiford <richard.sandiford@arm.com>
1823
1824 PR target/93133
1825 * config/aarch64/aarch64.h (REVERSIBLE_CC_MODE): Return false
1826 for FP modes.
1827 (REVERSE_CONDITION): Delete.
1828 * config/aarch64/iterators.md (CC_ONLY): New mode iterator.
1829 (CCFP_CCFPE): Likewise.
1830 (e): New mode attribute.
1831 * config/aarch64/aarch64.md (ccmp<GPI:mode>): Rename to...
1832 (@ccmp<CC_ONLY:mode><GPI:mode>): ...this, using CC_ONLY instead of CC.
1833 (fccmp<GPF:mode>, fccmpe<GPF:mode>): Merge into...
1834 (@ccmp<CCFP_CCFPE:mode><GPF:mode>): ...this combined pattern.
1835 (@ccmp<CC_ONLY:mode><GPI:mode>_rev): New pattern.
1836 (@ccmp<CCFP_CCFPE:mode><GPF:mode>_rev): Likewise.
1837 * config/aarch64/aarch64.c (aarch64_gen_compare_reg): Update
1838 name of generator from gen_ccmpdi to gen_ccmpccdi.
1839 (aarch64_gen_ccmp_next): Use code_for_ccmp. If we want to reverse
1840 the previous comparison but aren't able to, use the new ccmp_rev
1841 patterns instead.
1842
1843 2020-01-17 Richard Sandiford <richard.sandiford@arm.com>
1844
1845 * gimplify.c (gimplify_return_expr): Use poly_int_tree_p rather
1846 than testing directly for INTEGER_CST.
1847 (gimplify_target_expr, gimplify_omp_depend): Likewise.
1848
1849 2020-01-17 Jakub Jelinek <jakub@redhat.com>
1850
1851 PR tree-optimization/93292
1852 * tree-vect-stmts.c (vectorizable_comparison): Punt also if
1853 get_vectype_for_scalar_type returns NULL.
1854
1855 2020-01-16 Jan Hubicka <hubicka@ucw.cz>
1856
1857 * params.opt (-param=max-predicted-iterations): Increase range from 0.
1858 * predict.c (estimate_loops): Add 1 to param_max_predicted_iterations.
1859
1860 2020-01-16 Jan Hubicka <hubicka@ucw.cz>
1861
1862 * ipa-fnsummary.c (estimate_calls_size_and_time): Fix formating of
1863 dump.
1864 * params.opt: (max-predicted-iterations): Set bounds.
1865 * predict.c (real_almost_one, real_br_prob_base,
1866 real_inv_br_prob_base, real_one_half, real_bb_freq_max): Remove.
1867 (propagate_freq): Add max_cyclic_prob parameter; cap cyclic
1868 probabilities; do not truncate to reg_br_prob_bases.
1869 (estimate_loops_at_level): Pass max_cyclic_prob.
1870 (estimate_loops): Compute max_cyclic_prob.
1871 (estimate_bb_frequencies): Do not initialize real_*; update calculation
1872 of back edge prob.
1873 * profile-count.c (profile_probability::to_sreal): New.
1874 * profile-count.h (class sreal): Move up in file.
1875 (profile_probability::to_sreal): Declare.
1876
1877 2020-01-16 Stam Markianos-Wright <stam.markianos-wright@arm.com>
1878
1879 * config/arm/arm.c
1880 (arm_invalid_conversion): New function for target hook.
1881 (arm_invalid_unary_op): New function for target hook.
1882 (arm_invalid_binary_op): New function for target hook.
1883
1884 2020-01-16 Stam Markianos-Wright <stam.markianos-wright@arm.com>
1885
1886 * config.gcc: Add arm_bf16.h.
1887 * config/arm/arm-builtins.c (arm_mangle_builtin_type): Fix comment.
1888 (arm_simd_builtin_std_type): Add BFmode.
1889 (arm_init_simd_builtin_types): Define element types for vector types.
1890 (arm_init_bf16_types): New function.
1891 (arm_init_builtins): Add arm_init_bf16_types function call.
1892 * config/arm/arm-modes.def: Add BFmode and V4BF, V8BF vector modes.
1893 * config/arm/arm-simd-builtin-types.def: Add V4BF, V8BF.
1894 * config/arm/arm.c (aapcs_vfp_sub_candidate): Add BFmode.
1895 (arm_hard_regno_mode_ok): Add BFmode and tidy up statements.
1896 (arm_vector_mode_supported_p): Add V4BF, V8BF.
1897 (arm_mangle_type): Add __bf16.
1898 * config/arm/arm.h: Add V4BF, V8BF to VALID_NEON_DREG_MODE,
1899 VALID_NEON_QREG_MODE respectively. Add export arm_bf16_type_node,
1900 arm_bf16_ptr_type_node.
1901 * config/arm/arm.md: Add BFmode to movhf expand, mov pattern and
1902 define_split between ARM registers.
1903 * config/arm/arm_bf16.h: New file.
1904 * config/arm/arm_neon.h: Add arm_bf16.h and Bfloat vector types.
1905 * config/arm/iterators.md: (ANY64_BF, VDXMOV, VHFBF, HFBF, fporbf): New.
1906 (VQXMOV): Add V8BF.
1907 * config/arm/neon.md: Add BF vector types to movhf NEON move patterns.
1908 * config/arm/vfp.md: Add BFmode to movhf patterns.
1909
1910 2020-01-16 Mihail Ionescu <mihail.ionescu@arm.com>
1911 Andre Vieira <andre.simoesdiasvieira@arm.com>
1912
1913 * config/arm/arm-cpus.in (mve, mve_float): New features.
1914 (dsp, mve, mve.fp): New options.
1915 * config/arm/arm.h (TARGET_HAVE_MVE, TARGET_HAVE_MVE_FLOAT): Define.
1916 * config/arm/t-rmprofile: Map v8.1-M multilibs to v8-M.
1917 * doc/invoke.texi: Document the armv8.1-m mve and dps options.
1918
1919 2020-01-16 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
1920 Thomas Preud'homme <thomas.preudhomme@arm.com>
1921
1922 * config/arm/arm-cpus.in (ARMv8_1m_main): Redefine as an extension to
1923 Armv8-M Mainline.
1924 * config/arm/arm.c (arm_options_perform_arch_sanity_checks): Remove
1925 error for using -mcmse when targeting Armv8.1-M Mainline.
1926
1927 2020-01-16 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
1928 Thomas Preud'homme <thomas.preudhomme@arm.com>
1929
1930 * config/arm/arm.md (nonsecure_call_internal): Do not force memory
1931 address in r4 when targeting Armv8.1-M Mainline.
1932 (nonsecure_call_value_internal): Likewise.
1933 * config/arm/thumb2.md (nonsecure_call_reg_thumb2): Make memory address
1934 a register match_operand again. Emit BLXNS when targeting
1935 Armv8.1-M Mainline.
1936 (nonsecure_call_value_reg_thumb2): Likewise.
1937
1938 2020-01-16 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
1939 Thomas Preud'homme <thomas.preudhomme@arm.com>
1940
1941 * config/arm/arm.c (arm_add_cfa_adjust_cfa_note): Declare early.
1942 (cmse_nonsecure_call_inline_register_clear): Define new lazy_fpclear
1943 variable as true when floating-point ABI is not hard. Replace
1944 check against TARGET_HARD_FLOAT_ABI by checks against lazy_fpclear.
1945 Generate VLSTM and VLLDM instruction respectively before and
1946 after a function call to cmse_nonsecure_call function.
1947 * config/arm/unspecs.md (VUNSPEC_VLSTM): Define unspec.
1948 (VUNSPEC_VLLDM): Likewise.
1949 * config/arm/vfp.md (lazy_store_multiple_insn): New define_insn.
1950 (lazy_load_multiple_insn): Likewise.
1951
1952 2020-01-16 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
1953 Thomas Preud'homme <thomas.preudhomme@arm.com>
1954
1955 * config/arm/arm.c (vfp_emit_fstmd): Declare early.
1956 (arm_emit_vfp_multi_reg_pop): Likewise.
1957 (cmse_nonsecure_call_inline_register_clear): Abstract number of VFP
1958 registers to clear in max_fp_regno. Emit VPUSH and VPOP to save and
1959 restore callee-saved VFP registers.
1960
1961 2020-01-16 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
1962 Thomas Preud'homme <thomas.preudhomme@arm.com>
1963
1964 * config/arm/arm.c (arm_emit_multi_reg_pop): Declare early.
1965 (cmse_nonsecure_call_clear_caller_saved): Rename into ...
1966 (cmse_nonsecure_call_inline_register_clear): This. Save and clear
1967 callee-saved GPRs as well as clear ip register before doing a nonsecure
1968 call then restore callee-saved GPRs after it when targeting
1969 Armv8.1-M Mainline.
1970 (arm_reorg): Adapt to function rename.
1971
1972 2020-01-16 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
1973 Thomas Preud'homme <thomas.preudhomme@arm.com>
1974
1975 * config/arm/arm-protos.h (clear_operation_p): Adapt prototype.
1976 * config/arm/arm.c (clear_operation_p): Extend to be able to check a
1977 clear_vfp_multiple pattern based on a new vfp parameter.
1978 (cmse_clear_registers): Generate VSCCLRM to clear VFP registers when
1979 targeting Armv8.1-M Mainline.
1980 (cmse_nonsecure_entry_clear_before_return): Clear VFP registers
1981 unconditionally when targeting Armv8.1-M Mainline architecture. Check
1982 whether VFP registers are available before looking call_used_regs for a
1983 VFP register.
1984 * config/arm/predicates.md (clear_multiple_operation): Adapt to change
1985 of prototype of clear_operation_p.
1986 (clear_vfp_multiple_operation): New predicate.
1987 * config/arm/unspecs.md (VUNSPEC_VSCCLRM_VPR): New volatile unspec.
1988 * config/arm/vfp.md (clear_vfp_multiple): New define_insn.
1989
1990 2020-01-16 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
1991 Thomas Preud'homme <thomas.preudhomme@arm.com>
1992
1993 * config/arm/arm-protos.h (clear_operation_p): Declare.
1994 * config/arm/arm.c (clear_operation_p): New function.
1995 (cmse_clear_registers): Generate clear_multiple instruction pattern if
1996 targeting Armv8.1-M Mainline or successor.
1997 (output_return_instruction): Only output APSR register clearing if
1998 Armv8.1-M Mainline instructions not available.
1999 (thumb_exit): Likewise.
2000 * config/arm/predicates.md (clear_multiple_operation): New predicate.
2001 * config/arm/thumb2.md (clear_apsr): New define_insn.
2002 (clear_multiple): Likewise.
2003 * config/arm/unspecs.md (VUNSPEC_CLRM_APSR): New volatile unspec.
2004
2005 2020-01-16 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
2006 Thomas Preud'homme <thomas.preudhomme@arm.com>
2007
2008 * config/arm/arm.c (fp_sysreg_names): Declare and define.
2009 (use_return_insn): Also return false for Armv8.1-M Mainline.
2010 (output_return_instruction): Skip FPSCR clearing if Armv8.1-M
2011 Mainline instructions are available.
2012 (arm_compute_frame_layout): Allocate space in frame for FPCXTNS
2013 when targeting Armv8.1-M Mainline Security Extensions.
2014 (arm_expand_prologue): Save FPCXTNS if this is an Armv8.1-M
2015 Mainline entry function.
2016 (cmse_nonsecure_entry_clear_before_return): Clear IP and r4 if
2017 targeting Armv8.1-M Mainline or successor.
2018 (arm_expand_epilogue): Fix indentation of caller-saved register
2019 clearing. Restore FPCXTNS if this is an Armv8.1-M Mainline
2020 entry function.
2021 * config/arm/arm.h (TARGET_HAVE_FP_CMSE): New macro.
2022 (FP_SYSREGS): Likewise.
2023 (enum vfp_sysregs_encoding): Define enum.
2024 (fp_sysreg_names): Declare.
2025 * config/arm/unspecs.md (VUNSPEC_VSTR_VLDR): New volatile unspec.
2026 * config/arm/vfp.md (push_fpsysreg_insn): New define_insn.
2027 (pop_fpsysreg_insn): Likewise.
2028
2029 2020-01-16 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
2030 Thomas Preud'homme <thomas.preudhomme@arm.com>
2031
2032 * config/arm/arm-cpus.in (armv8_1m_main): New feature.
2033 (ARMv4, ARMv4t, ARMv5t, ARMv5te, ARMv5tej, ARMv6, ARMv6j, ARMv6k,
2034 ARMv6z, ARMv6kz, ARMv6zk, ARMv6t2, ARMv6m, ARMv7, ARMv7a, ARMv7ve,
2035 ARMv7r, ARMv7m, ARMv7em, ARMv8a, ARMv8_1a, ARMv8_2a, ARMv8_3a,
2036 ARMv8_4a, ARMv8_5a, ARMv8m_base, ARMv8m_main, ARMv8r): Reindent.
2037 (ARMv8_1m_main): New feature group.
2038 (armv8.1-m.main): New architecture.
2039 * config/arm/arm-tables.opt: Regenerate.
2040 * config/arm/arm.c (arm_arch8_1m_main): Define and default initialize.
2041 (arm_option_reconfigure_globals): Initialize arm_arch8_1m_main.
2042 (arm_options_perform_arch_sanity_checks): Error out when targeting
2043 Armv8.1-M Mainline Security Extensions.
2044 * config/arm/arm.h (arm_arch8_1m_main): Declare.
2045
2046 2020-01-16 Stam Markianos-Wright <stam.markianos-wright@arm.com>
2047
2048 * config/aarch64/aarch64-simd-builtins.def (aarch64_bfdot,
2049 aarch64_bfdot_lane, aarch64_bfdot_laneq): New.
2050 * config/aarch64/aarch64-simd.md (aarch64_bfdot, aarch64_bfdot_lane,
2051 aarch64_bfdot_laneq): New.
2052 * config/aarch64/arm_bf16.h (vbfdot_f32, vbfdotq_f32,
2053 vbfdot_lane_f32, vbfdotq_lane_f32, vbfdot_laneq_f32,
2054 vbfdotq_laneq_f32): New.
2055 * config/aarch64/iterators.md (UNSPEC_BFDOT, Vbfdottype,
2056 VBFMLA_W, VBF): New.
2057 (isquadop): Add V4BF, V8BF.
2058
2059 2020-01-16 Stam Markianos-Wright <stam.markianos-wright@arm.com>
2060
2061 * config/aarch64/aarch64-builtins.c: (enum aarch64_type_qualifiers):
2062 New qualifier_lane_quadtup_index, TYPES_TERNOP_SSUS,
2063 TYPES_QUADOPSSUS_LANE_QUADTUP, TYPES_QUADOPSSSU_LANE_QUADTUP.
2064 (aarch64_simd_expand_args): Add case SIMD_ARG_LANE_QUADTUP_INDEX.
2065 (aarch64_simd_expand_builtin): Add qualifier_lane_quadtup_index.
2066 * config/aarch64/aarch64-simd-builtins.def (usdot, usdot_lane,
2067 usdot_laneq, sudot_lane,sudot_laneq): New.
2068 * config/aarch64/aarch64-simd.md (aarch64_usdot): New.
2069 (aarch64_<sur>dot_lane): New.
2070 * config/aarch64/arm_neon.h (vusdot_s32): New.
2071 (vusdotq_s32): New.
2072 (vusdot_lane_s32): New.
2073 (vsudot_lane_s32): New.
2074 * config/aarch64/iterators.md (DOTPROD_I8MM): New iterator.
2075 (UNSPEC_USDOT, UNSPEC_SUDOT): New unspecs.
2076
2077 2020-01-16 Martin Liska <mliska@suse.cz>
2078
2079 * value-prof.c (dump_histogram_value): Fix
2080 obvious spacing issue.
2081
2082 2020-01-16 Andrew Pinski <apinski@marvell.com>
2083
2084 * tree-ssa-sccvn.c(vn_reference_lookup_3): Check lhs for
2085 !storage_order_barrier_p.
2086
2087 2020-01-16 Andrew Pinski <apinski@marvell.com>
2088
2089 * sched-int.h (_dep): Add unused bit-field field for the padding.
2090 * sched-deps.c (init_dep_1): Init unused field.
2091
2092 2020-01-16 Andrew Pinski <apinski@marvell.com>
2093
2094 * optabs.h (create_expand_operand): Initialize target field also.
2095
2096 2020-01-16 Andre Vieira <andre.simoesdiasvieira@arm.com>
2097
2098 PR tree-optimization/92429
2099 * tree-ssa-loop-niter.h (simplify_replace_tree): Add parameter.
2100 * tree-ssa-loop-niter.c (simplify_replace_tree): Add parameter to
2101 control folding.
2102 * tree-vect-loop.c (update_epilogue_vinfo): Do not fold when replacing
2103 tree.
2104
2105 2020-01-16 Richard Sandiford <richard.sandiford@arm.com>
2106
2107 * config/aarch64/aarch64.c (aarch64_split_sve_subreg_move): Apply
2108 aarch64_sve_int_mode to each mode.
2109
2110 2020-01-15 David Malcolm <dmalcolm@redhat.com>
2111
2112 * doc/analyzer.texi (Overview): Add note about
2113 -fdump-ipa-analyzer.
2114
2115 2020-01-15 Wilco Dijkstra <wdijkstr@arm.com>
2116
2117 PR tree-optimization/93231
2118 * tree-ssa-forwprop.c (optimize_count_trailing_zeroes): Check
2119 input_type is unsigned. Use tree_to_shwi for shift constant.
2120 Check CST_STRING element size is CHAR_TYPE_SIZE bits.
2121 (simplify_count_trailing_zeroes): Add test to handle known non-zero
2122 inputs more efficiently.
2123
2124 2020-01-15 Uroš Bizjak <ubizjak@gmail.com>
2125
2126 * config/i386/i386.md (*movsf_internal): Do not require
2127 SSE2 ISA for alternatives 14 and 15.
2128
2129 2020-01-15 Richard Biener <rguenther@suse.de>
2130
2131 PR middle-end/93273
2132 * tree-eh.c (sink_clobbers): If we already visited the destination
2133 block do not defer insertion.
2134 (pass_lower_eh_dispatch::execute): Maintain BB_VISITED for
2135 the purpose of defered insertion.
2136
2137 2020-01-15 Jakub Jelinek <jakub@redhat.com>
2138
2139 * BASE-VER: Bump to 10.0.1.
2140
2141 2020-01-15 Richard Sandiford <richard.sandiford@arm.com>
2142
2143 PR tree-optimization/93247
2144 * tree-vect-loop.c (update_epilogue_loop_vinfo): Check the access
2145 type of the stmt that we're going to vectorize.
2146
2147 2020-01-15 Richard Sandiford <richard.sandiford@arm.com>
2148
2149 * tree-vect-slp.c (vectorize_slp_instance_root_stmt): Use a
2150 VIEW_CONVERT_EXPR if the vectorized constructor has a diffeent
2151 type from the lhs.
2152
2153 2020-01-15 Martin Liska <mliska@suse.cz>
2154
2155 * ipa-profile.c (ipa_profile_read_edge_summary): Do not allow
2156 2 calls of streamer_read_hwi in a function call.
2157
2158 2020-01-15 Richard Biener <rguenther@suse.de>
2159
2160 * alias.c (record_alias_subset): Avoid redundant work when
2161 subset is already recorded.
2162
2163 2020-01-14 David Malcolm <dmalcolm@redhat.com>
2164
2165 * doc/invoke.texi (-fdiagnostics-show-cwe): Add note that some of
2166 the analyzer options provide CWE identifiers.
2167
2168 2020-01-14 David Malcolm <dmalcolm@redhat.com>
2169
2170 * tree-diagnostic-path.cc (path_summary::event_range::print):
2171 When testing for UNKNOWN_LOCATION, look through ad-hoc wrappers
2172 using get_pure_location.
2173
2174 2020-01-15 Jakub Jelinek <jakub@redhat.com>
2175
2176 PR tree-optimization/93262
2177 * tree-ssa-dse.c (maybe_trim_memstar_call): For *_chk builtins,
2178 perform head trimming only if the last argument is constant,
2179 either all ones, or larger or equal to head trim, in the latter
2180 case decrease the last argument by head_trim.
2181
2182 PR tree-optimization/93249
2183 * tree-ssa-dse.c: Include builtins.h and gimple-fold.h.
2184 (maybe_trim_memstar_call): Move head_trim and tail_trim vars to
2185 function body scope, reindent. For BUILTIN_IN_STRNCPY*, don't
2186 perform head trim unless we can prove there are no '\0' chars
2187 from the source among the first head_trim chars.
2188
2189 2020-01-14 David Malcolm <dmalcolm@redhat.com>
2190
2191 * Makefile.in (ANALYZER_OBJS): Add analyzer/function-set.o.
2192
2193 2020-01-15 Jakub Jelinek <jakub@redhat.com>
2194
2195 PR target/93009
2196 * config/i386/sse.md
2197 (*<sd_mask_codefor>fma_fmadd_<mode><sd_maskz_name>_bcst_1,
2198 *<sd_mask_codefor>fma_fmsub_<mode><sd_maskz_name>_bcst_1,
2199 *<sd_mask_codefor>fma_fnmadd_<mode><sd_maskz_name>_bcst_1,
2200 *<sd_mask_codefor>fma_fnmsub_<mode><sd_maskz_name>_bcst_1): Use
2201 just a single alternative instead of two, make operands 1 and 2
2202 commutative.
2203
2204 2020-01-14 Jan Hubicka <hubicka@ucw.cz>
2205
2206 PR lto/91576
2207 * ipa-devirt.c (odr_types_equivalent_p): Compare TREE_ADDRESSABLE and
2208 TYPE_MODE.
2209
2210 2020-01-14 David Malcolm <dmalcolm@redhat.com>
2211
2212 * Makefile.in (lang_opt_files): Add analyzer.opt.
2213 (ANALYZER_OBJS): New.
2214 (OBJS): Add digraph.o, graphviz.o, ordered-hash-map-tests.o,
2215 tristate.o and ANALYZER_OBJS.
2216 (TEXI_GCCINT_FILES): Add analyzer.texi.
2217 * common.opt (-fanalyzer): New driver option.
2218 * config.in: Regenerate.
2219 * configure: Regenerate.
2220 * configure.ac (--disable-analyzer, ENABLE_ANALYZER): New option.
2221 (gccdepdir): Also create depdir for "analyzer" subdir.
2222 * digraph.cc: New file.
2223 * digraph.h: New file.
2224 * doc/analyzer.texi: New file.
2225 * doc/gccint.texi ("Static Analyzer") New menu item.
2226 (analyzer.texi): Include it.
2227 * doc/invoke.texi ("Static Analyzer Options"): New list and new section.
2228 ("Warning Options"): Add static analysis warnings to the list.
2229 (-Wno-analyzer-double-fclose): New option.
2230 (-Wno-analyzer-double-free): New option.
2231 (-Wno-analyzer-exposure-through-output-file): New option.
2232 (-Wno-analyzer-file-leak): New option.
2233 (-Wno-analyzer-free-of-non-heap): New option.
2234 (-Wno-analyzer-malloc-leak): New option.
2235 (-Wno-analyzer-possible-null-argument): New option.
2236 (-Wno-analyzer-possible-null-dereference): New option.
2237 (-Wno-analyzer-null-argument): New option.
2238 (-Wno-analyzer-null-dereference): New option.
2239 (-Wno-analyzer-stale-setjmp-buffer): New option.
2240 (-Wno-analyzer-tainted-array-index): New option.
2241 (-Wno-analyzer-use-after-free): New option.
2242 (-Wno-analyzer-use-of-pointer-in-stale-stack-frame): New option.
2243 (-Wno-analyzer-use-of-uninitialized-value): New option.
2244 (-Wanalyzer-too-complex): New option.
2245 (-fanalyzer-call-summaries): New warning.
2246 (-fanalyzer-checker=): New warning.
2247 (-fanalyzer-fine-grained): New warning.
2248 (-fno-analyzer-state-merge): New warning.
2249 (-fno-analyzer-state-purge): New warning.
2250 (-fanalyzer-transitivity): New warning.
2251 (-fanalyzer-verbose-edges): New warning.
2252 (-fanalyzer-verbose-state-changes): New warning.
2253 (-fanalyzer-verbosity=): New warning.
2254 (-fdump-analyzer): New warning.
2255 (-fdump-analyzer-callgraph): New warning.
2256 (-fdump-analyzer-exploded-graph): New warning.
2257 (-fdump-analyzer-exploded-nodes): New warning.
2258 (-fdump-analyzer-exploded-nodes-2): New warning.
2259 (-fdump-analyzer-exploded-nodes-3): New warning.
2260 (-fdump-analyzer-supergraph): New warning.
2261 * doc/sourcebuild.texi (dg-require-dot): New.
2262 (dg-check-dot): New.
2263 * gdbinit.in (break-on-saved-diagnostic): New command.
2264 * graphviz.cc: New file.
2265 * graphviz.h: New file.
2266 * ordered-hash-map-tests.cc: New file.
2267 * ordered-hash-map.h: New file.
2268 * passes.def (pass_analyzer): Add before
2269 pass_ipa_whole_program_visibility.
2270 * selftest-run-tests.c (selftest::run_tests): Call
2271 selftest::ordered_hash_map_tests_cc_tests.
2272 * selftest.h (selftest::ordered_hash_map_tests_cc_tests): New
2273 decl.
2274 * shortest-paths.h: New file.
2275 * timevar.def (TV_ANALYZER): New timevar.
2276 (TV_ANALYZER_SUPERGRAPH): Likewise.
2277 (TV_ANALYZER_STATE_PURGE): Likewise.
2278 (TV_ANALYZER_PLAN): Likewise.
2279 (TV_ANALYZER_SCC): Likewise.
2280 (TV_ANALYZER_WORKLIST): Likewise.
2281 (TV_ANALYZER_DUMP): Likewise.
2282 (TV_ANALYZER_DIAGNOSTICS): Likewise.
2283 (TV_ANALYZER_SHORTEST_PATHS): Likewise.
2284 * tree-pass.h (make_pass_analyzer): New decl.
2285 * tristate.cc: New file.
2286 * tristate.h: New file.
2287
2288 2020-01-14 Uroš Bizjak <ubizjak@gmail.com>
2289
2290 PR target/93254
2291 * config/i386/i386.md (*movsf_internal): Require SSE2 ISA for
2292 alternatives 9 and 10.
2293
2294 2020-01-14 David Malcolm <dmalcolm@redhat.com>
2295
2296 * attribs.c (excl_hash_traits::empty_zero_p): New static constant.
2297 * gcov.c (function_start_pair_hash::empty_zero_p): Likewise.
2298 * graphite.c (struct sese_scev_hash::empty_zero_p): Likewise.
2299 * hash-map-tests.c (selftest::test_nonzero_empty_key): New selftest.
2300 (selftest::hash_map_tests_c_tests): Call it.
2301 * hash-map-traits.h (simple_hashmap_traits::empty_zero_p):
2302 New static constant, using the value of = H::empty_zero_p.
2303 (unbounded_hashmap_traits::empty_zero_p): Likewise, using the value
2304 from default_hash_traits <Value>.
2305 * hash-map.h (hash_map::empty_zero_p): Likewise, using the value
2306 from Traits.
2307 * hash-set-tests.c (value_hash_traits::empty_zero_p): Likewise.
2308 * hash-table.h (hash_table::alloc_entries): Guard the loop of
2309 calls to mark_empty with !Descriptor::empty_zero_p.
2310 (hash_table::empty_slow): Conditionalize the memset call with a
2311 check that Descriptor::empty_zero_p; otherwise, loop through the
2312 entries calling mark_empty on them.
2313 * hash-traits.h (int_hash::empty_zero_p): New static constant.
2314 (pointer_hash::empty_zero_p): Likewise.
2315 (pair_hash::empty_zero_p): Likewise.
2316 * ipa-devirt.c (default_hash_traits <type_pair>::empty_zero_p):
2317 Likewise.
2318 * ipa-prop.c (ipa_bit_ggc_hash_traits::empty_zero_p): Likewise.
2319 (ipa_vr_ggc_hash_traits::empty_zero_p): Likewise.
2320 * profile.c (location_triplet_hash::empty_zero_p): Likewise.
2321 * sanopt.c (sanopt_tree_triplet_hash::empty_zero_p): Likewise.
2322 (sanopt_tree_couple_hash::empty_zero_p): Likewise.
2323 * tree-hasher.h (int_tree_hasher::empty_zero_p): Likewise.
2324 * tree-ssa-sccvn.c (vn_ssa_aux_hasher::empty_zero_p): Likewise.
2325 * tree-vect-slp.c (bst_traits::empty_zero_p): Likewise.
2326 * tree-vectorizer.h
2327 (default_hash_traits<scalar_cond_masked_key>::empty_zero_p):
2328 Likewise.
2329
2330 2020-01-14 Kewen Lin <linkw@gcc.gnu.org>
2331
2332 * cfgloopanal.c (average_num_loop_insns): Free bbs when early return,
2333 fix typo on return value.
2334
2335 2020-01-14 Xiong Hu Luo <luoxhu@linux.ibm.com>
2336
2337 PR ipa/69678
2338 * cgraph.c (symbol_table::create_edge): Init speculative_id and
2339 target_prob.
2340 (cgraph_edge::make_speculative): Add param for setting speculative_id
2341 and target_prob.
2342 (cgraph_edge::speculative_call_info): Update comments and find reference
2343 by speculative_id for multiple indirect targets.
2344 (cgraph_edge::resolve_speculation): Decrease the speculations
2345 for indirect edge, drop it's speculative if not direct target
2346 left. Update comments.
2347 (cgraph_edge::redirect_call_stmt_to_callee): Likewise.
2348 (cgraph_node::dump): Print num_speculative_call_targets.
2349 (cgraph_node::verify_node): Don't report error if speculative
2350 edge not include statement.
2351 (cgraph_edge::num_speculative_call_targets_p): New function.
2352 * cgraph.h (int common_target_id): Remove.
2353 (int common_target_probability): Remove.
2354 (num_speculative_call_targets): New variable.
2355 (make_speculative): Add param for setting speculative_id.
2356 (cgraph_edge::num_speculative_call_targets_p): New declare.
2357 (target_prob): New variable.
2358 (speculative_id): New variable.
2359 * ipa-fnsummary.c (analyze_function_body): Create and duplicate
2360 call summaries for multiple speculative call targets.
2361 * cgraphclones.c (cgraph_node::create_clone): Clone speculative_id.
2362 * ipa-profile.c (struct speculative_call_target): New struct.
2363 (class speculative_call_summary): New class.
2364 (class speculative_call_summaries): New class.
2365 (call_sums): New variable.
2366 (ipa_profile_generate_summary): Generate indirect multiple targets summaries.
2367 (ipa_profile_write_edge_summary): New function.
2368 (ipa_profile_write_summary): Stream out indirect multiple targets summaries.
2369 (ipa_profile_dump_all_summaries): New function.
2370 (ipa_profile_read_edge_summary): New function.
2371 (ipa_profile_read_summary_section): New function.
2372 (ipa_profile_read_summary): Stream in indirect multiple targets summaries.
2373 (ipa_profile): Generate num_speculative_call_targets from
2374 profile summaries.
2375 * ipa-ref.h (speculative_id): New variable.
2376 * ipa-utils.c (ipa_merge_profiles): Update with target_prob.
2377 * lto-cgraph.c (lto_output_edge): Remove indirect common_target_id and
2378 common_target_probability. Stream out speculative_id and
2379 num_speculative_call_targets.
2380 (input_edge): Likewise.
2381 * predict.c (dump_prediction): Remove edges count assert to be
2382 precise.
2383 * symtab.c (symtab_node::create_reference): Init speculative_id.
2384 (symtab_node::clone_references): Clone speculative_id.
2385 (symtab_node::clone_referring): Clone speculative_id.
2386 (symtab_node::clone_reference): Clone speculative_id.
2387 (symtab_node::clear_stmts_in_references): Clear speculative_id.
2388 * tree-inline.c (copy_bb): Duplicate all the speculative edges
2389 if indirect call contains multiple speculative targets.
2390 * value-prof.h (check_ic_target): Remove.
2391 * value-prof.c (gimple_value_profile_transformations):
2392 Use void function gimple_ic_transform.
2393 * value-prof.c (gimple_ic_transform): Handle topn case.
2394 Fix comment typos. Change it to a void function.
2395
2396 2020-01-13 Andrew Pinski <apinski@marvell.com>
2397
2398 * config/aarch64/aarch64-cores.def (octeontx2): New define.
2399 (octeontx2t98): New define.
2400 (octeontx2t96): New define.
2401 (octeontx2t93): New define.
2402 (octeontx2f95): New define.
2403 (octeontx2f95n): New define.
2404 (octeontx2f95mm): New define.
2405 * config/aarch64/aarch64-tune.md: Regenerate.
2406 * doc/invoke.texi (-mcpu=): Document the new cpu types.
2407
2408 2020-01-13 Jason Merrill <jason@redhat.com>
2409
2410 PR c++/33799 - destroy return value if local cleanup throws.
2411 * gimplify.c (gimplify_return_expr): Handle COMPOUND_EXPR.
2412
2413 2020-01-13 Martin Liska <mliska@suse.cz>
2414
2415 * ipa-cp.c (get_max_overall_size): Use newly
2416 renamed param param_ipa_cp_unit_growth.
2417 * params.opt: Remove legacy param name.
2418
2419 2020-01-13 Martin Sebor <msebor@redhat.com>
2420
2421 PR tree-optimization/93213
2422 * tree-ssa-strlen.c (handle_store): Only allow single-byte nul-over-nul
2423 stores to be eliminated.
2424
2425 2020-01-13 Martin Liska <mliska@suse.cz>
2426
2427 * opts.c (print_help): Do not print CL_PARAM
2428 and CL_WARNING for CL_OPTIMIZATION.
2429
2430 2020-01-13 Jonathan Wakely <jwakely@redhat.com>
2431
2432 PR driver/92757
2433 * doc/invoke.texi (Warning Options): Add caveat about some warnings
2434 depending on optimization settings.
2435
2436 2020-01-13 Jakub Jelinek <jakub@redhat.com>
2437
2438 PR tree-optimization/90838
2439 * tree-ssa-forwprop.c (simplify_count_trailing_zeroes): Use
2440 SCALAR_INT_TYPE_MODE directly in CTZ_DEFINED_VALUE_AT_ZERO macro
2441 argument rather than to initialize temporary for targets that
2442 don't use the mode argument at all. Initialize ctzval to avoid
2443 warning at -O0.
2444
2445 2020-01-10 Thomas Schwinge <thomas@codesourcery.com>
2446
2447 * tree.h (OMP_CLAUSE_USE_DEVICE_PTR_IF_PRESENT): New definition.
2448 * tree-core.h: Document it.
2449 * gimplify.c (gimplify_omp_workshare): Set it.
2450 * omp-low.c (lower_omp_target): Use it.
2451 * tree-pretty-print.c (dump_omp_clause): Print it.
2452
2453 * omp-low.c (lower_omp_target) <OMP_CLAUSE_USE_DEVICE_PTR etc.>:
2454 Assert that for OpenACC we always have 'GOMP_MAP_USE_DEVICE_PTR'.
2455
2456 2020-01-10 David Malcolm <dmalcolm@redhat.com>
2457
2458 * Makefile.in (OBJS): Add tree-diagnostic-path.o.
2459 * common.opt (fdiagnostics-path-format=): New option.
2460 (diagnostic_path_format): New enum.
2461 (fdiagnostics-show-path-depths): New option.
2462 * coretypes.h (diagnostic_event_id_t): New forward decl.
2463 * diagnostic-color.c (color_dict): Add "path".
2464 * diagnostic-event-id.h: New file.
2465 * diagnostic-format-json.cc (json_from_expanded_location): Make
2466 non-static.
2467 (json_end_diagnostic): Call context->make_json_for_path if it
2468 exists and the diagnostic has a path.
2469 (diagnostic_output_format_init): Clear context->print_path.
2470 * diagnostic-path.h: New file.
2471 * diagnostic-show-locus.c (colorizer::set_range): Special-case
2472 when printing a run of events in a diagnostic_path so that they
2473 all get the same color.
2474 (layout::m_diagnostic_path_p): New field.
2475 (layout::layout): Initialize it.
2476 (layout::print_any_labels): Don't colorize the label text for an
2477 event in a diagnostic_path.
2478 (gcc_rich_location::add_location_if_nearby): Add
2479 "restrict_to_current_line_spans" and "label" params. Pass the
2480 former to layout.maybe_add_location_range; pass the latter
2481 when calling add_range.
2482 * diagnostic.c: Include "diagnostic-path.h".
2483 (diagnostic_initialize): Initialize context->path_format and
2484 context->show_path_depths.
2485 (diagnostic_show_any_path): New function.
2486 (diagnostic_path::interprocedural_p): New function.
2487 (diagnostic_report_diagnostic): Call diagnostic_show_any_path.
2488 (simple_diagnostic_path::num_events): New function.
2489 (simple_diagnostic_path::get_event): New function.
2490 (simple_diagnostic_path::add_event): New function.
2491 (simple_diagnostic_event::simple_diagnostic_event): New ctor.
2492 (simple_diagnostic_event::~simple_diagnostic_event): New dtor.
2493 (debug): New overload taking a diagnostic_path *.
2494 * diagnostic.def (DK_DIAGNOSTIC_PATH): New.
2495 * diagnostic.h (enum diagnostic_path_format): New enum.
2496 (json::value): New forward decl.
2497 (diagnostic_context::path_format): New field.
2498 (diagnostic_context::show_path_depths): New field.
2499 (diagnostic_context::print_path): New callback field.
2500 (diagnostic_context::make_json_for_path): New callback field.
2501 (diagnostic_show_any_path): New decl.
2502 (json_from_expanded_location): New decl.
2503 * doc/invoke.texi (-fdiagnostics-path-format=): New option.
2504 (-fdiagnostics-show-path-depths): New option.
2505 (-fdiagnostics-color): Add "path" to description of default
2506 GCC_COLORS; describe it.
2507 (-fdiagnostics-format=json): Document how diagnostic paths are
2508 represented in the JSON output format.
2509 * gcc-rich-location.h (gcc_rich_location::add_location_if_nearby):
2510 Add optional params "restrict_to_current_line_spans" and "label".
2511 * opts.c (common_handle_option): Handle
2512 OPT_fdiagnostics_path_format_ and
2513 OPT_fdiagnostics_show_path_depths.
2514 * pretty-print.c: Include "diagnostic-event-id.h".
2515 (pp_format): Implement "%@" format code for printing
2516 diagnostic_event_id_t *.
2517 (selftest::test_pp_format): Add tests for "%@".
2518 * selftest-run-tests.c (selftest::run_tests): Call
2519 selftest::tree_diagnostic_path_cc_tests.
2520 * selftest.h (selftest::tree_diagnostic_path_cc_tests): New decl.
2521 * toplev.c (general_init): Initialize global_dc->path_format and
2522 global_dc->show_path_depths.
2523 * tree-diagnostic-path.cc: New file.
2524 * tree-diagnostic.c (maybe_unwind_expanded_macro_loc): Make
2525 non-static. Drop "diagnostic" param in favor of storing the
2526 original value of "where" and re-using it.
2527 (virt_loc_aware_diagnostic_finalizer): Update for dropped param of
2528 maybe_unwind_expanded_macro_loc.
2529 (tree_diagnostics_defaults): Initialize context->print_path and
2530 context->make_json_for_path.
2531 * tree-diagnostic.h (default_tree_diagnostic_path_printer): New
2532 decl.
2533 (default_tree_make_json_for_path): New decl.
2534 (maybe_unwind_expanded_macro_loc): New decl.
2535
2536 2020-01-10 Jakub Jelinek <jakub@redhat.com>
2537
2538 PR tree-optimization/93210
2539 * fold-const.h (native_encode_initializer,
2540 can_native_interpret_type_p): Declare.
2541 * fold-const.c (native_encode_string): Fix up handling with off != -1,
2542 simplify.
2543 (native_encode_initializer): New function, moved from dwarf2out.c.
2544 Adjust to native_encode_expr compatible arguments, including dry-run
2545 and partial extraction modes. Don't handle STRING_CST.
2546 (can_native_interpret_type_p): No longer static.
2547 * gimple-fold.c (fold_ctor_reference): For native_encode_expr, verify
2548 offset / BITS_PER_UNIT fits into int and don't call it if
2549 can_native_interpret_type_p fails. If suboff is NULL and for
2550 CONSTRUCTOR fold_{,non}array_ctor_reference returns NULL, retry with
2551 native_encode_initializer.
2552 (fold_const_aggregate_ref_1): Formatting fix.
2553 * dwarf2out.c (native_encode_initializer): Moved to fold-const.c.
2554 (tree_add_const_value_attribute): Adjust caller.
2555
2556 PR tree-optimization/90838
2557 * tree-ssa-forwprop.c (simplify_count_trailing_zeroes): Use
2558 SCALAR_INT_TYPE_MODE instead of TYPE_MODE as operand of
2559 CTZ_DEFINED_VALUE_AT_ZERO.
2560
2561 2020-01-10 Vladimir Makarov <vmakarov@redhat.com>
2562
2563 PR inline-asm/93027
2564 * lra-constraints.c (match_reload): Permit input operands have the
2565 same mode as output while other input operands have a different
2566 mode.
2567
2568 2020-01-10 Wilco Dijkstra <wdijkstr@arm.com>
2569
2570 PR tree-optimization/90838
2571 * tree-ssa-forwprop.c (check_ctz_array): Add new function.
2572 (check_ctz_string): Likewise.
2573 (optimize_count_trailing_zeroes): Likewise.
2574 (simplify_count_trailing_zeroes): Likewise.
2575 (pass_forwprop::execute): Try ctz simplification.
2576 * match.pd: Add matching for ctz idioms.
2577
2578 2020-01-10 Stam Markianos-Wright <stam.markianos-wright@arm.com>
2579
2580 * config/aarch64/aarch64.c (aarch64_invalid_conversion): New function
2581 for target hook.
2582 (aarch64_invalid_unary_op): New function for target hook.
2583 (aarch64_invalid_binary_op): New function for target hook.
2584
2585 2020-01-10 Stam Markianos-Wright <stam.markianos-wright@arm.com>
2586
2587 * config.gcc: Add arm_bf16.h.
2588 * config/aarch64/aarch64-builtins.c
2589 (aarch64_simd_builtin_std_type): Add BFmode.
2590 (aarch64_init_simd_builtin_types): Define element types for vector
2591 types.
2592 (aarch64_init_bf16_types): New function.
2593 (aarch64_general_init_builtins): Add arm_init_bf16_types function call.
2594 * config/aarch64/aarch64-modes.def: Add BFmode and V4BF, V8BF vector
2595 modes.
2596 * config/aarch64/aarch64-simd-builtin-types.def: Add BF SIMD types.
2597 * config/aarch64/aarch64-simd.md: Add BF vector types to NEON move
2598 patterns.
2599 * config/aarch64/aarch64.h (AARCH64_VALID_SIMD_DREG_MODE): Add V4BF.
2600 (AARCH64_VALID_SIMD_QREG_MODE): Add V8BF.
2601 * config/aarch64/aarch64.c
2602 (aarch64_classify_vector_mode): Add support for BF types.
2603 (aarch64_gimplify_va_arg_expr): Add support for BF types.
2604 (aarch64_vq_mode): Add support for BF types.
2605 (aarch64_simd_container_mode): Add support for BF types.
2606 (aarch64_mangle_type): Add support for BF scalar type.
2607 * config/aarch64/aarch64.md: Add BFmode to movhf pattern.
2608 * config/aarch64/arm_bf16.h: New file.
2609 * config/aarch64/arm_neon.h: Add arm_bf16.h and Bfloat vector types.
2610 * config/aarch64/iterators.md: Add BF types to mode attributes.
2611 (HFBF, GPF_TF_F16_MOV, VDMOV, VQMOV, VQMOV_NO2Em VALL_F16MOV): New.
2612
2613 2020-01-10 Jason Merrill <jason@redhat.com>
2614
2615 PR c++/93173 - incorrect tree sharing.
2616 * gimplify.c (copy_if_shared): No longer static.
2617 * gimplify.h: Declare it.
2618
2619 2020-01-10 Richard Sandiford <richard.sandiford@arm.com>
2620
2621 * doc/invoke.texi (-msve-vector-bits=): Document that
2622 -msve-vector-bits=128 now generates VL-specific code for
2623 little-endian targets.
2624 * config/aarch64/aarch64-sve-builtins.cc (register_builtin_types): Use
2625 build_vector_type_for_mode to construct the data vector types.
2626 * config/aarch64/aarch64.c (aarch64_convert_sve_vector_bits): Generate
2627 VL-specific code for -msve-vector-bits=128 on little-endian targets.
2628 (aarch64_simd_container_mode): Always prefer Advanced SIMD modes
2629 for 128-bit vectors.
2630
2631 2020-01-10 Richard Sandiford <richard.sandiford@arm.com>
2632
2633 * config/aarch64/aarch64.c (aarch64_evpc_sel): Fix gen_vcond_mask
2634 invocation.
2635
2636 2020-01-10 Richard Sandiford <richard.sandiford@arm.com>
2637
2638 * config/aarch64/aarch64-builtins.c
2639 (aarch64_builtin_vectorized_function): Check for specific vector modes,
2640 rather than checking the number of elements and the element mode.
2641
2642 2020-01-10 Richard Sandiford <richard.sandiford@arm.com>
2643
2644 * tree-vect-loop.c (vect_create_epilog_for_reduction): Use
2645 get_related_vectype_for_scalar_type rather than build_vector_type
2646 to create the index type for a conditional reduction.
2647
2648 2020-01-10 Richard Sandiford <richard.sandiford@arm.com>
2649
2650 * tree-vect-loop.c (update_epilogue_loop_vinfo): Update DR_REF
2651 for any type of gather or scatter, including strided accesses.
2652
2653 2020-01-10 Andre Vieira <andre.simoesdiasvieira@arm.com>
2654
2655 * tree-vectorizer.h (get_dr_vinfo_offset): Add missing function
2656 comment.
2657
2658 2020-01-10 Andre Vieira <andre.simoesdiasvieira@arm.com>
2659
2660 * tree-vect-data-refs.c (vect_create_addr_base_for_vector_ref): Use
2661 get_dr_vinfo_offset
2662 * tree-vect-loop.c (update_epilogue_loop_vinfo): Remove orig_drs_init
2663 parameter and its use to reset DR_OFFSET's.
2664 (vect_transform_loop): Remove orig_drs_init argument.
2665 * tree-vect-loop-manip.c (vect_update_init_of_dr): Update the offset
2666 member of dr_vec_info rather than the offset of the associated
2667 data_reference's innermost_loop_behavior.
2668 (vect_update_init_of_dr): Pass dr_vec_info instead of data_reference.
2669 (vect_do_peeling): Remove orig_drs_init parameter and its construction.
2670 * tree-vect-stmts.c (check_scan_store): Replace use of DR_OFFSET with
2671 get_dr_vinfo_offset.
2672 (vectorizable_store): Likewise.
2673 (vectorizable_load): Likewise.
2674
2675 2020-01-10 Richard Biener <rguenther@suse.de>
2676
2677 * gimple-ssa-store-merging
2678 (pass_store_merging::terminate_all_aliasing_chains): Cache alias info.
2679
2680 2020-01-10 Martin Liska <mliska@suse.cz>
2681
2682 PR ipa/93217
2683 * ipa-inline-analysis.c (offline_size): Make proper parenthesis
2684 encapsulation that was there before r280040.
2685
2686 2020-01-10 Richard Biener <rguenther@suse.de>
2687
2688 PR middle-end/93199
2689 * tree-eh.c (sink_clobbers): Move clobbers to out-of-IL
2690 sequences to avoid walking them again for secondary opportunities.
2691 (pass_lower_eh_dispatch::execute): Instead actually insert
2692 them here.
2693
2694 2020-01-10 Richard Biener <rguenther@suse.de>
2695
2696 PR middle-end/93199
2697 * tree-eh.c (redirect_eh_edge_1): Avoid some work if possible.
2698 (cleanup_all_empty_eh): Walk landing pads in reverse order to
2699 avoid quadraticness.
2700
2701 2020-01-10 Martin Jambor <mjambor@suse.cz>
2702
2703 * params.opt (param_ipa_sra_max_replacements): Mark as Optimization.
2704 * ipa-sra.c (pull_accesses_from_callee): New parameter caller, use it
2705 to get param_ipa_sra_max_replacements.
2706 (param_splitting_across_edge): Pass the caller to
2707 pull_accesses_from_callee.
2708
2709 2020-01-10 Martin Jambor <mjambor@suse.cz>
2710
2711 * params.opt (param_ipcp_unit_growth): Mark as Optimization.
2712 * ipa-cp.c (max_new_size): Removed.
2713 (orig_overall_size): New variable.
2714 (get_max_overall_size): New function.
2715 (estimate_local_effects): Use it. Adjust dump.
2716 (decide_about_value): Likewise.
2717 (ipcp_propagate_stage): Do not calculate max_new_size, just store
2718 orig_overall_size. Adjust dump.
2719 (ipa_cp_c_finalize): Clear orig_overall_size instead of max_new_size.
2720
2721 2020-01-10 Martin Jambor <mjambor@suse.cz>
2722
2723 * params.opt (param_ipa_max_agg_items): Mark as Optimization
2724 * ipa-cp.c (merge_agg_lats_step): New parameter max_agg_items, use
2725 instead of param_ipa_max_agg_items.
2726 (merge_aggregate_lattices): Extract param_ipa_max_agg_items from
2727 optimization info for the callee.
2728
2729 2020-01-09 Kwok Cheung Yeung <kcy@codesourcery.com>
2730
2731 * lto-streamer-in.c (input_function): Remove streamed-in inline debug
2732 markers if debug_inline_points is false.
2733
2734 2020-01-09 Richard Sandiford <richard.sandiford@arm.com>
2735
2736 * config.gcc (aarch64*-*-*): Add aarch64-sve-builtins-sve2.o to
2737 extra_objs.
2738 * config/aarch64/t-aarch64 (aarch64-sve-builtins.o): Depend on
2739 aarch64-sve-builtins-base.def, aarch64-sve-builtins-sve2.def and
2740 aarch64-sve-builtins-sve2.h.
2741 (aarch64-sve-builtins-sve2.o): New rule.
2742 * config/aarch64/aarch64.h (AARCH64_ISA_SVE2_AES): New macro.
2743 (AARCH64_ISA_SVE2_BITPERM, AARCH64_ISA_SVE2_SHA3): Likewise.
2744 (AARCH64_ISA_SVE2_SM4, TARGET_SVE2_AES, TARGET_SVE2_BITPERM): Likewise.
2745 (TARGET_SVE2_SHA, TARGET_SVE2_SM4): Likewise.
2746 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Handle
2747 TARGET_SVE2_AES, TARGET_SVE2_BITPERM, TARGET_SVE2_SHA3 and
2748 TARGET_SVE2_SM4.
2749 * config/aarch64/aarch64-sve.md: Update comments with SVE2
2750 instructions that are handled here.
2751 (@cond_asrd<mode>): Generalize to...
2752 (@cond_<SVE_INT_SHIFT_IMM:sve_int_op><mode>): ...this.
2753 (*cond_asrd<mode>_2): Generalize to...
2754 (*cond_<SVE_INT_SHIFT_IMM:sve_int_op><mode>_2): ...this.
2755 (*cond_asrd<mode>_z): Generalize to...
2756 (*cond_<SVE_INT_SHIFT_IMM:sve_int_op><mode>_z): ...this.
2757 * config/aarch64/aarch64.md (UNSPEC_LDNT1_GATHER): New unspec.
2758 (UNSPEC_STNT1_SCATTER, UNSPEC_WHILEGE, UNSPEC_WHILEGT): Likewise.
2759 (UNSPEC_WHILEHI, UNSPEC_WHILEHS): Likewise.
2760 * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): New
2761 pattern.
2762 (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode><SVE_PARTIAL_I:mode>)
2763 (@aarch64_scatter_stnt<mode>): Likewise.
2764 (@aarch64_scatter_stnt_<SVE_FULL_SDI:mode><SVE_PARTIAL_I:mode>)
2765 (@aarch64_mul_lane_<mode>): Likewise.
2766 (@aarch64_sve_suqadd<mode>_const): Likewise.
2767 (*<sur>h<addsub><mode>): Generalize to...
2768 (@aarch64_pred_<SVE2_COND_INT_BINARY_REV:sve_int_op><mode>): ...this
2769 new pattern.
2770 (@cond_<SVE2_COND_INT_BINARY:sve_int_op><mode>): New expander.
2771 (*cond_<SVE2_COND_INT_BINARY:sve_int_op><mode>_2): New pattern.
2772 (*cond_<SVE2_COND_INT_BINARY:sve_int_op><mode>_3): Likewise.
2773 (*cond_<SVE2_COND_INT_BINARY:sve_int_op><mode>_any): Likewise.
2774 (*cond_<SVE2_COND_INT_BINARY_NOREV:sve_int_op><mode>_z): Likewise.
2775 (@aarch64_sve_<SVE2_INT_BINARY:sve_int_op><mode>):: Likewise.
2776 (@aarch64_sve_<SVE2_INT_BINARY:sve_int_op>_lane_<mode>): Likewise.
2777 (@aarch64_pred_<SVE2_COND_INT_SHIFT:sve_int_op><mode>): Likewise.
2778 (@cond_<SVE2_COND_INT_SHIFT:sve_int_op><mode>): New expander.
2779 (*cond_<SVE2_COND_INT_SHIFT:sve_int_op><mode>_2): New pattern.
2780 (*cond_<SVE2_COND_INT_SHIFT:sve_int_op><mode>_3): Likewise.
2781 (*cond_<SVE2_COND_INT_SHIFT:sve_int_op><mode>_any): Likewise.
2782 (@aarch64_sve_<SVE2_INT_TERNARY:sve_int_op><mode>): Likewise.
2783 (@aarch64_sve_<SVE2_INT_TERNARY_LANE:sve_int_op>_lane_<mode>)
2784 (@aarch64_sve_add_mul_lane_<mode>): Likewise.
2785 (@aarch64_sve_sub_mul_lane_<mode>): Likewise.
2786 (@aarch64_sve2_xar<mode>): Likewise.
2787 (@aarch64_sve2_bcax<mode>): Likewise.
2788 (*aarch64_sve2_eor3<mode>): Rename to...
2789 (@aarch64_sve2_eor3<mode>): ...this.
2790 (@aarch64_sve2_bsl<mode>): New expander.
2791 (@aarch64_sve2_nbsl<mode>): Likewise.
2792 (@aarch64_sve2_bsl1n<mode>): Likewise.
2793 (@aarch64_sve2_bsl2n<mode>): Likewise.
2794 (@aarch64_sve_add_<SHIFTRT:sve_int_op><mode>): Likewise.
2795 (*aarch64_sve2_sra<mode>): Add MOVPRFX support.
2796 (@aarch64_sve_add_<VRSHR_N:sve_int_op><mode>): New pattern.
2797 (@aarch64_sve_<SVE2_INT_SHIFT_INSERT:sve_int_op><mode>): Likewise.
2798 (@aarch64_sve2_<USMAX:su>aba<mode>): New expander.
2799 (*aarch64_sve2_<USMAX:su>aba<mode>): New pattern.
2800 (@aarch64_sve_<SVE2_INT_BINARY_WIDE:sve_int_op><mode>): Likewise.
2801 (<su>mull<bt><Vwide>): Generalize to...
2802 (@aarch64_sve_<SVE2_INT_BINARY_LONG:sve_int_op><mode>): ...this new
2803 pattern.
2804 (@aarch64_sve_<SVE2_INT_BINARY_LONG_lANE:sve_int_op>_lane_<mode>)
2805 (@aarch64_sve_<SVE2_INT_SHIFT_IMM_LONG:sve_int_op><mode>)
2806 (@aarch64_sve_add_<SVE2_INT_ADD_BINARY_LONG:sve_int_op><mode>)
2807 (@aarch64_sve_add_<SVE2_INT_ADD_BINARY_LONG_LANE:sve_int_op>_lane_<mode>)
2808 (@aarch64_sve_qadd_<SVE2_INT_QADD_BINARY_LONG:sve_int_op><mode>)
2809 (@aarch64_sve_qadd_<SVE2_INT_QADD_BINARY_LONG_LANE:sve_int_op>_lane_<mode>)
2810 (@aarch64_sve_sub_<SVE2_INT_SUB_BINARY_LONG:sve_int_op><mode>)
2811 (@aarch64_sve_sub_<SVE2_INT_SUB_BINARY_LONG_LANE:sve_int_op>_lane_<mode>)
2812 (@aarch64_sve_qsub_<SVE2_INT_QSUB_BINARY_LONG:sve_int_op><mode>)
2813 (@aarch64_sve_qsub_<SVE2_INT_QSUB_BINARY_LONG_LANE:sve_int_op>_lane_<mode>)
2814 (@aarch64_sve_<SVE2_FP_TERNARY_LONG:sve_fp_op><mode>): New patterns.
2815 (@aarch64_<SVE2_FP_TERNARY_LONG_LANE:sve_fp_op>_lane_<mode>)
2816 (@aarch64_sve_<SVE2_INT_UNARY_NARROWB:sve_int_op><mode>): Likewise.
2817 (@aarch64_sve_<SVE2_INT_UNARY_NARROWT:sve_int_op><mode>): Likewise.
2818 (@aarch64_sve_<SVE2_INT_BINARY_NARROWB:sve_int_op><mode>): Likewise.
2819 (@aarch64_sve_<SVE2_INT_BINARY_NARROWT:sve_int_op><mode>): Likewise.
2820 (<SHRNB:r>shrnb<mode>): Generalize to...
2821 (@aarch64_sve_<SVE2_INT_SHIFT_IMM_NARROWB:sve_int_op><mode>): ...this
2822 new pattern.
2823 (<SHRNT:r>shrnt<mode>): Generalize to...
2824 (@aarch64_sve_<SVE2_INT_SHIFT_IMM_NARROWT:sve_int_op><mode>): ...this
2825 new pattern.
2826 (@aarch64_pred_<SVE2_INT_BINARY_PAIR:sve_int_op><mode>): New pattern.
2827 (@aarch64_pred_<SVE2_FP_BINARY_PAIR:sve_fp_op><mode>): Likewise.
2828 (@cond_<SVE2_INT_BINARY_PAIR_LONG:sve_int_op><mode>): New expander.
2829 (*cond_<SVE2_INT_BINARY_PAIR_LONG:sve_int_op><mode>_2): New pattern.
2830 (*cond_<SVE2_INT_BINARY_PAIR_LONG:sve_int_op><mode>_z): Likewise.
2831 (@aarch64_sve_<SVE2_INT_CADD:optab><mode>): Likewise.
2832 (@aarch64_sve_<SVE2_INT_CMLA:optab><mode>): Likewise.
2833 (@aarch64_<SVE2_INT_CMLA:optab>_lane_<mode>): Likewise.
2834 (@aarch64_sve_<SVE2_INT_CDOT:optab><mode>): Likewise.
2835 (@aarch64_<SVE2_INT_CDOT:optab>_lane_<mode>): Likewise.
2836 (@aarch64_pred_<SVE2_COND_FP_UNARY_LONG:sve_fp_op><mode>): Likewise.
2837 (@cond_<SVE2_COND_FP_UNARY_LONG:sve_fp_op><mode>): New expander.
2838 (*cond_<SVE2_COND_FP_UNARY_LONG:sve_fp_op><mode>): New pattern.
2839 (@aarch64_sve2_cvtnt<mode>): Likewise.
2840 (@aarch64_pred_<SVE2_COND_FP_UNARY_NARROWB:sve_fp_op><mode>): Likewise.
2841 (@cond_<SVE2_COND_FP_UNARY_NARROWB:sve_fp_op><mode>): New expander.
2842 (*cond_<SVE2_COND_FP_UNARY_NARROWB:sve_fp_op><mode>_any): New pattern.
2843 (@aarch64_sve2_cvtxnt<mode>): Likewise.
2844 (@aarch64_pred_<SVE2_U32_UNARY:sve_int_op><mode>): Likewise.
2845 (@cond_<SVE2_U32_UNARY:sve_int_op><mode>): New expander.
2846 (*cond_<SVE2_U32_UNARY:sve_int_op><mode>): New pattern.
2847 (@aarch64_pred_<SVE2_COND_INT_UNARY_FP:sve_fp_op><mode>): Likewise.
2848 (@cond_<SVE2_COND_INT_UNARY_FP:sve_fp_op><mode>): New expander.
2849 (*cond_<SVE2_COND_INT_UNARY_FP:sve_fp_op><mode>): New pattern.
2850 (@aarch64_sve2_pmul<mode>): Likewise.
2851 (@aarch64_sve_<SVE2_PMULL:optab><mode>): Likewise.
2852 (@aarch64_sve_<SVE2_PMULL_PAIR:optab><mode>): Likewise.
2853 (@aarch64_sve2_tbl2<mode>): Likewise.
2854 (@aarch64_sve2_tbx<mode>): Likewise.
2855 (@aarch64_sve_<SVE2_INT_BITPERM:sve_int_op><mode>): Likewise.
2856 (@aarch64_sve2_histcnt<mode>): Likewise.
2857 (@aarch64_sve2_histseg<mode>): Likewise.
2858 (@aarch64_pred_<SVE2_MATCH:sve_int_op><mode>): Likewise.
2859 (*aarch64_pred_<SVE2_MATCH:sve_int_op><mode>_cc): Likewise.
2860 (*aarch64_pred_<SVE2_MATCH:sve_int_op><mode>_ptest): Likewise.
2861 (aarch64_sve2_aes<CRYPTO_AES:aes_op>): Likewise.
2862 (aarch64_sve2_aes<CRYPTO_AESMC:aesmc_op>): Likewise.
2863 (*aarch64_sve2_aese_fused, *aarch64_sve2_aesd_fused): Likewise.
2864 (aarch64_sve2_rax1, aarch64_sve2_sm4e, aarch64_sve2_sm4ekey): Likewise.
2865 (<su>mulh<r>s<mode>3): Update after above pattern name changes.
2866 * config/aarch64/iterators.md (VNx16QI_ONLY, VNx4SF_ONLY)
2867 (SVE_STRUCT2, SVE_FULL_BHI, SVE_FULL_HSI, SVE_FULL_HDI)
2868 (SVE2_PMULL_PAIR_I): New mode iterators.
2869 (UNSPEC_ADCLB, UNSPEC_ADCLT, UNSPEC_ADDHNB, UNSPEC_ADDHNT, UNSPEC_BDEP)
2870 (UNSPEC_BEXT, UNSPEC_BGRP, UNSPEC_CADD90, UNSPEC_CADD270, UNSPEC_CDOT)
2871 (UNSPEC_CDOT90, UNSPEC_CDOT180, UNSPEC_CDOT270, UNSPEC_CMLA)
2872 (UNSPEC_CMLA90, UNSPEC_CMLA180, UNSPEC_CMLA270, UNSPEC_COND_FCVTLT)
2873 (UNSPEC_COND_FCVTNT, UNSPEC_COND_FCVTX, UNSPEC_COND_FCVTXNT)
2874 (UNSPEC_COND_FLOGB, UNSPEC_EORBT, UNSPEC_EORTB, UNSPEC_FADDP)
2875 (UNSPEC_FMAXP, UNSPEC_FMAXNMP, UNSPEC_FMLALB, UNSPEC_FMLALT)
2876 (UNSPEC_FMLSLB, UNSPEC_FMLSLT, UNSPEC_FMINP, UNSPEC_FMINNMP)
2877 (UNSPEC_HISTCNT, UNSPEC_HISTSEG, UNSPEC_MATCH, UNSPEC_NMATCH)
2878 (UNSPEC_PMULLB, UNSPEC_PMULLB_PAIR, UNSPEC_PMULLT, UNSPEC_PMULLT_PAIR)
2879 (UNSPEC_RADDHNB, UNSPEC_RADDHNT, UNSPEC_RSUBHNB, UNSPEC_RSUBHNT)
2880 (UNSPEC_SLI, UNSPEC_SRI, UNSPEC_SABDLB, UNSPEC_SABDLT, UNSPEC_SADDLB)
2881 (UNSPEC_SADDLBT, UNSPEC_SADDLT, UNSPEC_SADDWB, UNSPEC_SADDWT)
2882 (UNSPEC_SBCLB, UNSPEC_SBCLT, UNSPEC_SMAXP, UNSPEC_SMINP)
2883 (UNSPEC_SQCADD90, UNSPEC_SQCADD270, UNSPEC_SQDMULLB, UNSPEC_SQDMULLBT)
2884 (UNSPEC_SQDMULLT, UNSPEC_SQRDCMLAH, UNSPEC_SQRDCMLAH90)
2885 (UNSPEC_SQRDCMLAH180, UNSPEC_SQRDCMLAH270, UNSPEC_SQRSHRNB)
2886 (UNSPEC_SQRSHRNT, UNSPEC_SQRSHRUNB, UNSPEC_SQRSHRUNT, UNSPEC_SQSHRNB)
2887 (UNSPEC_SQSHRNT, UNSPEC_SQSHRUNB, UNSPEC_SQSHRUNT, UNSPEC_SQXTNB)
2888 (UNSPEC_SQXTNT, UNSPEC_SQXTUNB, UNSPEC_SQXTUNT, UNSPEC_SSHLLB)
2889 (UNSPEC_SSHLLT, UNSPEC_SSUBLB, UNSPEC_SSUBLBT, UNSPEC_SSUBLT)
2890 (UNSPEC_SSUBLTB, UNSPEC_SSUBWB, UNSPEC_SSUBWT, UNSPEC_SUBHNB)
2891 (UNSPEC_SUBHNT, UNSPEC_TBL2, UNSPEC_UABDLB, UNSPEC_UABDLT)
2892 (UNSPEC_UADDLB, UNSPEC_UADDLT, UNSPEC_UADDWB, UNSPEC_UADDWT)
2893 (UNSPEC_UMAXP, UNSPEC_UMINP, UNSPEC_UQRSHRNB, UNSPEC_UQRSHRNT)
2894 (UNSPEC_UQSHRNB, UNSPEC_UQSHRNT, UNSPEC_UQXTNB, UNSPEC_UQXTNT)
2895 (UNSPEC_USHLLB, UNSPEC_USHLLT, UNSPEC_USUBLB, UNSPEC_USUBLT)
2896 (UNSPEC_USUBWB, UNSPEC_USUBWT): New unspecs.
2897 (UNSPEC_SMULLB, UNSPEC_SMULLT, UNSPEC_UMULLB, UNSPEC_UMULLT)
2898 (UNSPEC_SMULHS, UNSPEC_SMULHRS, UNSPEC_UMULHS, UNSPEC_UMULHRS)
2899 (UNSPEC_RSHRNB, UNSPEC_RSHRNT, UNSPEC_SHRNB, UNSPEC_SHRNT): Move
2900 further down file.
2901 (VNARROW, Ventype): New mode attributes.
2902 (Vewtype): Handle VNx2DI. Fix typo in comment.
2903 (VDOUBLE): New mode attribute.
2904 (sve_lane_con): Handle VNx8HI.
2905 (SVE_INT_UNARY): Include ss_abs and ss_neg for TARGET_SVE2.
2906 (SVE_INT_BINARY): Likewise ss_plus, us_plus, ss_minus and us_minus.
2907 (sve_int_op, sve_int_op_rev): Handle the above codes.
2908 (sve_pred_int_rhs2_operand): Likewise.
2909 (MULLBT, SHRNB, SHRNT): Delete.
2910 (SVE_INT_SHIFT_IMM): New int iterator.
2911 (SVE_WHILE): Add UNSPEC_WHILEGE, UNSPEC_WHILEGT, UNSPEC_WHILEHI
2912 and UNSPEC_WHILEHS for TARGET_SVE2.
2913 (SVE2_U32_UNARY, SVE2_INT_UNARY_NARROWB, SVE2_INT_UNARY_NARROWT)
2914 (SVE2_INT_BINARY, SVE2_INT_BINARY_LANE, SVE2_INT_BINARY_LONG)
2915 (SVE2_INT_BINARY_LONG_LANE, SVE2_INT_BINARY_NARROWB)
2916 (SVE2_INT_BINARY_NARROWT, SVE2_INT_BINARY_PAIR, SVE2_FP_BINARY_PAIR)
2917 (SVE2_INT_BINARY_PAIR_LONG, SVE2_INT_BINARY_WIDE): New int iterators.
2918 (SVE2_INT_SHIFT_IMM_LONG, SVE2_INT_SHIFT_IMM_NARROWB): Likewise.
2919 (SVE2_INT_SHIFT_IMM_NARROWT, SVE2_INT_SHIFT_INSERT, SVE2_INT_CADD)
2920 (SVE2_INT_BITPERM, SVE2_INT_TERNARY, SVE2_INT_TERNARY_LANE): Likewise.
2921 (SVE2_FP_TERNARY_LONG, SVE2_FP_TERNARY_LONG_LANE, SVE2_INT_CMLA)
2922 (SVE2_INT_CDOT, SVE2_INT_ADD_BINARY_LONG, SVE2_INT_QADD_BINARY_LONG)
2923 (SVE2_INT_SUB_BINARY_LONG, SVE2_INT_QSUB_BINARY_LONG): Likewise.
2924 (SVE2_INT_ADD_BINARY_LONG_LANE, SVE2_INT_QADD_BINARY_LONG_LANE)
2925 (SVE2_INT_SUB_BINARY_LONG_LANE, SVE2_INT_QSUB_BINARY_LONG_LANE)
2926 (SVE2_COND_INT_UNARY_FP, SVE2_COND_FP_UNARY_LONG): Likewise.
2927 (SVE2_COND_FP_UNARY_NARROWB, SVE2_COND_INT_BINARY): Likewise.
2928 (SVE2_COND_INT_BINARY_NOREV, SVE2_COND_INT_BINARY_REV): Likewise.
2929 (SVE2_COND_INT_SHIFT, SVE2_MATCH, SVE2_PMULL): Likewise.
2930 (optab): Handle the new unspecs.
2931 (su, r): Remove entries for UNSPEC_SHRNB, UNSPEC_SHRNT, UNSPEC_RSHRNB
2932 and UNSPEC_RSHRNT.
2933 (lr): Handle the new unspecs.
2934 (bt): Delete.
2935 (cmp_op, while_optab_cmp, sve_int_op): Handle the new unspecs.
2936 (sve_int_op_rev, sve_int_add_op, sve_int_qadd_op, sve_int_sub_op)
2937 (sve_int_qsub_op): New int attributes.
2938 (sve_fp_op, rot): Handle the new unspecs.
2939 * config/aarch64/aarch64-sve-builtins.h
2940 (function_resolver::require_matching_pointer_type): Declare.
2941 (function_resolver::resolve_unary): Add an optional boolean argument.
2942 (function_resolver::finish_opt_n_resolution): Add an optional
2943 type_suffix_index argument.
2944 (gimple_folder::redirect_call): Declare.
2945 (gimple_expander::prepare_gather_address_operands): Add an optional
2946 bool parameter.
2947 * config/aarch64/aarch64-sve-builtins.cc: Include
2948 aarch64-sve-builtins-sve2.h.
2949 (TYPES_b_unsigned, TYPES_b_integer, TYPES_bh_integer): New macros.
2950 (TYPES_bs_unsigned, TYPES_hs_signed, TYPES_hs_integer): Likewise.
2951 (TYPES_hd_unsigned, TYPES_hsd_signed): Likewise.
2952 (TYPES_hsd_integer): Use TYPES_hsd_signed.
2953 (TYPES_s_float_hsd_integer, TYPES_s_float_sd_integer): New macros.
2954 (TYPES_s_unsigned): Likewise.
2955 (TYPES_s_integer): Use TYPES_s_unsigned.
2956 (TYPES_sd_signed, TYPES_sd_unsigned): New macros.
2957 (TYPES_sd_integer): Use them.
2958 (TYPES_d_unsigned): New macro.
2959 (TYPES_d_integer): Use it.
2960 (TYPES_d_data, TYPES_cvt_long, TYPES_cvt_narrow_s): New macros.
2961 (TYPES_cvt_narrow): Likewise.
2962 (DEF_SVE_TYPES_ARRAY): Include the new types macros above.
2963 (preds_mx): New variable.
2964 (function_builder::add_overloaded_function): Allow the new feature
2965 set to be more restrictive than the original one.
2966 (function_resolver::infer_pointer_type): Remove qualifiers from
2967 the pointer type before printing it.
2968 (function_resolver::require_matching_pointer_type): New function.
2969 (function_resolver::resolve_sv_displacement): Handle functions
2970 that don't support 32-bit vector indices or svint32_t vector offsets.
2971 (function_resolver::finish_opt_n_resolution): Take the inferred type
2972 as a separate argument.
2973 (function_resolver::resolve_unary): Optionally treat all forms in
2974 the same way as normal merging functions.
2975 (gimple_folder::redirect_call): New function.
2976 (function_expander::prepare_gather_address_operands): Add an argument
2977 that says whether scaled forms are available. If they aren't,
2978 handle scaling of vector indices and don't add the extension and
2979 scaling operands.
2980 (function_expander::map_to_unspecs): If aarch64_sve isn't available,
2981 fall back to using cond_* instead.
2982 * config/aarch64/aarch64-sve-builtins-functions.h (rtx_code_function):
2983 Split out the member variables into...
2984 (rtx_code_function_base): ...this new base class.
2985 (rtx_code_function_rotated): Inherit rtx_code_function_base.
2986 (unspec_based_function): Split out the member variables into...
2987 (unspec_based_function_base): ...this new base class.
2988 (unspec_based_function_rotated): Inherit unspec_based_function_base.
2989 (unspec_based_function_exact_insn): New class.
2990 (unspec_based_add_function, unspec_based_add_lane_function)
2991 (unspec_based_lane_function, unspec_based_pred_function)
2992 (unspec_based_qadd_function, unspec_based_qadd_lane_function)
2993 (unspec_based_qsub_function, unspec_based_qsub_lane_function)
2994 (unspec_based_sub_function, unspec_based_sub_lane_function): New
2995 typedefs.
2996 (unspec_based_fused_function): New class.
2997 (unspec_based_mla_function, unspec_based_mls_function): New typedefs.
2998 (unspec_based_fused_lane_function): New class.
2999 (unspec_based_mla_lane_function, unspec_based_mls_lane_function): New
3000 typedefs.
3001 (CODE_FOR_MODE1): New macro.
3002 (fixed_insn_function): New class.
3003 (while_comparison): Likewise.
3004 * config/aarch64/aarch64-sve-builtins-shapes.h (binary_long_lane)
3005 (binary_long_opt_n, binary_narrowb_opt_n, binary_narrowt_opt_n)
3006 (binary_to_uint, binary_wide, binary_wide_opt_n, compare, compare_ptr)
3007 (load_ext_gather_index_restricted, load_ext_gather_offset_restricted)
3008 (load_gather_sv_restricted, shift_left_imm_long): Declare.
3009 (shift_left_imm_to_uint, shift_right_imm_narrowb): Likewise.
3010 (shift_right_imm_narrowt, shift_right_imm_narrowb_to_uint): Likewise.
3011 (shift_right_imm_narrowt_to_uint, store_scatter_index_restricted)
3012 (store_scatter_offset_restricted, tbl_tuple, ternary_long_lane)
3013 (ternary_long_opt_n, ternary_qq_lane_rotate, ternary_qq_rotate)
3014 (ternary_shift_left_imm, ternary_shift_right_imm, ternary_uint)
3015 (unary_convert_narrowt, unary_long, unary_narrowb, unary_narrowt)
3016 (unary_narrowb_to_uint, unary_narrowt_to_uint, unary_to_int): Likewise.
3017 * config/aarch64/aarch64-sve-builtins-shapes.cc (apply_predication):
3018 Also add an initial argument for unary_convert_narrowt, regardless
3019 of the predication type.
3020 (build_32_64): Allow loads and stores to specify MODE_none.
3021 (build_sv_index64, build_sv_uint_offset): New functions.
3022 (long_type_suffix): New function.
3023 (binary_imm_narrowb_base, binary_imm_narrowt_base): New classes.
3024 (binary_imm_long_base, load_gather_sv_base): Likewise.
3025 (shift_right_imm_narrow_wrapper, ternary_shift_imm_base): Likewise.
3026 (ternary_resize2_opt_n_base, ternary_resize2_lane_base): Likewise.
3027 (unary_narrowb_base, unary_narrowt_base): Likewise.
3028 (binary_long_lane_def, binary_long_lane): New shape.
3029 (binary_long_opt_n_def, binary_long_opt_n): Likewise.
3030 (binary_narrowb_opt_n_def, binary_narrowb_opt_n): Likewise.
3031 (binary_narrowt_opt_n_def, binary_narrowt_opt_n): Likewise.
3032 (binary_to_uint_def, binary_to_uint): Likewise.
3033 (binary_wide_def, binary_wide): Likewise.
3034 (binary_wide_opt_n_def, binary_wide_opt_n): Likewise.
3035 (compare_def, compare): Likewise.
3036 (compare_ptr_def, compare_ptr): Likewise.
3037 (load_ext_gather_index_restricted_def,
3038 load_ext_gather_index_restricted): Likewise.
3039 (load_ext_gather_offset_restricted_def,
3040 load_ext_gather_offset_restricted): Likewise.
3041 (load_gather_sv_def): Inherit from load_gather_sv_base.
3042 (load_gather_sv_restricted_def, load_gather_sv_restricted): New shape.
3043 (shift_left_imm_def, shift_left_imm): Likewise.
3044 (shift_left_imm_long_def, shift_left_imm_long): Likewise.
3045 (shift_left_imm_to_uint_def, shift_left_imm_to_uint): Likewise.
3046 (store_scatter_index_restricted_def,
3047 store_scatter_index_restricted): Likewise.
3048 (store_scatter_offset_restricted_def,
3049 store_scatter_offset_restricted): Likewise.
3050 (tbl_tuple_def, tbl_tuple): Likewise.
3051 (ternary_long_lane_def, ternary_long_lane): Likewise.
3052 (ternary_long_opt_n_def, ternary_long_opt_n): Likewise.
3053 (ternary_qq_lane_def): Inherit from ternary_resize2_lane_base.
3054 (ternary_qq_lane_rotate_def, ternary_qq_lane_rotate): New shape
3055 (ternary_qq_opt_n_def): Inherit from ternary_resize2_opt_n_base.
3056 (ternary_qq_rotate_def, ternary_qq_rotate): New shape.
3057 (ternary_shift_left_imm_def, ternary_shift_left_imm): Likewise.
3058 (ternary_shift_right_imm_def, ternary_shift_right_imm): Likewise.
3059 (ternary_uint_def, ternary_uint): Likewise.
3060 (unary_convert): Fix typo in comment.
3061 (unary_convert_narrowt_def, unary_convert_narrowt): New shape.
3062 (unary_long_def, unary_long): Likewise.
3063 (unary_narrowb_def, unary_narrowb): Likewise.
3064 (unary_narrowt_def, unary_narrowt): Likewise.
3065 (unary_narrowb_to_uint_def, unary_narrowb_to_uint): Likewise.
3066 (unary_narrowt_to_uint_def, unary_narrowt_to_uint): Likewise.
3067 (unary_to_int_def, unary_to_int): Likewise.
3068 * config/aarch64/aarch64-sve-builtins-base.cc (unspec_cmla)
3069 (unspec_fcmla, unspec_cond_fcmla, expand_mla_mls_lane): New functions.
3070 (svasrd_impl): Delete.
3071 (svcadd_impl::expand): Handle integer operations too.
3072 (svcmla_impl::expand, svcmla_lane::expand): Likewise, using the
3073 new functions to derive the unspec numbers.
3074 (svmla_svmls_lane_impl): Replace with...
3075 (svmla_lane_impl, svmls_lane_impl): ...these new classes. Handle
3076 integer operations too.
3077 (svwhile_impl): Rename to...
3078 (svwhilelx_impl): ...this and inherit from while_comparison.
3079 (svasrd): Use unspec_based_function.
3080 (svmla_lane): Use svmla_lane_impl.
3081 (svmls_lane): Use svmls_lane_impl.
3082 (svrecpe, svrsqrte): Handle unsigned integer operations too.
3083 (svwhilele, svwhilelt): Use svwhilelx_impl.
3084 * config/aarch64/aarch64-sve-builtins-sve2.h: New file.
3085 * config/aarch64/aarch64-sve-builtins-sve2.cc: Likewise.
3086 * config/aarch64/aarch64-sve-builtins-sve2.def: Likewise.
3087 * config/aarch64/aarch64-sve-builtins.def: Include
3088 aarch64-sve-builtins-sve2.def.
3089
3090 2020-01-09 Richard Sandiford <richard.sandiford@arm.com>
3091
3092 * config/aarch64/aarch64-protos.h (aarch64_sve_arith_immediate_p)
3093 (aarch64_sve_sqadd_sqsub_immediate_p): Add a machine_mode argument.
3094 * config/aarch64/aarch64.c (aarch64_sve_arith_immediate_p)
3095 (aarch64_sve_sqadd_sqsub_immediate_p): Likewise. Handle scalar
3096 immediates as well as vector ones.
3097 * config/aarch64/predicates.md (aarch64_sve_arith_immediate)
3098 (aarch64_sve_sub_arith_immediate, aarch64_sve_qadd_immediate)
3099 (aarch64_sve_qsub_immediate): Update calls accordingly.
3100
3101 2020-01-09 Richard Sandiford <richard.sandiford@arm.com>
3102
3103 * config/aarch64/aarch64-sve2.md: Add banner comments.
3104 (<su>mulh<r>s<mode>3): Move further up file.
3105 (<su>mull<bt><Vwide>, <r>shrnb<mode>, <r>shrnt<mode>)
3106 (*aarch64_sve2_sra<mode>): Move further down file.
3107 * config/aarch64/t-aarch64 (s-check-sve-md): Check aarch64-sve2.md too.
3108
3109 2020-01-09 Richard Sandiford <richard.sandiford@arm.com>
3110
3111 * config/aarch64/iterators.md (SVE_WHILE): Add UNSPEC_WHILERW
3112 and UNSPEC_WHILEWR.
3113 (while_optab_cmp): Handle them.
3114 * config/aarch64/aarch64-sve.md
3115 (*while_<while_optab_cmp><GPI:mode><PRED_ALL:mode>_ptest): Make public
3116 and add a "@" marker.
3117 * config/aarch64/aarch64-sve2.md (check_<raw_war>_ptrs<mode>): Use it
3118 instead of gen_aarch64_sve2_while_ptest.
3119 (@aarch64_sve2_while<cmp_op><GPI:mode><PRED_ALL:mode>_ptest): Delete.
3120
3121 2020-01-09 Richard Sandiford <richard.sandiford@arm.com>
3122
3123 * config/aarch64/aarch64.md (UNSPEC_WHILE_LE): Rename to...
3124 (UNSPEC_WHILELE): ...this.
3125 (UNSPEC_WHILE_LO): Rename to...
3126 (UNSPEC_WHILELO): ...this.
3127 (UNSPEC_WHILE_LS): Rename to...
3128 (UNSPEC_WHILELS): ...this.
3129 (UNSPEC_WHILE_LT): Rename to...
3130 (UNSPEC_WHILELT): ...this.
3131 * config/aarch64/iterators.md (SVE_WHILE): Update accordingly.
3132 (cmp_op, while_optab_cmp): Likewise.
3133 * config/aarch64/aarch64.c (aarch64_sve_move_pred_via_while): Likewise.
3134 * config/aarch64/aarch64-sve-builtins-base.cc (svwhilele): Likewise.
3135 (svwhilelt): Likewise.
3136
3137 2020-01-09 Richard Sandiford <richard.sandiford@arm.com>
3138
3139 * config/aarch64/aarch64-sve-builtins-shapes.h (unary_count): Delete.
3140 (unary_to_uint): Define.
3141 * config/aarch64/aarch64-sve-builtins-shapes.cc (unary_count_def)
3142 (unary_count): Rename to...
3143 (unary_to_uint_def, unary_to_uint): ...this.
3144 * config/aarch64/aarch64-sve-builtins-base.def: Update accordingly.
3145
3146 2020-01-09 Richard Sandiford <richard.sandiford@arm.com>
3147
3148 * config/aarch64/aarch64-sve-builtins-functions.h
3149 (code_for_mode_function): New class.
3150 (CODE_FOR_MODE0, QUIET_CODE_FOR_MODE0): New macros.
3151 * config/aarch64/aarch64-sve-builtins-base.cc (svcompact_impl)
3152 (svext_impl, svmul_lane_impl, svsplice_impl, svtmad_impl): Delete.
3153 (svcompact, svext, svsplice): Use QUIET_CODE_FOR_MODE0.
3154 (svmul_lane, svtmad): Use CODE_FOR_MODE0.
3155
3156 2020-01-09 Richard Sandiford <richard.sandiford@arm.com>
3157
3158 * config/aarch64/iterators.md (addsub): New code attribute.
3159 * config/aarch64/aarch64-simd.md (aarch64_<su_optab><optab><mode>):
3160 Re-express as...
3161 (aarch64_<su_optab>q<addsub><mode>): ...this, making the same change
3162 in the asm string and attributes. Fix indentation.
3163 * config/aarch64/aarch64-sve.md (@aarch64_<su_optab><optab><mode>):
3164 Re-express as...
3165 (@aarch64_sve_<optab><mode>): ...this.
3166 * config/aarch64/aarch64-sve-builtins.h
3167 (function_expander::expand_signed_unpred_op): Delete.
3168 * config/aarch64/aarch64-sve-builtins.cc
3169 (function_expander::expand_signed_unpred_op): Likewise.
3170 (function_expander::map_to_rtx_codes): If the optab isn't defined,
3171 try using code_for_aarch64_sve instead.
3172 * config/aarch64/aarch64-sve-builtins-base.cc (svqadd_impl): Delete.
3173 (svqsub_impl): Likewise.
3174 (svqadd, svqsub): Use rtx_code_function instead.
3175
3176 2020-01-09 Richard Sandiford <richard.sandiford@arm.com>
3177
3178 * config/aarch64/iterators.md (SRHSUB, URHSUB): Delete.
3179 (HADDSUB, sur, addsub): Remove them.
3180
3181 2020-01-09 Richard Sandiford <richard.sandiford@arm.com>
3182
3183 * tree-nrv.c (pass_return_slot::execute): Handle all internal
3184 functions the same way, rather than singling out those that
3185 aren't mapped directly to optabs.
3186
3187 2020-01-09 Richard Sandiford <richard.sandiford@arm.com>
3188
3189 * target.def (compatible_vector_types_p): New target hook.
3190 * hooks.h (hook_bool_const_tree_const_tree_true): Declare.
3191 * hooks.c (hook_bool_const_tree_const_tree_true): New function.
3192 * doc/tm.texi.in (TARGET_COMPATIBLE_VECTOR_TYPES_P): New hook.
3193 * doc/tm.texi: Regenerate.
3194 * gimple-expr.c: Include target.h.
3195 (useless_type_conversion_p): Use targetm.compatible_vector_types_p.
3196 * config/aarch64/aarch64.c (aarch64_compatible_vector_types_p): New
3197 function.
3198 (TARGET_COMPATIBLE_VECTOR_TYPES_P): Define.
3199 * config/aarch64/aarch64-sve-builtins.cc (gimple_folder::convert_pred):
3200 Use the original predicate if it already has a suitable type.
3201
3202 2020-01-09 Martin Jambor <mjambor@suse.cz>
3203
3204 * cgraph.h (cgraph_edge): Make remove, set_call_stmt, make_direct,
3205 resolve_speculation and redirect_call_stmt_to_callee static. Change
3206 return type of set_call_stmt to cgraph_edge *.
3207 * auto-profile.c (afdo_indirect_call): Adjust call to
3208 redirect_call_stmt_to_callee.
3209 * cgraph.c (cgraph_edge::set_call_stmt): Make return cgraph-edge *,
3210 make the this pointer explicit, adjust self-recursive calls and the
3211 call top make_direct. Return the resulting edge.
3212 (cgraph_edge::remove): Make this pointer explicit.
3213 (cgraph_edge::resolve_speculation): Likewise, adjust call to remove.
3214 (cgraph_edge::make_direct): Likewise, adjust call to
3215 resolve_speculation.
3216 (cgraph_edge::redirect_call_stmt_to_callee): Likewise, also adjust
3217 call to set_call_stmt.
3218 (cgraph_update_edges_for_call_stmt_node): Update call to
3219 set_call_stmt and remove.
3220 * cgraphclones.c (cgraph_node::set_call_stmt_including_clones):
3221 Renamed edge to master_edge. Adjusted calls to set_call_stmt.
3222 (cgraph_node::create_edge_including_clones): Moved "first" definition
3223 of edge to the block where it was used. Adjusted calls to
3224 set_call_stmt.
3225 (cgraph_node::remove_symbol_and_inline_clones): Adjust call to
3226 cgraph_edge::remove.
3227 * cgraphunit.c (walk_polymorphic_call_targets): Adjusted calls to
3228 make_direct and redirect_call_stmt_to_callee.
3229 * ipa-fnsummary.c (redirect_to_unreachable): Adjust calls to
3230 resolve_speculation and make_direct.
3231 * ipa-inline-transform.c (inline_transform): Adjust call to
3232 redirect_call_stmt_to_callee.
3233 (check_speculations_1):: Adjust call to resolve_speculation.
3234 * ipa-inline.c (resolve_noninline_speculation): Adjust call to
3235 resolve-speculation.
3236 (inline_small_functions): Adjust call to resolve_speculation.
3237 (ipa_inline): Likewise.
3238 * ipa-prop.c (ipa_make_edge_direct_to_target): Adjust call to
3239 make_direct.
3240 * ipa-visibility.c (function_and_variable_visibility): Make iteration
3241 safe with regards to edge removal, adjust calls to
3242 redirect_call_stmt_to_callee.
3243 * ipa.c (walk_polymorphic_call_targets): Adjust calls to make_direct
3244 and redirect_call_stmt_to_callee.
3245 * multiple_target.c (create_dispatcher_calls): Adjust call to
3246 redirect_call_stmt_to_callee
3247 (redirect_to_specific_clone): Likewise.
3248 * tree-cfgcleanup.c (delete_unreachable_blocks_update_callgraph):
3249 Adjust calls to cgraph_edge::remove.
3250 * tree-inline.c (copy_bb): Adjust call to set_call_stmt.
3251 (redirect_all_calls): Adjust call to redirect_call_stmt_to_callee.
3252 (expand_call_inline): Adjust call to cgraph_edge::remove.
3253
3254 2020-01-09 Martin Liska <mliska@suse.cz>
3255
3256 * params.opt: Set Optimization for
3257 param_max_speculative_devirt_maydefs.
3258
3259 2020-01-09 Martin Sebor <msebor@redhat.com>
3260
3261 PR middle-end/93200
3262 PR fortran/92956
3263 * builtins.c (compute_objsize): Avoid handling MEM_REFs of vector type.
3264
3265 2020-01-09 Martin Liska <mliska@suse.cz>
3266
3267 * auto-profile.c (auto_profile): Use opt_for_fn
3268 for a parameter.
3269 * ipa-cp.c (ipcp_lattice::add_value): Likewise.
3270 (propagate_vals_across_arith_jfunc): Likewise.
3271 (hint_time_bonus): Likewise.
3272 (incorporate_penalties): Likewise.
3273 (good_cloning_opportunity_p): Likewise.
3274 (perform_estimation_of_a_value): Likewise.
3275 (estimate_local_effects): Likewise.
3276 (ipcp_propagate_stage): Likewise.
3277 * ipa-fnsummary.c (decompose_param_expr): Likewise.
3278 (set_switch_stmt_execution_predicate): Likewise.
3279 (analyze_function_body): Likewise.
3280 * ipa-inline-analysis.c (offline_size): Likewise.
3281 * ipa-inline.c (early_inliner): Likewise.
3282 * ipa-prop.c (ipa_analyze_node): Likewise.
3283 (ipcp_transform_function): Likewise.
3284 * ipa-sra.c (process_scan_results): Likewise.
3285 (ipa_sra_summarize_function): Likewise.
3286 * params.opt: Rename ipcp-unit-growth to
3287 ipa-cp-unit-growth. Add Optimization for various
3288 IPA-related parameters.
3289
3290 2020-01-09 Richard Biener <rguenther@suse.de>
3291
3292 PR middle-end/93054
3293 * gimplify.c (gimplify_expr): Deal with NOP definitions.
3294
3295 2020-01-09 Richard Biener <rguenther@suse.de>
3296
3297 PR tree-optimization/93040
3298 * gimple-ssa-store-merging.c (find_bswap_or_nop): Raise search limit.
3299
3300 2020-01-09 Georg-Johann Lay <avr@gjlay.de>
3301
3302 * common/config/avr/avr-common.c (avr_option_optimization_table)
3303 [OPT_LEVELS_1_PLUS]: Set -fsplit-wide-types-early.
3304
3305 2020-01-09 Martin Liska <mliska@suse.cz>
3306
3307 * cgraphclones.c (symbol_table::materialize_all_clones):
3308 Use cgraph_node::dump_name.
3309
3310 2020-01-09 Jakub Jelinek <jakub@redhat.com>
3311
3312 PR inline-asm/93202
3313 * config/riscv/riscv.c (riscv_print_operand_reloc): Use
3314 output_operand_lossage instead of gcc_unreachable.
3315 * doc/md.texi (riscv f constraint): Fix typo.
3316
3317 PR target/93141
3318 * config/i386/i386.md (subv<mode>4): Use SWIDWI iterator instead of
3319 SWI. Use <general_hilo_operand> instead of <general_operand>. Use
3320 CONST_SCALAR_INT_P instead of CONST_INT_P.
3321 (*subv<mode>4_1): Rename to ...
3322 (subv<mode>4_1): ... this.
3323 (*subv<dwi>4_doubleword, *addv<dwi>4_doubleword_1): New
3324 define_insn_and_split patterns.
3325 (*subv<mode>4_overflow_1, *addv<mode>4_overflow_2): New define_insn
3326 patterns.
3327
3328 2020-01-08 David Malcolm <dmalcolm@redhat.com>
3329
3330 * vec.c (class selftest::count_dtor): New class.
3331 (selftest::test_auto_delete_vec): New test.
3332 (selftest::vec_c_tests): Call it.
3333 * vec.h (class auto_delete_vec): New class template.
3334 (auto_delete_vec<T>::~auto_delete_vec): New dtor.
3335
3336 2020-01-08 David Malcolm <dmalcolm@redhat.com>
3337
3338 * sbitmap.h (auto_sbitmap): Add operator const_sbitmap.
3339
3340 2020-01-08 Jim Wilson <jimw@sifive.com>
3341
3342 * config/riscv/riscv.c (riscv_legitimize_tls_address): Ifdef out
3343 use of TLS_MODEL_LOCAL_EXEC when not pic.
3344
3345 2020-01-08 David Malcolm <dmalcolm@redhat.com>
3346
3347 * hash-map-tests.c (selftest::test_map_of_strings_to_int): Fix
3348 memory leak.
3349
3350 2020-01-08 Jakub Jelinek <jakub@redhat.com>
3351
3352 PR target/93187
3353 * config/i386/i386.md (*stack_protect_set_2_<mode> peephole2,
3354 *stack_protect_set_3 peephole2): Also check that the second
3355 insns source is general_operand.
3356
3357 PR target/93174
3358 * config/i386/i386.md (addcarry<mode>_0): Use nonimmediate_operand
3359 predicate for output operand instead of register_operand.
3360 (addcarry<mode>, addcarry<mode>_1): Likewise. Add alternative with
3361 memory destination and non-memory operands[2].
3362
3363 2020-01-08 Martin Liska <mliska@suse.cz>
3364
3365 * cgraph.c (cgraph_node::dump): Use ::dump_name or
3366 ::dump_asm_name instead of (::name or ::asm_name).
3367 * cgraphclones.c (symbol_table::materialize_all_clones): Likewise.
3368 * cgraphunit.c (walk_polymorphic_call_targets): Likewise.
3369 (analyze_functions): Likewise.
3370 (expand_all_functions): Likewise.
3371 * ipa-cp.c (ipcp_cloning_candidate_p): Likewise.
3372 (propagate_bits_across_jump_function): Likewise.
3373 (dump_profile_updates): Likewise.
3374 (ipcp_store_bits_results): Likewise.
3375 (ipcp_store_vr_results): Likewise.
3376 * ipa-devirt.c (dump_targets): Likewise.
3377 * ipa-fnsummary.c (analyze_function_body): Likewise.
3378 * ipa-hsa.c (check_warn_node_versionable): Likewise.
3379 (process_hsa_functions): Likewise.
3380 * ipa-icf.c (sem_item_optimizer::merge_classes): Likewise.
3381 (set_alias_uids): Likewise.
3382 * ipa-inline-transform.c (save_inline_function_body): Likewise.
3383 * ipa-inline.c (recursive_inlining): Likewise.
3384 (inline_to_all_callers_1): Likewise.
3385 (ipa_inline): Likewise.
3386 * ipa-profile.c (ipa_propagate_frequency_1): Likewise.
3387 (ipa_propagate_frequency): Likewise.
3388 * ipa-prop.c (ipa_make_edge_direct_to_target): Likewise.
3389 (remove_described_reference): Likewise.
3390 * ipa-pure-const.c (worse_state): Likewise.
3391 (check_retval_uses): Likewise.
3392 (analyze_function): Likewise.
3393 (propagate_pure_const): Likewise.
3394 (propagate_nothrow): Likewise.
3395 (dump_malloc_lattice): Likewise.
3396 (propagate_malloc): Likewise.
3397 (pass_local_pure_const::execute): Likewise.
3398 * ipa-visibility.c (optimize_weakref): Likewise.
3399 (function_and_variable_visibility): Likewise.
3400 * ipa.c (symbol_table::remove_unreachable_nodes): Likewise.
3401 (ipa_discover_variable_flags): Likewise.
3402 * lto-streamer-out.c (output_function): Likewise.
3403 (output_constructor): Likewise.
3404 * tree-inline.c (copy_bb): Likewise.
3405 * tree-ssa-structalias.c (ipa_pta_execute): Likewise.
3406 * varpool.c (symbol_table::remove_unreferenced_decls): Likewise.
3407
3408 2020-01-08 Richard Biener <rguenther@suse.de>
3409
3410 PR middle-end/93199
3411 * tree-eh.c (sink_clobbers): Update virtual operands for
3412 the first and last stmt only. Add a dry-run capability.
3413 (pass_lower_eh_dispatch::execute): Perform clobber sinking
3414 after CFG manipulations and in RPO order to catch all
3415 secondary opportunities reliably.
3416
3417 2020-01-08 Georg-Johann Lay <avr@gjlay.de>
3418
3419 PR target/93182
3420 * doc/invoke.texi (AVR Options) <-nodevicespecs>: Document.
3421
3422 2019-01-08 Richard Biener <rguenther@suse.de>
3423
3424 PR middle-end/93199
3425 * gimple-fold.c (rewrite_to_defined_overflow): Mark stmt modified.
3426 * tree-ssa-loop-im.c (move_computations_worker): Properly adjust
3427 virtual operand, also updating SSA use.
3428 * gimple-loop-interchange.cc (loop_cand::undo_simple_reduction):
3429 Update stmt after resetting virtual operand.
3430 (tree_loop_interchange::move_code_to_inner_loop): Likewise.
3431 * gimple-iterator.c (gsi_remove): When not removing the stmt
3432 permanently do not delink immediate uses or mark the stmt modified.
3433
3434 2020-01-08 Martin Liska <mliska@suse.cz>
3435
3436 * ipa-fnsummary.c (dump_ipa_call_summary): Use symtab_node::dump_name.
3437 (ipa_call_context::estimate_size_and_time): Likewise.
3438 (inline_analyze_function): Likewise.
3439
3440 2020-01-08 Martin Liska <mliska@suse.cz>
3441
3442 * cgraph.c (cgraph_node::dump): Use systematically
3443 dump_asm_name.
3444
3445 2020-01-08 Georg-Johann Lay <avr@gjlay.de>
3446
3447 Add -nodevicespecs option for avr.
3448
3449 PR target/93182
3450 * config/avr/avr.opt (-nodevicespecs): New driver option.
3451 * config/avr/driver-avr.c (avr_devicespecs_file): Only issue
3452 "-specs=device-specs/..." if that option is not set.
3453 * doc/invoke.texi (AVR Options) <-nodevicespecs>: Document.
3454
3455 2020-01-08 Georg-Johann Lay <avr@gjlay.de>
3456
3457 Implement 64-bit double functions for avr.
3458
3459 PR target/92055
3460 * config.gcc (tm_defines) [target=avr]: Support --with-libf7,
3461 --with-double-comparison.
3462 * doc/install.texi: Document them.
3463 * config/avr/avr-c.c (avr_cpu_cpp_builtins)
3464 <WITH_LIBF7_LIBGCC, WITH_LIBF7_MATH, WITH_LIBF7_MATH_SYMBOLS>
3465 <WITH_DOUBLE_COMPARISON>: New built-in defines.
3466 * doc/invoke.texi (AVR Built-in Macros): Document them.
3467 * config/avr/avr-protos.h (avr_float_lib_compare_returns_bool): New.
3468 * config/avr/avr.c (avr_float_lib_compare_returns_bool): New function.
3469 * config/avr/avr.h (FLOAT_LIB_COMPARE_RETURNS_BOOL): New macro.
3470
3471 2020-01-08 Richard Earnshaw <rearnsha@arm.com>
3472
3473 PR target/93188
3474 * config/arm/t-multilib (MULTILIB_MATCHES): Add rules to match
3475 armv7-a{+mp,+sec,+mp+sec} to appropriate armv7 multilib variants
3476 when only building rm-profile multilibs.
3477
3478 2020-01-08 Feng Xue <fxue@os.amperecomputing.com>
3479
3480 PR ipa/93084
3481 * ipa-cp.c (self_recursively_generated_p): Find matched aggregate
3482 lattice for a value to check.
3483 (propagate_vals_across_arith_jfunc): Add an assertion to ensure
3484 finite propagation in self-recursive scc.
3485
3486 2020-01-08 Luo Xiong Hu <luoxhu@linux.ibm.com>
3487
3488 * ipa-inline.c (caller_growth_limits): Restore the AND.
3489
3490 2020-01-07 Andrew Stubbs <ams@codesourcery.com>
3491
3492 * config/gcn/gcn-valu.md (VEC_1REG_INT_ALT): Delete iterator.
3493 (VEC_ALLREG_ALT): New iterator.
3494 (VEC_ALLREG_INT_MODE): New iterator.
3495 (VCMP_MODE): New iterator.
3496 (VCMP_MODE_INT): New iterator.
3497 (vec_cmpu<mode>di): Use VCMP_MODE_INT.
3498 (vec_cmp<u>v64qidi): New define_expand.
3499 (vec_cmp<mode>di_exec): Use VCMP_MODE.
3500 (vec_cmpu<mode>di_exec): New define_expand.
3501 (vec_cmp<u>v64qidi_exec): New define_expand.
3502 (vec_cmp<mode>di_dup): Use VCMP_MODE.
3503 (vec_cmp<mode>di_dup_exec): Use VCMP_MODE.
3504 (vcond<VEC_ALL1REG_MODE:mode><VEC_1REG_ALT:mode>): Rename ...
3505 (vcond<VEC_ALLREG_MODE:mode><VEC_ALLREG_ALT:mode>): ... to this.
3506 (vcond<VEC_ALL1REG_MODE:mode><VEC_1REG_ALT:mode>_exec): Rename ...
3507 (vcond<VEC_ALLREG_MODE:mode><VEC_ALLREG_ALT:mode>_exec): ... to this.
3508 (vcondu<VEC_ALL1REG_MODE:mode><VEC_1REG_INT_ALT:mode>): Rename ...
3509 (vcondu<VEC_ALLREG_MODE:mode><VEC_ALLREG_INT_MODE:mode>): ... to this.
3510 (vcondu<VEC_ALL1REG_MODE:mode><VEC_1REG_INT_ALT:mode>_exec): Rename ...
3511 (vcondu<VEC_ALLREG_MODE:mode><VEC_ALLREG_INT_MODE:mode>_exec): ... to
3512 this.
3513 * config/gcn/gcn.c (print_operand): Fix 8 and 16 bit suffixes.
3514 * config/gcn/gcn.md (expander): Add sign_extend and zero_extend.
3515
3516 2020-01-07 Andrew Stubbs <ams@codesourcery.com>
3517
3518 * config/gcn/constraints.md (DA): Update description and match.
3519 (DB): Likewise.
3520 (Db): New constraint.
3521 * config/gcn/gcn-protos.h (gcn_inline_constant64_p): Add second
3522 parameter.
3523 * config/gcn/gcn.c (gcn_inline_constant64_p): Add 'mixed' parameter.
3524 Implement 'Db' mixed immediate type.
3525 * config/gcn/gcn-valu.md (addcv64si3<exec_vcc>): Rework constraints.
3526 (addcv64si3_dup<exec_vcc>): Delete.
3527 (subcv64si3<exec_vcc>): Rework constraints.
3528 (addv64di3): Rework constraints.
3529 (addv64di3_exec): Rework constraints.
3530 (subv64di3): Rework constraints.
3531 (addv64di3_dup): Delete.
3532 (addv64di3_dup_exec): Delete.
3533 (addv64di3_zext): Rework constraints.
3534 (addv64di3_zext_exec): Rework constraints.
3535 (addv64di3_zext_dup): Rework constraints.
3536 (addv64di3_zext_dup_exec): Rework constraints.
3537 (addv64di3_zext_dup2): Rework constraints.
3538 (addv64di3_zext_dup2_exec): Rework constraints.
3539 (addv64di3_sext_dup2): Rework constraints.
3540 (addv64di3_sext_dup2_exec): Rework constraints.
3541
3542 2020-01-07 Andre Vieira <andre.simoesdiasvieira@arm.com>
3543
3544 * doc/sourcebuild.texi (arm_little_endian, arm_nothumb): Documented
3545 existing target checks.
3546
3547 2020-01-07 Richard Biener <rguenther@suse.de>
3548
3549 * doc/install.texi: Bump minimal supported MPC version.
3550
3551 2020-01-07 Richard Sandiford <richard.sandiford@arm.com>
3552
3553 * langhooks-def.h (lhd_simulate_enum_decl): Declare.
3554 (LANG_HOOKS_SIMULATE_ENUM_DECL): Use it.
3555 * langhooks.c: Include stor-layout.h.
3556 (lhd_simulate_enum_decl): New function.
3557 * config/aarch64/aarch64-sve-builtins.cc (init_builtins): Call
3558 handle_arm_sve_h for the LTO frontend.
3559 (register_vector_type): Cope with null returns from pushdecl.
3560
3561 2020-01-07 Richard Sandiford <richard.sandiford@arm.com>
3562
3563 * config/aarch64/aarch64-protos.h (aarch64_sve::svbool_type_p)
3564 (aarch64_sve::nvectors_if_data_type): Replace with...
3565 (aarch64_sve::builtin_type_p): ...this.
3566 * config/aarch64/aarch64-sve-builtins.cc: Include attribs.h.
3567 (find_vector_type): Delete.
3568 (add_sve_type_attribute): New function.
3569 (lookup_sve_type_attribute): Likewise.
3570 (register_builtin_types): Add an "SVE type" attribute to each type.
3571 (register_tuple_type): Likewise.
3572 (svbool_type_p, nvectors_if_data_type): Delete.
3573 (mangle_builtin_type): Use lookup_sve_type_attribute.
3574 (builtin_type_p): Likewise. Add an overload that returns the
3575 number of constituent vector and predicate registers.
3576 * config/aarch64/aarch64.c (aarch64_sve_argument_p): Delete.
3577 (aarch64_returns_value_in_sve_regs_p): Use aarch64_sve::builtin_type_p
3578 instead of aarch64_sve_argument_p.
3579 (aarch64_takes_arguments_in_sve_regs_p): Likewise.
3580 (aarch64_pass_by_reference): Likewise.
3581 (aarch64_function_value_1): Likewise.
3582 (aarch64_return_in_memory): Likewise.
3583 (aarch64_layout_arg): Likewise.
3584
3585 2020-01-07 Jakub Jelinek <jakub@redhat.com>
3586
3587 PR tree-optimization/93156
3588 * tree-ssa-ccp.c (bit_value_binop): For x * x note that the second
3589 least significant bit is always clear.
3590
3591 PR tree-optimization/93118
3592 * match.pd ((x >> c) << c -> x & (-1<<c)): Add nop_convert?. Add new
3593 simplifier with two intermediate conversions.
3594
3595 2020-01-07 Martin Liska <mliska@suse.cz>
3596
3597 * params.opt: Add Optimization for various parameters.
3598
3599 2020-01-07 Martin Liska <mliska@suse.cz>
3600
3601 PR ipa/83411
3602 * doc/extend.texi: Explain cloning for target_clone
3603 attribute.
3604
3605 2020-01-07 Martin Liska <mliska@suse.cz>
3606
3607 PR tree-optimization/92860
3608 * common.opt: Make in Optimization option
3609 as it is affected by -O0, which is an Optimization
3610 option.
3611 * tree-inline.c (tree_inlinable_function_p):
3612 Use opt_for_fn for warn_inline.
3613 (expand_call_inline): Likewise.
3614
3615 2020-01-07 Martin Liska <mliska@suse.cz>
3616
3617 PR tree-optimization/92860
3618 * common.opt: Make flag_ree as optimization
3619 attribute.
3620
3621 2020-01-07 Martin Liska <mliska@suse.cz>
3622
3623 PR optimization/92860
3624 * params.opt: Mark param_min_crossjump_insns with Optimization
3625 keyword.
3626
3627 2020-01-07 Luo Xiong Hu <luoxhu@linux.ibm.com>
3628
3629 * ipa-inline-analysis.c (estimate_growth): Fix typo.
3630 * ipa-inline.c (caller_growth_limits): Use OR instead of AND.
3631
3632 2020-01-06 Michael Meissner <meissner@linux.ibm.com>
3633
3634 * config/rs6000/rs6000.c (hard_reg_and_mode_to_addr_mask): New
3635 helper function to return the valid addressing formats for a given
3636 hard register and mode.
3637 (rs6000_adjust_vec_address): Call hard_reg_and_mode_to_addr_mask.
3638
3639 * config/rs6000/constraints.md (Q constraint): Update
3640 documentation.
3641 * doc/md.texi (RS/6000 constraints): Update 'Q' cosntraint
3642 documentation.
3643
3644 * config/rs6000/vsx.md (vsx_extract_<mode>_var, VSX_D iterator):
3645 Use 'Q' for doing vector extract from memory.
3646 (vsx_extract_v4sf_var): Use 'Q' for doing vector extract from
3647 memory.
3648 (vsx_extract_<mode>_var, VSX_EXTRACT_I iterator): Use 'Q' for
3649 doing vector extract from memory.
3650 (vsx_extract_<mode>_<VS_scalar>mode_var): Use 'Q' for doing vector
3651 extract from memory.
3652
3653 * config/rs6000/rs6000.c (rs6000_adjust_vec_address): Add support
3654 for the offset being 34-bits when -mcpu=future is used.
3655
3656 2020-01-06 John David Anglin <danglin@gcc.gnu.org>
3657
3658 * config/pa/pa.md: Revert change to use ordered_comparison_operator
3659 instead of cmpib_comparison_operator in cmpib patterns.
3660 * config/pa/predicates.md (cmpib_comparison_operator): Revert removal
3661 of cmpib_comparison_operator. Revise comment.
3662
3663 2020-01-06 Richard Sandiford <richard.sandiford@arm.com>
3664
3665 * tree-vect-slp.c (vect_build_slp_tree_1): Require all shifts
3666 in an IFN_DIV_POW2 node to be equal.
3667
3668 2020-01-06 Richard Sandiford <richard.sandiford@arm.com>
3669
3670 * tree-vect-stmts.c (vect_check_load_store_mask): Rename to...
3671 (vect_check_scalar_mask): ...this.
3672 (vectorizable_store, vectorizable_load): Update call accordingly.
3673 (vectorizable_call): Use vect_check_scalar_mask to check the mask
3674 argument in calls to conditional internal functions.
3675
3676 2020-01-06 Andrew Stubbs <ams@codesourcery.com>
3677
3678 * config/gcn/gcn-valu.md (subv64di3): Use separate alternatives for
3679 '0' matching inputs.
3680 (subv64di3_exec): Likewise.
3681
3682 2020-01-06 Bryan Stenson <bryan@siliconvortex.com>
3683
3684 * config/mips/mips.c (vr4130_align_insns): Fix typo.
3685 * doc/md.texi (movstr): Likewise.
3686
3687 2020-01-06 Andrew Stubbs <ams@codesourcery.com>
3688
3689 * config/gcn/gcn-valu.md (vec_extract<mode><scalar_mode>): Add early
3690 clobber.
3691
3692 2020-01-06 Richard Sandiford <richard.sandiford@arm.com>
3693
3694 * config/aarch64/t-aarch64 ($(srcdir)/config/aarch64/aarch64-tune.md):
3695 Depend on...
3696 (s-aarch64-tune-md): ...this new stamp file. Pipe the new contents
3697 to a temporary file and use move-if-change to update the real
3698 file where necessary.
3699
3700 2020-01-06 Richard Sandiford <richard.sandiford@arm.com>
3701
3702 * config/aarch64/aarch64-sve.md (@aarch64_sel_dup<mode>): Use Upl
3703 rather than Upa for CPY /M.
3704
3705 2020-01-06 Andrew Stubbs <ams@codesourcery.com>
3706
3707 * config/gcn/gcn.c (gcn_inline_constant_p): Allow 64 as an inline
3708 immediate.
3709
3710 2020-01-06 Martin Liska <mliska@suse.cz>
3711
3712 PR tree-optimization/92860
3713 * params.opt: Mark param_max_combine_insns with Optimization
3714 keyword.
3715
3716 2020-01-05 Jakub Jelinek <jakub@redhat.com>
3717
3718 PR target/93141
3719 * config/i386/i386.md (SWIDWI): New mode iterator.
3720 (DWI, dwi): Add TImode variants.
3721 (addv<mode>4): Use SWIDWI iterator instead of SWI. Use
3722 <general_hilo_operand> instead of <general_operand>. Use
3723 CONST_SCALAR_INT_P instead of CONST_INT_P.
3724 (*addv<mode>4_1): Rename to ...
3725 (addv<mode>4_1): ... this.
3726 (QWI): New mode attribute.
3727 (*addv<dwi>4_doubleword, *addv<dwi>4_doubleword_1): New
3728 define_insn_and_split patterns.
3729 (*addv<mode>4_overflow_1, *addv<mode>4_overflow_2): New define_insn
3730 patterns.
3731 (uaddv<mode>4): Use SWIDWI iterator instead of SWI. Use
3732 <general_hilo_operand> instead of <general_operand>.
3733 (*addcarry<mode>_1): New define_insn.
3734 (*add<dwi>3_doubleword_cc_overflow_1): New define_insn_and_split.
3735
3736 2020-01-03 Konstantin Kharlamov <Hi-Angel@yandex.ru>
3737
3738 * gdbinit.in (pr, prl, pt, pct, pgg, pgq, pgs, pge, pmz, pdd, pbs, pbm):
3739 Use "call" instead of "set".
3740
3741 2020-01-03 Martin Jambor <mjambor@suse.cz>
3742
3743 PR ipa/92917
3744 * ipa-cp.c (print_all_lattices): Skip functions without info.
3745
3746 2020-01-03 Jakub Jelinek <jakub@redhat.com>
3747
3748 PR target/93089
3749 * config/i386/i386-options.c (ix86_simd_clone_adjust): If
3750 TARGET_PREFER_AVX128, use prefer-vector-width=256 for 'c' and 'd'
3751 simd clones. If TARGET_PREFER_AVX256, use prefer-vector-width=512
3752 for 'e' simd clones.
3753
3754 PR target/93089
3755 * config/i386/i386.opt (x_prefer_vector_width_type): Remove TargetSave
3756 entry.
3757 (mprefer-vector-width=): Add Save.
3758 * config/i386/i386-options.c (ix86_target_string): Add PVW argument, print
3759 -mprefer-vector-width= if non-zero. Fix up -mfpmath= comment.
3760 (ix86_debug_options, ix86_function_specific_print): Adjust
3761 ix86_target_string callers.
3762 (ix86_valid_target_attribute_inner_p): Handle prefer-vector-width=.
3763 (ix86_valid_target_attribute_tree): Likewise.
3764 * config/i386/i386-options.h (ix86_target_string): Add PVW argument.
3765 * config/i386/i386-expand.c (ix86_expand_builtin): Adjust
3766 ix86_target_string caller.
3767
3768 PR target/93110
3769 * config/i386/i386.md (abs<mode>2): Use expand_simple_binop instead of
3770 emitting ASHIFTRT, XOR and MINUS by hand. Use gen_int_mode with QImode
3771 instead of gen_int_shift_amount + convert_modes.
3772
3773 PR rtl-optimization/93088
3774 * loop-iv.c (find_single_def_src): Punt after looking through
3775 128 reg copies for regs with single definitions. Move definitions
3776 to first uses.
3777
3778 2020-01-02 Dennis Zhang <dennis.zhang@arm.com>
3779
3780 * config/arm/arm-c.c (arm_cpu_builtins): Define
3781 __ARM_FEATURE_MATMUL_INT8, __ARM_FEATURE_BF16_VECTOR_ARITHMETIC,
3782 __ARM_FEATURE_BF16_SCALAR_ARITHMETIC, and
3783 __ARM_BF16_FORMAT_ALTERNATIVE when enabled.
3784 * config/arm/arm-cpus.in (armv8_6, i8mm, bf16): New features.
3785 * config/arm/arm-tables.opt: Regenerated.
3786 * config/arm/arm.c (arm_option_reconfigure_globals): Initialize
3787 arm_arch_i8mm and arm_arch_bf16 when enabled.
3788 * config/arm/arm.h (TARGET_I8MM): New macro.
3789 (TARGET_BF16_FP, TARGET_BF16_SIMD): Likewise.
3790 * config/arm/t-aprofile: Add matching rules for -march=armv8.6-a.
3791 * config/arm/t-arm-elf (all_v8_archs): Add armv8.6-a.
3792 * config/arm/t-multilib: Add matching rules for -march=armv8.6-a.
3793 (v8_6_a_simd_variants): New.
3794 (v8_*_a_simd_variants): Add i8mm and bf16.
3795 * doc/invoke.texi (armv8.6-a, i8mm, bf16): Document new options.
3796
3797 2020-01-02 Jakub Jelinek <jakub@redhat.com>
3798
3799 PR ipa/93087
3800 * predict.c (compute_function_frequency): Don't call
3801 warn_function_cold on functions that already have cold attribute.
3802
3803 2020-01-01 John David Anglin <danglin@gcc.gnu.org>
3804
3805 PR target/67834
3806 * config/pa/pa.c (pa_elf_select_rtx_section): New. Put references to
3807 COMDAT group function labels in .data.rel.ro.local section.
3808 * config/pa/pa32-linux.h (TARGET_ASM_SELECT_RTX_SECTION): Define.
3809
3810 PR target/93111
3811 * config/pa/pa.md (scc): Use ordered_comparison_operator instead of
3812 comparison_operator in B and S integer comparisons. Likewise, use
3813 ordered_comparison_operator instead of cmpib_comparison_operator in
3814 cmpib patterns.
3815 * config/pa/predicates.md (cmpib_comparison_operator): Remove.
3816
3817 2020-01-01 Jakub Jelinek <jakub@redhat.com>
3818
3819 Update copyright years.
3820
3821 * gcc.c (process_command): Update copyright notice dates.
3822 * gcov-dump.c (print_version): Ditto.
3823 * gcov.c (print_version): Ditto.
3824 * gcov-tool.c (print_version): Ditto.
3825 * gengtype.c (create_file): Ditto.
3826 * doc/cpp.texi: Bump @copying's copyright year.
3827 * doc/cppinternals.texi: Ditto.
3828 * doc/gcc.texi: Ditto.
3829 * doc/gccint.texi: Ditto.
3830 * doc/gcov.texi: Ditto.
3831 * doc/install.texi: Ditto.
3832 * doc/invoke.texi: Ditto.
3833
3834 2020-01-01 Jan Hubicka <hubicka@ucw.cz>
3835
3836 * ipa.c (walk_polymorphic_call_targets): Fix updating of overall
3837 summary.
3838
3839 2020-01-01 Jakub Jelinek <jakub@redhat.com>
3840
3841 PR tree-optimization/93098
3842 * match.pd (popcount): For shift amounts, use integer_onep
3843 or wi::to_widest () == cst instead of tree_to_uhwi () == cst
3844 tests. Make sure that precision is power of two larger than or equal
3845 to 16. Ensure shift is never negative. Use HOST_WIDE_INT_UC macro
3846 instead of ULL suffixed constants. Formatting fixes.
3847 \f
3848 Copyright (C) 2020 Free Software Foundation, Inc.
3849
3850 Copying and distribution of this file, with or without modification,
3851 are permitted in any medium without royalty provided the copyright
3852 notice and this notice are preserved.
This page took 0.193994 seconds and 6 git commands to generate.