1 2020-02-12 Segher Boessenkool <segher@kernel.crashing.org>
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.
8 2020-02-11 Martin Sebor <msebor@redhat.com>
10 PR tree-optimization/93683
11 * tree-ssa-alias.c (stmt_kills_ref_p): Avoid using LHS when not set.
13 2020-02-11 Michael Meissner <meissner@linux.ibm.com>
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
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
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
45 2020-02-11 Hans-Peter Nilsson <hp@axis.com>
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.
51 2020-02-11 Stam Markianos-Wright <stam.markianos-wright@arm.com>
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.
70 2020-02-11 Richard Biener <rguenther@suse.de>
72 PR tree-optimization/93661
73 PR tree-optimization/93662
74 * tree-ssa-sccvn.c (vn_reference_lookup_3): Properly guard
76 * tree-sra.c (get_access_for_expr): Likewise.
78 2020-02-10 Jakub Jelinek <jakub@redhat.com>
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.
85 2020-02-10 Iain Sandoe <iain@sandoe.co.uk>
88 * config/darwin-c.c (darwin_cfstring_ref_p): Fix up last
91 2020-02-10 Hans-Peter Nilsson <hp@axis.com>
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.
99 2020-02-10 Richard Earnshaw <rearnsha@arm.com>
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
106 2020-02-10 Hans-Peter Nilsson <hp@axis.com>
108 * md.texi (Define Subst): Match closing paren in example.
110 2020-02-10 Jakub Jelinek <jakub@redhat.com>
114 * config/i386/i386.c (x86_64_elf_section_type_flags): Fix up last
115 arguments of strncmp.
117 2020-02-10 Feng Xue <fxue@os.amperecomputing.com>
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.
139 2020-02-09 Uroš Bizjak <ubizjak@gmail.com>
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
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.
156 2020-02-09 Jakub Jelinek <jakub@redhat.com>
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.
162 2020-02-08 Andrew Pinski <apinski@marvell.com>
165 * config/aarch64/aarch64-simd.md (movmisalign<mode>): Check
166 STRICT_ALIGNMENT also.
168 2020-02-08 Jim Wilson <jimw@sifive.com>
171 * config/riscv/riscv.h (HARD_REGNO_CALLER_SAVE_MODE): Define.
173 2020-02-08 Uroš Bizjak <ubizjak@gmail.com>
174 Jakub Jelinek <jakub@redhat.com>
177 * config/i386/i386.h (CALL_USED_REGISTERS): Make
178 xmm16-xmm31 call-used even in 64-bit ms-abi.
180 2020-02-07 Dennis Zhang <dennis.zhang@arm.com>
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.
188 2020-02-07 Richard Biener <rguenther@suse.de>
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
196 2020-02-07 H.J. Lu <hongjiu.lu@intel.com>
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
202 (ix86_function_arg): Pass arg.type to function_arg_ms_64.
204 2020-02-07 Jakub Jelinek <jakub@redhat.com>
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
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
225 * config/i386/i386.c (ix86_lea_outperforms): Make sure to clear
226 recog_data.insn if distance_non_agu_define changed it.
228 2020-02-06 Michael Meissner <meissner@linux.ibm.com>
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.
236 2020-02-06 <zhongyunde@huawei.com>
237 Vladimir Makarov <vmakarov@redhat.com>
239 PR rtl-optimization/93561
240 * lra-assigns.c (spill_for): Check that tested hard regno is not out of
243 2020-02-06 Richard Sandiford <richard.sandiford@arm.com>
245 * config/aarch64/aarch64.md (aarch64_movk<mode>): Add a type
248 2020-02-06 Segher Boessenkool <segher@kernel.crashing.org>
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.
254 2020-02-06 Mihail Ionescu <mihail.ionescu@arm.com>
256 * config/arm/arm-cpus.in: Set profile M for armv8.1-m.main.
258 2020-02-06 Mihail Ionescu <mihail.ionescu@arm.com>
260 * config/arm/arm-tables.opt: Regenerate.
262 2020-02-06 Richard Sandiford <richard.sandiford@arm.com>
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.
269 2020-02-06 Richard Sandiford <richard.sandiford@arm.com>
271 PR rtl-optimization/87763
272 * config/aarch64/aarch64.md (*ashiftsi_extvdi_bfiz): New pattern.
274 2020-02-06 Delia Burduv <delia.burduv@arm.com>
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.
296 2020-02-06 Uroš Bizjak <ubizjak@gmail.com>
298 * config/i386/i386.md (*pushtf): Emit "#" instead of
299 calling gcc_unreachable in insn output.
302 (*pushsf_rex64): Ditto for alternatives other than 1.
303 (*pushsf): Ditto for alternatives other than 1.
305 2020-02-06 Martin Liska <mliska@suse.cz>
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.
313 2020-02-06 Stam Markianos-Wright <stam.markianos-wright@arm.com>
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.
320 2020-02-06 Jakub Jelinek <jakub@redhat.com>
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.
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.
334 * gimplify.c (gimplify_scan_omp_clauses) <do_notice>: If adding
335 shared clause, call omp_notice_variable on outer context if any.
337 2020-02-05 Jason Merrill <jason@redhat.com>
340 * symtab.c (symtab_node::nonzero_address): A DECL_COMDAT decl has
341 non-zero address even if weak and not yet defined.
343 2020-02-05 Martin Sebor <msebor@redhat.com>
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.
355 2020-02-05 Uroš Bizjak <ubizjak@gmail.com>
357 * config/i386/i386.md (*pushdi2_rex64 peephole2): Remove.
358 (*pushdi2_rex64 peephole2): Unconditionally split after
360 (*ashl<mode>3_doubleword): Ditto.
361 (*<shift_insn><mode>3_doubleword): Ditto.
363 2020-02-05 Michael Meissner <meissner@linux.ibm.com>
366 * config/rs6000/rs6000.c (get_vector_offset): Fix
368 2020-02-05 Andrew Stubbs <ams@codesourcery.com>
370 * config/gcn/t-gcn-hsa (MULTILIB_OPTIONS): Use / not space.
372 2020-02-05 David Malcolm <dmalcolm@redhat.com>
375 (Special Functions for Debugging the Analyzer): Update description
376 of __analyzer_dump_exploded_nodes.
378 2020-02-05 Jakub Jelinek <jakub@redhat.com>
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.
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
393 2020-02-05 Richard Biener <rguenther@suse.de>
396 * genmatch.c (dt_node::gen_kids_1): Emit number of argument
397 checks before matching calls.
399 2020-02-05 Jakub Jelinek <jakub@redhat.com>
401 * tree-ssa-alias.c (aliasing_matching_component_refs_p): Fix up
402 function comment typo.
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
409 2020-02-05 Martin Liska <mliska@suse.cz>
412 * doc/invoke.texi: Document that one should
413 not combine ASLR and -fpch.
415 2020-02-04 Richard Biener <rguenther@suse.de>
417 PR tree-optimization/93538
418 * match.pd (addr EQ/NE ptr): Amend to handle &ptr->x EQ/NE ptr.
420 2020-02-04 Richard Biener <rguenther@suse.de>
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.
436 2020-02-04 Richard Biener <rguenther@suse.de>
438 PR tree-optimization/92819
439 * tree-ssa-forwprop.c (simplify_vector_constructor): Avoid
440 generating more stmts than before.
442 2020-02-04 Martin Liska <mliska@suse.cz>
444 * config/arm/arm.c (arm_gen_far_branch): Move the function
445 outside of selftests.
447 2020-02-03 Michael Meissner <meissner@linux.ibm.com>
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.
454 2020-02-03 Michael Meissner <meissner@linux.ibm.com>
456 * config/rs6000/rs6000.c (reg_to_non_prefixed): Add forward
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.
466 2020-02-03 Michael Meissner <meissner@linux.ibm.com>
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.
477 2020-02-03 Michael Meissner <meissner@linux.ibm.com>
479 * config/rs6000/rs6000.c (rs6000_adjust_vec_address): Add some
482 2020-02-03 Segher Boessenkool <segher@kernel.crashing.org>
484 * config/rs6000/constraints.md: Improve documentation.
486 2020-02-03 Richard Earnshaw <rearnsha@arm.com>
489 * config/arm/t-arm: ($(srcdir)/config/arm/arm-tune.md)
490 ($(srcdir)/config/arm/arm-tables.opt): Use move-if-change.
492 2020-02-03 Andrew Stubbs <ams@codesourcery.com>
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.
500 2020-02-03 Stam Markianos-Wright <stam.markianos-wright@arm.com>
503 * config/arm/arm-protos.h: New function arm_gen_far_branch prototype.
504 * config/arm/arm.c (arm_gen_far_branch): New function
506 * config/arm/arm.md: Update b<cond> for Thumb2 range checks.
508 2020-02-03 Julian Brown <julian@codesourcery.com>
509 Tobias Burnus <tobias@codesourcery.com>
511 * doc/invoke.texi: Update mention of OpenACC version to 2.6.
513 2020-02-03 Jakub Jelinek <jakub@redhat.com>
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
520 2020-02-02 Vladimir Makarov <vmakarov@redhat.com>
522 PR rtl-optimization/91333
523 * ira-color.c (struct allocno_color_data): Add member
525 (init_allocno_threads): Set the member up.
526 (bucket_allocno_compare_func): Add compare hard reg
529 2020-01-31 Sandra Loosemore <sandra@codesourcery.com>
531 nios2: Support for GOT-relative DW_EH_PE_datarel encoding.
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.
540 2020-02-01 Andrew Burgess <andrew.burgess@embecosm.com>
542 * configure: Regenerate.
544 2020-01-31 Vladimir Makarov <vmakarov@redhat.com>
546 PR rtl-optimization/91333
547 * ira-color.c (bucket_allocno_compare_func): Move conflict hard
548 reg preferences comparison up.
550 2020-01-31 Richard Sandiford <richard.sandiford@arm.com>
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)
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):
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.
596 2020-01-31 Richard Sandiford <richard.sandiford@arm.com>
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
604 (aarch64_full_sve_mode): Likewise.
605 * config/aarch64/iterators.md (SVE_STRUCT): Add VNx16BF, VNx24BF
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
612 * config/aarch64/aarch64-sve-builtins.h (TYPE_bfloat): New
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)
627 2020-01-31 Dennis Zhang <dennis.zhang@arm.com>
628 Matthew Malcomson <matthew.malcomson@arm.com>
629 Richard Sandiford <richard.sandiford@arm.com>
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.
669 (ternary_resize2_opt_n_base): Add TYPE_CLASS2 and TYPE_CLASS3
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):
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
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):
706 2020-01-31 Andrew Stubbs <ams@codesourcery.com>
708 * config/gcn/gcn-valu.md (addv64di3_exec): Allow one '0' in each
711 2020-01-31 Uroš Bizjak <ubizjak@gmail.com>
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.
730 (*<code><mode>3): 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.
740 2020-01-31 Kwok Cheung Yeung <kcy@codesourcery.com>
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.
746 2020-01-31 Tamar Christina <tamar.christina@arm.com>
748 PR rtl-optimization/91838
749 * simplify-rtx.c (simplify_binary_operation_1): Update LSHIFTRT case
750 to truncate if allowed or reject combination.
752 2020-01-31 Andrew Stubbs <ams@codesourcery.com>
754 * tree-ssa-loop-ivopts.c (get_iv): Use sizetype for zero-step.
755 (find_inv_vars_cb): Likewise.
757 2020-01-31 David Malcolm <dmalcolm@redhat.com>
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.
765 2020-01-30 Andrew Stubbs <ams@codesourcery.com>
767 * config/gcn/gcn-valu.md (gather<mode>_exec): Move contents ...
768 (mask_gather_load<mode>): ... here, and zero-initialize the
770 (maskload<mode>di): Zero-initialize the destination.
773 2020-01-30 David Malcolm <dmalcolm@redhat.com>
776 * doc/analyzer.texi (Limitations): Note that constraints on
777 floating-point values are currently ignored.
779 2020-01-30 Jakub Jelinek <jakub@redhat.com>
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.
787 * combine.c (simplify_comparison) <case ROTATE>: Punt on out of range
790 2020-01-30 Andrew Stubbs <ams@codesourcery.com>
792 * config/gcn/gcn.c (print_operand): Handle LTGT.
793 * config/gcn/predicates.md (gcn_fp_compare_operator): Allow ltgt.
795 2020-01-30 Richard Biener <rguenther@suse.de>
797 * tree-pretty-print.c (dump_generic_node): Wrap VECTOR_CST
798 and CONSTRUCTOR in _Literal (type) with TDF_GIMPLE.
800 2020-01-30 John David Anglin <danglin@gcc.gnu.org>
802 * config/pa/pa.c (pa_elf_select_rtx_section): Place function pointers
803 without a DECL in .data.rel.ro.local.
805 2020-01-30 Jakub Jelinek <jakub@redhat.com>
808 * config/arm/arm.md (uaddvdi4): Actually emit what gen_uaddvsi4
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.
826 * config/i386/i386.md (*popcountsi2_zext): New define_insn_and_split.
827 (*popcountsi2_zext_falsedep): New define_insn.
829 2020-01-30 Dragan Mladjenovic <dmladjenovic@wavecomp.com>
831 * config.in: Regenerated.
832 * configure: Regenerated.
834 2020-01-29 Tobias Burnus <tobias@codesourcery.com>
837 * config/gcn/gcn-hsa.h (ASM_SPEC): Add -mattr=-code-object-v3 as
838 LLVM's assembler changed the default in version 9.
840 2020-01-24 Jeff Law <law@redhat.com>
842 PR tree-optimization/89689
843 * builtins.def (BUILT_IN_OBJECT_SIZE): Make it const rather than pure.
845 2020-01-29 Richard Sandiford <richard.sandiford@arm.com>
849 2020-01-28 Richard Sandiford <richard.sandiford@arm.com>
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.
856 2020-01-29 Joel Hutton <Joel.Hutton@arm.com>
859 * ira.c (ira): Revert use of simplified LRA algorithm.
861 2020-01-29 Martin Jambor <mjambor@suse.cz>
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
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
892 2020-01-29 Martin Jambor <mjambor@suse.cz>
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
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
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.
918 2020-01-29 Martin Jambor <mjambor@suse.cz>
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.
925 2020-01-28 Jan Hubicka <hubicka@ucw.cz>
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.
932 2020-01-29 Richard Biener <rguenther@suse.de>
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.
939 2020-01-28 Jan Hubicka <hubicka@ucw.cz>
941 * ipa-prop.c (update_indirect_edges_after_inlining): Fix warning.
943 2020-01-28 Vladimir Makarov <vmakarov@redhat.com>
945 PR rtl-optimization/93272
946 * ira-lives.c (process_out_of_region_eh_regs): New function.
947 (process_bb_node_lives): Call it.
949 2020-01-28 Jan Hubicka <hubicka@ucw.cz>
951 * coverage.c (read_counts_file): Make error message lowercase.
953 2020-01-28 Jan Hubicka <hubicka@ucw.cz>
955 * profile-count.c (profile_quality_display_names): Fix ordering.
957 2020-01-28 Jan Hubicka <hubicka@ucw.cz>
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
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
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
995 * profile-count.h: (profile_probability::adjusted): New.
996 * tree-inline.c (copy_bb): Update to new speculative call API; fix
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.
1003 2020-01-28 H.J. Lu <hongjiu.lu@intel.com>
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.
1015 2020-01-28 David Malcolm <dmalcolm@redhat.com>
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.
1025 2020-01-28 Richard Biener <rguenther@suse.de>
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
1033 2020-01-28 H.J. Lu <hongjiu.lu@intel.com>
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.
1045 2020-01-28 Richard Sandiford <richard.sandiford@arm.com>
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.
1052 2020-01-28 Richard Sandiford <richard.sandiford@arm.com>
1054 * tree-vect-loop.c (vectorizable_reduction): Fail gracefully
1055 for reduction chains that (now) include a call.
1057 2020-01-28 Richard Sandiford <richard.sandiford@arm.com>
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.
1064 2020-01-28 Richard Sandiford <richard.sandiford@arm.com>
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.
1071 2020-01-28 Jakub Jelinek <jakub@redhat.com>
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.
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.
1085 2020-01-27 Joseph Myers <joseph@codesourcery.com>
1087 * config/mips/mips.c (mips_declare_object_name)
1088 [USE_GNU_UNIQUE_OBJECT]: Support use of gnu_unique_object.
1090 2020-01-27 Martin Liska <mliska@suse.cz>
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.
1097 2020-01-27 Richard Sandiford <richard.sandiford@arm.com>
1100 * config/aarch64/aarch64-simd.md (aarch64_get_half<mode>): New
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.
1109 2020-01-27 Richard Sandiford <richard.sandiford@arm.com>
1111 * config/aarch64/aarch64.c (aarch64_if_then_else_costs): Match
1112 jump conditions for *compare_condjump<GPI:mode>.
1114 2020-01-27 David Malcolm <dmalcolm@redhat.com>
1117 * digraph.cc (test_edge::test_edge): Specify template for base
1120 2020-01-27 Claudiu Zissulescu <claziss@synopsys.com>
1122 * config/arc/arc.c (arc_rtx_costs): Update mul64 cost.
1124 2020-01-27 Claudiu Zissulescu <claziss@synopsys.com>
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
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.
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
1149 (mhi_operand): Likewise.
1151 2020-01-27 Claudiu Zissulescu <claziss@synopsys.com>
1152 Petro Karashchenko <petro.karashchenko@ring.com>
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
1158 (arc_isuncached_mem_p): Propagate uncached attribute to each
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.
1166 (stdidi_split): Split instruction for architectures which are not
1167 supporting ll64 option.
1168 (lddidi_split): Likewise.
1170 2020-01-27 Richard Sandiford <richard.sandiford@arm.com>
1172 PR rtl-optimization/92989
1173 * lra-lives.c (process_bb_lives): Update the live-in set before
1174 processing additional clobbers.
1176 2020-01-27 Richard Sandiford <richard.sandiford@arm.com>
1178 PR rtl-optimization/93170
1179 * cselib.c (cselib_invalidate_regno_val): New function, split out
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.
1186 2020-01-27 Richard Sandiford <richard.sandiford@arm.com>
1188 * dojump.c (split_comparison): Use HONOR_NANS rather than
1189 HONOR_SNANS when splitting LTGT.
1191 2020-01-27 Martin Liska <mliska@suse.cz>
1194 * opts.c (print_filtered_help): Exclude language-specific
1195 options from --help=common unless enabled in all FEs.
1197 2020-01-27 Martin Liska <mliska@suse.cz>
1199 * opts.c (print_help): Exclude params from
1200 all except --help=param.
1202 2020-01-27 Martin Liska <mliska@suse.cz>
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.
1209 2020-01-27 Richard Biener <rguenther@suse.de>
1211 PR tree-optimization/93397
1212 * tree-vect-slp.c (vect_analyze_slp_instance): Delay
1213 converted reduction chain SLP graph adjustment.
1215 2020-01-26 Marek Polacek <polacek@redhat.com>
1218 * sanopt.c (sanitize_rewrite_addressable_params): Avoid crash on
1221 2020-01-26 Jason Merrill <jason@redhat.com>
1224 * tree.c (verify_type_variant): Only verify TYPE_NEEDS_CONSTRUCTING
1227 2020-01-26 Darius Galis <darius.galis@cyberthorstudios.com>
1229 * config/rx/rx.md (setmemsi): Added rx_allow_string_insns constraint
1230 (rx_setmem): Likewise.
1232 2020-01-26 Jakub Jelinek <jakub@redhat.com>
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.
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.
1244 2020-01-25 Feng Xue <fxue@os.amperecomputing.com>
1247 * ipa-cp.c (get_info_about_necessary_edges): Remove value
1250 2020-01-24 Jeff Law <law@redhat.com>
1252 PR tree-optimization/92788
1253 * tree-ssa-threadedge.c (thread_across_edge): Check EDGE_COMPLEX
1256 2020-01-24 Jakub Jelinek <jakub@redhat.com>
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>.
1266 * simplify-rtx.c (simplify_const_unary_operation,
1267 simplify_const_binary_operation): Punt for mode precision above
1268 MAX_BITSIZE_MODE_ANY_INT.
1270 2020-01-24 Andrew Pinski <apinski@marvell.com>
1272 * config/arm/aarch-cost-tables.h (cortexa57_extra_costs): Change
1275 2020-01-24 Jeff Law <law@redhat.com>
1278 * config/h8300/h8300.c (h8300_print_operand): Only call byte_reg
1279 for REGs. Call output_operand_lossage to get more reasonable
1282 2020-01-24 Andrew Stubbs <ams@codesourcery.com>
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.
1302 2020-01-24 Maciej W. Rozycki <macro@wdc.com>
1304 * doc/install.texi (Cross-Compiler-Specific Options): Document
1305 `--with-toolexeclibdir' option.
1307 2020-01-24 Hans-Peter Nilsson <hp@axis.com>
1309 * target.def (flags_regnum): Also mention effect on delay slot filling.
1310 * doc/tm.texi: Regenerate.
1312 2020-01-23 Jeff Law <law@redhat.com>
1314 PR translation/90162
1315 * config/h8300/h8300.c (h8300_option_override): Fix diagnostic text.
1317 2020-01-23 Mikael Tillenius <mti-1@tillenius.com>
1320 * config/h8300/h8300.h (FUNCTION_PROFILER): Fix emission of
1323 2020-01-23 Jakub Jelinek <jakub@redhat.com>
1325 PR rtl-optimization/93402
1326 * postreload.c (reload_combine_recognize_pattern): Don't try to adjust
1329 2020-01-23 Dragan Mladjenovic <dmladjenovic@wavecomp.com>
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.
1338 2020-01-23 Dragan Mladjenovic <dmladjenovic@wavecomp.com>
1340 * config/mips/linux.h (NEED_INDICATE_EXEC_STACK): Define to
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.
1347 2020-01-23 Jakub Jelinek <jakub@redhat.com>
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>.
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>
1360 2020-01-23 Richard Sandiford <richard.sandiford@arm.com>
1363 * config/aarch64/aarch64.md (UNSPEC_SPECULATION_TRACKER_REV): New
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.
1369 2020-01-23 Richard Biener <rguenther@suse.de>
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
1378 (vn_reference_lookup): Consistently set *last_vuse_ptr.
1379 * real.c (clear_significand_below): Fix out-of-bound access.
1381 2020-01-23 Jakub Jelinek <jakub@redhat.com>
1384 * config/i386/i386.md (*bmi2_bzhi_<mode>3_2, *bmi2_bzhi_<mode>3_3):
1385 New define_insn patterns.
1387 2020-01-23 Richard Sandiford <richard.sandiford@arm.com>
1389 * doc/sourcebuild.texi (check-function-bodies): Add an
1390 optional target/xfail selector.
1392 2020-01-23 Richard Sandiford <richard.sandiford@arm.com>
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.
1398 2020-01-22 Andrew Pinski <apinski@marvell.com>
1400 * config/arc/arc.c (output_short_suffix): Check insn for nullness.
1402 2020-01-22 David Malcolm <dmalcolm@redhat.com>
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.
1411 2020-01-22 Richard Sandiford <richard.sandiford@arm.com>
1413 * cfgexpand.c (union_stack_vars): Update the size.
1415 2020-01-22 Richard Biener <rguenther@suse.de>
1417 PR tree-optimization/93381
1418 * tree-ssa-structalias.c (find_func_aliases): Assume offsetting
1419 throughout, handle all conversions the same.
1421 2020-01-22 Jakub Jelinek <jakub@redhat.com>
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.
1429 2020-01-22 Martin Liska <mliska@suse.cz>
1431 PR tree-optimization/92924
1432 * profile.c (compute_value_histograms): Divide
1435 2020-01-22 Jakub Jelinek <jakub@redhat.com>
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.
1443 2020-01-22 Joseph Myers <joseph@codesourcery.com>
1445 * doc/sourcebuild.texi (Texinfo Manuals, Front End): Refer to
1446 update_web_docs_git instead of update_web_docs_svn.
1448 2020-01-21 Andrew Pinski <apinski@marvell.com>
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.
1458 2020-01-21 Jim Wilson <jimw@sifive.com>
1460 * config/riscv/riscv-sr.c (riscv_sr_match_prologue): Use INTVAL
1463 2020-01-21 H.J. Lu <hongjiu.lu@intel.com>
1464 Uros Bizjak <ubizjak@gmail.com>
1467 * config/i386/i386.c (ix86_tls_module_base): Replace Pmode
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.
1477 2020-01-21 Jakub Jelinek <jakub@redhat.com>
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.
1483 2020-01-21 Richard Sandiford <richard.sandiford@arm.com>
1485 * config/aarch64/aarch64-sve-builtins.def: Use get_typenode_from_name
1486 to get the integer element types.
1488 2020-01-21 Richard Sandiford <richard.sandiford@arm.com>
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.
1499 2020-01-21 Szabolcs Nagy <szabolcs.nagy@arm.com>
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,
1509 2020-01-21 David Malcolm <dmalcolm@redhat.com>
1512 * ipa-profile.c (ipa_profile): Delete call_sums and set it to
1515 2020-01-18 Jan Hubicka <hubicka@ucw.cz>
1518 * cgraph.c (cgraph_edge::resolve_speculation,
1519 cgraph_edge::redirect_call_stmt_to_callee): Fix update of
1520 call_stmt_site_hash.
1522 2020-01-21 Martin Liska <mliska@suse.cz>
1524 * config/rs6000/rs6000.c (common_mode_defined): Remove
1527 2020-01-21 Richard Biener <rguenther@suse.de>
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
1533 (eliminate_dom_walker::eliminate_stmt): When eliminating
1534 a redundant store handle bit-reinterpretation of the same value.
1536 2020-01-21 Andrew Pinski <apinski@marvel.com>
1539 * tree-into-ssa.c (prepare_block_for_update_1): Split out
1541 (prepare_block_for_update): This. Use a worklist instead of
1544 2020-01-21 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
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.
1551 2020-01-21 Jakub Jelinek <jakub@redhat.com>
1554 * config/rs6000/rs6000.c (rs6000_emit_cmove): If using fsel, punt for
1555 compare_mode other than SFmode or DFmode.
1557 2020-01-21 Kito Cheng <kito.cheng@sifive.com>
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.
1564 2020-01-20 Wilco Dijkstra <wdijkstr@arm.com>
1566 * config/aarch64/aarch64.c (neoversen1_tunings): Set jump_align to 4.
1568 2020-01-20 Andrew Pinski <apinski@marvell.com>
1571 * targhooks.c (default_print_patchable_function_entry): Use
1572 output_asm_insn to emit the nop instruction.
1574 2020-01-20 Fangrui Song <maskray@google.com>
1577 * targhooks.c (default_print_patchable_function_entry): Align to
1580 2020-01-20 H.J. Lu <hongjiu.lu@intel.com>
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.
1596 2020-01-20 Wilco Dijkstra <wdijkstr@arm.com>
1598 * config/aarch64/aarch64.h (SLOW_BYTE_ACCESS): Set to 1.
1600 2020-01-20 Richard Sandiford <richard.sandiford@arm.com>
1602 * config/aarch64/aarch64-sve-builtins-base.cc
1603 (svld1ro_impl::memory_vector_mode): Remove parameter name.
1605 2020-01-20 Richard Biener <rguenther@suse.de>
1608 * dwarf2out.c (prune_unused_types): Unconditionally mark
1609 called function DIEs.
1611 2020-01-20 Martin Liska <mliska@suse.cz>
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
1621 (lower_catch): Likewise.
1622 (lower_eh_filter): Likewise.
1623 (lower_eh_must_not_throw): Likewise.
1624 (lower_cleanup): Likewise.
1626 2020-01-20 Richard Biener <rguenther@suse.de>
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.
1638 2020-01-19 Eric S. Raymond <esr@thyrsus.com>
1640 * doc/contribute.texi: Update for SVN -> Git transition.
1641 * doc/install.texi: Likewise.
1643 2020-01-18 Jan Hubicka <hubicka@ucw.cz>
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
1653 2020-01-18 Jan Hubicka <hubicka@ucw.cz>
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
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.
1667 2020-01-18 Tamar Christina <tamar.christina@arm.com>
1669 * config/aarch64/aarch64-sve-builtins-base.cc (memory_vector_mode):
1670 Mark parameter unused.
1672 2020-01-18 Hans-Peter Nilsson <hp@axis.com>
1674 * config.gcc <obsolete targets>: Add crisv32-*-* and cris-*-linux*
1676 2019-01-18 Gerald Pfeifer <gerald@pfeifer.com>
1678 * varpool.c (ctor_useable_for_folding_p): Fix grammar.
1680 2020-01-18 Iain Sandoe <iain@sandoe.co.uk>
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.
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
1706 2020-01-18 Jakub Jelinek <jakub@redhat.com>
1708 * config/arm/vfp.md (*clear_vfp_multiple): Remove unused variable.
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.
1715 2020-01-17 David Malcolm <dmalcolm@redhat.com>
1717 * doc/analyzer.texi (Limitations): Add note about NaN.
1719 2020-01-17 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
1720 Sudakshina Das <sudi.das@arm.com>
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.
1733 2020-01-17 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
1734 Sudakshina Das <sudi.das@arm.com>
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.
1743 2020-01-17 Jakub Jelinek <jakub@redhat.com>
1745 * config/arm/arm.c (cmse_nonsecure_call_inline_register_clear): Remove
1748 2020-01-17 Alexander Monakov <amonakov@ispras.ru>
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
1755 2020-01-17 Matthew Malcomson <matthew.malcomson@arm.com>
1757 * config/aarch64/aarch64-sve.md (@aarch64_sve_ld1ro<mode>): Use the
1758 correct target macro.
1760 2020-01-17 Matthew Malcomson <matthew.malcomson@arm.com>
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
1776 * config/aarch64/aarch64-sve.md (@aarch64_sve_ld1ro<mode>): New
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.
1787 2020-01-17 Matthew Malcomson <matthew.malcomson@arm.com>
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.
1801 2020-01-17 Wilco Dijkstra <wdijkstr@arm.com>
1803 * config/aarch64/aarch64.c (generic_tunings): Add branch fusion.
1804 (neoversen1_tunings): Likewise.
1806 2020-01-17 Wilco Dijkstra <wdijkstr@arm.com>
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.
1822 2020-01-17 Richard Sandiford <richard.sandiford@arm.com>
1825 * config/aarch64/aarch64.h (REVERSIBLE_CC_MODE): Return false
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
1843 2020-01-17 Richard Sandiford <richard.sandiford@arm.com>
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.
1849 2020-01-17 Jakub Jelinek <jakub@redhat.com>
1851 PR tree-optimization/93292
1852 * tree-vect-stmts.c (vectorizable_comparison): Punt also if
1853 get_vectype_for_scalar_type returns NULL.
1855 2020-01-16 Jan Hubicka <hubicka@ucw.cz>
1857 * params.opt (-param=max-predicted-iterations): Increase range from 0.
1858 * predict.c (estimate_loops): Add 1 to param_max_predicted_iterations.
1860 2020-01-16 Jan Hubicka <hubicka@ucw.cz>
1862 * ipa-fnsummary.c (estimate_calls_size_and_time): Fix formating of
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
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.
1877 2020-01-16 Stam Markianos-Wright <stam.markianos-wright@arm.com>
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.
1884 2020-01-16 Stam Markianos-Wright <stam.markianos-wright@arm.com>
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.
1907 * config/arm/neon.md: Add BF vector types to movhf NEON move patterns.
1908 * config/arm/vfp.md: Add BFmode to movhf patterns.
1910 2020-01-16 Mihail Ionescu <mihail.ionescu@arm.com>
1911 Andre Vieira <andre.simoesdiasvieira@arm.com>
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.
1919 2020-01-16 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
1920 Thomas Preud'homme <thomas.preudhomme@arm.com>
1922 * config/arm/arm-cpus.in (ARMv8_1m_main): Redefine as an extension to
1924 * config/arm/arm.c (arm_options_perform_arch_sanity_checks): Remove
1925 error for using -mcmse when targeting Armv8.1-M Mainline.
1927 2020-01-16 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
1928 Thomas Preud'homme <thomas.preudhomme@arm.com>
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
1936 (nonsecure_call_value_reg_thumb2): Likewise.
1938 2020-01-16 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
1939 Thomas Preud'homme <thomas.preudhomme@arm.com>
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.
1952 2020-01-16 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
1953 Thomas Preud'homme <thomas.preudhomme@arm.com>
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.
1961 2020-01-16 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
1962 Thomas Preud'homme <thomas.preudhomme@arm.com>
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
1970 (arm_reorg): Adapt to function rename.
1972 2020-01-16 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
1973 Thomas Preud'homme <thomas.preudhomme@arm.com>
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
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.
1990 2020-01-16 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
1991 Thomas Preud'homme <thomas.preudhomme@arm.com>
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.
2005 2020-01-16 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
2006 Thomas Preud'homme <thomas.preudhomme@arm.com>
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
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.
2029 2020-01-16 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
2030 Thomas Preud'homme <thomas.preudhomme@arm.com>
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.
2046 2020-01-16 Stam Markianos-Wright <stam.markianos-wright@arm.com>
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.
2059 2020-01-16 Stam Markianos-Wright <stam.markianos-wright@arm.com>
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.
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.
2077 2020-01-16 Martin Liska <mliska@suse.cz>
2079 * value-prof.c (dump_histogram_value): Fix
2080 obvious spacing issue.
2082 2020-01-16 Andrew Pinski <apinski@marvell.com>
2084 * tree-ssa-sccvn.c(vn_reference_lookup_3): Check lhs for
2085 !storage_order_barrier_p.
2087 2020-01-16 Andrew Pinski <apinski@marvell.com>
2089 * sched-int.h (_dep): Add unused bit-field field for the padding.
2090 * sched-deps.c (init_dep_1): Init unused field.
2092 2020-01-16 Andrew Pinski <apinski@marvell.com>
2094 * optabs.h (create_expand_operand): Initialize target field also.
2096 2020-01-16 Andre Vieira <andre.simoesdiasvieira@arm.com>
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
2102 * tree-vect-loop.c (update_epilogue_vinfo): Do not fold when replacing
2105 2020-01-16 Richard Sandiford <richard.sandiford@arm.com>
2107 * config/aarch64/aarch64.c (aarch64_split_sve_subreg_move): Apply
2108 aarch64_sve_int_mode to each mode.
2110 2020-01-15 David Malcolm <dmalcolm@redhat.com>
2112 * doc/analyzer.texi (Overview): Add note about
2113 -fdump-ipa-analyzer.
2115 2020-01-15 Wilco Dijkstra <wdijkstr@arm.com>
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.
2124 2020-01-15 Uroš Bizjak <ubizjak@gmail.com>
2126 * config/i386/i386.md (*movsf_internal): Do not require
2127 SSE2 ISA for alternatives 14 and 15.
2129 2020-01-15 Richard Biener <rguenther@suse.de>
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.
2137 2020-01-15 Jakub Jelinek <jakub@redhat.com>
2139 * BASE-VER: Bump to 10.0.1.
2141 2020-01-15 Richard Sandiford <richard.sandiford@arm.com>
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.
2147 2020-01-15 Richard Sandiford <richard.sandiford@arm.com>
2149 * tree-vect-slp.c (vectorize_slp_instance_root_stmt): Use a
2150 VIEW_CONVERT_EXPR if the vectorized constructor has a diffeent
2153 2020-01-15 Martin Liska <mliska@suse.cz>
2155 * ipa-profile.c (ipa_profile_read_edge_summary): Do not allow
2156 2 calls of streamer_read_hwi in a function call.
2158 2020-01-15 Richard Biener <rguenther@suse.de>
2160 * alias.c (record_alias_subset): Avoid redundant work when
2161 subset is already recorded.
2163 2020-01-14 David Malcolm <dmalcolm@redhat.com>
2165 * doc/invoke.texi (-fdiagnostics-show-cwe): Add note that some of
2166 the analyzer options provide CWE identifiers.
2168 2020-01-14 David Malcolm <dmalcolm@redhat.com>
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.
2174 2020-01-15 Jakub Jelinek <jakub@redhat.com>
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.
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.
2189 2020-01-14 David Malcolm <dmalcolm@redhat.com>
2191 * Makefile.in (ANALYZER_OBJS): Add analyzer/function-set.o.
2193 2020-01-15 Jakub Jelinek <jakub@redhat.com>
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
2204 2020-01-14 Jan Hubicka <hubicka@ucw.cz>
2207 * ipa-devirt.c (odr_types_equivalent_p): Compare TREE_ADDRESSABLE and
2210 2020-01-14 David Malcolm <dmalcolm@redhat.com>
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
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.
2288 2020-01-14 Uroš Bizjak <ubizjak@gmail.com>
2291 * config/i386/i386.md (*movsf_internal): Require SSE2 ISA for
2292 alternatives 9 and 10.
2294 2020-01-14 David Malcolm <dmalcolm@redhat.com>
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
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):
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.
2327 (default_hash_traits<scalar_cond_masked_key>::empty_zero_p):
2330 2020-01-14 Kewen Lin <linkw@gcc.gnu.org>
2332 * cfgloopanal.c (average_num_loop_insns): Free bbs when early return,
2333 fix typo on return value.
2335 2020-01-14 Xiong Hu Luo <luoxhu@linux.ibm.com>
2338 * cgraph.c (symbol_table::create_edge): Init speculative_id and
2340 (cgraph_edge::make_speculative): Add param for setting speculative_id
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
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
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.
2396 2020-01-13 Andrew Pinski <apinski@marvell.com>
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.
2408 2020-01-13 Jason Merrill <jason@redhat.com>
2410 PR c++/33799 - destroy return value if local cleanup throws.
2411 * gimplify.c (gimplify_return_expr): Handle COMPOUND_EXPR.
2413 2020-01-13 Martin Liska <mliska@suse.cz>
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.
2419 2020-01-13 Martin Sebor <msebor@redhat.com>
2421 PR tree-optimization/93213
2422 * tree-ssa-strlen.c (handle_store): Only allow single-byte nul-over-nul
2423 stores to be eliminated.
2425 2020-01-13 Martin Liska <mliska@suse.cz>
2427 * opts.c (print_help): Do not print CL_PARAM
2428 and CL_WARNING for CL_OPTIMIZATION.
2430 2020-01-13 Jonathan Wakely <jwakely@redhat.com>
2433 * doc/invoke.texi (Warning Options): Add caveat about some warnings
2434 depending on optimization settings.
2436 2020-01-13 Jakub Jelinek <jakub@redhat.com>
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
2445 2020-01-10 Thomas Schwinge <thomas@codesourcery.com>
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.
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'.
2456 2020-01-10 David Malcolm <dmalcolm@redhat.com>
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
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
2533 (default_tree_make_json_for_path): New decl.
2534 (maybe_unwind_expanded_macro_loc): New decl.
2536 2020-01-10 Jakub Jelinek <jakub@redhat.com>
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,
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.
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.
2561 2020-01-10 Vladimir Makarov <vmakarov@redhat.com>
2564 * lra-constraints.c (match_reload): Permit input operands have the
2565 same mode as output while other input operands have a different
2568 2020-01-10 Wilco Dijkstra <wdijkstr@arm.com>
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.
2578 2020-01-10 Stam Markianos-Wright <stam.markianos-wright@arm.com>
2580 * config/aarch64/aarch64.c (aarch64_invalid_conversion): New function
2582 (aarch64_invalid_unary_op): New function for target hook.
2583 (aarch64_invalid_binary_op): New function for target hook.
2585 2020-01-10 Stam Markianos-Wright <stam.markianos-wright@arm.com>
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
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
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
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.
2613 2020-01-10 Jason Merrill <jason@redhat.com>
2615 PR c++/93173 - incorrect tree sharing.
2616 * gimplify.c (copy_if_shared): No longer static.
2617 * gimplify.h: Declare it.
2619 2020-01-10 Richard Sandiford <richard.sandiford@arm.com>
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.
2631 2020-01-10 Richard Sandiford <richard.sandiford@arm.com>
2633 * config/aarch64/aarch64.c (aarch64_evpc_sel): Fix gen_vcond_mask
2636 2020-01-10 Richard Sandiford <richard.sandiford@arm.com>
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.
2642 2020-01-10 Richard Sandiford <richard.sandiford@arm.com>
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.
2648 2020-01-10 Richard Sandiford <richard.sandiford@arm.com>
2650 * tree-vect-loop.c (update_epilogue_loop_vinfo): Update DR_REF
2651 for any type of gather or scatter, including strided accesses.
2653 2020-01-10 Andre Vieira <andre.simoesdiasvieira@arm.com>
2655 * tree-vectorizer.h (get_dr_vinfo_offset): Add missing function
2658 2020-01-10 Andre Vieira <andre.simoesdiasvieira@arm.com>
2660 * tree-vect-data-refs.c (vect_create_addr_base_for_vector_ref): Use
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.
2675 2020-01-10 Richard Biener <rguenther@suse.de>
2677 * gimple-ssa-store-merging
2678 (pass_store_merging::terminate_all_aliasing_chains): Cache alias info.
2680 2020-01-10 Martin Liska <mliska@suse.cz>
2683 * ipa-inline-analysis.c (offline_size): Make proper parenthesis
2684 encapsulation that was there before r280040.
2686 2020-01-10 Richard Biener <rguenther@suse.de>
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
2694 2020-01-10 Richard Biener <rguenther@suse.de>
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.
2701 2020-01-10 Martin Jambor <mjambor@suse.cz>
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.
2709 2020-01-10 Martin Jambor <mjambor@suse.cz>
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.
2721 2020-01-10 Martin Jambor <mjambor@suse.cz>
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.
2729 2020-01-09 Kwok Cheung Yeung <kcy@codesourcery.com>
2731 * lto-streamer-in.c (input_function): Remove streamed-in inline debug
2732 markers if debug_inline_points is false.
2734 2020-01-09 Richard Sandiford <richard.sandiford@arm.com>
2736 * config.gcc (aarch64*-*-*): Add aarch64-sve-builtins-sve2.o to
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
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
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
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
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
2823 (<SHRNT:r>shrnt<mode>): Generalize to...
2824 (@aarch64_sve_<SVE2_INT_SHIFT_IMM_NARROWT:sve_int_op><mode>): ...this
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
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
2933 (lr): Handle the new unspecs.
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
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
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
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
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.
3090 2020-01-09 Richard Sandiford <richard.sandiford@arm.com>
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.
3101 2020-01-09 Richard Sandiford <richard.sandiford@arm.com>
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.
3109 2020-01-09 Richard Sandiford <richard.sandiford@arm.com>
3111 * config/aarch64/iterators.md (SVE_WHILE): Add UNSPEC_WHILERW
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.
3121 2020-01-09 Richard Sandiford <richard.sandiford@arm.com>
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.
3137 2020-01-09 Richard Sandiford <richard.sandiford@arm.com>
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.
3146 2020-01-09 Richard Sandiford <richard.sandiford@arm.com>
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.
3156 2020-01-09 Richard Sandiford <richard.sandiford@arm.com>
3158 * config/aarch64/iterators.md (addsub): New code attribute.
3159 * config/aarch64/aarch64-simd.md (aarch64_<su_optab><optab><mode>):
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>):
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.
3176 2020-01-09 Richard Sandiford <richard.sandiford@arm.com>
3178 * config/aarch64/iterators.md (SRHSUB, URHSUB): Delete.
3179 (HADDSUB, sur, addsub): Remove them.
3181 2020-01-09 Richard Sandiford <richard.sandiford@arm.com>
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.
3187 2020-01-09 Richard Sandiford <richard.sandiford@arm.com>
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
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.
3202 2020-01-09 Martin Jambor <mjambor@suse.cz>
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
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
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.
3254 2020-01-09 Martin Liska <mliska@suse.cz>
3256 * params.opt: Set Optimization for
3257 param_max_speculative_devirt_maydefs.
3259 2020-01-09 Martin Sebor <msebor@redhat.com>
3263 * builtins.c (compute_objsize): Avoid handling MEM_REFs of vector type.
3265 2020-01-09 Martin Liska <mliska@suse.cz>
3267 * auto-profile.c (auto_profile): Use opt_for_fn
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.
3290 2020-01-09 Richard Biener <rguenther@suse.de>
3293 * gimplify.c (gimplify_expr): Deal with NOP definitions.
3295 2020-01-09 Richard Biener <rguenther@suse.de>
3297 PR tree-optimization/93040
3298 * gimple-ssa-store-merging.c (find_bswap_or_nop): Raise search limit.
3300 2020-01-09 Georg-Johann Lay <avr@gjlay.de>
3302 * common/config/avr/avr-common.c (avr_option_optimization_table)
3303 [OPT_LEVELS_1_PLUS]: Set -fsplit-wide-types-early.
3305 2020-01-09 Martin Liska <mliska@suse.cz>
3307 * cgraphclones.c (symbol_table::materialize_all_clones):
3308 Use cgraph_node::dump_name.
3310 2020-01-09 Jakub Jelinek <jakub@redhat.com>
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.
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
3328 2020-01-08 David Malcolm <dmalcolm@redhat.com>
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.
3336 2020-01-08 David Malcolm <dmalcolm@redhat.com>
3338 * sbitmap.h (auto_sbitmap): Add operator const_sbitmap.
3340 2020-01-08 Jim Wilson <jimw@sifive.com>
3342 * config/riscv/riscv.c (riscv_legitimize_tls_address): Ifdef out
3343 use of TLS_MODEL_LOCAL_EXEC when not pic.
3345 2020-01-08 David Malcolm <dmalcolm@redhat.com>
3347 * hash-map-tests.c (selftest::test_map_of_strings_to_int): Fix
3350 2020-01-08 Jakub Jelinek <jakub@redhat.com>
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.
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].
3363 2020-01-08 Martin Liska <mliska@suse.cz>
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.
3408 2020-01-08 Richard Biener <rguenther@suse.de>
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.
3417 2020-01-08 Georg-Johann Lay <avr@gjlay.de>
3420 * doc/invoke.texi (AVR Options) <-nodevicespecs>: Document.
3422 2019-01-08 Richard Biener <rguenther@suse.de>
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.
3434 2020-01-08 Martin Liska <mliska@suse.cz>
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.
3440 2020-01-08 Martin Liska <mliska@suse.cz>
3442 * cgraph.c (cgraph_node::dump): Use systematically
3445 2020-01-08 Georg-Johann Lay <avr@gjlay.de>
3447 Add -nodevicespecs option for avr.
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.
3455 2020-01-08 Georg-Johann Lay <avr@gjlay.de>
3457 Implement 64-bit double functions for avr.
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.
3471 2020-01-08 Richard Earnshaw <rearnsha@arm.com>
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.
3478 2020-01-08 Feng Xue <fxue@os.amperecomputing.com>
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.
3486 2020-01-08 Luo Xiong Hu <luoxhu@linux.ibm.com>
3488 * ipa-inline.c (caller_growth_limits): Restore the AND.
3490 2020-01-07 Andrew Stubbs <ams@codesourcery.com>
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
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.
3516 2020-01-07 Andrew Stubbs <ams@codesourcery.com>
3518 * config/gcn/constraints.md (DA): Update description and match.
3520 (Db): New constraint.
3521 * config/gcn/gcn-protos.h (gcn_inline_constant64_p): Add second
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.
3542 2020-01-07 Andre Vieira <andre.simoesdiasvieira@arm.com>
3544 * doc/sourcebuild.texi (arm_little_endian, arm_nothumb): Documented
3545 existing target checks.
3547 2020-01-07 Richard Biener <rguenther@suse.de>
3549 * doc/install.texi: Bump minimal supported MPC version.
3551 2020-01-07 Richard Sandiford <richard.sandiford@arm.com>
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.
3561 2020-01-07 Richard Sandiford <richard.sandiford@arm.com>
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.
3585 2020-01-07 Jakub Jelinek <jakub@redhat.com>
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.
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.
3595 2020-01-07 Martin Liska <mliska@suse.cz>
3597 * params.opt: Add Optimization for various parameters.
3599 2020-01-07 Martin Liska <mliska@suse.cz>
3602 * doc/extend.texi: Explain cloning for target_clone
3605 2020-01-07 Martin Liska <mliska@suse.cz>
3607 PR tree-optimization/92860
3608 * common.opt: Make in Optimization option
3609 as it is affected by -O0, which is an Optimization
3611 * tree-inline.c (tree_inlinable_function_p):
3612 Use opt_for_fn for warn_inline.
3613 (expand_call_inline): Likewise.
3615 2020-01-07 Martin Liska <mliska@suse.cz>
3617 PR tree-optimization/92860
3618 * common.opt: Make flag_ree as optimization
3621 2020-01-07 Martin Liska <mliska@suse.cz>
3623 PR optimization/92860
3624 * params.opt: Mark param_min_crossjump_insns with Optimization
3627 2020-01-07 Luo Xiong Hu <luoxhu@linux.ibm.com>
3629 * ipa-inline-analysis.c (estimate_growth): Fix typo.
3630 * ipa-inline.c (caller_growth_limits): Use OR instead of AND.
3632 2020-01-06 Michael Meissner <meissner@linux.ibm.com>
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.
3639 * config/rs6000/constraints.md (Q constraint): Update
3641 * doc/md.texi (RS/6000 constraints): Update 'Q' cosntraint
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
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.
3653 * config/rs6000/rs6000.c (rs6000_adjust_vec_address): Add support
3654 for the offset being 34-bits when -mcpu=future is used.
3656 2020-01-06 John David Anglin <danglin@gcc.gnu.org>
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.
3663 2020-01-06 Richard Sandiford <richard.sandiford@arm.com>
3665 * tree-vect-slp.c (vect_build_slp_tree_1): Require all shifts
3666 in an IFN_DIV_POW2 node to be equal.
3668 2020-01-06 Richard Sandiford <richard.sandiford@arm.com>
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.
3676 2020-01-06 Andrew Stubbs <ams@codesourcery.com>
3678 * config/gcn/gcn-valu.md (subv64di3): Use separate alternatives for
3679 '0' matching inputs.
3680 (subv64di3_exec): Likewise.
3682 2020-01-06 Bryan Stenson <bryan@siliconvortex.com>
3684 * config/mips/mips.c (vr4130_align_insns): Fix typo.
3685 * doc/md.texi (movstr): Likewise.
3687 2020-01-06 Andrew Stubbs <ams@codesourcery.com>
3689 * config/gcn/gcn-valu.md (vec_extract<mode><scalar_mode>): Add early
3692 2020-01-06 Richard Sandiford <richard.sandiford@arm.com>
3694 * config/aarch64/t-aarch64 ($(srcdir)/config/aarch64/aarch64-tune.md):
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.
3700 2020-01-06 Richard Sandiford <richard.sandiford@arm.com>
3702 * config/aarch64/aarch64-sve.md (@aarch64_sel_dup<mode>): Use Upl
3703 rather than Upa for CPY /M.
3705 2020-01-06 Andrew Stubbs <ams@codesourcery.com>
3707 * config/gcn/gcn.c (gcn_inline_constant_p): Allow 64 as an inline
3710 2020-01-06 Martin Liska <mliska@suse.cz>
3712 PR tree-optimization/92860
3713 * params.opt: Mark param_max_combine_insns with Optimization
3716 2020-01-05 Jakub Jelinek <jakub@redhat.com>
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
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.
3736 2020-01-03 Konstantin Kharlamov <Hi-Angel@yandex.ru>
3738 * gdbinit.in (pr, prl, pt, pct, pgg, pgq, pgs, pge, pmz, pdd, pbs, pbm):
3739 Use "call" instead of "set".
3741 2020-01-03 Martin Jambor <mjambor@suse.cz>
3744 * ipa-cp.c (print_all_lattices): Skip functions without info.
3746 2020-01-03 Jakub Jelinek <jakub@redhat.com>
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.
3755 * config/i386/i386.opt (x_prefer_vector_width_type): Remove TargetSave
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.
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.
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
3778 2020-01-02 Dennis Zhang <dennis.zhang@arm.com>
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.
3797 2020-01-02 Jakub Jelinek <jakub@redhat.com>
3800 * predict.c (compute_function_frequency): Don't call
3801 warn_function_cold on functions that already have cold attribute.
3803 2020-01-01 John David Anglin <danglin@gcc.gnu.org>
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.
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
3815 * config/pa/predicates.md (cmpib_comparison_operator): Remove.
3817 2020-01-01 Jakub Jelinek <jakub@redhat.com>
3819 Update copyright years.
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.
3834 2020-01-01 Jan Hubicka <hubicka@ucw.cz>
3836 * ipa.c (walk_polymorphic_call_targets): Fix updating of overall
3839 2020-01-01 Jakub Jelinek <jakub@redhat.com>
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.
3848 Copyright (C) 2020 Free Software Foundation, Inc.
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.