testsuite: localclass2 require LTO
[official-gcc.git] / gcc / ChangeLog
blob64743bc0642db82cb9021f2154d87f918c9a590b
1 2020-11-20  Michael Meissner  <meissner@linux.ibm.com>
3         * config/rs6000/rs6000-call.c (rs6000_expand_builtin): Add missing
4         XSCMP* cases for IEEE 128-bit long double.
6 2020-11-20  Jason Merrill  <jason@redhat.com>
8         PR c++/97918
9         * dwarf2out.c (dwarf2out_early_finish): flush_limbo_die_list
10         after gen_scheduled_generic_parms_dies.
12 2020-11-20  Martin Sebor  <msebor@redhat.com>
14         PR middle-end/97879
15         * tree-core.h (enum attribute_flags): Add ATTR_FLAG_INTERNAL.
17 2020-11-20  Jan Hubicka  <jh@suse.cz>
19         * ipa-icf-gimple.c (func_checker::hash_operand): Improve hashing of
20         decls.
22 2020-11-20  Jan Hubicka  <jh@suse.cz>
24         * ipa-icf-gimple.c (func_checker::compare_decl): Do not compare types
25         of local variables.
27 2020-11-20  Nathan Sidwell  <nathan@acm.org>
29         * doc/invoke.texi: Replace a couple of @code with @command
31 2020-11-20  Tamar Christina  <tamar.christina@arm.com>
33         * tree-vect-slp.c (vectorizable_slp_permutation): Update types on nodes
34         when needed.
36 2020-11-20  Richard Biener  <rguenther@suse.de>
38         * tree-vect-slp.c (maybe_push_to_hybrid_worklist): New function.
39         (vect_detect_hybrid_slp): Use it.  Perform a backward walk
40         over the IL.
42 2020-11-20  Richard Biener  <rguenther@suse.de>
44         * tree-vect-slp.c (vect_print_slp_tree): Also dump
45         SLP_TREE_REPRESENTATIVE.
47 2020-11-20  Jakub Jelinek  <jakub@redhat.com>
49         PR libstdc++/88101
50         * builtins.def (BUILT_IN_CLEAR_PADDING): New built-in function.
51         * gimplify.c (gimplify_call_expr): Rewrite single argument
52         BUILT_IN_CLEAR_PADDING into two-argument variant.
53         * gimple-fold.c (clear_padding_unit, clear_padding_buf_size): New
54         const variables.
55         (struct clear_padding_struct): New type.
56         (clear_padding_flush, clear_padding_add_padding,
57         clear_padding_emit_loop, clear_padding_type,
58         clear_padding_union, clear_padding_real_needs_padding_p,
59         clear_padding_type_may_have_padding_p,
60         gimple_fold_builtin_clear_padding): New functions.
61         (gimple_fold_builtin): Handle BUILT_IN_CLEAR_PADDING.
62         * doc/extend.texi (__builtin_clear_padding): Document.
64 2020-11-20  Jakub Jelinek  <jakub@redhat.com>
66         PR target/97528
67         * config/arm/arm.c (neon_vector_mem_operand): For POST_MODIFY, require
68         first POST_MODIFY operand is a REG and is equal to the first operand
69         of PLUS.
71 2020-11-20  Eric Botcazou  <ebotcazou@adacore.com>
73         * gimple-ssa-store-merging.c (struct merged_store_group): Add
74         new 'consecutive' field.
75         (merged_store_group): Set it to true.
76         (do_merge): Set it to false if the store is not consecutive and
77         set string_concatenation to false in this case.
78         (merge_into): Call do_merge on entry.
79         (merge_overlapping): Likewise.
81 2020-11-20  Jan Hubicka  <jh@suse.cz>
83         * ipa-icf-gimple.c (func_checker::operand_equal_p): Fix comment.
85 2020-11-20  Jan Hubicka  <jh@suse.cz>
87         * ipa-icf-gimple.c (func_checker::hash_operand): Hash gimple clobber.
88         (func_checker::operand_equal_p): Special case gimple clobber.
90 2020-11-20  Uroš Bizjak  <ubizjak@gmail.com>
92         PR target/97873
93         * config/i386/i386.md (*neg<mode>2_2): Rename from
94         "*neg<mode>2_cmpz".  Use CCGOCmode instead of CCZmode.
95         (*negsi2_zext): Rename from *negsi2_cmpz_zext.
96         Use CCGOCmode instead of CCZmode.
97         (*neg<mode>_ccc_1): New insn pattern.
98         (*neg<dwi>2_doubleword): Use *neg<mode>_ccc_1.
99         (abs<mode>2): Add FLAGS_REG clobber.
100         Use TARGET_CMOVE insn predicate.
101         (*abs<mode>2_1): New insn_and_split pattern.
102         (*absdi2_doubleword): Ditto.
103         (<maxmin:code><mode>3): Use SWI48x mode iterator.
104         (*<maxmin:code><mode>3): Use SWI48 mode iterator.
105         * config/i386/i386-features.c
106         (general_scalar_chain::compute_convert_gain): Handle ABS code.
107         (general_scalar_chain::convert_insn): Ditto.
108         (general_scalar_to_vector_candidate_p): Ditto.
110 2020-11-20  Jakub Jelinek  <jakub@redhat.com>
112         PR other/97911
113         * configure.ac: In SERIAL_LIST use lang words without .serial
114         suffix.  Change $lang.prev from a target to variable and instead
115         of depending on *.serial expand to the *.serial variable if
116         the word is in the SERIAL_LIST at all, otherwise to nothing.
117         * configure: Regenerated.
119 2020-11-20  Kewen Lin  <linkw@linux.ibm.com>
121         * config/rs6000/rs6000.md (p8_mtvsrd_df): Fix insn type.
123 2020-11-20  Martin Uecker  <muecker@gwdg.de>
125         * gimplify.c (gimplify_modify_expr_rhs): Optimizie
126         NOP_EXPRs that contain compound literals.
128 2020-11-19  Jakub Jelinek  <jakub@redhat.com>
130         PR tree-optimization/91029
131         * range-op.cc (operator_trunc_mod::op1_range): Don't require signed
132         types, nor require that op2 >= 0.  Implement (a % b) >= x && x > 0
133         implies a >= x and (a % b) <= x && x < 0 implies a <= x.
134         (operator_trunc_mod::op2_range): New method.
136 2020-11-19  Andrew MacLeod  <amacleod@redhat.com>
138         PR tree-optimization/93781
139         * range-op.cc (get_shift_range): Rename from
140         undefined_shift_range_check and now return valid shift ranges.
141         (operator_lshift::fold_range): Use result from get_shift_range.
142         (operator_rshift::fold_range): Ditto.
144 2020-11-19  Jan Hubicka  <jh@suse.cz>
146         * fold-const.c (operand_compare::operand_equal_p): Fix thinko in
147         COMPONENT_REF handling and guard types_same_for_odr by
148         virtual_method_call_p.
149         (operand_compare::hash_operand): Likewise.
151 2020-11-19  Jakub Jelinek  <jakub@redhat.com>
153         PR c/97860
154         * tree.c (array_type_nelts): For complete arrays with zero min
155         and NULL max and zero size return -1.
157 2020-11-19  Nathan Sidwell  <nathan@acm.org>
159         * configure.ac: Add tests for fstatat, sighandler_t, O_CLOEXEC,
160         unix-domain and ipv6 sockets.
161         * config.in: Rebuilt.
162         * configure: Rebuilt.
164 2020-11-19  Dimitar Dimitrov  <dimitar@dinux.eu>
166         * config/pru/alu-zext.md: Add lmbd patterns for zero_extend
167         variants.
168         * config/pru/pru.c (enum pru_builtin): Add HALT and LMBD.
169         (pru_init_builtins): Ditto.
170         (pru_builtin_decl): Ditto.
171         (pru_expand_builtin): Ditto.
172         * config/pru/pru.h (CLZ_DEFINED_VALUE_AT_ZERO): Define PRU
173         value for CLZ with zero value parameter.
174         * config/pru/pru.md: Add halt, lmbd and clz patterns.
175         * doc/extend.texi: Document PRU builtins.
177 2020-11-19  Richard Sandiford  <richard.sandiford@arm.com>
179         * doc/invoke.texi (-fvect-cost-model): Add a very-cheap model.
180         * common.opt (fvect-cost-model=): Add very-cheap as a possible option.
181         (fsimd-cost-model=): Likewise.
182         (vect_cost_model): Add very-cheap.
183         * flag-types.h (vect_cost_model): Add VECT_COST_MODEL_VERY_CHEAP.
184         Put the values in order of increasing aggressiveness.
185         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Use
186         range checks when comparing against VECT_COST_MODEL_CHEAP.
187         (vect_prune_runtime_alias_test_list): Do not allow any alias
188         checks for the very-cheap cost model.
189         * tree-vect-loop.c (vect_analyze_loop_costing): Do not allow
190         any peeling for the very-cheap cost model.  Also require one
191         iteration of the vector loop to pay for itself.
193 2020-11-19  Wilco Dijkstra  <wdijkstr@arm.com>
195         * config/aarch64/aarch64.c (neoversen1_tunings): Use new
196         cortexa76_extra_costs.
197         (neoversev1_tunings): Likewise.
198         (neoversen2_tunines): Likewise.
199         * config/arm/aarch-cost-tables.h (cortexa76_extra_costs):
200         add new costs.
202 2020-11-19  Wilco Dijkstra  <wdijkstr@arm.com>
204         * config/aarch64/aarch64.c (aarch64_expand_cpymem): Cleanup code and
205         comments, tweak expansion decisions and improve tail expansion.
207 2020-11-19  Richard Biener  <rguenther@suse.de>
209         * fold-const.c (operand_compare::hash_operand): Fix typo.
211 2020-11-19  Richard Biener  <rguenther@suse.de>
213         * tree-ssa-reassoc.c (get_rank): Refactor to consistently
214         use the cache and dump ranks assigned.
216 2020-11-19  Jan Hubicka  <jh@suse.cz>
218         * fold-const.c (operand_compare::operand_equal_p): More OBJ_TYPE_REF
219         matching to correct place; drop OEP_ADDRESS_OF for TOKEN, OBJECT and
220         class.
221         (operand_compare::hash_operand): Hash ODR type for OBJ_TYPE_REF.
223 2020-11-19  Joel Hutton  <joel.hutton@arm.com>
225         * config/aarch64/aarch64-simd.md: Add vec_widen_lshift_hi/lo<mode>
226         patterns.
227         * tree-vect-stmts.c (vectorizable_conversion): Fix for widen_lshift
228         case.
230 2020-11-19  Joel Hutton  <joel.hutton@arm.com>
232         * doc/generic.texi: Document new widen_plus/minus_lo/hi tree codes.
233         * doc/md.texi: Document new widenening add/subtract hi/lo optabs.
234         * expr.c (expand_expr_real_2): Add widen_add, widen_subtract cases.
235         * optabs-tree.c (optab_for_tree_code): Add case for widening optabs.
236         * optabs.def (OPTAB_D): Define vectorized widen add, subtracts.
237         * tree-cfg.c (verify_gimple_assign_binary): Add case for widening adds,
238         subtracts.
239         * tree-inline.c (estimate_operator_cost): Add case for widening adds,
240         subtracts.
241         * tree-vect-generic.c (expand_vector_operations_1): Add case for
242         widening adds, subtracts
243         * tree-vect-patterns.c (vect_recog_widen_add_pattern): New recog
244         pattern.
245         (vect_recog_widen_sub_pattern): New recog pattern.
246         (vect_recog_average_pattern): Update widened add code.
247         (vect_recog_average_pattern): Update widened add code.
248         * tree-vect-stmts.c (vectorizable_conversion): Add case for widened add,
249         subtract.
250         (supportable_widening_operation): Add case for widened add, subtract.
251         * tree.def
252         (WIDEN_PLUS_EXPR): New tree code.
253         (WIDEN_MINUS_EXPR): New tree code.
254         (VEC_WIDEN_ADD_HI_EXPR): New tree code.
255         (VEC_WIDEN_PLUS_LO_EXPR): New tree code.
256         (VEC_WIDEN_MINUS_HI_EXPR): New tree code.
257         (VEC_WIDEN_MINUS_LO_EXPR): New tree code.
259 2020-11-19  Joel Hutton  <joel.hutton@arm.com>
261         * config/aarch64/aarch64-simd.md: New patterns
262         vec_widen_saddl_lo/hi_<mode>.
264 2020-11-19  Richard Biener  <rguenther@suse.de>
266         PR tree-optimization/97901
267         * tree-ssa-propagate.c (clean_up_loop_closed_phi): Compute
268         dominators and use replace_uses_by.
270 2020-11-19  Eric Botcazou  <ebotcazou@adacore.com>
272         * dwarf2out.h (struct fixed_point_type_info) <scale_factor>: Turn
273         numerator and denominator into a tree.
274         * dwarf2out.c (base_type_die): In the case of a fixed-point type
275         with arbitrary scale factor, call add_scalar_info on numerator and
276         denominator to emit the appropriate attributes.
278 2020-11-19  Richard Biener  <rguenther@suse.de>
280         PR tree-optimization/97897
281         * tree-complex.c (complex_propagate::visit_stmt): Make sure
282         abnormally used SSA names are VARYING.
283         (complex_propagate::visit_phi): Likewise.
284         * tree-ssa.c (verify_phi_args): Verify PHI arguments on abnormal
285         edges are SSA names.
287 2020-11-19  Uroš Bizjak  <ubizjak@gmail.com>
289         * config/i386/i386.md (*<absneg:code><mode>2_i387_1):
290         Disable for TARGET_SSE_MATH modes.
292 2020-11-19  Jeff Law  <law@redhat.com>
294         * config/h8300/constraints.md (R constraint): Add argument to call
295         to h8300_shift_needs_scratch_p.
296         (S and T constraints): Similary.
297         * config/h8300/h8300-protos.h: Update h8300_shift_needs_scratch_p
298         prototype.
299         * config/h8300/h8300.c (expand_a_shift): Emit a different pattern
300         if the shift does not require a scratch register.
301         (h8300_shift_needs_scratch_p): Refine to be more accurate.
302         * config/h8300/shiftrotate.md (shiftqi_noscratch): New pattern.
303         (shifthi_noscratch, shiftsi_noscratch): Similarly.
305 2020-11-18  Roger Sayle  <roger@nextmovesoftware.com>
307         PR middle-end/85811
308         * fold-const.c (tree_expr_finite_p): New function to test whether
309         a tree expression must be finite, i.e. not a FP NaN or infinity.
310         (tree_expr_infinite_p):  New function to test whether a tree
311         expression must be infinite, i.e. a FP infinity.
312         (tree_expr_maybe_infinite_p): New function to test whether a tree
313         expression may be infinite, i.e. a FP infinity.
314         (tree_expr_signaling_nan_p): New function to test whether a tree
315         expression must evaluate to a signaling NaN (sNaN).
316         (tree_expr_maybe_signaling_nan_p): New function to test whether a
317         tree expression may be a signaling NaN (sNaN).
318         (tree_expr_nan_p): New function to test whether a tree expression
319         must evaluate to a (quiet or signaling) NaN.
320         (tree_expr_maybe_nan_p): New function to test whether a tree
321         expression me be a (quiet or signaling) NaN.
322         (tree_binary_nonnegative_warnv_p) [MAX_EXPR]: In the presence
323         of NaNs, MAX_EXPR is only guaranteed to be non-negative, if both
324         operands are non-negative.
325         (tree_call_nonnegative_warnv_p) [CASE_CFN_FMAX,CASE_CFN_FMAX_FN]:
326         In the presence of signaling NaNs, fmax is only guaranteed to be
327         non-negative if both operands are negative.  In the presence of
328         quiet NaNs, fmax is non-negative if either operand is non-negative
329         and not a qNaN, or both operands are non-negative.
330         * fold-const.h (tree_expr_finite_p, tree_expr_infinite_p,
331         tree_expr_maybe_infinite_p, tree_expr_signaling_nan_p,
332         tree_expr_maybe_signaling_nan_p, tree_expr_nan_p,
333         tree_expr_maybe_nan_p): Prototype new functions here.
334         * builtins.c (fold_builtin_classify) [BUILT_IN_ISINF]: Fold to
335         a constant if argument is known to be (or not to be) an Infinity.
336         [BUILT_IN_ISFINITE]: Fold to a constant if argument is known to
337         be (or not to be) finite.
338         [BUILT_IN_ISNAN]: Fold to a constant if argument is known to be
339         (or not to be) a NaN.
340         (fold_builtin_fpclassify): Check tree_expr_maybe_infinite_p and
341         tree_expr_maybe_nan_p instead of HONOR_INFINITIES and HONOR_NANS
342         respectively.
343         (fold_builtin_unordered_cmp): Fold UNORDERED_EXPR to a constant
344         when its arguments are known to be (or not be) NaNs.  Check
345         tree_expr_maybe_nan_p instead of HONOR_NANS when choosing between
346         unordered and regular forms of comparison operators.
347         * match.pd (ordered(x,y)->true/false): Constant fold ORDERED_EXPR
348         if its operands are known to be (or not to be) NaNs.
349         (unordered(x,y)->true/false): Constant fold UNORDERED_EXPR if its
350         operands are known to be (or not to be) NaNs.
351         (sqrt(x)*sqrt(x)->x): Check tree_expr_maybe_signaling_nan_p instead
352         of HONOR_SNANS.
354 2020-11-18  Jakub Jelinek  <jakub@redhat.com>
356         PR tree-optimization/91029
357         PR tree-optimization/97888
358         * range-op.cc (operator_trunc_mod::op1_range): Only set op1
359         range to >= 0 if lhs is > 0, rather than >= 0.  Fix up comments.
361 2020-11-18  Jakub Jelinek  <jakub@redhat.com>
363         * opts.h (struct cl_var): New type.
364         (cl_vars): Declare.
365         * optc-gen.awk: Generate cl_vars array.
367 2020-11-18  Eugene Rozenfeld  <Eugene.Rozenfeld@microsoft.com>
369         PR tree-optimization/96671
370         * match.pd (three xor patterns): New patterns.
372 2020-11-18  Jakub Jelinek  <jakub@redhat.com>
374         * optc-save-gen.awk: Initialize var_opt_init.  In
375         cl_optimization_stream_out for params with default values larger than
376         10, xor the default value with the actual parameter value.  In
377         cl_optimization_stream_in repeat the above xor.
379 2020-11-18  Jakub Jelinek  <jakub@redhat.com>
381         * configure.ac: Add $lang.prev rules, INDEX.$lang and SERIAL_LIST and
382         SERIAL_COUNT variables to Make-hooks.
383         (--enable-link-serialization): New configure option.
384         * Makefile.in (DO_LINK_SERIALIZATION, LINK_PROGRESS): New variables.
385         * doc/install.texi (--enable-link-serialization): Document.
386         * configure: Regenerated.
388 2020-11-18  Vladimir Makarov  <vmakarov@redhat.com>
390         PR target/97870
391         * lra-constraints.c (curr_insn_transform): Do not delete asm goto
392         with wrong constraints.  Nullify it saving CFG.
394 2020-11-18  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
396         * config/msp430/msp430.md (mulhi3): New.
397         (mulsi3): New.
398         (mulsidi3): Rename to *mulsidi3_inline.
399         (umulsidi3): Rename to *umulsidi3_inline.
400         (mulsidi3): New define_expand.
401         (umulsidi3): New define_expand.
403 2020-11-18  Richard Biener  <rguenther@suse.de>
405         PR tree-optimization/97886
406         * tree-vect-loop.c (vectorizable_lc_phi): Properly assign
407         vector types to invariants for SLP.
409 2020-11-18  Iain Buclaw  <ibuclaw@gdcproject.org>
411         * config.gcc (*-*-dragonfly*): Add dragonfly-d.o and t-dragonfly.
412         * config/dragonfly-d.c: New file.
413         * config/t-dragonfly: New file.
415 2020-11-18  Jakub Jelinek  <jakub@redhat.com>
417         PR middle-end/97862
418         * omp-expand.c (expand_omp_for_init_vars): Don't use the sqrt path
419         if number of iterations is constant 0.
421 2020-11-18  Kito Cheng  <kito.cheng@sifive.com>
423         * common/config/riscv/riscv-common.c (riscv_ext_version): New.
424         (riscv_ext_version_table): Ditto.
425         (get_default_version): Ditto.
426         (riscv_subset_t::implied_p): New field.
427         (riscv_subset_t::riscv_subset_t): Init implied_p.
428         (riscv_subset_list::add): New.
429         (riscv_subset_list::handle_implied_ext): Pass riscv_subset_t
430         instead of separated argument.
431         (riscv_subset_list::to_string): Handle zifencei and zicsr, and
432         omit version if version is unknown.
433         (riscv_subset_list::parsing_subset_version): New argument `ext`,
434         remove default_major_version and default_minor_version, get
435         default version info via get_default_version.
436         (riscv_subset_list::parse_std_ext): Update argument for
437         parsing_subset_version calls.
438         Handle 2.2 ISA spec, always enable zicsr and zifencei, they are
439         included in baseline ISA in that time.
440         (riscv_subset_list::parse_multiletter_ext): Update argument for
441         `parsing_subset_version` and `add` calls.
442         (riscv_subset_list::parse): Adjust argument for
443         riscv_subset_list::handle_implied_ext call.
444         * config.gcc (riscv*-*-*): Handle --with-isa-spec=.
445         * config.in (HAVE_AS_MISA_SPEC): New.
446         (HAVE_AS_MARCH_ZIFENCEI): Ditto.
447         * config/riscv/riscv-opts.h (riscv_isa_spec_class): New.
448         (riscv_isa_spec): Ditto.
449         * config/riscv/riscv.h (HAVE_AS_MISA_SPEC): New.
450         (ASM_SPEC): Pass -misa-spec if gas supported.
451         * config/riscv/riscv.opt (riscv_isa_spec_class) New.
452         * configure.ac (HAVE_AS_MARCH_ZIFENCEI): New test.
453         (HAVE_AS_MISA_SPEC): Ditto.
454         * configure: Regen.
456 2020-11-18  Kito Cheng  <kito.cheng@sifive.com>
458         * common/config/riscv/riscv-common.c (riscv_implied_info):
459         d and f implied zicsr.
460         (riscv_ext_flag_table): Handle zicsr and zifencei.
461         * config/riscv/riscv-opts.h (MASK_ZICSR): New.
462         (MASK_ZIFENCEI): Ditto.
463         (TARGET_ZICSR): Ditto.
464         (TARGET_ZIFENCEI): Ditto.
465         * config/riscv/riscv.md (clear_cache): Check TARGET_ZIFENCEI.
466         (fence_i): Ditto.
467         * config/riscv/riscv.opt (riscv_zi_subext): New.
469 2020-11-18  Kito Cheng  <kito.cheng@sifive.com>
471         * common/config/riscv/riscv-common.c (single_letter_subset_rank): New.
472         (multi_letter_subset_rank): Ditto.
473         (subset_cmp): Ditto.
474         (riscv_subset_list::add): Insert subext in canonical ordering.
475         (riscv_subset_list::parse_std_ext): Move handle_implied_ext to ...
476         (riscv_subset_list::parse): ... here.
478 2020-11-18  Jiufu Guo   <guojiufu@linux.ibm.com>
480         * cfgloop.h (loop_optimizer_finalize): Add flag argument.
481         * loop-init.c (loop_optimizer_finalize): Call clean_up_loop_closed_phi.
482         * tree-cfgcleanup.h (clean_up_loop_closed_phi): New declare.
483         * tree-ssa-loop.c (tree_ssa_loop_done): Call loop_optimizer_finalize
484         with flag argument.
485         * tree-ssa-propagate.c (clean_up_loop_closed_phi): New function.
487 2020-11-17  Sebastian Pop  <spop@amazon.com>
489         * config.gcc: add configure flags --with-{cpu,arch,tune}-{32,64}
490         as alias flags for --with-{cpu,arch,tune} on AArch64.
491         * doc/install.texi: Document new flags for aarch64.
493 2020-11-17  Sebastian Pop  <spop@amazon.com>
495         * config.gcc: Add --with-tune to AArch64 configure flags.
497 2020-11-17  Andrew MacLeod  <amacleod@redhat.com>
499         PR tree-optimization/91029
500         * range-op.cc (operator_trunc_mod::op1_range): New.
502 2020-11-17  Jan Hubicka  <jh@suse.cz>
504         * ipa-icf.c (sem_function::hash_stmt): Fix conditional on
505         variably_modified_type_p.
507 2020-11-17  Nathan Sidwell  <nathan@acm.org>
509         * tree.h (cache_integer_cst): Add defaulted might_duplicate parm.
510         * tree.c (cache_integer_cst): Return the integer cst, add
511         might_duplicate parm to permit finding a small duplicate.
513 2020-11-17  Andrew MacLeod  <amacleod@redhat.com>
515         PR tree-optimization/83072
516         * range-op.cc (wi_optimize_and_or): Remove zero from IOR range when
517         mask is non-zero.
519 2020-11-17  Joseph Myers  <joseph@codesourcery.com>
521         * ginclude/float.h (CR_DECIMAL_DIG): Also define for
522         [__STDC_WANT_IEC_60559_EXT__].
524 2020-11-17  Joseph Myers  <joseph@codesourcery.com>
526         * ginclude/float.h [__STDC_VERSION__ > 201710L] (FLT_IS_IEC_60559,
527         DBL_IS_IEC_60559, LDBL_IS_IEC_60559): New macros.
529 2020-11-17  Aaron Sawdey  <acsawdey@linux.ibm.com>
531         PR target/96791
532         * mode-classes.def: Add MODE_OPAQUE.
533         * machmode.def: Add OPAQUE_MODE.
534         * tree.def: Add OPAQUE_TYPE for types that will use
535         MODE_OPAQUE.
536         * doc/generic.texi: Document OPAQUE_TYPE.
537         * doc/rtl.texi: Document MODE_OPAQUE.
538         * machmode.h: Add OPAQUE_MODE_P().
539         * genmodes.c (complete_mode): Add MODE_OPAQUE.
540         (opaque_mode): New function.
541         * tree.c (tree_code_size): Add OPAQUE_TYPE.
542         * tree.h: Add OPAQUE_TYPE_P().
543         * stor-layout.c (int_mode_for_mode): Treat MODE_OPAQUE modes
544         like BLKmode.
545         * ira.c (find_moveable_pseudos): Treat MODE_OPAQUE modes more
546         like integer/float modes here.
547         * dbxout.c (dbxout_type): Treat OPAQUE_TYPE like VOID_TYPE.
548         * tree-pretty-print.c (dump_generic_node): Treat OPAQUE_TYPE
549         like like other types.
551 2020-11-17  Jan Hubicka  <hubicka@ucw.cz>
552             Martin Liska  <mliska@suse.cz>
554         * ipa-icf.c: Include data-streamer.h and alias.h.
555         (sem_function::sem_function): Initialize memory_access_types
556         and m_alias_sets_hash.
557         (sem_function::hash_stmt): For memory accesses and when going to
558         do lto streaming add base and ref types into memory_access_types.
559         (sem_item_optimizer::write_summary): Stream memory access types.
560         (sem_item_optimizer::read_section): Likewise and also iniitalize
561         m_alias_sets_hash.
562         (sem_item_optimizer::execute): Call
563         sem_item_optimizer::update_hash_by_memory_access_type.
564         (sem_item_optimizer::update_hash_by_memory_access_type): Updat.
565         * ipa-icf.h (sem_function): Add memory_access_types and
566         m_alias_sets_hash.
568 2020-11-17  Jan Hubicka  <jh@suse.cz>
570         PR bootstrap/97857
571         * ipa-devirt.c (odr_based_tbaa_p): Do not ICE when
572         odr_hash is not initialized
573         * ipa-utils.h (type_with_linkage_p): Do not sanity check
574         CXX_ODR_P.
575         * tree-streamer-out.c (pack_ts_type_common_value_fields): Set
576         CXX_ODR_P according to the canonical type.
578 2020-11-17  Nathan Sidwell  <nathan@acm.org>
580         * langhooks-def.h (LANG_HOOKS_PREPROCESS_MAIN_FILE)
581         (LANG_HOOKS_PREPROCESS_OPTIONS, LANG_HOOKS_PREPROCESS_UNDEF)
582         (LANG_HOOKS_PREPROCESS_TOKEN): New.
583         (LANG_HOOKS_INITIALIZER): Add them.
584         * langhooks.h (struct lang_hooks): Add preprocess_main_file,
585         preprocess_options, preprocess_undef, preprocess_token hooks.  Add
586         enum PT_flags.
588 2020-11-17  Richard Sandiford  <richard.sandiford@arm.com>
590         PR tree-optimization/97693
591         * tree-vect-stmts.c (vectorizable_call): Pass the required vectype
592         to vect_get_vec_defs_for_operand.
594 2020-11-17  Liu Hao  <lh_mouse@126.com>
596         * config/i386/msformat-c.c: Add more length modifiers.
598 2020-11-17  Tamar Christina  <tamar.christina@arm.com>
600         PR driver/97574
601         * gcc.c (convert_filename): Don't add suffix to things that are
602         not files.
603         (not_actual_file_p): Use supplied argument.
605 2020-11-17  Haochen Gui  <guihaoc@gcc.gnu.org>
607         * final.c (final_scan_insn_1): Set jump table relocatable as the
608         second argument of targetm.asm_out.function_rodata_section.
609         * output.h (default_function_rodata_section,
610         default_no_function_rodata_section): Add the second argument to the
611         declarations.
612         * target.def (function_rodata_section): Change the doc and add
613         the second argument.
614         * doc/tm.texi: Regenerate.
615         * varasm.c (jumptable_relocatable): Implement.
616         (default_function_rodata_section): Add the second argument
617         and the support for relocatable read only sections.
618         (default_no_function_rodata_section): Add the second argument.
619         (function_mergeable_rodata_prefix): Set the second argument to false.
620         * config/mips/mips.c (mips_function_rodata_section): Add the second
621         arugment and set it to false.
622         * config/s390/s390.c (targetm.asm_out.function_rodata_section): Set
623         the second argument to false.
624         * config/s390/s390.md: Likewise.
626 2020-11-17  liuhongt  <hongtao.liu@intel.com>
628         PR target/97194
629         * config/i386/i386-expand.c (ix86_expand_vector_set_var): New function.
630         * config/i386/i386-protos.h (ix86_expand_vector_set_var): New Decl.
631         * config/i386/predicates.md (vec_setm_operand): New predicate,
632         true for const_int_operand or register_operand under TARGET_AVX2.
633         * config/i386/sse.md (vec_set<mode>): Support both constant
634         and variable index vec_set.
636 2020-11-17  Martin Sebor  <msebor@redhat.com>
638         * tree-ssa-uninit.c (maybe_warn_operand): Call is_empty_type.
639         * tree.c (default_is_empty_type): Rename...
640         (is_empty_type): ...to this.
641         * tree.h (is_empty_type): Declare.
643 2020-11-17  Martin Sebor  <msebor@redhat.com>
645         PR middle-end/95673
646         * tree-ssa-strlen.c (used_only_for_zero_equality): Rename...
647         (use_in_zero_equality): ...to this.  Add a default argument.
648         (handle_builtin_memcmp): Adjust to the name change above.
649         (handle_builtin_string_cmp): Same.
650         (maybe_warn_pointless_strcmp): Same.  Pass in an explicit argument.
652 2020-11-17  Joseph Myers  <joseph@codesourcery.com>
654         * ginclude/float.h (DEC32_SNAN, DEC64_SNAN, DEC128_SNAN): New C2x
655         macros.
657 2020-11-17  Joseph Myers  <joseph@codesourcery.com>
659         * ginclude/float.h (INFINITY, NAN, FLT_SNAN, DBL_SNAN, LDBL_SNAN)
660         (FLT16_SNAN, FLT32_SNAN, FLT64_SNAN, FLT128_SNAN, FLT32X_SNAN)
661         (FLT64X_SNAN, FLT128X_SNAN, DEC_INFINITY, DEC_NAN): New C2x
662         macros.
663         * doc/sourcebuild.texi (Effective-Target Keywords): Document inff.
665 2020-11-17  Armin Brauns via Gcc-patches  <gcc-patches@gcc.gnu.org>
667         * gcc.c: Document %T spec file directive.
668         * doc/invoke.texi: Remove %p, %P spec file directives.
669         Add %M, %R, %V, %nSTR, %>S, %<S*, %{%:function(args):X}, %@{...} spec
670         file directives add sanitize, version-compare, include, gt and
671         debug-level-gt spec functions.
673 2020-11-16  Roger Sayle  <roger@nextmovesoftware.com>
675         PR rtl-optimization/92180
676         * config/i386/i386.c (ix86_hardreg_mov_ok): New function to
677         determine whether (set DST SRC) should be allowed at this point.
678         * config/i386/i386-protos.h (ix86_hardreg_mov_ok): Prototype here.
679         * config/i386/i386-expand.c (ix86_expand_move): Check whether
680         this is a complex set of a likely spilled hard register, and if
681         so place the value in a pseudo, and load the hard reg from it.
682         * config/i386/i386.md (*movdi_internal, *movsi_internal)
683         (*movhi_internal, *movqi_internal): Make these instructions
684         conditional on ix86_hardreg_mov_ok.
685         (*lea<mode>): Make this define_insn_and_split conditional on
686         ix86_hardreg_mov_ok.
688 2020-11-16  Martin Liska  <mliska@suse.cz>
690         * params.opt: Add missing dot.
692 2020-11-16  Jan Hubicka  <jh@suse.cz>
694         * ipa-modref.c (escape_point): New type.
695         (modref_lattice): New type.
696         (escape_entry): New type.
697         (escape_summary): New type.
698         (escape_summaries_t): New type.
699         (escape_summaries): New static variable.
700         (eaf_flags_useful_p): New function.
701         (modref_summary::useful_p): Add new check_flags
702         attribute; check eaf_flags for usefulness.
703         (modref_summary_lto): Add arg_flags.
704         (modref_summary_lto::useful_p): Add new check_flags
705         attribute; check eaf_flags for usefulness.
706         (dump_modref_edge_summaries): New function.
707         (remove_modref_edge_summaries): New function.
708         (ignore_retval_p): New predicate.
709         (ignore_stores_p): Also ignore for const.
710         (remove_summary): Call remove_modref_edge_summaries.
711         (modref_lattice::init): New member function.
712         (modref_lattice::release): New member unction.
713         (modref_lattice::dump): New member function.
714         (modref_lattice::add_escape_point): New member function.
715         (modref_lattice::merge): Two new member functions.
716         (modref_lattice::merge_deref): New member functions.
717         (modref_lattice::merge_direct_load): New member function.
718         (modref_lattice::merge_direct_store): New member function.
719         (call_lhs_flags): Rename to ...
720         (merge_call_lhs_flags): ... this one; reimplement using
721         modreflattice.
722         (analyze_ssa_name_flags): Replace KNOWN_FLAGS param by LATTICE;
723         add IPA parametr; use modref_lattice.
724         (analyze_parms): New parameter IPA and SUMMARY_LTO; update for
725         modref_lattice; initialize escape_summary.
726         (analyze_function): Allocate escape_summaries; update uses of useful_p.
727         (modref_write_escape_summary): New function.
728         (modref_read_escape_summary): New function.
729         (modref_write): Write escape summary.
730         (read_section): Read escape summary.
731         (modref_read): Initialie escape_summaries.
732         (remap_arg_flags): New function.
733         (update_signature): Use it.
734         (escape_map): New structure.
735         (update_escape_summary_1, update_escape_summary): New functions.
736         (ipa_merge_modref_summary_after_inlining): Merge escape summaries.
737         (propagate_unknown_call): Do not remove useless summaries.
738         (remove_useless_summaries): Remove them here.
739         (modref_propagate_in_scc): Update; do not dump scc.
740         (modref_propagate_dump_scc): New function.
741         (modref_merge_call_site_flags): New function.
742         (modref_propagate_flags_in_scc): New function.
743         (pass_ipa_modref::execute): Use modref_propagate_flags_in_scc
744         and modref_propagate_dump_scc; delete escape_summaries.
745         (ipa_modref_c_finalize):  Remove escape_summaries.
746         * ipa-modref.h (modref_summary): Update prototype of useful_p.
747         * params.opt (param=modref-max-escape-points): New param.
748         * doc/invoke.texi (modref-max-escape-points): Document.
750 2020-11-16  Jan Hubicka  <jh@suse.cz>
752         PR middle-end/97840
753         * ipa-modref.c (analyze_ssa_name_flags): Skip clobbers if inlining
754         is done.
755         * tree-ssa-uninit.c (maybe_warn_pass_by_reference): Make stmt gcall;
756         skip const calls and unused arguments.
757         (warn_uninitialized_vars): Update prototype.
759 2020-11-16  Richard Biener  <rguenther@suse.de>
761         * tree-vectorizer.h (vect_gather_slp_loads): Declare.
762         * tree-vect-loop.c (vect_analyze_loop_2): Call
763         vect_gather_slp_loads.
764         * tree-vect-slp.c (vect_build_slp_instance): Do not gather
765         SLP loads here.
766         (vect_gather_slp_loads): Remove wrapper, new function.
767         (vect_slp_analyze_bb_1): Call it.
769 2020-11-16   Richard Biener  <rguenther@suse.de>
771         * tree-ssa-loop-im.c (analyze_memory_references): Add
772         store_motion parameter and elide unnecessary work.
773         (tree_ssa_lim_initialize): Likewise.
774         (loop_invariant_motion_in_fun): Pass down store_motion.
776 2020-11-16  Martin Liska  <mliska@suse.cz>
778         * params.opt: All modref parameters miss Optimization and Param
779         keyword as seen in testsuite failure.
781 2020-11-16  Jan Hubicka  <jh@suse.cz>
783         * params.opt (-param=modref-max-depth=): Add missing full stop.
785 2020-11-16  Sebastian Huber  <sebastian.huber@embedded-brains.de>
787         * common.opt (fprofile-info-section): New.
788         * coverage.c (build_gcov_info_var_registration): New.
789         (coverage_obj_init): Evaluate profile_info_section and use
790         build_gcov_info_var_registration().
791         * doc/invoke.texi (fprofile-info-section): Document.
792         * opts.c (common_handle_option): Process fprofile-info-section
793         option.
795 2020-11-16  Richard Biener  <rguenther@suse.de>
797         PR tree-optimization/97838
798         * tree-vect-slp.c (vect_slp_build_vertices): Properly handle
799         not backwards reachable cycles.
800         (vect_optimize_slp): Check a node is leaf before marking it
801         visited.
803 2020-11-16  Martin Liska  <mliska@suse.cz>
805         PR tree-optimization/97736
806         * tree-switch-conversion.c (switch_decision_tree::analyze_switch_statement):
807         Prefer bit tests.
809 2020-11-16  Richard Biener  <rguenther@suse.de>
811         PR tree-optimization/97835
812         * tree-vect-loop.c (vectorizable_induction): Convert step
813         scalars rather than step vector.
815 2020-11-16  Richard Biener  <rguenther@suse.de>
817         PR tree-optimization/97830
818         * tree-ssa-sccvn.c (vn_reference_eq): Check for incomplete
819         types before comparing TYPE_SIZE.
821 2020-11-16  Cui,Lili  <lili.cui@intel.com>
823         * config/i386/i386.h: Add PREFETCHW to march=broadwell.
824         * doc/invoke.texi: Put PREFETCHW back to relation arch.
826 2020-11-15  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
828         * config/msp430/msp430.c (msp430_output_labelref): Don't process mspabi
829         hwmult library function names into GCC-style names.
831 2020-11-15  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
833         * config/msp430/msp430.c (msp430_use_16bit_hwmult): New.
834         (use_32bit_hwmult): Rename to..
835         (msp430_use_32bit_hwmult): ..this.
836         (msp430_muldiv_costs): Use msp430_use_16bit_hwmult and
837         msp430_use_32bit_hwmult.
838         (msp430_expand_helper): Use msp430_use_16bit_hwmult and
839         msp430_use_32bit_hwmult.
840         (msp430_output_labelref): Use msp430_use_32bit_hwmult.
842 2020-11-15  Maciej W. Rozycki  <macro@linux-mips.org>
844         * config/vax/vax.c (vax_rtx_costs): Use `rtx_code' rather than
845         `int' for `code'.
847 2020-11-15  Maciej W. Rozycki  <macro@linux-mips.org>
849         * config/vax/vax.c (vax_output_int_add) <E_DImode>: Fix a typo
850         in NO_EXTERNAL_INDIRECT_ADDRESS.
852 2020-11-15  Maciej W. Rozycki  <macro@linux-mips.org>
854         * config/vax/vax.c (vax_output_int_add) <E_SImode>: Also check
855         `operands[2]' for being symbolic with PIC rather than checking
856         `operands[1]' twice.
858 2020-11-15  Aldy Hernandez  <aldyh@redhat.com>
860         * vr-values.c (vr_values::extract_range_builtin): Rename to...
861         (vr_values::extract_range_from_ubsan_builtin): ...this.
862         Remove everything but UBSAN code.
863         (vr_values::extract_range_basic): Call ranger version for
864         everything except UBSAN built-ins.
865         * vr-values.h (class vr_values): Rename extract_range_builtin to
866         extract_range_from_ubsan_builtin.
868 2020-11-15  Vladimir N. Makarov  <vmakarov@redhat.com>
870         * lra.c (lra_process_new_insns): Don't put reload insns in the
871         last empty BB.
873 2020-11-15  Jan Hubicka  <jh@suse.cz>
875         * ipa-modref.c (analyze_ssa_name_flags): Make return to clear
876         EAF_UNUSED flag.
878 2020-11-14  Jan Hubicka  <jh@suse.cz>
880         * gimple.c: Include ipa-modref-tree.h and ipa-modref.h.
881         (gimple_call_arg_flags): Use modref to determine flags.
882         * ipa-modref.c: Include gimple-ssa.h, tree-phinodes.h,
883         tree-ssa-operands.h, stringpool.h and tree-ssanames.h.
884         (analyze_ssa_name_flags): Declare.
885         (modref_summary::useful_p): Summary is also useful if arg flags are
886         known.
887         (dump_eaf_flags): New function.
888         (modref_summary::dump): Use it.
889         (get_modref_function_summary): Be read for current_function_decl
890         being NULL.
891         (memory_access_to): New function.
892         (deref_flags): New function.
893         (call_lhs_flags): New function.
894         (analyze_parms): New function.
895         (analyze_function): Use it.
896         * ipa-modref.h (struct modref_summary): Add arg_flags.
897         * doc/invoke.texi (ipa-modref-max-depth): Document.
898         * params.opt (ipa-modref-max-depth): New param.
900 2020-11-14  Jakub Jelinek  <jakub@redhat.com>
902         PR debug/97599
903         * dwarf2out.c (gen_subprogram_die): Call
904         gen_unspecified_parameters_die even if not early dwarf, but only
905         if subr_die is a newly created DIE.
907 2020-11-14  Monk Chiang  <monk.chiang@sifive.com>
909         PR target/97682
910         * config/riscv/riscv.h (RISCV_PROLOGUE_TEMP_REGNUM): Change register
911         to t0.
912         (RISCV_CALL_ADDRESS_TEMP_REGNUM): New Marco, define t1 register.
913         (RISCV_CALL_ADDRESS_TEMP): Use it for call instructions.
914         * config/riscv/riscv.c (riscv_legitimize_call_address): Use
915         RISCV_CALL_ADDRESS_TEMP.
916         (riscv_compute_frame_info): Change temporary register to t0 form t1.
917         (riscv_trampoline_init): Adjust comment.
919 2020-11-14  Jim Wilson  <jimw@sifive.com>
920             cooper.joshua  <cooper.joshua@linux.alibaba.com>
922         * config/riscv/riscv.c (riscv_asan_shadow_offset): New.
923         (TARGET_ASAN_SHADOW_OFFSET): New.
924         * doc/tm.texi: Regenerated.
925         * target.def (asan_shadow_offset); Mention that it can return zero.
926         * toplev.c (process_options): Check for and handle zero return from
927         targetm.asan_shadow_offset call.
929 2020-11-14  Jakub Jelinek  <jakub@redhat.com>
931         * gimplify.c (gimplify_omp_for): Add OMP_CLAUSE_ALLOCATE_ALLOCATOR
932         decls as firstprivate on task clauses even when allocate clause
933         decl is not lastprivate.
934         * omp-low.c (install_var_field): Don't dereference omp_is_reference
935         types if mask is 33 rather than 1.
936         (scan_sharing_clauses): Populate allocate_map even for task
937         constructs.  For now remove it back for variables mentioned in
938         reduction and in_reduction clauses on task/taskloop constructs
939         or on VLA task firstprivates.  For firstprivate on task construct,
940         install the var field into field_map with by_ref and 33 instead
941         of false and 1 if mentioned in allocate clause.
942         (lower_private_allocate): Set TREE_THIS_NOTRAP on the created
943         MEM_REF.
944         (lower_rec_input_clauses): Handle allocate for task firstprivatized
945         non-VLA variables.
946         (create_task_copyfn): Likewise.
948 2020-11-13  Jan Hubicka  <jh@suse.cz>
950         * tree-ssa-alias.c (ao_ref_base_alias_ptr_type): Remove accidental
951         commit.
952         (ao_ref_alias_ptr_type): Remove accidental commit.
954 2020-11-13  Kwok Cheung Yeung  <kcy@codesourcery.com>
956         * omp-oacc-kernels-decompose.cc (maybe_build_inner_data_region):
957         Use langhook instead of accessing language-specific decl
958         information.
960 2020-11-13  Gergö Barany  <gergo@codesourcery.com>
961             Thomas Schwinge  <thomas@codesourcery.com>
963         * omp-oacc-kernels-decompose.cc: New.
964         * Makefile.in (OBJS): Add it.
965         * passes.def: Instantiate it.
966         * tree-pass.h (make_pass_omp_oacc_kernels_decompose): Declare.
967         * flag-types.h (enum openacc_kernels): Add.
968         * doc/invoke.texi (-fopenacc-kernels): Document.
969         * gimple.h (enum gf_mask): Add
970         'GF_OMP_TARGET_KIND_OACC_PARALLEL_KERNELS_PARALLELIZED',
971         'GF_OMP_TARGET_KIND_OACC_PARALLEL_KERNELS_GANG_SINGLE',
972         'GF_OMP_TARGET_KIND_OACC_DATA_KERNELS'.
973         (is_gimple_omp_oacc, is_gimple_omp_offloaded): Handle these.
974         * gimple-pretty-print.c (dump_gimple_omp_target): Likewise.
975         * omp-expand.c (expand_omp_target, build_omp_regions_1)
976         (omp_make_gimple_edges): Likewise.
977         * omp-low.c (scan_sharing_clauses, scan_omp_for)
978         (check_omp_nesting_restrictions, lower_oacc_reductions)
979         (lower_oacc_head_mark, lower_omp_target): Likewise.
980         * omp-offload.c (execute_oacc_device_lower): Likewise.
982 2020-11-13  Thomas Schwinge  <thomas@codesourcery.com>
984         * omp-low.c (scan_sharing_clauses, scan_omp_for)
985         (lower_oacc_reductions, lower_omp_target): More explicit checking
986         of which OMP constructs we're expecting.
988 2020-11-13  Thomas Schwinge  <thomas@codesourcery.com>
990         * omp-expand.c (expand_omp_target): Attach an attribute to all
991         outlined OpenACC compute regions.
992         * omp-offload.c (execute_oacc_device_lower): Adjust.
994 2020-11-13  Jan Hubicka  <jh@suse.cz>
996         * ipa-modref.c (modref_summaries::insert,
997         modref_summaries_lto::insert): Remove summary if ipa-modref is disabled.
999 2020-11-13  Jan Hubicka  <jh@suse.cz>
1001         * attr-fnspec.h (attr_fnspec::arg_readonly_p): Accept '1'...'9'.
1003 2020-11-13  Peter Jones  <pjones@redhat.com>
1005         * doc/extend.texi: Clarify the documentation for the ms_abi
1006         function attribute.
1008 2020-11-13  Andrew MacLeod  <amacleod@redhat.com>
1010         * gimple-range.h (gimple_range_handler): Cast to gimple stmt
1011         kinds before asking for code and type.
1012         * gimple.h (gimple_expr_code): Call gassign and gcond routines
1013         to get their expr_code.
1015 2020-11-13  Jason Merrill  <jason@redhat.com>
1017         * dwarf2out.c (gen_enumeration_type_die): Call
1018         equate_decl_number_to_die for enumerators.
1019         (gen_member_die): Don't move enumerators to their
1020         enclosing class.
1021         (dwarf2out_imported_module_or_decl_1): Allow importing
1022         individual enumerators.
1023         (force_decl_die): Handle CONST_DECL.
1025 2020-11-13  Vladimir N. Makarov  <vmakarov@redhat.com>
1027         * cfgexpand.c (expand_asm_stmt): Output asm goto with outputs too.
1028         Place insns after asm goto on edges.
1029         * doc/extend.texi: Reflect the changes in asm goto documentation.
1030         * gimple.c (gimple_build_asm_1): Remove an assert checking output
1031         absence for asm goto.
1032         * gimple.h (gimple_asm_label_op, gimple_asm_set_label_op): Take
1033         possible asm goto outputs into account.
1034         * ira.c (ira): Remove critical edges for potential asm goto output
1035         reloads.
1036         (ira_nullify_asm_goto): New function.
1037         * ira.h (ira_nullify_asm_goto): New prototype.
1038         * lra-assigns.c (lra_split_hard_reg_for): Use ira_nullify_asm_goto.
1039         Check that splitting is done inside a basic block.
1040         * lra-constraints.c (curr_insn_transform): Permit output reloads
1041         for any jump insn.
1042         * lra-spills.c (lra_final_code_change): Remove USEs added in ira
1043         for asm gotos.
1044         * lra.c (lra_process_new_insns): Place output reload insns after
1045         jumps in the beginning of destination BBs.
1046         * reload.c (find_reloads): Report error for asm gotos with
1047         outputs.  Modify them to keep CFG consistency to avoid crashes.
1048         * tree-into-ssa.c (rewrite_stmt): Don't put debug stmt after asm
1049         goto.
1051 2020-11-13  Jakub Jelinek  <jakub@redhat.com>
1053         * omp-low.c (scan_sharing_clauses): For now remove for reduction
1054         clauses with inscan or task modifiers decl from allocate_map.
1055         (lower_private_allocate): Handle TYPE_P (new_var).
1056         (lower_rec_input_clauses): Handle allocate clause for C/C++ array
1057         reductions.
1059 2020-11-13  Martin Jambor  <mjambor@suse.cz>
1061         PR ipa/97816
1062         * ipa-cp.c (value_topo_info<valtype>::propagate_effects): Use
1063         safe_add instead of a simple addition.
1065 2020-11-13  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
1067         * config/msp430/msp430.c (TARGET_INSN_COST): Define.
1068         (msp430_insn_cost): New function.
1069         * config/msp430/msp430.h (BRANCH_COST): Define.
1070         (LOGICAL_OP_NON_SHORT_CIRCUIT): Define.
1072 2020-11-13  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
1074         * config/msp430/msp430-protos.h (msp430x_extendhisi): Return int
1075         instead of char *.
1076         (msp430_output_asm_shift_insns): Likewise.
1077         Add new return_length argument.
1078         (msp430x_insn_required): Add prototype.
1079         * config/msp430/msp430.c (msp430_output_asm_shift_insns): Return the
1080         total length, in bytes, of the emitted instructions.
1081         (msp430x_insn_required): New function.
1082         (msp430x_extendhisi): Return the total length, in bytes, of the
1083         emitted instructions.
1084         * config/msp430/msp430.h (ADJUST_INSN_LENGTH): Define.
1085         * config/msp430/msp430.md: New define_attr "type".
1086         New define_attr "extension".
1087         New define_attr "length_multiplier".
1088         New define_attr "extra_length".
1089         Rewrite define_attr "length".
1090         Set type, extension, length, length_multiplier or extra_length insn
1091         attributes on all insns, as appropriate.
1092         (andneghi3): Rewrite using constraints instead of C code to decide
1093         output insns.
1094         * config/msp430/predicates.md (msp430_cheap_operand): New predicate.
1095         (msp430_high_memory_operand): New predicate.
1097 2020-11-13  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
1099         * config/msp430/msp430.c (use_helper_for_const_shift): Add forward
1100         declaration.
1101         Remove unused argument.
1102         (struct msp430_multlib_costs): New struct.
1103         (msp430_is_mem_indirect): New function.
1104         (msp430_costs): Likewise.
1105         (msp430_shift_costs): Likewise.
1106         (msp430_muldiv_costs): Likewise.
1107         (msp430_get_inner_dest_code): Likewise.
1108         (msp430_single_op_cost): Likewise.
1109         (msp430_rtx_costs): Rewrite from scratch.
1110         (msp430_expand_shift): Adjust use_helper_for_const_shift call.
1112 2020-11-13  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
1114         * config/msp430/msp430.c (struct single_op_cost): New struct.
1115         (struct double_op_cost): Likewise.
1116         (TARGET_REGISTER_MOVE_COST): Don't define but add comment.
1117         (TARGET_MEMORY_MOVE_COST): Define to...
1118         (msp430_memory_move_cost): New function.
1119         (BRANCH_COST): Don't define but add comment.
1121 2020-11-13  Jan Hubicka  <jh@suse.cz>
1123         * ipa-icf-gimple.c: Include tree-ssa-alias-compare.h.
1124         (find_checker::func_checker): Initialize m_tbaa.
1125         (func_checker::hash_operand): Use hash_ao_ref for memory accesses.
1126         (func_checker::compare_operand): Use compare_ao_refs for memory
1127         accesses.
1128         (func_checker::cmopare_gimple_assign): Do not check LHS types
1129         of memory stores.
1130         * ipa-icf-gimple.h (func_checker): Derive from ao_compare;
1131         add m_tbaa.
1132         * ipa-icf.c: Include tree-ssa-alias-compare.h.
1133         (sem_function::equals_private): Update call of
1134         func_checker::func_checker.
1135         * ipa-utils.h (lto_streaming_expected_p): New inline
1136         predicate.
1137         * tree-ssa-alias-compare.h: New file.
1138         * tree-ssa-alias.c: Include tree-ssa-alias-compare.h
1139         and bultins.h
1140         (view_converted_memref_p): New function.
1141         (types_equal_for_same_type_for_tbaa_p): New function.
1142         (ao_ref_alias_ptr_type, ao_ref_base_alias_ptr_type): New functions.
1143         (ao_compare::compare_ao_refs): New member function.
1144         (ao_compare::hash_ao_ref): New function
1145         * tree-ssa-alias.h (ao_ref_base_alias_ptr_type,
1146         ao_ref_alias_ptr_type): Declare.
1148 2020-11-13  Jan Hubicka  <jh@suse.cz>
1150         * ipa-icf-gimple.c: Include gimple-walk.h.
1151         (func_checker::compare_ssa_name): Update call of compare_operand.
1152         (func_checker::hash_operand): Fix comment and add variant taking
1153         operand_access_type parameter.
1154         (func_checker::compare_operand): Add operand_access_type parameter.
1155         (func_checker::compare_asm_inputs_outputs): Add
1156         operand_access_type_map parameter; update use of
1157         func_checker::compare_operand.
1158         (func_checker::compare_gimple_call): Update use of
1159         func_checker::compare_operand.
1160         (func_checker::compare_gimple_assign): Likewise.
1161         (func_checker::compare_gimple_cond): Likewise.
1162         (func_checker::compare_gimple_switch): Likewise.
1163         (func_checker::compare_gimple_return): Likewise.
1164         (func_checker::compare_gimple_goto): Likewise.
1165         (func_checker::compare_gimple_asm): Likewise.
1166         (visit_load_store): New static functio.
1167         (func_checker::classify_operands): New member function.
1168         (func_checker::get_operand_access_type): New member function.
1169         * ipa-icf-gimple.h (func_checker::operand_access_type): New enum
1170         (func_checker::operand_access_type_map): New typedef.
1171         (func_checker::compare_operand): Update prototype.
1172         (func_checker::compare_asm_inputs_outputs): Likewise.
1173         (func_checker::cleassify_operands): Declare.
1174         (func_checker::get_operand_access_type): Declare.
1175         (func_checker::hash_operand): New variant with operand_access_type.
1176         * ipa-icf.c (sem_function::hash_stmt): Update uses of hash_operand.
1177         (sem_function::compare_phi_node): Update use of compare_operand.
1179 2020-11-13  Andrea Corallo  <andrea.corallo@arm.com>
1181         * config/arm/aarch-common.c (aarch_accumulator_forwarding): Use
1182         RTL predicates where possible.
1183         * config/arm/arm.c (legitimate_pic_operand_p)
1184         (legitimize_pic_address, arm_is_segment_info_known)
1185         (can_avoid_literal_pool_for_label_p)
1186         (thumb1_legitimate_address_p, arm_legitimize_address)
1187         (arm_tls_referenced_p, thumb_legitimate_constant_p)
1188         (REG_OR_SUBREG_REG, thumb1_rtx_costs, thumb1_size_rtx_costs)
1189         (arm_adjust_cost, arm_coproc_mem_operand_wb)
1190         (neon_vector_mem_operand, neon_struct_mem_operand)
1191         (symbol_mentioned_p, label_mentioned_p, )
1192         (load_multiple_sequence, store_multiple_sequence)
1193         (arm_select_cc_mode, arm_reload_in_hi, arm_reload_out_hi)
1194         (mem_ok_for_ldrd_strd, arm_emit_call_insn, output_move_neon)
1195         (arm_attr_length_move_neon, arm_assemble_integer)
1196         (arm_emit_coreregs_64bit_shift, arm_valid_symbolic_address_p)
1197         (extract_base_offset_in_addr, fusion_load_store): Likewise.
1199 2020-11-13  Andrew MacLeod  <amacleod@redhat.com>
1201         * gimple-range.cc: (gimple_ranger::range_of_range_op): Check for
1202         ADDR_EXPR and call range_of_address.
1203         (gimple_ranger::range_of_address): Rename from
1204         range_of_non_trivial_assignment and match vrp_stmt_computes_nonzero.
1205         * gimple-range.h: (range_of_address): Renamed.
1206         * range-op.cc: (pointer_table): Add INTEGER_CST handler.
1208 2020-11-13  Martin Jambor  <mjambor@suse.cz>
1210         PR tree-optimization/94406
1211         * tree-ssa-loop-im.c (tree_ssa_lim): Renamed to
1212         loop_invariant_motion_in_fun, added a parameter to control store
1213         motion.
1214         (pass_lim::execute): Adjust call to tree_ssa_lim, now
1215         loop_invariant_motion_in_fun.
1216         * tree-ssa-loop-manip.h (loop_invariant_motion_in_fun): Declare.
1217         * gimple-loop-interchange.cc (pass_linterchange::execute): Call
1218         loop_invariant_motion_in_fun if any interchange has been done.
1220 2020-11-13  Richard Biener  <rguenther@suse.de>
1222         * tree-ssa-sccvn.c (vn_phi_compute_hash): Always hash the
1223         number of predecessors.  Hash the block number also for
1224         loop header PHIs.
1225         (expressions_equal_p): Short-cut SSA name compares, remove
1226         test for NULL operands.
1227         (vn_phi_eq): Cache number of predecessors, change inlined
1228         test from expressions_equal_p.
1230 2020-11-13  Iain Sandoe  <iain@sandoe.co.uk>
1232         * doc/extend.texi: Don't try to line-wrap an @r command.
1234 2020-11-13  Richard Biener  <rguenther@suse.de>
1236         PR tree-optimization/97812
1237         * tree-vrp.c (register_edge_assert_for_2): Extend the range
1238         according to its sign before seeing whether it fits.
1240 2020-11-13  Andrea Corallo  <andrea.corallo@arm.com>
1242         * config/aarch64/aarch64.c (tls_symbolic_operand_type)
1243         (aarch64_load_symref_appropriately, aarch64_mov128_immediate)
1244         (aarch64_expand_mov_immediate)
1245         (aarch64_maybe_expand_sve_subreg_move)
1246         (aarch64_tls_referenced_p, aarch64_cannot_force_const_mem)
1247         (aarch64_base_register_rtx_p, aarch64_classify_index)
1248         (aarch64_classify_address, aarch64_symbolic_address_p)
1249         (aarch64_reinterpret_float_as_int, aarch64_float_const_rtx_p)
1250         (aarch64_can_const_movi_rtx_p, aarch64_select_cc_mode)
1251         (aarch64_print_operand, aarch64_label_mentioned_p)
1252         (aarch64_secondary_reload, aarch64_preferred_reload_class)
1253         (aarch64_address_cost, aarch64_tls_symbol_p)
1254         (aarch64_classify_symbol, aarch64_legitimate_pic_operand_p)
1255         (aarch64_legitimate_constant_p)
1256         (aarch64_sve_float_arith_immediate_p)
1257         (aarch64_sve_float_mul_immediate_p, aarch64_mov_operand_p)
1258         (fusion_load_store): Use RTL operands where possible.
1260 2020-11-13  Sudakshina Das  <sudi.das@arm.com>
1262         * config/aarch64/aarch64-protos.h (aarch64_expand_setmem): New
1263         declaration.
1264         * config/aarch64/aarch64.c (aarch64_gen_store_pair): Add case for
1265         E_V16QImode.
1266         (aarch64_set_one_block_and_progress_pointer): New helper for
1267         aarch64_expand_setmem.
1268         (aarch64_expand_setmem): Define the expansion for memset.
1269         * config/aarch64/aarch64.h (CLEAR_RATIO): Tweak to favor
1270         aarch64_expand_setmem when allowed and profitable.
1271         (SET_RATIO): Likewise.
1272         * config/aarch64/aarch64.md: Define pattern for setmemdi.
1274 2020-11-13  Iain Sandoe  <iain@sandoe.co.uk>
1276         PR objc/90707
1277         * doc/extend.texi: Document the objc_nullability attribute.
1279 2020-11-13  Iain Sandoe  <iain@sandoe.co.uk>
1281         PR objc/77404
1282         * doc/extend.texi: Document the objc_root_class attribute.
1283         * doc/invoke.texi: Document -Wobjc-root-class.
1285 2020-11-13  Richard Biener  <rguenther@suse.de>
1287         * cfgexpand.c (gimple_assign_rhs_to_tree): Use
1288         gimple_assign_rhs_class.
1289         (expand_gimple_stmt_1): Likewise.
1290         * gimplify-me.c (gimple_regimplify_operands): Use
1291         gimple_assign_single_p.
1292         * ipa-icf-gimple.c (func_checker::compare_gimple_assign):
1293         Remove redundant compare.
1294         (func_checker::compare_gimple_cond): Use gimple_cond_code.
1295         * tree-ssa-tail-merge.c (gimple_equal_p): Likewise.
1296         * predict.c (predict_loops): Use gimple_assign_rhs_code.
1298 2020-11-13  Aldy Hernandez  <aldyh@redhat.com>
1300         * tree-vrp.c (class vrp_folder): Make visit_stmt, visit_phi,
1301         and m_vr_values private.
1302         (vrp_folder::vrp_evaluate_conditional): Remove.
1303         (vrp_folder::vrp_simplify_stmt_using_ranges): Remove.
1304         (vrp_folder::fold_predicate_in): Inline
1305         vrp_evaluate_conditional and vrp_simplify_stmt_using_ranges.
1306         (vrp_folder::fold_stmt): Same.
1308 2020-11-13  Aldy Hernandez  <aldyh@redhat.com>
1310         * tree-vrp.c (class vrp_prop): Rename vr_values to m_vr_values.
1311         (vrp_prop::vrp_prop): New.
1312         (vrp_prop::initialize): Rename vr_values to m_vr_values.
1313         (vrp_prop::visit_stmt): Same.
1314         (vrp_prop::visit_phi): Same.
1315         (vrp_prop::finalize): Same.
1316         (execute_vrp): Instantiate vrp_vr_values and pass it to folder
1317         and propagator.
1319 2020-11-13  Aldy Hernandez  <aldyh@redhat.com>
1321         * tree-vrp.c (class vrp_prop): Move entire class...
1322         (class vrp_folder): ...before here.
1324 2020-11-13  Aldy Hernandez  <aldyh@redhat.com>
1326         * tree-vrp.c (identify_jump_threads): Refactor to..
1327         (vrp_jump_threader::vrp_jump_threader): ...here
1328         (vrp_jump_threader::~vrp_jump_threader): ...and here.
1329         (vrp_jump_threader::after_dom_children): Rename vr_values to
1330         m_vr_values.
1331         (execute_vrp): Use vrp_jump_threader.
1333 2020-11-13  Aldy Hernandez  <aldyh@redhat.com>
1335         * tree-vrp.c (struct assert_locus): Move.
1336         (class vrp_insert): Rename to vrp_asserts.
1337         (vrp_insert::build_assert_expr_for): Move to vrp_asserts.
1338         (fp_predicate): Same.
1339         (vrp_insert::dump): Same.
1340         (vrp_insert::register_new_assert_for): Same.
1341         (extract_code_and_val_from_cond_with_ops): Move.
1342         (vrp_insert::finish_register_edge_assert_for): Move to vrp_asserts.
1343         (maybe_set_nonzero_bits): Move.
1344         (vrp_insert::find_conditional_asserts): Move to vrp_asserts.
1345         (stmt_interesting_for_vrp): Move.
1346         (struct case_info): Move.
1347         (compare_case_labels): Move.
1348         (lhs_of_dominating_assert): Move.
1349         (find_case_label_index): Move.
1350         (find_case_label_range): Move.
1351         (class vrp_asserts): New.
1352         (vrp_asserts::build_assert_expr_for): Rename from vrp_insert.
1353         (vrp_asserts::dump): Same.
1354         (vrp_asserts::register_new_assert_for): Same.
1355         (vrp_asserts::finish_register_edge_assert_for): Same.
1356         (vrp_asserts::find_conditional_asserts): Same.
1357         (vrp_asserts::compare_case_labels): Same.
1358         (vrp_asserts::find_switch_asserts): Same.
1359         (vrp_asserts::find_assert_locations_in_bb): Same.
1360         (vrp_asserts::find_assert_locations): Same.
1361         (vrp_asserts::process_assert_insertions_for): Same.
1362         (vrp_asserts::compare_assert_loc): Same.
1363         (vrp_asserts::process_assert_insertions): Same.
1364         (vrp_asserts::insert_range_assertions): Same.
1365         (vrp_asserts::all_imm_uses_in_stmt_or_feed_cond): Same.
1366         (vrp_asserts::remove_range_assertions): Same.
1367         (class vrp_prop): Move.
1368         (all_imm_uses_in_stmt_or_feed_cond): Move.
1369         (vrp_prop::vrp_initialize): Move.
1370         (class vrp_folder): Move.
1371         (vrp_folder::fold_predicate_in): Move.
1372         (vrp_folder::fold_stmt): Move.
1373         (vrp_prop::initialize): Move.
1374         (vrp_prop::visit_stmt): Move.
1375         (enum ssa_prop_result): Move.
1376         (vrp_prop::visit_phi): Move.
1377         (vrp_prop::finalize): Move.
1378         (class vrp_dom_walker): Rename to...
1379         (class vrp_jump_threader): ...this.
1380         (vrp_jump_threader::before_dom_children): Rename from
1381         vrp_dom_walker.
1382         (simplify_stmt_for_jump_threading): Rename to...
1383         (vrp_jump_threader::simplify_stmt): ...here.
1384         (vrp_jump_threader::after_dom_children): Same.
1385         (identify_jump_threads): Move.
1386         (vrp_prop::vrp_finalize): Move array bounds setup code to...
1387         (execute_vrp): ...here.
1389 2020-11-13  Andrew MacLeod  <amacleod@redhat.com>
1391         * gimple-range.h (gimple_range_handler): Use gimple_assign and
1392         gimple_cond routines to get type and code.
1393         * range-op.cc (range_op_handler): Check for integral types.
1395 2020-11-12  Nelson Chu  <nelson.chu@sifive.com>
1397         * configure: Regenerated.
1398         * configure.ac: If ifunc was supported in the binutils for
1399         linux toolchain, then set enable_gnu_indirect_function to yes.
1401 2020-11-12  Joseph Myers  <joseph@codesourcery.com>
1403         * doc/cpp.texi (__has_attribute): Document when scopes are allowed
1404         for C.
1405         (__has_c_attribute): New.
1407 2020-11-12  Jakub Jelinek  <jakub@redhat.com>
1409         * builtin-types.def (BT_FN_PTR_SIZE_SIZE_PTRMODE): New function type.
1410         * omp-builtins.def (BUILT_IN_GOACC_DECLARE): Move earlier.
1411         (BUILT_IN_GOMP_ALLOC, BUILT_IN_GOMP_FREE): New builtins.
1412         * gimplify.c (gimplify_scan_omp_clauses): Force allocator into a
1413         decl if it is not NULL, INTEGER_CST or decl.
1414         (gimplify_adjust_omp_clauses): Clear GOVD_EXPLICIT on explicit clauses
1415         which are being removed.  Remove allocate clauses for variables not seen
1416         if they are private, firstprivate or linear too.  Call
1417         omp_notice_variable on the allocator otherwise.
1418         (gimplify_omp_for): Handle iterator vars mentioned in allocate clauses
1419         similarly to non-is_gimple_reg iterators.
1420         * omp-low.c (struct omp_context): Add allocate_map field.
1421         (delete_omp_context): Delete it.
1422         (scan_sharing_clauses): Fill it from allocate clauses.  Remove it
1423         if mentioned also in shared clause.
1424         (lower_private_allocate): New function.
1425         (lower_rec_input_clauses): Handle allocate clause for privatized
1426         variables, except for task/taskloop, C/C++ array reductions for now
1427         and task/inscan variables.
1428         (lower_send_shared_vars): Don't consider variables in allocate_map
1429         as shared.
1430         * omp-expand.c (expand_omp_for_generic, expand_omp_for_static_nochunk,
1431         expand_omp_for_static_chunk): Use expand_omp_build_assign instead of
1432         gimple_build_assign + gsi_insert_after.
1433         * builtins.c (builtin_fnspec): Handle BUILTIN_GOMP_ALLOC and
1434         BUILTIN_GOMP_FREE.
1435         * tree-ssa-ccp.c (evaluate_stmt): Handle BUILTIN_GOMP_ALLOC.
1436         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Handle
1437         BUILTIN_GOMP_ALLOC.
1438         (mark_all_reaching_defs_necessary_1): Handle BUILTIN_GOMP_ALLOC
1439         and BUILTIN_GOMP_FREE.
1440         (propagate_necessity): Likewise.
1442 2020-11-12  Martin Jambor  <mjambor@suse.cz>
1444         * cgraphclones.c (cgraph_node::materialize_clone): Check that clone
1445         info is not NULL before attempting to dump it.
1447 2020-11-12  Martin Jambor  <mjambor@suse.cz>
1449         * ipa-cp.c (class ipcp_value_base): Change the type of
1450         local_time_benefit and prop_time_benefit to sreal.  Adjust the
1451         constructor initializer.
1452         (ipcp_lattice::print): Dump sreals.
1453         (struct caller_statistics): Change the type of freq_sum to sreal.
1454         (gather_caller_stats): Work with sreal freq_sum.
1455         (incorporate_penalties): Work with sreal evaluation.
1456         (good_cloning_opportunity_p): Adjusted for sreal sreal time_benefit
1457         and freq_sum.  Bail out if size_cost is INT_MAX.
1458         (perform_estimation_of_a_value): Work with sreal time_benefit.  Avoid
1459         unnecessary capping.
1460         (estimate_local_effects): Pass sreal time benefit to
1461         good_cloning_opportunity_p without capping it.  Adjust dumping.
1462         (safe_add): If there can be overflow, return INT_MAX.
1463         (propagate_effects): Work with sreal times.
1464         (get_info_about_necessary_edges): Work with sreal frequencies.
1465         (decide_about_value): Likewise and with sreal time benefits.
1467 2020-11-12  Marek Polacek  <polacek@redhat.com>
1469         * system.h (WARN_UNUSED_RESULT): Define for GCC >= 3.4.
1470         * tree.h (maybe_wrap_with_location): Add WARN_UNUSED_RESULT.
1472 2020-11-12  Jan Hubicka  <jh@suse.cz>
1474         * fold-const.c (operand_compare::operand_equal_p): Compare field
1475         offsets in operand_equal_p and OEP_ADDRESS_OF.
1476         (operand_compare::hash_operand): Update.
1478 2020-11-12  Richard Biener  <rguenther@suse.de>
1480         * bitmap.c (bitmap_list_view): Restore head->current.
1481         * tree-ssa-pre.c (pre_expr_DFS): Elide expr_visited bitmap.
1482         Special-case value expression bitmaps with one element.
1483         (bitmap_find_leader): Likewise.
1484         (sorted_array_from_bitmap_set): Elide expr_visited bitmap.
1486 2020-11-12  Jan Hubicka  <jh@suse.cz>
1488         * attr-fnspec.h: Update topleve comment.
1489         (attr_fnspec::arg_direct_p): Accept 1...9.
1490         (attr_fnspec::arg_maybe_written_p): Reject 1...9.
1491         (attr_fnspec::arg_copied_to_arg_p): New member function.
1492         * builtins.c (builtin_fnspec): Update fnspec of block copy.
1493         * tree-ssa-alias.c (attr_fnspec::verify): Update.
1495 2020-11-12  Richard Biener  <rguenther@suse.de>
1497         * tree-ssa-pre.c (bitmap_value_replace_in_set): Return
1498         whether we have changed anything.
1499         (do_pre_regular_insertion): Get topologically sorted array
1500         of expressions from caller.
1501         (do_pre_partial_partial_insertion): Likewise.
1502         (insert): Compute topologically sorted arrays of expressions
1503         here and locally iterate actual insertion.  Iterate only
1504         when AVAIL_OUT of an already visited block source changed.
1506 2020-11-12  Alex Coplan  <alex.coplan@arm.com>
1508         PR target/97730
1509         * config/aarch64/aarch64-sve2.md (@aarch64_sve2_bcax<mode>):
1510         Change to define_expand, add missing (trivially-predicated) not
1511         rtx to fix wrong code bug.
1512         (*aarch64_sve2_bcax<mode>): New.
1514 2020-11-12  Richard Biener  <rguenther@suse.de>
1516         PR tree-optimization/97806
1517         * tree-ssa-pre.c (pre_expr_DFS): New overload for visiting
1518         values, visiting all leaders for a value.  Use a bitmap
1519         for visited values.
1520         (sorted_array_from_bitmap_set): Walk over values and adjust.
1522 2020-11-12  Andreas Krebbel  <krebbel@linux.ibm.com>
1524         PR target/97326
1525         * config/s390/vector.md: Support vector floating point modes in
1526         vec_cmp.
1528 2020-11-12  Andreas Krebbel  <krebbel@linux.ibm.com>
1530         * config/s390/vector.md: Rename tointvec to TOINTVEC.
1531         * config/s390/vx-builtins.md: Likewise.
1533 2020-11-12  Jason Merrill  <jason@redhat.com>
1535         PR debug/97060
1536         * dwarf2out.c (gen_subprogram_die): It's a declaration
1537         if DECL_INITIAL isn't set.
1539 2020-11-12  David Malcolm  <dmalcolm@redhat.com>
1541         PR tree-optimization/97424
1542         * doc/invoke.texi (Static Analyzer Options): Add
1543         -Wno-analyzer-shift-count-negative and
1544         -Wno-analyzer-shift-count-overflow.
1545         (-Wno-analyzer-shift-count-negative): New.
1546         (-Wno-analyzer-shift-count-overflow): New.
1548 2020-11-11  Iain Sandoe  <iain@sandoe.co.uk>
1550         * config/darwin-protos.h (darwin_make_eh_symbol_indirect): New.
1551         * config/darwin.c (darwin_make_eh_symbol_indirect): New. Use
1552         Mach-O semantics for personality and ldsa indirections.
1553         * config/darwin.h (TARGET_ASM_MAKE_EH_SYMBOL_INDIRECT): New.
1554         * doc/tm.texi: Regenerate.
1555         * doc/tm.texi.in: Add TARGET_ASM_MAKE_EH_SYMBOL_INDIRECT hook.
1556         * dwarf2out.c (dwarf2out_do_cfi_startproc): If the target defines
1557         a hook for indirecting personality and ldsa references, use that
1558         otherwise default to ELF semantics.
1559         * target.def (make_eh_symbol_indirect): New target hook.
1561 2020-11-11  Patrick Palka  <ppalka@redhat.com>
1563         PR c++/88115
1564         * common.opt (-fabi-version): Document =15.
1565         * doc/invoke.texi (C++ Dialect Options): Likewise.
1567 2020-11-11  Marek Polacek  <polacek@redhat.com>
1569         PR c++/97518
1570         * tree.c (maybe_wrap_with_location): Don't add a location
1571         wrapper around an artificial and ignored decl.
1573 2020-11-11  Richard Biener  <rguenther@suse.de>
1575         PR tree-optimization/97623
1576         * tree-ssa-pre.c (create_expression_by_pieces): Guard
1577         NEW_SETS access.
1578         (insert_into_preds_of_block): Likewise.
1580 2020-11-11  Richard Biener  <rguenther@suse.de>
1582         * tree-ssa-pre.c (pre_expr_DFS): New function.
1583         (sorted_array_from_bitmap_set): Use it to properly
1584         topologically sort the expression set.
1585         (clean): Verify we've cleaned everything we should.
1587 2020-11-11  Richard Biener  <rguenther@suse.de>
1589         PR tree-optimization/97623
1590         * params.opt (-param=max-pre-hoist-insert-iterations): Remove
1591         again.
1592         * doc/invoke.texi (max-pre-hoist-insert-iterations): Likewise.
1593         * tree-ssa-pre.c (insert): Move hoist insertion after PRE
1594         insertion iteration and do not iterate it.
1596 2020-11-11  Richard Sandiford  <richard.sandiford@arm.com>
1598         * config/aarch64/aarch64-sve.md (@vcond_mask_<mode><vpred>): Extend
1599         from SVE_FULL to SVE_ALL.
1600         (*vcond_mask_<mode><vpred>): Likewise.
1601         (@aarch64_sel_dup<mode>): Likewise.
1602         (vcond<SVE_FULL:mode><v_int_equiv>): Extend to...
1603         (vcond<SVE_ALL:mode><SVE_I:mode>): ...this, but requiring the
1604         sizes of the container modes to match.
1605         (vcondu<SVE_FULL:mode><v_int_equiv>): Extend to...
1606         (vcondu<SVE_ALL:mode><SVE_I:mode>): ...this.
1607         (vec_cmp<SVE_FULL_I:mode><vpred>): Extend to...
1608         (vec_cmp<SVE_I:mode><vpred>): ...this.
1609         (vec_cmpu<SVE_FULL_I:mode><vpred>): Extend to...
1610         (vec_cmpu<SVE_I:mode><vpred>): ...this.
1611         (@aarch64_pred_cmp<cmp_op><SVE_FULL_I:mode>): Extend to...
1612         (@aarch64_pred_cmp<cmp_op><SVE_I:mode>): ...this.
1613         (*cmp<cmp_op><SVE_FULL_I:mode>_cc): Extend to...
1614         (*cmp<cmp_op><SVE_I:mode>_cc): ...this.
1615         (*cmp<cmp_op><SVE_FULL_I:mode>_ptest): Extend to...
1616         (*cmp<cmp_op><SVE_I:mode>_ptest): ...this.
1617         (*cmp<cmp_op><SVE_FULL_I:mode>_and): Extend to...
1618         (*cmp<cmp_op><SVE_I:mode>_and): ...this.
1620 2020-11-11  Richard Sandiford  <richard.sandiford@arm.com>
1622         * optabs-tree.c (expand_vec_cond_expr_p): Allow the compared values
1623         and the selected values to have different mode sizes.
1624         * gimple-isel.cc (gimple_expand_vec_cond_expr): Likewise.
1626 2020-11-11  Hongtao Liu  <hongtao.liu@intel.com>
1627             Hongyu Wang  <hongyu.wang@intel.com>
1629         * common/config/i386/cpuinfo.h (get_available_features):
1630         Detect AVXVNNI.
1631         * common/config/i386/i386-common.c
1632         (OPTION_MASK_ISA2_AVXVNNI_SET,
1633         OPTION_MASK_ISA2_AVXVNNI_UNSET): New.
1634         (OPTION_MASK_ISA2_AVX2_UNSET): Add AVXVNNI.
1635         (ix86_hanlde_option): Handle -mavxvnni, unset avxvnni when
1636         avx2 is disabled.
1637         * common/config/i386/i386-cpuinfo.h (enum processor_features):
1638         Add FEATURE_AVXVNNI.
1639         * common/config/i386/i386-isas.h: Add ISA_NAMES_TABLE_ENTRY
1640         for avxvnni.
1641         * config.gcc: Add avxvnniintrin.h.
1642         * config/i386/avx512vnnivlintrin.h: Reimplement 128/256 bit non-mask
1643         intrinsics with macros to support unified interface.
1644         * config/i386/avxvnniintrin.h: New header file.
1645         * config/i386/cpuid.h (bit_AVXVNNI): New.
1646         * config/i386/i386-builtins.c (def_builtin): Handle AVXVNNI mask
1647         for unified builtin.
1648         * config/i386/i386-builtin.def (BDESC): Adjust AVX512VNNI
1649         builtins for AVXVNNI.
1650         * config/i386/i386-c.c (ix86_target_macros_internal): Define
1651         __AVXVNNI__.
1652         * config/i386/i386-expand.c (ix86_expand_builtin): Handle bisa
1653         for AVXVNNI to support unified intrinsic name, since there is no
1654         dependency between AVX512VNNI and AVXVNNI.
1655         * config/i386/i386-options.c (isa2_opts): Add -mavxvnni.
1656         (ix86_valid_target_attribute_inner_p): Handle avxnnni.
1657         (ix86_option_override_internal): Ditto.
1658         * config/i386/i386.h (TARGET_AVXVNNI, TARGET_AVXVNNI_P,
1659         TARGET_AVXVNNI_P, PTA_AVXVNNI): New.
1660         (PTA_SAPPHIRERAPIDS): Add AVX_VNNI.
1661         (PTA_ALDERLAKE): Likewise.
1662         * config/i386/i386.md ("isa"): Add avxvnni, avx512vnnivl.
1663         ("enabled"): Adjust for avxvnni and avx512vnnivl.
1664         * config/i386/i386.opt: Add option -mavxvnni.
1665         * config/i386/immintrin.h: Include avxvnniintrin.h.
1666         * config/i386/sse.md (vpdpbusd_<mode>): Adjust for AVXVNNI.
1667         (vpdpbusds_<mode>): Likewise.
1668         (vpdpwssd_<mode>): Likewise.
1669         (vpdpwssds_<mode>): Likewise.
1670         (vpdpbusd_v16si): New.
1671         (vpdpbusds_v16si): Likewise.
1672         (vpdpwssd_v16si): Likewise.
1673         (vpdpwssds_v16si): Likewise.
1674         * doc/invoke.texi: Document -mavxvnni.
1675         * doc/extend.texi: Document avxvnni.
1676         * doc/sourcebuild.texi: Document target avxvnni.
1678 2020-11-11  Martin Liska  <mliska@suse.cz>
1680         * tree.c (copy_node): Fix spelling.
1682 2020-11-11  Richard Biener  <rguenther@suse.de>
1684         * tree-ssa-pre.c (phi_translate_set): Do not sort the
1685         expression set topologically.
1687 2020-11-11  Aldy Hernandez  <aldyh@redhat.com>
1689         * value-range.cc (irange::set): Early exit on VR_VARYING.
1691 2020-11-11  Zhiheng Xie  <xiezhiheng@huawei.com>
1692             Nannan Zheng  <zhengnannan@huawei.com>
1694         * config/aarch64/aarch64-simd-builtins.def: Add proper FLAG
1695         for arithmetic operation intrinsics.
1697 2020-11-11  Strager Neds  <strager.nds@gmail.com>
1699         * cgraph.h (symtab_node::set_section_for_node): Declare new
1700         overload.
1701         (symtab_node::set_section_from_string): Rename from set_section.
1702         (symtab_node::set_section_from_node): Declare.
1703         * symtab.c (symtab_node::set_section_for_node): Define new
1704         overload.
1705         (symtab_node::set_section_from_string): Rename from set_section.
1706         (symtab_node::set_section_from_node): Define.
1707         (symtab_node::set_section): Call renamed set_section_from_string.
1708         (symtab_node::set_section): Call new set_section_from_node.
1710 2020-11-11  Strager Neds  <strager.nds@gmail.com>
1712         * symtab.c (symtab_node::set_section_for_node): Extract reference
1713         counting logic into ...
1714         (retain_section_hash_entry): ... here (new function) and ...
1715         (release_section_hash_entry): ... here (new function).
1717 2020-11-11  liuhongt  <hongtao.liu@intel.com>
1719         * config/i386/i386.h (PTA_MOVDIRI, PTA_MOVDIR64B,
1720         PTA_AMX_TILE, PTA_AMX_INT8, PTA_AMX_BF16, PTA_HRESET):
1721         Formatting.
1723 2020-11-11  Ilya Leoshkevich  <iii@linux.ibm.com>
1725         * config/s390/s390.h (HAVE_TF): Use opaque value when
1726         GENERATOR_FILE is defined.
1728 2020-11-10  Strager Neds  <strager.nds@gmail.com>
1730         * cgraph.h (symtab_node::get_section): Constify.
1731         (symtab_node::set_section): Declare new overload.
1732         * symtab.c (symtab_node::set_section): Define new overload.
1733         (symtab_node::copy_visibility_from): Use new overload of
1734         symtab_node::set_section.
1735         (symtab_node::resolve_alias): Same.
1736         * tree.h (set_decl_section_name): Declare new overload.
1737         * tree.c (set_decl_section_name): Define new overload.
1738         * tree-emutls.c (get_emutls_init_templ_addr): Same.
1739         * cgraphclones.c (cgraph_node::create_virtual_clone): Use new
1740         overload of symtab_node::set_section.
1741         (cgraph_node::create_version_clone_with_body): Same.
1742         * trans-mem.c (ipa_tm_create_version): Same.
1744 2020-11-10  Aldy Hernandez  <aldyh@redhat.com>
1746         * value-range.cc (irange::set): Early exit for poly ints.
1748 2020-11-10  Tobias Burnus  <tobias@codesourcery.com>
1750         * gimplify.c (gimplify_scan_omp_clauses, gimplify_omp_loop): Use 'do'
1751         instead of 'for' in error messages for Fortran.
1752         * omp-low.c (check_omp_nesting_restrictions): Likewise
1754 2020-11-10  Matthew Malcomson  <matthew.malcomson@arm.com>
1756         * opts.c (control_options_for_live_patching): Reform 'is incompatible
1757         with' error messages to use a standard message with differing format
1758         arguments.
1759         (finish_options): Likewise.
1761 2020-11-10  Richard Biener  <rguenther@suse.de>
1763         PR tree-optimization/97769
1764         * tree-vect-data-refs.c (vect_update_misalignment_for_peel):
1765         Remove assert.
1767 2020-11-10  Richard Biener  <rguenther@suse.de>
1769         PR tree-optimization/97780
1770         * tree-ssa-pre.c (fini_pre): Deal with added basic blocks
1771         when freeing PHI_TRANS_TABLE.
1773 2020-11-10  Zhiheng Xie  <xiezhiheng@huawei.com>
1774             Nannan Zheng  <zhengnannan@huawei.com>
1776         * config/aarch64/aarch64-simd-builtins.def: Add proper FLAG
1777         for tbl/tbx intrinsics.
1779 2020-11-10  Chung-Lin Tang  <cltang@codesourcery.com>
1781         * gimplify.c (is_or_contains_p): New static helper function.
1782         (omp_target_reorder_clauses): New function.
1783         (gimplify_scan_omp_clauses): Add use of omp_target_reorder_clauses to
1784         reorder clause list according to OpenMP 5.0 rules. Add handling of
1785         GOMP_MAP_ATTACH_DETACH for OpenMP cases.
1786         * omp-low.c (is_omp_target): New static helper function.
1787         (scan_sharing_clauses): Add scan phase handling of GOMP_MAP_ATTACH/DETACH
1788         for OpenMP cases.
1789         (lower_omp_target): Add lowering handling of GOMP_MAP_ATTACH/DETACH for
1790         OpenMP cases.
1792 2020-11-10  Ilya Leoshkevich  <iii@linux.ibm.com>
1794         * config/s390/s390-modes.def (FPRX2): New mode.
1795         * config/s390/s390-protos.h (s390_fma_allowed_p): New function.
1796         * config/s390/s390.c (s390_fma_allowed_p): Likewise.
1797         (s390_build_signbit_mask): Support 128-bit masks.
1798         (print_operand): Support printing the second word of a TFmode
1799         operand as vector register.
1800         (constant_modes): Add FPRX2mode.
1801         (s390_class_max_nregs): Return 1 for TFmode on z14+.
1802         (s390_is_fpr128): New function.
1803         (s390_is_vr128): Likewise.
1804         (s390_can_change_mode_class): Use s390_is_fpr128 and
1805         s390_is_vr128 in order to determine whether mode refers to a FPR
1806         pair or to a VR.
1807         (s390_emit_compare): Force TFmode operands into registers on
1808         z14+.
1809         * config/s390/s390.h (HAVE_TF): New macro.
1810         (EXPAND_MOVTF): New macro.
1811         (EXPAND_TF): Likewise.
1812         * config/s390/s390.md (PFPO_OP_TYPE_FPRX2): PFPO_OP_TYPE_TF
1813         alias.
1814         (ALL): Add FPRX2.
1815         (FP_ALL): Add FPRX2 for z14+, restrict TFmode to z13-.
1816         (FP): Likewise.
1817         (FP_ANYTF): New mode iterator.
1818         (BFP): Add FPRX2 for z14+, restrict TFmode to z13-.
1819         (TD_TF): Likewise.
1820         (xde): Add FPRX2.
1821         (nBFP): Likewise.
1822         (nDFP): Likewise.
1823         (DSF): Likewise.
1824         (DFDI): Likewise.
1825         (SFSI): Likewise.
1826         (DF): Likewise.
1827         (SF): Likewise.
1828         (fT0): Likewise.
1829         (bt): Likewise.
1830         (_d): Likewise.
1831         (HALF_TMODE): Likewise.
1832         (tf_fpr): New mode_attr.
1833         (type): New mode_attr.
1834         (*cmp<mode>_ccz_0): Use type instead of mode with fsimp.
1835         (*cmp<mode>_ccs_0_fastmath): Likewise.
1836         (*cmptf_ccs): New pattern for wfcxb.
1837         (*cmptf_ccsfps): New pattern for wfkxb.
1838         (mov<mode>): Rename to mov<mode><tf_fpr>.
1839         (signbit<mode>2): Rename to signbit<mode>2<tf_fpr>.
1840         (isinf<mode>2): Renamed to isinf<mode>2<tf_fpr>.
1841         (*TDC_insn_<mode>): Use type instead of mode with fsimp.
1842         (fixuns_trunc<FP:mode><GPR:mode>2): Rename to
1843         fixuns_trunc<FP:mode><GPR:mode>2<FP:tf_fpr>.
1844         (fix_trunctf<mode>2): Rename to fix_trunctf<mode>2_fpr.
1845         (floatdi<mode>2): Rename to floatdi<mode>2<tf_fpr>, use type
1846         instead of mode with itof.
1847         (floatsi<mode>2): Rename to floatsi<mode>2<tf_fpr>, use type
1848         instead of mode with itof.
1849         (*floatuns<GPR:mode><FP:mode>2): Use type instead of mode for
1850         itof.
1851         (floatuns<GPR:mode><FP:mode>2): Rename to
1852         floatuns<GPR:mode><FP:mode>2<tf_fpr>.
1853         (trunctf<mode>2): Rename to trunctf<mode>2_fpr, use type instead
1854         of mode with fsimp.
1855         (extend<DSF:mode><BFP:mode>2): Rename to
1856         extend<DSF:mode><BFP:mode>2<BFP:tf_fpr>.
1857         (<FPINT:fpint_name><BFP:mode>2): Rename to
1858         <FPINT:fpint_name><BFP:mode>2<BFP:tf_fpr>, use type instead of
1859         mode with fsimp.
1860         (rint<BFP:mode>2): Rename to rint<BFP:mode>2<BFP:tf_fpr>, use
1861         type instead of mode with fsimp.
1862         (<FPINT:fpint_name><DFP:mode>2): Use type instead of mode for
1863         fsimp.
1864         (rint<DFP:mode>2): Likewise.
1865         (trunc<BFP:mode><DFP_ALL:mode>2): Rename to
1866         trunc<BFP:mode><DFP_ALL:mode>2<BFP:tf_fpr>.
1867         (trunc<DFP_ALL:mode><BFP:mode>2): Rename to
1868         trunc<DFP_ALL:mode><BFP:mode>2<BFP:tf_fpr>.
1869         (extend<BFP:mode><DFP_ALL:mode>2): Rename to
1870         extend<BFP:mode><DFP_ALL:mode>2<BFP:tf_fpr>.
1871         (extend<DFP_ALL:mode><BFP:mode>2): Rename to
1872         extend<DFP_ALL:mode><BFP:mode>2<BFP:tf_fpr>.
1873         (add<mode>3): Rename to add<mode>3<tf_fpr>, use type instead of
1874         mode with fsimp.
1875         (*add<mode>3_cc): Use type instead of mode with fsimp.
1876         (*add<mode>3_cconly): Likewise.
1877         (sub<mode>3): Rename to sub<mode>3<tf_fpr>, use type instead of
1878         mode with fsimp.
1879         (*sub<mode>3_cc): Use type instead of mode with fsimp.
1880         (*sub<mode>3_cconly): Likewise.
1881         (mul<mode>3): Rename to mul<mode>3<tf_fpr>, use type instead of
1882         mode with fsimp.
1883         (fma<mode>4): Restrict using s390_fma_allowed_p.
1884         (fms<mode>4): Restrict using s390_fma_allowed_p.
1885         (div<mode>3): Rename to div<mode>3<tf_fpr>, use type instead of
1886         mode with fdiv.
1887         (neg<mode>2): Rename to neg<mode>2<tf_fpr>.
1888         (*neg<mode>2_cc): Use type instead of mode with fsimp.
1889         (*neg<mode>2_cconly): Likewise.
1890         (*neg<mode>2_nocc): Likewise.
1891         (*neg<mode>2): Likeiwse.
1892         (abs<mode>2): Rename to abs<mode>2<tf_fpr>, use type instead of
1893         mode with fdiv.
1894         (*abs<mode>2_cc): Use type instead of mode with fsimp.
1895         (*abs<mode>2_cconly): Likewise.
1896         (*abs<mode>2_nocc): Likewise.
1897         (*abs<mode>2): Likewise.
1898         (*negabs<mode>2_cc): Likewise.
1899         (*negabs<mode>2_cconly): Likewise.
1900         (*negabs<mode>2_nocc): Likewise.
1901         (*negabs<mode>2): Likewise.
1902         (sqrt<mode>2): Rename to sqrt<mode>2<tf_fpr>, use type instead
1903         of mode with fsqrt.
1904         (cbranch<mode>4): Use FP_ANYTF instead of FP.
1905         (copysign<mode>3): Rename to copysign<mode>3<tf_fpr>, use type
1906         instead of mode with fsimp.
1907         * config/s390/s390.opt (flag_vx_long_double_fma): New
1908         undocumented option.
1909         * config/s390/vector.md (V_HW): Add TF for z14+.
1910         (V_HW2): Likewise.
1911         (VFT): Likewise.
1912         (VF_HW): Likewise.
1913         (V_128): Likewise.
1914         (tf_vr): New mode_attr.
1915         (tointvec): Add TF.
1916         (mov<mode>): Rename to mov<mode><tf_vr>.
1917         (movetf): New dispatcher.
1918         (*vec_tf_to_v1tf): Rename to *vec_tf_to_v1tf_fpr, restrict to
1919         z13-.
1920         (*vec_tf_to_v1tf_vr): New pattern for z14+.
1921         (*fprx2_to_tf): Likewise.
1922         (*mov_tf_to_fprx2_0): Likewise.
1923         (*mov_tf_to_fprx2_1): Likewise.
1924         (add<mode>3): Rename to add<mode>3<tf_vr>.
1925         (addtf3): New dispatcher.
1926         (sub<mode>3): Rename to sub<mode>3<tf_vr>.
1927         (subtf3): New dispatcher.
1928         (mul<mode>3): Rename to mul<mode>3<tf_vr>.
1929         (multf3): New dispatcher.
1930         (div<mode>3): Rename to div<mode>3<tf_vr>.
1931         (divtf3): New dispatcher.
1932         (sqrt<mode>2): Rename to sqrt<mode>2<tf_vr>.
1933         (sqrttf2): New dispatcher.
1934         (fma<mode>4): Restrict using s390_fma_allowed_p.
1935         (fms<mode>4): Likewise.
1936         (neg_fma<mode>4): Likewise.
1937         (neg_fms<mode>4): Likewise.
1938         (neg<mode>2): Rename to neg<mode>2<tf_vr>.
1939         (negtf2): New dispatcher.
1940         (abs<mode>2): Rename to abs<mode>2<tf_vr>.
1941         (abstf2): New dispatcher.
1942         (float<mode>tf2_vr): New forwarder.
1943         (float<mode>tf2): New dispatcher.
1944         (floatuns<mode>tf2_vr): New forwarder.
1945         (floatuns<mode>tf2): New dispatcher.
1946         (fix_trunctf<mode>2_vr): New forwarder.
1947         (fix_trunctf<mode>2): New dispatcher.
1948         (fixuns_trunctf<mode>2_vr): New forwarder.
1949         (fixuns_trunctf<mode>2): New dispatcher.
1950         (<FPINT:fpint_name><VF_HW:mode>2<VF_HW:tf_vr>): New pattern.
1951         (<FPINT:fpint_name>tf2): New forwarder.
1952         (rint<mode>2<tf_vr>): New pattern.
1953         (rinttf2): New forwarder.
1954         (*trunctfdf2_vr): New pattern.
1955         (trunctfdf2_vr): New forwarder.
1956         (trunctfdf2): New dispatcher.
1957         (trunctfsf2_vr): New forwarder.
1958         (trunctfsf2): New dispatcher.
1959         (extenddftf2_vr): New pattern.
1960         (extenddftf2): New dispatcher.
1961         (extendsftf2_vr): New forwarder.
1962         (extendsftf2): New dispatcher.
1963         (signbittf2_vr): New forwarder.
1964         (signbittf2): New dispatchers.
1965         (isinftf2_vr): New forwarder.
1966         (isinftf2): New dispatcher.
1967         * config/s390/vx-builtins.md (*vftci<mode>_cconly): Use VF_HW
1968         instead of VECF_HW, add missing constraint, add vw support.
1969         (vftci<mode>_intcconly): Use VF_HW instead of VECF_HW.
1970         (*vftci<mode>): Rename to vftci<mode>, use VF_HW instead of
1971         VECF_HW, and vw support.
1972         (vftci<mode>_intcc): Use VF_HW instead of VECF_HW.
1974 2020-11-10  Eric Botcazou  <ebotcazou@adacore.com>
1976         * range-op.cc (operator_logical_not::fold_range): Tidy up.
1977         (operator_logical_not::op1_range): Call above method.
1978         (operator_bitwise_not::fold_range): If the type is compatible
1979         with boolean, call op_logical_not.fold_range.
1980         (operator_bitwise_not::op1_range): If the type is compatible
1981         with boolean, call op_logical_not.op1_range.
1983 2020-11-10  Richard Biener  <rguenther@suse.de>
1985         * tree-ssa-pre.c (pre_expr_d::value_id): Add.
1986         (constant_value_expressions): Turn into an array of pre_expr.
1987         (get_or_alloc_expr_for_nary): New function.
1988         (get_or_alloc_expr_for_reference): Likewise.
1989         (add_to_value): For constant values only ever add a single
1990         CONSTANT.
1991         (get_expr_value_id): Return the new value_id member.
1992         (vn_valnum_from_value_id): Split out and simplify constant
1993         value id handling.
1994         (get_or_alloc_expr_for_constant): Set the value_id member.
1995         (phi_translate_1): Use get_or_alloc_expr_for_*.
1996         (compute_avail): Likewise.
1997         (bitmap_find_leader): Simplify constant value id handling.
1999 2020-11-10  Alex Coplan  <alex.coplan@arm.com>
2001         * doc/md.texi (Modifiers): Fix grammar in description of
2002         earlyclobber constraint modifier.
2004 2020-11-10  Jakub Jelinek  <jakub@redhat.com>
2006         PR tree-optimization/97764
2007         * tree-ssa-sccvn.c (vn_walk_cb_data::push_partial_def): For
2008         little-endian stores with negative pd.offset, subtract
2009         BITS_PER_UNIT - amnt from size if amnt is non-zero.
2011 2020-11-10  Richard Biener  <rguenther@suse.de>
2013         PR tree-optimization/97760
2014         * tree-vect-loop.c (check_reduction_path): Reject
2015         reduction paths we do not handle in epilogue generation.
2017 2020-11-10  Aldy Hernandez  <aldyh@redhat.com>
2019         PR tree-optimization/97767
2020         * value-range.cc (dump_bound_with_infinite_markers): Use
2021         wi::min_value and wi::max_value.
2022         (range_tests_strict_enum): New.
2023         (range_tests): Call range_tests_strict_enum.
2024         * value-range.h (irange::varying_p): Use wi::min_value
2025         and wi::max_value.
2026         (irange::set_varying): Same.
2027         (irange::normalize_min_max): Remove comment.
2029 2020-11-10  Andrew MacLeod  <amacleod@redhat.com>
2031         PR tree-optimization/97567
2032         * gimple-range-gori.cc: (gori_compute::logical_combine): False
2033         OR operations should intersect the 2 results.
2034         (gori_compute::compute_logical_operands_in_chain): If def chains
2035         are outside the current basic block, don't follow them.
2037 2020-11-09  Claudiu Zissulescu  <claziss@synopsys.com>
2039         * config/arc/arc.c (arc_split_move): Recognize vadd2 instructions.
2040         * config/arc/arc.md (movdi_insn): Update pattern to use vadd2
2041         instructions.
2042         (movdf_insn): Likewise.
2043         (maddhisi4): New pattern.
2044         (umaddhisi4): Likewise.
2045         * config/arc/simdext.md (mov<mode>_int): Update pattern to use
2046         vadd2.
2047         (sdot_prodv4hi): New pattern.
2048         (udot_prodv4hi): Likewise.
2049         (arc_vec_<V_US>mac_hi_v4hi): Update/renamed to
2050         arc_vec_<V_US>mac_v2hiv2si.
2051         (arc_vec_<V_US>mac_v2hiv2si_zero): New pattern.
2052         * config/arc/constraints.md (Ral): Accumulator register
2053         constraint.
2055 2020-11-09  Aldy Hernandez  <aldyh@redhat.com>
2057         * function-tests.c (test_ranges): Call range_op_tests.
2058         * range-op.cc (build_range3): Move to value-range.cc.
2059         (range3_tests): Same.
2060         (int_range_max_tests): Same.
2061         (multi_precision_range_tests): Same.
2062         (range_tests): Same.
2063         (operator_tests): Split up...
2064         (range_op_tests): Split up...
2065         (range_op_cast_tests): ...here.
2066         (range_op_lshift_tests): ...here.
2067         (range_op_rshift_tests): ...here.
2068         (range_op_bitwise_and_tests): ...here.
2069         * selftest.h (range_op_tests): New.
2070         * value-range.cc (build_range3): New.
2071         (range_tests_irange3): New.
2072         (range_tests_int_range_max): New.
2073         (range_tests_legacy): New.
2074         (range_tests_misc): New.
2075         (range_tests): New.
2077 2020-11-09  Richard Biener  <rguenther@suse.de>
2079         PR tree-optimization/97761
2080         * tree-vect-slp.c (vect_bb_slp_mark_live_stmts): Remove
2081         premature end of DFS walk.
2083 2020-11-09  Aldy Hernandez  <aldyh@redhat.com>
2085         * value-range.cc (irange::swap_out_of_order_endpoints): Rewrite
2086         into static function.
2087         (irange::set): Cleanup redundant manipulations.
2088         * value-range.h (irange::normalize_min_max): Modify object
2089         in-place instead of modifying arguments.
2091 2020-11-09  Andrea Corallo  <andrea.corallo@arm.com>
2093         * config/aarch64/aarch64-builtins.c
2094         (aarch64_expand_fcmla_builtin): Do not alter force_reg returned
2095         register.
2097 2020-11-09  Richard Biener  <rguenther@suse.de>
2099         PR tree-optimization/97753
2100         * tree-vect-loop.c (vectorizable_induction): Fill vec_steps
2101         when CSEing inside the group.
2103 2020-11-09  Richard Biener  <rguenther@suse.de>
2105         PR tree-optimization/97746
2106         * tree-vect-patterns.c (vect_determine_precisions): First walk PHIs.
2108 2020-11-09  Richard Biener  <rguenther@suse.de>
2110         * tree-ssa-pre.c (get_representative_for): CSE VN_INFO calls.
2111         (create_expression_by_pieces): Likewise.
2112         (insert_into_preds_of_block): Likewsie.
2113         (do_pre_regular_insertion): Likewsie.
2114         * tree-ssa-sccvn.c (eliminate_dom_walker::eliminate_insert):
2115         Likewise.
2116         (eliminate_dom_walker::eliminate_stmt): Likewise.
2118 2020-11-09  Richard Biener  <rguenther@suse.de>
2120         PR tree-optimization/97765
2121         * tree-ssa-pre.c (bb_bitmap_sets::phi_translate_table): Add.
2122         (PHI_TRANS_TABLE): New macro.
2123         (phi_translate_table): Remove.
2124         (expr_pred_trans_d::pred): Remove.
2125         (expr_pred_trans_d::hash): Simplify.
2126         (expr_pred_trans_d::equal): Likewise.
2127         (phi_trans_add): Adjust.
2128         (phi_translate): Likewise.  Remove hash-table expansion
2129         detection and optimization.
2130         (phi_translate_set): Allocate PHI_TRANS_TABLE here.
2131         (init_pre): Adjsust.
2132         (fini_pre): Free PHI_TRANS_TABLE.
2134 2020-11-09  Lili Cui  <lili.cui@intel.com>
2136         PR target/97685
2137         * config/i386/i386.h:
2138         (PTA_BROADWELL): Delete PTA_PRFCHW.
2139         (PTA_SILVERMONT): Add PTA_PRFCHW.
2140         (PTA_KNL): Add PTA_PREFETCHWT1.
2141         (PTA_TREMONT): Add PTA_MOVDIRI, PTA_MOVDIR64B, PTA_CLDEMOTE and PTA_WAITPKG.
2142         * doc/invoke.texi: Delete PREFETCHW for broadwell, skylake, knl, knm,
2143         skylake-avx512, cannonlake, icelake-client, icelake-server, cascadelake,
2144         cooperlake, tigerlake and sapphirerapids.
2145         Add PREFETCHW for silvermont, goldmont, goldmont-plus and tremont.
2146         Add XSAVEC and XSAVES for goldmont, goldmont-plus and tremont.
2147         Add MOVDIRI, MOVDIR64B, CLDEMOTE and WAITPKG for tremont.
2148         Add KEYLOCKER and HREST for alderlake.
2149         Add AMX-BF16, AMX-TILE, AMX-INT8 and UINTR for sapphirerapids.
2150         Add KEYLOCKER for tigerlake.
2152 2020-11-09  Kewen Lin  <linkw@linux.ibm.com>
2154         PR rtl-optimization/97705
2155         * ira.c (ira): Refactor some regstat free/init/compute invocation
2156         into lambda function regstat_recompute_for_max_regno, and call it
2157         when max_regno increases as remove_scratches succeeds.
2159 2020-11-08  David Edelsohn  <dje.gcc@gmail.com>
2161         * config/rs6000/rs6000.c (rs6000_mangle_decl_assembler_name): Change
2162         DECL_IS_BUILTIN -> DECL_IS_UNDECLARED_BUILTIN.
2164 2020-11-07  Martin Uecker  <muecker@gwdg.de>
2166         * doc/extend.texi: Document mixing labels and code.
2167         * doc/invoke.texi: Likewise.
2169 2020-11-06  Segher Boessenkool  <segher@kernel.crashing.org>
2171         * config/rs6000/rs6000.md (@tablejump<mode>_normal): Don't abuse
2172         operands[].
2173         (@tablejump<mode>_nospec): Ditto.
2175 2020-11-06  Peter Bergner  <bergner@linux.ibm.com>
2177         * config/rs6000/rs6000.h (BIGGEST_ALIGNMENT): Revert previous commit
2178         so as not to break the ABI.
2179         * config/rs6000/rs6000-call.c (rs6000_init_builtins): Set the ABI
2180         mandated alignment for __vector_pair and __vector_quad types.
2182 2020-11-06  Jeff Law  <law@torsion.usersys.redhat.com>
2184         PR target/91489
2185         * config/i386/i386.md (simple_return): Also check
2186         for ms_hook_prologue function attribute.
2187         * config/i386/i386.c (ix86_can_use_return_insn_p):
2188         Also check for ms_hook_prologue function attribute.
2189         * config/i386/i386-protos.h (ix86_function_ms_hook_prologue): Declare.
2191 2020-11-06  Segher Boessenkool  <segher@kernel.crashing.org>
2193         PR target/96933
2194         * config/rs6000/rs6000.c (rs6000_expand_vector_init): Use
2195         TARGET_POWERPC64 instead of TARGET_64BIT.
2197 2020-11-06  Joseph Myers  <joseph@codesourcery.com>
2199         * builtins.def (BUILT_IN_NANSD32, BUILT_IN_NANSD64)
2200         (BUILT_IN_NANSD128): New built-in functions.
2201         * fold-const-call.c (fold_const_call): Handle the new built-in
2202         functions.
2203         * doc/extend.texi (__builtin_nansd32, __builtin_nansd64)
2204         (__builtin_nansd128): Document.
2205         * doc/sourcebuild.texi (Effective-Target Keywords): Document
2206         fenv_exceptions_dfp.
2208 2020-11-06  Bin Cheng  <bin.cheng@linux.alibaba.com>
2210         * tree-ssa-uninit.c (find_var_cmp_const): New function.
2211         (use_pred_not_overlap_with_undef_path_pred): Call above.
2213 2020-11-06  Iain Sandoe  <iain@sandoe.co.uk>
2215         * config/darwin-c.c: Allow for Darwin20 to correspond to macOS 11.
2216         * config/darwin-driver.c: Likewise.
2218 2020-11-06  Richard Biener  <rguenther@suse.de>
2220         * tree-ssa-pre.c (expr_pred_trans_d): Modify so elements
2221         are embedded rather than allocated.  Remove hashval member,
2222         make all members integers.
2223         (phi_trans_add): Adjust accordingly.
2224         (phi_translate): Likewise.  Deal with re-allocation
2225         of the table.
2227 2020-11-06  Andrew MacLeod  <amacleod@redhat.com>
2229         PR tree-optimization/97737
2230         PR tree-optimization/97741
2231         * gimple-range.cc: (gimple_ranger::range_of_stmt): Intersect newly
2232         calculated ranges with the existing known global range.
2234 2020-11-06  Darius Galis  <darius.galis@cyberthorstudios.com>
2236         * config/rx/rx.md (CTRLREG_PC): Add.
2237         * config/rx/rx.c (CTRLREG_PC): Add
2238         (rx_expand_builtin_mvtc): Add warning: PC register cannot
2239         be used as dest.
2241 2020-11-06  Nathan Sidwell  <nathan@acm.org>
2243         * tree.h (DECL_IS_BUILTIN): Rename to ...
2244         (DECL_IS_UNDECLARED_BUILTIN): ... here.  No need to use SOURCE_LOCUS.
2245         * calls.c (maybe_warn_alloc_args_overflow): Adjust for rename.
2246         * cfgexpand.c (pass_expand::execute): Likewise.
2247         * dwarf2out.c (base_type_die, is_naming_typedef_decl): Likewise.
2248         * godump.c (go_decl, go_type_decl): Likewise.
2249         * print-tree.c (print_decl_identifier): Likewise.
2250         * tree-pretty-print.c (dump_generic_node): Likewise.
2251         * tree-ssa-ccp.c (pass_post_ipa_warn::execute): Likewise.
2252         * xcoffout.c (xcoff_assign_fundamental_type_number): Likewise.
2254 2020-11-06  David Candler  <david.candler@arm.com>
2256         * config/aarch64/aarch64-builtins.c
2257         (TYPES_SHIFT2IMM): Add define.
2258         (TYPES_SHIFT2IMM_UUSS): Add define.
2259         (TYPES_USHIFT2IMM): Add define.
2260         * config/aarch64/aarch64-simd.md
2261         (aarch64_<sur>q<r>shr<u>n2_n<mode>): Add new insn for upper saturating shift right.
2262         * config/aarch64/aarch64-simd-builtins.def: Add intrinsics.
2263         * config/aarch64/arm_neon.h:
2264         (vqrshrn_high_n_s16): Expand using intrinsic rather than inline asm.
2265         (vqrshrn_high_n_s32): Likewise.
2266         (vqrshrn_high_n_s64): Likewise.
2267         (vqrshrn_high_n_u16): Likewise.
2268         (vqrshrn_high_n_u32): Likewise.
2269         (vqrshrn_high_n_u64): Likewise.
2270         (vqrshrun_high_n_s16): Likewise.
2271         (vqrshrun_high_n_s32): Likewise.
2272         (vqrshrun_high_n_s64): Likewise.
2273         (vqshrn_high_n_s16): Likewise.
2274         (vqshrn_high_n_s32): Likewise.
2275         (vqshrn_high_n_s64): Likewise.
2276         (vqshrn_high_n_u16): Likewise.
2277         (vqshrn_high_n_u32): Likewise.
2278         (vqshrn_high_n_u64): Likewise.
2279         (vqshrun_high_n_s16): Likewise.
2280         (vqshrun_high_n_s32): Likewise.
2281         (vqshrun_high_n_s64): Likewise.
2283 2020-11-06  Richard Sandiford  <richard.sandiford@arm.com>
2285         * config/aarch64/aarch64-modes.def (VNx2BF, VNx4BF): Adjust nunits
2286         and alignment based on the current VG.
2287         * config/aarch64/iterators.md (SVE_ALL, SVE_24, SVE_2, SVE_4): Add
2288         partial SVE BF modes.
2289         (UNSPEC_REVBHW): New unspec.
2290         (Vetype, Vesize, Vctype, VEL, Vel, vwcore, V_INT_CONTAINER)
2291         (v_int_container, VPRED, vpred): Handle partial SVE BF modes.
2292         (container_bits, Vcwtype): New mode attributes.
2293         * config/aarch64/aarch64-sve.md
2294         (@aarch64_sve_revbhw_<SVE_ALL:mode><PRED_HSD:mode>): New pattern.
2295         (@aarch64_sve_dup_lane<mode>): Extended from SVE_FULL to SVE_ALL.
2296         (@aarch64_sve_rev<mode>, @aarch64_sve_<perm_insn><mode>): Likewise.
2297         (@aarch64_sve_ext<mode>): Likewise.
2298         * config/aarch64/aarch64.c (aarch64_classify_vector_mode): Handle
2299         E_VNx2BFmode and E_VNx4BFmode.
2300         (aarch64_evpc_rev_local): Base the analysis on the container size
2301         instead of the element size.  Use the new aarch64_sve_revbhw
2302         patterns for SVE.
2303         (aarch64_evpc_dup): Handle partial SVE data modes.  Use the
2304         container size instead of the element size when applying the
2305         SVE immediate limit.  Fix a previously incorrect bounds check.
2306         (aarch64_expand_vec_perm_const_1): Handle partial SVE data modes.
2308 2020-11-06  Martin Liska  <mliska@suse.cz>
2310         * common.opt: Add new -fbit-tests option.
2311         * doc/invoke.texi: Document the option.
2312         * tree-switch-conversion.c (bit_test_cluster::find_bit_tests):
2313         Use the option.
2314         * tree-switch-conversion.h (is_enabled): New function.
2316 2020-11-06  Richard Biener  <rguenther@suse.de>
2318         * tree-ssa-sccvn.h (get_max_constant_value_id): Declare.
2319         (get_next_constant_value_id): Likewise.
2320         (value_id_constant_p): Inline and simplify.
2321         * tree-ssa-sccvn.c (constant_value_ids): Remove.
2322         (next_constant_value_id): Add.
2323         (get_or_alloc_constant_value_id): Adjust.
2324         (value_id_constant_p): Remove definition.
2325         (get_max_constant_value_id): Define.
2326         (get_next_value_id): Add assert for overflow.
2327         (get_next_constant_value_id): Define.
2328         (run_rpo_vn): Adjust.
2329         (free_rpo_vn): Likewise.
2330         (do_rpo_vn): Initialize next_constant_value_id.
2331         * tree-ssa-pre.c (constant_value_expressions): New.
2332         (add_to_value): Split into constant/non-constant value
2333         handling.  Avoid exact re-allocation.
2334         (vn_valnum_from_value_id): Adjust.
2335         (phi_translate_1): Remove spurious exact re-allocation.
2336         (bitmap_find_leader): Adjust.  Make sure we return
2337         a CONSTANT value for a constant value id.
2338         (do_pre_regular_insertion): Use 2 auto-elements for avail.
2339         (do_pre_partial_partial_insertion): Likewise.
2340         (init_pre): Allocate constant_value_expressions.
2341         (fini_pre): Release constant_value_expressions.
2343 2020-11-06  Richard Biener  <rguenther@suse.de>
2345         PR tree-optimization/97706
2346         * tree-vect-patterns.c (possible_vector_mask_operation_p):
2347         PHIs are possible mask operations.
2348         (vect_determine_mask_precision): Handle PHIs.
2349         (vect_determine_precisions): Walk PHIs in BB analysis.
2351 2020-11-06  Richard Biener  <rguenther@suse.de>
2353         * tree-vect-slp.c (vect_analyze_slp): Pass down the
2354         SLP graph entry kind.
2355         (vect_analyze_slp_instance): Simplify.
2356         (vect_build_slp_instance): Adjust.
2357         (vect_slp_check_for_constructors): Perform more
2358         eligibility checks here.
2360 2020-11-06  Jan Hubicka  <jh@suse.cz>
2362         * ipa-ref.h (enum ipa_ref_use): Remove GTY marker.
2363         (struct ipa_ref): Remove GTY marker; reorder for better packing.
2364         (struct ipa_ref_list): Remove GTY marker; turn references
2365         nad referring to va_heap, vl_ptr vectors; update accesors.
2366         * cgraph.h (symtab_node::iterate_reference): Update.
2367         * ipa-ref.c (ipa_ref::remove_reference): Update.
2368         * symtab.c (symtab_node::create_reference): Update.
2369         (symtab_node::remove_all_references): Update.
2370         (symtab_node::resolve_alias): Update.
2372 2020-11-06  Jakub Jelinek  <jakub@redhat.com>
2374         * ipa-modref-tree.h: Fix comment typos.
2375         * ipa-modref.c: Likewise.
2377 2020-11-06  Andreas Krebbel  <krebbel@linux.ibm.com>
2379         * config/s390/s390.c (s390_option_override_internal): Remove
2380         override of inline params.
2382 2020-11-06  Richard Biener  <rguenther@suse.de>
2384         PR tree-optimization/97706
2385         * tree-vect-patterns.c (vect_determine_mask_precision):
2386         Remove worklist operation.
2387         (vect_determine_stmt_precisions): Do not call
2388         vect_determine_mask_precision here.
2389         (vect_determine_precisions): Compute mask precision
2390         in a forward walk.
2392 2020-11-06  Richard Biener  <rguenther@suse.de>
2394         PR tree-optimization/97732
2395         * tree-vect-loop.c (vectorizable_induction): Convert the
2396         init elements to the vector component type.
2397         * gimple-fold.c (gimple_build_vector): Use CONSTANT_CLASS_P
2398         rather than TREE_CONSTANT to determine if elements are
2399         eligible for VECTOR_CSTs.
2401 2020-11-06  Jan Hubicka  <jh@suse.cz>
2403         * attr-fnspec.h (attr_fnspec::get_str): New accessor
2404         * ipa-fnsummary.c (read_ipa_call_summary): Store also parm info
2405         for builtins.
2406         * ipa-modref.c (class fnspec_summary): New type.
2407         (class fnspec_summaries_t): New type.
2408         (modref_summary::modref_summary): Initialize writes_errno.
2409         (struct modref_summary_lto): Add writes_errno.
2410         (modref_summary_lto::modref_summary_lto): Initialize writes_errno.
2411         (modref_summary::dump): Check for NULL pointers.
2412         (modref_summary_lto::dump): Dump writes_errno.
2413         (collapse_loads): Move up in source file.
2414         (collapse_stores): New function.
2415         (process_fnspec): Handle also internal calls.
2416         (analyze_call): Likewise.
2417         (analyze_stmt): Store fnspec string if needed.
2418         (analyze_function): Initialize fnspec_sumarries.
2419         (modref_summaries_lto::duplicate): Copy writes_errno.
2420         (modref_write): Store writes_errno and fnspec summaries.
2421         (read_section): Read writes_errno and fnspec summaries.
2422         (modref_read): Initialize fnspec summaries.
2423         (update_signature): Fix formating.
2424         (compute_parm_map): Return true if sucessful.
2425         (get_parm_type): New function.
2426         (get_access_for_fnspec): New function.
2427         (propagate_unknown_call): New function.
2428         (modref_propagate_in_scc): Use it.
2429         (pass_ipa_modref::execute): Delete fnspec_summaries.
2430         (ipa_modref_c_finalize): Delete fnspec_summaries.
2431         * ipa-prop.c: Include attr-fnspec.h.
2432         (ipa_compute_jump_functions_for_bb):  Also compute jump functions
2433         for functions with fnspecs.
2434         (ipa_read_edge_info): Read jump functions for builtins.
2436 2020-11-06  Jan Hubicka  <jh@suse.cz>
2438         * ipa-fnsummary.h (class size_time_entry): Do not GTY annotate.
2439         (class ipa_fnsummary): Turn size_time_table to auto_vec and
2440         call_size_time_table to effecient vec; update constructors.
2441         * ipa-fnsummary.c (ipa_fn_summary::account_size_time): Update.
2442         (ipa_fn_summary::~ipa_fn_summary): Update.
2443         (ipa_fn_summary_t::duplicate): Update.
2444         (ipa_dump_fn_summary): Update.
2445         (set_switch_stmt_execution_predicate): Update.
2446         (analyze_function_body): Update.
2447         (estimate_calls_size_and_time): Update.
2448         (ipa_call_context::estimate_size_and_time): Update.
2449         (ipa_merge_fn_summary_after_inlining): Update.
2450         (ipa_update_overall_fn_summary): Update.
2451         (inline_read_section): Update.
2452         (ipa_fn_summary_write): Update.
2454 2020-11-06  Richard Biener  <rguenther@suse.de>
2456         PR tree-optimization/97733
2457         * tree-vect-slp.c (vect_analyze_slp_instance): If less
2458         than two reductions were relevant or live do nothing.
2460 2020-11-06  Jeff Law  <law@redhat.com>
2462         PR tree-optimization/97223
2463         * match.pd (overflow detection and optimization): Handle conversions.
2465 2020-11-06  Eugene Rozenfeld  <erozen@microsoft.com>
2467         * match.pd (x >> x): New pattern.
2469 2020-11-06  Kito Cheng  <kito.cheng@sifive.com>
2471         * common/config/riscv/riscv-common.c (riscv_implied_info):
2472         Add static and const.
2473         (riscv_subset_list::handle_implied_ext): Add const due to
2474         riscv_implied_info changed to const.
2476 2020-11-06  Kito Cheng  <kito.cheng@sifive.com>
2478         PR target/96307
2479         * toplev.c (process_options): Remove param_asan_stack checking for kasan
2480         option checking.
2482 2020-11-05  Marek Polacek  <polacek@redhat.com>
2484         PR c++/97675
2485         * doc/invoke.texi: Document -Wexceptions.
2487 2020-11-05  Marek Polacek  <polacek@redhat.com>
2489         PR c++/25814
2490         * doc/invoke.texi: Document -Wvexing-parse.
2492 2020-11-05  Andrew MacLeod  <amacleod@redhat.com>
2494         PR tree-optimization/97725
2495         * range-op.cc (operator_equal::fold_range): Use new tmp value.
2496         (operator_not_equal::fold_range): Ditto.
2497         * value-query.cc (range_query::value_of_expr): Use int_range_max
2498         not a value_range.
2499         (range_query::value_on_edge): Ditto.
2500         (range_query::value_of_stmt): Ditto.
2502 2020-11-05  Olivier Hainque  <hainque@adacore.com>
2504         * config/aarch64/aarch64-vxworks.h (TARGET_OS_USES_R18):
2505         Remove definition.
2506         (STATIC_CHAIN_REGNUM): Redefine to 9.
2508 2020-11-05  Olivier Hainque  <hainque@adacore.com>
2510         * config/aarch64/aarch64.md: Define PROBE_STACK_FIRST_REGNUM
2511         and PROBE_STACK_SECOND_REGNUM constants, designating r10/r11.
2512         Replacements for the PROBE_STACK_FIRST/SECOND_REG constants in
2513         aarch64.c.
2514         * config/aarch64/aarch64.c (PROBE_STACK_FIRST_REG): Remove.
2515         (PROBE_STACK_SECOND_REG): Remove.
2516         (aarch64_emit_probe_stack_range): Adjust to the _REG -> _REGNUM
2517         suffix update for PROBE_STACK register numbers.
2519 2020-11-05  Jan Hubicka  <jh@suse.cz>
2521         * gimple.c (gimple_call_fnspec): Handle C++ new and delete.
2522         * gimple.h (gimple_call_from_new_or_delete): Constify parameter.
2524 2020-11-05  Aldy Hernandez  <aldyh@redhat.com>
2526         PR tree-optimization/97721
2527         * gimple-range.cc (get_tree_range): Drop overflow from constants.
2529 2020-11-05  David Malcolm  <dmalcolm@redhat.com>
2531         * tree-diagnostic-path.cc (struct path_summary::event_range): Move
2532         out of path_summary to...
2533         (struct event_range): ...here.
2534         (class path_summary): Convert to...
2535         (struct path_summary): ...this.
2536         (path_summary::m_ranges): Drop "private".
2537         (path_summary::print): Convert to...
2538         (print_path_summary_as_text): ...this, passing in the path_summary
2539         explicitly.
2540         (default_tree_diagnostic_path_printer): Update for above change.
2541         (selftest::test_empty_path): Likewise.
2542         (selftest::test_intraprocedural_path): Likewise.
2543         (selftest::test_interprocedural_path_1): Likewise.
2544         (selftest::test_interprocedural_path_2): Likewise.
2545         (selftest::test_recursion): Likewise.
2547 2020-11-05  qing zhao  <qinzhao@gcc.gnu.org>
2549         PR target/97715
2550         * config/i386/i386.c (zero_all_st_registers): Return
2551         earlier when the FPU is disabled.
2553 2020-11-05  Jan Hubicka  <jh@suse.cz>
2555         * ipa-modref.c (parm_map_for_arg): Initialize parm_offset and
2556         parm_offset_knonw.
2557         (read_section): Set writes_errno to false.
2559 2020-11-05  Richard Biener  <rguenther@suse.de>
2561         * tree-vect-data-refs.c (vect_slp_analyze_node_dependences):
2562         Use the original stmts.
2563         (vect_slp_analyze_node_alignment): Use the pattern stmt.
2564         * tree-vect-slp.c (vect_fixup_store_groups_with_patterns):
2565         New function.
2566         (vect_slp_analyze_bb_1): Call it.
2568 2020-11-05  Tamar Christina  <tamar.christina@arm.com>
2570         * tree-vect-slp.c (vect_slp_tree_permute_noop_p): New.
2571         (vect_optimize_slp): Optimize permutes.
2572         (vectorizable_slp_permutation): Fix typo.
2574 2020-11-05  Richard Biener  <rguenther@suse.de>
2576         PR debug/97718
2577         * dwarf2out.c (add_abstract_origin_attribute): Make sure to
2578         point to the abstract instance.
2580 2020-11-05  Tamar Christina  <tamar.christina@arm.com>
2582         * tree-vect-loop.c (vect_analyze_loop_2): Check kind.
2583         * tree-vect-slp.c (vect_build_slp_instance): New.
2584         (enum slp_instance_kind): Move to...
2585         * tree-vectorizer.h (enum slp_instance_kind): .. Here
2586         (SLP_INSTANCE_KIND): New.
2588 2020-11-05  Kewen Lin  <linkw@linux.ibm.com>
2590         PR target/96933
2591         * config/rs6000/rs6000.c (rs6000_expand_vector_init): Use direct move
2592         instructions for vector construction with char/short types.
2593         * config/rs6000/rs6000.md (p8_mtvsrwz_v16qisi2): New define_insn.
2594         (p8_mtvsrd_v16qidi2): Likewise.
2596 2020-11-04  Tamar Christina  <tamar.christina@arm.com>
2598         * tree-vect-slp.c (vect_analyze_slp_instance): Moved load/store lanes
2599         check to ...
2600         * tree-vect-loop.c (vect_analyze_loop_2): ..Here
2602 2020-11-04  Ilya Leoshkevich  <iii@linux.ibm.com>
2604         * config/s390/s390.c (NR_C_MODES): Unhardcode.
2605         (s390_alloc_pool): Use size_t for iterating from 0 to
2606         NR_C_MODES.
2607         (s390_add_constant): Likewise.
2608         (s390_find_constant): Likewise.
2609         (s390_dump_pool): Likewise.
2610         (s390_free_pool): Likewise.
2612 2020-11-04  Ilya Leoshkevich  <iii@linux.ibm.com>
2614         * config/s390/s390.md (RRe): Remove.
2615         (RXe): Remove.
2617 2020-11-04  Andrew MacLeod  <amacleod@redhat.com>
2619         PR tree-optimization/97515
2620         * gimple-range-cache.h (class ranger_cache): New prototypes plus
2621         temporal cache pointer.
2622         * gimple-range-cache.cc (struct range_timestamp): New.
2623         (class temporal_cache): New.
2624         (temporal_cache::temporal_cache): New.
2625         (temporal_cache::~temporal_cache): New.
2626         (temporal_cache::get_timestamp): New.
2627         (temporal_cache::set_dependency): New.
2628         (temporal_cache::temporal_value): New.
2629         (temporal_cache::current_p): New.
2630         (temporal_cache::set_timestamp): New.
2631         (temporal_cache::set_always_current): New.
2632         (ranger_cache::ranger_cache): Allocate the temporal cache.
2633         (ranger_cache::~ranger_cache): Free temporal cache.
2634         (ranger_cache::get_non_stale_global_range): New.
2635         (ranger_cache::set_global_range): Add a timestamp.
2636         (ranger_cache::register_dependency): New.  Add timestamp dependency.
2637         * gimple-range.cc (gimple_ranger::range_of_range_op): Add operand
2638         dependencies.
2639         (gimple_ranger::range_of_phi): Ditto.
2640         (gimple_ranger::range_of_stmt): Check if global range is stale, and
2641         recalculate if so.
2643 2020-11-04  Tobias Burnus  <tobias@codesourcery.com>
2645         * targhooks.c (default_zero_call_used_regs): Fix flag-name typo
2646         in sorry.
2648 2020-11-04  Richard Biener  <rguenther@suse.de>
2650         * tree-vectorizer.h (vectorizable_phi): Adjust prototype.
2651         * tree-vect-stmts.c (vect_transform_stmt): Adjust.
2652         (vect_analyze_stmt): Pass cost_vec to vectorizable_phi.
2653         * tree-vect-loop.c (vectorizable_phi): Do costing.
2655 2020-11-04  Richard Biener  <rguenther@suse.de>
2657         PR tree-optimization/97709
2658         * tree-vect-loop.c (vectorizable_live_operation): Set
2659         SSA_NAME_OCCURS_IN_ABNORMAL_PHI when necessary.
2661 2020-11-04  Jakub Jelinek  <jakub@redhat.com>
2663         PR tree-optimization/97690
2664         * tree-ssa-phiopt.c (conditional_replacement): Also optimize
2665         cond ? pow2p_cst : 0 as ((type) cond) << cst.
2667 2020-11-04  Richard Biener  <rguenther@suse.de>
2669         * tree-vect-loop.c (vectorizable_induction): Re-instantiate
2670         previously removed CSE of SLP IVs.
2672 2020-11-04  Uroš Bizjak  <ubizjak@gmail.com>
2674         * config/i386/i386-options.c (ix86_recompute_optlev_based_flags):
2675         Fix Intel MCU psABI comment w.r.t DEFAULT_PCC_STRUCT_RETURN.
2677 2020-11-04  Richard Biener  <rguenther@suse.de>
2679         PR bootstrap/97666
2680         * tree-vect-slp.c (vect_build_slp_tree_2): Revert previous
2681         fix and instead adjust the memset.
2683 2020-11-04  Pat Bernardi  <bernardi@adacore.com>
2685         * config/i386/i386elf.h (SUBTARGET_RETURN_IN_MEMORY): Remove.
2686         (ASM_OUTPUT_ASCII): Likewise.
2687         (DEFAULT_PCC_STRUCT_RETURN): Define.
2688         * config/i386/i386.c (ix86_return_in_memory): Remove
2689         SUBTARGET_RETURN_IN_MEMORY.
2691 2020-11-04  liuhongt  <hongtao.liu@intel.com>
2693         PR target/97540
2694         * ira.c: (ira_setup_alts): Extract memory from operand only
2695         for special memory constraint.
2696         * recog.c (asm_operand_ok): Ditto.
2697         * lra-constraints.c (process_alt_operands): MEM_P is
2698         required for normal memory constraint.
2700 2020-11-04  liuhongt  <hongtao.liu@intel.com>
2702         PR target/97532
2703         * lra-constraints.c (valid_address_p): Handle operand of
2704         special memory constraint.
2705         (process_address_1): Ditto.
2707 2020-11-03  Jan Hubicka  <hubicka@ucw.cz>
2709         PR ipa/97695
2710         * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Fix ICE with
2711         in dumping code.
2712         (cgraph_node::remove): Save clone info before releasing it and pass it
2713         to unregister.
2714         * cgraph.h (symtab_node::unregister): Add clone_info parameter.
2715         (cgraph_clone::unregister): Likewise.
2716         * cgraphclones.c (cgraph_node::find_replacement): Copy clone info
2717         * symtab-clones.cc (clone_infos_t::duplicate): Remove.
2718         (clone_info::get_create): Simplify.
2719         * symtab.c (symtab_node::unregister): Pass around clone info.
2720         * varpool.c (varpool_node::remove): Update.
2722 2020-11-03  Thomas Schwinge  <thomas@codesourcery.com>
2724         * omp-low.c (scan_omp_for) <OpenACC>: Use proper location to
2725         'inform' of enclosing parent compute construct.
2727 2020-11-03  Jan Hubicka  <hubicka@ucw.cz>
2729         PR ipa/97698
2730         * cgraphclones.c (duplicate_thunk_for_node): Check that info is
2731         non-NULL.
2733 2020-11-03  Uroš Bizjak  <ubizjak@gmail.com>
2735         * config/i386/i386.c (ix86_function_arg_regno_p): Use up to
2736         SSE_REGPARM_MAX registers to pass function parameters
2737         for 32bit Mach-O targets.
2738         * config/i386/i386.h (X86_32_MMX_REGPARM_MAX): New macro.
2739         (MMX_REGPARM_MAX): Use it.
2741 2020-11-03  Dennis Zhang  <dennis.zhang@arm.com>
2743         * config/aarch64/aarch64-simd-builtins.def (vget_lo_half): New entry.
2744         (vget_hi_half): Likewise.
2745         * config/aarch64/aarch64-simd.md (aarch64_vget_lo_halfv8bf): New entry.
2746         (aarch64_vget_hi_halfv8bf): Likewise.
2747         * config/aarch64/arm_neon.h (vget_low_bf16): New intrinsic.
2748         (vget_high_bf16): Likewise.
2750 2020-11-03  Yang Yang  <yangyang305@huawei.com>
2752         * cgraph.h (struct cgraph_simd_clone): Change field "simdlen" of
2753         struct cgraph_simd_clone from unsigned int to poly_uint64.
2754         * config/aarch64/aarch64.c
2755         (aarch64_simd_clone_compute_vecsize_and_simdlen): adaptation of
2756         operations on "simdlen".
2757         * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen):
2758         Printf formats update.
2759         * gengtype.c (main): Handle poly_uint64.
2760         * omp-simd-clone.c (simd_clone_mangle): Likewise.Re
2761         (simd_clone_adjust_return_type): Likewise.
2762         (create_tmp_simd_array): Likewise.
2763         (simd_clone_adjust_argument_types): Likewise.
2764         (simd_clone_init_simd_arrays): Likewise.
2765         (ipa_simd_modify_function_body): Likewise.
2766         (simd_clone_adjust): Likewise.
2767         (expand_simd_clones): Likewise.
2768         * poly-int-types.h (vector_unroll_factor): New macro.
2769         * poly-int.h (constant_multiple_p): Add two-argument versions.
2770         * tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise.
2772 2020-11-03  Richard Biener  <rguenther@suse.de>
2774         PR tree-optimization/97623
2775         * params.opt (-param=max-pre-hoist-insert-iterations): New.
2776         * doc/invoke.texi (max-pre-hoist-insert-iterations): Document.
2777         * tree-ssa-pre.c (insert): Do at most max-pre-hoist-insert-iterations
2778         hoist insert iterations.
2780 2020-11-03  Richard Biener  <rguenther@suse.de>
2782         PR middle-end/97579
2783         * gimple-isel.cc (gimple_expand_vec_cond_expr): Use
2784         the correct types for the vcond_mask/vec_cmp optab queries.
2786 2020-11-03  Andrew MacLeod  <amacleod@redhat.com>
2788         * gimple-range-cache.cc (ssa_global_cache::get_global_range): Return
2789         true if there was a previous range set.
2790         (ranger_cache::ranger_cache): Take a gimple_ranger parameter.
2791         (ranger_cache::set_global_range): Propagate the value if updating.
2792         (ranger_cache::propagate_cache): Renamed from iterative_cache_update.
2793         (ranger_cache::propagate_updated_value): New.  Split from:
2794         (ranger_cache::fill_block_cache): Split out value propagator.
2795         * gimple-range-cache.h (ssa_global_cache): Update prototypes.
2796         (ranger_cache): Update prototypes.
2798 2020-11-03  Andrew MacLeod  <amacleod@redhat.com>
2800         * gimple-range-cache.h (block_range_cache): Add new entry point.
2801         (ranger_cache): Privatize global abnd block cache members.
2802         * gimple-range-cache.cc (ssa_block_ranges::set_bb_range): Add bounds
2803         check.
2804         (ssa_block_ranges::set_bb_varying): Ditto.
2805         (ssa_block_ranges::get_bb_range): Ditto.
2806         (ssa_block_ranges::bb_range_p): Ditto.
2807         (block_range_cache::get_block_ranges): Fix formatting.
2808         (block_range_cache::query_block_ranges): New.
2809         (block_range_cache::get_bb_range): Use Query_block_ranges.
2810         (block_range_cache::bb_range_p): Ditto.
2811         (ranger_cache::dump): New.
2812         (ranger_cache::get_global_range): New.
2813         (ranger_cache::set_global_range): New.
2814         * gimple-range.cc (gimple_ranger::range_of_expr): Use new API.
2815         (gimple_ranger::range_of_stmt): Ditto.
2816         (gimple_ranger::export_global_ranges): Ditto.
2817         (gimple_ranger::dump): Ditto.
2819 2020-11-03  Bernd Edlinger  <bernd.edlinger@hotmail.de>
2821         * fold-const.c (getbyterep): Remove duplicated statement.
2823 2020-11-03  Bernd Edlinger  <bernd.edlinger@hotmail.de>
2825         PR target/97205
2826         * cfgexpand.c (align_local_variable): Make SSA_NAMEs
2827         at least MODE_ALIGNED.
2828         (expand_one_stack_var_at): Increase MEM_ALIGN for SSA_NAMEs.
2830 2020-11-03  Zhiheng Xie  <xiezhiheng@huawei.com>
2831             Nannan Zheng  <zhengnannan@huawei.com>
2833         * config/aarch64/aarch64-simd-builtins.def: Add proper FLAG
2834         for AES/SHA/SM3/SM4 intrinsics.
2836 2020-11-03  Zhiheng Xie  <xiezhiheng@huawei.com>
2837             Nannan Zheng  <zhengnannan@huawei.com>
2839         * config/aarch64/aarch64-simd-builtins.def: Add proper FLAG
2840         for compare intrinsics.
2842 2020-11-03  Richard Biener  <rguenther@suse.de>
2844         * dwarf2out.c (maybe_create_die_with_external_ref): Remove
2845         hashtable entry.
2847 2020-11-03  Andrea Corallo  <andrea.corallo@arm.com>
2849         * config/arm/arm_neon.h (vst2_lane_bf16, vst2q_lane_bf16)
2850         (vst3_lane_bf16, vst3q_lane_bf16, vst4_lane_bf16)
2851         (vst4q_lane_bf16): New intrinsics.
2852         * config/arm/arm_neon_builtins.def: Touch it for:
2853         __builtin_neon_vst2_lanev4bf, __builtin_neon_vst2_lanev8bf,
2854         __builtin_neon_vst3_lanev4bf, __builtin_neon_vst3_lanev8bf,
2855         __builtin_neon_vst4_lanev4bf,__builtin_neon_vst4_lanev8bf.
2857 2020-11-03  Andrea Corallo  <andrea.corallo@arm.com>
2859         * config/arm/arm_neon.h (vld2_lane_bf16, vld2q_lane_bf16)
2860         (vld3_lane_bf16, vld3q_lane_bf16, vld4_lane_bf16)
2861         (vld4q_lane_bf16): Add intrinsics.
2862         * config/arm/arm_neon_builtins.def: Touch for:
2863         __builtin_neon_vld2_lanev4bf, __builtin_neon_vld2_lanev8bf,
2864         __builtin_neon_vld3_lanev4bf, __builtin_neon_vld3_lanev8bf,
2865         __builtin_neon_vld4_lanev4bf, __builtin_neon_vld4_lanev8bf.
2866         * config/arm/iterators.md (VQ_HS): Add V8BF to the iterator.
2868 2020-11-03  Andrea Corallo  <andrea.corallo@arm.com>
2870         * config/arm/arm_neon.h (vst1_bf16, vst1q_bf16): Add intrinsics.
2871         * config/arm/arm_neon_builtins.def : Touch for:
2872         __builtin_neon_vst1v4bf, __builtin_neon_vst1v8bf.
2874 2020-11-03  Andrea Corallo  <andrea.corallo@arm.com>
2876         * config/arm/arm-builtins.c (VAR14): Define macro.
2877         * config/arm/arm_neon_builtins.def: Touch for:
2878         __builtin_neon_vld1v4bf, __builtin_neon_vld1v8bf.
2879         * config/arm/arm_neon.h (vld1_bf16, vld1q_bf16): Add intrinsics.
2881 2020-11-03  Andrea Corallo  <andrea.corallo@arm.com>
2883         * config/arm/arm_neon.h (vst1_lane_bf16, vst1q_lane_bf16): Add
2884         intrinsics.
2885         * config/arm/arm_neon_builtins.def (STORE1LANE): Add v4bf, v8bf.
2887 2020-11-03  Andrea Corallo  <andrea.corallo@arm.com>
2889         * config/arm/arm_neon_builtins.def: Add to LOAD1LANE v4bf, v8bf.
2890         * config/arm/arm_neon.h (vld1_lane_bf16, vld1q_lane_bf16): Add
2891         intrinsics.
2893 2020-11-03  Richard Biener  <rguenther@suse.de>
2895         PR bootstrap/97666
2896         * tree-vect-slp.c (vect_build_slp_tree_2): Scale
2897         allocation of skip_args by sizeof (bool).
2899 2020-11-03  Richard Biener  <rguenther@suse.de>
2901         PR tree-optimization/80928
2902         * tree-vect-loop.c (vectorizable_induction): SLP vectorize
2903         nested inductions.
2905 2020-11-03  Jan Hubicka  <hubicka@ucw.cz>
2907         PR ipa/97578
2908         * ipa-inline-transform.c (maybe_materialize_called_clones): New
2909         function.
2910         (inline_transform): Use it.
2912 2020-11-03  Richard Biener  <rguenther@suse.de>
2914         PR tree-optimization/97678
2915         * tree-vect-slp.c (vect_build_slp_tree_2): Do not track
2916         the initial values of inductions when not nested.
2917         * tree-vect-loop.c (vectorizable_induction): Look at
2918         PHI node initial values again for SLP and not nested
2919         inductions.  Handle LOOP_VINFO_MASK_SKIP_NITERS and cost
2920         invariants.
2922 2020-11-03  Uroš Bizjak  <ubizjak@gmail.com>
2924         * config/i386/sse.md (aes<aeswideklvariant>u8):
2925         Do not use xmm_regs array.  Fix whitespace.
2927 2020-11-03  Uroš Bizjak  <ubizjak@gmail.com>
2929         * config/i386/i386-expand.c (ix86_expand_builtin): Fix comment.
2931 2020-11-03  Thomas Schwinge  <thomas@codesourcery.com>
2933         * omp-low.c (scan_omp_for) <OpenACC>: Move earlier inconsistent
2934         nested 'reduction' clauses checking.
2936 2020-11-03  Thomas Schwinge  <thomas@codesourcery.com>
2938         * omp-low.c (scan_omp_for) <OpenACC>: More precise diagnostics for
2939         'gang', 'worker', 'vector' clauses with arguments only allowed in
2940         'kernels' regions.
2942 2020-11-03  Kewen Lin  <linkw@gcc.gnu.org>
2944         PR tree-optimization/96789
2945         * function.h (struct function): New member unsigned pending_TODOs.
2946         * passes.c (class pass_pre_slp_scalar_cleanup): New class.
2947         (make_pass_pre_slp_scalar_cleanup): New function.
2948         (pass_data_pre_slp_scalar_cleanup): New pass data.
2949         * passes.def: (pass_pre_slp_scalar_cleanup): New pass, add
2950         pass_fre and pass_dse as its children.
2951         * timevar.def (TV_SCALAR_CLEANUP): New timevar.
2952         * tree-pass.h (PENDING_TODO_force_next_scalar_cleanup): New
2953         pending TODO flag.
2954         (make_pass_pre_slp_scalar_cleanup): New declare.
2955         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1):
2956         Once any outermost loop gets unrolled, flag cfun pending_TODOs
2957         PENDING_TODO_force_next_scalar_cleanup on.
2959 2020-11-02  Alan Modra  <amodra@gmail.com>
2961         PR middle-end/97267
2962         * calls.h (maybe_complain_about_tail_call): Declare.
2963         * calls.c (maybe_complain_about_tail_call): Make global.
2964         (can_implement_as_sibling_call_p): Delete reg_parm_stack_space
2965         param.  Adjust caller.  Move REG_PARM_STACK_SPACE check to..
2966         * config/i386/i386.c (ix86_function_ok_for_sibcall): ..here.
2968 2020-11-02  Vladimir N. Makarov  <vmakarov@redhat.com>
2970         * ira.c (ira_remove_scratches): Rename to remove_scratches.  Make
2971         it static and returning flag of any change.
2972         (ira.c): Call ira_expand_reg_equiv in case of removing scratches.
2974 2020-11-02  H.J. Lu  <hjl.tools@gmail.com>
2976         PR target/97140
2977         * config/i386/i386-expand.c (ix86_expand_builtin): Require MMX
2978         for __builtin_ia32_maskmovq.
2980 2020-11-02  Martin Sebor  <msebor@redhat.com>
2982         * doc/invoke.texi (-Wstringop-overflow): Correct default setting.
2983         (-Wstringop-overread): Move past -Wstringop-overflow.
2985 2020-11-02  François-Xavier Coudert  <fxcoudert@gcc.gnu.org>
2987         PR bootstrap/57076
2988         * Makefile.in (gcc-vers.texi): Quote @, { and }.
2990 2020-11-02  Carl Love  <cel@us.ibm.com>
2992         PR target/93449
2993         * config/rs6000/altivec.h (__builtin_bcdadd, __builtin_bcdadd_lt,
2994         __builtin_bcdadd_eq, __builtin_bcdadd_gt, __builtin_bcdadd_ofl,
2995         __builtin_bcdadd_ov, __builtin_bcdsub, __builtin_bcdsub_lt,
2996         __builtin_bcdsub_eq, __builtin_bcdsub_gt, __builtin_bcdsub_ofl,
2997         __builtin_bcdsub_ov, __builtin_bcdinvalid, __builtin_bcdmul10,
2998         __builtin_bcddiv10, __builtin_bcd2dfp, __builtin_bcdcmpeq,
2999         __builtin_bcdcmpgt, __builtin_bcdcmplt, __builtin_bcdcmpge,
3000         __builtin_bcdcmple): Add defines.
3001         * config/rs6000/altivec.md: Add UNSPEC_BCDSHIFT.
3002         (BCD_TEST): Add le, ge to code iterator.
3003         Add VBCD mode iterator.
3004         (bcd<bcd_add_sub>_test, *bcd<bcd_add_sub>_test2,
3005         bcd<bcd_add_sub>_<code>, bcd<bcd_add_sub>_<code>): Add mode to name.
3006         Change iterator from V1TI to VBCD.
3007         (*bcdinvalid_<mode>, bcdshift_v16qi): New define_insn.
3008         (bcdinvalid_<mode>, bcdmul10_v16qi, bcddiv10_v16qi): New define.
3009         * config/rs6000/dfp.md (dfp_denbcd_v16qi_inst): New define_insn.
3010         (dfp_denbcd_v16qi): New define_expand.
3011         * config/rs6000/rs6000-builtin.def (BU_P8V_MISC_1): New define.
3012         (BCDADD): Replaced with BCDADD_V1TI and BCDADD_V16QI.
3013         (BCDADD_LT): Replaced with BCDADD_LT_V1TI and BCDADD_LT_V16QI.
3014         (BCDADD_EQ): Replaced with BCDADD_EQ_V1TI and BCDADD_EQ_V16QI.
3015         (BCDADD_GT): Replaced with BCDADD_GT_V1TI and BCDADD_GT_V16QI.
3016         (BCDADD_OV): Replaced with BCDADD_OV_V1TI and BCDADD_OV_V16QI.
3017         (BCDSUB_V1TI, BCDSUB_V16QI, BCDSUB_LT_V1TI, BCDSUB_LT_V16QI,
3018         BCDSUB_LE_V1TI, BCDSUB_LE_V16QI, BCDSUB_EQ_V1TI, BCDSUB_EQ_V16QI,
3019         BCDSUB_GT_V1TI, BCDSUB_GT_V16QI, BCDSUB_GE_V1TI, BCDSUB_GE_V16QI,
3020         BCDSUB_OV_V1TI, BCDSUB_OV_V16QI, BCDINVALID_V1TI, BCDINVALID_V16QI,
3021         BCDMUL10_V16QI, BCDDIV10_V16QI, DENBCD_V16QI): New builtin definitions.
3022         (BCDADD, BCDADD_LT, BCDADD_EQ, BCDADD_GT, BCDADD_OV, BCDSUB, BCDSUB_LT,
3023         BCDSUB_LE, BCDSUB_EQ, BCDSUB_GT, BCDSUB_GE, BCDSUB_OV, BCDINVALID,
3024         BCDMUL10, BCDDIV10, DENBCD): New overload definitions.
3025         * config/rs6000/rs6000-call.c (P8V_BUILTIN_VEC_BCDADD, P8V_BUILTIN_VEC_BCDADD_LT,
3026         P8V_BUILTIN_VEC_BCDADD_EQ, P8V_BUILTIN_VEC_BCDADD_GT, P8V_BUILTIN_VEC_BCDADD_OV,
3027         P8V_BUILTIN_VEC_BCDINVALID, P9V_BUILTIN_VEC_BCDMUL10, P8V_BUILTIN_VEC_DENBCD.
3028         P8V_BUILTIN_VEC_BCDSUB, P8V_BUILTIN_VEC_BCDSUB_LT, P8V_BUILTIN_VEC_BCDSUB_LE,
3029         P8V_BUILTIN_VEC_BCDSUB_EQ, P8V_BUILTIN_VEC_BCDSUB_GT, P8V_BUILTIN_VEC_BCDSUB_GE,
3030         P8V_BUILTIN_VEC_BCDSUB_OV): New overloaded specifications.
3031         (CODE_FOR_bcdadd): Replaced with CODE_FOR_bcdadd_v16qi and CODE_FOR_bcdadd_v1ti.
3032         (CODE_FOR_bcdadd_lt): Replaced with CODE_FOR_bcdadd_lt_v16qi and CODE_FOR_bcdadd_lt_v1ti.
3033         (CODE_FOR_bcdadd_eq): Replaced with CODE_FOR_bcdadd_eq_v16qi and CODE_FOR_bcdadd_eq_v1ti.
3034         (CODE_FOR_bcdadd_gt): Replaced with CODE_FOR_bcdadd_gt_v16qi and CODE_FOR_bcdadd_gt_v1ti.
3035         (CODE_FOR_bcdsub): Replaced with CODE_FOR_bcdsub_v16qi and CODE_FOR_bcdsub_v1ti.
3036         (CODE_FOR_bcdsub_lt): Replaced with CODE_FOR_bcdsub_lt_v16qi and CODE_FOR_bcdsub_lt_v1ti.
3037         (CODE_FOR_bcdsub_eq): Replaced with CODE_FOR_bcdsub_eq_v16qi and CODE_FOR_bcdsub_eq_v1ti.
3038         (CODE_FOR_bcdsub_gt): Replaced with CODE_FOR_bcdsub_gt_v16qi and CODE_FOR_bcdsub_gt_v1ti.
3039         (rs6000_expand_ternop_builtin):  Add CODE_FOR_dfp_denbcd_v16qi to else if.
3040         * doc/extend.texi: Add documentation for new builtins.
3042 2020-11-02  Nathan Sidwell  <nathan@acm.org>
3044         * tree.c (cache_integer_cst): Fixup pointer caching to match
3045         wide_int_to_type_1's expectations.  Add comment.
3047 2020-11-02  Nathan Sidwell  <nathan@acm.org>
3049         * tree.h (id_equal): Call the symetric predicate with swapped
3050         arguments.
3052 2020-11-02  Nathan Sidwell  <nathan@acm.org>
3054         * print-tree.c (print_node): Display all the operands of a call
3055         expr.
3057 2020-11-02  Vladimir N. Makarov  <vmakarov@redhat.com>
3059         * config/rs6000/vsx.md (*vsx_extract_<mode>_store_p9): Add hint *
3060         to 2nd alternative of the 1st scratch.
3062 2020-11-02  Sudakshina Das  <sudi.das@arm.com>
3064         PR target/97638
3065         * config/aarch64/aarch64-bti-insert.c (aarch64_pac_insn_p): Update
3066         return value on INSN_P check.
3068 2020-11-02  Richard Biener  <rguenther@suse.de>
3070         * tree.h (build_real_from_wide): Declare.
3071         * tree.c (build_real_from_wide): New function.
3072         * tree-vect-slp.c (vect_build_slp_tree_2): Remove
3073         restriction on induction vectorization, represent
3074         the initial value.
3075         * tree-vect-loop.c (vect_model_induction_cost): Inline ...
3076         (vectorizable_induction): ... here.  Rewrite SLP
3077         code generation.
3079 2020-11-02  Martin Jambor  <mjambor@suse.cz>
3081         * dbgcnt.def (ipa_cp_values): New counter.
3082         (ipa_cp_vr): Likewise.
3083         * ipa-cp.c (decide_about_value): Check and bump ipa_cp_values debug
3084         counter.
3085         (decide_whether_version_node): Likewise.
3086         (ipcp_store_vr_results):Check and bump ipa_cp_vr debug counter.
3088 2020-11-02  Christophe Lyon  <christophe.lyon@linaro.org>
3090         * config/arm/arm.c (arm_thumb1_mi_thunk): Build mi_delta in r3 and
3091         do not emit function address and delta when -mpure-code is used.
3093 2020-11-02  Christophe Lyon  <christophe.lyon@linaro.org>
3095         * config/arm/thumb1.md (thumb1_movsi_insn): Call
3096         thumb1_gen_const_int_print.
3097         * config/arm/arm-protos.h (thumb1_gen_const_int_print): Add
3098         prototype.
3099         * config/arm/arm.c (thumb1_gen_const_int_print): New.
3101 2020-11-02  Christophe Lyon  <christophe.lyon@linaro.org>
3103         * config/arm/arm.c (thumb1_const_rtl, thumb1_const_print): New
3104         classes.
3105         (thumb1_gen_const_int): Rename to ...
3106         (thumb1_gen_const_int_1): ... New helper function. Add capability
3107         to emit either RTL or asm, improve generated code.
3108         (thumb1_gen_const_int_rtl): New function.
3109         * config/arm/arm-protos.h (thumb1_gen_const_int): Rename to
3110         thumb1_gen_const_int_rtl.
3111         * config/arm/thumb1.md: Call thumb1_gen_const_int_rtl instead
3112         of thumb1_gen_const_int.
3114 2020-11-02  Richard Biener  <rguenther@suse.de>
3116         PR tree-optimization/97558
3117         * tree-vect-loop.c (vectorizable_reduction): For nested SLP
3118         cycles compute invariant operands vector type.
3120 2020-11-02  Richard Biener  <rguenther@suse.de>
3122         PR tree-optimization/97558
3123         * tree-vect-loop.c (vect_fixup_scalar_cycles_with_patterns):
3124         Check for any mismatch in pattern vs. non-pattern and dissolve
3125         the group if there is one.
3126         * tree-vect-slp.c (vect_analyze_slp_instance): Avoid
3127         analyzing not relevant reductions.
3128         (vect_analyze_slp): Avoid analyzing not relevant reduction
3129         groups.
3131 2020-11-02  Richard Biener  <rguenther@suse.de>
3133         PR tree-optimization/97650
3134         * tree-vect-slp.c (vect_get_and_check_slp_defs): Check
3135         for SSA_NAME before checking SSA_NAME_IS_DEFAULT_DEF.
3137 2020-11-02  Kito Cheng  <kito.cheng@sifive.com>
3139         * common/config/riscv/riscv-common.c
3140         (riscv_subset_list::parse_multiletter_ext): Checking multiletter
3141         extension has more than 1 letter.
3143 2020-11-02  Kito Cheng  <kito.cheng@sifive.com>
3145         * config.gcc (riscv*-*-*): Handle --with-multilib-generator.
3146         * configure: Regen.
3147         * configure.ac: Add --with-multilib-generator.
3148         * config/riscv/multilib-generator: Exit when parsing arch string error.
3149         * config/riscv/t-withmultilib-generator: New.
3150         * doc/install.texi: Document --with-multilib-generator.
3152 2020-11-02  Christophe Lyon  <christophe.lyon@linaro.org>
3154         PR target/96770
3155         * config/arm/arm.c (thumb_legitimate_constant_p): Accept
3156         (symbol_ref + addend) when literal pool is disabled.
3157         (arm_valid_symbolic_address_p): Add support for thumb-1 without
3158         MOVT/MOVW.
3159         * config/arm/thumb1.md (*thumb1_movsi_insn): Accept (symbol_ref +
3160         addend) in the pure-code alternative.
3162 2020-11-02  Christophe Lyon  <christophe.lyon@linaro.org>
3164         PR target/96967
3165         * config/arm/arm.c (thumb_legitimate_constant_p): Add support for
3166         disabled literal pool in thumb-1.
3167         * config/arm/thumb1.md (thumb1_movsi_symbol_ref): Remove.
3168         (*thumb1_movsi_insn): Add support for SYMBOL_REF with -mpure-code.
3170 2020-11-01  Iain Sandoe  <iain@sandoe.co.uk>
3172         * config/host-darwin.c: Align pch_address_space to 16384.
3174 2020-11-01  Pat Bernardi  <bernardi@adacore.com>
3176         * config/i386/i386.c (ix86_expand_prologue): Set the stack usage to 0
3177         for naked functions.
3179 2020-11-01  Iain Buclaw  <ibuclaw@gdcproject.org>
3181         PR ipa/97660
3182         * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Don't call
3183         clone_info::get when cgraph_node::get returns NULL.
3185 2020-10-31  Jan Hubicka  <jh@suse.cz>
3187         * Makefile.in: (OBJS): Add symtab-clones.o
3188         (GTFILES): Add symtab-clones.h
3189         * cgraph.c: Include symtab-clones.h.
3190         (cgraph_edge::resolve_speculation): Fix formating
3191         (cgraph_edge::redirect_call_stmt_to_callee): Update.
3192         (cgraph_update_edges_for_call_stmt): Update
3193         (release_function_body): Fix formating.
3194         (cgraph_node::remove): Fix formating.
3195         (cgraph_node::dump): Fix formating.
3196         (cgraph_node::get_availability): Fix formating.
3197         (cgraph_node::call_for_symbol_thunks_and_aliases): Fix formating.
3198         (set_const_flag_1): Fix formating.
3199         (set_pure_flag_1): Fix formating.
3200         (cgraph_node::can_remove_if_no_direct_calls_p): Fix formating.
3201         (collect_callers_of_node_1): Fix formating.
3202         (clone_of_p): Update.
3203         (cgraph_node::verify_node): Update.
3204         (cgraph_c_finalize): Call clone_info::release ().
3205         * cgraph.h (struct cgraph_clone_info): Move to symtab-clones.h.
3206         (cgraph_node): Remove clone_info.
3207         (symbol_table): Add m_clones.
3208         * cgraphclones.c: Include symtab-clone.h.
3209         (duplicate_thunk_for_node): Update.
3210         (cgraph_node::create_clone): Update.
3211         (cgraph_node::create_virtual_clone): Update.
3212         (cgraph_node::find_replacement): Update.
3213         (cgraph_node::materialize_clone): Update.
3214         * gengtype.c (open_base_files): Include symtab-clones.h.
3215         * ipa-cp.c: Include symtab-clones.h.
3216         (initialize_node_lattices): Update.
3217         (want_remove_some_param_p): Update.
3218         (create_specialized_node): Update.
3219         * ipa-fnsummary.c: Include symtab-clones.h.
3220         (ipa_fn_summary_t::duplicate): Update.
3221         * ipa-modref.c: Include symtab-clones.h.
3222         (update_signature): Update.
3223         * ipa-param-manipulation.c: Include symtab-clones.h.
3224         (ipa_param_body_adjustments::common_initialization): Update.
3225         * ipa-prop.c: Include symtab-clones.h.
3226         (adjust_agg_replacement_values): Update.
3227         (ipcp_get_parm_bits): Update.
3228         (ipcp_update_bits): Update.
3229         (ipcp_update_vr): Update.
3230         * ipa-sra.c: Include symtab-clones.h.
3231         (process_isra_node_results): Update.
3232         (disable_unavailable_parameters): Update.
3233         * lto-cgraph.c: Include symtab-clone.h.
3234         (output_cgraph_opt_summary_p): Update.
3235         (output_node_opt_summary): Update.
3236         (input_node_opt_summary): Update.
3237         * symtab-clones.cc: New file.
3238         * symtab-clones.h: New file.
3239         * tree-inline.c (expand_call_inline): Update.
3240         (update_clone_info): Update.
3241         (tree_function_versioning): Update.
3243 2020-10-31  Jan Hubicka  <jh@suse.cz>
3245         * ipa-modref.c (modref_summary::dump): Dump writes_errno.
3246         (parm_map_for_arg): Break out from ...
3247         (merge_call_side_effects): ... here.
3248         (get_access_for_fnspec): New function.
3249         (process_fnspec): New function.
3250         (analyze_call): Use it.
3251         (analyze_stmt): Update.
3252         (analyze_function): Initialize writes_errno.
3253         (modref_summaries::duplicate): Duplicate writes_errno.
3254         * ipa-modref.h (struct modref_summary): Add writes_errno.
3255         * tree-ssa-alias.c (call_may_clobber_ref_p_1): Check errno.
3257 2020-10-30  Michael Meissner  <meissner@linux.ibm.com>
3259         * config/rs6000/rs6000.c (glibc_supports_ieee_128bit): New helper
3260         function.
3261         (rs6000_option_override_internal): Call it.
3263 2020-10-30  Qing Zhao  <qing.zhao@oracle.com>
3264             H.J.Lu  <hjl.tools@gmail.com>
3266         * common.opt: Add new option -fzero-call-used-regs
3267         * config/i386/i386.c (zero_call_used_regno_p): New function.
3268         (zero_call_used_regno_mode): Likewise.
3269         (zero_all_vector_registers): Likewise.
3270         (zero_all_st_registers): Likewise.
3271         (zero_all_mm_registers): Likewise.
3272         (ix86_zero_call_used_regs): Likewise.
3273         (TARGET_ZERO_CALL_USED_REGS): Define.
3274         * df-scan.c (df_epilogue_uses_p): New function.
3275         (df_get_exit_block_use_set): Replace EPILOGUE_USES with
3276         df_epilogue_uses_p.
3277         * df.h (df_epilogue_uses_p): Declare.
3278         * doc/extend.texi: Document the new zero_call_used_regs attribute.
3279         * doc/invoke.texi: Document the new -fzero-call-used-regs option.
3280         * doc/tm.texi: Regenerate.
3281         * doc/tm.texi.in (TARGET_ZERO_CALL_USED_REGS): New hook.
3282         * emit-rtl.h (struct rtl_data): New field must_be_zero_on_return.
3283         * flag-types.h (namespace zero_regs_flags): New namespace.
3284         * function.c (gen_call_used_regs_seq): New function.
3285         (class pass_zero_call_used_regs): New class.
3286         (pass_zero_call_used_regs::execute): New function.
3287         (make_pass_zero_call_used_regs): New function.
3288         * optabs.c (expand_asm_reg_clobber_mem_blockage): New function.
3289         * optabs.h (expand_asm_reg_clobber_mem_blockage): Declare.
3290         * opts.c (zero_call_used_regs_opts): New structure array
3291         initialization.
3292         (parse_zero_call_used_regs_options): New function.
3293         (common_handle_option): Handle -fzero-call-used-regs.
3294         * opts.h (zero_call_used_regs_opts): New structure array.
3295         * passes.def: Add new pass pass_zero_call_used_regs.
3296         * recog.c (valid_insn_p): New function.
3297         * recog.h (valid_insn_p): Declare.
3298         * resource.c (init_resource_info): Replace EPILOGUE_USES with
3299         df_epilogue_uses_p.
3300         * target.def (zero_call_used_regs): New hook.
3301         * targhooks.c (default_zero_call_used_regs): New function.
3302         * targhooks.h (default_zero_call_used_regs): Declare.
3303         * tree-pass.h (make_pass_zero_call_used_regs): Declare.
3305 2020-10-30  Vladimir N. Makarov  <vmakarov@redhat.com>
3307         * lra.c (get_scratch_reg): New function.
3308         (remove_scratches_1): Rename remove_insn_scratches.  Use
3309         ira_remove_insn_scratches and get_scratch_reg.
3310         (remove_scratches): Do not
3311         initialize scratches, scratch_bitmap, and scratch_operand_bitmap.
3312         (lra): Call ira_restore_scratches instead of restore_scratches.
3313         (struct sloc, sloc_t, scratches, scratch_bitmap)
3314         (scratch_operand_bitmap, lra_former_scratch_p)
3315         (lra_former_scratch_operand_p, lra_register_new_scratch_op)
3316         (restore_scratches): Move them to ...
3317         * ira.c: ... here.
3318         (former_scratch_p, former_scratch_operand_p): Rename to
3319         ira_former_scratch_p and ira_former_scratch_operand_p.
3320         (contains_X_constraint_p): New function.
3321         (register_new_scratch_op): Rename to ira_register_new_scratch_op.
3322         Change it to work for IRA and LRA.
3323         (restore_scratches): Rename to ira_restore_scratches.
3324         (get_scratch_reg, ira_remove_insn_scratches): New functions.
3325         (ira): Call ira_remove_scratches if we use LRA.
3326         * ira.h (ira_former_scratch_p, ira_former_scratch_operand_p): New
3327         prototypes.
3328         (ira_register_new_scratch_op, ira_restore_scratches): New prototypes.
3329         (ira_remove_insn_scratches): New prototype.
3330         * lra-int.h (lra_former_scratch_p, lra_former_scratch_operand_p):
3331         Remove prototypes.
3332         (lra_register_new_scratch_op): Ditto.
3333         * lra-constraints.c: Rename lra_former_scratch_p and
3334         lra_former_scratch_p to ira_former_scratch_p and to
3335         ira_former_scratch_p.
3336         * lra-remat.c: Ditto.
3337         * lra-spills.c: Rename lra_former_scratch_p to ira_former_scratch_p.
3339 2020-10-30  Martin Sebor  <msebor@redhat.com>
3341         PR middle-end/97556
3342         * builtins.c (access_ref::add_offset): Cap offset lower bound
3343         to at most the the upper bound.
3345 2020-10-30  Jan Hubicka  <jh@suse.cz>
3347         PR pch/97593
3348         * cgraph.c (cgraph_node::create_thunk): Register thunk as early during
3349         parsing.
3350         * cgraphunit.c (analyze_functions): Call
3351         thunk_info::process_early_thunks.
3352         * symtab-thunks.cc (struct unprocessed_thunk): New struct.
3353         (thunks): New static variable.
3354         (thunk_info::register_early): New member function.
3355         (thunk_info::process_early_thunks): New member function.
3356         * symtab-thunks.h (thunk_info::register_early): Declare.
3357         (thunk_info::process_early_thunks): Declare.
3359 2020-10-30  Richard Biener  <rguenther@suse.de>
3361         PR tree-optimization/97623
3362         * tree-ssa-pre.c (insert): First do hoist insertion in
3363         a backward walk.
3365 2020-10-30  Richard Biener  <rguenther@suse.de>
3367         PR tree-optimization/97626
3368         * tree-vect-slp.c (vect_slp_analyze_node_operations):
3369         Exchange the lvisited hash-set for a vector, roll back
3370         recursive adds to visited when analysis failed.
3371         (vect_slp_analyze_operations): Likewise.
3373 2020-10-30  Zhiheng Xie  <xiezhiheng@huawei.com>
3374             Nannan Zheng  <zhengnannan@huawei.com>
3376         * config/aarch64/aarch64-simd-builtins.def: Add proper FLAG
3377         for conversion intrinsics.
3379 2020-10-30  Richard Biener  <rguenther@suse.de>
3381         PR tree-optimization/97633
3382         * tree-vect-slp.c (): Update backedges in single-node cycles.
3383         Optimize processing of externals.
3385 2020-10-30  Alex Coplan  <alex.coplan@arm.com>
3387         PR target/96998
3388         * combine.c (make_extraction): Also handle shifts written as
3389         (mult x 2^n), avoid creating an extract rtx for these.
3390         * config/aarch64/aarch64.c (aarch64_is_extend_from_extract): Delete.
3391         (aarch64_classify_index): Remove extract-based address handling.
3392         (aarch64_strip_extend): Likewise.
3393         (aarch64_rtx_arith_op_extract_p): Likewise, remove now-unused parameter.
3394         Update callers...
3395         (aarch64_rtx_costs): ... here.
3397 2020-10-30  Olivier Hainque  <hainque@adacore.com>
3399         * config/rs6000/vxworks.h (TARGET_OS_CPP_BUILTINS): Also
3400         builtin_define __ppc and __ppc__ for VxWorks 7.
3402 2020-10-30  Olivier Hainque  <hainque@adacore.com>
3403             Douglas Rupp  <rupp@adacore.com>
3404             Pat Bernardi  <bernardi@adacore.com>
3406         * config.gcc: Adjust the ix86/x86_64-wrs-vxworks filters
3407         to apply to VxWorks 7 as well.
3408         * config/i386/t-vxworks (MULTILIB_OPTIONS, MULTILIB_DIRNAMES):
3409         Remove the fPIC multilib and add one for the large code model
3410         on x86_64.
3411         * config/i386/vxworks.h: Separate sections for TARGET_VXWORKS7,
3412         other variants and common bits.
3413         (TARGET_OS_CPP_BUILTINS): Augment to support a range of CPU
3414         families. Leverage VX_CPU_PREFIX.
3415         (CC1_SPEC): Add definition.
3416         (STACK_CHECK_PROTECT): Use conditional expression instead of
3417         heavier to read conditioned macro definitions.
3419 2020-10-30  Jakub Jelinek  <jakub@redhat.com>
3421         * gimplify.c (gimplify_scan_omp_clauses): Force
3422         OMP_CLAUSE_ALLOCATE_ALLOCATOR into a temporary if it is non-NULL and
3423         non-constant.
3424         (gimplify_omp_for): Only put allocate on inner taskloop if lastprivate
3425         for the same variable is going to be put there, and in that case
3426         if the OMP_CLAUSE_ALLOCATE_ALLOCATOR is non-NULL non-constant, make
3427         the allocator firstprivate on task.
3429 2020-10-30  Michael Meissner  <meissner@linux.ibm.com>
3431         * config/rs6000/rs6000.c (rs6000_option_override_internal): Allow
3432         long double type to be changed for C/C++ if glibc 2.32 or newer.
3433         (rs6000_invalid_binary_op): Update error messages about mixing IBM
3434         long double and IEEE 128-bit.
3436 2020-10-29  Richard Biener  <rguenther@suse.de>
3438         * tree-ssa-pre.c (compute_avail): Free operands consistently.
3439         * tree-vect-loop.c (vectorizable_phi): Make sure all operand
3440         defs vectors are released.
3442 2020-10-29  Jan Hubicka  <jh@suse.cz>
3444         * vec.h (vec<T, va_heap, vl_ptr>::copy): Pass mem stat info.
3446 2020-10-29  Jan Hubicka  <jh@suse.cz>
3448         * wide-int.h (trailing_wide_ints <N>): Turn len to array of structures
3449         so it does not imply typeless storage.
3450         (trailing_wide_ints <N>::operator): update
3451         (trailing_wide_ints <N>::operator []): Update.
3453 2020-10-29  Joseph Myers  <joseph@codesourcery.com>
3455         * ginclude/stdbool.h [__STDC_VERSION__ > 201710L] (true, false):
3456         Define with type _Bool.
3458 2020-10-29  Aldy Hernandez  <aldyh@redhat.com>
3460         PR tree-optimization/97505
3461         * vr-values.c (vr_values::extract_range_basic): Enable
3462         trap again for everything except UBSAN builtins.
3464 2020-10-29  Richard Sandiford  <richard.sandiford@arm.com>
3466         * tree-vectorizer.h (vect_transform_slp_perm_load): Take an
3467         optional extra parameter.
3468         * tree-vect-slp.c (vect_transform_slp_perm_load): Calculate
3469         the number of loads as well as the number of permutes, taking
3470         the counting loop from...
3471         * tree-vect-stmts.c (vect_model_load_cost): ...here.  Use the
3472         value computed by vect_transform_slp_perm_load for ncopies.
3474 2020-10-29  Martin Liska  <mliska@suse.cz>
3476         PR lto/97508
3477         * langhooks.c (lhd_begin_section): Call get_section with
3478         not_existing = true.
3479         * output.h (get_section): Add new argument.
3480         * varasm.c (get_section): Fail when NOT_EXISTING is true
3481         and a section already exists.
3482         * ipa-cp.c (ipcp_write_summary): Remove.
3483         (ipcp_read_summary): Likewise.
3484         * ipa-fnsummary.c (ipa_fn_summary_read): Always read jump
3485         functions summary.
3486         (ipa_fn_summary_write): Always stream it.
3488 2020-10-29  Richard Biener  <rguenther@suse.de>
3490         * tree-vect-slp.c (vect_bb_slp_scalar_cost): Pass
3491         SLP_TREE_VECTYPE to record_stmt_cost.
3493 2020-10-29  Martin Liska  <mliska@suse.cz>
3495         * optc-gen.awk: Check that params start with -param=.
3496         * params.opt: Fix ipa-jump-function-lookups.
3498 2020-10-29  Alexandre Oliva  <oliva@adacore.com>
3500         * tree-ssa-math-opts.c (sincos_stats): Add conv_removed.
3501         (execute_cse_conv_1): New.
3502         (execute_cse_sincos_1): Call it.  Fix return within
3503         FOR_EACH_IMM_USE_STMT.
3504         (pass_cse_sincos::execute): Report conv_inserted.
3506 2020-10-29  Xuepeng Guo  <xuepeng.guo@intel.com>
3507             Hongyu Wang  <hongyu.wang@intel.com>
3508             Hongtao Liu  <hongtao.liu@intel.com>
3510         * common/config/i386/cpuinfo.h (get_available_features):
3511         Detect KL, AESKLE and WIDEKL features.
3512         * common/config/i386/i386-common.c
3513         (OPTION_MASK_ISA_KL_SET): New.
3514         (OPTION_MASK_ISA_WIDEKL_SET): Likewise.
3515         (OPTION_MASK_ISA_KL_UNSET): Likewise.
3516         (OPTION_MASK_ISA_WIDEKL_UNSET): Likewise.
3517         (OPTION_MASK_ISA2_AVX2_UNSET): Likewise.
3518         (OPTION_MASK_ISA2_AVX_UNSET): Likewise.
3519         (OPTION_MASK_ISA2_SSE4_2_UNSET): Likewise.
3520         (OPTION_MASK_ISA2_SSE4_1_UNSET): Likewise.
3521         (OPTION_MASK_ISA2_SSE4_UNSET): Likewise.
3522         (OPTION_MASK_ISA2_SSSE3_UNSET): Likewise.
3523         (OPTION_MASK_ISA2_SSE3_UNSET): Likewise.
3524         (OPTION_MASK_ISA2_SSE2_UNSET): Likewise.
3525         (OPTION_MASK_ISA2_SSE_UNSET): Likewise.
3526         (ix86_handle_option): Handle kl and widekl, add dependency chain
3527         for KL and SSE2.
3528         * common/config/i386/i386-cpuinfo.h (enum processor_features):
3529         (FEATURE_KL, FEATURE_AESKLE, FEATURE_WIDEKL): New.
3530         * common/config/i386/i386-isas.h: Add ISA_NAMES_TABLE_ENTRY
3531         for KL, AESKLE and WIDEKL.
3532         * config.gcc: Add keylockerintrin.h.
3533         * doc/invoke.texi: Document new option -mkl and -mwidekl.
3534         * doc/extend.texi: Document kl and widekl.
3535         * config/i386/cpuid.h (bit_KL, bit_AESKLE, bit_WIDEKL): New.
3536         * config/i386/i386-builtin-types.def ((UINT, UINT, V2DI, V2DI, PVOID),
3537         (UINT, UINT, V2DI, PVOID), (VOID, V2DI, V2DI, V2DI, UINT),
3538         (UINT8, PV2DI, V2DI, PCVOID), (UINT8, PV2DI, PCV2DI, PCVOID)): New
3539         function types.
3540         * config/i386/i386-builtin.def: Add
3541         __builtin_ia32_loadiwkey,
3542         __builtin_ia32_aesdec128kl_u8,
3543         __builtin_ia32_aesdec256kl_u8,
3544         __builtin_ia32_aesenc128kl_u8,
3545         __builtin_ia32_aesenc256kl_u8,
3546         __builtin_ia32_aesdecwide128kl_u8,
3547         __builtin_ia32_aesdecwide256kl_u8,
3548         __builtin_ia32_aesencwide128kl_u8,
3549         __builtin_ia32_aesencwide256kl_u8,
3550         __builtin_ia32_encodekey128_u32,
3551         __builtin_ia32_encodekey256_u32.
3552         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
3553         kl and widekl.
3554         * config/i386/i386-options.c (isa2_opts): Add -mkl and -mwidekl.
3555         (ix86_option_override_internal): Handle KL and WIDEKL.
3556         (ix86_valid_target_attribute_inner_p): Add attribute for kl and widekl.
3557         * config/i386/i386-expand.c
3558         (ix86_expand_builtin): Expand Keylocker Builtins.
3559         * config/i386/i386.h (TARGET_KL): New.
3560         (TARGET_KL_P): Likewise.
3561         (TARGET_WIDEKL): Likewise.
3562         (TARGET_WIDEKL_P): Likewise.
3563         (PTA_KL): Likewise.
3564         (PTA_WIDEKL): Likewise.
3565         (PTA_TIGERLAKE): Add PTA_KL, PTA_WIDEKL.
3566         (PTA_ALDERLAKE): Likewise.
3567         * config/i386/i386.opt: Add new option mkl and mwidekl.
3568         * config/i386/keylockerintrin.h: New header file for Keylocker.
3569         * config/i386/immintrin.h: Include keylockerintrin.h.
3570         * config/i386/predicates.md (encodekey128_operation): New
3571         predicate.
3572         (encodekey256_operation): Likewise.
3573         (aeswidekl_operation): Likewise.
3574         * config/i386/sse.md (UNSPECV_LOADIWKEY): New.
3575         (UNSPECV_AESDEC128KLU8): Likewise.
3576         (UNSPECV_AESENC128KLU8): Likewise.
3577         (UNSPECV_AESDEC256KLU8): Likewise.
3578         (UNSPECV_AESENC256KLU8): Likewise.
3579         (UNSPECV_AESDECWIDE128KLU8): Likewise.
3580         (UNSPECV_AESENCWIDE128KLU8): Likewise.
3581         (UNSPECV_AESDECWIDE256KLU8): Likewise.
3582         (UNSPECV_AESENCWIDE256KLU8): Likewise.
3583         (UNSPECV_ENCODEKEY128U32): Likewise.
3584         (UNSPECV_ENCODEKEY256U32): Likewise.
3585         (encodekey128u32): New expander.
3586         (encodekey256u32): Likewise.
3587         (aes<aeswideklvariant>u8): Likewise.
3588         (loadiwkey): New insn pattern.
3589         (*encodekey128u32): Likewise.
3590         (*encodekey256u32): Likewise.
3591         (aes<aesklvariant>u8): Likewise.
3592         (*aes<aeswideklvariant>u8): Likewise.
3594 2020-10-29  Richard Biener  <rguenther@suse.de>
3596         * tree-vect-slp.c (vect_build_slp_tree_2): Allow splatting
3597         not vectorizable loads.
3598         (vect_build_slp_instance): Amend dumping with address.
3599         (vect_slp_convert_to_external): Likewise.
3601 2020-10-29  Andrew MacLeod  <amacleod@redhat.com>
3603         PR tree-optimization/97609
3604         * gimple-range-cache.cc (non_null_ref::process_name): Call
3605         infer_nonnull_range directly instead of infer_value_range.
3607 2020-10-29  David Malcolm  <dmalcolm@redhat.com>
3609         * Makefile.in (ANALYZER_OBJS): Add analyzer/complexity.o.
3611 2020-10-28  Marek Polacek  <polacek@redhat.com>
3613         PR c++/97573
3614         * doc/invoke.texi: Document -Wdeprecated-enum-enum-conversion
3615         and -Wdeprecated-enum-float-conversion.  -Wenum-conversion is
3616         no longer C/ObjC only.
3618 2020-10-28  Richard Sandiford  <richard.sandiford@arm.com>
3620         PR tree-optimization/97457
3621         * value-range.cc (irange::set): Don't decay POLY_INT_CST ranges
3622         to integer ranges.
3624 2020-10-28  Carl Love  <cel@us.ibm.com>
3626         * config/rs6000/vsx.md(xxgenpcvm_<mode>_internal): Remove TARGET_64BIT.
3628 2020-10-28  Richard Biener  <rguenther@suse.de>
3630         * tree-vect-slp.c (vect_slp_analyze_node_operations_1): Dump
3631         when shared vectype update fails.
3633 2020-10-28  Richard Biener  <rguenther@suse.de>
3635         * tree-vect-slp.c (vect_get_and_check_slp_defs): For skipped
3636         args just push NULLs and vect_uninitialized_def.
3637         (vect_build_slp_tree_2): Allocate skip_args for all ops
3638         and pass it down to vect_get_and_check_slp_defs.
3640 2020-10-28  Richard Biener  <rguenther@suse.de>
3642         PR tree-optimization/97615
3643         * tree-vect-slp.c (vect_build_slp_tree_2): Do not build
3644         an external from pattern defs.
3646 2020-10-28  Richard Biener  <rguenther@suse.de>
3648         * tree-vect-slp.c (vect_optimize_slp): Fix iteration over
3649         all loads.
3651 2020-10-28  Richard Biener  <rguenther@suse.de>
3653         * tree-vect-slp.c (vect_build_slp_instance): Split the store
3654         group at the failure boundary and also re-analyze a large enough
3655         matching rest.
3657 2020-10-28  Richard Biener  <rguenther@suse.de>
3659         * tree-vect-data-refs.c (vect_slp_analyze_node_alignment):
3660         Dump when vect_update_shared_vectype fails.
3662 2020-10-28  Andrea Corallo  <andrea.corallo@arm.com>
3664         * config/aarch64/arm_neon.h (__ST2_LANE_FUNC, __ST3_LANE_FUNC)
3665         (__ST4_LANE_FUNC): Rename the macro generating the 'q' variants
3666         into __ST2Q_LANE_FUNC, __ST2Q_LANE_FUNC, __ST2Q_LANE_FUNC so they
3667         all can be undefed at the and of the file.
3668         (vst2_lane_bf16, vst2q_lane_bf16, vst3_lane_bf16, vst3q_lane_bf16)
3669         (vst4_lane_bf16, vst4q_lane_bf16): Add new intrinsics.
3671 2020-10-28  Andrea Corallo  <andrea.corallo@arm.com>
3673         * config/aarch64/arm_neon.h (__LD2_LANE_FUNC, __LD3_LANE_FUNC)
3674         (__LD4_LANE_FUNC): Rename the macro generating the 'q' variants
3675         into __LD2Q_LANE_FUNC, __LD2Q_LANE_FUNC, __LD2Q_LANE_FUNC so they
3676         all can be undefed at the and of the file.
3677         (vld2_lane_bf16, vld2q_lane_bf16, vld3_lane_bf16, vld3q_lane_bf16)
3678         (vld4_lane_bf16, vld4q_lane_bf16): Add new intrinsics.
3680 2020-10-28  Jakub Jelinek  <jakub@redhat.com>
3682         * tree-core.h (enum omp_clause_code): Add OMP_CLAUSE_ALLOCATE.
3683         * tree.h (OMP_CLAUSE_ALLOCATE_ALLOCATOR,
3684         OMP_CLAUSE_ALLOCATE_COMBINED): Define.
3685         * tree.c (omp_clause_num_ops, omp_clause_code_name): Add allocate
3686         clause.
3687         (walk_tree_1): Handle OMP_CLAUSE_ALLOCATE.
3688         * tree-pretty-print.c (dump_omp_clause): Likewise.
3689         * gimplify.c (gimplify_scan_omp_clauses, gimplify_adjust_omp_clauses,
3690         gimplify_omp_for): Likewise.
3691         * tree-nested.c (convert_nonlocal_omp_clauses,
3692         convert_local_omp_clauses): Likewise.
3693         * omp-low.c (scan_sharing_clauses): Likewise.
3695 2020-10-28  Jakub Jelinek  <jakub@redhat.com>
3697         * omp-offload.c (omp_declare_target_tgt_fn_r): Handle direct calls to
3698         declare variant base functions.
3700 2020-10-28  Jakub Jelinek  <jakub@redhat.com>
3702         PR lto/96680
3703         * lto-streamer.h (omp_lto_output_declare_variant_alt,
3704         omp_lto_input_declare_variant_alt): Declare variant.
3705         * symtab.c (symtab_node::get_partitioning_class): Return
3706         SYMBOL_DUPLICATE for declare_variant_alt nodes.
3707         * passes.c (ipa_write_summaries): Add declare_variant_alt to
3708         partition.
3709         * lto-cgraph.c (output_refs): Call omp_lto_output_declare_variant_alt
3710         on declare_variant_alt nodes.
3711         (input_refs): Call omp_lto_input_declare_variant_alt on
3712         declare_variant_alt nodes.
3713         * lto-streamer-out.c (output_function): Don't call
3714         collect_block_tree_leafs if DECL_INITIAL is error_mark_node.
3715         (lto_output): Call output_function even for declare_variant_alt
3716         nodes.
3717         * omp-general.c (omp_lto_output_declare_variant_alt,
3718         omp_lto_input_declare_variant_alt): New functions.
3720 2020-10-28  Jakub Jelinek  <jakub@redhat.com>
3722         * wide-int.cc (wi::set_bit_large): Call canonize unless setting
3723         msb bit and clearing bits above it.
3725 2020-10-28  Andrew MacLeod  <amacleod@redhat.com>
3727         * gimple-range-gori.cc (gori_compute_cache::cache_stmt): Accumulate
3728         return values and only set cache when everything returned true.
3729         * gimple-range.cc (get_tree_range): Set the return range to UNDEFINED
3730         when the range isn't supported.
3731         (gimple_ranger::calc_stmt): Return varying if the type is supported,
3732         even if the stmt processing failed.  False otherwise.
3733         (range_of_builtin_ubsan_call): Don't use gcc_assert.
3734         (range_of_builtin_call): Ditto.
3735         (gimple_ranger::range_of_cond_expr): Ditto.
3736         (gimple_ranger::range_of_expr): Ditto
3737         (gimple_ranger::range_on_entry): Ditto.
3738         (gimple_ranger::range_on_exit): Ditto.
3739         (gimple_ranger::range_on_edge): DItto.
3740         (gimple_ranger::range_of_stmt): Don't use gcc_assert, and initialize
3741         return value to UNDEFINED.
3743 2020-10-27  Andreas Krebbel  <krebbel@linux.ibm.com>
3745         PR rtl-optimization/97497
3746         * config/s390/s390.c (s390_hard_regno_call_part_clobbered): Do not
3747         return true for r12 when -fpic is used.
3749 2020-10-27  Tamar Christina  <tamar.christina@arm.com>
3751         PR target/97535
3752         * config/aarch64/aarch64.c (aarch64_expand_cpymem): Use unsigned
3753         arithmetic in check.
3755 2020-10-27  Andrea Corallo  <andrea.corallo@arm.com>
3757         * config/aarch64/arm_neon.h (vcopy_lane_bf16, vcopyq_lane_bf16)
3758         (vcopyq_laneq_bf16, vcopy_laneq_bf16): New intrinsics.
3760 2020-10-27  Olivier Hainque  <hainque@adacore.com>
3762         * config/vxworks.h (VX_CPU_PREFIX): #define here.
3763         * config/rs6000/vxworks.h: Remove #definition.
3765 2020-10-27  Olivier Hainque  <hainque@adacore.com>
3767         * config/rs6000/vxworks.h (CPP_SPEC): Fix macro definition
3768         for -mcpu=e6500.
3770 2020-10-27  Richard Biener  <rguenther@suse.de>
3772         * tree-vect-slp.c (vect_build_slp_instance): Use ceil_log2
3773         to compute maximum group-size.
3775 2020-10-27  Jan Hubicka  <jh@suse.cz>
3777         PR ipa/97586
3778         * ipa-modref-tree.h (modref_tree::remap_params): New member function.
3779         * ipa-modref.c (modref_summaries_lto::duplicate): Check that
3780         optimization summaries are not duplicated.
3781         (remap_arguments): Remove.
3782         (modref_transform): Rename to ...
3783         (update_signature): ... this one; handle also lto summary.
3784         (pass_ipa_modref::execute): Update signatures here rather
3785         than in transform hook.
3787 2020-10-27  Richard Biener  <rguenther@suse.de>
3789         * tree-vect-slp.c (vect_slp_bbs): Remove no-op
3790         slp-max-insns-in-bb check.
3791         (vect_slp_function): Dump when splitting the function.
3792         Adjust the split condition for control altering stmts.
3793         * params.opt (-param=slp-max-insns-in-bb): Remove.
3794         * doc/invoke.texi (-param=slp-max-insns-in-bb): Likewise.
3796 2020-10-27  Richard Biener  <rguenther@suse.de>
3798         * gimple.h (gimple_expr_type): For PHIs return the type
3799         of the result.
3800         * tree-vect-loop-manip.c (slpeel_tree_duplicate_loop_to_edge_cfg):
3801         Make sure edge order into copied loop headers line up with the
3802         originals.
3803         * tree-vect-loop.c (vect_transform_cycle_phi): Handle nested
3804         loops with SLP.
3805         (vectorizable_phi): New function.
3806         (vectorizable_live_operation): For BB vectorization compute insert
3807         location here.
3808         * tree-vect-slp.c (vect_free_slp_tree): Deal with NULL
3809         SLP_TREE_CHILDREN entries.
3810         (vect_create_new_slp_node): Add overloads with pre-existing node
3811         argument.
3812         (vect_print_slp_graph): Likewise.
3813         (vect_mark_slp_stmts): Likewise.
3814         (vect_mark_slp_stmts_relevant): Likewise.
3815         (vect_gather_slp_loads): Likewise.
3816         (vect_optimize_slp): Likewise.
3817         (vect_slp_analyze_node_operations): Likewise.
3818         (vect_bb_slp_scalar_cost): Likewise.
3819         (vect_remove_slp_scalar_calls): Likewise.
3820         (vect_get_and_check_slp_defs): Handle PHIs.
3821         (vect_build_slp_tree_1): Handle PHIs.
3822         (vect_build_slp_tree_2): Continue SLP build, following PHI
3823         arguments.  Fix memory leak.
3824         (vect_build_slp_tree): Put stub node into the hash-map so
3825         we can discover cycles directly.
3826         (vect_build_slp_instance): Set the backedge SLP def for
3827         reduction chains.
3828         (vect_analyze_slp_backedges): Remove.
3829         (vect_analyze_slp): Do not call it.
3830         (vect_slp_convert_to_external): Release SLP_TREE_LOAD_PERMUTATION.
3831         (vect_slp_analyze_node_operations): Handle stray failed
3832         backedge defs by failing.
3833         (vect_slp_build_vertices): Adjust leaf condition.
3834         (vect_bb_slp_mark_live_stmts): Handle PHIs, use visited
3835         hash-set to handle cycles.
3836         (vect_slp_analyze_operations): Adjust.
3837         (vect_bb_partition_graph_r): Likewise.
3838         (vect_slp_function): Adjust split condition to allow CFG
3839         merges.
3840         (vect_schedule_slp_instance): Rename to ...
3841         (vect_schedule_slp_node): ... this.  Move DFS walk to ...
3842         (vect_schedule_scc): ... this new function.
3843         (vect_schedule_slp): Call it.  Remove ad-hoc vectorized
3844         backedge fill code.
3845         * tree-vect-stmts.c (vect_analyze_stmt): Call
3846         vectorizable_phi.
3847         (vect_transform_stmt): Likewise.
3848         (vect_is_simple_use): Handle vect_backedge_def.
3849         * tree-vectorizer.c (vec_info::new_stmt_vec_info): Only
3850         set loop header PHIs to vect_unknown_def_type for loop
3851         vectorization.
3852         * tree-vectorizer.h (enum vect_def_type): Add vect_backedge_def.
3853         (enum stmt_vec_info_type): Add phi_info_type.
3854         (vectorizable_phi): Declare.
3856 2020-10-27  Richard Biener  <rguenther@suse.de>
3858         * tree-vect-slp.c (vect_build_slp_tree_2): When vectorizing
3859         BBs splat uniform operands and stop SLP discovery.
3861 2020-10-27  Iain Buclaw  <ibuclaw@gdcproject.org>
3863         * config/aarch64/aarch64-linux.h (GNU_USER_TARGET_D_CRITSEC_SIZE):
3864         Remove.
3865         * config/glibc-d.c (glibc_d_critsec_size): Likewise.
3866         (TARGET_D_CRITSEC_SIZE): Likewise.
3867         * config/i386/linux-common.h (GNU_USER_TARGET_D_CRITSEC_SIZE):
3868         Likewise.
3869         * config/sol2-d.c (solaris_d_critsec_size): Likewise.
3870         (TARGET_D_CRITSEC_SIZE):  Likewise.
3871         * doc/tm.texi.in (TARGET_D_CRITSEC_SIZE): Likewise.
3872         * doc/tm.texi: Regenerate.
3874 2020-10-27  Martin Liska  <mliska@suse.cz>
3876         PR gcov-profile/97461
3877         * gcov-io.h (GCOV_PREALLOCATED_KVP): Pre-allocate 64
3878         static counters.
3880 2020-10-27  Jan Hubicka  <jh@suse.cz>
3882         * tree-ssa-alias.c (attr_fnspec::verify): Re-enabl checking.
3884 2020-10-27  Jan Hubicka  <jh@suse.cz>
3886         * builtin-attrs.def (STRERRNOC): New macro.
3887         (STRERRNOP): New macro.
3888         (ATTR_ERRNOCONST_NOTHROW_LEAF_LIST): New attr list.
3889         (ATTR_ERRNOPURE_NOTHROW_LEAF_LIST): New attr list.
3890         * builtins.def (ATTR_MATHFN_ERRNO): Use
3891         ATTR_ERRNOCONST_NOTHROW_LEAF_LIST.
3892         (ATTR_MATHFN_FPROUNDING_ERRNO): Use ATTR_ERRNOCONST_NOTHROW_LEAF_LIST
3893         or ATTR_ERRNOPURE_NOTHROW_LEAF_LIST.
3895 2020-10-27  Kito Cheng  <kito.cheng@sifive.com>
3897         * common/config/riscv/riscv-common.c (opt_var_ref_t): New.
3898         (riscv_ext_flag_table_t): New.
3899         (riscv_ext_flag_table): New.
3900         (riscv_parse_arch_string): Pass gcc_options* instead of
3901         &opts->x_target_flags only, and using riscv_arch_option_table to
3902         setup flags.
3903         (riscv_handle_option): Update argument for riscv_parse_arch_string.
3904         (riscv_expand_arch): Ditto.
3905         (riscv_expand_arch_from_cpu): Ditto.
3907 2020-10-27  Jan Hubicka  <jh@suse.cz>
3909         * tree-ssa-ccp.c (evaluate_stmt): Use EAF_RETURN_ARG; do not handle
3910         string buitings specially.
3912 2020-10-27  Jan Hubicka  <jh@suse.cz>
3914         * tree.c (set_call_expr_flags): Fix string for ECF_RET1.
3915         (build_common_builtin_nodes): Do not set ECF_RET1 for memcpy, memmove,
3916         and memset. They are handled by builtin_fnspec.
3918 2020-10-27  Jan Hubicka  <jh@suse.cz>
3920         * builtins.c (builtin_fnspec): Add bzero, memcmp, memcmp_eq, bcmp,
3921         strncmp, strncmp_eq, strncasecmp, rindex, strlen, strlnen, strcasecmp,
3922         strcspn, strspn, strcmp, strcmp_eq.
3924 2020-10-27  Richard Biener  <rguenther@suse.de>
3926         * tree-vectorizer.h (slp_tree_pool): Declare.
3927         (_slp_tree::operator new): Likewise.
3928         (_slp_tree::operator delete): Likewise.
3929         * tree-vectorizer.c (vectorize_loops): Allocate and free the
3930         slp_tree_pool.
3931         (pass_slp_vectorize::execute): Likewise.
3932         * tree-vect-slp.c (slp_tree_pool): Define.
3933         (_slp_tree::operator new): Likewise.
3934         (_slp_tree::operator delete): Likewise.
3936 2020-10-27  Martin Liska  <mliska@suse.cz>
3938         * lto-wrapper.c (run_gcc): Do not use sub-make when jobserver is
3939         not detected properly.
3941 2020-10-27  Martin Liska  <mliska@suse.cz>
3943         * symbol-summary.h (call_summary_base): Pass symtab hooks to
3944         base and register (or unregister) hooks directly.
3946 2020-10-27  Martin Liska  <mliska@suse.cz>
3948         * symbol-summary.h (function_summary_base::unregister_hooks):
3949         Call disable_insertion_hook and disable_duplication_hook.
3950         (function_summary_base::symtab_insertion): New field.
3951         (function_summary_base::symtab_removal): Likewise.
3952         (function_summary_base::symtab_duplication): Likewise.
3953         Register hooks in function_summary_base and directly register
3954         (or unregister) hooks.
3956 2020-10-26  Andrew MacLeod  <amacleod@redhat.com>
3958         PR tree-optimization/97567
3959         * gimple-range-gori.cc (gori_compute::logical_combine): Union the
3960         ranges of operand1 and operand2, not intersect.
3962 2020-10-26  Jan Hubicka  <jh@suse.cz>
3964         * attr-fnspec.h: Update toplevel comment.
3965         (attr_fnspec::attr_fnspec): New constructor.
3966         (attr_fnspec::arg_read_p,
3967         attr_fnspec::arg_written_p,
3968         attr_fnspec::arg_access_size_given_by_arg_p,
3969         attr_fnspec::arg_single_access_p
3970         attr_fnspec::loads_known_p
3971         attr_fnspec::stores_known_p,
3972         attr_fnspec::clobbers_errno_p): New member functions.
3973         (gimple_call_fnspec): Declare.
3974         (builtin_fnspec): Declare.
3975         * builtins.c: Include attr-fnspec.h
3976         (builtin_fnspec): New function.
3977         * builtins.def (BUILT_IN_MEMCPY): Do not specify RET1 fnspec.
3978         (BUILT_IN_MEMMOVE): Do not specify RET1 fnspec.
3979         (BUILT_IN_MEMSET): Do not specify RET1 fnspec.
3980         (BUILT_IN_STRCAT): Do not specify RET1 fnspec.
3981         (BUILT_IN_STRCPY): Do not specify RET1 fnspec.
3982         (BUILT_IN_STRNCAT): Do not specify RET1 fnspec.
3983         (BUILT_IN_STRNCPY): Do not specify RET1 fnspec.
3984         (BUILT_IN_MEMCPY_CHK): Do not specify RET1 fnspec.
3985         (BUILT_IN_MEMMOVE_CHK): Do not specify RET1 fnspec.
3986         (BUILT_IN_MEMSET_CHK): Do not specify RET1 fnspec.
3987         (BUILT_IN_STRCAT_CHK): Do not specify RET1 fnspec.
3988         (BUILT_IN_STRCPY_CHK): Do not specify RET1 fnspec.
3989         (BUILT_IN_STRNCAT_CHK): Do not specify RET1 fnspec.
3990         (BUILT_IN_STRNCPY_CHK): Do not specify RET1 fnspec.
3991         * gimple.c (gimple_call_fnspec): Return attr_fnspec.
3992         (gimple_call_arg_flags): Update.
3993         (gimple_call_return_flags): Update.
3994         * tree-ssa-alias.c (check_fnspec): New function.
3995         (ref_maybe_used_by_call_p_1): Use fnspec for builtin handling.
3996         (call_may_clobber_ref_p_1): Likewise.
3997         (attr_fnspec::verify): Update verifier.
3998         * calls.c (decl_fnspec): New function.
3999         (decl_return_flags): Use it.
4001 2020-10-26  Aldy Hernandez  <aldyh@redhat.com>
4003         PR tree-optimization/97555
4004         * range-op.cc (range_tests): Test 1-bit signed invert.
4005         * value-range.cc (subtract_one): Adjust comment.
4006         (add_one): New.
4007         (irange::invert): Call add_one.
4009 2020-10-26  Jan Hubicka  <jh@suse.cz>
4011         * cgraph.h (cgraph_node::optimize_for_size_p): Return
4012         optimize_size_level.
4013         (cgraph_node::optimize_for_size_p): Update.
4014         * coretypes.h (enum optimize_size_level): New enum.
4015         * predict.c (unlikely_executed_edge_p): Microoptimize.
4016         (optimize_function_for_size_p): Return optimize_size_level.
4017         (optimize_bb_for_size_p): Likewise.
4018         (optimize_edge_for_size_p): Likewise.
4019         (optimize_insn_for_size_p): Likewise.
4020         (optimize_loop_nest_for_size_p): Likewise.
4021         * predict.h (optimize_function_for_size_p): Update declaration.
4022         (optimize_bb_for_size_p): Update declaration.
4023         (optimize_edge_for_size_p): Update declaration.
4024         (optimize_insn_for_size_p): Update declaration.
4025         (optimize_loop_for_size_p): Update declaration.
4026         (optimize_loop_nest_for_size_p): Update declaration.
4028 2020-10-26  Richard Biener  <rguenther@suse.de>
4030         * tree-vect-slp.c (enum slp_instance_kind): New.
4031         (vect_build_slp_instance): Split out from...
4032         (vect_analyze_slp_instance): ... this.
4034 2020-10-26  Andrew MacLeod  <amacleod@redhat.com>
4036         * gimple-range.cc (range_of_builtin_call): Initialize zerov to 0.
4038 2020-10-26  Jan Hubicka  <jh@suse.cz>
4040         PR ipa/97576
4041         * cgraphclones.c (cgraph_node::materialize_clone): Clear stmt
4042         references.
4043         * cgraphunit.c (mark_functions_to_output): Do not clear them here.
4044         * ipa-inline-transform.c (inline_transform): Clear stmt references.
4045         * symtab.c (symtab_node::clear_stmts_in_references): Make recursive
4046         for clones.
4047         * tree-ssa-structalias.c (ipa_pta_execute): Do not clear references.
4049 2020-10-26  Zhiheng Xie  <xiezhiheng@huawei.com>
4050             Nannan Zheng  <zhengnannan@huawei.com>
4052         * config/aarch64/aarch64-builtins.c: Add FLAG STORE.
4053         * config/aarch64/aarch64-simd-builtins.def: Add proper FLAG
4054         for store intrinsics.
4056 2020-10-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4058         PR tree-optimization/97546
4059         * gimple-ssa-store-merging.c (find_bswap_or_nop): Return NULL if
4060         type is not INTEGER_CST.
4062 2020-10-26  Richard Biener  <rguenther@suse.de>
4064         PR middle-end/97521
4065         * expr.c (const_scalar_mask_from_tree): Remove.
4066         (expand_expr_real_1): Always VIEW_CONVERT integer mode
4067         vector constants to an integer type.
4068         * tree.c (build_truth_vector_type_for_mode): Use a single-bit
4069         boolean component type for non-vector-mode mask_mode.
4071 2020-10-26  H.J. Lu  <hjl.tools@gmail.com>
4073         PR target/95458
4074         * config/i386/i386-expand.c (ix86_expand_cmpstrn_or_cmpmem):
4075         Return false for -mno-inline-all-stringops.
4077 2020-10-26  H.J. Lu  <hjl.tools@gmail.com>
4079         PR target/95151
4080         * config/i386/i386-expand.c (ix86_expand_cmpstrn_or_cmpmem): New
4081         function.
4082         * config/i386/i386-protos.h (ix86_expand_cmpstrn_or_cmpmem): New
4083         prototype.
4084         * config/i386/i386.md (cmpmemsi): New pattern.
4086 2020-10-26  Andreas Krebbel  <krebbel@linux.ibm.com>
4088         * config/s390/vector.md ("vcond_mask_<mode><mode>"): New expander.
4090 2020-10-26  Richard Biener  <rguenther@suse.de>
4092         * sbitmap.c (sbitmap_vector_alloc): Use size_t for byte
4093         quantities to avoid overflow.
4095 2020-10-26  Richard Biener  <rguenther@suse.de>
4097         PR tree-optimization/97539
4098         * tree-vect-loop-manip.c (vect_do_peeling): Reset out-of-loop
4099         debug uses before peeling.
4101 2020-10-26  Jan Hubicka  <hubicka@ucw.cz>
4103         * cgraph.h (struct cgraph_node): Make ipa_transforms_to_apply vl_ptr.
4104         * ipa-inline-analysis.c (initialize_growth_caches): Disable insertion
4105         and duplication hooks.
4106         * ipa-inline-transform.c (clone_inlined_nodes): Clear
4107         ipa_transforms_to_apply.
4108         (save_inline_function_body): Disable insertion hoook for
4109         ipa_saved_clone_sources.
4110         * ipa-prop.c (ipcp_transformation_initialize): Disable insertion hook.
4111         * ipa-prop.h (ipa_node_params_t): Disable insertion hook.
4112         * ipa-reference.c (propagate): Disable insertion hoook.
4113         * ipa-sra.c (ipa_sra_summarize_function): Move out of anonymous
4114         namespace.
4115         (ipa_sra_function_summaries::insert): New virtual function.
4116         * passes.c (execute_one_pass): Do not add transforms to inline clones.
4117         * symbol-summary.h (function_summary_base): Make insert and duplicate
4118         hooks fail instead of silently producing empty summaries; add way to
4119         disable duplication hooks
4120         (call_summary_base): Likewise.
4121         * tree-nested.c (nested_function_info::get_create): Disable insertion
4122         hooks
4123         (maybe_record_nested_function): Likewise.
4125 2020-10-26  Xionghu Luo  <luoxhu@linux.ibm.com>
4127         * cfg.c (debug_bb): New overloaded function.
4128         (debug_bb_n): New overloaded function.
4129         * cfg.h (debug_bb): New declaration.
4130         (debug_bb_n): New declaration.
4131         * print-rtl.c (debug_bb_slim): Call debug_bb with flags.
4133 2020-10-24  H.J. Lu  <hjl.tools@gmail.com>
4135         PR bootstrap/97451
4136         * configure.ac (HAVE_AS_WORKING_DWARF_4_FLAG): Renamed to ...
4137         (HAVE_AS_WORKING_DWARF_N_FLAG): This.  Don't define if there is
4138         an extra assembly input file in debug info.  Replace success
4139         with dwarf4_success in the 32-bit --gdwarf-4 check.
4140         * dwarf2out.c (asm_outputs_debug_line_str): Check
4141         HAVE_AS_WORKING_DWARF_N_FLAG instead of
4142         HAVE_AS_WORKING_DWARF_4_FLAG.
4143         * gcc.c (ASM_DEBUG_SPEC): Likewise.
4144         (ASM_DEBUG_OPTION_SPEC): Likewise.
4145         * config.in: Regenerated.
4146         * configure: Likewise.
4148 2020-10-24  Aldy Hernandez  <aldyh@redhat.com>
4150         PR tree-optimization/97538
4151         * calls.c (get_size_range): Handle undefined ranges.
4153 2020-10-24  Martin Liska  <mliska@suse.cz>
4155         * cgraph.c (cgraph_node::former_thunk_p): Move out of CHECKING_P
4156         macro.
4158 2020-10-24  Alan Modra  <amodra@gmail.com>
4160         * config/rs6000/rs6000.c (rs6000_legitimate_address_p): Limit
4161         AND addressing to just lvx/stvx style addresses.
4163 2020-10-24  Alan Modra  <amodra@gmail.com>
4165         * config/rs6000/rs6000.md (cstore<mode>4): Don't call
4166         rs6000_emit_int_cmove for power10 when -mno-isel.
4168 2020-10-23  Jan Hubicka  <hubicka@ucw.cz>
4170         * Makefile.in: Add symtab-thunks.o
4171         (GTFILES): Add symtab-thunks.h and symtab-thunks.cc; remove cgraphunit.c
4172         * cgraph.c: Include symtab-thunks.h.
4173         (cgraph_node::create_thunk): Update
4174         (symbol_table::create_edge): Update
4175         (cgraph_node::dump): Update
4176         (cgraph_node::call_for_symbol_thunks_and_aliases): Update
4177         (set_nothrow_flag_1): Update
4178         (set_malloc_flag_1): Update
4179         (set_const_flag_1): Update
4180         (collect_callers_of_node_1): Update
4181         (clone_of_p): Update
4182         (cgraph_node::verify_node): Update
4183         (cgraph_node::function_symbol): Update
4184         (cgraph_c_finalize): Call thunk_info::release.
4185         (cgraph_node::has_thunk_p): Update
4186         (cgraph_node::former_thunk_p): Move here from cgraph.h; reimplement.
4187         * cgraph.h (struct cgraph_thunk_info): Rename to symtab-thunks.h.
4188         (cgraph_node): Remove thunk field; add thunk bitfield.
4189         (cgraph_node::expand_thunk): Move to symtab-thunks.h
4190         (symtab_thunks_cc_finalize): Declare.
4191         (cgraph_node::has_gimple_body_p): Update.
4192         (cgraph_node::former_thunk_p): Update.
4193         * cgraphclones.c: Include symtab-thunks.h.
4194         (duplicate_thunk_for_node): Update.
4195         (cgraph_edge::redirect_callee_duplicating_thunks): Update.
4196         (cgraph_node::expand_all_artificial_thunks): Update.
4197         (cgraph_node::create_edge_including_clones): Update.
4198         * cgraphunit.c: Include symtab-thunks.h.
4199         (vtable_entry_type): Move to symtab-thunks.c.
4200         (cgraph_node::analyze): Update.
4201         (analyze_functions): Update.
4202         (mark_functions_to_output): Update.
4203         (thunk_adjust): Move to symtab-thunks.c
4204         (cgraph_node::expand_thunk): Move to symtab-thunks.c
4205         (cgraph_node::assemble_thunks_and_aliases): Update.
4206         (output_in_order): Update.
4207         (cgraphunit_c_finalize): Do not clear vtable_entry_type.
4208         (cgraph_node::create_wrapper): Update.
4209         * gengtype.c (open_base_files): Add symtab-thunks.h
4210         * ipa-comdats.c (propagate_comdat_group): UPdate.
4211         (ipa_comdats): Update.
4212         * ipa-cp.c (determine_versionability): UPdate.
4213         (gather_caller_stats): Update.
4214         (count_callers): Update
4215         (set_single_call_flag): Update
4216         (initialize_node_lattices): Update
4217         (call_passes_through_thunk_p): Update
4218         (call_passes_through_thunk): Update
4219         (propagate_constants_across_call): Update
4220         (find_more_scalar_values_for_callers_subset): Update
4221         (has_undead_caller_from_outside_scc_p): Update
4222         * ipa-fnsummary.c (evaluate_properties_for_edge): Update.
4223         (compute_fn_summary): Update.
4224         (inline_analyze_function): Update.
4225         * ipa-icf.c: Include symtab-thunks.h.
4226         (sem_function::equals_wpa): Update.
4227         (redirect_all_callers): Update.
4228         (sem_function::init): Update.
4229         (sem_function::parse): Update.
4230         * ipa-inline-transform.c: Include symtab-thunks.h.
4231         (inline_call): Update.
4232         (save_inline_function_body): Update.
4233         (preserve_function_body_p): Update.
4234         * ipa-inline.c (inline_small_functions): Update.
4235         * ipa-polymorphic-call.c: Include alloc-pool.h, symbol-summary.h,
4236         symtab-thunks.h
4237         (ipa_polymorphic_call_context::ipa_polymorphic_call_context): Update.
4238         * ipa-pure-const.c: Include symtab-thunks.h.
4239         (analyze_function): Update.
4240         * ipa-sra.c (check_for_caller_issues): Update.
4241         * ipa-utils.c (ipa_reverse_postorder): Update.
4242         (ipa_merge_profiles): Update.
4243         * ipa-visibility.c (non_local_p): Update.
4244         (cgraph_node::local_p): Update.
4245         (function_and_variable_visibility): Update.
4246         * ipa.c (symbol_table::remove_unreachable_nodes): Update.
4247         * lto-cgraph.c: Include alloc-pool.h, symbol-summary.h and
4248         symtab-thunks.h
4249         (lto_output_edge): Update.
4250         (lto_output_node): Update.
4251         (compute_ltrans_boundary): Update.
4252         (output_symtab): Update.
4253         (verify_node_partition): Update.
4254         (input_overwrite_node): Update.
4255         (input_node): Update.
4256         * lto-streamer-in.c (fixup_call_stmt_edges): Update.
4257         * symtab-thunks.cc: New file.
4258         * symtab-thunks.h: New file.
4259         * toplev.c (toplev::finalize): Call symtab_thunks_cc_finalize.
4260         * trans-mem.c (ipa_tm_mayenterirr_function): Update.
4261         (ipa_tm_execute): Update.
4262         * tree-inline.c (expand_call_inline): Update.
4263         * tree-nested.c (create_nesting_tree): Update.
4264         (convert_all_function_calls): Update.
4265         (gimplify_all_functions): Update.
4266         * tree-profile.c (tree_profiling): Update.
4267         * tree-ssa-structalias.c (associate_varinfo_to_alias): Update.
4268         * tree.c (free_lang_data_in_decl): Update.
4269         * value-prof.c (init_node_map): Update.
4271 2020-10-23  Marek Polacek  <polacek@redhat.com>
4273         PR c++/91741
4274         * doc/invoke.texi: Document -Wsizeof-array-div.
4276 2020-10-23  Martin Sebor  <msebor@redhat.com>
4278         PR middle-end/97552
4279         * attribs.c (init_attr_rdwr_indices): Handle static VLA parameters.
4281 2020-10-23  Douglas Rupp  <rupp@adacore.com>
4283         * config/vxworks.h (VXWORKS_NET_LIBS_RTP): Use -lrtnet if
4284         rtnetStackLib.h is available,fallback to -lnet otherwise.
4286 2020-10-23  Douglas Rupp  <rupp@adacore.com>
4288         * gcc.c (if-exists-then-else): New built-in spec function.
4289         * doc/invoke.texi: Document it.
4291 2020-10-23  Tulio Magno Quites Machado Filho  <tuliom@linux.ibm.com>
4293         * doc/extend.texi (PowerPC Built-in Functions): Replace
4294         extraneous characters with whitespace.
4296 2020-10-23  Martin Liska  <mliska@suse.cz>
4298         * gcov.c (read_count_file): Never call gcov_sync with a negative
4299         value.
4301 2020-10-23  Jakub Jelinek  <jakub@redhat.com>
4303         * Makefile.in (PLUGIN_HEADERS): Add gomp-constants.h and $(EXPR_H).
4304         (s-header-vars): Accept not just spaces but also tabs between *_H name
4305         and =.  Handle common/config/ headers similarly to config.  Don't
4306         throw away everything from first ... to last / on the remaining
4307         string, instead skip just ... to corresponding last / without
4308         intervening spaces and tabs.
4309         (install-plugin): Treat common/config headers like config headers.
4310         * config/i386/t-i386 (TM_H): Add
4311         $(srcdir)/common/config/i386/i386-cpuinfo.h.
4313 2020-10-23  Jakub Jelinek  <jakub@redhat.com>
4315         PR tree-optimization/97164
4316         * stor-layout.c (layout_type): Also reject arrays where element size
4317         is constant, but not a multiple of element alignment.
4319 2020-10-23  Eric Botcazou  <ebotcazou@adacore.com>
4321         * tree-ssa-loop-ivopts.c (analyze_and_mark_doloop_use): Bail out if
4322         the loop is subject to a pragma Unroll with no specific count.
4324 2020-10-23  Dennis Zhang  <dennis.zhang@arm.com>
4326         * config/arm/mve.md (mve_vsubq<mode>): New entry for vsub instruction
4327         using expression 'minus'.
4328         (mve_vsubq_f<mode>): Use minus instead of VSUBQ_F unspec.
4329         * config/arm/neon.md (sub<mode>3, sub<mode>3_fp16): Removed.
4330         (neon_vsub<mode>): Use gen_sub<mode>3 instead of gen_sub<mode>3_fp16.
4331         * config/arm/vec-common.md (sub<mode>3): Use the new mode macros
4332         ARM_HAVE_<MODE>_ARITH. Use iterator VDQ instead of VALL.
4334 2020-10-23  Martin Liska  <mliska@suse.cz>
4336         PR lto/97524
4337         * lto-wrapper.c (make_exists): New function.
4338         (run_gcc): Use it to check that make is present and working
4339         for parallel execution.
4341 2020-10-23  Richard Biener  <rguenther@suse.de>
4343         Revert:
4344         2020-10-22  Richard Biener  <rguenther@suse.de>
4346         PR middle-end/97521
4347         * expr.c (expand_expr_real_1): Be more careful when
4348         expanding a VECTOR_BOOLEAN_TYPE_P VECTOR_CSTs.
4350 2020-10-23  Kewen Lin  <linkw@linux.ibm.com>
4352         * tree-vect-loop.c (vect_transform_loop): Remove the redundant
4353         LOOP_VINFO_FULLY_MASKED_P check.
4355 2020-10-23  Dennis Zhang  <dennis.zhang@arm.com>
4357         * config/arm/mve.md (mve_vsubq<mode>): New entry for vsub instruction
4358         using expression 'minus'.
4359         (mve_vsubq_f<mode>): Use minus instead of VSUBQ_F unspec.
4360         * config/arm/neon.md (sub<mode>3, sub<mode>3_fp16): Removed.
4361         (neon_vsub<mode>): Use gen_sub<mode>3 instead of gen_sub<mode>3_fp16.
4362         * config/arm/vec-common.md (sub<mode>3): Use the new mode macros
4363         ARM_HAVE_<MODE>_ARITH. Use iterator VDQ instead of VALL.
4365 2020-10-22  Alan Modra  <amodra@gmail.com>
4367         * config/rs6000/rs6000.c (rs6000_emit_xxspltidp_v2df): Delete
4368         debug printf.  Remove trailing ".\n" from inform message.
4369         Break long line.
4371 2020-10-22  Andrew MacLeod  <amacleod@redhat.com>
4373         * gimple-range-gori.cc (is_gimple_logical_p): Use types_compatible_p
4374         for logical compatibility.
4375         (logical_stmt_cache::cacheable_p): Ditto.
4377 2020-10-22  Jan Hubicka  <hubicka@ucw.cz>
4379         * cgraph.c (cgraph_node::get_untransformed_body): Perform lazy
4380         clone materialization.
4381         * cgraph.h (cgraph_node::materialize_clone): Declare.
4382         (symbol_table::materialize_all_clones): Remove.
4383         * cgraphclones.c (cgraph_materialize_clone): Turn to ...
4384         (cgraph_node::materialize_clone): .. this one; move here
4385         dumping from symbol_table::materialize_all_clones.
4386         (symbol_table::materialize_all_clones): Remove.
4387         * cgraphunit.c (mark_functions_to_output): Clear stmt references.
4388         (cgraph_node::expand): Initialize bitmaps early;
4389         do not call execute_all_ipa_transforms if there are no transforms.
4390         * ipa-inline-transform.c (save_inline_function_body): Fix formating.
4391         (inline_transform): Materialize all clones before function is modified.
4392         * ipa-param-manipulation.c (ipa_param_adjustments::modify_call):
4393         Materialize clone if needed.
4394         * ipa.c (class pass_materialize_all_clones): Remove.
4395         (make_pass_materialize_all_clones): Remove.
4396         * passes.c (execute_all_ipa_transforms): Materialize all clones.
4397         * passes.def: Remove pass_materialize_all_clones.
4398         * tree-pass.h (make_pass_materialize_all_clones): Remove.
4399         * tree-ssa-structalias.c (ipa_pta_execute): Clear refs.
4401 2020-10-22  Will Schmidt  <will_schmidt@vnet.ibm.com>
4403         * config/rs6000/altivec.h (vec_xl_zext, vec_xl_sext, vec_xst_trunc):
4404         New defines.
4405         * config/rs6000/rs6000-builtin.def (BU_P10V_OVERLOAD_X): New builtin
4406         macro.
4407         (BU_P10V_AV_X): New builtin macro.
4408         (se_lxvrhbx, se_lxrbhx, se_lxvrwx, se_lxvrdx): Define internal names
4409         for load and sign extend vector element.
4410         (ze_lxvrbx, ze_lxvrhx, ze_lxvrwx, ze_lxvrdx): Define internal names
4411         for load and zero extend vector element.
4412         (tr_stxvrbx, tr_stxvrhx, tr_stxvrwx, tr_stxvrdx): Define internal names
4413         for truncate and store vector element.
4414         (se_lxvrx, ze_lxvrx, tr_stxvrx): Define internal names for overloaded
4415         load/store rightmost element.
4416         * config/rs6000/rs6000-call.c (altivec_builtin_types): Define the
4417         internal monomorphs P10_BUILTIN_SE_LXVRBX, P10_BUILTIN_SE_LXVRHX,
4418         P10_BUILTIN_SE_LXVRWX, P10_BUILTIN_SE_LXVRDX,
4419         P10_BUILTIN_ZE_LXVRBX, P10_BUILTIN_ZE_LXVRHX, P10_BUILTIN_ZE_LXVRWX,
4420         P10_BUILTIN_ZE_LXVRDX,
4421         P10_BUILTIN_TR_STXVRBX, P10_BUILTIN_TR_STXVRHX, P10_BUILTIN_TR_STXVRWX,
4422         P10_BUILTIN_TR_STXVRDX,
4423         (altivec_expand_lxvr_builtin): New expansion for load element builtins.
4424         (altivec_expand_stv_builtin): Update to for truncate and store builtins.
4425         (altivec_expand_builtin): Add clases for load/store rightmost builtins.
4426         (altivec_init_builtins): Add def_builtin entries for
4427         __builtin_altivec_se_lxvrbx, __builtin_altivec_se_lxvrhx,
4428         __builtin_altivec_se_lxvrwx, __builtin_altivec_se_lxvrdx,
4429         __builtin_altivec_ze_lxvrbx, __builtin_altivec_ze_lxvrhx,
4430         __builtin_altivec_ze_lxvrwx, __builtin_altivec_ze_lxvrdx,
4431         __builtin_altivec_tr_stxvrbx, __builtin_altivec_tr_stxvrhx,
4432         __builtin_altivec_tr_stxvrwx, __builtin_altivec_tr_stxvrdx,
4433         __builtin_vec_se_lxvrx, __builtin_vec_ze_lxvrx, __builtin_vec_tr_stxvrx.
4434         * config/rs6000/vsx.md (vsx_lxvr<wd>x, vsx_stxvr<wd>x, vsx_stxvr<wd>x):
4435         New define_insn entries.
4436         * doc/extend.texi:  Add documentation for vsx_xl_sext, vsx_xl_zext,
4437         and vec_xst_trunc.
4439 2020-10-22  Will Schmidt  <will_schmidt@vnet.ibm.com>
4441         * config/rs6000/vsx.md (enum unspec): Add
4442         UNSPEC_EXTENDDITI2 and UNSPEC_MTVSRD_DITI_W1 entries.
4443         (mtvsrdd_diti_w1, extendditi2_vector): New define_insns.
4444         (extendditi2): New define_expand.
4446 2020-10-22  Alexandre Oliva  <oliva@adacore.com>
4448         * config/i386/mingw-w64.h (TARGET_LIBC_HAS_FUNCTION): Enable
4449         sincos optimization.
4451 2020-10-22  Alan Modra  <amodra@gmail.com>
4453         * config/rs6000/vsx.md (vec_cntmb_<mode>, vec_extract_<mode>),
4454         (vec_expand_<mode>): Replace <VSX_MM_SUFFIX> with <wd>.
4456 2020-10-22  Richard Biener  <rguenther@suse.de>
4458         * tree-vect-slp.c (vect_analyze_slp_instance): Refactor so
4459         computing a vector type early is not needed, for store group
4460         splitting compute a new vector type based on the desired
4461         group size.
4463 2020-10-22  Richard Biener  <rguenther@suse.de>
4465         PR middle-end/97521
4466         * expr.c (expand_expr_real_1): Be more careful when
4467         expanding a VECTOR_BOOLEAN_TYPE_P VECTOR_CSTs.
4469 2020-10-22  David Malcolm  <dmalcolm@redhat.com>
4471         * ipa-modref-tree.c (selftest::test_insert_search_collapse): Fix
4472         leak.
4473         (selftest::test_merge): Fix leaks.
4475 2020-10-22  Andreas Krebbel  <krebbel@linux.ibm.com>
4477         PR target/97502
4478         * config/s390/vector.md ("vec_cmp<VI_HW:mode><VI_HW:mode>")
4479         ("vec_cmpu<VI_HW:mode><VI_HW:mode>"): New expanders.
4481 2020-10-22  Andreas Krebbel  <krebbel@linux.ibm.com>
4483         PR rtl-optimization/97439
4484         * dfp.c (decimal_real_maxval): Set the sign flag in the
4485         generated number.
4487 2020-10-22  Martin Liska  <mliska@suse.cz>
4489         PR c/94722
4490         * cfgexpand.c (stack_protect_decl_phase):
4491         Guard with lookup_attribute("no_stack_protector") at
4492         various places.
4493         (expand_used_vars): Likewise here.
4494         * doc/extend.texi: Document no_stack_protector attribute.
4496 2020-10-22  Martin Liska  <mliska@suse.cz>
4498         * cfgexpand.c: Move the enum to ...
4499         * coretypes.h (enum stack_protector): ... here.
4500         * function.c (assign_parm_adjust_stack_rtl): Use the stack_protector
4501         enum.
4503 2020-10-22  Kito Cheng  <kito.cheng@sifive.com>
4505         * config/riscv/multilib-generator: Add TODO, import itertools
4506         and functools.reduce.
4507         Handle expantion operator.
4508         (LONG_EXT_PREFIXES): New.
4509         (arch_canonicalize): Update comment and improve python3
4510         debuggability/compatibility.
4511         (add_underline_prefix): New.
4512         (_expand_combination): Ditto.
4513         (unique): Ditto.
4514         (expand_combination): Ditto.
4516 2020-10-22  Jakub Jelinek  <jakub@redhat.com>
4518         * tree-ssa-phiopt.c (cond_removal_in_popcount_clz_ctz_pattern):
4519         For CLZ and CTZ tests, use type temporary instead of mode.
4521 2020-10-22  Jakub Jelinek  <jakub@redhat.com>
4523         * config.gcc (x86_archs): Add samuel-2, nehemiah, c7 and esther.
4524         (x86_64_archs): Add eden-x2, nano, nano-1000, nano-2000, nano-3000,
4525         nano-x2, eden-x4, nano-x4, x86-64-v2, x86-64-v3 and x86-64-v4.
4526         (i[34567]86-*-* | x86_64-*-*): Only allow x86-64-v* as argument
4527         to --with-arch_64=.
4529 2020-10-22  Jan Hubicka  <jh@suse.cz>
4531         * ipa-pure-const.c (funct_state_summary_t::insert): Free stale
4532         summaries.
4534 2020-10-22  Jan Hubicka  <hubicka@ucw.cz>
4536         * cgraph.c: Include tree-nested.h
4537         (cgraph_node::create): Call maybe_record_nested_function.
4538         (cgraph_node::remove): Do not remove function from nested function
4539         infos.
4540         (cgraph_node::dump): Update.
4541         (cgraph_node::unnest): Move to tree-nested.c
4542         (cgraph_node::verify_node): Update.
4543         (cgraph_c_finalize): Call nested_function_info::release.
4544         * cgraph.h (struct symtab_node): Remove nested function info.
4545         * cgraphclones.c (cgraph_node::create_clone): Do not clone nested
4546         function info.
4547         * cgraphunit.c (cgraph_node::analyze): Update.
4548         (cgraph_node::expand): Do not worry about nested functions; they are
4549         lowered.
4550         (symbol_table::finalize_compilation_unit): Call
4551         nested_function_info::release.
4552         * gimplify.c: Include tree-nested.h
4553         (unshare_body): Update.
4554         (unvisit_body): Update.
4555         * omp-offload.c (omp_discover_implicit_declare_target): Update.
4556         * tree-nested.c: Include alloc-pool.h, tree-nested.h, symbol-summary.h
4557         (nested_function_sum): New static variable.
4558         (nested_function_info::get): New member function.
4559         (nested_function_info::get_create): New member function.
4560         (unnest_function): New function.
4561         (nested_function_info::~nested_function_info): New member function.
4562         (nested_function_info::release): New function.
4563         (maybe_record_nested_function): New function.
4564         (lookup_element_for_decl): Update.
4565         (check_for_nested_with_variably_modified): Update.
4566         (create_nesting_tree): Update.
4567         (unnest_nesting_tree_1): Update.
4568         (gimplify_all_functions): Update.
4569         (lower_nested_functions): Update.
4570         * tree-nested.h (class nested_function_info): New class.
4571         (maybe_record_nested_function): Declare.
4572         (unnest_function): Declare.
4573         (first_nested_function): New inline function.
4574         (next_nested_function): New inline function.
4575         (nested_function_origin): New inline function.
4577 2020-10-22  liuhongt  <hongtao.liu@intel.com>
4579         PR rtl-optimization/97249
4580         * simplify-rtx.c (simplify_binary_operation_1): Simplify
4581         vec_select of a subreg of X to a vec_select of X.
4583 2020-10-22  liuhongt  <hongtao.liu@intel.com>
4585         PR target/87767
4586         * config/i386/constraints.md ("Br"): New special memory
4587         constraint.
4588         * config/i386/i386-expand.c (ix86_binary_operator_ok): Both
4589         source operand cannot be in memory or bcst_memory_operand.
4590         * config/i386/i386.c (ix86_print_operand): Print bcst_mem_operand.
4591         * config/i386/i386.h (VALID_BCST_MODE_P): New.
4592         * config/i386/predicates.md (bcst_mem_operand): New predicate
4593         for AVX512 embedding broadcast memory operand.
4594         (bcst_vector_operand): New predicate, vector_operand or
4595         bcst_mem_operand.
4596         * config/i386/sse.md
4597         (*<plusminus_insn><mode>3<mask_name><round_name>): Extend
4598         predicate and constraints to handle bcst_mem_operand.
4599         (*mul<mode>3<mask_name><round_name>): Ditto.
4600         (<sse>_div<mode>3<mask_name><round_name>): Ditto.
4601         (<sd_mask_codefor>fma_fmadd_<mode><sd_maskz_name><round_name>):
4602         Ditto.
4603         (<sd_mask_codefor>fma_fmsub_<mode><sd_maskz_name><round_name>):
4604         Ditto.
4605         (<sd_mask_codefor>fma_fnmadd_<mode><sd_maskz_name><round_name>):
4606         Ditto.
4607         (<sd_mask_codefor>fma_fnmsub_<mode><sd_maskz_name><round_name>):
4608         Ditto.
4609         (*<plusminus_insn><mode>3): Ditto.
4610         (avx512dq_mul<mode>3<mask_name>): Ditto.
4611         (*<sse4_1_avx2>_mul<mode>3<mask_name>): Ditto.
4612         (*andnot<mode>3): Ditto.
4613         (<mask_codefor><code><mode>3<mask_name>): Ditto.
4614         (*sub<mode>3<mask_name>_bcst): Removed.
4615         (*add<mode>3<mask_name>_bcst): Ditto.
4616         (*mul<mode>3<mask_name>_bcst): Ditto.
4617         (*<avx512>_div<mode>3<mask_name>_bcst): Ditto.
4618         (*<sd_mask_codefor>fma_fmadd_<mode><sd_maskz_name>_bcst_1):
4619         Ditto.
4620         (*<sd_mask_codefor>fma_fmadd_<mode><sd_maskz_name>_bcst_2):
4621         Ditto.
4622         (*<sd_mask_codefor>fma_fmadd_<mode><sd_maskz_name>_bcst_3):
4623         Ditto.
4624         (*<sd_mask_codefor>fma_fmsub_<mode><sd_maskz_name>_bcst_1):
4625         Ditto.
4626         (*<sd_mask_codefor>fma_fmsub_<mode><sd_maskz_name>_bcst_2):
4627         Ditto.
4628         (*<sd_mask_codefor>fma_fmsub_<mode><sd_maskz_name>_bcst_3):
4629         Ditto.
4630         (*<sd_mask_codefor>fma_fnmadd_<mode><sd_maskz_name>_bcst_1):
4631         Ditto.
4632         (*<sd_mask_codefor>fma_fnmadd_<mode><sd_maskz_name>_bcst_2):
4633         Ditto.
4634         (*<sd_mask_codefor>fma_fnmadd_<mode><sd_maskz_name>_bcst_3):
4635         Ditto.
4636         (*<sd_mask_codefor>fma_fnmsub_<mode><sd_maskz_name>_bcst_1):
4637         Ditto.
4638         (*<sd_mask_codefor>fma_fnmsub_<mode><sd_maskz_name>_bcst_2):
4639         Ditto.
4640         (*<sd_mask_codefor>fma_fnmsub_<mode><sd_maskz_name>_bcst_3):
4641         Ditto.
4642         (*sub<mode>3_bcst): Ditto.
4643         (*add<mode>3_bcst): Ditto.
4644         (*avx512dq_mul<mode>3<mask_name>_bcst): Ditto.
4645         (*avx512f_mul<mode>3<mask_name>_bcst): Ditto.
4646         (*andnot<mode>3_bcst): Ditto.
4647         (*<code><mode>3_bcst): Ditto.
4648         * config/i386/subst.md (bcst_round_constraint): New subst
4649         attribute.
4650         (bcst_round_nimm_predicate): Ditto.
4651         (bcst_mask_prefix3): Ditto.
4652         (bcst_mask_prefix4): Ditto.
4654 2020-10-22  liuhongt  <hongtao.liu@intel.com>
4656         PR target/87767
4657         * ira-costs.c (record_operand_costs): Extract memory operand
4658         from recog_data.operand[i] for record_address_regs.
4659         (record_reg_classes): Extract memory operand from OP for
4660         conditional judgement MEM_P.
4661         * ira.c (ira_setup_alts): Ditto.
4662         * lra-constraints.c (extract_mem_from_operand): New function.
4663         (satisfies_memory_constraint_p): Extract memory operand from
4664         OP for decompose_mem_address, return false when there's no
4665         memory operand inside OP.
4666         (process_alt_operands): Remove MEM_P (op) since it would be
4667         judged in satisfies_memory_constraint_p.
4668         * recog.c (asm_operand_ok): Extract memory operand from OP for
4669         judgement of memory_operand (OP, VOIDmode).
4670         (constrain_operands): Don't unwrapper unary operator when
4671         there's memory operand inside.
4672         * rtl.h (extract_mem_from_operand): New decl.
4674 2020-10-22  Dennis Zhang  <dennis.zhang@arm.com>
4676         * config/arm/mve.md (mve_vmaxq_<supf><mode>): Replace with ...
4677         (mve_vmaxq_s<mode>, mve_vmaxq_u<mode>): ... these new insns to
4678         use smax/umax instead of VMAXQ.
4679         (mve_vminq_<supf><mode>): Replace with ...
4680         (mve_vminq_s<mode>, mve_vminq_u<mode>): ... these new insns to
4681         use smin/umin instead of VMINQ.
4682         (mve_vmaxnmq_f<mode>): Use smax instead of VMAXNMQ_F.
4683         (mve_vminnmq_f<mode>): Use smin instead of VMINNMQ_F.
4684         * config/arm/vec-common.md (smin<mode>3): Use the new mode macros
4685         ARM_HAVE_<MODE>_ARITH.
4686         (umin<mode>3, smax<mode>3, umax<mode>3): Likewise.
4688 2020-10-22  Andrew MacLeod  <amacleod@redhat.com>
4690         PR tree-optimization/97520
4691         * gimple-range.cc (range_of_non_trivial_assignment): Handle x = &a
4692         by returning a non-zero range.
4694 2020-10-22  Dennis Zhang  <dennis.zhang@arm.com>
4696         * config/arm/mve.md (mve_vmulq<mode>): New entry for vmul instruction
4697         using expression 'mult'.
4698         (mve_vmulq_f<mode>): Use mult instead of VMULQ_F.
4699         * config/arm/neon.md (mul<mode>3): Removed.
4700         * config/arm/vec-common.md (mul<mode>3): Use the new mode macros
4701         ARM_HAVE_<MODE>_ARITH. Use mode iterator VDQWH instead of VALLW.
4703 2020-10-22  Andrew MacLeod  <amacleod@redhat.com>
4705         PR tree-optimization/97515
4706         * value-query.cc (range_query::value_of_expr): If the result is
4707         UNDEFINED, check to see if the global value is a constant.
4708         (range_query::value_on_edge): Ditto.
4710 2020-10-21  Jan Hubicka  <hubicka@ucw.cz>
4712         PR ipa/97445
4713         * ipa-inline.c (inline_insns_single): Add hint2 parameter.
4714         (inline_insns_auto): Add hint2 parameter.
4715         (can_inline_edge_by_limits_p): Update.
4716         (want_inline_small_function_p): Update.
4717         (wrapper_heuristics_may_apply): Update.
4719 2020-10-21  Richard Biener  <rguenther@suse.de>
4720             Andrew MacLeod  <amacleod@redhat.com>
4721             Martin Liska  <mliska@suse.cz>
4723         PR target/97360
4724         * config/rs6000/rs6000-call.c (rs6000_init_builtins): Remove call to
4725         build_distinct_type_copy().
4727 2020-10-21  Jan Hubicka  <jh@suse.cz>
4729         PR ipa/97445
4730         * ipa-fnsummary.c (ipa_dump_hints): Add INLINE_HINT_builtin_constant_p.
4731         (ipa_fn_summary::~ipa_fn_summary): Free builtin_constant_p_parms.
4732         (ipa_fn_summary_t::duplicate): Duplicate builtin_constant_p_parms.
4733         (ipa_dump_fn_summary): Dump builtin_constant_p_parms.
4734         (add_builtin_constant_p_parm): New function
4735         (set_cond_stmt_execution_predicate): Update builtin_constant_p_parms.
4736         (ipa_call_context::estimate_size_and_time): Set
4737         INLINE_HINT_builtin_constant_p..
4738         (ipa_merge_fn_summary_after_inlining): Merge builtin_constant_p_parms.
4739         (inline_read_section): Read builtin_constant_p_parms.
4740         (ipa_fn_summary_write): Write builtin_constant_p_parms.
4741         * ipa-fnsummary.h (enum ipa_hints_vals): Add
4742         INLINE_HINT_builtin_constant_p.
4743         * ipa-inline.c (want_inline_small_function_p): Use
4744         INLINE_HINT_builtin_constant_p.
4745         (edge_badness): Use INLINE_HINT_builtin_constant_p.
4747 2020-10-21  Douglas Rupp  <rupp@adacore.com>
4749         * config/vx-common.h (LINK_SPEC, LIB_SPEC): Remove #undef.
4751 2020-10-21  Douglas Rupp  <rupp@adacore.com>
4752             Olivier Hainque  <hainque@adacore.com>
4754         * config.gcc (powerpc*-wrs-vxworks7r*): New case.
4755         * config/rs6000/vxworks.h: Rework to handle VxWorks7.
4756         Refactor as common bits + vx6 vs vx7 ones. For the
4757         latter, rely essentially on the Linux configuration
4758         and adjust CPU to _VX_CPU in CPP_SPEC. Add a case
4759         for e6500. Use SUB3TARGET_OVERRIDE_OPTIONS for specifics
4760         to preserve the Linux SUBSUBTARGET_OVERRIDE_OPTIONS
4761         for vx7.
4763 2020-10-21  Richard Biener  <rguenther@suse.de>
4765         PR tree-optimization/97500
4766         * tree-vect-slp.c (vect_analyze_slp_backedges): Do not
4767         fill backedges for inductions.
4769 2020-10-21  liuhongt  <hongtao.liu@intel.com>
4771         PR target/97506
4772         * config/i386/i386-expand.c (ix86_expand_sse_movcc): Move
4773         op_true to dest directly when op_true equals op_false.
4775 2020-10-21  Jakub Jelinek  <jakub@redhat.com>
4777         PR tree-optimization/97503
4778         * tree-ssa-phiopt.c: Include internal-fn.h.
4779         (cond_removal_in_popcount_pattern): Rename to ...
4780         (cond_removal_in_popcount_clz_ctz_pattern): ... this.  Handle not just
4781         popcount, but also clz and ctz if it has C?Z_DEFINED_VALUE_AT_ZERO 2.
4783 2020-10-21  Richard Biener  <rguenther@suse.de>
4785         * cfg.c (htab_bb_copy_original_entry): Remove.
4786         (bb_copy_hasher): Likewise.
4787         (bb_original, bb_copy, loop_copy): Use
4788         hash_map<int_hash<int, -1, -2>, int>.
4789         (original_copy_bb_pool): Remove.
4790         (initialize_original_copy_tables): Adjust.
4791         (reset_original_copy_tables): Likewise.
4792         (free_original_copy_tables): Likewise.
4793         (original_copy_tables_initialized_p): Likewise.
4794         (copy_original_table_clear): Simplify.
4795         (copy_original_table_set): Likewise.
4796         (get_bb_original): Likewise.
4797         (get_bb_copy): Likewise.
4798         (get_loop_copy): Likewise.
4800 2020-10-21  Richard Biener  <rguenther@suse.de>
4802         * cfghooks.c (copy_bbs): Split out loop computing new_edges.
4804 2020-10-21  Aldy Hernandez  <aldyh@redhat.com>
4806         * gimple-range.cc (gimple_ranger::range_of_ssa_name_with_loop_info):
4807         Remove TREE_OVERFLOW special case.
4808         * vr-values.c (bounds_of_var_in_loop): Adjust overflow for
4809         invariants.
4811 2020-10-21  Aldy Hernandez  <aldyh@redhat.com>
4813         * vr-values.h: Remove simplify_cond_using_ranges_2.
4814         (range_fits_type_p): New.
4815         * vr-values.c (range_fits_type_p): Remove static qualifier.
4816         (vrp_simplify_cond_using_ranges): Move...
4817         * tree-vrp.c (vrp_simplify_cond_using_ranges): ...to here.
4819 2020-10-20  Andrew MacLeod  <amacleod@redhat.com>
4821         PR tree-optimization/97505
4822         * vr-values.c (vr_values::extract_range_basic): Trap if
4823         vr_values version disagrees with range_of_builtin_call.
4825 2020-10-20  David Edelsohn  <dje.gcc@gmail.com>
4827         * config/rs6000/rs6000.c (rs6000_option_override_internal):
4828         Don't implcitly enable Altivec ABI if set on the command line.
4830 2020-10-20  Aldy Hernandez  <aldyh@redhat.com>
4832         * calls.c (get_size_range): Adjust to work with ranger.
4833         * calls.h (get_size_range): Add ranger argument to prototype.
4834         * gimple-ssa-warn-restrict.c (class wrestrict_dom_walker): Remove.
4835         (check_call): Pull out of wrestrict_dom_walker into a
4836         static function.
4837         (wrestrict_dom_walker::before_dom_children): Rename to...
4838         (wrestrict_walk): ...this.
4839         (pass_wrestrict::execute): Instantiate ranger.
4840         (class builtin_memref): Add stmt and query fields.
4841         (builtin_access::builtin_access): Add range_query field.
4842         (builtin_memref::builtin_memref): Same.
4843         (builtin_memref::extend_offset_range): Same.
4844         (builtin_access::builtin_access): Make work with ranger.
4845         (wrestrict_dom_walker::check_call): Pull out into...
4846         (check_call): ...here.
4847         (check_bounds_or_overlap): Add range_query argument.
4848         * gimple-ssa-warn-restrict.h (check_bounds_or_overlap):
4849         Add range_query and gimple stmt arguments.
4851 2020-10-20  Aldy Hernandez  <aldyh@redhat.com>
4853         * gimple-ssa-warn-alloca.c (enum alloca_type): Remove
4854         ALLOCA_BOUND_UNKNOWN and ALLOCA_CAST_FROM_SIGNED.
4855         (warn_limit_specified_p): New.
4856         (alloca_call_type_by_arg): Remove.
4857         (cast_from_signed_p): Remove.
4858         (is_max): Remove.
4859         (alloca_call_type): Remove heuristics and replace with call into
4860         ranger.
4861         (pass_walloca::execute): Instantiate ranger.
4863 2020-10-20  Tobias Burnus  <tobias@codesourcery.com>
4865         * lto-wrapper.c (run_gcc): Use proper variable for
4866         %u.ltrans_args dump suffix.
4868 2020-10-20  Zhiheng Xie  <xiezhiheng@huawei.com>
4869             Nannan Zheng  <zhengnannan@huawei.com>
4871         * config/aarch64/aarch64-simd-builtins.def: Add proper FLAG
4872         for get/set reg intrinsics.
4874 2020-10-20  Aldy Hernandez  <aldyh@redhat.com>
4876         * gimple-range.cc (gimple_ranger::range_of_builtin_ubsan_call):
4877         Make externally visble...
4878         (range_of_builtin_ubsan_call): ...here.  Add range_query argument.
4879         (gimple_ranger::range_of_builtin_call): Make externally visible...
4880         (range_of_builtin_call): ...here.  Add range_query argument.
4881         * gimple-range.h (range_of_builtin_call): Move out from class and
4882         make externally visible.
4883         * vr-values.c (vr_values::extract_range_basic): Abstract out
4884         builtin handling to...
4885         (vr_values::range_of_expr): Handle non SSAs.
4886         (vr_values::extract_range_builtin): ...here.
4887         * vr-values.h (class vr_values): Add extract_range_builtin.
4888         (range_of_expr): Rename NAME to EXPR.
4890 2020-10-20  Aldy Hernandez  <aldyh@redhat.com>
4892         PR tree-optimization/97501
4893         * gimple-range.cc (gimple_ranger::range_of_ssa_name_with_loop_info):
4894         Saturate overflows returned from SCEV.
4896 2020-10-20  Aldy Hernandez  <aldyh@redhat.com>
4898         * value-range.cc (irange::operator=): Split up call to
4899         copy_legacy_range into...
4900         (irange::copy_to_legacy): ...this.
4901         (irange::copy_legacy_to_multi_range): ...and this.
4902         (irange::copy_legacy_range): Remove.
4903         * value-range.h: Remove copoy_legacy_range.
4904         Add copy_legacy_to_multi_range and copy_to_legacy.
4906 2020-10-20  Tobias Burnus  <tobias@codesourcery.com>
4908         * doc/invoke.texi (NVPTX options): Use @item not @itemx.
4910 2020-10-20  Richard Biener  <rguenther@suse.de>
4912         * tree-cfg.c (reinstall_phi_args): Remove.
4913         (gimple_split_edge): Remove PHIs around the edge redirection
4914         to avoid touching them at all.
4916 2020-10-20  Richard Biener  <rguenther@suse.de>
4918         * tree-vect-loop.c (vectorizable_reduction): Use the correct
4919         loops latch edge for the PHI arg lookup.
4921 2020-10-20  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
4923         * config/msp430/msp430.md (andneghi3): Allow general operand for
4924         op1 and update output assembler template.
4926 2020-10-20  Tobias Burnus  <tobias@codesourcery.com>
4928         * collect-utils.c (collect_execute, fork_execute): Add at-file suffix
4929         argument.
4930         * collect-utils.h (collect_execute, fork_execute): Update prototype.
4931         * collect2.c (maybe_run_lto_and_relink, do_link, main, do_dsymutil):
4932         Update calls by passing NULL.
4933         * config/i386/intelmic-mkoffload.c (compile_for_target,
4934         generate_host_descr_file, prepare_target_image, main): Likewise.
4935         * config/gcn/mkoffload.c (compile_native, main): Pass at-file suffix.
4936         * config/nvptx/mkoffload.c (compile_native, main): Likewise.
4937         * lto-wrapper.c (compile_offload_image): Likewise.
4939 2020-10-20  Aldy Hernandez  <aldyh@redhat.com>
4941         * range-op.cc (operator_rshift::op1_range): Special case
4942         shifting by zero.
4944 2020-10-20  Richard Biener  <rguenther@suse.de>
4946         PR tree-optimization/97496
4947         * tree-vect-slp.c (vect_get_and_check_slp_defs): Guard extern
4948         promotion with not in pattern.
4950 2020-10-20  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
4952         * config/s390/s390.c (s390_expand_vec_strlen): Add alignment
4953         for memory access inside loop.
4955 2020-10-19  Andrew MacLeod  <amacleod@redhat.com>
4957         PR tree-optimization/97360
4958         * gimple-range.h (range_compatible_p): New.
4959         * gimple-range-gori.cc (is_gimple_logical_p): Use range_compatible_p.
4960         (range_is_either_true_or_false): Ditto.
4961         (gori_compute::outgoing_edge_range_p): Cast result to the correct
4962         type if necessary.
4963         (logical_stmt_cache::cacheable_p): Use range_compatible_p.
4964         * gimple-range.cc (gimple_ranger::calc_stmt): Check range_compatible_p
4965         before casting the range.
4966         (gimple_ranger::range_on_exit): Use range_compatible_p.
4967         (gimple_ranger::range_on_edge): Ditto.
4969 2020-10-19  Martin Jambor  <mjambor@suse.cz>
4971         PR tree-optimization/97456
4972         * tree-complex.c (set_component_ssa_name): Do not replace ignored decl
4973         default definitions with new component vars.  Reorder if conditions.
4975 2020-10-19  David Edelsohn  <dje.gcc@gmail.com>
4977         * config/rs6000/vsx.md (vextract_fp_from_shorth):  Fix vals_be.
4978         (vextract_fp_from_shortl) Same.
4980 2020-10-19  Aldy Hernandez  <aldyh@redhat.com>
4982         PR tree-optimization/97488
4983         * range-op.cc (operator_lshift::op1_range): Handle large right shifts.
4985 2020-10-19  Martin Liska  <mliska@suse.cz>
4987         * ipa-modref.c (compute_parm_map): Clear vector.
4989 2020-10-19  Richard Biener  <rguenther@suse.de>
4991         PR tree-optimization/97486
4992         * tree-vect-slp.c (vect_slp_function): Split after stmts
4993         ending a BB.
4995 2020-10-19  Jonathan Wakely  <jwakely@redhat.com>
4997         * doc/invoke.texi (OPptimize Options): Add missing closing
4998         parenthesis.
5000 2020-10-19  Aldy Hernandez  <aldyh@redhat.com>
5002         PR tree-optimization/97467
5003         * range-op.cc (operator_lshift::op1_range): Handle shifts by 0.
5005 2020-10-19  Richard Biener  <rguenther@suse.de>
5007         PR tree-optimization/97466
5008         * tree-vect-slp.c (vect_get_and_check_slp_defs): Remove
5009         spurious assert, re-indent.
5011 2020-10-19  Li Jia He  <helijia@gcc.gnu.org>
5013         PR tree-optimization/66552
5014         * match.pd (x << (n % C) -> x << (n & C-1)): New simplification.
5016 2020-10-19  Richard Biener  <rguenther@suse.de>
5018         * tree-cfg.c (verify_gimple_comparison): Drop special-case
5019         for pointer comparison.
5021 2020-10-16  Andrew MacLeod  <amacleod@redhat.com>
5023         * vr-values.c (dump_all_value_ranges): Only dump names which are
5024         still active.
5026 2020-10-16  Andrew MacLeod  <amacleod@redhat.com>
5028         * range-op.cc (pointer_plus_operator::wi_fold): Make pointer_plus
5029         [0, 0] + const return a [const, const] range.
5031 2020-10-16  Andrew MacLeod  <amacleod@redhat.com>
5033         * gimple-ssa-evrp.c (hybrid_folder::value_on_edge): Call
5034         evrp_folder::value_of_expr directly.
5035         (hybrid_folder::value_of_stmt): Ditto.
5037 2020-10-16  Andrew MacLeod  <amacleod@redhat.com>
5039         PR tree-optimization/97462
5040         * range-op.cc (operator_lshift::op1_range): Don't trap on negative
5041         shifts.
5043 2020-10-16  Olivier Hainque  <hainque@adacore.com>
5045         * config/vxworks.h (VX_CRTBEGIN_SPEC): Likewise.
5047 2020-10-16  Olivier Hainque  <hainque@adacore.com>
5049         * config/vxworks/_vxworks-versions.h: Only include
5050         version.h if _WRS_VXWORKS_MAJOR is not defined.
5051         Provide a default _WRS_VXWORKS_MINOR (0).
5053 2020-10-16  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
5055         PR target/97327
5056         * config/arm/arm.c (fp_bitlist): Add isa_bit_mve_float to FP bits array.
5058 2020-10-16  Richard Biener  <rguenther@suse.de>
5060         * tree-vect-slp.c (vect_get_and_check_slp_defs): For BB
5061         vectorization swap operands only if it helps, demote mismatches to
5062         external.
5064 2020-10-16  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
5066         PR target/97291
5067         * config/arm/arm-builtins.c (arm_strsbwbs_qualifiers): Modify array.
5068         (arm_strsbwbu_qualifiers): Likewise.
5069         (arm_strsbwbs_p_qualifiers): Likewise.
5070         (arm_strsbwbu_p_qualifiers): Likewise.
5071         * config/arm/arm_mve.h (__arm_vstrdq_scatter_base_wb_s64): Modify
5072         function definition.
5073         (__arm_vstrdq_scatter_base_wb_u64): Likewise.
5074         (__arm_vstrdq_scatter_base_wb_p_s64): Likewise.
5075         (__arm_vstrdq_scatter_base_wb_p_u64): Likewise.
5076         (__arm_vstrwq_scatter_base_wb_p_s32): Likewise.
5077         (__arm_vstrwq_scatter_base_wb_p_u32): Likewise.
5078         (__arm_vstrwq_scatter_base_wb_s32): Likewise.
5079         (__arm_vstrwq_scatter_base_wb_u32): Likewise.
5080         (__arm_vstrwq_scatter_base_wb_f32): Likewise.
5081         (__arm_vstrwq_scatter_base_wb_p_f32): Likewise.
5082         * config/arm/arm_mve_builtins.def (vstrwq_scatter_base_wb_add_u): Remove
5083         expansion for the builtin.
5084         (vstrwq_scatter_base_wb_add_s): Likewise.
5085         (vstrwq_scatter_base_wb_add_f): Likewise.
5086         (vstrdq_scatter_base_wb_add_u): Likewise.
5087         (vstrdq_scatter_base_wb_add_s): Likewise.
5088         (vstrwq_scatter_base_wb_p_add_u): Likewise.
5089         (vstrwq_scatter_base_wb_p_add_s): Likewise.
5090         (vstrwq_scatter_base_wb_p_add_f): Likewise.
5091         (vstrdq_scatter_base_wb_p_add_u): Likewise.
5092         (vstrdq_scatter_base_wb_p_add_s): Likewise.
5093         * config/arm/mve.md (mve_vstrwq_scatter_base_wb_<supf>v4si): Remove
5094         expand.
5095         (mve_vstrwq_scatter_base_wb_add_<supf>v4si): Likewise.
5096         (mve_vstrwq_scatter_base_wb_<supf>v4si_insn): Rename pattern to ...
5097         (mve_vstrwq_scatter_base_wb_<supf>v4si): This.
5098         (mve_vstrwq_scatter_base_wb_p_<supf>v4si): Remove expand.
5099         (mve_vstrwq_scatter_base_wb_p_add_<supf>v4si): Likewise.
5100         (mve_vstrwq_scatter_base_wb_p_<supf>v4si_insn): Rename pattern to ...
5101         (mve_vstrwq_scatter_base_wb_p_<supf>v4si): This.
5102         (mve_vstrwq_scatter_base_wb_fv4sf): Remove expand.
5103         (mve_vstrwq_scatter_base_wb_add_fv4sf): Likewise.
5104         (mve_vstrwq_scatter_base_wb_fv4sf_insn): Rename pattern to ...
5105         (mve_vstrwq_scatter_base_wb_fv4sf): This.
5106         (mve_vstrwq_scatter_base_wb_p_fv4sf): Remove expand.
5107         (mve_vstrwq_scatter_base_wb_p_add_fv4sf): Likewise.
5108         (mve_vstrwq_scatter_base_wb_p_fv4sf_insn): Rename pattern to ...
5109         (mve_vstrwq_scatter_base_wb_p_fv4sf): This.
5110         (mve_vstrdq_scatter_base_wb_<supf>v2di): Remove expand.
5111         (mve_vstrdq_scatter_base_wb_add_<supf>v2di): Likewise.
5112         (mve_vstrdq_scatter_base_wb_<supf>v2di_insn): Rename pattern to ...
5113         (mve_vstrdq_scatter_base_wb_<supf>v2di): This.
5114         (mve_vstrdq_scatter_base_wb_p_<supf>v2di): Remove expand.
5115         (mve_vstrdq_scatter_base_wb_p_add_<supf>v2di): Likewise.
5116         (mve_vstrdq_scatter_base_wb_p_<supf>v2di_insn): Rename pattern to ...
5117         (mve_vstrdq_scatter_base_wb_p_<supf>v2di): This.
5119 2020-10-16  Kito Cheng  <kito.cheng@sifive.com>
5121         * config/riscv/multilib-generator (IMPLIED_EXT): New.
5122         (arch_canonicalize): Update comment and handle implied extensions.
5124 2020-10-16  Richard Biener  <rguenther@suse.de>
5126         * tree-vect-slp.c (vect_get_and_check_slp_defs): First analyze
5127         all operands and fill in the def_stmts and ops entries.
5128         (vect_def_types_match): New helper.
5130 2020-10-16  Martin Liska  <mliska@suse.cz>
5132         PR ipa/97404
5133         * ipa-prop.c (struct ipa_vr_ggc_hash_traits):
5134         Compare types of VRP as we can merge ranges of different types.
5136 2020-10-16  Richard Biener  <rguenther@suse.de>
5138         PR tree-optimization/97428
5139         * tree-vect-slp.c (vect_analyze_slp_instance): Split store
5140         groups also for loop vectorization.
5142 2020-10-15  Tom de Vries  <tdevries@suse.de>
5144         PR target/97436
5145         * config/nvptx/nvptx.opt (m32): Comment out.
5146         * doc/invoke.texi (NVPTX options): Remove -m32.
5148 2020-10-15  Jan Hubicka  <hubicka@ucw.cz>
5149             Richard Biener  <rguenther@suse.de>
5151         * attr-fnspec.h: Fix toplevel comment.
5153 2020-10-15  Richard Biener  <rguenther@suse.de>
5155         * tree-pretty-print.c (dump_mem_ref): Print constant offset
5156         also for TARGET_MEM_REF.
5158 2020-10-15  Jan Hubicka  <jh@suse.cz>
5160         * symtab.c (symtab_node::binds_to_current_def_p): Also accept symbols
5161         defined in other partition.
5163 2020-10-15  Richard Biener  <rguenther@suse.de>
5165         * tree-vect-loop.c (vectorizable_live_operation): Adjust
5166         dominance query.
5168 2020-10-15  Richard Biener  <rguenther@suse.de>
5170         PR tree-optimization/97482
5171         * tree-data-ref.c (split_constant_offset_1): Handle
5172         trivial conversions better.
5173         * fold-const.c (convert_to_ptrofftype_loc): Elide conversion
5174         if the offset is already ptrofftype_p.
5176 2020-10-15  Martin Liska  <mliska@suse.cz>
5178         PR ipa/97295
5179         * profile-count.c (profile_count::to_frequency): Move part of
5180         gcc_assert to STATIC_ASSERT.
5181         * regs.h (REG_FREQ_FROM_BB): Do not use count.to_frequency for
5182         a function that does not have count_max initialized.
5184 2020-10-15  Jakub Jelinek  <jakub@redhat.com>
5186         * params.opt (-param-ipa-jump-function-lookups=): Add full stop at
5187         the end of the parameter description.
5189 2020-10-15  Kito Cheng  <kito.cheng@sifive.com>
5191         * common/config/riscv/riscv-common.c (riscv_cpu_tables): New.
5192         (riscv_arch_str): Return empty string if current_subset_list
5193         is NULL.
5194         (riscv_find_cpu): New.
5195         (riscv_handle_option): Verify option value of -mcpu.
5196         (riscv_expand_arch): Using std::string.
5197         (riscv_default_mtune): New.
5198         (riscv_expand_arch_from_cpu): Ditto.
5199         * config/riscv/riscv-cores.def: New.
5200         * config/riscv/riscv-protos.h (riscv_find_cpu): New.
5201         (riscv_cpu_info): New.
5202         * config/riscv/riscv.c (riscv_tune_info): Rename ...
5203         (riscv_tune_param): ... to this.
5204         (riscv_cpu_info): Rename ...
5205         (riscv_tune_info): ... to this.
5206         (tune_info): Rename ...
5207         (tune_param): ... to this.
5208         (rocket_tune_info): Update data type name.
5209         (sifive_7_tune_info): Ditto.
5210         (optimize_size_tune_info): Ditto.
5211         (riscv_cpu_info_table): Rename ...
5212         (riscv_tune_info_table): ... to this.
5213         (riscv_parse_cpu): Rename ...
5214         (riscv_parse_tune): ... to this, and translate valid -mcpu option to
5215         -mtune option.
5216         (riscv_rtx_costs): Rename tune_info to tune_param.
5217         (riscv_class_max_nregs): Ditto.
5218         (riscv_memory_move_cost): Ditto.
5219         (riscv_init_machine_status): Use value of -mcpu if -mtune is not
5220         given, and rename tune_info to tune_param.
5221         * config/riscv/riscv.h (riscv_expand_arch_from_cpu): New.
5222         (riscv_default_mtune): Ditto.
5223         (EXTRA_SPEC_FUNCTIONS): Add riscv_expand_arch_from_cpu and
5224         riscv_default_mtune.
5225         (OPTION_DEFAULT_SPECS): Handle default value of -march/-mabi.
5226         (DRIVER_SELF_SPECS): Expand -march from -mcpu if -march is not
5227         given.
5228         * config/riscv/riscv.opt (-mcpu): New option.
5229         * config/riscv/t-riscv ($(common_out_file)): Add
5230         riscv-cores.def to dependency.
5231         * doc/invoke.texi (RISC-V Option): Add -mcpu, and update the
5232         description of default value for -mtune and -march.
5234 2020-10-15  Hongyu Wang  <hongyu.wang@intel.com>
5236         * common/config/i386/cpuinfo.h (get_available_features):
5237         Detect HRESET.
5238         * common/config/i386/i386-common.c (OPTION_MASK_ISA2_HRESET_SET,
5239         OPTION_MASK_ISA2_HRESET_UNSET): New macros.
5240         (ix86_handle_option): Handle -mhreset.
5241         * common/config/i386/i386-cpuinfo.h (enum processor_features):
5242         Add FEATURE_HRESET.
5243         * common/config/i386/i386-isas.h: Add ISA_NAMES_TABLE_ENTRY
5244         for hreset.
5245         * config.gcc: Add hresetintrin.h
5246         * config/i386/hresetintrin.h: New header file.
5247         * config/i386/x86gprintrin.h: Include hresetintrin.h.
5248         * config/i386/cpuid.h (bit_HRESET): New.
5249         * config/i386/i386-builtin.def: Add new builtin.
5250         * config/i386/i386-expand.c (ix86_expand_builtin):
5251         Handle new builtin.
5252         * config/i386/i386-c.c (ix86_target_macros_internal): Define
5253         __HRESET__.
5254         * config/i386/i386-options.c (isa2_opts): Add -mhreset.
5255         (ix86_valid_target_attribute_inner_p): Handle hreset.
5256         * config/i386/i386.h (TARGET_HRESET, TARGET_HRESET_P,
5257         PTA_HRESET): New.
5258         (PTA_ALDERLAKE): Add PTA_HRESET.
5259         * config/i386/i386.opt: Add option -mhreset.
5260         * config/i386/i386.md (UNSPECV_HRESET): New unspec.
5261         (hreset): New define_insn.
5262         * doc/invoke.texi: Document -mhreset.
5263         * doc/extend.texi: Document hreset.
5265 2020-10-15  Hongtao Liu  <hongtao.liu@intel.com>
5267         * common/config/i386/cpuinfo.h (get_available_features):
5268         Detect UINTR.
5269         * common/config/i386/i386-common.c (OPTION_MASK_ISA2_UINTR_SET
5270         OPTION_MASK_ISA2_UINTR_UNSET): New.
5271         (ix86_handle_option): Handle -muintr.
5272         * common/config/i386/i386-cpuinfo.h (enum processor_features):
5273         Add FEATURE_UINTR.
5274         * common/config/i386/i386-isas.h: Add ISA_NAMES_TABLE_ENTRY
5275         for uintr.
5276         * config.gcc: Add uintrintrin.h to extra_headers.
5277         * config/i386/uintrintrin.h: New.
5278         * config/i386/cpuid.h (bit_UINTR): New.
5279         * config/i386/i386-builtin-types.def: Add new types.
5280         * config/i386/i386-builtin.def: Add new builtins.
5281         * config/i386/i386-builtins.c (ix86_init_mmx_sse_builtins): Add
5282         __builtin_ia32_testui.
5283         * config/i386/i386-builtins.h (ix86_builtins): Add
5284         IX86_BUILTIN_TESTUI.
5285         * config/i386/i386-c.c (ix86_target_macros_internal): Define
5286         __UINTR__.
5287         * config/i386/i386-expand.c (ix86_expand_special_args_builtin):
5288         Handle UINT8_FTYPE_VOID.
5289         (ix86_expand_builtin): Handle IX86_BUILTIN_TESTUI.
5290         * config/i386/i386-options.c (isa2_opts): Add -muintr.
5291         (ix86_valid_target_attribute_inner_p): Handle UINTR.
5292         (ix86_option_override_internal): Add TARGET_64BIT check for UINTR.
5293         * config/i386/i386.h (TARGET_UINTR, TARGET_UINTR_P, PTA_UINTR): New.
5294         (PTA_SAPPHIRRAPIDS): Add PTA_UINTR.
5295         * config/i386/i386.opt: Add -muintr.
5296         * config/i386/i386.md
5297         (define_int_iterator UINTR_UNSPECV): New.
5298         (define_int_attr uintr_unspecv): New.
5299         (uintr_<uintr_unspecv>, uintr_senduipi, testui):
5300         New define_insn patterns.
5301         * config/i386/x86gprintrin.h: Include uintrintrin.h
5302         * doc/invoke.texi: Document -muintr.
5303         * doc/extend.texi: Document uintr.
5305 2020-10-14  Martin Sebor  <msebor@redhat.com>
5307         PR middle-end/97391
5308         * builtins.c (gimple_parm_array_size): Peel off one less layer
5309         of array types.
5311 2020-10-14  Martin Sebor  <msebor@redhat.com>
5313         PR c/97413
5314         * attribs.c (init_attr_rdwr_indices): Unwrap extra list layer.
5316 2020-10-14  Sunil K Pandey  <skpgkp2@gmail.com>
5318         PR target/95483
5319         * config/i386/avx2intrin.h (_mm_broadcastsi128_si256): New intrinsics.
5320         (_mm_broadcastsd_pd): Ditto.
5321         * config/i386/avx512bwintrin.h (_mm512_loadu_epi16): New intrinsics.
5322         (_mm512_storeu_epi16): Ditto.
5323         (_mm512_loadu_epi8): Ditto.
5324         (_mm512_storeu_epi8): Ditto.
5325         * config/i386/avx512dqintrin.h (_mm_reduce_round_sd): New intrinsics.
5326         (_mm_mask_reduce_round_sd): Ditto.
5327         (_mm_maskz_reduce_round_sd): Ditto.
5328         (_mm_reduce_round_ss): Ditto.
5329         (_mm_mask_reduce_round_ss): Ditto.
5330         (_mm_maskz_reduce_round_ss): Ditto.
5331         (_mm512_reduce_round_pd): Ditto.
5332         (_mm512_mask_reduce_round_pd): Ditto.
5333         (_mm512_maskz_reduce_round_pd): Ditto.
5334         (_mm512_reduce_round_ps): Ditto.
5335         (_mm512_mask_reduce_round_ps): Ditto.
5336         (_mm512_maskz_reduce_round_ps): Ditto.
5337         * config/i386/avx512erintrin.h
5338         (_mm_mask_rcp28_round_sd): New intrinsics.
5339         (_mm_maskz_rcp28_round_sd): Ditto.
5340         (_mm_mask_rcp28_round_ss): Ditto.
5341         (_mm_maskz_rcp28_round_ss): Ditto.
5342         (_mm_mask_rsqrt28_round_sd): Ditto.
5343         (_mm_maskz_rsqrt28_round_sd): Ditto.
5344         (_mm_mask_rsqrt28_round_ss): Ditto.
5345         (_mm_maskz_rsqrt28_round_ss): Ditto.
5346         (_mm_mask_rcp28_sd): Ditto.
5347         (_mm_maskz_rcp28_sd): Ditto.
5348         (_mm_mask_rcp28_ss): Ditto.
5349         (_mm_maskz_rcp28_ss): Ditto.
5350         (_mm_mask_rsqrt28_sd): Ditto.
5351         (_mm_maskz_rsqrt28_sd): Ditto.
5352         (_mm_mask_rsqrt28_ss): Ditto.
5353         (_mm_maskz_rsqrt28_ss): Ditto.
5354         * config/i386/avx512fintrin.h (_mm_mask_sqrt_sd): New intrinsics.
5355         (_mm_maskz_sqrt_sd): Ditto.
5356         (_mm_mask_sqrt_ss): Ditto.
5357         (_mm_maskz_sqrt_ss): Ditto.
5358         (_mm_mask_scalef_sd): Ditto.
5359         (_mm_maskz_scalef_sd): Ditto.
5360         (_mm_mask_scalef_ss): Ditto.
5361         (_mm_maskz_scalef_ss): Ditto.
5362         (_mm_mask_cvt_roundsd_ss): Ditto.
5363         (_mm_maskz_cvt_roundsd_ss): Ditto.
5364         (_mm_mask_cvt_roundss_sd): Ditto.
5365         (_mm_maskz_cvt_roundss_sd): Ditto.
5366         (_mm_mask_cvtss_sd): Ditto.
5367         (_mm_maskz_cvtss_sd): Ditto.
5368         (_mm_mask_cvtsd_ss): Ditto.
5369         (_mm_maskz_cvtsd_ss): Ditto.
5370         (_mm512_cvtsi512_si32): Ditto.
5371         (_mm_cvtsd_i32): Ditto.
5372         (_mm_cvtss_i32): Ditto.
5373         (_mm_cvti32_sd): Ditto.
5374         (_mm_cvti32_ss): Ditto.
5375         (_mm_cvtsd_i64): Ditto.
5376         (_mm_cvtss_i64): Ditto.
5377         (_mm_cvti64_sd): Ditto.
5378         (_mm_cvti64_ss): Ditto.
5379         * config/i386/avx512vlbwintrin.h (_mm256_storeu_epi8): New intrinsics.
5380         (_mm_storeu_epi8): Ditto.
5381         (_mm256_loadu_epi16): Ditto.
5382         (_mm_loadu_epi16): Ditto.
5383         (_mm256_loadu_epi8): Ditto.
5384         (_mm_loadu_epi8): Ditto.
5385         (_mm256_storeu_epi16): Ditto.
5386         (_mm_storeu_epi16): Ditto.
5387         * config/i386/avx512vlintrin.h (_mm256_load_epi64): New intrinsics.
5388         (_mm_load_epi64): Ditto.
5389         (_mm256_load_epi32): Ditto.
5390         (_mm_load_epi32): Ditto.
5391         (_mm256_store_epi32): Ditto.
5392         (_mm_store_epi32): Ditto.
5393         (_mm256_loadu_epi64): Ditto.
5394         (_mm_loadu_epi64): Ditto.
5395         (_mm256_loadu_epi32): Ditto.
5396         (_mm_loadu_epi32): Ditto.
5397         (_mm256_mask_cvt_roundps_ph): Ditto.
5398         (_mm256_maskz_cvt_roundps_ph): Ditto.
5399         (_mm_mask_cvt_roundps_ph): Ditto.
5400         (_mm_maskz_cvt_roundps_ph): Ditto.
5401         * config/i386/avxintrin.h (_mm256_cvtsi256_si32): New intrinsics.
5402         * config/i386/emmintrin.h (_mm_loadu_si32): New intrinsics.
5403         (_mm_loadu_si16): Ditto.
5404         (_mm_storeu_si32): Ditto.
5405         (_mm_storeu_si16): Ditto.
5406         * config/i386/i386-builtin-types.def
5407         (V8DF_FTYPE_V8DF_INT_V8DF_UQI_INT): Add new type.
5408         (V16SF_FTYPE_V16SF_INT_V16SF_UHI_INT): Ditto.
5409         (V4SF_FTYPE_V4SF_V2DF_V4SF_UQI_INT): Ditto.
5410         (V2DF_FTYPE_V2DF_V4SF_V2DF_UQI_INT): Ditto.
5411         * config/i386/i386-builtin.def
5412         (__builtin_ia32_cvtsd2ss_mask_round): New builtin.
5413         (__builtin_ia32_cvtss2sd_mask_round): Ditto.
5414         (__builtin_ia32_rcp28sd_mask_round): Ditto.
5415         (__builtin_ia32_rcp28ss_mask_round): Ditto.
5416         (__builtin_ia32_rsqrt28sd_mask_round): Ditto.
5417         (__builtin_ia32_rsqrt28ss_mask_round): Ditto.
5418         (__builtin_ia32_reducepd512_mask_round): Ditto.
5419         (__builtin_ia32_reduceps512_mask_round): Ditto.
5420         (__builtin_ia32_reducesd_mask_round): Ditto.
5421         (__builtin_ia32_reducess_mask_round): Ditto.
5422         * config/i386/i386-expand.c
5423         (ix86_expand_round_builtin): Expand round builtin for new type.
5424         (V8DF_FTYPE_V8DF_INT_V8DF_UQI_INT)
5425         (V16SF_FTYPE_V16SF_INT_V16SF_UHI_INT)
5426         (V4SF_FTYPE_V4SF_V2DF_V4SF_UQI_INT)
5427         (V2DF_FTYPE_V2DF_V4SF_V2DF_UQI_INT)
5428         * config/i386/mmintrin.h ()
5429         Define datatype __m32 and __m16.
5430         Define datatype __m32_u and __m16_u.
5431         * config/i386/sse.md: Adjust pattern.
5432         (<mask_codefor>reducep<mode><mask_name><round_saeonly_name>): Adjust.
5433         (reduces<mode><mask_scalar_name><round_saeonly_scalar_name>): Ditto.
5434         (sse2_cvtsd2ss<mask_name><round_name>): Ditto.
5435         (sse2_cvtss2sd<mask_name><round_saeonly_name>): Ditto.
5436         (avx512er_vmrcp28<mode><mask_name><round_saeonly_name>): Ditto.
5437         (avx512er_vmrsqrt28<mode><mask_name><round_saeonly_name>): Ditto.
5439 2020-10-14  Olivier Hainque  <hainque@adacore.com>
5441         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Fix
5442         the VX_CPU selection for -mcpu=xscale on arm-vxworks.
5444 2020-10-14  Olivier Hainque  <hainque@adacore.com>
5446         * config/rs6000/vxworks.h (TARGET_OS_CPP_BUILTINS): Accommodate
5447         expectations from different versions of VxWorks, for 32 or 64bit
5448         configurations.
5450 2020-10-14  Olivier Hainque  <hainque@adacore.com>
5452         * config/vxworks.h: #undef CPLUSPLUS_CPP_SPEC.
5454 2020-10-14  Olivier Hainque  <hainque@adacore.com>
5456         * config/t-vxworks: Adjust the VxWorks alternative LIMITS_H guard
5457         for glimits.h, make it both closer to the previous one and easier to
5458         search for.
5460 2020-10-14  Jakub Jelinek  <jakub@redhat.com>
5462         PR target/97387
5463         * config/i386/i386.md (CC_CCC): New mode iterator.
5464         (*setcc_qi_addqi3_cconly_overflow_1_<mode>): New
5465         define_insn_and_split.
5466         * config/i386/i386.c (ix86_cc_mode): Return CCCmode
5467         for *setcc_qi_addqi3_cconly_overflow_1_<mode> pattern operands.
5468         (ix86_rtx_costs): Return true and *total = 0;
5469         for *setcc_qi_addqi3_cconly_overflow_1_<mode> pattern.  Use op0 and
5470         op1 temporaries to simplify COMPARE checks.
5472 2020-10-14  Aldy Hernandez  <aldyh@redhat.com>
5474         PR tree-optimization/97396
5475         * gimple-range.cc (gimple_ranger::range_of_phi): Do not call
5476         range_of_ssa_name_with_loop_info with the loop tree root.
5478 2020-10-14  Richard Biener  <rguenther@suse.de>
5480         * tree-vect-slp.c (vect_get_and_check_slp_defs): Split out
5481         test for compatible operand types.
5483 2020-10-14  Olivier Hainque  <hainque@adacore.com>
5485         * config/vxworks.c (vxworks_override_options): Guard pic checks with
5486         flag_pic > 0 instead of just flag_pic.
5488 2020-10-14  Jan Hubicka  <hubicka@ucw.cz>
5490         * ipa-fnsummary.c (remap_edge_summaries): Make offset_map HOST_WIDE_INT.
5491         (remap_freqcounting_predicate): Likewise.
5492         (ipa_merge_fn_summary_after_inlining): Likewise.
5493         * ipa-predicate.c (predicate::remap_after_inlining): Likewise
5494         * ipa-predicate.h (remap_after_inlining): Update.
5496 2020-10-14  Jan Hubicka  <jh@suse.cz>
5498         * ipa-modref.c (compute_parm_map): Handle POINTER_PLUS_EXPR in
5499         PASSTHROUGH.
5501 2020-10-14  Richard Biener  <rguenther@suse.de>
5503         * tree-vect-slp.c (vect_get_and_check_slp_defs): Move
5504         check for duplicate/interleave of variable size constants
5505         to a place done once and early.
5506         (vect_build_slp_tree_2): Adjust heuristics when to build
5507         a BB SLP node from scalars.
5509 2020-10-14  Tom de Vries  <tdevries@suse.de>
5511         * tracer.c (cached_can_duplicate_bb_p, analyze_bb): Use
5512         can_duplicate_block_p.
5513         (can_duplicate_insn_p, can_duplicate_bb_no_insn_iter_p)
5514         (can_duplicate_bb_p): Move and merge ...
5515         * tree-cfg.c (gimple_can_duplicate_bb_p): ... here.
5517 2020-10-14  Jan Hubicka  <hubicka@ucw.cz>
5519         * doc/invoke.texi: (ipa-jump-function-lookups): Document param.
5520         * ipa-modref.c (merge_call_side_effects): Use
5521         unadjusted_ptr_and_unit_offset.
5522         * ipa-prop.c (unadjusted_ptr_and_unit_offset): New function.
5523         * ipa-prop.h (unadjusted_ptr_and_unit_offset): Declare.
5524         * params.opt: (-param-ipa-jump-function-lookups): New.
5526 2020-10-14  Jan Hubicka  <jh@suse.cz>
5528         PR bootstrap/97350
5529         * ipa-modref.c (ignore_edge): Do not ignore inlined edes.
5530         (ipa_merge_modref_summary_after_inlining): Improve debug output and
5531         fix parameter of ignore_stores_p.
5533 2020-10-14  Kito Cheng  <kito.cheng@sifive.com>
5535         PR target/96759
5536         * expr.c (expand_assignment): Handle misaligned stores with PARALLEL
5537         value.
5539 2020-10-13  Jakub Jelinek  <jakub@redhat.com>
5541         PR rtl-optimization/97386
5542         * combine.c (simplify_shift_const_1): Don't optimize nested ROTATEs if
5543         they have different modes.
5545 2020-10-13  Aldy Hernandez  <aldyh@redhat.com>
5547         PR tree-optimization/97379
5548         * gimple-range-edge.cc (outgoing_range::calc_switch_ranges): Do
5549         not save hash slot across calls to hash_table<>::get_or_insert.
5551 2020-10-13  Tobias Burnus  <tobias@codesourcery.com>
5553         * lto-wrapper.c (find_crtoffloadtable): Fix last commit
5554         by adding NULL as last argument to concat.
5556 2020-10-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5558         * config/aarch64/aarch64.c (neoversen2_tunings): Define.
5559         * config/aarch64/aarch64-cores.def (neoverse-n2): Use it.
5561 2020-10-13  Tobias Burnus  <tobias@codesourcery.com>
5563         * lto-wrapper.c (find_crtoffloadtable): With -save-temps,
5564         use non-temp file name utilizing the dump prefix.
5565         (run_gcc): Update call.
5567 2020-10-13  Richard Biener  <rguenther@suse.de>
5569         PR tree-optimization/97382
5570         * tree-vectorizer.h (_stmt_vec_info::same_align_refs): Remove.
5571         (STMT_VINFO_SAME_ALIGN_REFS): Likewise.
5572         * tree-vectorizer.c (vec_info::new_stmt_vec_info): Do not
5573         allocate STMT_VINFO_SAME_ALIGN_REFS.
5574         (vec_info::free_stmt_vec_info): Do not release
5575         STMT_VINFO_SAME_ALIGN_REFS.
5576         * tree-vect-data-refs.c (vect_analyze_data_ref_dependences):
5577         Do not compute self and read-read dependences.
5578         (vect_dr_aligned_if_related_peeled_dr_is): New helper.
5579         (vect_dr_aligned_if_peeled_dr_is): Likewise.
5580         (vect_update_misalignment_for_peel): Use it instead of
5581         iterating over STMT_VINFO_SAME_ALIGN_REFS.
5582         (dr_align_group_sort_cmp): New function.
5583         (vect_enhance_data_refs_alignment): Count the number of
5584         same aligned refs here and elide uses of STMT_VINFO_SAME_ALIGN_REFS.
5585         (vect_find_same_alignment_drs): Remove.
5586         (vect_analyze_data_refs_alignment): Do not call it.
5587         * vec.h (auto_vec<T, 0>::auto_vec): Adjust CTOR to take
5588         a vec<>&&, assert it isn't using auto storage.
5589         (auto_vec& operator=): Apply a similar change.
5591 2020-10-13  Tobias Burnus  <tobias@codesourcery.com>
5593         * config/nvptx/mkoffload.c (main): Add missing fclose (in).
5595 2020-10-13  Zhiheng Xie  <xiezhiheng@huawei.com>
5596             Nannan Zheng  <zhengnannan@huawei.com>
5598         * config/aarch64/aarch64-simd-builtins.def: Add proper FLAG
5599         for mul/mla/mls intrinsics.
5601 2020-10-13  Jakub Jelinek  <jakub@redhat.com>
5603         * omp-low.c (add_taskreg_looptemp_clauses): For triangular loops
5604         with non-constant number of iterations add another 4 _looptemp_
5605         clauses before the (optional) one for lastprivate.
5606         (lower_omp_for_lastprivate): Skip those clauses when looking for
5607         the lastprivate clause.
5608         (lower_omp_for): For triangular loops with non-constant number of
5609         iterations add another 4 _looptemp_ clauses.
5610         * omp-expand.c (expand_omp_for_init_counts): For triangular loops
5611         with non-constant number of iterations set counts[0],
5612         fd->first_inner_iterations, fd->factor and fd->adjn1 from the newly
5613         added _looptemp_ clauses.
5614         (expand_omp_for_init_vars): Initialize the newly added _looptemp_
5615         clauses.
5616         (find_lastprivate_looptemp): New function.
5617         (expand_omp_for_static_nochunk, expand_omp_for_static_chunk,
5618         expand_omp_taskloop_for_outer): Use it instead of manually skipping
5619         _looptemp_ clauses.
5621 2020-10-13  Jan Hubicka  <hubicka@ucw.cz>
5623         PR ipa/97389
5624         * ipa-modref.c (dump_lto_records): Fix formating of dump file.
5625         (modref_summary::dump): Do not check loads to be non-null.
5626         (modref_summary_lto::dump): Do not check loads to be non-null.
5627         (merge_call_side_effects): Improve debug output.
5628         (analyze_call): Crash when cur_summary->loads is NULL.
5629         (analyze_function): Update.
5630         (modref_summaries::insert): Insert only into summaries, not
5631         optimization_summaries.
5632         (modref_summaries::duplicate): Likewise; crash when load or sotres
5633         are NULL.
5634         (modref_summaries_lto::duplicate): Crash when loads or stores are NULL.
5635         (write_modref_records): param_index is signed.
5636         (read_modref_records): param_index is signed.
5637         (modref_write): Crash when loads or stores are NULL.
5638         (read_section): Compensate previous change.
5639         (pass_modref::execute): Do not check optimization_summaries t be
5640         non-NULL.
5641         (ignore_edge): Fix.
5642         (compute_parm_map): Fix formating.
5643         (modref_propagate_in_scc): Do not expect loads/stores to be NULL.
5645 2020-10-12  Alexandre Oliva  <oliva@adacore.com>
5647         * builtins.c (mathfn_built_in_type): Use CFN_ enumerators.
5649 2020-10-12  Andrew MacLeod  <amacleod@redhat.com>
5651         PR tree-optimization/97381
5652         * gimple-range-gori.cc (gori_compute::compute_operand2_range): If a range cannot be
5653         calculated through operand 2, return false.
5655 2020-10-12  Aldy Hernandez  <aldyh@redhat.com>
5657         PR tree-optimization/97378
5658         * range-op.cc (operator_trunc_mod::wi_fold): Return VARYING for mod by zero.
5660 2020-10-12  David Malcolm  <dmalcolm@redhat.com>
5662         * doc/invoke.texi: Document -Wanalyzer-write-to-const and
5663         -Wanalyzer-write-to-string-literal.
5665 2020-10-12  Martin Sebor  <msebor@redhat.com>
5667         PR middle-end/97342
5668         PR middle-end/97023
5669         PR middle-end/96384
5670         * builtins.c (access_ref::access_ref): Initialize new member.  Use
5671         new enum.
5672         (access_ref::size_remaining): Define new member function.
5673         (inform_access): Handle expressions referencing objects.
5674         (gimple_call_alloc_size): Call get_size_range instead of get_range.
5675         (gimple_call_return_array): New function.
5676         (get_range): Rename...
5677         (get_offset_range): ...to this.  Improve detection of ranges from
5678         types of expressions.
5679         (gimple_call_return_array): Adjust calls to get_range per above.
5680         (compute_objsize): Same.  Set maximum size or offset instead of
5681         failing for unknown objects and handle more kinds of expressions.
5682         (compute_objsize): Call access_ref::size_remaining.
5683         (compute_objsize): Have transitional wrapper fail for pointers
5684         into unknown objects.
5685         (expand_builtin_strncmp): Call access_ref::size_remaining and
5686         handle new cases.
5687         * builtins.h (access_ref::size_remaining): Declare new member function.
5688         (access_ref::set_max_size_range): Define new member function.
5689         (access_ref::add_ofset, access_ref::add_max_ofset): Same.
5690         (access_ref::add_base0): New data member.
5691         * calls.c (get_size_range): Change argument type.  Handle new
5692         condition.
5693         * calls.h (get_size_range): Adjust signature.
5694         (enum size_range_flags): Define new type.
5695         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Correct
5696         argument to get_size_range.
5697         * tree-ssa-strlen.c (get_range): Handle anti-ranges.
5698         (maybe_warn_overflow): Check DECL_P before assuming it's one.
5700 2020-10-12  Martin Sebor  <msebor@redhat.com>
5702         PR c++/96511
5703         PR middle-end/96384
5704         * builtins.c (get_range): Return full range of type when neither
5705         value nor its range is available.  Fail for ranges inverted due
5706         to the signedness of offsets.
5707         (compute_objsize): Handle more special array members.  Handle
5708         POINTER_PLUS_EXPR and VIEW_CONVERT_EXPR that come up in front end
5709         code.
5710         (access_ref::offset_bounded): Define new member function.
5711         * builtins.h (access_ref::eval): New data member.
5712         (access_ref::offset_bounded): New member function.
5713         (access_ref::offset_zero): New member function.
5714         (compute_objsize): Declare a new overload.
5715         * gimple-array-bounds.cc (array_bounds_checker::check_array_ref): Use
5716         enum special_array_member.
5717         * tree.c (component_ref_size): Use special_array_member.
5718         * tree.h (special_array_member): Define a new type.
5719         (component_ref_size): Change signature.
5721 2020-10-12  Jan Hubicka  <hubicka@ucw.cz>
5723         * ipa-modref.c (modref_summaries): Remove field IPA.
5724         (class modref_summary_lto): New global variable.
5725         (class modref_summaries_lto): New.
5726         (modref_summary::modref_summary): Remove loads_lto and stores_lto.
5727         (modref_summary::~modref_summary): Remove loads_lto and stores_lto.
5728         (modref_summary::useful_p): Do not use lto_useful.
5729         (modref_records_lto): New typedef.
5730         (struct modref_summary_lto): New type.
5731         (modref_summary_lto::modref_summary_lto): New member function.
5732         (modref_summary_lto::~modref_summary_lto): New member function.
5733         (modref_summary_lto::useful_p): New member function.
5734         (modref_summary::dump): Do not handle lto.
5735         (modref_summary_lto::dump): New member function.
5736         (get_modref_function_summary): Use optimization_summary.
5737         (merge_call_side_effects): Use optimization_summary.
5738         (analyze_call): Use optimization_summary.
5739         (struct summary_ptrs): New struture.
5740         (analyze_load): Update to handle separate lto and non-lto summaries.
5741         (analyze_store): Likewise.
5742         (analyze_stmt): Likewise.
5743         (remove_summary): Break out from ...
5744         (analyze_function): ... here; update to handle seprated summaries.
5745         (modref_summaries::insert): Do not handle lto summary.
5746         (modref_summaries_lto::insert): New member function.
5747         (modref_summaries::duplicate): Do not handle lto summary.
5748         (modref_summaries_lto::duplicate): New member function.
5749         (read_modref_records): Expect nolto_ret or lto_ret to be NULL>
5750         (modref_write): Write lto summary.
5751         (read_section): Handle separated summaries.
5752         (modref_read): Initialize separated summaries.
5753         (modref_transform): Handle separated summaries.
5754         (pass_modref::execute): Turn summary to optimization_summary; handle
5755         separate summaries.
5756         (ignore_edge): Handle separate summaries.
5757         (ipa_merge_modref_summary_after_inlining): Likewise.
5758         (collapse_loads): Likewise.
5759         (modref_propagate_in_scc): Likewise.
5760         (pass_ipa_modref::execute): Likewise.
5761         (ipa_modref_c_finalize): Likewise.
5762         * ipa-modref.h (modref_records_lto): Remove typedef.
5763         (struct modref_summary): Remove stores_lto, loads_lto and finished
5764         fields; remove lto_useful_p member function.
5766 2020-10-12  Richard Biener  <rguenther@suse.de>
5768         * tree-vect-data-refs.c (vect_slp_analyze_instance_dependence):
5769         Use SLP_TREE_REPRESENTATIVE.
5770         * tree-vectorizer.h (_slp_tree::vertex): New member used
5771         for graphds interfacing.
5772         * tree-vect-slp.c (vect_build_slp_tree_2): Allocate space
5773         for PHI SLP children.
5774         (vect_analyze_slp_backedges): New function filling in SLP
5775         node children for PHIs that correspond to backedge values.
5776         (vect_analyze_slp): Call vect_analyze_slp_backedges for the
5777         graph.
5778         (vect_slp_analyze_node_operations): Deal with a cyclic graph.
5779         (vect_schedule_slp_instance): Likewise.
5780         (vect_schedule_slp): Likewise.
5781         (slp_copy_subtree): Remove.
5782         (vect_slp_rearrange_stmts): Likewise.
5783         (vect_attempt_slp_rearrange_stmts): Likewise.
5784         (vect_slp_build_vertices): New functions.
5785         (vect_slp_permute): Likewise.
5786         (vect_slp_perms_eq): Likewise.
5787         (vect_optimize_slp): Remove special code to elide
5788         permutations with SLP reductions.  Implement generic
5789         permute optimization.
5791 2020-10-12  Christophe Lyon  <christophe.lyon@linaro.org>
5793         * config/arm/arm.c (arm_preferred_simd_mode): Use E_FOOmode
5794         instead of FOOmode.
5796 2020-10-12  Martin Liska  <mliska@suse.cz>
5798         PR tree-optimization/97079
5799         * internal-fn.c (internal_fn_stored_value_index): Handle also
5800         .MASK_STORE_LANES.
5801         * tree-vect-patterns.c (vect_recog_over_widening_pattern): Bail
5802         out for unsupported TREE_TYPE.
5804 2020-10-12  Richard Biener  <rguenther@suse.de>
5806         * tree-vect-slp.c (vect_bb_partition_graph_r): Use visited
5807         hash-map.
5808         (vect_bb_partition_graph): Likewise.
5810 2020-10-12  Duan bo  <duanbo3@huawei.com>
5812         PR target/96757
5813         * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): Add
5814         the identification and handling of the dropped situation in the
5815         cond expression processing phase.
5817 2020-10-12  Tobias Burnus  <tobias@codesourcery.com>
5819         * doc/invoke.texi (nvptx's -misa): Update default to sm_35.
5821 2020-10-12  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5823         PR target/97349
5824         * config/aarch64/arm_neon.h (vdupq_n_p8, vdupq_n_p16,
5825         vdupq_n_p64, vdupq_n_s8, vdupq_n_s16, vdupq_n_u8, vdupq_n_u16):
5826         Fix argument type.
5828 2020-10-12  Ilya Leoshkevich  <iii@linux.ibm.com>
5830         * config/s390/s390-protos.h (s390_build_signbit_mask): New
5831         function.
5832         * config/s390/s390.c (s390_contiguous_bitmask_vector_p):
5833         Bitcast the argument to an integral mode.
5834         (s390_expand_vec_init): Do not call
5835         s390_contiguous_bitmask_vector_p with a scalar argument.
5836         (s390_build_signbit_mask): New function.
5837         * config/s390/vector.md (copysign<mode>3): Use bitwise
5838         operations.
5840 2020-10-12  Aldy Hernandez  <aldyh@redhat.com>
5842         PR tree-optimization/97371
5843         * range-op.cc (operator_rshift::op1_range): Ignore shifts larger than
5844         or equal to type precision.
5846 2020-10-12  Martin Liska  <mliska@suse.cz>
5848         * ipa-modref.c (merge_call_side_effects): Clear modref_parm_map
5849         fields in the vector.
5851 2020-10-12  Richard Biener  <rguenther@suse.de>
5853         * tree-vect-slp.c (vect_analyze_slp_instance): Set matches to true
5854         after successful discovery but forced split.
5856 2020-10-12  Tom de Vries  <tdevries@suse.de>
5858         * config/nvptx/nvptx.opt (-msoft-stack-reserve-local): Rename to ...
5859         (-msoft-stack-reserve-local=): ... this.
5861 2020-10-12  Richard Biener  <rguenther@suse.de>
5863         PR tree-optimization/97357
5864         * tree-ssa-loop-split.c (ssa_semi_invariant_p): Abnormal
5865         SSA names are not semi invariant.
5867 2020-10-11  Iain Sandoe  <iain@sandoe.co.uk>
5869         * config/darwin.c (darwin_globalize_label): Make a subset of
5870         metadate symbols global.
5871         (darwin_label_is_anonymous_local_objc_name): Make a subset of
5872         metadata symbols linker-visible.
5873         (darwin_override_options): Track more target OS versions, make
5874         the next_runtime version track this (unless it's set to 0 for
5875         GNU runtime).
5877 2020-10-11  Iain Sandoe  <iain@sandoe.co.uk>
5879         * config/darwin.c (darwin_globalize_label): Add protocol
5880         meta-data labels to the set that are global.
5881         (darwin_label_is_anonymous_local_objc_name): Arrange for meta-
5882         data start labels to be linker-visible.
5884 2020-10-11  Iain Sandoe  <iain@sandoe.co.uk>
5886         * config/darwin.c (darwin_objc2_section): Allow for
5887         values > 1 to represent the next runtime.
5888         (darwin_objc1_section): Likewise.
5889         * config/darwin.h (NEXT_OBJC_RUNTIME): Set the default
5890         next runtime value to be 10.5.8.
5892 2020-10-10  Jan Hubicka  <jh@suse.cz>
5894         * ipa-modref.c (modref_transform): Fix parameter map computation.
5896 2020-10-10  Tom de Vries  <tdevries@suse.de>
5898         PR target/97318
5899         * config/nvptx/nvptx.c (nvptx_replace_dot): New function.
5900         (write_fn_proto, write_fn_proto_from_insn, nvptx_output_call_insn):
5901         Use nvptx_replace_dot.
5903 2020-10-10  Tom de Vries  <tdevries@suse.de>
5905         * config/nvptx/nvptx.c (write_fn_proto_1): New function, factored out
5906         of ...
5907         (write_fn_proto): ... here.  Return void.
5909 2020-10-10  Jan Hubicka  <jh@suse.cz>
5911         * ipa-modref.c (remap_arguments): Check range in map access.
5913 2020-10-10  Jan Hubicka  <jh@suse.cz>
5915         * ipa-modref.c (modref_transform): Use reserve instead of safe_grow.
5917 2020-10-10  Jan Hubicka  <jh@suse.cz>
5919         * ipa-modref.c (modref_transform): Check that summaries are allocated.
5921 2020-10-10  Jan Hubicka  <jh@suse.cz>
5923         * ipa-modref-tree.h (struct modref_tree): Revert prevoius change.
5924         * ipa-modref.c (analyze_function): Dump original summary.
5925         (modref_read): Only set IPA if streaming summary (not optimization
5926         summary).
5927         (remap_arguments): New function.
5928         (modref_transform): New function.
5929         (compute_parm_map): Fix offset calculation.
5930         (ipa_merge_modref_summary_after_inlining): Do not merge stores when
5931         they can be ignored.
5933 2020-10-10  Jan Hubicka  <jh@suse.cz>
5935         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Improve debug dumps.
5936         (call_may_clobber_ref_p_1): Improve debug dumps.
5938 2020-10-10  Iain Sandoe  <iain@sandoe.co.uk>
5940         * config/darwin.c (output_objc_section_asm_op): Avoid extra
5941         objective-c section switches unless the linker needs them.
5943 2020-10-10  Iain Sandoe  <iain@sandoe.co.uk>
5945         * config/darwin-sections.def (objc2_data_section): New.
5946         (objc2_ivar_section): New.
5947         * config/darwin.c (darwin_objc2_section): Act on Protocol and
5948         ivar refs.
5950 2020-10-10  Iain Sandoe  <iain@sandoe.co.uk>
5952         * config/darwin-sections.def (objc2_class_names_section,
5953         objc2_method_names_section, objc2_method_types_section): New
5954         * config/darwin.c (output_objc_section_asm_op): Output new
5955         sections.  (darwin_objc2_section): Select new sections where
5956         used.
5958 2020-10-10  Iain Sandoe  <iain@sandoe.co.uk>
5960         * config/darwin.c (darwin_emit_local_bss): Amend section names to
5961         match system tools. (darwin_output_aligned_bss): Likewise.
5963 2020-10-10  Aldy Hernandez  <aldyh@redhat.com>
5965         PR tree-optimization/97359
5966         * gimple-range-gori.cc (logical_stmt_cache::cacheable_p): Only
5967         handle ANDs and ORs.
5968         (gori_compute_cache::cache_stmt): Adjust comment.
5970 2020-10-09  Vladimir Makarov  <vmakarov@redhat.com>
5972         PR rtl-optimization/97313
5973         * lra-constraints.c (match_reload): Don't keep strict_low_part in
5974         reloads for non-registers.
5976 2020-10-09  H.J. Lu  <hjl.tools@gmail.com>
5978         PR target/97148
5979         * config.gcc (extra_headers): Add x86gprintrin.h.
5980         * config/i386/adxintrin.h: Check _X86GPRINTRIN_H_INCLUDED for
5981         <x86gprintrin.h>.
5982         * config/i386/bmi2intrin.h: Likewise.
5983         * config/i386/bmiintrin.h: Likewise.
5984         * config/i386/cetintrin.h: Likewise.
5985         * config/i386/cldemoteintrin.h: Likewise.
5986         * config/i386/clflushoptintrin.h: Likewise.
5987         * config/i386/clwbintrin.h: Likewise.
5988         * config/i386/enqcmdintrin.h: Likewise.
5989         * config/i386/fxsrintrin.h: Likewise.
5990         * config/i386/ia32intrin.h: Likewise.
5991         * config/i386/lwpintrin.h: Likewise.
5992         * config/i386/lzcntintrin.h: Likewise.
5993         * config/i386/movdirintrin.h: Likewise.
5994         * config/i386/pconfigintrin.h: Likewise.
5995         * config/i386/pkuintrin.h: Likewise.
5996         * config/i386/rdseedintrin.h: Likewise.
5997         * config/i386/rtmintrin.h: Likewise.
5998         * config/i386/serializeintrin.h: Likewise.
5999         * config/i386/tbmintrin.h: Likewise.
6000         * config/i386/tsxldtrkintrin.h: Likewise.
6001         * config/i386/waitpkgintrin.h: Likewise.
6002         * config/i386/wbnoinvdintrin.h: Likewise.
6003         * config/i386/xsavecintrin.h: Likewise.
6004         * config/i386/xsaveintrin.h: Likewise.
6005         * config/i386/xsaveoptintrin.h: Likewise.
6006         * config/i386/xsavesintrin.h: Likewise.
6007         * config/i386/xtestintrin.h: Likewise.
6008         * config/i386/immintrin.h: Include <x86gprintrin.h> instead of
6009         <fxsrintrin.h>, <xsaveintrin.h>, <xsaveoptintrin.h>,
6010         <xsavesintrin.h>, <xsavecintrin.h>, <lzcntintrin.h>,
6011         <bmiintrin.h>, <bmi2intrin.h>, <xtestintrin.h>, <cetintrin.h>,
6012         <movdirintrin.h>, <sgxintrin.h, <pconfigintrin.h>,
6013         <waitpkgintrin.h>, <cldemoteintrin.h>, <enqcmdintrin.h>,
6014         <serializeintrin.h>, <tsxldtrkintrin.h>, <adxintrin.h>,
6015         <clwbintrin.h>, <clflushoptintrin.h>, <wbnoinvdintrin.h> and
6016         <pkuintrin.h>.
6017         (_wbinvd): Moved to config/i386/x86gprintrin.h.
6018         (_rdrand16_step): Likewise.
6019         (_rdrand32_step): Likewise.
6020         (_rdpid_u32): Likewise.
6021         (_readfsbase_u32): Likewise.
6022         (_readfsbase_u64): Likewise.
6023         (_readgsbase_u32): Likewise.
6024         (_readgsbase_u64): Likewise.
6025         (_writefsbase_u32): Likewise.
6026         (_writefsbase_u64): Likewise.
6027         (_writegsbase_u32): Likewise.
6028         (_writegsbase_u64): Likewise.
6029         (_rdrand64_step): Likewise.
6030         (_ptwrite64): Likewise.
6031         (_ptwrite32): Likewise.
6032         * config/i386/x86gprintrin.h: New file.
6033         * config/i386/x86intrin.h: Include <x86gprintrin.h>.  Don't
6034         include <ia32intrin.h>, <lwpintrin.h>, <tbmintrin.h>,
6035         <popcntintrin.h>, <mwaitxintrin.h> and <clzerointrin.h>.
6037 2020-10-09  Tom de Vries  <tdevries@suse.de>
6039         PR target/97348
6040         * config/nvptx/nvptx.h (ASM_SPEC): Also pass -m to nvptx-as if
6041         default is used.
6042         * config/nvptx/nvptx.opt (misa): Init with PTX_ISA_SM35.
6044 2020-10-09  Richard Biener  <rguenther@suse.de>
6046         * doc/sourcebuild.texi (vect_masked_load): Document.
6048 2020-10-09  Richard Biener  <rguenther@suse.de>
6050         PR tree-optimization/97334
6051         * tree-vect-slp.c (vect_build_slp_tree_1): Do not fatally
6052         fail lanes other than zero when BB vectorizing.
6054 2020-10-09  Jan Hubicka  <jh@suse.cz>
6056         PR ipa/97292
6057         PR ipa/97335
6058         * ipa-modref-tree.h (copy_from): Drop summary in a
6059         clone.
6061 2020-10-09  Richard Biener  <rguenther@suse.de>
6063         PR tree-optimization/97347
6064         * tree-vect-slp.c (vect_create_constant_vectors): Use
6065         edge insertion when inserting on the fallthru edge,
6066         appropriately insert at the start of BBs when inserting
6067         after PHIs.
6069 2020-10-09  Andrew MacLeod  <amacleod@redhat.com>
6071         PR tree-optimization/97317
6072         * range-op.cc (operator_cast::op1_range): Handle casts where the precision
6073         of the RHS is only 1 greater than the precision of the LHS.
6075 2020-10-09  Richard Biener  <rguenther@suse.de>
6077         * cgraphunit.c (expand_all_functions): Free tp_first_run_order.
6078         * ipa-modref.c (pass_ipa_modref::execute): Free order.
6079         * tree-ssa-loop-niter.c (estimate_numbers_of_iterations): Free
6080         loop body.
6081         * tree-vect-data-refs.c (vect_find_stmt_data_reference): Free
6082         data references upon failure.
6083         * tree-vect-loop.c (update_epilogue_loop_vinfo): Free BBs
6084         array of the original loop.
6085         * tree-vect-slp.c (vect_slp_bbs): Use an auto_vec for
6086         dataref_groups to release its memory.
6088 2020-10-09  Jakub Jelinek  <jakub@redhat.com>
6090         PR tree-optimization/94801
6091         PR target/97312
6092         * vr-values.c (vr_values::extract_range_basic) <CASE_CFN_CLZ,
6093         CASE_CFN_CTZ>: When stmt is not an internal-fn call or
6094         C?Z_DEFINED_VALUE_AT_ZERO is not 2, assume argument is not zero
6095         and thus use [0, prec-1] range unless it can be further improved.
6096         For CTZ, don't update maxi from upper bound if it was previously prec.
6097         * gimple-range.cc (gimple_ranger::range_of_builtin_call) <CASE_CFN_CLZ,
6098         CASE_CFN_CTZ>: Likewise.
6100 2020-10-09  Jakub Jelinek  <jakub@redhat.com>
6102         PR tree-optimization/97325
6103         * match.pd (FFS(nonzero) -> CTZ(nonzero) + 1): Cast argument to
6104         corresponding unsigned type.
6106 2020-10-09  Richard Biener  <rguenther@suse.de>
6108         * tree-vect-slp.c (vect_create_constant_vectors): Properly insert
6109         after PHIs.
6111 2020-10-08  Alexandre Oliva  <oliva@adacore.com>
6113         * builtins.c (mathfn_built_in_type): New.
6114         * builtins.h (mathfn_built_in_type): Declare.
6115         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use it to
6116         obtain the type expected by the intrinsic.
6118 2020-10-08  Will Schmidt  <will_schmidt@vnet.ibm.com>
6120         * config/rs6000/rs6000-builtin.def (BU_P10_MISC_2): Rename
6121         to BU_P10_POWERPC64_MISC_2.
6122         CFUGED, CNTLZDM, CNTTZDM, PDEPD, PEXTD): Call renamed macro.
6124 2020-10-08  Jan Hubicka  <jh@suse.cz>
6126         * tree-nrv.c (dest_safe_for_nrv_p): Disable tbaa in
6127         call_may_clobber_ref_p and ref_maybe_used_by_stmt_p.
6128         * tree-tailcall.c (find_tail_calls): Likewise.
6129         * tree-ssa-alias.c (call_may_clobber_ref_p): Add tbaa_p parameter.
6130         * tree-ssa-alias.h (call_may_clobber_ref_p): Update prototype.
6131         * tree-ssa-sccvn.c (vn_reference_lookup_3): Pass data->tbaa_p
6132         to call_may_clobber_ref_p_1.
6134 2020-10-08  Mark Wielaard  <mark@klomp.org>
6136         * dwarf2out.c (dwarf2out_finish): Emit .file 0 entry when
6137         generating DWARF5 .debug_line table through gas.
6139 2020-10-08  John Henning  <john.henning@oracle.com>
6141         PR other/97309
6142         * doc/invoke.texi: Improve documentation of
6143         -fallow-store-data-races.
6145 2020-10-08  Christophe Lyon  <christophe.lyon@linaro.org>
6147         PR target/96914
6148         * config/arm/arm_mve.h (__arm_vcvtnq_u32_f32): New.
6150 2020-10-08  Martin Liska  <mliska@suse.cz>
6151             Richard Biener  <rguenther@suse.de>
6153         * tree-vectorizer.h (_bb_vec_info::const_iterator): Remove.
6154         (_bb_vec_info::const_reverse_iterator): Likewise.
6155         (_bb_vec_info::region_stmts): Likewise.
6156         (_bb_vec_info::reverse_region_stmts): Likewise.
6157         (_bb_vec_info::_bb_vec_info): Adjust.
6158         (_bb_vec_info::bb): Remove.
6159         (_bb_vec_info::region_begin): Remove.
6160         (_bb_vec_info::region_end): Remove.
6161         (_bb_vec_info::bbs): New vector of BBs.
6162         (vect_slp_function): Declare.
6163         * tree-vect-patterns.c (vect_determine_precisions): Use
6164         regular stmt iteration.
6165         (vect_pattern_recog): Likewise.
6166         * tree-vect-slp.c: Include cfganal.h, tree-eh.h and tree-cfg.h.
6167         (vect_build_slp_tree_1): Properly refuse to vectorize
6168         volatile and throwing stmts.
6169         (vect_build_slp_tree_2): Pass group-size down to
6170         get_vectype_for_scalar_type.
6171         (_bb_vec_info::_bb_vec_info): Use regular stmt iteration,
6172         adjust for changed region specification.
6173         (_bb_vec_info::~_bb_vec_info): Likewise.
6174         (vect_slp_check_for_constructors): Likewise.
6175         (vect_slp_region): Likewise.
6176         (vect_slp_bbs): New worker operating on a vector of BBs.
6177         (vect_slp_bb): Wrap it.
6178         (vect_slp_function): New function splitting the function
6179         into multi-BB regions.
6180         (vect_create_constant_vectors): Handle the case of inserting
6181         after a throwing def.
6182         (vect_schedule_slp_instance): Adjust.
6183         * tree-vectorizer.c (vec_info::remove_stmt): Simplify again.
6184         (vec_info::insert_seq_on_entry): Adjust.
6185         (pass_slp_vectorize::execute): Also init PHIs.  Call
6186         vect_slp_function.
6188 2020-10-08  Richard Biener  <rguenther@suse.de>
6190         PR tree-optimization/97330
6191         * tree-ssa-sink.c (statement_sink_location): Avoid skipping
6192         PHIs when they dominate the insert location.
6194 2020-10-08  Jan Hubicka  <jh@suse.cz>
6196         * ipa-modref.c (get_access): Fix handling of offsets.
6197         * tree-ssa-alias.c (modref_may_conflict): Watch for overflows.
6199 2020-10-08  Martin Liska  <mliska@suse.cz>
6201         * dbgcnt.def (DEBUG_COUNTER): Add ipa_mod_ref debug counter.
6202         * tree-ssa-alias.c (modref_may_conflict): Handle the counter.
6204 2020-10-08  Richard Biener  <rguenther@suse.de>
6206         * tree-vectorizer.c (try_vectorize_loop_1): Do not dump
6207         "basic block vectorized".
6208         (pass_slp_vectorize::execute): Likewise.
6209         * tree-vect-slp.c (vect_analyze_slp_instance): Avoid
6210         re-analyzing split single stmts.
6212 2020-10-08  Christophe Lyon  <christophe.lyon@linaro.org>
6214         PR target/96914
6215         * config/arm/arm_mve.h (vqrdmlashq_n_u8, vqrdmlashq_n_u16)
6216         (vqrdmlashq_n_u32, vqrdmlahq_n_u8, vqrdmlahq_n_u16)
6217         (vqrdmlahq_n_u32, vqdmlahq_n_u8, vqdmlahq_n_u16, vqdmlahq_n_u32)
6218         (vmlaldavaxq_p_u16, vmlaldavaxq_p_u32): Remove.
6219         * config/arm/arm_mve_builtins.def (vqrdmlashq_n_u, vqrdmlahq_n_u)
6220         (vqdmlahq_n_u, vmlaldavaxq_p_u): Remove.
6221         * config/arm/unspecs.md (VQDMLAHQ_N_U, VQRDMLAHQ_N_U)
6222         (VQRDMLASHQ_N_U)
6223         (VMLALDAVAXQ_P_U): Remove unspecs.
6224         * config/arm/iterators.md (VQDMLAHQ_N_U, VQRDMLAHQ_N_U)
6225         (VQRDMLASHQ_N_U, VMLALDAVAXQ_P_U): Remove attributes.
6226         (VQDMLAHQ_N, VQRDMLAHQ_N, VQRDMLASHQ_N, VMLALDAVAXQ_P): Remove
6227         unsigned variants from iterators.
6228         * config/arm/mve.md (mve_vqdmlahq_n_<supf><mode>)
6229         (mve_vqrdmlahq_n_<supf><mode>)
6230         (mve_vqrdmlashq_n_<supf><mode>, mve_vmlaldavaxq_p_<supf><mode>):
6231         Update comment.
6233 2020-10-08  Christophe Lyon  <christophe.lyon@linaro.org>
6235         PR target/96914
6236         * config/arm/arm_mve.h (vqdmlashq, vqdmlashq_m): Define.
6237         * config/arm/arm_mve_builtins.def (vqdmlashq_n_s)
6238         (vqdmlashq_m_n_s,): New.
6239         * config/arm/unspecs.md (VQDMLASHQ_N_S, VQDMLASHQ_M_N_S): New
6240         unspecs.
6241         * config/arm/iterators.md (VQDMLASHQ_N_S, VQDMLASHQ_M_N_S): New
6242         attributes.
6243         (VQDMLASHQ_N): New iterator.
6244         * config/arm/mve.md (mve_vqdmlashq_n_, mve_vqdmlashq_m_n_s): New
6245         patterns.
6247 2020-10-08  Jakub Jelinek  <jakub@redhat.com>
6249         PR target/97322
6250         * config/arm/arm.c (arm_expand_divmod_libfunc): Pass mode instead of
6251         GET_MODE (op0) or GET_MODE (op1) to emit_library_call_value.
6253 2020-10-08  Aldy Hernandez  <aldyh@redhat.com>
6255         PR tree-optimization/97325
6256         * gimple-range.cc (gimple_ranger::range_of_builtin_call): Handle
6257         negative numbers in __builtin_ffs and __builtin_popcount.
6259 2020-10-08  Aldy Hernandez  <aldyh@redhat.com>
6261         PR tree-optimization/97315
6262         * range-op.cc (value_range_with_overflow): Change any
6263         non-overflow calculation in which both bounds are
6264         overflow/underflow to be undefined.
6266 2020-10-08  Aldy Hernandez  <aldyh@redhat.com>
6268         PR tree-optimization/97315
6269         * gimple-ssa-evrp.c (hybrid_folder::choose_value): Removes the
6270         trap and instead annotates the listing.
6272 2020-10-08  Jakub Jelinek  <jakub@redhat.com>
6274         PR sanitizer/97294
6275         * tree-cfg.c (move_block_to_fn): Call notice_special_calls on
6276         call stmts being moved into dest_cfun.
6277         * omp-low.c (lower_rec_input_clauses): Set cfun->calls_alloca when
6278         adding __builtin_alloca_with_align call without gimplification.
6280 2020-10-07  Aldy Hernandez  <aldyh@redhat.com>
6282         * common.opt (-fevrp-mode): Rename and move...
6283         * params.opt (--param=evrp-mode): ...here.
6284         * gimple-range.h (DEBUG_RANGE_CACHE): Use param_evrp_mode instead
6285         of flag_evrp_mode.
6286         * gimple-ssa-evrp.c (rvrp_folder): Same.
6287         (hybrid_folder): Same.
6288         (execute_early_vrp): Same.
6290 2020-10-07  Richard Biener  <rguenther@suse.de>
6292         PR tree-optimization/97307
6293         * tree-ssa-sink.c (statement_sink_location): Change heuristic
6294         for not skipping stores to look for virtual definitions
6295         rather than uses.
6297 2020-10-07  Andrew MacLeod  <amacleod@redhat.com>
6299         * value-range.h (irange_allocator::allocate): Allocate in two hunks
6300         instead of using the variably-sized trailing array approach.
6302 2020-10-07  David Malcolm  <dmalcolm@redhat.com>
6304         * doc/invoke.texi (-fdiagnostics-plain-output): Add
6305         -fdiagnostics-path-format=separate-events to list of
6306         options injected by -fdiagnostics-plain-output.
6307         * opts-common.c (decode_cmdline_options_to_array): Likewise.
6309 2020-10-07  Martin Jambor  <mjambor@suse.cz>
6311         PR ipa/96394
6312         * ipa-prop.c (update_indirect_edges_after_inlining): Do not add
6313         resolved speculation edges to vector of new direct edges even in
6314         presence of multiple speculative direct edges for a single call.
6316 2020-10-07  Andrew Stubbs  <ams@codesourcery.com>
6318         * config/gcn/gcn.md (unspec): Add UNSPEC_ADDPTR.
6319         (addptrdi3): Add SGPR alternative.
6321 2020-10-07  Mark Wielaard  <mark@klomp.org>
6323         * dwarf2out.c (add_filepath_AT_string): New function.
6324         (asm_outputs_debug_line_str): Likewise.
6325         (add_filename_attribute): Likewise.
6326         (add_comp_dir_attribute): Call add_filepath_AT_string.
6327         (gen_compile_unit_die): Call add_filename_attribute for name.
6328         (init_sections_and_labels): Init debug_line_str_section when
6329         asm_outputs_debug_line_str return true.
6330         (dwarf2out_early_finish): Remove DW_AT_name and DW_AT_comp_dir
6331         hack and call add_filename_attribute for the remap_debug_filename.
6333 2020-10-07  Jakub Jelinek  <jakub@redhat.com>
6335         * configure.ac (HAVE_AS_GDWARF_5_DEBUG_FLAG,
6336         HAVE_AS_WORKING_DWARF_4_FLAG): New tests.
6337         * gcc.c (ASM_DEBUG_DWARF_OPTION): Define.
6338         (ASM_DEBUG_SPEC): Use ASM_DEBUG_DWARF_OPTION instead of
6339         "--gdwarf2".  Use %{cond:opt1;:opt2} style.
6340         (ASM_DEBUG_OPTION_DWARF_OPT): Define.
6341         (ASM_DEBUG_OPTION_SPEC): Define.
6342         (asm_debug_option): New variable.
6343         (asm_options): Add "%(asm_debug_option)".
6344         (static_specs): Add asm_debug_option entry.
6345         (static_spec_functions): Add dwarf-version-gt.
6346         (debug_level_greater_than_spec_func): New function.
6347         * config/darwin.h (ASM_DEBUG_OPTION_SPEC): Define.
6348         * config/darwin9.h (ASM_DEBUG_OPTION_SPEC): Redefine.
6349         * config.in: Regenerated.
6350         * configure: Regenerated.
6352 2020-10-07  Jakub Jelinek  <jakub@redhat.com>
6354         PR bootstrap/97305
6355         * optc-save-gen.awk: Don't declare mask variable if explicit_mask
6356         array is not present.
6358 2020-10-07  Jakub Jelinek  <jakub@redhat.com>
6360         * omp-expand.c (expand_omp_simd): Don't emit MIN_EXPR and PLUS_EXPR
6361         at the end of entry_bb and innermost init_bb, instead force arguments
6362         for MIN_EXPR into temporaries in both cases and jump to a new bb that
6363         performs MIN_EXPR and PLUS_EXPR.
6365 2020-10-07  Tom de Vries  <tdevries@suse.de>
6367         * tree-ssa-loop-ch.c (ch_base::copy_headers): Add missing NULL test
6368         for dump_file.
6370 2020-10-06  Andrew MacLeod  <amacleod@redhat.com>
6372         * flag-types.h (enum evrp_mode): New enumerated type EVRP_MODE_*.
6373         * common.opt (fevrp-mode): New undocumented flag.
6374         * gimple-ssa-evrp.c: Include gimple-range.h
6375         (class rvrp_folder): EVRP folding using ranger exclusively.
6376         (rvrp_folder::rvrp_folder): New.
6377         (rvrp_folder::~rvrp_folder): New.
6378         (rvrp_folder::value_of_expr): New.  Use rangers value_of_expr.
6379         (rvrp_folder::value_on_edge): New.  Use rangers value_on_edge.
6380         (rvrp_folder::value_of_Stmt): New.  Use rangers value_of_stmt.
6381         (rvrp_folder::fold_stmt): New.  Call the simplifier.
6382         (class hybrid_folder): EVRP folding using both engines.
6383         (hybrid_folder::hybrid_folder): New.
6384         (hybrid_folder::~hybrid_folder): New.
6385         (hybrid_folder::fold_stmt): New.  Simplify with one engne, then the
6386         other.
6387         (hybrid_folder::value_of_expr): New.  Use both value routines.
6388         (hybrid_folder::value_on_edge): New.  Use both value routines.
6389         (hybrid_folder::value_of_stmt): New.  Use both value routines.
6390         (hybrid_folder::choose_value): New.  Choose between range_analzyer and
6391         rangers values.
6392         (execute_early_vrp): Choose a folder based on flag_evrp_mode.
6393         * vr-values.c (simplify_using_ranges::fold_cond): Try range_of_stmt
6394         first to see if it returns a value.
6395         (simplify_using_ranges::simplify_switch_using_ranges): Return true if
6396         any changes were made to the switch.
6398 2020-10-06  Andrew MacLeod  <amacleod@redhat.com>
6400         * Makefile.in (OBJS): Add gimple-range*.o.
6401         * gimple-range.h: New file.
6402         * gimple-range.cc: New file.
6403         * gimple-range-cache.h: New file.
6404         * gimple-range-cache.cc: New file.
6405         * gimple-range-edge.h: New file.
6406         * gimple-range-edge.cc: New file.
6407         * gimple-range-gori.h: New file.
6408         * gimple-range-gori.cc: New file.
6410 2020-10-06  Dennis Zhang  <dennis.zhang@arm.com>
6412         * config/arm/arm.c (arm_preferred_simd_mode): Enable MVE SIMD modes.
6414 2020-10-06  Tom de Vries  <tdevries@suse.de>
6416         PR middle-end/90861
6417         * gimplify.c (gimplify_bind_expr): Handle lookup in
6418         oacc_declare_returns using key with decl-expr.
6420 2020-10-06  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
6422         * config/arm/iterators.md (MVE_types): Move mode iterator from mve.md to
6423         iterators.md.
6424         (MVE_VLD_ST): Likewise.
6425         (MVE_0): Likewise.
6426         (MVE_1): Likewise.
6427         (MVE_3): Likewise.
6428         (MVE_2): Likewise.
6429         (MVE_5): Likewise.
6430         (MVE_6): Likewise.
6431         (MVE_CNVT): Move mode attribute iterator from mve.md to iterators.md.
6432         (MVE_LANES): Likewise.
6433         (MVE_constraint): Likewise.
6434         (MVE_constraint1): Likewise.
6435         (MVE_constraint2): Likewise.
6436         (MVE_constraint3): Likewise.
6437         (MVE_pred): Likewise.
6438         (MVE_pred1): Likewise.
6439         (MVE_pred2): Likewise.
6440         (MVE_pred3): Likewise.
6441         (MVE_B_ELEM): Likewise.
6442         (MVE_H_ELEM): Likewise.
6443         (V_sz_elem1): Likewise.
6444         (V_extr_elem): Likewise.
6445         (earlyclobber_32): Likewise.
6446         (supf): Move int attribute from mve.md to iterators.md.
6447         (mode1): Likewise.
6448         (VCVTQ_TO_F): Move int iterator from mve.md to iterators.md.
6449         (VMVNQ_N): Likewise.
6450         (VREV64Q): Likewise.
6451         (VCVTQ_FROM_F): Likewise.
6452         (VREV16Q): Likewise.
6453         (VCVTAQ): Likewise.
6454         (VMVNQ): Likewise.
6455         (VDUPQ_N): Likewise.
6456         (VCLZQ): Likewise.
6457         (VADDVQ): Likewise.
6458         (VREV32Q): Likewise.
6459         (VMOVLBQ): Likewise.
6460         (VMOVLTQ): Likewise.
6461         (VCVTPQ): Likewise.
6462         (VCVTNQ): Likewise.
6463         (VCVTMQ): Likewise.
6464         (VADDLVQ): Likewise.
6465         (VCTPQ): Likewise.
6466         (VCTPQ_M): Likewise.
6467         (VCVTQ_N_TO_F): Likewise.
6468         (VCREATEQ): Likewise.
6469         (VSHRQ_N): Likewise.
6470         (VCVTQ_N_FROM_F): Likewise.
6471         (VADDLVQ_P): Likewise.
6472         (VCMPNEQ): Likewise.
6473         (VSHLQ): Likewise.
6474         (VABDQ): Likewise.
6475         (VADDQ_N): Likewise.
6476         (VADDVAQ): Likewise.
6477         (VADDVQ_P): Likewise.
6478         (VANDQ): Likewise.
6479         (VBICQ): Likewise.
6480         (VBRSRQ_N): Likewise.
6481         (VCADDQ_ROT270): Likewise.
6482         (VCADDQ_ROT90): Likewise.
6483         (VCMPEQQ): Likewise.
6484         (VCMPEQQ_N): Likewise.
6485         (VCMPNEQ_N): Likewise.
6486         (VEORQ): Likewise.
6487         (VHADDQ): Likewise.
6488         (VHADDQ_N): Likewise.
6489         (VHSUBQ): Likewise.
6490         (VHSUBQ_N): Likewise.
6491         (VMAXQ): Likewise.
6492         (VMAXVQ): Likewise.
6493         (VMINQ): Likewise.
6494         (VMINVQ): Likewise.
6495         (VMLADAVQ): Likewise.
6496         (VMULHQ): Likewise.
6497         (VMULLBQ_INT): Likewise.
6498         (VMULLTQ_INT): Likewise.
6499         (VMULQ): Likewise.
6500         (VMULQ_N): Likewise.
6501         (VORNQ): Likewise.
6502         (VORRQ): Likewise.
6503         (VQADDQ): Likewise.
6504         (VQADDQ_N): Likewise.
6505         (VQRSHLQ): Likewise.
6506         (VQRSHLQ_N): Likewise.
6507         (VQSHLQ): Likewise.
6508         (VQSHLQ_N): Likewise.
6509         (VQSHLQ_R): Likewise.
6510         (VQSUBQ): Likewise.
6511         (VQSUBQ_N): Likewise.
6512         (VRHADDQ): Likewise.
6513         (VRMULHQ): Likewise.
6514         (VRSHLQ): Likewise.
6515         (VRSHLQ_N): Likewise.
6516         (VRSHRQ_N): Likewise.
6517         (VSHLQ_N): Likewise.
6518         (VSHLQ_R): Likewise.
6519         (VSUBQ): Likewise.
6520         (VSUBQ_N): Likewise.
6521         (VADDLVAQ): Likewise.
6522         (VBICQ_N): Likewise.
6523         (VMLALDAVQ): Likewise.
6524         (VMLALDAVXQ): Likewise.
6525         (VMOVNBQ): Likewise.
6526         (VMOVNTQ): Likewise.
6527         (VORRQ_N): Likewise.
6528         (VQMOVNBQ): Likewise.
6529         (VQMOVNTQ): Likewise.
6530         (VSHLLBQ_N): Likewise.
6531         (VSHLLTQ_N): Likewise.
6532         (VRMLALDAVHQ): Likewise.
6533         (VBICQ_M_N): Likewise.
6534         (VCVTAQ_M): Likewise.
6535         (VCVTQ_M_TO_F): Likewise.
6536         (VQRSHRNBQ_N): Likewise.
6537         (VABAVQ): Likewise.
6538         (VSHLCQ): Likewise.
6539         (VRMLALDAVHAQ): Likewise.
6540         (VADDVAQ_P): Likewise.
6541         (VCLZQ_M): Likewise.
6542         (VCMPEQQ_M_N): Likewise.
6543         (VCMPEQQ_M): Likewise.
6544         (VCMPNEQ_M_N): Likewise.
6545         (VCMPNEQ_M): Likewise.
6546         (VDUPQ_M_N): Likewise.
6547         (VMAXVQ_P): Likewise.
6548         (VMINVQ_P): Likewise.
6549         (VMLADAVAQ): Likewise.
6550         (VMLADAVQ_P): Likewise.
6551         (VMLAQ_N): Likewise.
6552         (VMLASQ_N): Likewise.
6553         (VMVNQ_M): Likewise.
6554         (VPSELQ): Likewise.
6555         (VQDMLAHQ_N): Likewise.
6556         (VQRDMLAHQ_N): Likewise.
6557         (VQRDMLASHQ_N): Likewise.
6558         (VQRSHLQ_M_N): Likewise.
6559         (VQSHLQ_M_R): Likewise.
6560         (VREV64Q_M): Likewise.
6561         (VRSHLQ_M_N): Likewise.
6562         (VSHLQ_M_R): Likewise.
6563         (VSLIQ_N): Likewise.
6564         (VSRIQ_N): Likewise.
6565         (VMLALDAVQ_P): Likewise.
6566         (VQMOVNBQ_M): Likewise.
6567         (VMOVLTQ_M): Likewise.
6568         (VMOVNBQ_M): Likewise.
6569         (VRSHRNTQ_N): Likewise.
6570         (VORRQ_M_N): Likewise.
6571         (VREV32Q_M): Likewise.
6572         (VREV16Q_M): Likewise.
6573         (VQRSHRNTQ_N): Likewise.
6574         (VMOVNTQ_M): Likewise.
6575         (VMOVLBQ_M): Likewise.
6576         (VMLALDAVAQ): Likewise.
6577         (VQSHRNBQ_N): Likewise.
6578         (VSHRNBQ_N): Likewise.
6579         (VRSHRNBQ_N): Likewise.
6580         (VMLALDAVXQ_P): Likewise.
6581         (VQMOVNTQ_M): Likewise.
6582         (VMVNQ_M_N): Likewise.
6583         (VQSHRNTQ_N): Likewise.
6584         (VMLALDAVAXQ): Likewise.
6585         (VSHRNTQ_N): Likewise.
6586         (VCVTMQ_M): Likewise.
6587         (VCVTNQ_M): Likewise.
6588         (VCVTPQ_M): Likewise.
6589         (VCVTQ_M_N_FROM_F): Likewise.
6590         (VCVTQ_M_FROM_F): Likewise.
6591         (VRMLALDAVHQ_P): Likewise.
6592         (VADDLVAQ_P): Likewise.
6593         (VABAVQ_P): Likewise.
6594         (VSHLQ_M): Likewise.
6595         (VSRIQ_M_N): Likewise.
6596         (VSUBQ_M): Likewise.
6597         (VCVTQ_M_N_TO_F): Likewise.
6598         (VHSUBQ_M): Likewise.
6599         (VSLIQ_M_N): Likewise.
6600         (VRSHLQ_M): Likewise.
6601         (VMINQ_M): Likewise.
6602         (VMULLBQ_INT_M): Likewise.
6603         (VMULHQ_M): Likewise.
6604         (VMULQ_M): Likewise.
6605         (VHSUBQ_M_N): Likewise.
6606         (VHADDQ_M_N): Likewise.
6607         (VORRQ_M): Likewise.
6608         (VRMULHQ_M): Likewise.
6609         (VQADDQ_M): Likewise.
6610         (VRSHRQ_M_N): Likewise.
6611         (VQSUBQ_M_N): Likewise.
6612         (VADDQ_M): Likewise.
6613         (VORNQ_M): Likewise.
6614         (VRHADDQ_M): Likewise.
6615         (VQSHLQ_M): Likewise.
6616         (VANDQ_M): Likewise.
6617         (VBICQ_M): Likewise.
6618         (VSHLQ_M_N): Likewise.
6619         (VCADDQ_ROT270_M): Likewise.
6620         (VQRSHLQ_M): Likewise.
6621         (VQADDQ_M_N): Likewise.
6622         (VADDQ_M_N): Likewise.
6623         (VMAXQ_M): Likewise.
6624         (VQSUBQ_M): Likewise.
6625         (VMLASQ_M_N): Likewise.
6626         (VMLADAVAQ_P): Likewise.
6627         (VBRSRQ_M_N): Likewise.
6628         (VMULQ_M_N): Likewise.
6629         (VCADDQ_ROT90_M): Likewise.
6630         (VMULLTQ_INT_M): Likewise.
6631         (VEORQ_M): Likewise.
6632         (VSHRQ_M_N): Likewise.
6633         (VSUBQ_M_N): Likewise.
6634         (VHADDQ_M): Likewise.
6635         (VABDQ_M): Likewise.
6636         (VMLAQ_M_N): Likewise.
6637         (VQSHLQ_M_N): Likewise.
6638         (VMLALDAVAQ_P): Likewise.
6639         (VMLALDAVAXQ_P): Likewise.
6640         (VQRSHRNBQ_M_N): Likewise.
6641         (VQRSHRNTQ_M_N): Likewise.
6642         (VQSHRNBQ_M_N): Likewise.
6643         (VQSHRNTQ_M_N): Likewise.
6644         (VRSHRNBQ_M_N): Likewise.
6645         (VRSHRNTQ_M_N): Likewise.
6646         (VSHLLBQ_M_N): Likewise.
6647         (VSHLLTQ_M_N): Likewise.
6648         (VSHRNBQ_M_N): Likewise.
6649         (VSHRNTQ_M_N): Likewise.
6650         (VSTRWSBQ): Likewise.
6651         (VSTRBSOQ): Likewise.
6652         (VSTRBQ): Likewise.
6653         (VLDRBGOQ): Likewise.
6654         (VLDRBQ): Likewise.
6655         (VLDRWGBQ): Likewise.
6656         (VLD1Q): Likewise.
6657         (VLDRHGOQ): Likewise.
6658         (VLDRHGSOQ): Likewise.
6659         (VLDRHQ): Likewise.
6660         (VLDRWQ): Likewise.
6661         (VLDRDGBQ): Likewise.
6662         (VLDRDGOQ): Likewise.
6663         (VLDRDGSOQ): Likewise.
6664         (VLDRWGOQ): Likewise.
6665         (VLDRWGSOQ): Likewise.
6666         (VST1Q): Likewise.
6667         (VSTRHSOQ): Likewise.
6668         (VSTRHSSOQ): Likewise.
6669         (VSTRHQ): Likewise.
6670         (VSTRWQ): Likewise.
6671         (VSTRDSBQ): Likewise.
6672         (VSTRDSOQ): Likewise.
6673         (VSTRDSSOQ): Likewise.
6674         (VSTRWSOQ): Likewise.
6675         (VSTRWSSOQ): Likewise.
6676         (VSTRWSBWBQ): Likewise.
6677         (VLDRWGBWBQ): Likewise.
6678         (VSTRDSBWBQ): Likewise.
6679         (VLDRDGBWBQ): Likewise.
6680         (VADCIQ): Likewise.
6681         (VADCIQ_M): Likewise.
6682         (VSBCQ): Likewise.
6683         (VSBCQ_M): Likewise.
6684         (VSBCIQ): Likewise.
6685         (VSBCIQ_M): Likewise.
6686         (VADCQ): Likewise.
6687         (VADCQ_M): Likewise.
6688         (UQRSHLLQ): Likewise.
6689         (SQRSHRLQ): Likewise.
6690         (VSHLCQ_M): Likewise.
6691         * config/arm/mve.md (MVE_types): Move mode iterator to iterators.md from mve.md.
6692         (MVE_VLD_ST): Likewise.
6693         (MVE_0): Likewise.
6694         (MVE_1): Likewise.
6695         (MVE_3): Likewise.
6696         (MVE_2): Likewise.
6697         (MVE_5): Likewise.
6698         (MVE_6): Likewise.
6699         (MVE_CNVT): Move mode attribute iterator to iterators.md from mve.md.
6700         (MVE_LANES): Likewise.
6701         (MVE_constraint): Likewise.
6702         (MVE_constraint1): Likewise.
6703         (MVE_constraint2): Likewise.
6704         (MVE_constraint3): Likewise.
6705         (MVE_pred): Likewise.
6706         (MVE_pred1): Likewise.
6707         (MVE_pred2): Likewise.
6708         (MVE_pred3): Likewise.
6709         (MVE_B_ELEM): Likewise.
6710         (MVE_H_ELEM): Likewise.
6711         (V_sz_elem1): Likewise.
6712         (V_extr_elem): Likewise.
6713         (earlyclobber_32): Likewise.
6714         (supf): Move int attribute to iterators.md from mve.md.
6715         (mode1): Likewise.
6716         (VCVTQ_TO_F): Move int iterator to iterators.md from mve.md.
6717         (VMVNQ_N): Likewise.
6718         (VREV64Q): Likewise.
6719         (VCVTQ_FROM_F): Likewise.
6720         (VREV16Q): Likewise.
6721         (VCVTAQ): Likewise.
6722         (VMVNQ): Likewise.
6723         (VDUPQ_N): Likewise.
6724         (VCLZQ): Likewise.
6725         (VADDVQ): Likewise.
6726         (VREV32Q): Likewise.
6727         (VMOVLBQ): Likewise.
6728         (VMOVLTQ): Likewise.
6729         (VCVTPQ): Likewise.
6730         (VCVTNQ): Likewise.
6731         (VCVTMQ): Likewise.
6732         (VADDLVQ): Likewise.
6733         (VCTPQ): Likewise.
6734         (VCTPQ_M): Likewise.
6735         (VCVTQ_N_TO_F): Likewise.
6736         (VCREATEQ): Likewise.
6737         (VSHRQ_N): Likewise.
6738         (VCVTQ_N_FROM_F): Likewise.
6739         (VADDLVQ_P): Likewise.
6740         (VCMPNEQ): Likewise.
6741         (VSHLQ): Likewise.
6742         (VABDQ): Likewise.
6743         (VADDQ_N): Likewise.
6744         (VADDVAQ): Likewise.
6745         (VADDVQ_P): Likewise.
6746         (VANDQ): Likewise.
6747         (VBICQ): Likewise.
6748         (VBRSRQ_N): Likewise.
6749         (VCADDQ_ROT270): Likewise.
6750         (VCADDQ_ROT90): Likewise.
6751         (VCMPEQQ): Likewise.
6752         (VCMPEQQ_N): Likewise.
6753         (VCMPNEQ_N): Likewise.
6754         (VEORQ): Likewise.
6755         (VHADDQ): Likewise.
6756         (VHADDQ_N): Likewise.
6757         (VHSUBQ): Likewise.
6758         (VHSUBQ_N): Likewise.
6759         (VMAXQ): Likewise.
6760         (VMAXVQ): Likewise.
6761         (VMINQ): Likewise.
6762         (VMINVQ): Likewise.
6763         (VMLADAVQ): Likewise.
6764         (VMULHQ): Likewise.
6765         (VMULLBQ_INT): Likewise.
6766         (VMULLTQ_INT): Likewise.
6767         (VMULQ): Likewise.
6768         (VMULQ_N): Likewise.
6769         (VORNQ): Likewise.
6770         (VORRQ): Likewise.
6771         (VQADDQ): Likewise.
6772         (VQADDQ_N): Likewise.
6773         (VQRSHLQ): Likewise.
6774         (VQRSHLQ_N): Likewise.
6775         (VQSHLQ): Likewise.
6776         (VQSHLQ_N): Likewise.
6777         (VQSHLQ_R): Likewise.
6778         (VQSUBQ): Likewise.
6779         (VQSUBQ_N): Likewise.
6780         (VRHADDQ): Likewise.
6781         (VRMULHQ): Likewise.
6782         (VRSHLQ): Likewise.
6783         (VRSHLQ_N): Likewise.
6784         (VRSHRQ_N): Likewise.
6785         (VSHLQ_N): Likewise.
6786         (VSHLQ_R): Likewise.
6787         (VSUBQ): Likewise.
6788         (VSUBQ_N): Likewise.
6789         (VADDLVAQ): Likewise.
6790         (VBICQ_N): Likewise.
6791         (VMLALDAVQ): Likewise.
6792         (VMLALDAVXQ): Likewise.
6793         (VMOVNBQ): Likewise.
6794         (VMOVNTQ): Likewise.
6795         (VORRQ_N): Likewise.
6796         (VQMOVNBQ): Likewise.
6797         (VQMOVNTQ): Likewise.
6798         (VSHLLBQ_N): Likewise.
6799         (VSHLLTQ_N): Likewise.
6800         (VRMLALDAVHQ): Likewise.
6801         (VBICQ_M_N): Likewise.
6802         (VCVTAQ_M): Likewise.
6803         (VCVTQ_M_TO_F): Likewise.
6804         (VQRSHRNBQ_N): Likewise.
6805         (VABAVQ): Likewise.
6806         (VSHLCQ): Likewise.
6807         (VRMLALDAVHAQ): Likewise.
6808         (VADDVAQ_P): Likewise.
6809         (VCLZQ_M): Likewise.
6810         (VCMPEQQ_M_N): Likewise.
6811         (VCMPEQQ_M): Likewise.
6812         (VCMPNEQ_M_N): Likewise.
6813         (VCMPNEQ_M): Likewise.
6814         (VDUPQ_M_N): Likewise.
6815         (VMAXVQ_P): Likewise.
6816         (VMINVQ_P): Likewise.
6817         (VMLADAVAQ): Likewise.
6818         (VMLADAVQ_P): Likewise.
6819         (VMLAQ_N): Likewise.
6820         (VMLASQ_N): Likewise.
6821         (VMVNQ_M): Likewise.
6822         (VPSELQ): Likewise.
6823         (VQDMLAHQ_N): Likewise.
6824         (VQRDMLAHQ_N): Likewise.
6825         (VQRDMLASHQ_N): Likewise.
6826         (VQRSHLQ_M_N): Likewise.
6827         (VQSHLQ_M_R): Likewise.
6828         (VREV64Q_M): Likewise.
6829         (VRSHLQ_M_N): Likewise.
6830         (VSHLQ_M_R): Likewise.
6831         (VSLIQ_N): Likewise.
6832         (VSRIQ_N): Likewise.
6833         (VMLALDAVQ_P): Likewise.
6834         (VQMOVNBQ_M): Likewise.
6835         (VMOVLTQ_M): Likewise.
6836         (VMOVNBQ_M): Likewise.
6837         (VRSHRNTQ_N): Likewise.
6838         (VORRQ_M_N): Likewise.
6839         (VREV32Q_M): Likewise.
6840         (VREV16Q_M): Likewise.
6841         (VQRSHRNTQ_N): Likewise.
6842         (VMOVNTQ_M): Likewise.
6843         (VMOVLBQ_M): Likewise.
6844         (VMLALDAVAQ): Likewise.
6845         (VQSHRNBQ_N): Likewise.
6846         (VSHRNBQ_N): Likewise.
6847         (VRSHRNBQ_N): Likewise.
6848         (VMLALDAVXQ_P): Likewise.
6849         (VQMOVNTQ_M): Likewise.
6850         (VMVNQ_M_N): Likewise.
6851         (VQSHRNTQ_N): Likewise.
6852         (VMLALDAVAXQ): Likewise.
6853         (VSHRNTQ_N): Likewise.
6854         (VCVTMQ_M): Likewise.
6855         (VCVTNQ_M): Likewise.
6856         (VCVTPQ_M): Likewise.
6857         (VCVTQ_M_N_FROM_F): Likewise.
6858         (VCVTQ_M_FROM_F): Likewise.
6859         (VRMLALDAVHQ_P): Likewise.
6860         (VADDLVAQ_P): Likewise.
6861         (VABAVQ_P): Likewise.
6862         (VSHLQ_M): Likewise.
6863         (VSRIQ_M_N): Likewise.
6864         (VSUBQ_M): Likewise.
6865         (VCVTQ_M_N_TO_F): Likewise.
6866         (VHSUBQ_M): Likewise.
6867         (VSLIQ_M_N): Likewise.
6868         (VRSHLQ_M): Likewise.
6869         (VMINQ_M): Likewise.
6870         (VMULLBQ_INT_M): Likewise.
6871         (VMULHQ_M): Likewise.
6872         (VMULQ_M): Likewise.
6873         (VHSUBQ_M_N): Likewise.
6874         (VHADDQ_M_N): Likewise.
6875         (VORRQ_M): Likewise.
6876         (VRMULHQ_M): Likewise.
6877         (VQADDQ_M): Likewise.
6878         (VRSHRQ_M_N): Likewise.
6879         (VQSUBQ_M_N): Likewise.
6880         (VADDQ_M): Likewise.
6881         (VORNQ_M): Likewise.
6882         (VRHADDQ_M): Likewise.
6883         (VQSHLQ_M): Likewise.
6884         (VANDQ_M): Likewise.
6885         (VBICQ_M): Likewise.
6886         (VSHLQ_M_N): Likewise.
6887         (VCADDQ_ROT270_M): Likewise.
6888         (VQRSHLQ_M): Likewise.
6889         (VQADDQ_M_N): Likewise.
6890         (VADDQ_M_N): Likewise.
6891         (VMAXQ_M): Likewise.
6892         (VQSUBQ_M): Likewise.
6893         (VMLASQ_M_N): Likewise.
6894         (VMLADAVAQ_P): Likewise.
6895         (VBRSRQ_M_N): Likewise.
6896         (VMULQ_M_N): Likewise.
6897         (VCADDQ_ROT90_M): Likewise.
6898         (VMULLTQ_INT_M): Likewise.
6899         (VEORQ_M): Likewise.
6900         (VSHRQ_M_N): Likewise.
6901         (VSUBQ_M_N): Likewise.
6902         (VHADDQ_M): Likewise.
6903         (VABDQ_M): Likewise.
6904         (VMLAQ_M_N): Likewise.
6905         (VQSHLQ_M_N): Likewise.
6906         (VMLALDAVAQ_P): Likewise.
6907         (VMLALDAVAXQ_P): Likewise.
6908         (VQRSHRNBQ_M_N): Likewise.
6909         (VQRSHRNTQ_M_N): Likewise.
6910         (VQSHRNBQ_M_N): Likewise.
6911         (VQSHRNTQ_M_N): Likewise.
6912         (VRSHRNBQ_M_N): Likewise.
6913         (VRSHRNTQ_M_N): Likewise.
6914         (VSHLLBQ_M_N): Likewise.
6915         (VSHLLTQ_M_N): Likewise.
6916         (VSHRNBQ_M_N): Likewise.
6917         (VSHRNTQ_M_N): Likewise.
6918         (VSTRWSBQ): Likewise.
6919         (VSTRBSOQ): Likewise.
6920         (VSTRBQ): Likewise.
6921         (VLDRBGOQ): Likewise.
6922         (VLDRBQ): Likewise.
6923         (VLDRWGBQ): Likewise.
6924         (VLD1Q): Likewise.
6925         (VLDRHGOQ): Likewise.
6926         (VLDRHGSOQ): Likewise.
6927         (VLDRHQ): Likewise.
6928         (VLDRWQ): Likewise.
6929         (VLDRDGBQ): Likewise.
6930         (VLDRDGOQ): Likewise.
6931         (VLDRDGSOQ): Likewise.
6932         (VLDRWGOQ): Likewise.
6933         (VLDRWGSOQ): Likewise.
6934         (VST1Q): Likewise.
6935         (VSTRHSOQ): Likewise.
6936         (VSTRHSSOQ): Likewise.
6937         (VSTRHQ): Likewise.
6938         (VSTRWQ): Likewise.
6939         (VSTRDSBQ): Likewise.
6940         (VSTRDSOQ): Likewise.
6941         (VSTRDSSOQ): Likewise.
6942         (VSTRWSOQ): Likewise.
6943         (VSTRWSSOQ): Likewise.
6944         (VSTRWSBWBQ): Likewise.
6945         (VLDRWGBWBQ): Likewise.
6946         (VSTRDSBWBQ): Likewise.
6947         (VLDRDGBWBQ): Likewise.
6948         (VADCIQ): Likewise.
6949         (VADCIQ_M): Likewise.
6950         (VSBCQ): Likewise.
6951         (VSBCQ_M): Likewise.
6952         (VSBCIQ): Likewise.
6953         (VSBCIQ_M): Likewise.
6954         (VADCQ): Likewise.
6955         (VADCQ_M): Likewise.
6956         (UQRSHLLQ): Likewise.
6957         (SQRSHRLQ): Likewise.
6958         (VSHLCQ_M): Likewise.
6959         (define_c_enum "unspec"): Move MVE enumerator to unspecs.md from mve.md.
6960         * config/arm/unspecs.md (define_c_enum "unspec"): Move MVE enumerator from
6961         mve.md to unspecs.md.
6963 2020-10-06  Martin Liska  <mliska@suse.cz>
6965         * common.opt: Remove -fdbg-cnt-list from deferred options.
6966         * dbgcnt.c (dbg_cnt_set_limit_by_index): Make a copy
6967         to original_limits.
6968         (dbg_cnt_list_all_counters): Print also current counter value
6969         and print to stderr.
6970         * opts-global.c (handle_common_deferred_options): Do not handle
6971         -fdbg-cnt-list.
6972         * opts.c (common_handle_option): Likewise.
6973         * toplev.c (finalize): Handle it after compilation here.
6975 2020-10-06  Martin Liska  <mliska@suse.cz>
6977         * dbgcnt.c (dbg_cnt): Report also upper limit.
6979 2020-10-06  Tom de Vries  <tdevries@suse.de>
6981         * tracer.c (count_insns): Rename to ...
6982         (analyze_bb): ... this.
6983         (cache_can_duplicate_bb_p, cached_can_duplicate_bb_p): New function.
6984         (ignore_bb_p): Use cached_can_duplicate_bb_p.
6985         (tail_duplicate): Call cache_can_duplicate_bb_p.
6987 2020-10-06  Tom de Vries  <tdevries@suse.de>
6989         * tracer.c (can_duplicate_insn_p, can_duplicate_bb_no_insn_iter_p)
6990         (can_duplicate_bb_p): New function, factored out of ...
6991         (ignore_bb_p): ... here.
6993 2020-10-06  Jakub Jelinek  <jakub@redhat.com>
6995         PR rtl-optimization/97282
6996         * tree-ssa-math-opts.c (divmod_candidate_p): Don't return false for
6997         constant op2 if it is not a power of two and the type has precision
6998         larger than HOST_BITS_PER_WIDE_INT or BITS_PER_WORD.
6999         * internal-fn.c (contains_call_div_mod): New function.
7000         (expand_DIVMOD): If last argument is a constant, try to expand it as
7001         TRUNC_DIV_EXPR followed by TRUNC_MOD_EXPR, but if the sequence
7002         contains any calls or {,U}{DIV,MOD} rtxes, throw it away and use
7003         divmod optab or divmod libfunc.
7005 2020-10-06  Aldy Hernandez  <aldyh@redhat.com>
7007         * value-range.h (irange_allocator::allocate): Increase
7008         newir storage by one.
7010 2020-10-06  Jakub Jelinek  <jakub@redhat.com>
7012         PR middle-end/97289
7013         * omp-offload.c (omp_discover_declare_target_tgt_fn_r): Only follow
7014         node->alias_target if it is a FUNCTION_DECL.
7016 2020-10-06  Joe Ramsay  <joe.ramsay@arm.com>
7018         * config/arm/arm-cpus.in:
7019         (ALL_FPU_INTERNAL): Remove vfp_base.
7020         (VFPv2): Remove vfp_base.
7021         (MVE): Remove vfp_base.
7022         (vfp_base): Redefine as implied bit dependent on MVE or FP
7023         (cortex-m55): Add flags to disable MVE, MVE FP, FP and DSP extensions.
7024         * config/arm/arm.c (arm_configure_build_target): Add implied bits to ISA.
7025         * config/arm/parsecpu.awk:
7026         (gen_isa): Print implied bits and their dependencies to ISA header.
7027         (gen_data): Add parsing for implied feature bits.
7029 2020-10-06  Andreas Krebbel  <krebbel@linux.ibm.com>
7031         * doc/invoke.texi: Add z15/arch13 to the list of documented
7032         -march/-mtune options.
7034 2020-10-05  Aldy Hernandez  <aldyh@redhat.com>
7036         * value-range.cc (irange::legacy_intersect): Only handle
7037         legacy ranges.
7038         (irange::legacy_union): Same.
7039         (irange::union_): When unioning legacy with non-legacy,
7040         first convert to legacy and do everything in legacy mode.
7041         (irange::intersect): Same, but for intersect.
7042         * range-op.cc (range_tests): Adjust for above changes.
7044 2020-10-05  Aldy Hernandez  <aldyh@redhat.com>
7046         * range-op.cc (operator_div::wi_fold): Return varying for
7047         division by zero.
7048         (class operator_rshift): Move class up.
7049         (operator_abs::wi_fold): Return [-MIN,-MIN] for ABS([-MIN,-MIN]).
7050         (operator_tests): Adjust tests.
7052 2020-10-05  Tom de Vries  <tdevries@suse.de>
7054         * tracer.c (ignore_bb_p): Ignore GOMP_SIMT_XCHG_*.
7056 2020-10-05  Alex Coplan  <alex.coplan@arm.com>
7058         * config/arm/arm-cpus.in (neoverse-v1): Add missing vendor and
7059         part numbers.
7061 2020-10-05  Tom de Vries  <tdevries@suse.de>
7063         * tracer.c (ignore_bb_p): Remove incorrect suggestion.
7065 2020-10-05  Jakub Jelinek  <jakub@redhat.com>
7067         * opth-gen.awk: Don't emit explicit_mask array if n_target_explicit
7068         is equal to n_target_explicit_mask.
7069         * optc-save-gen.awk: Compute has_target_explicit_mask and if false,
7070         don't emit code iterating over explicit_mask array elements.  Stream
7071         also explicit_mask_* target members.
7073 2020-10-05  Jakub Jelinek  <jakub@redhat.com>
7075         * gimple-ssa-store-merging.c
7076         (imm_store_chain_info::output_merged_store): Use ~0U instead of ~0 in
7077         unsigned int array initializer.
7079 2020-10-05  Tom de Vries  <tdevries@suse.de>
7081         PR fortran/95654
7082         * tracer.c (ignore_bb_p): Ignore GOMP_SIMT_ENTER_ALLOC,
7083         GOMP_SIMT_VOTE_ANY and GOMP_SIMT_EXIT.
7085 2020-10-03  Jakub Jelinek  <jakub@redhat.com>
7087         * opth-gen.awk: For variables referenced in Mask and InverseMask,
7088         don't use the explicit_mask bitmask array, but add separate
7089         explicit_mask_* members with the same types as the variables.
7090         * optc-save-gen.awk: Save, restore, compare and hash the separate
7091         explicit_mask_* members.
7093 2020-10-03  Jan Hubicka  <hubicka@ucw.cz>
7095         * ipa-modref-tree.c (test_insert_search_collapse): Update andling
7096         of accesses.
7097         (test_merge): Likewise.
7098         * ipa-modref-tree.h (struct modref_access_node): Add offset, size,
7099         max_size, parm_offset and parm_offset_known.
7100         (modref_access_node::useful_p): Constify.
7101         (modref_access_node::range_info_useful_p): New predicate.
7102         (modref_access_node::operator==): New.
7103         (struct modref_parm_map): New structure.
7104         (modref_tree::merge): Update for racking parameters)
7105         * ipa-modref.c (dump_access): Dump new fields.
7106         (get_access): Fill in new fields.
7107         (merge_call_side_effects): Update handling of parm map.
7108         (write_modref_records): Stream new fields.
7109         (read_modref_records): Stream new fields.
7110         (compute_parm_map): Update for new parm map.
7111         (ipa_merge_modref_summary_after_inlining): Update.
7112         (modref_propagate_in_scc): Update.
7113         * tree-ssa-alias.c (modref_may_conflict): Handle known ranges.
7115 2020-10-03  H.J. Lu  <hjl.tools@gmail.com>
7117         PR other/97280
7118         * doc/extend.texi: Replace roudnevenl with roundevenl
7120 2020-10-02  David Edelsohn  <dje.gcc@gmail.com>
7121             Andrew MacLeod  <amacleod@redhat.com>
7123         * config/rs6000/rs6000.c: Include ssa.h. Reorder some headers.
7124         * config/rs6000/rs6000-call.c: Same.
7126 2020-10-02  Martin Jambor  <mjambor@suse.cz>
7128         * params.opt (ipa-cp-large-unit-insns): New parameter.
7129         * ipa-cp.c (get_max_overall_size): Use the new parameter.
7131 2020-10-02  Martin Jambor  <mjambor@suse.cz>
7133         * ipa-cp.c (estimate_local_effects): Add overeall_size to dumped
7134         string.
7135         (decide_about_value): Add dumping new overall_size.
7137 2020-10-02  Martin Jambor  <mjambor@suse.cz>
7139         * ipa-fnsummary.h (ipa_freqcounting_predicate): New type.
7140         (ipa_fn_summary): Change the type of loop_iterations and loop_strides
7141         to vectors of ipa_freqcounting_predicate.
7142         (ipa_fn_summary::ipa_fn_summary): Construct the new vectors.
7143         (ipa_call_estimates): New fields loops_with_known_iterations and
7144         loops_with_known_strides.
7145         * ipa-cp.c (hint_time_bonus): Multiply param_ipa_cp_loop_hint_bonus
7146         with the expected frequencies of loops with known iteration count or
7147         stride.
7148         * ipa-fnsummary.c (add_freqcounting_predicate): New function.
7149         (ipa_fn_summary::~ipa_fn_summary): Release the new vectors instead of
7150         just two predicates.
7151         (remap_hint_predicate_after_duplication): Replace with function
7152         remap_freqcounting_preds_after_dup.
7153         (ipa_fn_summary_t::duplicate): Use it or duplicate new vectors.
7154         (ipa_dump_fn_summary): Dump the new vectors.
7155         (analyze_function_body): Compute the loop property vectors.
7156         (ipa_call_context::estimate_size_and_time): Calculate also
7157         loops_with_known_iterations and loops_with_known_strides.  Adjusted
7158         dumping accordinly.
7159         (remap_hint_predicate): Replace with function
7160         remap_freqcounting_predicate.
7161         (ipa_merge_fn_summary_after_inlining): Use it.
7162         (inline_read_section): Stream loopcounting vectors instead of two
7163         simple predicates.
7164         (ipa_fn_summary_write): Likewise.
7165         * params.opt (ipa-max-loop-predicates): New parameter.
7166         * doc/invoke.texi (ipa-max-loop-predicates): Document new param.
7168 2020-10-02  Martin Jambor  <mjambor@suse.cz>
7170         * ipa-inline-analysis.c (do_estimate_edge_time): Adjusted to use
7171         ipa_call_estimates.
7172         (do_estimate_edge_size): Likewise.
7173         (do_estimate_edge_hints): Likewise.
7174         * ipa-fnsummary.h (struct ipa_call_estimates): New type.
7175         (ipa_call_context::estimate_size_and_time): Adjusted declaration.
7176         (estimate_ipcp_clone_size_and_time): Likewise.
7177         * ipa-cp.c (hint_time_bonus): Changed the type of the second argument
7178         to ipa_call_estimates.
7179         (perform_estimation_of_a_value): Adjusted to use ipa_call_estimates.
7180         (estimate_local_effects): Likewise.
7181         * ipa-fnsummary.c (ipa_call_context::estimate_size_and_time): Adjusted
7182         to return estimates in a single ipa_call_estimates parameter.
7183         (estimate_ipcp_clone_size_and_time): Likewise.
7185 2020-10-02  Martin Jambor  <mjambor@suse.cz>
7187         * ipa-fnsummary.h (ipa_cached_call_context): New forward declaration
7188         and class.
7189         (class ipa_call_context): Make friend ipa_cached_call_context.  Moved
7190         methods duplicate_from and release to it too.
7191         * ipa-fnsummary.c (ipa_call_context::duplicate_from): Moved to class
7192         ipa_cached_call_context.
7193         (ipa_call_context::release): Likewise, removed the parameter.
7194         * ipa-inline-analysis.c (node_context_cache_entry): Change the type of
7195         ctx to ipa_cached_call_context.
7196         (do_estimate_edge_time): Remove parameter from the call to
7197         ipa_cached_call_context::release.
7199 2020-10-02  Martin Jambor  <mjambor@suse.cz>
7201         * ipa-prop.h (ipa_auto_call_arg_values): New type.
7202         (class ipa_call_arg_values): Likewise.
7203         (ipa_get_indirect_edge_target): Replaced vector arguments with
7204         ipa_call_arg_values in declaration.  Added an overload for
7205         ipa_auto_call_arg_values.
7206         * ipa-fnsummary.h (ipa_call_context): Removed members m_known_vals,
7207         m_known_contexts, m_known_aggs, duplicate_from, release and equal_to,
7208         new members m_avals, store_to_cache and equivalent_to_p.  Adjusted
7209         construcotr arguments.
7210         (estimate_ipcp_clone_size_and_time): Replaced vector arguments
7211         with ipa_auto_call_arg_values in declaration.
7212         (evaluate_properties_for_edge): Likewise.
7213         * ipa-cp.c (ipa_get_indirect_edge_target): Adjusted to work on
7214         ipa_call_arg_values rather than on separate vectors.  Added an
7215         overload for ipa_auto_call_arg_values.
7216         (devirtualization_time_bonus): Adjusted to work on
7217         ipa_auto_call_arg_values rather than on separate vectors.
7218         (gather_context_independent_values): Adjusted to work on
7219         ipa_auto_call_arg_values rather than on separate vectors.
7220         (perform_estimation_of_a_value): Likewise.
7221         (estimate_local_effects): Likewise.
7222         (modify_known_vectors_with_val): Adjusted both variants to work on
7223         ipa_auto_call_arg_values and rename them to
7224         copy_known_vectors_add_val.
7225         (decide_about_value): Adjusted to work on ipa_call_arg_values rather
7226         than on separate vectors.
7227         (decide_whether_version_node): Likewise.
7228         * ipa-fnsummary.c (evaluate_conditions_for_known_args): Likewise.
7229         (evaluate_properties_for_edge): Likewise.
7230         (ipa_fn_summary_t::duplicate): Likewise.
7231         (estimate_edge_devirt_benefit): Adjusted to work on
7232         ipa_call_arg_values rather than on separate vectors.
7233         (estimate_edge_size_and_time): Likewise.
7234         (estimate_calls_size_and_time_1): Likewise.
7235         (summarize_calls_size_and_time): Adjusted calls to
7236         estimate_edge_size_and_time.
7237         (estimate_calls_size_and_time): Adjusted to work on
7238         ipa_call_arg_values rather than on separate vectors.
7239         (ipa_call_context::ipa_call_context): Construct from a pointer to
7240         ipa_auto_call_arg_values instead of inividual vectors.
7241         (ipa_call_context::duplicate_from): Adjusted to access vectors within
7242         m_avals.
7243         (ipa_call_context::release): Likewise.
7244         (ipa_call_context::equal_to): Likewise.
7245         (ipa_call_context::estimate_size_and_time): Adjusted to work on
7246         ipa_call_arg_values rather than on separate vectors.
7247         (estimate_ipcp_clone_size_and_time): Adjusted to work with
7248         ipa_auto_call_arg_values rather than on separate vectors.
7249         (ipa_merge_fn_summary_after_inlining): Likewise.  Adjusted call to
7250         estimate_edge_size_and_time.
7251         (ipa_update_overall_fn_summary): Adjusted call to
7252         estimate_edge_size_and_time.
7253         * ipa-inline-analysis.c (do_estimate_edge_time): Adjusted to work with
7254         ipa_auto_call_arg_values rather than with separate vectors.
7255         (do_estimate_edge_size): Likewise.
7256         (do_estimate_edge_hints): Likewise.
7257         * ipa-prop.c (ipa_auto_call_arg_values::~ipa_auto_call_arg_values):
7258         New destructor.
7260 2020-10-02  Joe Ramsay  <joe.ramsay@arm.com>
7262         * config/arm/arm_mve.h (__arm_vmaxnmavq): Remove coercion of scalar
7263         argument.
7264         (__arm_vmaxnmvq): Likewise.
7265         (__arm_vminnmavq): Likewise.
7266         (__arm_vminnmvq): Likewise.
7267         (__arm_vmaxnmavq_p): Likewise.
7268         (__arm_vmaxnmvq_p): Likewise (and delete duplicate definition).
7269         (__arm_vminnmavq_p): Likewise.
7270         (__arm_vminnmvq_p): Likewise.
7271         (__arm_vmaxavq): Likewise.
7272         (__arm_vmaxavq_p): Likewise.
7273         (__arm_vmaxvq): Likewise.
7274         (__arm_vmaxvq_p): Likewise.
7275         (__arm_vminavq): Likewise.
7276         (__arm_vminavq_p): Likewise.
7277         (__arm_vminvq): Likewise.
7278         (__arm_vminvq_p): Likewise.
7280 2020-10-02  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7282         * config/aarch64/aarch64.c (neoversev1_tunings): Define.
7283         * config/aarch64/aarch64-cores.def (zeus): Use it.
7284         (neoverse-v1): Likewise.
7286 2020-10-02  Jan Hubicka  <hubicka@ucw.cz>
7288         * attr-fnspec.h: Update documentation.
7289         (attr_fnsec::return_desc_size): Set to 2
7290         (attr_fnsec::arg_desc_size): Set to 2
7291         * builtin-attrs.def (STR1): Update fnspec.
7292         * internal-fn.def (UBSAN_NULL): Update fnspec.
7293         (UBSAN_VPTR): Update fnspec.
7294         (UBSAN_PTR): Update fnspec.
7295         (ASAN_CHECK): Update fnspec.
7296         (GOACC_DIM_SIZE): Remove fnspec.
7297         (GOACC_DIM_POS): Remove fnspec.
7298         * tree-ssa-alias.c (attr_fnspec::verify): Update verification.
7300 2020-10-02  Jan Hubicka  <jh@suse.cz>
7302         * attr-fnspec.h: New file.
7303         * calls.c (decl_return_flags): Use attr_fnspec.
7304         * gimple.c (gimple_call_arg_flags): Use attr_fnspec.
7305         (gimple_call_return_flags): Use attr_fnspec.
7306         * tree-into-ssa.c (pass_build_ssa::execute): Use attr_fnspec.
7307         * tree-ssa-alias.c (attr_fnspec::verify): New member fuction.
7309 2020-10-02  Jan Hubicka  <jh@suse.cz>
7311         * tree-ssa-alias.c (ao_ref_init_from_ptr_and_range): Break out from ...
7312         (ao_ref_init_from_ptr_and_size): ... here.
7314 2020-10-02  Jan Hubicka  <hubicka@ucw.cz>
7316         * data-streamer-in.c (streamer_read_poly_int64): New function.
7317         * data-streamer-out.c (streamer_write_poly_int64): New function.
7318         * data-streamer.h (streamer_write_poly_int64): Declare.
7319         (streamer_read_poly_int64): Declare.
7321 2020-10-02  Richard Sandiford  <richard.sandiford@arm.com>
7323         * config/aarch64/aarch64-protos.h (aarch64_sve_pred_dominates_p):
7324         Delete.
7325         * config/aarch64/aarch64.c (aarch64_sve_pred_dominates_p): Likewise.
7326         * config/aarch64/aarch64-sve.md: Add banner comment describing
7327         how merging predicated FP operations are represented.
7328         (*cond_<SVE_COND_FP_UNARY:optab><mode>_2): Split into...
7329         (*cond_<SVE_COND_FP_UNARY:optab><mode>_2_relaxed): ...this and...
7330         (*cond_<SVE_COND_FP_UNARY:optab><mode>_2_strict): ...this.
7331         (*cond_<SVE_COND_FP_UNARY:optab><mode>_any): Split into...
7332         (*cond_<SVE_COND_FP_UNARY:optab><mode>_any_relaxed): ...this and...
7333         (*cond_<SVE_COND_FP_UNARY:optab><mode>_any_strict): ...this.
7334         (*cond_<SVE_COND_FP_BINARY_INT:optab><mode>_2): Split into...
7335         (*cond_<SVE_COND_FP_BINARY_INT:optab><mode>_2_relaxed): ...this and...
7336         (*cond_<SVE_COND_FP_BINARY_INT:optab><mode>_2_strict): ...this.
7337         (*cond_<SVE_COND_FP_BINARY_INT:optab><mode>_any): Split into...
7338         (*cond_<SVE_COND_FP_BINARY_INT:optab><mode>_any_relaxed): ...this
7339         and...
7340         (*cond_<SVE_COND_FP_BINARY_INT:optab><mode>_any_strict): ...this.
7341         (*cond_<SVE_COND_FP_BINARY:optab><mode>_2): Split into...
7342         (*cond_<SVE_COND_FP_BINARY:optab><mode>_2_relaxed): ...this and...
7343         (*cond_<SVE_COND_FP_BINARY:optab><mode>_2_strict): ...this.
7344         (*cond_<SVE_COND_FP_BINARY_I1:optab><mode>_2_const): Split into...
7345         (*cond_<SVE_COND_FP_BINARY_I1:optab><mode>_2_const_relaxed): ...this
7346         and...
7347         (*cond_<SVE_COND_FP_BINARY_I1:optab><mode>_2_const_strict): ...this.
7348         (*cond_<SVE_COND_FP_BINARY:optab><mode>_3): Split into...
7349         (*cond_<SVE_COND_FP_BINARY:optab><mode>_3_relaxed): ...this and...
7350         (*cond_<SVE_COND_FP_BINARY:optab><mode>_3_strict): ...this.
7351         (*cond_<SVE_COND_FP_BINARY:optab><mode>_any): Split into...
7352         (*cond_<SVE_COND_FP_BINARY:optab><mode>_any_relaxed): ...this and...
7353         (*cond_<SVE_COND_FP_BINARY:optab><mode>_any_strict): ...this.
7354         (*cond_<SVE_COND_FP_BINARY_I1:optab><mode>_any_const): Split into...
7355         (*cond_<SVE_COND_FP_BINARY_I1:optab><mode>_any_const_relaxed): ...this
7356         and...
7357         (*cond_<SVE_COND_FP_BINARY_I1:optab><mode>_any_const_strict): ...this.
7358         (*cond_add<mode>_2_const): Split into...
7359         (*cond_add<mode>_2_const_relaxed): ...this and...
7360         (*cond_add<mode>_2_const_strict): ...this.
7361         (*cond_add<mode>_any_const): Split into...
7362         (*cond_add<mode>_any_const_relaxed): ...this and...
7363         (*cond_add<mode>_any_const_strict): ...this.
7364         (*cond_<SVE_COND_FCADD:optab><mode>_2): Split into...
7365         (*cond_<SVE_COND_FCADD:optab><mode>_2_relaxed): ...this and...
7366         (*cond_<SVE_COND_FCADD:optab><mode>_2_strict): ...this.
7367         (*cond_<SVE_COND_FCADD:optab><mode>_any): Split into...
7368         (*cond_<SVE_COND_FCADD:optab><mode>_any_relaxed): ...this and...
7369         (*cond_<SVE_COND_FCADD:optab><mode>_any_strict): ...this.
7370         (*cond_sub<mode>_3_const): Split into...
7371         (*cond_sub<mode>_3_const_relaxed): ...this and...
7372         (*cond_sub<mode>_3_const_strict): ...this.
7373         (*aarch64_pred_abd<mode>): Split into...
7374         (*aarch64_pred_abd<mode>_relaxed): ...this and...
7375         (*aarch64_pred_abd<mode>_strict): ...this.
7376         (*aarch64_cond_abd<mode>_2): Split into...
7377         (*aarch64_cond_abd<mode>_2_relaxed): ...this and...
7378         (*aarch64_cond_abd<mode>_2_strict): ...this.
7379         (*aarch64_cond_abd<mode>_3): Split into...
7380         (*aarch64_cond_abd<mode>_3_relaxed): ...this and...
7381         (*aarch64_cond_abd<mode>_3_strict): ...this.
7382         (*aarch64_cond_abd<mode>_any): Split into...
7383         (*aarch64_cond_abd<mode>_any_relaxed): ...this and...
7384         (*aarch64_cond_abd<mode>_any_strict): ...this.
7385         (*cond_<SVE_COND_FP_TERNARY:optab><mode>_2): Split into...
7386         (*cond_<SVE_COND_FP_TERNARY:optab><mode>_2_relaxed): ...this and...
7387         (*cond_<SVE_COND_FP_TERNARY:optab><mode>_2_strict): ...this.
7388         (*cond_<SVE_COND_FP_TERNARY:optab><mode>_4): Split into...
7389         (*cond_<SVE_COND_FP_TERNARY:optab><mode>_4_relaxed): ...this and...
7390         (*cond_<SVE_COND_FP_TERNARY:optab><mode>_4_strict): ...this.
7391         (*cond_<SVE_COND_FP_TERNARY:optab><mode>_any): Split into...
7392         (*cond_<SVE_COND_FP_TERNARY:optab><mode>_any_relaxed): ...this and...
7393         (*cond_<SVE_COND_FP_TERNARY:optab><mode>_any_strict): ...this.
7394         (*cond_<SVE_COND_FCMLA:optab><mode>_4): Split into...
7395         (*cond_<SVE_COND_FCMLA:optab><mode>_4_relaxed): ...this and...
7396         (*cond_<SVE_COND_FCMLA:optab><mode>_4_strict): ...this.
7397         (*cond_<SVE_COND_FCMLA:optab><mode>_any): Split into...
7398         (*cond_<SVE_COND_FCMLA:optab><mode>_any_relaxed): ...this and...
7399         (*cond_<SVE_COND_FCMLA:optab><mode>_any_strict): ...this.
7400         (*aarch64_pred_fac<cmp_op><mode>): Split into...
7401         (*aarch64_pred_fac<cmp_op><mode>_relaxed): ...this and...
7402         (*aarch64_pred_fac<cmp_op><mode>_strict): ...this.
7403         (*cond_<optab>_nontrunc<SVE_FULL_F:mode><SVE_FULL_HSDI:mode>): Split
7404         into...
7405         (*cond_<optab>_nontrunc<SVE_FULL_F:mode><SVE_FULL_HSDI:mode>_relaxed):
7406         ...this and...
7407         (*cond_<optab>_nontrunc<SVE_FULL_F:mode><SVE_FULL_HSDI:mode>_strict):
7408         ...this.
7409         (*cond_<optab>_nonextend<SVE_FULL_HSDI:mode><SVE_FULL_F:mode>): Split
7410         into...
7411         (*cond_<optab>_nonextend<SVE_FULL_HSDI:mode><SVE_FULL_F:mode>_relaxed):
7412         ...this and...
7413         (*cond_<optab>_nonextend<SVE_FULL_HSDI:mode><SVE_FULL_F:mode>_strict):
7414         ...this.
7415         * config/aarch64/aarch64-sve2.md
7416         (*cond_<SVE2_COND_FP_UNARY_LONG:optab><mode>): Split into...
7417         (*cond_<SVE2_COND_FP_UNARY_LONG:optab><mode>_relaxed): ...this and...
7418         (*cond_<SVE2_COND_FP_UNARY_LONG:optab><mode>_strict): ...this.
7419         (*cond_<SVE2_COND_FP_UNARY_NARROWB:optab><mode>_any): Split into...
7420         (*cond_<SVE2_COND_FP_UNARY_NARROWB:optab><mode>_any_relaxed): ...this
7421         and...
7422         (*cond_<SVE2_COND_FP_UNARY_NARROWB:optab><mode>_any_strict): ...this.
7423         (*cond_<SVE2_COND_INT_UNARY_FP:optab><mode>): Split into...
7424         (*cond_<SVE2_COND_INT_UNARY_FP:optab><mode>_relaxed): ...this and...
7425         (*cond_<SVE2_COND_INT_UNARY_FP:optab><mode>_strict): ...this.
7427 2020-10-02  Richard Sandiford  <richard.sandiford@arm.com>
7429         * config/arm/neon.md (*sub<VDQ:mode>3_neon): Use the new mode macros
7430         for the insn condition.
7431         (sub<VH:mode>3, *mul<VDQW:mode>3_neon): Likewise.
7432         (mul<VDQW:mode>3add<VDQW:mode>_neon): Likewise.
7433         (mul<VH:mode>3add<VH:mode>_neon): Likewise.
7434         (mul<VDQW:mode>3neg<VDQW:mode>add<VDQW:mode>_neon): Likewise.
7435         (fma<VCVTF:mode>4, fma<VH:mode>4, *fmsub<VCVTF:mode>4): Likewise.
7436         (quad_halves_<code>v4sf, reduc_plus_scal_<VD:mode>): Likewise.
7437         (reduc_plus_scal_<VQ:mode>, reduc_smin_scal_<VD:mode>): Likewise.
7438         (reduc_smin_scal_<VQ:mode>, reduc_smax_scal_<VD:mode>): Likewise.
7439         (reduc_smax_scal_<VQ:mode>, mul<VH:mode>3): Likewise.
7440         (neon_vabd<VF:mode>_2, neon_vabd<VF:mode>_3): Likewise.
7441         (fma<VH:mode>4_intrinsic): Delete.
7442         (neon_vadd<VCVTF:mode>): Use the new mode macros to decide which
7443         form of instruction to generate.
7444         (neon_vmla<VDQW:mode>, neon_vmls<VDQW:mode>): Likewise.
7445         (neon_vsub<VCVTF:mode>): Likewise.
7446         (neon_vfma<VH:mode>): Generate the main fma<mode>4 form instead
7447         of using fma<mode>4_intrinsic.
7449 2020-10-02  Martin Liska  <mliska@suse.cz>
7451         PR gcov-profile/97193
7452         * coverage.c (coverage_init): GCDA note files should not be
7453         mangled and should end in output directory.
7455 2020-10-02  Jason Merril  <jason@redhat.com>
7457         * gimple.h (gimple_call_operator_delete_p): Rename from
7458         gimple_call_replaceable_operator_delete_p.
7459         * gimple.c (gimple_call_operator_delete_p): Likewise.
7460         * tree.h (DECL_IS_REPLACEABLE_OPERATOR_DELETE_P): Remove.
7461         * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Adjust.
7462         (propagate_necessity): Likewise.
7463         (eliminate_unnecessary_stmts): Likewise.
7464         * tree-ssa-structalias.c (find_func_aliases_for_call): Likewise.
7466 2020-10-02  Richard Biener  <rguenther@suse.de>
7468         * gimple.h (GF_CALL_FROM_NEW_OR_DELETE): New call flag.
7469         (gimple_call_set_from_new_or_delete): New.
7470         (gimple_call_from_new_or_delete): Likewise.
7471         * gimple.c (gimple_build_call_from_tree): Set
7472         GF_CALL_FROM_NEW_OR_DELETE appropriately.
7473         * ipa-icf-gimple.c (func_checker::compare_gimple_call):
7474         Compare gimple_call_from_new_or_delete.
7475         * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Make
7476         sure to only consider new/delete calls from new or delete
7477         expressions.
7478         (propagate_necessity): Likewise.
7479         (eliminate_unnecessary_stmts): Likewise.
7480         * tree-ssa-structalias.c (find_func_aliases_for_call):
7481         Likewise.
7483 2020-10-02  Jason Merril  <jason@redhat.com>
7485         * tree.h (CALL_FROM_NEW_OR_DELETE_P): Move from cp-tree.h.
7486         * tree-core.h: Document new usage of protected_flag.
7488 2020-10-02  Aldy Hernandez  <aldyh@redhat.com>
7490         * value-range.h (irange::fits_p): New.
7492 2020-10-01  Alan Modra  <amodra@gmail.com>
7494         * config/rs6000/rs6000.c (rs6000_legitimize_address): Use
7495         gen_int_mode for high part of address constant.
7497 2020-10-01  Alan Modra  <amodra@gmail.com>
7499         * config/rs6000/rs6000.c (rs6000_linux64_override_options):
7500         Formatting.  Correct setting of TARGET_NO_FP_IN_TOC and
7501         TARGET_NO_SUM_IN_TOC.
7503 2020-10-01  Alan Modra  <amodra@gmail.com>
7505         * config/rs6000/freebsd64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
7506         rs6000_linux64_override_options.
7507         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Break
7508         out to..
7509         * config/rs6000/rs6000.c (rs6000_linux64_override_options): ..this,
7510         new function.  Tweak non-biarch test and clearing of
7511         profile_kernel to work with freebsd64.h.
7513 2020-10-01  Martin Liska  <mliska@suse.cz>
7515         * config/rs6000/rs6000-call.c: Include value-range.h.
7516         * config/rs6000/rs6000.c: Likewise.
7518 2020-10-01  Tom de Vries  <tdevries@suse.de>
7520         PR target/80845
7521         * config/nvptx/nvptx.md (define_insn "truncsi<QHIM>2"): Emit mov.u32
7522         instead of cvt.u32.u32.
7524 2020-10-01  Richard Sandiford  <richard.sandiford@arm.com>
7526         PR target/96528
7527         PR target/97288
7528         * config/arm/arm-protos.h (arm_expand_vector_compare): Declare.
7529         (arm_expand_vcond): Likewise.
7530         * config/arm/arm.c (arm_expand_vector_compare): New function.
7531         (arm_expand_vcond): Likewise.
7532         * config/arm/neon.md (vec_cmp<VDQW:mode><v_cmp_result>): New pattern.
7533         (vec_cmpu<VDQW:mode><VDQW:mode>): Likewise.
7534         (vcond<VDQW:mode><VDQW:mode>): Require operand 5 to be a register
7535         or zero.  Use arm_expand_vcond.
7536         (vcond<V_cvtto><V32:mode>): New pattern.
7537         (vcondu<VDQIW:mode><VDQIW:mode>): Generalize to...
7538         (vcondu<VDQW:mode><v_cmp_result): ...this.  Require operand 5
7539         to be a register or zero.  Use arm_expand_vcond.
7540         (vcond_mask_<VDQW:mode><v_cmp_result>): New pattern.
7541         (neon_vc<cmp_op><mode>, neon_vc<cmp_op><mode>_insn): Add "@" marker.
7542         (neon_vbsl<mode>): Likewise.
7543         (neon_vc<cmp_op>u<mode>): Reexpress as...
7544         (@neon_vc<code><mode>): ...this.
7546 2020-10-01  Michael Davidsaver  <mdavidsaver@gmail.com>
7548         * config/i386/t-rtems: Change from mtune to march when building
7549         multilibs.  The mtune argument tunes or optimizes for a specific
7550         CPU model but does not ensure the generated code is appropriate
7551         for the CPU model. Prior to this patch, i386 compatible code
7552         was always generated but tuned for later models.
7554 2020-10-01  Aldy Hernandez  <aldyh@redhat.com>
7556         * builtins.c (compute_objsize): Replace vr_values with range_query.
7557         (get_range): Same.
7558         (gimple_call_alloc_size): Same.
7559         * builtins.h (class vr_values):  Remove.
7560         (gimple_call_alloc_size): Replace vr_values with range_query.
7561         * gimple-ssa-sprintf.c (get_int_range): Same.
7562         (struct directive): Pass gimple context to fmtfunc callback.
7563         (directive::set_width): Replace inline with out-of-line version.
7564         (directive::set_precision): Same.
7565         (format_none): New gimple argument.
7566         (format_percent): New gimple argument.
7567         (format_integer): New gimple argument.
7568         (format_floating): New gimple argument.
7569         (get_string_length): Use range_query API.
7570         (format_character): New gimple argument.
7571         (format_string): New gimple argument.
7572         (format_plain): New gimple argument.
7573         (format_directive): New gimple argument.
7574         (parse_directive): Replace vr_values with range_query.
7575         (compute_format_length): Same.
7576         (handle_printf_call): Same.  Adjust for range_query API.
7577         * tree-ssa-strlen.c (get_range): Same.
7578         (compare_nonzero_chars): Same.
7579         (get_addr_stridx) Replace vr_values with range_query.
7580         (get_stridx): Same.
7581         (dump_strlen_info): Same.
7582         (get_range_strlen_dynamic): Adjust for range_query API.
7583         (set_strlen_range): Same
7584         (maybe_warn_overflow): Replace vr_values with range_query.
7585         (handle_builtin_strcpy): Same.
7586         (maybe_diag_stxncpy_trunc): Add FIXME comment.
7587         (handle_builtin_memcpy): Replace vr_values with range_query.
7588         (handle_builtin_memset): Same.
7589         (get_len_or_size): Same.
7590         (strxcmp_eqz_result): Same.
7591         (handle_builtin_string_cmp): Same.
7592         (count_nonzero_bytes_addr): Same, plus adjust for range_query API.
7593         (count_nonzero_bytes): Replace vr_values with range_query.
7594         (handle_store): Same.
7595         (strlen_check_and_optimize_call): Same.
7596         (handle_integral_assign): Same.
7597         (check_and_optimize_stmt): Same.
7598         * tree-ssa-strlen.h (class vr_values): Remove.
7599         (get_range): Replace vr_values with range_query.
7600         (get_range_strlen_dynamic): Same.
7601         (handle_printf_call): Same.
7603 2020-10-01  Aldy Hernandez  <aldyh@redhat.com>
7605         * gimple-loop-versioning.cc (lv_dom_walker::before_dom_children):
7606         Pass m_range_analyzer instead of get_vr_values.
7607         (loop_versioning::name_prop::get_value): Rename to...
7608         (loop_versioning::name_prop::value_of_expr): ...this.
7609         * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::evrp_range_analyzer):
7610         Adjust for evrp_range_analyzer
7611         inheriting from vr_values.
7612         (evrp_range_analyzer::try_find_new_range): Same.
7613         (evrp_range_analyzer::record_ranges_from_incoming_edge): Same.
7614         (evrp_range_analyzer::record_ranges_from_phis): Same.
7615         (evrp_range_analyzer::record_ranges_from_stmt): Same.
7616         (evrp_range_analyzer::push_value_range): Same.
7617         (evrp_range_analyzer::pop_value_range): Same.
7618         * gimple-ssa-evrp-analyze.h (class evrp_range_analyzer): Inherit from
7619         vr_values.  Adjust accordingly.
7620         * gimple-ssa-evrp.c: Adjust for evrp_range_analyzer inheriting from
7621         vr_values.
7622         (evrp_folder::value_of_evrp): Rename from get_value.
7623         * tree-ssa-ccp.c (class ccp_folder): Rename get_value to
7624         value_of_expr.
7625         (ccp_folder::get_value): Rename to...
7626         (ccp_folder::value_of_expr): ...this.
7627         * tree-ssa-copy.c (class copy_folder): Rename get_value to
7628         value_of_expr.
7629         (copy_folder::get_value): Rename to...
7630         (copy_folder::value_of_expr): ...this.
7631         * tree-ssa-dom.c (dom_opt_dom_walker::after_dom_children): Adjust
7632         for evrp_range_analyzer inheriting from vr_values.
7633         (dom_opt_dom_walker::optimize_stmt): Same.
7634         * tree-ssa-propagate.c (substitute_and_fold_engine::replace_uses_in):
7635         Call value_of_* instead of get_value.
7636         (substitute_and_fold_engine::replace_phi_args_in): Same.
7637         (substitute_and_fold_engine::propagate_into_phi_args): Same.
7638         (substitute_and_fold_dom_walker::before_dom_children): Same.
7639         * tree-ssa-propagate.h: Include value-query.h.
7640         (class substitute_and_fold_engine): Inherit from value_query.
7641         * tree-ssa-strlen.c (strlen_dom_walker::before_dom_children):
7642         Adjust for evrp_range_analyzer inheriting from vr_values.
7643         * tree-ssa-threadedge.c (record_temporary_equivalences_from_phis):
7644         Same.
7645         * tree-vrp.c (class vrp_folder): Same.
7646         (vrp_folder::get_value): Rename to value_of_expr.
7647         * vr-values.c (vr_values::get_lattice_entry): Adjust for
7648         vr_values inheriting from range_query.
7649         (vr_values::range_of_expr): New.
7650         (vr_values::value_of_expr): New.
7651         (vr_values::value_on_edge): New.
7652         (vr_values::value_of_stmt): New.
7653         (simplify_using_ranges::op_with_boolean_value_range_p): Call
7654         get_value_range through query.
7655         (check_for_binary_op_overflow): Rename store to query.
7656         (vr_values::vr_values): Remove vrp_value_range_pool.
7657         (vr_values::~vr_values): Same.
7658         (simplify_using_ranges::get_vr_for_comparison): Call get_value_range
7659         through query.
7660         (simplify_using_ranges::compare_names): Same.
7661         (simplify_using_ranges::vrp_evaluate_conditional): Same.
7662         (simplify_using_ranges::vrp_visit_cond_stmt): Same.
7663         (simplify_using_ranges::simplify_abs_using_ranges): Same.
7664         (simplify_using_ranges::simplify_cond_using_ranges_1): Same.
7665         (simplify_cond_using_ranges_2): Same.
7666         (simplify_using_ranges::simplify_switch_using_ranges): Same.
7667         (simplify_using_ranges::two_valued_val_range_p): Same.
7668         (simplify_using_ranges::simplify_using_ranges): Rename store to query.
7669         (simplify_using_ranges::simplify): Assert that we have a query.
7670         * vr-values.h (class range_query): Remove.
7671         (class simplify_using_ranges): Remove inheritance of range_query.
7672         (class vr_values): Add virtuals for range_of_expr, value_of_expr,
7673         value_on_edge, value_of_stmt, and get_value_range.
7674         Call range_query allocator instead of using vrp_value_range_pool.
7675         Remove vrp_value_range_pool.
7676         (simplify_using_ranges::get_value_range): Remove.
7678 2020-10-01  Richard Biener  <rguenther@suse.de>
7680         PR tree-optimization/97236
7681         * tree-vect-stmts.c (get_group_load_store_type): Keep
7682         VMAT_ELEMENTWISE for single-element vectors.
7684 2020-10-01  Jan Hubicka  <jh@suse.cz>
7686         * ipa-modref.c (compute_parm_map): Be ready for callee_pi to be NULL.
7688 2020-10-01  Jan Hubicka  <jh@suse.cz>
7690         PR ipa/97244
7691         * ipa-fnsummary.c (pass_free_fnsummary::execute): Free
7692         also indirect inlining datastructure.
7693         * ipa-modref.c (pass_ipa_modref::execute): Do not free them here.
7694         * ipa-prop.c (ipa_free_all_node_params): Do not crash when info does
7695         not exist.
7696         (ipa_unregister_cgraph_hooks): Likewise.
7698 2020-10-01  Jan Hubicka  <jh@suse.cz>
7700         * internal-fn.c (DEF_INTERNAL_FN): Fix handling of fnspec
7702 2020-10-01  Aldy Hernandez  <aldyh@redhat.com>
7704         * Makefile.in: Add value-query.o.
7705         * value-query.cc: New file.
7706         * value-query.h: New file.
7708 2020-10-01  Alex Coplan  <alex.coplan@arm.com>
7710         * config/arm/arm-cpus.in: Fix ordering, move Neoverse N2 down.
7711         * config/arm/arm-tables.opt: Regenerate.
7712         * config/arm/arm-tune.md: Regenerate.
7714 2020-10-01  Jakub Jelinek  <jakub@redhat.com>
7716         * config/s390/s390.c (s390_atomic_assign_expand_fenv): Use
7717         TARGET_EXPR instead of MODIFY_EXPR for the first assignments to
7718         fenv_var and old_fpc.  Formatting fixes.
7720 2020-10-01  Richard Biener  <rguenther@suse.de>
7722         * tree-vect-patterns.c (vect_recog_bool_pattern): Also handle
7723         VIEW_CONVERT_EXPR.
7725 2020-10-01  Florian Weimer  <fweimer@redhat.com>
7727         PR target/97250
7728         * config/i386/i386.h (PTA_NO_TUNE, PTA_X86_64_BASELINE)
7729         (PTA_X86_64_V2, PTA_X86_64_V3, PTA_X86_64_V4): New.
7730         * common/config/i386/i386-common.c (processor_alias_table):
7731         Add "x86-64-v2", "x86-64-v3", "x86-64-v4".
7732         * config/i386/i386-options.c (ix86_option_override_internal):
7733         Handle new PTA_NO_TUNE processor table entries.
7734         * doc/invoke.texi (x86 Options): Document new -march values.
7736 2020-10-01  Alan Modra  <amodra@gmail.com>
7738         * config/rs6000/ppc-asm.h: Support __PCREL__ code.
7740 2020-10-01  Alan Modra  <amodra@gmail.com>
7742         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Don't
7743         set -mcmodel=small for -mno-minimal-toc when pcrel.
7745 2020-09-30  Martin Sebor  <msebor@redhat.com>
7747         PR middle-end/97189
7748         * attribs.c (attr_access::array_as_string): Avoid assuming a VLA
7749         access specification string contains a closing bracket.
7751 2020-09-30  Martin Sebor  <msebor@redhat.com>
7753         PR c/97206
7754         * attribs.c (attr_access::array_as_string): Avoid modifying a shared
7755         type in place and use build_type_attribute_qual_variant instead.
7757 2020-09-30  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>
7759         * config/arm/arm-cpus.in: Add Cortex-A78 and Cortex-A78AE cores.
7760         * config/arm/arm-tables.opt: Regenerate.
7761         * config/arm/arm-tune.md: Regenerate.
7762         * doc/invoke.texi: Update docs.
7764 2020-09-30  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>
7766         * config/aarch64/aarch64-cores.def: Add Cortex-A78 and Cortex-A78AE cores.
7767         * config/aarch64/aarch64-tune.md: Regenerate.
7768         * doc/invoke.texi: Add -mtune=cortex-a78 and -mtune=cortex-a78ae.
7770 2020-09-30  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
7772         PR target/96795
7773         * config/arm/arm_mve.h (__ARM_mve_coerce2): Define.
7774         (__arm_vaddq): Correct the scalar argument.
7775         (__arm_vaddq_m): Likewise.
7776         (__arm_vaddq_x): Likewise.
7777         (__arm_vcmpeqq_m): Likewise.
7778         (__arm_vcmpeqq): Likewise.
7779         (__arm_vcmpgeq_m): Likewise.
7780         (__arm_vcmpgeq): Likewise.
7781         (__arm_vcmpgtq_m): Likewise.
7782         (__arm_vcmpgtq): Likewise.
7783         (__arm_vcmpleq_m): Likewise.
7784         (__arm_vcmpleq): Likewise.
7785         (__arm_vcmpltq_m): Likewise.
7786         (__arm_vcmpltq): Likewise.
7787         (__arm_vcmpneq_m): Likewise.
7788         (__arm_vcmpneq): Likewise.
7789         (__arm_vfmaq_m): Likewise.
7790         (__arm_vfmaq): Likewise.
7791         (__arm_vfmasq_m): Likewise.
7792         (__arm_vfmasq): Likewise.
7793         (__arm_vmaxnmavq): Likewise.
7794         (__arm_vmaxnmavq_p): Likewise.
7795         (__arm_vmaxnmvq): Likewise.
7796         (__arm_vmaxnmvq_p): Likewise.
7797         (__arm_vminnmavq): Likewise.
7798         (__arm_vminnmavq_p): Likewise.
7799         (__arm_vminnmvq): Likewise.
7800         (__arm_vminnmvq_p): Likewise.
7801         (__arm_vmulq_m): Likewise.
7802         (__arm_vmulq): Likewise.
7803         (__arm_vmulq_x): Likewise.
7804         (__arm_vsetq_lane): Likewise.
7805         (__arm_vsubq_m): Likewise.
7806         (__arm_vsubq): Likewise.
7807         (__arm_vsubq_x): Likewise.
7809 2020-09-30  Joel Hutton  <joel.hutton@arm.com>
7811         PR target/96837
7812         * tree-vect-slp.c (vect_analyze_slp): Do not call
7813         vect_attempt_slp_rearrange_stmts for vector constructors.
7815 2020-09-30  Tamar Christina  <tamar.christina@arm.com>
7817         * tree-vectorizer.h (SLP_TREE_REF_COUNT): New.
7818         * tree-vect-slp.c (_slp_tree::_slp_tree, _slp_tree::~_slp_tree,
7819         vect_free_slp_tree, vect_build_slp_tree, vect_print_slp_tree,
7820         slp_copy_subtree, vect_attempt_slp_rearrange_stmts): Use it.
7822 2020-09-30  Tobias Burnus  <tobias@codesourcery.com>
7824         * omp-offload.c (omp_discover_implicit_declare_target): Also
7825         handled nested functions.
7827 2020-09-30  Tobias Burnus  <tobias@codesourcery.com>
7828             Tom de Vries  <tdevries@suse.de>
7830         * builtins.c (expand_builtin_cexpi, fold_builtin_sincos): Update
7831         targetm.libc_has_function call.
7832         * builtins.def (DEF_C94_BUILTIN, DEF_C99_BUILTIN, DEF_C11_BUILTIN):
7833         (DEF_C2X_BUILTIN, DEF_C99_COMPL_BUILTIN, DEF_C99_C90RES_BUILTIN):
7834         Same.
7835         * config/darwin-protos.h (darwin_libc_has_function): Update prototype.
7836         * config/darwin.c (darwin_libc_has_function): Add arg.
7837         * config/linux-protos.h (linux_libc_has_function): Update prototype.
7838         * config/linux.c (linux_libc_has_function): Add arg.
7839         * config/i386/i386.c (ix86_libc_has_function): Update
7840         targetm.libc_has_function call.
7841         * config/nvptx/nvptx.c (nvptx_libc_has_function): New function.
7842         (TARGET_LIBC_HAS_FUNCTION): Redefine to nvptx_libc_has_function.
7843         * convert.c (convert_to_integer_1): Update targetm.libc_has_function
7844         call.
7845         * match.pd: Same.
7846         * target.def (libc_has_function): Add arg.
7847         * doc/tm.texi: Regenerate.
7848         * targhooks.c (default_libc_has_function, gnu_libc_has_function)
7849         (no_c99_libc_has_function): Add arg.
7850         * targhooks.h (default_libc_has_function, no_c99_libc_has_function)
7851         (gnu_libc_has_function): Update prototype.
7852         * tree-ssa-math-opts.c (pass_cse_sincos::execute): Update
7853         targetm.libc_has_function call.
7855 2020-09-30  H.J. Lu  <hjl.tools@gmail.com>
7857         PR target/97184
7858         * config/i386/i386.md (UNSPECV_MOVDIRI): Renamed to ...
7859         (UNSPEC_MOVDIRI): This.
7860         (UNSPECV_MOVDIR64B): Renamed to ...
7861         (UNSPEC_MOVDIR64B): This.
7862         (movdiri<mode>): Use SET operation.
7863         (@movdir64b_<mode>): Likewise.
7865 2020-09-30  Florian Weimer  <fweimer@redhat.com>
7867         * config/i386/i386-c.c (ix86_target_macros_internal): Define
7868         __LAHF_SAHF__ and __MOVBE__ based on ISA flags.
7870 2020-09-30  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7872         PR target/97150
7873         * config/aarch64/arm_neon.h (vqrshlb_u8): Make second argument
7874         signed.
7875         (vqrshlh_u16): Likewise.
7876         (vqrshls_u32): Likewise.
7877         (vqrshld_u64): Likewise.
7878         (vqshlb_u8): Likewise.
7879         (vqshlh_u16): Likewise.
7880         (vqshls_u32): Likewise.
7881         (vqshld_u64): Likewise.
7882         (vshld_u64): Likewise.
7884 2020-09-30  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7886         PR target/96313
7887         * config/aarch64/aarch64-simd-builtins.def (sqmovun): Use UNOPUS
7888         qualifiers.
7889         * config/aarch64/arm_neon.h (vqmovun_s16): Adjust builtin call.
7890         Remove unnecessary result cast.
7891         (vqmovun_s32): Likewise.
7892         (vqmovun_s64): Likewise.
7893         (vqmovunh_s16): Likewise.  Fix return type.
7894         (vqmovuns_s32): Likewise.
7895         (vqmovund_s64): Likewise.
7897 2020-09-30  Richard Sandiford  <richard.sandiford@arm.com>
7899         * config/aarch64/aarch64.c (aarch64_split_128bit_move_p): Add a
7900         function comment.  Tighten check for FP moves.
7901         * config/aarch64/aarch64.md (*movti_aarch64): Add a w<-Z alternative.
7902         (*movtf_aarch64): Handle r<-Y like r<-r.  Remove unnecessary
7903         earlyclobber.  Change splitter predicate from aarch64_reg_or_imm
7904         to nonmemory_operand.
7906 2020-09-30  Alex Coplan  <alex.coplan@arm.com>
7908         PR target/97251
7909         * config/arm/arm.md (movsf): Relax TARGET_HARD_FLOAT to
7910         TARGET_VFP_BASE.
7911         (movdf): Likewise.
7912         * config/arm/vfp.md (no_literal_pool_df_immediate): Likewise.
7913         (no_literal_pool_sf_immediate): Likewise.
7915 2020-09-30  Alan Modra  <amodra@gmail.com>
7917         * configure.ac (--with-long-double-format): Typo fix.
7918         * configure: Regenerate.
7920 2020-09-30  Alan Modra  <amodra@gmail.com>
7922         * config/rs6000/rs6000.md (@tablejump<mode>_normal): Don't use
7923         non-existent operands[].
7924         (@tablejump<mode>_nospec): Likewise.
7926 2020-09-30  Segher Boessenkool  <segher@kernel.crashing.org>
7928         * config/rs6000/rs6000.md (tablejump): Simplify.
7929         (tablejumpsi): Merge this ...
7930         (tablejumpdi): ... and this ...
7931         (@tablejump<mode>_normal): ... into this.
7932         (tablejumpsi_nospec): Merge this ...
7933         (tablejumpdi_nospec): ... and this ...
7934         (@tablejump<mode>_nospec): ... into this.
7935         (*tablejump<mode>_internal1): Delete, rename to ...
7936         (@tablejump<mode>_insn_normal): ... this.
7937         (*tablejump<mode>_internal1_nospec): Delete, rename to ...
7938         (@tablejump<mode>_insn_nospec): ... this.
7940 2020-09-29  Martin Sebor  <msebor@redhat.com>
7942         PR middle-end/97188
7943         * calls.c (maybe_warn_rdwr_sizes): Simplify warning messages.
7944         Correct handling of VLA argumments.
7946 2020-09-29  Marek Polacek  <polacek@redhat.com>
7948         PR c++/94695
7949         * doc/invoke.texi: Document -Wrange-loop-construct.
7951 2020-09-29  Jim Wilson  <jimw@sifive.com>
7953         PR bootstrap/97183
7954         * configure.ac (gcc_cv_header_zstd_h): Check ZSTD_VERISON_NUMBER.
7955         * configure: Regenerated.
7957 2020-09-29  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>
7959         * config/arm/arm-cpus.in: Add Cortex-X1 core.
7960         * config/arm/arm-tables.opt: Regenerate.
7961         * config/arm/arm-tune.md: Regenerate.
7962         * doc/invoke.texi: Update docs.
7964 2020-09-29  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>
7966         * config/aarch64/aarch64-cores.def: Add Cortex-X1 Arm core.
7967         * config/aarch64/aarch64-tune.md: Regenerate.
7968         * doc/invoke.texi: Add -mtune=cortex-x1 docs.
7970 2020-09-29  H.J. Lu  <hjl.tools@gmail.com>
7972         PR target/97247
7973         * config/i386/enqcmdintrin.h: Replace <enqcmdntrin.h> with
7974         <enqcmdintrin.h>.  Replace _ENQCMDNTRIN_H_INCLUDED with
7975         _ENQCMDINTRIN_H_INCLUDED.
7977 2020-09-29  Richard Biener  <rguenther@suse.de>
7979         PR tree-optimization/97241
7980         * tree-vect-loop.c (vectorizable_reduction): Move finding
7981         the SLP node for the reduction stmt to a better place.
7983 2020-09-29  Richard Biener  <rguenther@suse.de>
7985         * tree-vect-slp.c (vect_analyze_slp): Move SLP reduction
7986         re-arrangement and SLP graph load gathering...
7987         (vect_optimize_slp): ... here.
7988         * tree-vectorizer.h (vec_info::slp_loads): Remove.
7990 2020-09-29  Hongyu Wang  <hongyu.wang@intel.com>
7992         PR target/97231
7993         * config/i386/amxbf16intrin.h: Add FSF copyright notes.
7994         * config/i386/amxint8intrin.h: Ditto.
7995         * config/i386/amxtileintrin.h: Ditto.
7996         * config/i386/avx512vp2intersectintrin.h: Ditto.
7997         * config/i386/avx512vp2intersectvlintrin.h: Ditto.
7998         * config/i386/pconfigintrin.h: Ditto.
7999         * config/i386/tsxldtrkintrin.h: Ditto.
8000         * config/i386/wbnoinvdintrin.h: Ditto.
8002 2020-09-29  Richard Biener  <rguenther@suse.de>
8004         PR tree-optimization/97238
8005         * tree-ssa-reassoc.c (ovce_extract_ops): Fix typo.
8007 2020-09-29  Richard Sandiford  <richard.sandiford@arm.com>
8009         * config/arm/arm.h (ARM_HAVE_NEON_V8QI_ARITH, ARM_HAVE_NEON_V4HI_ARITH)
8010         (ARM_HAVE_NEON_V2SI_ARITH, ARM_HAVE_NEON_V16QI_ARITH): New macros.
8011         (ARM_HAVE_NEON_V8HI_ARITH, ARM_HAVE_NEON_V4SI_ARITH): Likewise.
8012         (ARM_HAVE_NEON_V2DI_ARITH, ARM_HAVE_NEON_V4HF_ARITH): Likewise.
8013         (ARM_HAVE_NEON_V8HF_ARITH, ARM_HAVE_NEON_V2SF_ARITH): Likewise.
8014         (ARM_HAVE_NEON_V4SF_ARITH, ARM_HAVE_V8QI_ARITH, ARM_HAVE_V4HI_ARITH)
8015         (ARM_HAVE_V2SI_ARITH, ARM_HAVE_V16QI_ARITH, ARM_HAVE_V8HI_ARITH)
8016         (ARM_HAVE_V4SI_ARITH, ARM_HAVE_V2DI_ARITH, ARM_HAVE_V4HF_ARITH)
8017         (ARM_HAVE_V2SF_ARITH, ARM_HAVE_V8HF_ARITH, ARM_HAVE_V4SF_ARITH):
8018         Likewise.
8019         * config/arm/iterators.md (VNIM, VNINOTM): Delete.
8020         * config/arm/vec-common.md (add<VNIM:mode>3, addv8hf3)
8021         (add<VNINOTM:mode>3): Replace with...
8022         (add<VDQ:mode>3): ...this new expander.
8023         * config/arm/neon.md (*add<VDQ:mode>3_neon): Use the new
8024         ARM_HAVE_NEON_<MODE>_ARITH macros as the C condition.
8025         (addv8hf3_neon, addv4hf3, add<VFH:mode>3_fp16): Delete in
8026         favor of the above.
8027         (neon_vadd<VH:mode>): Use gen_add<mode>3 instead of
8028         gen_add<mode>3_fp16.
8030 2020-09-29  Kito Cheng  <kito.cheng@sifive.com>
8032         * config/riscv/riscv-c.c (riscv_cpu_cpp_builtins): Define
8033         __riscv_cmodel_medany when PIC mode.
8035 2020-09-29  Alex Coplan  <alex.coplan@arm.com>
8037         * config/aarch64/aarch64-cores.def: Move neoverse-n2 after saphira.
8038         * config/aarch64/aarch64-tune.md: Regenerate.
8040 2020-09-29  Martin Liska  <mliska@suse.cz>
8042         PR tree-optimization/96979
8043         * tree-switch-conversion.c (jump_table_cluster::can_be_handled):
8044         Make a fast bail out.
8045         (bit_test_cluster::can_be_handled): Likewise here.
8046         * tree-switch-conversion.h (get_range): Use wi::to_wide instead
8047         of a folding.
8049 2020-09-29  Martin Liska  <mliska@suse.cz>
8051         Revert:
8052         2020-09-22  Martin Liska  <mliska@suse.cz>
8054         PR tree-optimization/96979
8055         * doc/invoke.texi: Document new param max-switch-clustering-attempts.
8056         * params.opt: Add new parameter.
8057         * tree-switch-conversion.c (jump_table_cluster::find_jump_tables):
8058         Limit number of attempts.
8059         (bit_test_cluster::find_bit_tests): Likewise.
8061 2020-09-28  Aldy Hernandez  <aldyh@redhat.com>
8063         * value-range.h (class irange): Add irange_allocator friend.
8064         (class irange_allocator): New.
8066 2020-09-28  Tobias Burnus  <tobias@codesourcery.com>
8068         PR middle-end/96390
8069         * omp-offload.c (omp_discover_declare_target_tgt_fn_r): Handle
8070         alias nodes.
8072 2020-09-28  Paul A. Clarke  <pc@us.ibm.com>
8074         * config/rs6000/smmintrin.h (_mm_insert_epi8): New.
8075         (_mm_insert_epi32): New.
8076         (_mm_insert_epi64): New.
8078 2020-09-28  liuhongt  <hongtao.liu@intel.com>
8080         * common/config/i386/i386-common.c (OPTION_MASK_ISA2_AMX_TILE_SET,
8081         OPTION_MASK_ISA2_AMX_INT8_SET, OPTION_MASK_ISA2_AMX_BF16_SET,
8082         OPTION_MASK_ISA2_AMX_TILE_UNSET, OPTION_MASK_ISA2_AMX_INT8_UNSET,
8083         OPTION_MASK_ISA2_AMX_BF16_UNSET, OPTION_MASK_ISA2_XSAVE_UNSET):
8084         New marcos.
8085         (ix86_handle_option): Hanlde -mamx-tile, -mamx-int8, -mamx-bf16.
8086         * common/config/i386/i386-cpuinfo.h (processor_types): Add
8087         FEATURE_AMX_TILE, FEATURE_AMX_INT8, FEATURE_AMX_BF16.
8088         * common/config/i386/cpuinfo.h (XSTATE_TILECFG,
8089         XSTATE_TILEDATA, XCR_AMX_ENABLED_MASK): New macro.
8090         (get_available_features): Enable AMX features only if
8091         their states are suoorited by OSXSAVE.
8092         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY
8093         for amx-tile, amx-int8, amx-bf16.
8094         * config.gcc: Add amxtileintrin.h, amxint8intrin.h,
8095         amxbf16intrin.h to extra headers.
8096         * config/i386/amxbf16intrin.h: New file.
8097         * config/i386/amxint8intrin.h: Ditto.
8098         * config/i386/amxtileintrin.h: Ditto.
8099         * config/i386/cpuid.h (bit_AMX_BF16, bit_AMX_TILE, bit_AMX_INT8):
8100         New macro.
8101         * config/i386/i386-c.c (ix86_target_macros_internal): Define
8102         __AMX_TILE__, __AMX_INT8__, AMX_BF16__.
8103         * config/i386/i386-options.c (ix86_target_string): Add
8104         -mamx-tile, -mamx-int8, -mamx-bf16.
8105         (ix86_option_override_internal): Handle AMX-TILE,
8106         AMX-INT8, AMX-BF16.
8107         * config/i386/i386.h (TARGET_AMX_TILE, TARGET_AMX_TILE_P,
8108         TARGET_AMX_INT8, TARGET_AMX_INT8_P, TARGET_AMX_BF16_P,
8109         PTA_AMX_TILE, PTA_AMX_INT8, PTA_AMX_BF16): New macros.
8110         * config/i386/i386.opt: Add -mamx-tile, -mamx-int8, -mamx-bf16.
8111         * config/i386/immintrin.h: Include amxtileintrin.h,
8112         amxint8intrin.h, amxbf16intrin.h.
8113         * doc/invoke.texi: Document -mamx-tile, -mamx-int8, -mamx-bf16.
8114         * doc/extend.texi: Document amx-tile, amx-int8, amx-bf16.
8115         * doc/sourcebuild.texi ((Effective-Target Keywords, Other
8116         hardware attributes): Document amx_int8, amx_tile, amx_bf16.
8118 2020-09-28  Andrea Corallo  <andrea.corallo@arm.com>
8120         * config/aarch64/aarch64-builtins.c
8121         (aarch64_general_expand_builtin): Do not alter value on a
8122         force_reg returned rtx.
8124 2020-09-28  Eric Botcazou  <ebotcazou@adacore.com>
8126         * tree-eh.c (lower_try_finally_dup_block): Revert latest change.
8128 2020-09-27  Jan Hubicka  <jh@suse.cz>
8130         * ipa-modref.c (modref_summary::useful_p): Fix testing of stores.
8132 2020-09-27  Jakub Jelinek  <jakub@redhat.com>
8134         PR middle-end/97073
8135         * optabs.c (expand_binop, expand_absneg_bit, expand_unop,
8136         expand_copysign_bit): Check reg_overlap_mentioned_p between target
8137         and operand(s) and if it returns true, force a pseudo as target.
8139 2020-09-27  Xionghu Luo  <luoxhu@linux.ibm.com>
8141         * gimple-isel.cc (gimple_expand_vec_set_expr): New function.
8142         (gimple_expand_vec_cond_exprs): Rename to ...
8143         (gimple_expand_vec_exprs): ... this and call
8144         gimple_expand_vec_set_expr.
8145         * internal-fn.c (vec_set_direct): New define.
8146         (expand_vec_set_optab_fn): New function.
8147         (direct_vec_set_optab_supported_p): New define.
8148         * internal-fn.def (VEC_SET): New DEF_INTERNAL_OPTAB_FN.
8149         * optabs.c (can_vec_set_var_idx_p): New function.
8150         * optabs.h (can_vec_set_var_idx_p): New declaration.
8152 2020-09-26  Jan Hubicka  <jh@suse.cz>
8154         * ipa-modref.c (analyze_stmt): Do not skip clobbers in early pass.
8155         * ipa-pure-const.c (analyze_stmt): Update comment.
8157 2020-09-26  David Edelsohn  <dje.gcc@gmail.com>
8158             Clement Chigot  <clement.chigot@atos.com>
8160         * collect2.c (visibility_flag): New.
8161         (main): Detect -fvisibility.
8162         (write_c_file_stat): Push and pop default visibility.
8164 2020-09-26  Jan Hubicka  <hubicka@ucw.cz>
8166         * ipa-inline-transform.c: Include ipa-modref-tree.h and ipa-modref.h.
8167         (inline_call): Call ipa_merge_modref_summary_after_inlining.
8168         * ipa-inline.c (ipa_inline): Do not free summaries.
8169         * ipa-modref.c (dump_records): Fix formating.
8170         (merge_call_side_effects): Break out from ...
8171         (analyze_call): ... here; record recursive calls.
8172         (analyze_stmt): Add new parameter RECURSIVE_CALLS.
8173         (analyze_function): Do iterative dataflow on recursive calls.
8174         (compute_parm_map): New function.
8175         (ipa_merge_modref_summary_after_inlining): New function.
8176         (collapse_loads): New function.
8177         (modref_propagate_in_scc): Break out from ...
8178         (pass_ipa_modref::execute): ... here; Do iterative dataflow.
8179         * ipa-modref.h (ipa_merge_modref_summary_after_inlining): Declare.
8181 2020-09-26  Jakub Jelinek  <jakub@redhat.com>
8183         * omp-expand.c (expand_omp_simd): Help vectorizer for the collapse == 1
8184         and non-composite collapse > 1 case with non-constant innermost loop
8185         step by precomputing number of iterations before loop and using an
8186         alternate IV from 0 to number of iterations - 1 with step of 1.
8188 2020-09-26  Jan Hubicka  <jh@suse.cz>
8190         * ipa-fnsummary.c (dump_ipa_call_summary): Dump
8191         points_to_local_or_readonly_memory flag.
8192         (analyze_function_body): Compute points_to_local_or_readonly_memory
8193         flag.
8194         (remap_edge_change_prob): Rename to ...
8195         (remap_edge_params): ... this one; update
8196         points_to_local_or_readonly_memory.
8197         (remap_edge_summaries): Update.
8198         (read_ipa_call_summary): Stream the new flag.
8199         (write_ipa_call_summary): Likewise.
8200         * ipa-predicate.h (struct inline_param_summary): Add
8201         points_to_local_or_readonly_memory.
8202         (inline_param_summary::equal_to): Update.
8203         (inline_param_summary::useless_p): Update.
8205 2020-09-26  Jan Hubicka  <hubicka@ucw.cz>
8207         * ipa-modref-tree.h (modref_ref_node::insert_access): Track if something
8208         changed.
8209         (modref_base_node::insert_ref): Likewise (and add a new optional
8210         argument)
8211         (modref_tree::insert): Likewise.
8212         (modref_tree::merge): Rewrite
8214 2020-09-25  Jan Hubicka  <hubicka@ucw.cz>
8216         * doc/invoke.texi: Add -fno-ipa-modref to flags disabled by
8217         -flive-patching.
8218         * opts.c (control_options_for_live_patching): Disable ipa-modref.
8220 2020-09-25  Jan Hubicka  <hubicka@ucw.cz>
8222         * ipa-modref.c (analyze_stmt): Fix return value for gimple_clobber.
8224 2020-09-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
8226         * config/aarch64/aarch64-option-extensions.def (rng): Add
8227         cpuinfo string.
8229 2020-09-25  Alex Coplan  <alex.coplan@arm.com>
8231         * config/arm/arm-cpus.in (neoverse-v1): Add FP16.
8233 2020-09-25  Martin Liska  <mliska@suse.cz>
8235         PR gcov-profile/64636
8236         * value-prof.c (stream_out_histogram_value): Allow negative
8237         values for HIST_TYPE_IOR.
8239 2020-09-25  Tom de Vries  <tdevries@suse.de>
8241         * config/nvptx/nvptx.c (nvptx_assemble_integer, nvptx_print_operand):
8242         Use gcc_fallthrough ().
8244 2020-09-25  Richard Biener  <rguenther@suse.de>
8246         PR middle-end/96814
8247         * expr.c (store_constructor): Handle VECTOR_BOOLEAN_TYPE_P
8248         CTORs correctly.
8250 2020-09-25  Richard Biener  <rguenther@suse.de>
8252         PR middle-end/97207
8253         * vec.h (auto_vec<T>::operator=(auto_vec<T>&&)): Implement.
8255 2020-09-25  Richard Sandiford  <richard.sandiford@arm.com>
8257         * config/arm/arm-protos.h (arm_mve_mode_and_operands_type_check):
8258         Delete.
8259         * config/arm/arm.c (arm_coproc_mem_operand_wb): Use a scale factor
8260         of 2 rather than 4 for 16-bit modes.
8261         (arm_mve_mode_and_operands_type_check): Delete.
8262         * config/arm/constraints.md (Uj): Allow writeback for Neon,
8263         but continue to disallow it for MVE.
8264         * config/arm/arm.md (*arm32_mov<HFBF:mode>): Add !TARGET_HAVE_MVE.
8265         * config/arm/vfp.md (*mov_load_vfp_hf16, *mov_store_vfp_hf16): Fold
8266         back into...
8267         (*mov<mode>_vfp_<mode>16): ...here but use Uj for the FPR memory
8268         constraints.  Use for base MVE too.
8270 2020-09-25  Richard Biener  <rguenther@suse.de>
8272         PR tree-optimization/97199
8273         * tree-if-conv.c (combine_blocks): Remove edges only
8274         after looking at virtual PHI args.
8276 2020-09-25  Jakub Jelinek  <jakub@redhat.com>
8278         * omp-low.c (scan_omp_1_stmt): Don't call scan_omp_simd for
8279         collapse > 1 loops as simt doesn't support collapsed loops yet.
8280         * omp-expand.c (expand_omp_for_init_counts, expand_omp_for_init_vars):
8281         Small tweaks to function comment.
8282         (expand_omp_simd): Rewritten collapse > 1 support to only attempt
8283         to vectorize the innermost loop and emit set of outer loops around it.
8284         For non-composite simd with collapse > 1 without broken loop don't
8285         even try to compute number of iterations first.  Add support for
8286         non-rectangular simd loops.
8287         (expand_omp_for): Don't sorry_at on non-rectangular simd loops.
8289 2020-09-25  Martin Liska  <mliska@suse.cz>
8291         * cgraph.c (cgraph_edge::debug): New.
8292         * cgraph.h (cgraph_edge::debug): New.
8294 2020-09-25  Martin Liska  <mliska@suse.cz>
8296         * cgraph.c (cgraph_node::dump): Always print space at the end
8297         of a message.  Remove one extra space.
8299 2020-09-24  Alex Coplan  <alex.coplan@arm.com>
8301         * config/arm/arm-cpus.in (neoverse-n2): New.
8302         * config/arm/arm-tables.opt: Regenerate.
8303         * config/arm/arm-tune.md: Regenerate.
8304         * doc/invoke.texi: Document support for Neoverse N2.
8306 2020-09-24  Alex Coplan  <alex.coplan@arm.com>
8308         * config/aarch64/aarch64-cores.def: Add Neoverse N2.
8309         * config/aarch64/aarch64-tune.md: Regenerate.
8310         * doc/invoke.texi: Document AArch64 support for Neoverse N2.
8312 2020-09-24  Richard Biener  <rguenther@suse.de>
8314         * vec.h (auto_vec<T, 0>::auto_vec (auto_vec &&)): New move CTOR.
8315         (auto_vec<T, 0>::operator=(auto_vec &&)): Delete.
8316         * hash-table.h (hash_table::expand): Use std::move when expanding.
8317         * cfgloop.h (get_loop_exit_edges): Return auto_vec<edge>.
8318         * cfgloop.c (get_loop_exit_edges): Adjust.
8319         * cfgloopmanip.c (fix_loop_placement): Likewise.
8320         * ipa-fnsummary.c (analyze_function_body): Likewise.
8321         * ira-build.c (create_loop_tree_nodes): Likewise.
8322         (create_loop_tree_node_allocnos): Likewise.
8323         (loop_with_complex_edge_p): Likewise.
8324         * ira-color.c (ira_loop_edge_freq): Likewise.
8325         * loop-unroll.c (analyze_insns_in_loop): Likewise.
8326         * predict.c (predict_loops): Likewise.
8327         * tree-predcom.c (last_always_executed_block): Likewise.
8328         * tree-ssa-loop-ch.c (ch_base::copy_headers): Likewise.
8329         * tree-ssa-loop-im.c (store_motion_loop): Likewise.
8330         * tree-ssa-loop-ivcanon.c (loop_edge_to_cancel): Likewise.
8331         (canonicalize_loop_induction_variables): Likewise.
8332         * tree-ssa-loop-manip.c (get_loops_exits): Likewise.
8333         * tree-ssa-loop-niter.c (find_loop_niter): Likewise.
8334         (finite_loop_p): Likewise.
8335         (find_loop_niter_by_eval): Likewise.
8336         (estimate_numbers_of_iterations): Likewise.
8337         * tree-ssa-loop-prefetch.c (emit_mfence_after_loop): Likewise.
8338         (may_use_storent_in_loop_p): Likewise.
8340 2020-09-24  Jan Hubicka  <jh@suse.cz>
8342         * doc/invoke.texi: Document -fipa-modref, ipa-modref-max-bases,
8343         ipa-modref-max-refs, ipa-modref-max-accesses, ipa-modref-max-tests.
8344         * ipa-modref-tree.c (test_insert_search_collapse): Update.
8345         (test_merge): Update.
8346         (gt_ggc_mx): New function.
8347         * ipa-modref-tree.h (struct modref_access_node): New structure.
8348         (struct modref_ref_node): Add every_access and accesses array.
8349         (modref_ref_node::modref_ref_node): Update ctor.
8350         (modref_ref_node::search): New member function.
8351         (modref_ref_node::collapse): New member function.
8352         (modref_ref_node::insert_access): New member function.
8353         (modref_base_node::insert_ref): Do not collapse base if ref is 0.
8354         (modref_base_node::collapse): Copllapse also refs.
8355         (modref_tree): Add accesses.
8356         (modref_tree::modref_tree): Initialize max_accesses.
8357         (modref_tree::insert): Add access parameter.
8358         (modref_tree::cleanup): New member function.
8359         (modref_tree::merge): Add parm_map; merge accesses.
8360         (modref_tree::copy_from): New member function.
8361         (modref_tree::create_ggc): Add max_accesses.
8362         * ipa-modref.c (dump_access): New function.
8363         (dump_records): Dump accesses.
8364         (dump_lto_records): Dump accesses.
8365         (get_access): New function.
8366         (record_access): Record access.
8367         (record_access_lto): Record access.
8368         (analyze_call): Compute parm_map.
8369         (analyze_function): Update construction of modref records.
8370         (modref_summaries::duplicate): Likewise; use copy_from.
8371         (write_modref_records): Stream accesses.
8372         (read_modref_records): Sream accesses.
8373         (pass_ipa_modref::execute): Update call of merge.
8374         * params.opt (-param=modref-max-accesses): New.
8375         * tree-ssa-alias.c (alias_stats): Add modref_baseptr_tests.
8376         (dump_alias_stats): Update.
8377         (base_may_alias_with_dereference_p): New function.
8378         (modref_may_conflict): Check accesses.
8379         (ref_maybe_used_by_call_p_1): Update call to modref_may_conflict.
8380         (call_may_clobber_ref_p_1): Update call to modref_may_conflict.
8382 2020-09-24  Richard Sandiford  <richard.sandiford@arm.com>
8384         * config/arm/arm.md (*stack_protect_combined_set_insn): For non-PIC,
8385         load the address of the canary rather than the address of the
8386         constant pool entry that points to it.
8387         (*stack_protect_combined_test_insn): Likewise.
8389 2020-09-24  Richard Biener  <rguenther@suse.de>
8391         PR tree-optimization/97085
8392         * match.pd (mask ? { false,..} : { true, ..} -> ~mask): New.
8394 2020-09-24  Jan Hubicka  <hubicka@ucw.cz>
8396         * ipa-modref-tree.h (modref_base::collapse): Release memory.
8397         (modref_tree::create_ggc): New member function.
8398         (modref_tree::colapse): Release memory.
8399         (modref_tree::~modref_tree): New destructor.
8400         * ipa-modref.c (modref_summaries::create_ggc): New function.
8401         (analyze_function): Use create_ggc.
8402         (modref_summaries::duplicate): Likewise.
8403         (read_modref_records): Likewise.
8404         (modref_read): Likewise.
8406 2020-09-24  Alan Modra  <amodra@gmail.com>
8408         * config/rs6000/rs6000.c (rs6000_rtx_costs): Pass mode to
8409         reg_or_add_cint_operand and reg_or_sub_cint_operand.
8411 2020-09-24  Alan Modra  <amodra@gmail.com>
8413         PR target/93012
8414         * config/rs6000/rs6000.c (num_insns_constant_gpr): Count rldimi
8415         constants correctly.
8417 2020-09-24  Alan Modra  <amodra@gmail.com>
8419         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros):
8420         Conditionally define __PCREL__.
8422 2020-09-24  Alan Modra  <amodra@gmail.com>
8424         PR target/97107
8425         * config/rs6000/rs6000-internal.h (struct rs6000_stack): Improve
8426         calls_p comment.
8427         * config/rs6000/rs6000-logue.c (rs6000_stack_info): Likewise.
8428         (rs6000_expand_split_stack_prologue): Emit the prologue for
8429         functions that make a sibling call.
8431 2020-09-24  David Malcolm  <dmalcolm@redhat.com>
8433         * doc/analyzer.texi (Analyzer Paths): Add note about
8434         -fno-analyzer-feasibility.
8435         * doc/invoke.texi (Static Analyzer Options): Add
8436         -fno-analyzer-feasibility.
8438 2020-09-24  Paul A. Clarke  <pc@us.ibm.com>
8440         * doc/extend.texi: Add 'd' for doubleword variant of
8441         vector insert instruction.
8443 2020-09-23  Martin Sebor  <msebor@redhat.com>
8445         * gimple-array-bounds.cc (build_zero_elt_array_type): New function.
8446         (array_bounds_checker::check_mem_ref): Call it.
8448 2020-09-23  Martin Sebor  <msebor@redhat.com>
8450         PR middle-end/97175
8451         * builtins.c (maybe_warn_for_bound): Handle both DECLs and EXPRESSIONs
8452         in pad->dst.ref, same is pad->src.ref.
8454 2020-09-23  Jan Hubicka  <jh@suse.cz>
8456         * ipa-fnsummary.c (refs_local_or_readonly_memory_p): New function.
8457         (points_to_local_or_readonly_memory_p): New function.
8458         * ipa-fnsummary.h (refs_local_or_readonly_memory_p): Declare.
8459         (points_to_local_or_readonly_memory_p): Declare.
8460         * ipa-modref.c (record_access_p): Use refs_local_or_readonly_memory_p.
8461         * ipa-pure-const.c (check_op): Likewise.
8463 2020-09-23  Tom de Vries  <tdevries@suse.de>
8465         * config/nvptx/nvptx.md: Don't allow operand containing sum of
8466         function ref and const.
8468 2020-09-23  Richard Sandiford  <richard.sandiford@arm.com>
8470         * config/aarch64/aarch64-protos.h (aarch64_salt_type): New enum.
8471         (aarch64_stack_protect_canary_mem): Declare.
8472         * config/aarch64/aarch64.md (UNSPEC_SALT_ADDR): New unspec.
8473         (stack_protect_set): Forward to stack_protect_combined_set.
8474         (stack_protect_combined_set): New pattern.  Use
8475         aarch64_stack_protect_canary_mem.
8476         (reg_stack_protect_address_<mode>): Add a salt operand.
8477         (stack_protect_test): Forward to stack_protect_combined_test.
8478         (stack_protect_combined_test): New pattern.  Use
8479         aarch64_stack_protect_canary_mem.
8480         * config/aarch64/aarch64.c (strip_salt): New function.
8481         (strip_offset_and_salt): Likewise.
8482         (tls_symbolic_operand_type): Use strip_offset_and_salt.
8483         (aarch64_stack_protect_canary_mem): New function.
8484         (aarch64_cannot_force_const_mem): Use strip_offset_and_salt.
8485         (aarch64_classify_address): Likewise.
8486         (aarch64_symbolic_address_p): Likewise.
8487         (aarch64_print_operand): Likewise.
8488         (aarch64_output_addr_const_extra): New function.
8489         (aarch64_tls_symbol_p): Use strip_salt.
8490         (aarch64_classify_symbol): Likewise.
8491         (aarch64_legitimate_pic_operand_p): Use strip_offset_and_salt.
8492         (aarch64_legitimate_constant_p): Likewise.
8493         (aarch64_mov_operand_p): Use strip_salt.
8494         (TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA): Override.
8496 2020-09-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
8498         PR target/71233
8499         * config/aarch64/arm_neon.h (vreinterpretq_f64_p128,
8500         vreinterpretq_p128_f64): Define.
8502 2020-09-23  Alex Coplan  <alex.coplan@arm.com>
8504         * config/arm/arm-cpus.in (neoverse-v1): New.
8505         * config/arm/arm-tables.opt: Regenerate.
8506         * config/arm/arm-tune.md: Regenerate.
8507         * doc/invoke.texi: Document support for Neoverse V1.
8509 2020-09-23  Alex Coplan  <alex.coplan@arm.com>
8511         * config/aarch64/aarch64-cores.def: Add Neoverse V1.
8512         * config/aarch64/aarch64-tune.md: Regenerate.
8513         * doc/invoke.texi: Document support for Neoverse V1.
8515 2020-09-23  Richard Biener  <rguenther@suse.de>
8517         PR middle-end/96453
8518         * gimple-isel.cc (gimple_expand_vec_cond_expr): Remove
8519         LT_EXPR -> NE_EXPR verification and also apply it for
8520         non-constant masks.
8522 2020-09-23  Jan Hubicka  <hubicka@ucw.cz>
8524         * ipa-modref.c (modref_summary::lto_useful_p): New member function.
8525         (modref_summary::useful_p): New member function.
8526         (analyze_function): Drop useless summaries.
8527         (modref_write): Skip useless summaries.
8528         (pass_ipa_modref::execute): Drop useless summaries.
8529         * ipa-modref.h (struct GTY): Declare useful_p and lto_useful_p.
8530         * tree-ssa-alias.c (dump_alias_stats): Fix.
8531         (modref_may_conflict): Fix stats.
8533 2020-09-23  Richard Biener  <rguenther@suse.de>
8535         PR middle-end/96466
8536         * internal-fn.c (expand_vect_cond_mask_optab_fn): Use
8537         appropriate mode for force_reg.
8538         * tree.c (build_truth_vector_type_for): Pass VOIDmode to
8539         make_vector_type.
8541 2020-09-23  Richard Sandiford  <richard.sandiford@arm.com>
8543         * tree-vectorizer.h (determine_peel_for_niter): Delete in favor of...
8544         (vect_determine_partial_vectors_and_peeling): ...this new function.
8545         * tree-vect-loop-manip.c (vect_update_epilogue_niters): New function.
8546         Reject using vector epilogue loops for single iterations.  Install
8547         the constant number of epilogue loop iterations in the associated
8548         loop_vinfo.  Rely on vect_determine_partial_vectors_and_peeling
8549         to do the main part of the test.
8550         (vect_do_peeling): Use vect_update_epilogue_niters to handle
8551         epilogue loops with a known number of iterations.  Skip recomputing
8552         the number of iterations later in that case.  Otherwise, use
8553         vect_determine_partial_vectors_and_peeling to decide whether the
8554         epilogue loop needs to use partial vectors or peeling.
8555         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Set the
8556         default can_use_partial_vectors_p to false if partial-vector-usage=0.
8557         (determine_peel_for_niter): Remove in favor of...
8558         (vect_determine_partial_vectors_and_peeling): ...this new function,
8559         split out from...
8560         (vect_analyze_loop_2): ...here.  Reflect the vect_verify_full_masking
8561         and vect_verify_loop_lens results in CAN_USE_PARTIAL_VECTORS_P
8562         rather than USING_PARTIAL_VECTORS_P.
8564 2020-09-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
8566         PR target/71233
8567         * config/aarch64/aarch64-simd-builtins.def (frintn): Use BUILTIN_VHSDF_HSDF
8568         for modes.  Remove explicit hf instantiation.
8569         * config/aarch64/arm_neon.h (vrndns_f32): Define.
8571 2020-09-23  Richard Biener  <rguenther@suse.de>
8573         PR tree-optimization/97173
8574         * tree-vect-loop.c (vectorizable_live_operation): Extend
8575         assert to also conver element conversions.
8577 2020-09-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
8579         PR target/71233
8580         * config/aarch64/arm_neon.h (vtrn1q_p64, vtrn2q_p64, vuzp1q_p64,
8581         vuzp2q_p64, vzip1q_p64, vzip2q_p64): Define.
8583 2020-09-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
8585         PR target/71233
8586         * config/aarch64/arm_neon.h (vldrq_p128): Define.
8588 2020-09-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
8590         PR target/71233
8591         * config/aarch64/arm_neon.h (vstrq_p128): Define.
8593 2020-09-23  Richard Biener  <rguenther@suse.de>
8595         PR tree-optimization/97151
8596         * tree-ssa-structalias.c (find_func_aliases_for_call):
8597         DECL_IS_REPLACEABLE_OPERATOR_DELETE_P has no effect on
8598         arguments.
8600 2020-09-23  Richard Biener  <rguenther@suse.de>
8602         PR middle-end/97162
8603         * alias.c (compare_base_decls): Use DECL_HARD_REGISTER
8604         and guard with VAR_P.
8606 2020-09-23  Martin Liska  <mliska@suse.cz>
8608         PR gcov-profile/97069
8609         * profile.c (branch_prob): Line number must be at least 1.
8611 2020-09-23  Tom de Vries  <tdevries@suse.de>
8613         PR target/97158
8614         * config/nvptx/nvptx.c (nvptx_output_mov_insn): Handle move from
8615         DF subreg to DF reg.
8617 2020-09-23  David Malcolm  <dmalcolm@redhat.com>
8619         * Makefile.in: Add $(ZLIBINC) to CFLAGS-analyzer/engine.o.
8621 2020-09-22  Jan Hubicka  <jh@suse.cz>
8623         * ipa-modref.c (analyze_stmt): Ignore gimple clobber.
8625 2020-09-22  Jan Hubicka  <jh@suse.cz>
8627         * ipa-modref-tree.c: Add namespace selftest.
8628         (modref_tree_c_tests): Rename to ...
8629         (ipa_modref_tree_c_tests): ... this.
8630         * ipa-modref.c (pass_modref): Remove destructor.
8631         (ipa_modref_c_finalize): New function.
8632         * ipa-modref.h (ipa_modref_c_finalize): Declare.
8633         * selftest-run-tests.c (selftest::run_tests): Call
8634         ipa_modref_c_finalize.
8635         * selftest.h (ipa_modref_tree_c_tests): Declare.
8636         * toplev.c: Include ipa-modref-tree.h and ipa-modref.h
8637         (toplev::finalize): Call ipa_modref_c_finalize.
8639 2020-09-22  David Malcolm  <dmalcolm@redhat.com>
8641         * doc/analyzer.texi (Other Debugging Techniques): Mention
8642         -fdump-analyzer-json.
8643         * doc/invoke.texi (Static Analyzer Options): Add
8644         -fdump-analyzer-json.
8646 2020-09-22  David Faust  <david.faust@oracle.com>
8648         * config/bpf/bpf.md: Add defines for signed div and mod operators.
8650 2020-09-22  Martin Liska  <mliska@suse.cz>
8652         PR tree-optimization/96979
8653         * doc/invoke.texi: Document new param max-switch-clustering-attempts.
8654         * params.opt: Add new parameter.
8655         * tree-switch-conversion.c (jump_table_cluster::find_jump_tables):
8656         Limit number of attempts.
8657         (bit_test_cluster::find_bit_tests): Likewise.
8659 2020-09-22  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
8661         * config/s390/s390.md ("*cmp<mode>_ccs_0", "*cmp<mode>_ccz_0",
8662         "*cmp<mode>_ccs_0_fastmath"): Basically change "*cmp<mode>_ccs_0" into
8663         "*cmp<mode>_ccz_0" and for fast math add "*cmp<mode>_ccs_0_fastmath".
8665 2020-09-22  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
8667         PR target/71233
8668         * config/aarch64/arm_neon.h (vcls_u8, vcls_u16, vcls_u32,
8669         vclsq_u8, vclsq_u16, vclsq_u32): Define.
8671 2020-09-22  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
8673         PR target/71233
8674         * config/aarch64/arm_neon.h (vceqq_p64, vceqz_p64, vceqzq_p64): Define.
8676 2020-09-22  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
8678         PR target/71233
8679         * config/aarch64/arm_neon.h (vadd_p8, vadd_p16, vadd_p64, vaddq_p8,
8680         vaddq_p16, vaddq_p64, vaddq_p128): Define.
8682 2020-09-22  Jakub Jelinek  <jakub@redhat.com>
8684         * params.opt (--param=modref-max-tests=): Fix typo in help text:
8685         perofmed -> performed.
8686         * common.opt: Fix typo: incrmeental -> incremental.
8687         * ipa-modref.c: Fix typos: recroding -> recording, becaue -> because,
8688         analsis -> analysis.
8689         (class modref_summaries): Fix typo: betweehn -> between.
8690         (analyze_call): Fix typo: calle -> callee.
8691         (read_modref_records): Fix typo: expcted -> expected.
8692         (pass_ipa_modref::execute): Fix typo: calle -> callee.
8694 2020-09-22  Jakub Jelinek  <jakub@redhat.com>
8696         * common.opt (-fipa-modref): Add dot at the end of option help.
8697         * params.opt (--param=modref-max-tests=): Likewise.
8699 2020-09-21  Marek Polacek  <polacek@redhat.com>
8701         * doc/invoke.texi: Document -Wctad-maybe-unsupported.
8703 2020-09-21  Richard Biener  <rguenther@suse.de>
8705         PR tree-optimization/97139
8706         * tree-vect-slp.c (vect_bb_slp_mark_live_stmts): Only mark the
8707         pattern root, track visited vectorized stmts.
8709 2020-09-21  Jakub Jelinek  <jakub@redhat.com>
8711         * configure.ac: Use mallinfo mallinfo2 as first operand of
8712         gcc_AC_CHECK_DECLS rather than [mallinfo, mallinfo2].
8713         * configure: Regenerated.
8714         * config.in: Regenerated.
8716 2020-09-21  Andrea Corallo  <andrea.corallo@arm.com>
8718         * config/aarch64/aarch64-builtins.c
8719         (aarch64_general_expand_builtin): Use expand machinery not to
8720         alter the value of an rtx returned by force_reg.
8722 2020-09-21  Richard Biener  <rguenther@suse.de>
8724         PR tree-optimization/97135
8725         * tree-ssa-loop-im.c (sm_seq_push_down): Do not ignore
8726         self-dependences.
8728 2020-09-21  Martin Liska  <mliska@suse.cz>
8730         PR tree-optimization/96915
8731         * tree-switch-conversion.c (switch_conversion::expand): Accept
8732         also integer constants.
8734 2020-09-21  Martin Liska  <mliska@suse.cz>
8736         * print-tree.c (print_node): Remove extra space.
8738 2020-09-21  Andrea Corallo  <andrea.corallo@arm.com>
8740         PR target/96968
8741         * config/aarch64/aarch64-builtins.c
8742         (aarch64_expand_fpsr_fpcr_setter): Fix comment nit.
8743         (aarch64_expand_fpsr_fpcr_getter): New function, expand these
8744         getters using expand_insn machinery.
8745         (aarch64_general_expand_builtin): Make use of.
8747 2020-09-21  Martin Liska  <mliska@suse.cz>
8749         * ggc-common.c (ggc_rlimit_bound): Use ONE_? macro.
8750         (ggc_min_expand_heuristic): Likewise.
8751         (ggc_min_heapsize_heuristic): Likewise.
8752         * ggc-page.c (ggc_collect): Likewise.
8753         * system.h (ONE_G): Likewise.
8755 2020-09-21  Martin Liska  <mliska@suse.cz>
8757         * ggc-common.c (ggc_prune_overhead_list): Use SIZE_AMOUNT.
8758         * ggc-page.c (release_pages): Likewise.
8759         (ggc_collect): Likewise.
8760         (ggc_trim): Likewise.
8761         (ggc_grow): Likewise.
8762         * timevar.c (timer::print): Likewise.
8764 2020-09-21  Martin Liska  <mliska@suse.cz>
8766         * config.in: Regenerate.
8767         * configure: Likewise.
8768         * configure.ac: Detect for mallinfo2.
8769         * ggc-common.c (defined): Use it.
8770         * system.h: Handle also HAVE_MALLINFO2.
8772 2020-09-20  John David Anglin  < danglin@gcc.gnu.org>
8774         * config/pa/pa-hpux11.h (LINK_GCC_C_SEQUENCE_SPEC): Delete.
8775         * config/pa/pa64-hpux.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
8776         (ENDFILE_SPEC): Link with libgcc_stub.a and mill.a.
8777         * config/pa/pa32-linux.h (ENDFILE_SPEC): Link with libgcc.a.
8779 2020-09-20  Jan Hubicka  <hubicka@ucw.cz>
8781         * ipa-modref.c (dump_lto_records): Fix ICE.
8783 2020-09-20  David Cepelik  <d@dcepelik.cz>
8784             Jan Hubicka  <hubicka@ucw.cz>
8786         * Makefile.in: Add ipa-modref.c and ipa-modref-tree.c.
8787         * alias.c: (reference_alias_ptr_type_1): Export.
8788         * alias.h (reference_alias_ptr_type_1): Declare.
8789         * common.opt (fipa-modref): New.
8790         * gengtype.c (open_base_files): Add ipa-modref-tree.h and ipa-modref.h
8791         * ipa-modref-tree.c: New file.
8792         * ipa-modref-tree.h: New file.
8793         * ipa-modref.c: New file.
8794         * ipa-modref.h: New file.
8795         * lto-section-in.c (lto_section_name): Add ipa_modref.
8796         * lto-streamer.h (enum lto_section_type): Add LTO_section_ipa_modref.
8797         * opts.c (default_options_table): Enable ipa-modref at -O1+.
8798         * params.opt (-param=modref-max-bases, -param=modref-max-refs,
8799         -param=modref-max-tests): New params.
8800         * passes.def: Schedule pass_modref and pass_ipa_modref.
8801         * timevar.def (TV_IPA_MODREF): New timevar.
8802         (TV_TREE_MODREF): New timevar.
8803         * tree-pass.h (make_pass_modref): Declare.
8804         (make_pass_ipa_modref): Declare.
8805         * tree-ssa-alias.c (dump_alias_stats): Include ipa-modref-tree.h
8806         and ipa-modref.h
8807         (alias_stats): Add modref_use_may_alias, modref_use_no_alias,
8808         modref_clobber_may_alias, modref_clobber_no_alias, modref_tests.
8809         (dump_alias_stats): Dump new stats.
8810         (nonoverlapping_array_refs_p): Fix formating.
8811         (modref_may_conflict): New function.
8812         (ref_maybe_used_by_call_p_1): Use it.
8813         (call_may_clobber_ref_p_1): Use it.
8814         (call_may_clobber_ref_p): Update.
8815         (stmt_may_clobber_ref_p_1): Update.
8816         * tree-ssa-alias.h (call_may_clobber_ref_p_1): Update.
8818 2020-09-19  Martin Sebor  <msebor@redhat.com>
8820         PR middle-end/82608
8821         PR middle-end/94195
8822         PR c/50584
8823         PR middle-end/84051
8824         * gimple-array-bounds.cc (get_base_decl): New function.
8825         (get_ref_size): New function.
8826         (trailing_array): New function.
8827         (array_bounds_checker::check_array_ref): Call them.  Handle arrays
8828         declared in function parameters.
8829         (array_bounds_checker::check_mem_ref):  Same.  Handle references to
8830         dynamically allocated arrays.
8832 2020-09-19  Martin Sebor  <msebor@redhat.com>
8834         PR c/50584
8835         * builtins.c (warn_for_access): Add argument.  Distinguish between
8836         reads and writes.
8837         (check_access): Add argument.  Distinguish between reads and writes.
8838         (gimple_call_alloc_size): Set range even on failure.
8839         (gimple_parm_array_size): New function.
8840         (compute_objsize): Call it.
8841         (check_memop_access): Pass check_access an additional argument.
8842         (expand_builtin_memchr, expand_builtin_strcat): Same.
8843         (expand_builtin_strcpy, expand_builtin_stpcpy_1): Same.
8844         (expand_builtin_stpncpy, check_strncat_sizes): Same.
8845         (expand_builtin_strncat, expand_builtin_strncpy): Same.
8846         (expand_builtin_memcmp): Same.
8847         * builtins.h (compute_objsize): Declare a new overload.
8848         (gimple_parm_array_size): Declare.
8849         (check_access): Add argument.
8850         * calls.c (append_attrname): Simplify.
8851         (maybe_warn_rdwr_sizes): Handle internal attribute access.
8852         * tree-ssa-uninit.c (maybe_warn_pass_by_reference): Avoid adding
8853         quotes.
8855 2020-09-19  Martin Sebor  <msebor@redhat.com>
8857         * tree-ssa-uninit.c (maybe_warn_pass_by_reference): Handle attribute
8858         access internal representation of arrays.
8860 2020-09-19  Martin Sebor  <msebor@redhat.com>
8862         PR c/50584
8863         * attribs.c (decl_attributes): Also pass decl along with type
8864         attributes to handlers.
8865         (init_attr_rdwr_indices): Change second argument to attribute chain.
8866         Handle internal attribute representation in addition to external.
8867         (get_parm_access): New function.
8868         (attr_access::to_internal_string): Define new member function.
8869         (attr_access::to_external_string): Define new member function.
8870         (attr_access::vla_bounds): Define new member function.
8871         * attribs.h (struct attr_access): Declare new members.
8872         (attr_access::from_mode_char): Define new member function.
8873         (get_parm_access): Declare new function.
8874         * calls.c (initialize_argument_information): Pass function type
8875         attributes to init_attr_rdwr_indices.
8876         * doc/invoke.texi (-Warray-parameter, -Wvla-parameter): Document.
8877         * tree-pretty-print.c (dump_generic_node): Correct handling of
8878         qualifiers.
8879         * tree-ssa-uninit.c (maybe_warn_pass_by_reference): Same.
8880         * tree.h (access_mode): Add new enumerator.
8882 2020-09-19  Sandra Loosemore  <sandra@codesourcery.com>
8884         * doc/generic.texi (Basic Statements): Document SWITCH_EXPR here,
8885         not SWITCH_STMT.
8886         (Statements for C and C++): Rename node to reflect what
8887         the introduction already says about sharing between C and C++
8888         front ends.  Copy-edit and correct documentation for structured
8889         loops and switch.
8891 2020-09-19  liuhongt  <hongtao.liu@intel.com>
8893         PR target/96861
8894         * config/i386/x86-tune-costs.h (skylake_cost): increase rtx
8895         cost of sse_to_integer from 2 to 6.
8897 2020-09-18  Sudi Das  <sudi.das@arm.com>
8898             Omar Tahir  <omar.tahir@arm.com>
8900         * config/arm/thumb2.md (*thumb2_csneg): New.
8901         (*thumb2_negscc): Don't match if TARGET_COND_ARITH.
8902         * config/arm/arm.md (*if_neg_move): Don't match if TARGET_COND_ARITH.
8904 2020-09-18  Sudi Das  <sudi.das@arm.com>
8905             Omar Tahir  <omar.tahir@arm.com>
8907         * config/arm/thumb2.md (*thumb2_csinc): New.
8908         (*thumb2_cond_arith): Generate CINC where possible.
8910 2020-09-18  Sudi Das  <sudi.das@arm.com>
8911             Omar Tahir  <omar.tahir@arm.com>
8913         * config/arm/arm.h (TARGET_COND_ARITH): New macro.
8914         * config/arm/arm.c (arm_have_conditional_execution): Return false if
8915         TARGET_COND_ARITH before reload.
8916         * config/arm/predicates.md (arm_comparison_operation): Returns true if
8917         comparing CC_REGNUM with constant zero.
8918         * config/arm/thumb2.md (*thumb2_csinv): New.
8919         (*thumb2_movcond): Don't match if TARGET_COND_ARITH.
8921 2020-09-18  Richard Sandiford  <richard.sandiford@arm.com>
8923         PR middle-end/91957
8924         * ira.c (ira_setup_eliminable_regset): Skip the special elimination
8925         handling of the hard frame pointer if the hard frame pointer is fixed.
8927 2020-09-18  Richard Biener  <rguenther@suse.de>
8929         PR tree-optimization/97081
8930         * tree-vect-patterns.c (vect_recog_rotate_pattern): Use the
8931         precision of the shifted operand to determine the mask.
8933 2020-09-18  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
8935         * config/msp430/msp430.c (msp430_print_operand): Update comment.
8936         Cast to long when printing values formatted as long.
8937         Support 'd', 'e', 'f' and 'g' modifiers.
8938         Extract operand value with a single operation for all modifiers.
8939         * doc/extend.texi (msp430Operandmodifiers): New.
8941 2020-09-18  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
8943         * config/msp430/msp430.c (increment_stack): Mark insns which increment
8944         the stack as frame_related.
8945         (msp430_expand_prologue): Add comments.
8946         (msp430_expand_epilogue): Mark insns which decrement
8947         the stack as frame_related.
8948         Add reg_note to stack pop insns describing position of register
8949         variables on the stack.
8951 2020-09-18  Andrew Stubbs  <ams@codesourcery.com>
8953         * config/gcn/gcn-tree.c (execute_omp_gcn): Delete.
8954         (make_pass_omp_gcn): Delete.
8955         * config/gcn/t-gcn-hsa (PASSES_EXTRA): Delete.
8956         * config/gcn/gcn-passes.def: Removed.
8958 2020-09-18  Alex Coplan  <alex.coplan@arm.com>
8960         * cfgloop.h (nb_iter_bound): Reword comment describing is_exit.
8962 2020-09-18  Richard Biener  <rguenther@suse.de>
8964         PR tree-optimization/97095
8965         * tree-vect-loop.c (vectorizable_live_operation): Get
8966         the SLP vector type from the correct object.
8968 2020-09-18  Richard Biener  <rguenther@suse.de>
8970         PR tree-optimization/97089
8971         * tree-ssa-sccvn.c (visit_nary_op): Do not replace unsigned
8972         divisions.
8974 2020-09-18  Richard Biener  <rguenther@suse.de>
8976         PR tree-optimization/97098
8977         * tree-vect-slp.c (vect_bb_slp_mark_live_stmts): Do not
8978         recurse to children when all stmts were already visited.
8980 2020-09-17  Sergei Trofimovich  <siarheit@google.com>
8982         * profile.c (sort_hist_values): Clarify hist format:
8983         start with a value, not counter.
8985 2020-09-17  Yeting Kuo  <fakepaper56@gmail.com>
8987         * config/riscv/riscv.h (CSW_MAX_OFFSET): Fix typo.
8989 2020-09-17  Patrick Palka  <ppalka@redhat.com>
8991         PR c/80076
8992         * gensupport.c (alter_attrs_for_subst_insn) <case SET_ATTR>:
8993         Reduce indentation of misleadingly indented code fragment.
8994         * lra-constraints.c (multi_block_pseudo_p): Likewise.
8995         * sel-sched-ir.c (merge_fences): Likewise.
8997 2020-09-17  Martin Sebor  <msebor@redhat.com>
8999         * doc/invoke.texi (-Wuninitialized): Document -Wuninitialized for
9000         allocated objects.
9001          (-Wmaybe-uninitialized): Same.
9003 2020-09-17  Richard Biener  <rguenther@suse.de>
9005         * tree-ssa-sccvn.c (visit_nary_op): Value-number multiplications
9006         and divisions to negates of available negated forms.
9008 2020-09-17  Eric Botcazou  <ebotcazou@adacore.com>
9010         PR middle-end/97078
9011         * function.c (use_register_for_decl): Test cfun->tail_call_marked
9012         for a parameter here instead of...
9013         (assign_parm_setup_reg): ...here.
9015 2020-09-17  Aldy Hernandez  <aldyh@redhat.com>
9017         * range-op.cc (multi_precision_range_tests): Normalize symbolics when copying to a
9018         multi-range.
9019         * value-range.cc (irange::copy_legacy_range): Add test.
9021 2020-09-17  Jan Hubicka  <jh@suse.cz>
9023         * cgraph.c (cgraph_node::get_availability): Fix availability of
9024         functions in other partitions
9025         * varpool.c (varpool_node::get_availability): Likewise.
9027 2020-09-17  Jojo R  <jiejie_rong@c-sky.com>
9029         * config/csky/csky.opt (msim): New.
9030         * doc/invoke.texi (C-SKY Options): Document -msim.
9031         * config/csky/csky-elf.h (LIB_SPEC): Add simulator runtime.
9033 2020-09-17  Sergei Trofimovich  <siarheit@google.com>
9035         * doc/cppenv.texi: Use @code{} instead of @samp{@command{}}
9036         around 'date %s'.
9038 2020-09-17  liuhongt  <hongtao.liu@intel.com>
9040         * common/config/i386/i386-common.c
9041         (OPTION_MASK_ISA_AVX_UNSET): Remove OPTION_MASK_ISA_XSAVE_UNSET.
9042         (OPTION_MASK_ISA_XSAVE_UNSET): Add OPTION_MASK_ISA_AVX_UNSET.
9044 2020-09-16  Alexandre Oliva  <oliva@adacore.com>
9046         * config/rs6000/rs6000.c (have_compare_and_set_mask): Use
9047         E_*mode in cases.
9049 2020-09-16  Bill Schmidt  <wschmidt@linux.ibm.com>
9051         * config/rs6000/predicates.md (current_file_function_operand):
9052         Remove argument from rs6000_pcrel_p call.
9053         * config/rs6000/rs6000-logue.c (rs6000_decl_ok_for_sibcall):
9054         Likewise.
9055         (rs6000_global_entry_point_prologue_needed_p): Likewise.
9056         (rs6000_output_function_prologue): Likewise.
9057         * config/rs6000/rs6000-protos.h (rs6000_function_pcrel_p): New
9058         prototype.
9059         (rs6000_pcrel_p): Remove argument.
9060         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
9061         argument from rs6000_pcrel_p call.
9062         (rs6000_call_template_1): Likewise.
9063         (rs6000_indirect_call_template_1): Likewise.
9064         (rs6000_longcall_ref): Likewise.
9065         (rs6000_call_aix): Likewise.
9066         (rs6000_sibcall_aix): Likewise.
9067         (rs6000_function_pcrel_p): Rename from rs6000_pcrel_p.
9068         (rs6000_pcrel_p): Rewrite.
9069         * config/rs6000/rs6000.md (*pltseq_plt_pcrel<mode>): Remove
9070         argument from rs6000_pcrel_p call.
9071         (*call_local<mode>): Likewise.
9072         (*call_value_local<mode>): Likewise.
9073         (*call_nonlocal_aix<mode>): Likewise.
9074         (*call_value_nonlocal_aix<mode>): Likewise.
9075         (*call_indirect_pcrel<mode>): Likewise.
9076         (*call_value_indirect_pcrel<mode>): Likewise.
9078 2020-09-16  Marek Polacek  <polacek@redhat.com>
9080         PR preprocessor/96935
9081         * input.c (get_substring_ranges_for_loc): Return if start.column
9082         is less than 1.
9084 2020-09-16  Martin Sebor  <msebor@redhat.com>
9086         PR middle-end/96295
9087         * tree-ssa-uninit.c (maybe_warn_operand): Work harder to avoid
9088         warning for objects of empty structs
9090 2020-09-16  Eric Botcazou  <ebotcazou@adacore.com>
9092         * tree-eh.c (lower_try_finally_dup_block): Backward propagate slocs
9093         to stack restore builtin calls.
9094         (cleanup_all_empty_eh): Do again a post-order traversal of the EH
9095         region tree.
9097 2020-09-16  Andrea Corallo  <andrea.corallo@arm.com>
9099         * tree-vect-loop.c (vect_need_peeling_or_partial_vectors_p): New
9100         function.
9101         (vect_analyze_loop_2): Make use of it not to select partial
9102         vectors if no peel is required.
9103         (determine_peel_for_niter): Move out some logic into
9104         'vect_need_peeling_or_partial_vectors_p'.
9106 2020-09-16  H.J. Lu  <hjl.tools@gmail.com>
9108         PR target/97032
9109         * cfgexpand.c (asm_clobber_reg_kind): Set sp_is_clobbered_by_asm
9110         to true if the stack pointer is clobbered by asm statement.
9111         * emit-rtl.h (rtl_data): Add sp_is_clobbered_by_asm.
9112         * config/i386/i386.c (ix86_get_drap_rtx): Set need_drap to true
9113         if the stack pointer is clobbered by asm statement.
9115 2020-09-16  Ilya Leoshkevich  <iii@linux.ibm.com>
9117         * config/s390/vector.md(*vec_tf_to_v1tf): Use "f" instead of "v"
9118           for the source operand.
9120 2020-09-16  Jojo R  <jiejie_rong@c-sky.com>
9122         * config.gcc (C-SKY): Set use_gcc_stdint=wrap for elf target.
9124 2020-09-16  Richard Biener  <rguenther@suse.de>
9126         * tree-vectorizer.h (_stmt_vec_info::num_slp_uses): Remove.
9127         (STMT_VINFO_NUM_SLP_USES): Likewise.
9128         (vect_free_slp_instance): Adjust.
9129         (vect_update_shared_vectype): Declare.
9130         * tree-vectorizer.c (vec_info::~vec_info): Adjust.
9131         * tree-vect-loop.c (vect_analyze_loop_2): Likewise.
9132         (vectorizable_live_operation): Use vector type from
9133         SLP_TREE_REPRESENTATIVE.
9134         (vect_transform_loop): Adjust.
9135         * tree-vect-data-refs.c (vect_slp_analyze_node_alignment):
9136         Set the shared vector type.
9137         * tree-vect-slp.c (vect_free_slp_tree): Remove final_p
9138         parameter, remove STMT_VINFO_NUM_SLP_USES updating.
9139         (vect_free_slp_instance): Adjust.
9140         (vect_create_new_slp_node): Remove STMT_VINFO_NUM_SLP_USES
9141         updating.
9142         (vect_update_shared_vectype): Always compare with the
9143         present vector type, update if NULL.
9144         (vect_build_slp_tree_1): Do not update the shared vector
9145         type here.
9146         (vect_build_slp_tree_2): Adjust.
9147         (slp_copy_subtree): Likewise.
9148         (vect_attempt_slp_rearrange_stmts): Likewise.
9149         (vect_analyze_slp_instance): Likewise.
9150         (vect_analyze_slp): Likewise.
9151         (vect_slp_analyze_node_operations_1): Update the shared
9152         vector type.
9153         (vect_slp_analyze_operations): Adjust.
9154         (vect_slp_analyze_bb_1): Likewise.
9156 2020-09-16  Jojo R  <jiejie_rong@c-sky.com>
9158         * config/csky/t-csky-linux (CSKY_MULTILIB_OSDIRNAMES): Use mfloat-abi.
9159         (MULTILIB_OPTIONS): Likewise.
9160         * config/csky/t-csky-elf (MULTILIB_OPTIONS): Likewise.
9161         (MULTILIB_EXCEPTIONS): Likewise.
9163 2020-09-16  Jakub Jelinek  <jakub@redhat.com>
9165         * config/arm/arm.c (arm_option_restore): Comment out opts argument
9166         name to avoid unused parameter warnings.
9168 2020-09-16  Jakub Jelinek  <jakub@redhat.com>
9170         * optc-save-gen.awk: In cl_optimization_stream_out use
9171         bp_pack_var_len_{int,unsigned} instead of bp_pack_value.  In
9172         cl_optimization_stream_in use bp_unpack_var_len_{int,unsigned}
9173         instead of bp_unpack_value.  Formatting fix.
9175 2020-09-16  Jakub Jelinek  <jakub@redhat.com>
9177         PR tree-optimization/97053
9178         * gimple-ssa-store-merging.c (check_no_overlap): Add FIRST_ORDER,
9179         START, FIRST_EARLIER and LAST_EARLIER arguments.  Return false if
9180         any stores between FIRST_EARLIER inclusive and LAST_EARLIER exclusive
9181         has order in between FIRST_ORDER and LAST_ORDER and overlaps the to
9182         be merged store.
9183         (imm_store_chain_info::try_coalesce_bswap): Add FIRST_EARLIER argument.
9184         Adjust check_no_overlap caller.
9185         (imm_store_chain_info::coalesce_immediate_stores): Add first_earlier
9186         and last_earlier variables, adjust them during iterations.  Adjust
9187         check_no_overlap callers, call check_no_overlap even when extending
9188         overlapping stores by extra INTEGER_CST stores.
9190 2020-09-16  Jojo R  <jiejie_rong@c-sky.com>
9192         * config/csky/csky-linux-elf.h (GLIBC_DYNAMIC_LINKER): Use mfloat-abi.
9194 2020-09-16  Kewen Lin  <linkw@linux.ibm.com>
9196         PR target/97019
9197         * config/rs6000/rs6000-p8swap.c (find_alignment_op): Adjust to
9198         support multiple defintions which are all AND operations with
9199         the mask -16B.
9200         (recombine_lvx_pattern): Adjust to handle multiple AND operations
9201         from find_alignment_op.
9202         (recombine_stvx_pattern): Likewise.
9204 2020-09-16  Jojo R  <jiejie_rong@c-sky.com>
9206         * config/csky/csky.md (CSKY_NPARM_FREGS): New.
9207         (call_value_internal_vs/d): New.
9208         (untyped_call): New.
9209         * config/csky/csky.h (TARGET_SINGLE_FPU): New.
9210         (TARGET_DOUBLE_FPU): New.
9211         (FUNCTION_VARG_REGNO_P): New.
9212         (CSKY_VREG_MODE_P): New.
9213         (FUNCTION_VARG_MODE_P): New.
9214         (CUMULATIVE_ARGS): Add extra regs info.
9215         (INIT_CUMULATIVE_ARGS): Use csky_init_cumulative_args.
9216         (FUNCTION_ARG_REGNO_P): Use FUNCTION_VARG_REGNO_P.
9217         * config/csky/csky-protos.h (csky_init_cumulative_args): Extern.
9218         * config/csky/csky.c (csky_cpu_cpp_builtins): Support TARGET_HARD_FLOAT_ABI.
9219         (csky_function_arg): Likewise.
9220         (csky_num_arg_regs): Likewise.
9221         (csky_function_arg_advance): Likewise.
9222         (csky_function_value): Likewise.
9223         (csky_libcall_value): Likewise.
9224         (csky_function_value_regno_p): Likewise.
9225         (csky_arg_partial_bytes): Likewise.
9226         (csky_setup_incoming_varargs): Likewise.
9227         (csky_init_cumulative_args): New.
9229 2020-09-16  Bill Schmidt  <wschmidt@linux.ibm.com>
9231         * config/rs6000/rs6000-call.c (altivec_init_builtins): Fix name
9232         of __builtin_altivec_xst_len_r.
9234 2020-09-15  Ilya Leoshkevich  <iii@linux.ibm.com>
9236         * rtlanal.c (set_noop_p): Treat subregs of registers in
9237         different modes conservatively.
9239 2020-09-15  Richard Biener  <rguenther@suse.de>
9241         * tree-vect-slp.c (vect_get_and_check_slp_defs): Make swap
9242         argument by-value and do not change it.
9243         (vect_build_slp_tree_2): Adjust, set swap to NULL after last
9244         use.
9246 2020-09-15  Feng Xue  <fxue@os.amperecomputing.com>
9248         PR tree-optimization/94234
9249         * match.pd (T)(A) +- (T)(B) -> (T)(A +- B): New simplification.
9251 2020-09-15  Segher Boessenkool  <segher@kernel.crashing.org>
9253         PR rtl-optimization/96475
9254         * bb-reorder.c (duplicate_computed_gotos): If we did anything, run
9255         cleanup_cfg.
9257 2020-09-15  Richard Biener  <rguenther@suse.de>
9259         * tree-vect-slp.c (vect_build_slp_tree_2): Also consider
9260         building an operand from scalars when building it did not
9261         fail fatally but avoid messing with the upcall splitting
9262         of groups.
9264 2020-09-15  Andre Vieira  <andre.simoesdiasvieira@arm.com>
9266         * config/arm/arm.c (arm_options_perform_arch_sanity_checks): Do not
9267         check +D32 for CMSE if -mfloat-abi=soft
9269 2020-09-15  liuhongt  <hongtao.liu@intel.com>
9271         PR target/96744
9272         * config/i386/x86-tune-costs.h (struct processor_costs):
9273         Increase mask <-> integer cost for non AVX512 target to avoid
9274         spill gpr to mask. Also retune mask <-> integer and
9275         mask_load/store for skylake_cost.
9277 2020-09-15  Jakub Jelinek  <jakub@redhat.com>
9279         PR target/97028
9280         * config/i386/sse.md (mul<mode>3<mask_name>_bcs,
9281         <avx512>_div<mode>3<mask_name>_bcst): Use <avx512bcst> instead of
9282         <<avx512bcst>>.
9284 2020-09-15  Tobias Burnus  <tobias@codesourcery.com>
9286         PR fortran/96668
9287         * gimplify.c (gimplify_omp_for): Add 'bool openacc' argument;
9288         update omp_finish_clause calls.
9289         (gimplify_adjust_omp_clauses_1, gimplify_adjust_omp_clauses,
9290         gimplify_expr, gimplify_omp_loop): Update omp_finish_clause
9291         and/or gimplify_for calls.
9292         * langhooks-def.h (lhd_omp_finish_clause): Add bool openacc arg.
9293         * langhooks.c (lhd_omp_finish_clause): Likewise.
9294         * langhooks.h (lhd_omp_finish_clause): Likewise.
9295         * omp-low.c (scan_sharing_clauses): Keep GOMP_MAP_TO_PSET cause for
9296         'declare target' vars.
9298 2020-09-15  Feng Xue  <fxue@os.amperecomputing.com>
9300         PR tree-optimization/94234
9301         * genmatch.c (dt_simplify::gen_1): Emit check on final simplification
9302         result when "!" is specified on toplevel output expr.
9303         * match.pd ((A * C) +- (B * C) -> (A +- B) * C): Allow folding on expr
9304         with multi-use operands if final result is a simple gimple value.
9306 2020-09-14  Sergei Trofimovich  <siarheit@google.com>
9308         * doc/invoke.texi: fix '-fprofile-reproducibility' option
9309         spelling in manual.
9311 2020-09-14  Jose E. Marchesi  <jose.marchesi@oracle.com>
9313         * config/bpf/bpf.md ("nop"): Re-define as `ja 0'.
9315 2020-09-14  Eric Botcazou  <ebotcazou@adacore.com>
9317         * cgraphunit.c (cgraph_node::expand_thunk): Make sure to set
9318         cfun->tail_call_marked when forcing a tail call.
9319         * function.c (assign_parm_setup_reg): Always use a register to
9320         load a parameter passed by reference if cfun->tail_call_marked.
9322 2020-09-14  Pat Haugen  <pthaugen@linux.ibm.com>
9324         * config/rs6000/power10.md (power10-mffgpr, power10-mftgpr): Rename to
9325         power10-mtvsr/power10-mfvsr.
9326         * config/rs6000/power6.md (X2F_power6, power6-mftgpr, power6-mffgpr):
9327         Remove.
9328         * config/rs6000/power8.md (power8-mffgpr, power8-mftgpr): Rename to
9329         power8-mtvsr/power8-mfvsr.
9330         * config/rs6000/power9.md (power9-mffgpr, power9-mftgpr): Rename to
9331         power9-mtvsr/power9-mfvsr.
9332         * config/rs6000/rs6000.c (rs6000_adjust_cost): Remove Power6
9333         TYPE_MFFGPR cases.
9334         * config/rs6000/rs6000.md (mffgpr, mftgpr, zero_extendsi<mode>2,
9335         extendsi<mode>2, @signbit<mode>2_dm, lfiwax, lfiwzx, *movsi_internal1,
9336         movsi_from_sf, *movdi_from_sf_zero_ext, *mov<mode>_internal,
9337         movsd_hardfloat, movsf_from_si, *mov<mode>_hardfloat64, p8_mtvsrwz,
9338         p8_mtvsrd_df, p8_mtvsrd_sf, p8_mfvsrd_3_<mode>, *movdi_internal64,
9339         unpack<mode>_dm): Rename mffgpr/mftgpr to mtvsr/mfvsr.
9340         * config/rs6000/vsx.md (vsx_mov<mode>_64bit, vsx_extract_<mode>,
9341         vsx_extract_si, *vsx_extract_<mode>_p8): Likewise.
9343 2020-09-14  Jakub Jelinek  <jakub@redhat.com>
9345         * config/arm/arm.opt (x_arm_arch_string, x_arm_cpu_string,
9346         x_arm_tune_string): Remove TargetSave entries.
9347         (march=, mcpu=, mtune=): Add Save keyword.
9348         * config/arm/arm.c (arm_option_save): Remove.
9349         (TARGET_OPTION_SAVE): Don't redefine.
9350         (arm_option_restore): Don't restore x_arm_*_string here.
9352 2020-09-14  Jakub Jelinek  <jakub@redhat.com>
9354         * opt-read.awk: Also initialize extra_target_var_types array.
9355         * opth-gen.awk: Emit explicit_mask arrays to struct cl_optimization
9356         and cl_target_option.  Adjust cl_optimization_save,
9357         cl_optimization_restore, cl_target_option_save and
9358         cl_target_option_restore declarations.
9359         * optc-save-gen.awk: Add opts_set argument to cl_optimization_save,
9360         cl_optimization_restore, cl_target_option_save and
9361         cl_target_option_restore functions and save or restore opts_set
9362         next to the opts values into or from explicit_mask arrays.
9363         In cl_target_option_eq and cl_optimization_option_eq compare
9364         explicit_mask arrays, in cl_target_option_hash and cl_optimization_hash
9365         hash them and in cl_target_option_stream_out,
9366         cl_target_option_stream_in, cl_optimization_stream_out and
9367         cl_optimization_stream_in stream them.
9368         * tree.h (build_optimization_node, build_target_option_node): Add
9369         opts_set argument.
9370         * tree.c (build_optimization_node): Add opts_set argument, pass it
9371         to cl_optimization_save.
9372         (build_target_option_node): Add opts_set argument, pass it to
9373         cl_target_option_save.
9374         * function.c (invoke_set_current_function_hook): Adjust
9375         cl_optimization_restore caller.
9376         * ipa-inline-transform.c (inline_call): Adjust cl_optimization_restore
9377         and build_optimization_node callers.
9378         * target.def (TARGET_OPTION_SAVE, TARGET_OPTION_RESTORE): Add opts_set
9379         argument.
9380         * target-globals.c (save_target_globals_default_opts): Adjust
9381         cl_optimization_restore callers.
9382         * toplev.c (process_options): Adjust build_optimization_node and
9383         cl_optimization_restore callers.
9384         (target_reinit): Adjust cl_optimization_restore caller.
9385         * tree-streamer-in.c (lto_input_ts_function_decl_tree_pointers):
9386         Adjust build_optimization_node and cl_optimization_restore callers.
9387         * doc/tm.texi: Updated.
9388         * config/aarch64/aarch64.c (aarch64_override_options): Adjust
9389         build_target_option_node caller.
9390         (aarch64_option_save, aarch64_option_restore): Add opts_set argument.
9391         (aarch64_set_current_function): Adjust cl_target_option_restore
9392         caller.
9393         (aarch64_option_valid_attribute_p): Adjust cl_target_option_save,
9394         cl_target_option_restore, cl_optimization_restore,
9395         build_optimization_node and build_target_option_node callers.
9396         * config/aarch64/aarch64-c.c (aarch64_pragma_target_parse): Adjust
9397         cl_target_option_restore and build_target_option_node callers.
9398         * config/arm/arm.c (arm_option_save, arm_option_restore): Add
9399         opts_set argument.
9400         (arm_option_override): Adjust cl_target_option_save,
9401         build_optimization_node and build_target_option_node callers.
9402         (arm_set_current_function): Adjust cl_target_option_restore caller.
9403         (arm_valid_target_attribute_tree): Adjust build_target_option_node
9404         caller.
9405         (add_attribute): Formatting fix.
9406         (arm_valid_target_attribute_p): Adjust cl_optimization_restore,
9407         cl_target_option_restore, arm_valid_target_attribute_tree and
9408         build_optimization_node callers.
9409         * config/arm/arm-c.c (arm_pragma_target_parse): Adjust
9410         cl_target_option_restore callers.
9411         * config/csky/csky.c (csky_option_override): Adjust
9412         build_target_option_node and cl_target_option_save callers.
9413         * config/gcn/gcn.c (gcn_fixup_accel_lto_options): Adjust
9414         build_optimization_node and cl_optimization_restore callers.
9415         * config/i386/i386-builtins.c (get_builtin_code_for_version):
9416         Adjust cl_target_option_save and cl_target_option_restore
9417         callers.
9418         * config/i386/i386-c.c (ix86_pragma_target_parse): Adjust
9419         build_target_option_node and cl_target_option_restore callers.
9420         * config/i386/i386-options.c (ix86_function_specific_save,
9421         ix86_function_specific_restore): Add opts_set arguments.
9422         (ix86_valid_target_attribute_tree): Adjust build_target_option_node
9423         caller.
9424         (ix86_valid_target_attribute_p): Adjust build_optimization_node,
9425         cl_optimization_restore, cl_target_option_restore,
9426         ix86_valid_target_attribute_tree and build_optimization_node callers.
9427         (ix86_option_override_internal): Adjust build_target_option_node
9428         caller.
9429         (ix86_reset_previous_fndecl, ix86_set_current_function): Adjust
9430         cl_target_option_restore callers.
9431         * config/i386/i386-options.h (ix86_function_specific_save,
9432         ix86_function_specific_restore): Add opts_set argument.
9433         * config/nios2/nios2.c (nios2_option_override): Adjust
9434         build_target_option_node caller.
9435         (nios2_option_save, nios2_option_restore): Add opts_set argument.
9436         (nios2_valid_target_attribute_tree): Adjust build_target_option_node
9437         caller.
9438         (nios2_valid_target_attribute_p): Adjust build_optimization_node,
9439         cl_optimization_restore, cl_target_option_save and
9440         cl_target_option_restore callers.
9441         (nios2_set_current_function, nios2_pragma_target_parse): Adjust
9442         cl_target_option_restore callers.
9443         * config/pru/pru.c (pru_option_override): Adjust
9444         build_target_option_node caller.
9445         (pru_set_current_function): Adjust cl_target_option_restore
9446         callers.
9447         * config/rs6000/rs6000.c (rs6000_debug_reg_global): Adjust
9448         cl_target_option_save caller.
9449         (rs6000_option_override_internal): Adjust build_target_option_node
9450         caller.
9451         (rs6000_valid_attribute_p): Adjust build_optimization_node,
9452         cl_optimization_restore, cl_target_option_save,
9453         cl_target_option_restore and build_target_option_node callers.
9454         (rs6000_pragma_target_parse): Adjust cl_target_option_restore and
9455         build_target_option_node callers.
9456         (rs6000_activate_target_options): Adjust cl_target_option_restore
9457         callers.
9458         (rs6000_function_specific_save, rs6000_function_specific_restore):
9459         Add opts_set argument.
9460         * config/s390/s390.c (s390_function_specific_restore): Likewise.
9461         (s390_option_override_internal): Adjust s390_function_specific_restore
9462         caller.
9463         (s390_option_override, s390_valid_target_attribute_tree): Adjust
9464         build_target_option_node caller.
9465         (s390_valid_target_attribute_p): Adjust build_optimization_node,
9466         cl_optimization_restore and cl_target_option_restore callers.
9467         (s390_activate_target_options): Adjust cl_target_option_restore
9468         caller.
9469         * config/s390/s390-c.c (s390_cpu_cpp_builtins): Adjust
9470         cl_target_option_save caller.
9471         (s390_pragma_target_parse): Adjust build_target_option_node and
9472         cl_target_option_restore callers.
9474 2020-09-13  Roger Sayle  <roger@nextmovesoftware.com>
9476         * config/pa/pa.c (hppa_rtx_costs) [ASHIFT, ASHIFTRT, LSHIFTRT]:
9477         Provide accurate costs for DImode shifts of integer constants.
9479 2020-09-12  Roger Sayle  <roger@nextmovesoftware.com>
9480             John David Anglin  <danglin@gcc.gnu.org>
9482         * config/pa/pa.md (shrpsi4_1, shrpsi4_2): New define_insns split
9483         out from previous shrpsi4 providing two commutitive variants using
9484         plus_xor_ior_operator as a predicate.
9485         (shrpdi4_1, shrpdi4_2, shrpdi_3, shrpdi_4): Likewise DImode versions
9486         where _1 and _2 take register shifts, and _3 and _4 for integers.
9487         (rotlsi3_internal): Name this anonymous instruction.
9488         (rotrdi3): New DImode insn copied from rotrsi3.
9489         (rotldi3): New DImode expander copied from rotlsi3.
9490         (rotldi4_internal): New DImode insn copied from rotsi3_internal.
9492 2020-09-11  Michael Meissner  <meissner@linux.ibm.com>
9494         * config/rs6000/rs6000.c (rs6000_maybe_emit_maxc_minc): Rename
9495         from rs6000_emit_p9_fp_minmax.  Change return type to bool.  Add
9496         comments to document NaN/signed zero behavior.
9497         (rs6000_maybe_emit_fp_cmove): Rename from rs6000_emit_p9_fp_cmove.
9498         (have_compare_and_set_mask): New helper function.
9499         (rs6000_emit_cmove): Update calls to new names and the new helper
9500         function.
9502 2020-09-11  Nathan Sidwell  <nathan@acm.org>
9504         * config/i386/sse.md (mov<mode>): Fix operand indices.
9506 2020-09-11  Martin Sebor  <msebor@redhat.com>
9508         PR middle-end/96903
9509         * builtins.c (compute_objsize): Remove incorrect offset adjustment.
9510         (compute_objsize): Adjust offset range here instead.
9512 2020-09-11  Richard Biener  <rguenther@suse.de>
9514         PR tree-optimization/97020
9515         * tree-vect-slp.c (vect_slp_analyze_operations): Apply
9516         SLP costs when doing loop vectorization.
9518 2020-09-11  Tom de Vries  <tdevries@suse.de>
9520         PR target/96964
9521         * config/nvptx/nvptx.md (define_expand "atomic_test_and_set"): New
9522         expansion.
9524 2020-09-11  Andrew Stubbs  <ams@codesourcery.com>
9526         * config/gcn/gcn.c (gcn_hard_regno_mode_ok): Align TImode registers.
9527         * config/gcn/gcn.md: Assert that TImode registers do not early clobber.
9529 2020-09-11  Richard Biener  <rguenther@suse.de>
9531         * tree-vectorizer.h (_slp_instance::location): New method.
9532         (vect_schedule_slp): Adjust prototype.
9533         * tree-vectorizer.c (vec_info::remove_stmt): Adjust
9534         the BB region begin if we removed the stmt it points to.
9535         * tree-vect-loop.c (vect_transform_loop): Adjust.
9536         * tree-vect-slp.c (_slp_instance::location): Implement.
9537         (vect_analyze_slp_instance): For BB vectorization set
9538         vect_location to that of the instance.
9539         (vect_slp_analyze_operations): Likewise.
9540         (vect_bb_vectorization_profitable_p): Remove wrapper.
9541         (vect_slp_analyze_bb_1): Remove cost check here.
9542         (vect_slp_region): Cost check and code generate subgraphs separately,
9543         report optimized locations and missed optimizations due to
9544         profitability for each of them.
9545         (vect_schedule_slp): Get the vector of SLP graph entries to
9546         vectorize as argument.
9548 2020-09-11  Richard Biener  <rguenther@suse.de>
9550         PR tree-optimization/97013
9551         * tree-vect-slp.c (vect_slp_analyze_bb_1): Remove duplicate dumping.
9553 2020-09-11  Richard Biener  <rguenther@suse.de>
9555         * tree-vect-slp.c (vect_build_slp_tree_1): Check vector
9556         types for all lanes are compatible.
9557         (vect_analyze_slp_instance): Appropriately check for stores.
9558         (vect_schedule_slp): Likewise.
9560 2020-09-11  Tom de Vries  <tdevries@suse.de>
9562         * config/nvptx/nvptx.c (nvptx_assemble_value): Fix undefined
9563         behaviour.
9565 2020-09-11  Tom de Vries  <tdevries@suse.de>
9567         * config/nvptx/nvptx.c (nvptx_assemble_value): Handle negative
9568         __int128.
9570 2020-09-11  Aaron Sawdey  <acsawdey@linux.ibm.com>
9572         * config/rs6000/rs6000.c (rs6000_option_override_internal):
9573         Change default.
9575 2020-09-10  Michael Meissner  <meissner@linux.ibm.com>
9577         * config/rs6000/rs6000-protos.h (rs6000_emit_cmove): Change return
9578         type to bool.
9579         (rs6000_emit_int_cmove): Change return type to bool.
9580         * config/rs6000/rs6000.c (rs6000_emit_cmove): Change return type
9581         to bool.
9582         (rs6000_emit_int_cmove): Change return type to bool.
9584 2020-09-10  Tom de Vries  <tdevries@suse.de>
9586         PR target/97004
9587         * config/nvptx/nvptx.c (nvptx_assemble_value): Handle shift by
9588         number of bits in shift operand.
9590 2020-09-10  Jakub Jelinek  <jakub@redhat.com>
9592         * lto-streamer-out.c (collect_block_tree_leafs): Recurse on
9593         root rather than BLOCK_SUBBLOCKS (root).
9595 2020-09-10  Alex Coplan  <alex.coplan@arm.com>
9597         * config/aarch64/aarch64-cores.def: Add Cortex-R82.
9598         * config/aarch64/aarch64-tune.md: Regenerate.
9599         * doc/invoke.texi: Add entry for Cortex-R82.
9601 2020-09-10  Alex Coplan  <alex.coplan@arm.com>
9603         * common/config/aarch64/aarch64-common.c
9604         (aarch64_get_extension_string_for_isa_flags): Don't force +crc for
9605         Armv8-R.
9606         * config/aarch64/aarch64-arches.def: Add entry for Armv8-R.
9607         * config/aarch64/aarch64-c.c (aarch64_define_unconditional_macros): Set
9608         __ARM_ARCH_PROFILE correctly for Armv8-R.
9609         * config/aarch64/aarch64.h (AARCH64_FL_V8_R): New.
9610         (AARCH64_FL_FOR_ARCH8_R): New.
9611         (AARCH64_ISA_V8_R): New.
9612         * doc/invoke.texi: Add Armv8-R to architecture table.
9614 2020-09-10  Jakub Jelinek  <jakub@redhat.com>
9616         * config/arm/arm.c (arm_override_options_after_change_1): Add opts_set
9617         argument, test opts_set->x_str_align_functions rather than
9618         opts->x_str_align_functions.
9619         (arm_override_options_after_change, arm_option_override_internal,
9620         arm_set_current_function): Adjust callers.
9622 2020-09-10  Jakub Jelinek  <jakub@redhat.com>
9624         PR target/96939
9625         * config/arm/arm.c (arm_override_options_after_change): Don't call
9626         arm_configure_build_target here.
9627         (arm_set_current_function): Call arm_override_options_after_change_1
9628         at the end.
9630 2020-09-10  Pat Haugen  <pthaugen@linux.ibm.com>
9632         * config/rs6000/rs6000.md
9633         (lfiwzx, floatunssi<mode>2_lfiwzx, p8_mtvsrwz, p8_mtvsrd_sf): Fix insn
9634         type.
9635         * config/rs6000/vsx.md
9636         (vsx_concat_<mode>, vsx_splat_<mode>_reg, vsx_splat_v4sf): Likewise.
9638 2020-09-10  Jonathan Yong  <10walls@gmail.com>
9640         * config.host: Adjust plugin name for Windows.
9642 2020-09-10  Tom de Vries  <tdevries@suse.de>
9644         PR tree-optimization/97000
9645         * tree-cfgcleanup.c (cleanup_call_ctrl_altering_flag): Don't clear
9646         flag for IFN_UNIQUE.
9648 2020-09-10  Jakub Jelinek  <jakub@redhat.com>
9650         PR debug/93865
9651         * lto-streamer.h (struct output_block): Add emit_pwd member.
9652         * lto-streamer-out.c: Include toplev.h.
9653         (clear_line_info): Set emit_pwd.
9654         (lto_output_location_1): Encode the ob->current_file != xloc.file
9655         bit directly into the location number.  If changing file, emit
9656         additionally a bit whether pwd is emitted and emit it before the
9657         first relative pathname since clear_line_info.
9658         (output_function, output_constructor): Don't call clear_line_info
9659         here.
9660         * lto-streamer-in.c (struct string_pair_map): New type.
9661         (struct string_pair_map_hasher): New type.
9662         (string_pair_map_hasher::hash): New method.
9663         (string_pair_map_hasher::equal): New method.
9664         (path_name_pair_hash_table, string_pair_map_allocator): New variables.
9665         (relative_path_prefix, canon_relative_path_prefix,
9666         canon_relative_file_name): New functions.
9667         (canon_file_name): Add relative_prefix argument, if non-NULL
9668         and string is a relative path, return canon_relative_file_name.
9669         (lto_location_cache::input_location_and_block): Decode file change
9670         bit from the location number.  If changing file, unpack bit whether
9671         pwd is streamed and stream in pwd.  Adjust canon_file_name caller.
9672         (lto_free_file_name_hash): Delete path_name_pair_hash_table
9673         and string_pair_map_allocator.
9675 2020-09-10  Richard Biener  <rguenther@suse.de>
9677         PR tree-optimization/96043
9678         * tree-vectorizer.h (_slp_instance::cost_vec): New.
9679         (_slp_instance::subgraph_entries): Likewise.
9680         (BB_VINFO_TARGET_COST_DATA): Remove.
9681         * tree-vect-slp.c (vect_free_slp_instance): Free
9682         cost_vec and subgraph_entries.
9683         (vect_analyze_slp_instance): Initialize them.
9684         (vect_slp_analyze_operations): Defer passing costs to
9685         the target, instead record them in the SLP graph entry.
9686         (get_ultimate_leader): New helper for graph partitioning.
9687         (vect_bb_partition_graph_r): Likewise.
9688         (vect_bb_partition_graph): New function to partition the
9689         SLP graph into independently costable parts.
9690         (vect_bb_vectorization_profitable_p): Adjust to work on
9691         a subgraph.
9692         (vect_bb_vectorization_profitable_p): New wrapper,
9693         discarding non-profitable vectorization of subgraphs.
9694         (vect_slp_analyze_bb_1): Call vect_bb_partition_graph before
9695         costing.
9697 2020-09-09  David Malcolm  <dmalcolm@redhat.com>
9699         PR analyzer/94355
9700         * doc/invoke.texi: Document -Wanalyzer-mismatching-deallocation.
9702 2020-09-09  Segher Boessenkool  <segher@kernel.crashing.org>
9704         PR rtl-optimization/96475
9705         * bb-reorder.c (maybe_duplicate_computed_goto): Remove single_pred_p
9706         micro-optimization.
9708 2020-09-09  Tom de Vries  <tdevries@suse.de>
9710         * config/nvptx/nvptx.c (nvptx_assemble_decl_begin): Fix Wformat
9711         warning.
9713 2020-09-09  Richard Biener  <rguenther@suse.de>
9715         * tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Do
9716         nothing when the permutation doesn't permute.
9718 2020-09-09  Tom de Vries  <tdevries@suse.de>
9720         PR target/96991
9721         * config/nvptx/nvptx.c (write_fn_proto): Fix boolean type check.
9723 2020-09-09  Richard Biener  <rguenther@suse.de>
9725         * tree-vect-stmts.c (vectorizable_comparison): Allow
9726         STMT_VINFO_LIVE_P stmts.
9728 2020-09-09  Richard Biener  <rguenther@suse.de>
9730         * tree-vect-stmts.c (vectorizable_condition): Allow
9731         STMT_VINFO_LIVE_P stmts.
9733 2020-09-09  Richard Biener  <rguenther@suse.de>
9735         PR tree-optimization/96978
9736         * tree-vect-stmts.c (vectorizable_condition): Do not
9737         look at STMT_VINFO_LIVE_P for BB vectorization.
9738         (vectorizable_comparison): Likewise.
9740 2020-09-09  liuhongt  <hongtao.liu@intel.com>
9742         PR target/96955
9743         * config/i386/i386.md (get_thread_pointer<mode>): New
9744         expander.
9746 2020-09-08  Julian Brown  <julian@codesourcery.com>
9748         * config/gcn/gcn-valu.md (scatter<mode>_insn_1offset_ds<exec_scatter>):
9749         Add waitcnt.
9750         * config/gcn/gcn.md (*mov<mode>_insn, *movti_insn): Add waitcnt to
9751         ds_write alternatives.
9753 2020-09-08  Julian Brown  <julian@codesourcery.com>
9755         * config/gcn/mkoffload.c (process_asm): Initialise regcount.  Update
9756         scanning for SGPR/VGPR usage for HSACO v3.
9758 2020-09-08  Aldy Hernandez  <aldyh@redhat.com>
9760         PR tree-optimization/96967
9761         * tree-vrp.c (find_case_label_range): Cast label range to
9762         type of switch operand.
9764 2020-09-08  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
9766         * config/msp430/msp430.c (msp430_file_end): Fix jumbled
9767         HAVE_AS_MSPABI_ATTRIBUTE and HAVE_AS_GNU_ATTRIBUTE checks.
9768         * configure: Regenerate.
9769         * configure.ac: Use ".mspabi_attribute 4,2" to check for assembler
9770         support for this object attribute directive.
9772 2020-09-08  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
9774         * common/config/msp430/msp430-common.c (msp430_handle_option): Remove
9775         OPT_mcpu_ handling.
9776         Set target_cpu value to new enum values when parsing certain -mmcu=
9777         values.
9778         * config/msp430/msp430-opts.h (enum msp430_cpu_types): New.
9779         * config/msp430/msp430.c (msp430_option_override): Handle new
9780         target_cpu enum values.
9781         Set target_cpu using extracted value for given MCU when -mcpu=
9782         option is not passed by the user.
9783         * config/msp430/msp430.opt: Handle -mcpu= values using enums.
9785 2020-09-07  Richard Sandiford  <richard.sandiford@arm.com>
9787         PR rtl-optimization/96796
9788         * lra-constraints.c (in_class_p): Add a default-false
9789         allow_all_reload_class_changes_p parameter.  Do not treat
9790         reload moves specially when the parameter is true.
9791         (get_reload_reg): Try to narrow the class of an existing OP_OUT
9792         reload if we're reloading a reload pseudo in a reload instruction.
9794 2020-09-07  Andrea Corallo  <andrea.corallo@arm.com>
9796         * tree-vect-loop.c (vect_estimate_min_profitable_iters): Revert
9797         dead-code removal introduced by 09fa6acd8d9 + add a comment to
9798         clarify.
9800 2020-09-07  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
9802         * doc/rtl.texi (subreg): Fix documentation to state there is a known
9803         number of undefined bits in regs and subregs of MODE_PARTIAL_INT modes.
9805 2020-09-07  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
9807         * config/msp430/msp430.c (msp430_option_override): Don't set the
9808         ISA to 430 when the MCU is unrecognized.
9810 2020-09-07  Iain Sandoe  <iain@sandoe.co.uk>
9812         * config/darwin.c (darwin_libc_has_function): Report sincos
9813         available from 10.9.
9815 2020-09-07  Alex Coplan  <alex.coplan@arm.com>
9817         * config/aarch64/aarch64.md (*adds_mul_imm_<mode>): Delete.
9818         (*subs_mul_imm_<mode>): Delete.
9819         (*adds_<optab><mode>_multp2): Delete.
9820         (*subs_<optab><mode>_multp2): Delete.
9821         (*add_mul_imm_<mode>): Delete.
9822         (*add_<optab><ALLX:mode>_mult_<GPI:mode>): Delete.
9823         (*add_<optab><SHORT:mode>_mult_si_uxtw): Delete.
9824         (*add_<optab><mode>_multp2): Delete.
9825         (*add_<optab>si_multp2_uxtw): Delete.
9826         (*add_uxt<mode>_multp2): Delete.
9827         (*add_uxtsi_multp2_uxtw): Delete.
9828         (*sub_mul_imm_<mode>): Delete.
9829         (*sub_mul_imm_si_uxtw): Delete.
9830         (*sub_<optab><mode>_multp2): Delete.
9831         (*sub_<optab>si_multp2_uxtw): Delete.
9832         (*sub_uxt<mode>_multp2): Delete.
9833         (*sub_uxtsi_multp2_uxtw): Delete.
9834         (*neg_mul_imm_<mode>2): Delete.
9835         (*neg_mul_imm_si2_uxtw): Delete.
9836         * config/aarch64/predicates.md (aarch64_pwr_imm3): Delete.
9837         (aarch64_pwr_2_si): Delete.
9838         (aarch64_pwr_2_di): Delete.
9840 2020-09-07  Alex Coplan  <alex.coplan@arm.com>
9842         * config/aarch64/aarch64.md
9843         (*adds_<optab><ALLX:mode>_<GPI:mode>): Ensure extended operand
9844         agrees with width of extension specifier.
9845         (*subs_<optab><ALLX:mode>_<GPI:mode>): Likewise.
9846         (*adds_<optab><ALLX:mode>_shift_<GPI:mode>): Likewise.
9847         (*subs_<optab><ALLX:mode>_shift_<GPI:mode>): Likewise.
9848         (*add_<optab><ALLX:mode>_<GPI:mode>): Likewise.
9849         (*add_<optab><ALLX:mode>_shft_<GPI:mode>): Likewise.
9850         (*add_uxt<mode>_shift2): Likewise.
9851         (*sub_<optab><ALLX:mode>_<GPI:mode>): Likewise.
9852         (*sub_<optab><ALLX:mode>_shft_<GPI:mode>): Likewise.
9853         (*sub_uxt<mode>_shift2): Likewise.
9854         (*cmp_swp_<optab><ALLX:mode>_reg<GPI:mode>): Likewise.
9855         (*cmp_swp_<optab><ALLX:mode>_shft_<GPI:mode>): Likewise.
9857 2020-09-07  Richard Biener  <rguenther@suse.de>
9859         * tree-vect-slp.c (vect_analyze_slp_instance): Dump
9860         stmts we start SLP analysis from, failure and splitting.
9861         (vect_schedule_slp): Dump SLP graph entry and root stmt
9862         we are about to emit code for.
9864 2020-09-07  Martin Storsjö  <martin@martin.st>
9866         * dwarf2out.c (file_name_acquire): Make a strchr return value
9867         pointer to const.
9869 2020-09-07  Jakub Jelinek  <jakub@redhat.com>
9871         PR debug/94235
9872         * lto-streamer-out.c (output_cfg): Also stream goto_locus for edges.
9873         Use bp_pack_var_len_unsigned instead of streamer_write_uhwi to stream
9874         e->dest->index and e->flags.
9875         (output_function): Call output_cfg before output_ssa_name, rather than
9876         after streaming all bbs.
9877         * lto-streamer-in.c (input_cfg): Stream in goto_locus for edges.
9878         Use bp_unpack_var_len_unsigned instead of streamer_read_uhwi to stream
9879         in dest_index and edge_flags.
9881 2020-09-07  Richard Biener  <rguenther@suse.de>
9883         * tree-vectorizer.h (vectorizable_live_operation): Adjust.
9884         * tree-vect-loop.c (vectorizable_live_operation): Vectorize
9885         live lanes out of basic-block vectorization nodes.
9886         * tree-vect-slp.c (vect_bb_slp_mark_live_stmts): New function.
9887         (vect_slp_analyze_operations): Analyze live lanes and their
9888         vectorization possibility after the whole SLP graph is final.
9889         (vect_bb_slp_scalar_cost): Adjust for vectorized live lanes.
9890         * tree-vect-stmts.c (can_vectorize_live_stmts): Adjust.
9891         (vect_transform_stmt): Call can_vectorize_live_stmts also for
9892         basic-block vectorization.
9894 2020-09-04  Richard Biener  <rguenther@suse.de>
9896         PR tree-optimization/96698
9897         PR tree-optimization/96920
9898         * tree-vectorizer.h (loop_vec_info::reduc_latch_defs): Remove.
9899         (loop_vec_info::reduc_latch_slp_defs): Likewise.
9900         * tree-vect-stmts.c (vect_transform_stmt): Remove vectorized
9901         cycle PHI latch code.
9902         * tree-vect-loop.c (maybe_set_vectorized_backedge_value): New
9903         helper to set vectorized cycle PHI latch values.
9904         (vect_transform_loop): Walk over all PHIs again after
9905         vectorizing them, calling maybe_set_vectorized_backedge_value.
9906         Call maybe_set_vectorized_backedge_value for each vectorized
9907         stmt.  Remove delayed update code.
9908         * tree-vect-slp.c (vect_analyze_slp_instance): Initialize
9909         SLP instance reduc_phis member.
9910         (vect_schedule_slp): Set vectorized cycle PHI latch values.
9912 2020-09-04  Andrea Corallo  <andrea.corallo@arm.com>
9914         * tree-vect-loop.c (vect_estimate_min_profitable_iters): Remove
9915         dead code as LOOP_VINFO_USING_PARTIAL_VECTORS_P (loop_vinfo) is
9916         always verified.
9918 2020-09-04  Christophe Lyon  <christophe.lyon@linaro.org>
9920         PR target/96769
9921         * config/arm/thumb1.md: Move movsi splitter for
9922         arm_disable_literal_pool after the other movsi splitters.
9924 2020-09-04  Aldy Hernandez  <aldyh@redhat.com>
9926         * range-op.cc (range_operator::fold_range): Rename widest_irange
9927         to int_range_max.
9928         (operator_div::wi_fold): Same.
9929         (operator_lshift::op1_range): Same.
9930         (operator_rshift::op1_range): Same.
9931         (operator_cast::fold_range): Same.
9932         (operator_cast::op1_range): Same.
9933         (operator_bitwise_and::remove_impossible_ranges): Same.
9934         (operator_bitwise_and::op1_range): Same.
9935         (operator_abs::op1_range): Same.
9936         (range_cast): Same.
9937         (widest_irange_tests): Same.
9938         (range3_tests): Rename irange3 to int_range3.
9939         (int_range_max_tests): Rename from widest_irange_tests.
9940         Rename widest_irange to int_range_max.
9941         (operator_tests): Rename widest_irange to int_range_max.
9942         (range_tests): Same.
9943         * tree-vrp.c (find_case_label_range): Same.
9944         * value-range.cc (irange::irange_intersect): Same.
9945         (irange::invert): Same.
9946         * value-range.h: Same.
9948 2020-09-04  Richard Biener  <rguenther@suse.de>
9950         PR tree-optimization/96931
9951         * tree-cfgcleanup.c (cleanup_call_ctrl_altering_flag): If
9952         there's a fallthru edge and no abnormal edge the call is
9953         no longer control-altering.
9954         (cleanup_control_flow_bb): Pass down the BB to
9955         cleanup_call_ctrl_altering_flag.
9957 2020-09-04  Jakub Jelinek  <jakub@redhat.com>
9959         * lto-streamer.h (stream_input_location_now): Remove declaration.
9960         * lto-streamer-in.c (stream_input_location_now): Remove.
9961         (input_eh_region, input_struct_function_base): Use
9962         stream_input_location instead of stream_input_location_now.
9964 2020-09-04  Jakub Jelinek  <jakub@redhat.com>
9966         * lto-streamer.h (struct output_block): Add reset_locus member.
9967         * lto-streamer-out.c (clear_line_info): Set reset_locus to true.
9968         (lto_output_location_1): If reset_locus, clear it and ensure
9969         current_{file,line,col} is different from xloc members.
9971 2020-09-04  David Faust  <david.faust@oracle.com>
9973         * config/bpf/bpf.h (ASM_SPEC): Pass -mxbpf to gas, if specified.
9974         * config/bpf/bpf.c (bpf_output_call): Support indirect calls in xBPF.
9976 2020-09-03  Martin Jambor  <mjambor@suse.cz>
9978         PR tree-optimization/96820
9979         * tree-sra.c (create_access): Disqualify candidates with accesses
9980         beyond the end of the original aggregate.
9981         (maybe_add_sra_candidate): Check that candidate type size fits
9982         signed uhwi for the sake of consistency.
9984 2020-09-03  Will Schmidt  <will_schmidt@vnet.ibm.com>
9986         * config/rs6000/rs6000-call.c (rs6000_init_builtin): Update V2DI_type_node
9987         and unsigned_V2DI_type_node definitions.
9989 2020-09-03  Jakub Jelinek  <jakub@redhat.com>
9991         PR c++/96901
9992         * tree.h (struct decl_tree_traits): New type.
9993         (decl_tree_map): New typedef.
9995 2020-09-03  Jakub Jelinek  <jakub@redhat.com>
9997         PR lto/94311
9998         * gimple.h (gimple_location_ptr, gimple_phi_arg_location_ptr): New
9999         functions.
10000         * streamer-hooks.h (struct streamer_hooks): Add
10001         output_location_and_block callback.  Fix up formatting for
10002         output_location.
10003         (stream_output_location_and_block): Define.
10004         * lto-streamer.h (class lto_location_cache): Fix comment typo.  Add
10005         current_block member.
10006         (lto_location_cache::input_location_and_block): New method.
10007         (lto_location_cache::lto_location_cache): Initialize current_block.
10008         (lto_location_cache::cached_location): Add block member.
10009         (struct output_block): Add current_block member.
10010         (lto_output_location): Formatting fix.
10011         (lto_output_location_and_block): Declare.
10012         * lto-streamer.c (lto_streamer_hooks_init): Initialize
10013         streamer_hooks.output_location_and_block.
10014         * lto-streamer-in.c (lto_location_cache::cmp_loc): Also compare
10015         block members.
10016         (lto_location_cache::apply_location_cache): Handle blocks.
10017         (lto_location_cache::accept_location_cache,
10018         lto_location_cache::revert_location_cache): Fix up function comments.
10019         (lto_location_cache::input_location_and_block): New method.
10020         (lto_location_cache::input_location): Implement using
10021         input_location_and_block.
10022         (input_function): Invoke apply_location_cache after streaming in all
10023         bbs.
10024         * lto-streamer-out.c (clear_line_info): Set current_block.
10025         (lto_output_location_1): New function, moved from lto_output_location,
10026         added block handling.
10027         (lto_output_location): Implement using lto_output_location_1.
10028         (lto_output_location_and_block): New function.
10029         * gimple-streamer-in.c (input_phi): Use input_location_and_block
10030         to input and cache both location and block.
10031         (input_gimple_stmt): Likewise.
10032         * gimple-streamer-out.c (output_phi): Use
10033         stream_output_location_and_block.
10034         (output_gimple_stmt): Likewise.
10036 2020-09-03  Richard Biener  <rguenther@suse.de>
10038         * tree-vect-generic.c (tree_vec_extract): Remove odd
10039         special-casing of boolean vectors.
10040         * fold-const.c (fold_ternary_loc): Handle boolean vector
10041         type BIT_FIELD_REFs.
10043 2020-09-03  Hongtao Liu  <hongtao.liu@intel.com>
10045         PR target/87767
10046         * config/i386/i386-features.c
10047         (replace_constant_pool_with_broadcast): New function.
10048         (constant_pool_broadcast): Ditto.
10049         (class pass_constant_pool_broadcast): New pass.
10050         (make_pass_constant_pool_broadcast): Ditto.
10051         (remove_partial_avx_dependency): Call
10052         replace_constant_pool_with_broadcast under TARGET_AVX512F, it
10053         would save compile time when both pass rpad and cpb are
10054         available.
10055         (remove_partial_avx_dependency_gate): New function.
10056         (class pass_remove_partial_avx_dependency::gate): Call
10057         remove_partial_avx_dependency_gate.
10058         * config/i386/i386-passes.def: Insert new pass after combine.
10059         * config/i386/i386-protos.h
10060         (make_pass_constant_pool_broadcast): Declare.
10061         * config/i386/sse.md (*avx512dq_mul<mode>3<mask_name>_bcst):
10062         New define_insn.
10063         (*avx512f_mul<mode>3<mask_name>_bcst): Ditto.
10064         * config/i386/avx512fintrin.h (_mm512_set1_ps,
10065         _mm512_set1_pd,_mm512_set1_epi32, _mm512_set1_epi64): Adjusted.
10067 2020-09-02  Jonathan Wakely  <jwakely@redhat.com>
10069         PR c++/60304
10070         * ginclude/stdbool.h (bool, false, true): Never define for C++.
10072 2020-09-02  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
10074         * doc/invoke.texi (MSP430 options): Fix -mlarge description to
10075         indicate size_t is a 20-bit type.
10077 2020-09-02  Roger Sayle  <roger@nextmovesoftware.com>
10079         * config/pa/pa.c (hppa_rtx_costs) [ASHIFT, ASHIFTRT, LSHIFTRT]:
10080         Provide accurate costs for shifts of integer constants.
10082 2020-09-02  Jose E. Marchesi  <jose.marchesi@oracle.com>
10084         * config/bpf/bpf.c (bpf_asm_named_section): Delete.
10085         (TARGET_ASM_NAMED_SECTION): Likewise.
10087 2020-09-02  Jose E. Marchesi  <jemarch@gnu.org>
10089         * config.gcc: Use elfos.h in bpf-*-* targets.
10090         * config/bpf/bpf.h (MAX_OFILE_ALIGNMENT): Remove definition.
10091         (COMMON_ASM_OP): Likewise.
10092         (INIT_SECTION_ASM_OP): Likewise.
10093         (FINI_SECTION_ASM_OP): Likewise.
10094         (ASM_OUTPUT_SKIP): Likewise.
10095         (ASM_OUTPUT_ALIGNED_COMMON): Likewise.
10096         (ASM_OUTPUT_ALIGNED_LOCAL): Likewise.
10098 2020-09-01  Martin Sebor  <msebor@redhat.com>
10100         * builtins.c (compute_objsize):  Only replace the upper bound
10101         of a POINTER_PLUS offset when it's less than the lower bound.
10103 2020-09-01  Peter Bergner  <bergner@linux.ibm.com>
10105         PR target/96808
10106         * config/rs6000/rs6000-call.c (rs6000_gimple_fold_mma_builtin): Do not
10107         reuse accumulator memory reference for source and destination accesses.
10109 2020-09-01  Martin Liska  <mliska@suse.cz>
10111         * cfgrtl.c (rtl_create_basic_block): Use default value for
10112         growth vector function.
10113         * gimple.c (gimple_set_bb): Likewise.
10114         * symbol-summary.h: Likewise.
10115         * tree-cfg.c (init_empty_tree_cfg_for_function): Likewise.
10116         (build_gimple_cfg): Likewise.
10117         (create_bb): Likewise.
10118         (move_block_to_fn): Likewise.
10120 2020-09-01  Martin Liska  <mliska@suse.cz>
10122         * vec.h (vec_safe_grow): Change default of exact to false.
10123         (vec_safe_grow_cleared): Likewise.
10125 2020-09-01  Roger Sayle  <roger@nextmovesoftware.com>
10127         PR middle-end/90597
10128         * targhooks.c (default_vector_alignment): Return at least the
10129         GET_MODE_ALIGNMENT for the type's mode.
10131 2020-09-01  Richard Biener  <rguenther@suse.de>
10133         PR rtl-optimization/96812
10134         * tree-ssa-address.c (copy_ref_info): Also copy dependence info.
10135         * cfgrtl.h (duplicate_insn_chain): Adjust prototype.
10136         * cfgrtl.c (duplicate_insn_chain): Remap dependence info
10137         if requested.
10138         (cfg_layout_duplicate_bb): Make sure we remap dependence info.
10139         * modulo-sched.c (duplicate_insns_of_cycles): Remap dependence
10140         info.
10141         (generate_prolog_epilog): Adjust.
10142         * config/c6x/c6x.c (hwloop_optimize): Remap dependence info.
10144 2020-09-01  Kewen Lin  <linkw@gcc.gnu.org>
10146         * doc/sourcebuild.texi (has_arch_pwr5, has_arch_pwr6, has_arch_pwr7,
10147         has_arch_pwr8, has_arch_pwr9): Document.
10149 2020-08-31  Carl Love  <cel@us.ibm.com>
10151         PR target/85830
10152         * config/rs6000/altivec.h (vec_popcntb, vec_popcnth, vec_popcntw,
10153         vec_popcntd): Remove defines.
10155 2020-08-31  Marek Polacek  <polacek@redhat.com>
10156             Jason Merrill  <jason@redhat.com>
10158         PR c++/93529
10159         * tree.c (build_constructor_from_vec): New.
10160         * tree.h (build_constructor_from_vec): Declare.
10162 2020-08-31  Aldy Hernandez  <aldyh@redhat.com>
10164         PR tree-optimization/96818
10165         * tree-vrp.c (find_case_label_range): Cast label range to
10166         type of switch operand.
10168 2020-08-31  liuhongt  <hongtao.liu@intel.com>
10170         PR target/96551
10171         * config/i386/sse.md (vec_unpacku_float_hi_v16si): For vector
10172         compare to integer mask, don't use gen_rtx_LT, use
10173         ix86_expand_mask_vec_cmp instead.
10174         (vec_unpacku_float_hi_v16si): Ditto.
10176 2020-08-31  Jakub Jelinek  <jakub@redhat.com>
10178         * tree-cfg.c (verify_gimple_switch): If the first non-default case
10179         label has CASE_HIGH, verify it has the same type as CASE_LOW.
10181 2020-08-31  Feng Xue  <fxue@os.amperecomputing.com>
10183         PR ipa/96806
10184         * ipa-cp.c (decide_about_value): Use safe_add to avoid cost addition
10185         overflow.
10187 2020-08-31  Jakub Jelinek  <jakub@redhat.com>
10189         PR middle-end/54201
10190         * varasm.c: Include alloc-pool.h.
10191         (output_constant_pool_contents): Emit desc->mark < 0 entries as
10192         aliases.
10193         (struct constant_descriptor_rtx_data): New type.
10194         (constant_descriptor_rtx_data_cmp): New function.
10195         (struct const_rtx_data_hasher): New type.
10196         (const_rtx_data_hasher::hash, const_rtx_data_hasher::equal): New
10197         methods.
10198         (optimize_constant_pool): New function.
10199         (output_shared_constant_pool): Call it if TARGET_SUPPORTS_ALIASES.
10201 2020-08-31  Kewen Lin  <linkw@gcc.gnu.org>
10203         * doc/sourcebuild.texi (vect_len_load_store,
10204         vect_partial_vectors_usage_1, vect_partial_vectors_usage_2,
10205         vect_partial_vectors): Document.
10207 2020-08-30  Martin Sebor  <msebor@redhat.com>
10209         * builtins.c (access_ref::access_ref): Call get_size_range instead
10210         of get_range.
10212 2020-08-30  Jakub Jelinek  <jakub@redhat.com>
10214         * config/i386/sse.md (ssse3_pshufbv8qi): Use gen_int_mode instead of
10215         GEN_INT, and ix86_build_const_vector instead of gen_rtvec and
10216         gen_rtx_CONT_VECTOR.
10218 2020-08-29  Bill Schmidt  <wschmidt@linux.ibm.com>
10220         * config/rs6000/rs6000-builtin.def (MASK_FOR_STORE): Remove.
10221         * config/rs6000/rs6000-call.c (rs6000_expand_builtin): Remove
10222         all logic for ALTIVEC_BUILTIN_MASK_FOR_STORE.
10224 2020-08-28  Martin Sebor  <msebor@redhat.com>
10226         * attribs.c (init_attr_rdwr_indices): Use global access_mode.
10227         * attribs.h (struct attr_access): Same.
10228         * builtins.c (fold_builtin_strlen): Add argument.
10229         (compute_objsize): Declare.
10230         (get_range): Declare.
10231         (check_read_access): New function.
10232         (access_ref::access_ref): Define ctor.
10233         (warn_string_no_nul): Add arguments.  Handle -Wstrintop-overread.
10234         (check_nul_terminated_array): Handle source strings of different
10235         ranges of sizes.
10236         (expand_builtin_strlen): Remove warning code, call check_read_access
10237         instead.  Declare locals closer to their initialization.
10238         (expand_builtin_strnlen): Same.
10239         (maybe_warn_for_bound): New function.
10240         (warn_for_access): Remove argument.  Handle -Wstrintop-overread.
10241         (inform_access): Change argument type.
10242         (get_size_range): New function.
10243         (check_access): Remove unused arguments.  Add new arguments.  Handle
10244         -Wstrintop-overread.  Move warning code to helpers and call them.
10245         Call check_nul_terminated_array.
10246         (check_memop_access): Remove unnecessary and provide additional
10247         arguments in calls.
10248         (expand_builtin_memchr): Call check_read_access.
10249         (expand_builtin_strcat): Remove unnecessary and provide additional
10250         arguments in calls.
10251         (expand_builtin_strcpy): Same.
10252         (expand_builtin_strcpy_args): Same.  Avoid testing no-warning bit.
10253         (expand_builtin_stpcpy_1): Remove unnecessary and provide additional
10254         arguments in calls.
10255         (expand_builtin_stpncpy): Same.
10256         (check_strncat_sizes): Same.
10257         (expand_builtin_strncat): Remove unnecessary and provide additional
10258         arguments in calls.  Adjust comments.
10259         (expand_builtin_strncpy): Remove unnecessary and provide additional
10260         arguments in calls.
10261         (expand_builtin_memcmp): Remove warning code.  Call check_access.
10262         (expand_builtin_strcmp): Call check_access instead of
10263         check_nul_terminated_array.
10264         (expand_builtin_strncmp): Handle -Wstrintop-overread.
10265         (expand_builtin_fork_or_exec): Call check_access instead of
10266         check_nul_terminated_array.
10267         (expand_builtin): Same.
10268         (fold_builtin_1): Pass additional argument.
10269         (fold_builtin_n): Same.
10270         (fold_builtin_strpbrk): Remove calls to check_nul_terminated_array.
10271         (expand_builtin_memory_chk): Add comments.
10272         (maybe_emit_chk_warning): Remove unnecessary and provide additional
10273         arguments in calls.
10274         (maybe_emit_sprintf_chk_warning): Same.  Adjust comments.
10275         * builtins.h (warn_string_no_nul): Add arguments.
10276         (struct access_ref): Add member and ctor argument.
10277         (struct access_data): Add members and ctor.
10278         (check_access): Adjust signature.
10279         * calls.c (maybe_warn_nonstring_arg): Return an indication of
10280         whether a warning was issued.  Issue -Wstrintop-overread instead
10281         of -Wstringop-overflow.
10282         (append_attrname): Adjust to naming changes.
10283         (maybe_warn_rdwr_sizes): Same.  Remove unnecessary and provide
10284         additional arguments in calls.
10285         * calls.h (maybe_warn_nonstring_arg): Return bool.
10286         * doc/invoke.texi (-Wstringop-overread): Document new option.
10287         * gimple-fold.c (gimple_fold_builtin_strcpy): Provide an additional
10288         argument in call.
10289         (gimple_fold_builtin_stpcpy): Same.
10290         * tree-ssa-uninit.c (maybe_warn_pass_by_reference): Adjust to naming
10291         changes.
10292         * tree.h (enum access_mode): New type.
10294 2020-08-28  Bill Schmidt  <wschmidt@linux.ibm.com>
10296         * config/rs6000/rs6000.c (rs6000_call_aix): Remove test for r12.
10297         (rs6000_sibcall_aix): Likewise.
10299 2020-08-28  Andrew Stubbs  <ams@codesourcery.com>
10301         * config/gcn/gcn-tree.c (gcn_goacc_get_worker_red_decl): Add "true"
10302         parameter to vec_safe_grow_cleared.
10304 2020-08-28  Martin Sebor  <msebor@redhat.com>
10306         * ggc-common.c (gt_pch_save): Add argument to a call.
10308 2020-08-28  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>
10310         PR target/96357
10311         * config/aarch64/aarch64-sve.md
10312         (cond_sub<mode>_relaxed_const): Updated and renamed from
10313         cond_sub<mode>_any_const pattern.
10314         (cond_sub<mode>_strict_const): New pattern.
10316 2020-08-28  Wei Wentao  <weiwt.fnst@cn.fujitsu.com>
10318         * doc/rtl.texi: Fix typo.
10320 2020-08-28  Uros Bizjak    <ubizjak@gmail.com>
10322         PR target/96744
10323         * config/i386/i386-expand.c (split_double_mode): Also handle
10324         E_P2HImode and E_P2QImode.
10325         * config/i386/sse.md (MASK_DWI): New define_mode_iterator.
10326         (mov<mode>): New expander for P2HI,P2QI.
10327         (*mov<mode>_internal): New define_insn_and_split to split
10328         movement of P2QI/P2HI to 2 movqi/movhi patterns after reload.
10330 2020-08-28  liuhongt  <hongtao.liu@intel.com>
10332         * common/config/i386/i386-common.c (ix86_handle_option): Set
10333         AVX512DQ when AVX512VP2INTERSECT exists.
10335 2020-08-27  Jakub Jelinek  <jakub@redhat.com>
10337         PR target/65146
10338         * config/i386/i386.c (iamcu_alignment): Don't decrease alignment
10339         for TYPE_ATOMIC types.
10340         (ix86_local_alignment): Likewise.
10341         (ix86_minimum_alignment): Likewise.
10342         (x86_field_alignment): Likewise, and emit a -Wpsabi diagnostic
10343         for it.
10345 2020-08-27  Bill Schmidt  <wschmidt@linux.ibm.com>
10347         PR target/96787
10348         * config/rs6000/rs6000.c (rs6000_sibcall_aix): Support
10349         indirect call for ELFv2.
10351 2020-08-27  Richard Biener  <rguenther@suse.de>
10353         PR tree-optimization/96522
10354         * tree-ssa-address.c (copy_ref_info): Reset flow-sensitive
10355         info of the copied points-to.  Transfer bigger alignment
10356         via the access type.
10357         * tree-ssa-sccvn.c (eliminate_dom_walker::eliminate_stmt):
10358         Reset all flow-sensitive info.
10360 2020-08-27  Martin Liska  <mliska@suse.cz>
10362         * alias.c (init_alias_analysis): Set exact argument of a vector
10363         growth function to true.
10364         * calls.c (internal_arg_pointer_based_exp_scan): Likewise.
10365         * cfgbuild.c (find_many_sub_basic_blocks): Likewise.
10366         * cfgexpand.c (expand_asm_stmt): Likewise.
10367         * cfgrtl.c (rtl_create_basic_block): Likewise.
10368         * combine.c (combine_split_insns): Likewise.
10369         (combine_instructions): Likewise.
10370         * config/aarch64/aarch64-sve-builtins.cc (function_expander::add_output_operand): Likewise.
10371         (function_expander::add_input_operand): Likewise.
10372         (function_expander::add_integer_operand): Likewise.
10373         (function_expander::add_address_operand): Likewise.
10374         (function_expander::add_fixed_operand): Likewise.
10375         * df-core.c (df_worklist_dataflow_doublequeue): Likewise.
10376         * dwarf2cfi.c (update_row_reg_save): Likewise.
10377         * early-remat.c (early_remat::init_block_info): Likewise.
10378         (early_remat::finalize_candidate_indices): Likewise.
10379         * except.c (sjlj_build_landing_pads): Likewise.
10380         * final.c (compute_alignments): Likewise.
10381         (grow_label_align): Likewise.
10382         * function.c (temp_slots_at_level): Likewise.
10383         * fwprop.c (build_single_def_use_links): Likewise.
10384         (update_uses): Likewise.
10385         * gcc.c (insert_wrapper): Likewise.
10386         * genautomata.c (create_state_ainsn_table): Likewise.
10387         (add_vect): Likewise.
10388         (output_dead_lock_vect): Likewise.
10389         * genmatch.c (capture_info::capture_info): Likewise.
10390         (parser::finish_match_operand): Likewise.
10391         * genrecog.c (optimize_subroutine_group): Likewise.
10392         (merge_pattern_info::merge_pattern_info): Likewise.
10393         (merge_into_decision): Likewise.
10394         (print_subroutine_start): Likewise.
10395         (main): Likewise.
10396         * gimple-loop-versioning.cc (loop_versioning::loop_versioning): Likewise.
10397         * gimple.c (gimple_set_bb): Likewise.
10398         * graphite-isl-ast-to-gimple.c (translate_isl_ast_node_user): Likewise.
10399         * haifa-sched.c (sched_extend_luids): Likewise.
10400         (extend_h_i_d): Likewise.
10401         * insn-addr.h (insn_addresses_new): Likewise.
10402         * ipa-cp.c (gather_context_independent_values): Likewise.
10403         (find_more_contexts_for_caller_subset): Likewise.
10404         * ipa-devirt.c (final_warning_record::grow_type_warnings): Likewise.
10405         (ipa_odr_read_section): Likewise.
10406         * ipa-fnsummary.c (evaluate_properties_for_edge): Likewise.
10407         (ipa_fn_summary_t::duplicate): Likewise.
10408         (analyze_function_body): Likewise.
10409         (ipa_merge_fn_summary_after_inlining): Likewise.
10410         (read_ipa_call_summary): Likewise.
10411         * ipa-icf.c (sem_function::bb_dict_test): Likewise.
10412         * ipa-prop.c (ipa_alloc_node_params): Likewise.
10413         (parm_bb_aa_status_for_bb): Likewise.
10414         (ipa_compute_jump_functions_for_edge): Likewise.
10415         (ipa_analyze_node): Likewise.
10416         (update_jump_functions_after_inlining): Likewise.
10417         (ipa_read_edge_info): Likewise.
10418         (read_ipcp_transformation_info): Likewise.
10419         (ipcp_transform_function): Likewise.
10420         * ipa-reference.c (ipa_reference_write_optimization_summary): Likewise.
10421         * ipa-split.c (execute_split_functions): Likewise.
10422         * ira.c (find_moveable_pseudos): Likewise.
10423         * lower-subreg.c (decompose_multiword_subregs): Likewise.
10424         * lto-streamer-in.c (input_eh_regions): Likewise.
10425         (input_cfg): Likewise.
10426         (input_struct_function_base): Likewise.
10427         (input_function): Likewise.
10428         * modulo-sched.c (set_node_sched_params): Likewise.
10429         (extend_node_sched_params): Likewise.
10430         (schedule_reg_moves): Likewise.
10431         * omp-general.c (omp_construct_simd_compare): Likewise.
10432         * passes.c (pass_manager::create_pass_tab): Likewise.
10433         (enable_disable_pass): Likewise.
10434         * predict.c (determine_unlikely_bbs): Likewise.
10435         * profile.c (compute_branch_probabilities): Likewise.
10436         * read-rtl-function.c (function_reader::parse_block): Likewise.
10437         * read-rtl.c (rtx_reader::read_rtx_code): Likewise.
10438         * reg-stack.c (stack_regs_mentioned): Likewise.
10439         * regrename.c (regrename_init): Likewise.
10440         * rtlanal.c (T>::add_single_to_queue): Likewise.
10441         * sched-deps.c (init_deps_data_vector): Likewise.
10442         * sel-sched-ir.c (sel_extend_global_bb_info): Likewise.
10443         (extend_region_bb_info): Likewise.
10444         (extend_insn_data): Likewise.
10445         * symtab.c (symtab_node::create_reference): Likewise.
10446         * tracer.c (tail_duplicate): Likewise.
10447         * trans-mem.c (tm_region_init): Likewise.
10448         (get_bb_regions_instrumented): Likewise.
10449         * tree-cfg.c (init_empty_tree_cfg_for_function): Likewise.
10450         (build_gimple_cfg): Likewise.
10451         (create_bb): Likewise.
10452         (move_block_to_fn): Likewise.
10453         * tree-complex.c (tree_lower_complex): Likewise.
10454         * tree-if-conv.c (predicate_rhs_code): Likewise.
10455         * tree-inline.c (copy_bb): Likewise.
10456         * tree-into-ssa.c (get_ssa_name_ann): Likewise.
10457         (mark_phi_for_rewrite): Likewise.
10458         * tree-object-size.c (compute_builtin_object_size): Likewise.
10459         (init_object_sizes): Likewise.
10460         * tree-predcom.c (initialize_root_vars_store_elim_1): Likewise.
10461         (initialize_root_vars_store_elim_2): Likewise.
10462         (prepare_initializers_chain_store_elim): Likewise.
10463         * tree-ssa-address.c (addr_for_mem_ref): Likewise.
10464         (multiplier_allowed_in_address_p): Likewise.
10465         * tree-ssa-coalesce.c (ssa_conflicts_new): Likewise.
10466         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
10467         * tree-ssa-loop-ivopts.c (addr_offset_valid_p): Likewise.
10468         (get_address_cost_ainc): Likewise.
10469         * tree-ssa-loop-niter.c (discover_iteration_bound_by_body_walk): Likewise.
10470         * tree-ssa-pre.c (add_to_value): Likewise.
10471         (phi_translate_1): Likewise.
10472         (do_pre_regular_insertion): Likewise.
10473         (do_pre_partial_partial_insertion): Likewise.
10474         (init_pre): Likewise.
10475         * tree-ssa-propagate.c (ssa_prop_init): Likewise.
10476         (update_call_from_tree): Likewise.
10477         * tree-ssa-reassoc.c (optimize_range_tests_cmp_bitwise): Likewise.
10478         * tree-ssa-sccvn.c (vn_reference_lookup_3): Likewise.
10479         (vn_reference_lookup_pieces): Likewise.
10480         (eliminate_dom_walker::eliminate_push_avail): Likewise.
10481         * tree-ssa-strlen.c (set_strinfo): Likewise.
10482         (get_stridx_plus_constant): Likewise.
10483         (zero_length_string): Likewise.
10484         (find_equal_ptrs): Likewise.
10485         (printf_strlen_execute): Likewise.
10486         * tree-ssa-threadedge.c (set_ssa_name_value): Likewise.
10487         * tree-ssanames.c (make_ssa_name_fn): Likewise.
10488         * tree-streamer-in.c (streamer_read_tree_bitfields): Likewise.
10489         * tree-vect-loop.c (vect_record_loop_mask): Likewise.
10490         (vect_get_loop_mask): Likewise.
10491         (vect_record_loop_len): Likewise.
10492         (vect_get_loop_len): Likewise.
10493         * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): Likewise.
10494         * tree-vect-slp.c (vect_slp_convert_to_external): Likewise.
10495         (vect_bb_slp_scalar_cost): Likewise.
10496         (vect_bb_vectorization_profitable_p): Likewise.
10497         (vectorizable_slp_permutation): Likewise.
10498         * tree-vect-stmts.c (vectorizable_call): Likewise.
10499         (vectorizable_simd_clone_call): Likewise.
10500         (scan_store_can_perm_p): Likewise.
10501         (vectorizable_store): Likewise.
10502         * expr.c: Likewise.
10503         * vec.c (test_safe_grow_cleared): Likewise.
10504         * vec.h (vec_safe_grow): Likewise.
10505         (vec_safe_grow_cleared): Likewise.
10506         (vl_ptr>::safe_grow): Likewise.
10507         (vl_ptr>::safe_grow_cleared): Likewise.
10508         * config/c6x/c6x.c (insn_set_clock): Likewise.
10510 2020-08-27  Richard Biener  <rguenther@suse.de>
10512         * tree-pretty-print.c (dump_mem_ref): Handle TARGET_MEM_REFs.
10513         (dump_generic_node): Use dump_mem_ref also for TARGET_MEM_REF.
10515 2020-08-27  Alex Coplan  <alex.coplan@arm.com>
10517         * lra-constraints.c (canonicalize_reload_addr): New.
10518         (curr_insn_transform): Use canonicalize_reload_addr to ensure we
10519         generate canonical RTL for an address reload.
10521 2020-08-27  Zhiheng Xie  <xiezhiheng@huawei.com>
10523         * config/aarch64/aarch64-simd-builtins.def: Add proper FLAG
10524         for rounding intrinsics.
10526 2020-08-27  Zhiheng Xie  <xiezhiheng@huawei.com>
10528         * config/aarch64/aarch64-simd-builtins.def: Add proper FLAG
10529         for min/max intrinsics.
10531 2020-08-27  Richard Biener  <rguenther@suse.de>
10533         PR tree-optimization/96579
10534         * tree-ssa-reassoc.c (linearize_expr_tree): If we expand
10535         rhs via special ops make sure to swap operands.
10537 2020-08-27  Richard Biener  <rguenther@suse.de>
10539         PR tree-optimization/96565
10540         * tree-ssa-dse.c (dse_classify_store): Remove defs with
10541         no uses from further processing.
10543 2020-08-26  Göran Uddeborg  <goeran@uddeborg.se>
10545         PR gcov-profile/96285
10546         * common.opt, doc/invoke.texi: Clarify wording of
10547         -fprofile-exclude-files and adjust -fprofile-filter-files to
10548         match.
10550 2020-08-26  H.J. Lu  <hjl.tools@gmail.com>
10552         PR target/96802
10553         * config/i386/i386-options.c (ix86_valid_target_attribute_inner_p):
10554         Reject target("no-general-regs-only").
10556 2020-08-26  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
10558         * config/msp430/constraints.md (K): Change unused constraint to
10559         constraint to a const_int between 1 and 19.
10560         (P): New constraint.
10561         * config/msp430/msp430-protos.h (msp430x_logical_shift_right): Remove.
10562         (msp430_expand_shift): New.
10563         (msp430_output_asm_shift_insns): New.
10564         * config/msp430/msp430.c (msp430_rtx_costs): Remove shift costs.
10565         (CSH): Remove.
10566         (msp430_expand_helper): Remove hard-coded generation of some inline
10567         shift insns.
10568         (use_helper_for_const_shift): New.
10569         (msp430_expand_shift): New.
10570         (msp430_output_asm_shift_insns): New.
10571         (msp430_print_operand): Add new 'W' operand selector.
10572         (msp430x_logical_shift_right): Remove.
10573         * config/msp430/msp430.md (HPSI): New define_mode_iterator.
10574         (HDI): Likewise.
10575         (any_shift): New define_code_iterator.
10576         (shift_insn): New define_code_attr.
10577         Adjust unnamed insn patterns searched for by combine.
10578         (ashlhi3): Remove.
10579         (slli_1): Remove.
10580         (430x_shift_left): Remove.
10581         (slll_1): Remove.
10582         (slll_2): Remove.
10583         (ashlsi3): Remove.
10584         (ashldi3): Remove.
10585         (ashrhi3): Remove.
10586         (srai_1): Remove.
10587         (430x_arithmetic_shift_right): Remove.
10588         (srap_1): Remove.
10589         (srap_2): Remove.
10590         (sral_1): Remove.
10591         (sral_2): Remove.
10592         (ashrsi3): Remove.
10593         (ashrdi3): Remove.
10594         (lshrhi3): Remove.
10595         (srli_1): Remove.
10596         (430x_logical_shift_right): Remove.
10597         (srlp_1): Remove.
10598         (srll_1): Remove.
10599         (srll_2x): Remove.
10600         (lshrsi3): Remove.
10601         (lshrdi3): Remove.
10602         (<shift_insn><mode>3): New define_expand.
10603         (<shift_insn>hi3_430): New define_insn.
10604         (<shift_insn>si3_const): Likewise.
10605         (ashl<mode>3_430x): Likewise.
10606         (ashr<mode>3_430x): Likewise.
10607         (lshr<mode>3_430x): Likewise.
10608         (*bitbranch<mode>4_z): Replace renamed predicate msp430_bitpos with
10609         const_0_to_15_operand.
10610         * config/msp430/msp430.opt: New option -mmax-inline-shift=.
10611         * config/msp430/predicates.md (const_1_to_8_operand): New predicate.
10612         (const_0_to_15_operand): Rename msp430_bitpos predicate.
10613         (const_1_to_19_operand): New predicate.
10614         * doc/invoke.texi: Document -mmax-inline-shift=.
10616 2020-08-26  Aldy Hernandez  <aldyh@redhat.com>
10618         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Abstract code out to...
10619         * tree-vrp.c (find_case_label_range): ...here.  Rewrite for to use irange
10620         API.
10621         (simplify_stmt_for_jump_threading): Call find_case_label_range instead of
10622         duplicating the code in simplify_stmt_for_jump_threading.
10623         * tree-vrp.h (find_case_label_range): New prototype.
10625 2020-08-26  Richard Biener  <rguenther@suse.de>
10627         PR tree-optimization/96698
10628         * tree-vectorizer.h (loop_vec_info::reduc_latch_defs): New.
10629         (loop_vec_info::reduc_latch_slp_defs): Likewise.
10630         * tree-vect-stmts.c (vect_transform_stmt): Only record
10631         stmts to update PHI latches from, perform the update ...
10632         * tree-vect-loop.c (vect_transform_loop): ... here after
10633         vectorizing those PHIs.
10634         (info_for_reduction): Properly handle non-reduction PHIs.
10636 2020-08-26  Martin Liska  <mliska@suse.cz>
10638         * cgraphunit.c (process_symver_attribute): Match only symver
10639         TREE_PURPOSE.
10641 2020-08-26  Richard Biener  <rguenther@suse.de>
10643         PR tree-optimization/96783
10644         * tree-vect-stmts.c (get_group_load_store_type): Use
10645         VMAT_ELEMENTWISE for negative strides when we cannot
10646         use VMAT_STRIDED_SLP.
10648 2020-08-26  Martin Liska  <mliska@suse.cz>
10650         * doc/invoke.texi: Document how are pie and pic options merged.
10652 2020-08-26  Zhiheng Xie  <xiezhiheng@huawei.com>
10654         * config/aarch64/aarch64-simd-builtins.def: Add proper FLAG
10655         for add/sub arithmetic intrinsics.
10657 2020-08-26  Jakub Jelinek  <jakub@redhat.com>
10659         PR debug/96729
10660         * dwarf2out.c (dwarf2out_next_real_insn): Adjust function comment.
10661         (dwarf2out_var_location): Look for next_note only if next_real is
10662         non-NULL, in that case look for the first non-deleted
10663         NOTE_INSN_VAR_LOCATION between loc_note and next_real, if any.
10665 2020-08-26  Iain Buclaw  <ibuclaw@gdcproject.org>
10667         * config/tilepro/gen-mul-tables.cc (main): Define IN_TARGET_CODE to 1
10668         in the target file.
10670 2020-08-26  Martin Liska  <mliska@suse.cz>
10672         * cgraphunit.c (process_symver_attribute): Allow multiple
10673         symver attributes for one symbol.
10674         * doc/extend.texi: Document the change.
10676 2020-08-25  H.J. Lu  <hjl.tools@gmail.com>
10678         PR target/95863
10679         * config/i386/i386.h (CTZ_DEFINED_VALUE_AT_ZERO): Return 0/2.
10680         (CLZ_DEFINED_VALUE_AT_ZERO): Likewise.
10682 2020-08-25  Roger Sayle  <roger@nextmovesoftware.com>
10684         PR middle-end/87256
10685         * config/pa/pa.c (hppa_rtx_costs_shadd_p): New helper function
10686         to check for coefficients supported by shNadd and shladd,l.
10687         (hppa_rtx_costs):  Rewrite to avoid using estimates based upon
10688         FACTOR and enable recursing deeper into RTL expressions.
10690 2020-08-25  Roger Sayle  <roger@nextmovesoftware.com>
10692         * config/pa/pa.md (ashldi3): Additionally, on !TARGET_64BIT
10693         generate a two instruction shd/zdep sequence when shifting
10694         registers by suitable constants.
10695         (shd_internal): New define_expand to provide gen_shd_internal.
10697 2020-08-25  Richard Sandiford  <richard.sandiford@arm.com>
10699         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Rename
10700         __ARM_FEATURE_SVE_VECTOR_OPERATIONS to
10701         __ARM_FEATURE_SVE_VECTOR_OPERATORS.
10703 2020-08-25  Richard Sandiford  <richard.sandiford@arm.com>
10705         * config/aarch64/aarch64-sve-builtins.cc (add_sve_type_attribute):
10706         Take the ACLE name of the type as a parameter and add it as fourth
10707         argument to the "SVE type" attribute.
10708         (register_builtin_types): Update call accordingly.
10709         (register_tuple_type): Likewise.  Construct the name of the type
10710         earlier in order to do this.
10711         (get_arm_sve_vector_bits_attributes): New function.
10712         (handle_arm_sve_vector_bits_attribute): Report a more sensible
10713         error message if the attribute is applied to an SVE tuple type.
10714         Don't allow the attribute to be applied to an existing fixed-length
10715         SVE type.  Mangle the new type as __SVE_VLS<type, vector-bits>.
10716         Add a dummy TYPE_DECL to the new type.
10718 2020-08-25  Richard Sandiford  <richard.sandiford@arm.com>
10720         * config/aarch64/aarch64-sve-builtins.cc (DEF_SVE_TYPE): Add a
10721         leading "u" to each mangled name.
10723 2020-08-25  Richard Biener  <rguenther@suse.de>
10725         PR tree-optimization/96548
10726         PR tree-optimization/96760
10727         * tree-ssa-loop-im.c (tree_ssa_lim): Recompute RPO after
10728         store-motion.
10730 2020-08-25  Jakub Jelinek  <jakub@redhat.com>
10732         PR tree-optimization/96722
10733         * gimple.c (infer_nonnull_range): Formatting fix.
10734         (infer_nonnull_range_by_dereference): Return false for clobber stmts.
10736 2020-08-25  Jakub Jelinek  <jakub@redhat.com>
10738         PR tree-optimization/96758
10739         * tree-ssa-strlen.c (handle_builtin_string_cmp): If both cstlen1
10740         and cstlen2 are set, set cmpsiz to their minimum, otherwise use the
10741         one that is set.  If bound is used and smaller than cmpsiz, set cmpsiz
10742         to bound.  If both cstlen1 and cstlen2 are set, perform the optimization.
10744 2020-08-25  Martin Jambor  <mjambor@suse.cz>
10746         PR tree-optimization/96730
10747         * tree-sra.c (create_access): Disqualify any aggregate with negative
10748         offset access.
10749         (build_ref_for_model): Add assert that offset is non-negative.
10751 2020-08-25  Wei Wentao  <weiwt.fnst@cn.fujitsu.com>
10753         * rtl.def: Fix typo in comment.
10755 2020-08-25  Roger Sayle  <roger@nextmovesoftware.com>
10757         PR tree-optimization/21137
10758         * fold-const.c (fold_binary_loc) [NE_EXPR/EQ_EXPR]: Call
10759         STRIP_NOPS when checking whether to simplify ((x>>C1)&C2) != 0.
10761 2020-08-25  Andrew Pinski  <apinski@marvell.com>
10763         PR middle-end/64242
10764         * config/mips/mips.md (builtin_longjmp): Restore the frame
10765         pointer and stack pointer and gp.
10767 2020-08-25  Richard Biener  <rguenther@suse.de>
10769         PR debug/96690
10770         * dwarf2out.c (reference_to_unused): Make FUNCTION_DECL
10771         processing more consistent with respect to
10772         symtab->global_info_ready.
10773         (tree_add_const_value_attribute): Unconditionally call
10774         rtl_for_decl_init to do all mangling early but throw
10775         away the result if early_dwarf.
10777 2020-08-25  Hongtao Liu  <hongtao.liu@intel.com>
10779         PR target/96755
10780         * config/i386/sse.md: Correct the mode of NOT operands to
10781         SImode.
10783 2020-08-25  Jakub Jelinek  <jakub@redhat.com>
10785         PR tree-optimization/96715
10786         * match.pd (copysign(x,-x) -> -x): New simplification.
10788 2020-08-25  Jakub Jelinek  <jakub@redhat.com>
10790         PR target/95450
10791         * fold-const.c (native_interpret_real): For MODE_COMPOSITE_P modes
10792         punt if the to be returned REAL_CST does not encode to the bitwise
10793         same representation.
10795 2020-08-24  Gerald Pfeifer  <gerald@pfeifer.com>
10797         * doc/install.texi (Configuration): Switch valgrind.com to https.
10799 2020-08-24  Christophe Lyon  <christophe.lyon@linaro.org>
10801         PR target/94538
10802         PR target/94538
10803         * config/arm/thumb1.md: Disable set-constant splitter when
10804         TARGET_HAVE_MOVT.
10805         (thumb1_movsi_insn): Fix -mpure-code
10806         alternative.
10808 2020-08-24  Martin Liska  <mliska@suse.cz>
10810         * tree-vect-data-refs.c (dr_group_sort_cmp): Work on
10811         data_ref_pair.
10812         (vect_analyze_data_ref_accesses): Work on groups.
10813         (vect_find_stmt_data_reference): Add group_id argument and fill
10814         up dataref_groups vector.
10815         * tree-vect-loop.c (vect_get_datarefs_in_loop): Pass new
10816         arguments.
10817         (vect_analyze_loop_2): Likewise.
10818         * tree-vect-slp.c (vect_slp_analyze_bb_1): Pass argument.
10819         (vect_slp_bb_region): Likewise.
10820         (vect_slp_region): Likewise.
10821         (vect_slp_bb):Work on the entire BB.
10822         * tree-vectorizer.h (vect_analyze_data_ref_accesses): Add new
10823         argument.
10824         (vect_find_stmt_data_reference): Likewise.
10826 2020-08-24  Martin Liska  <mliska@suse.cz>
10828         PR tree-optimization/96597
10829         * tree-ssa-sccvn.c (vn_reference_lookup_call): Add missing
10830         initialization of ::punned.
10831         (vn_reference_insert): Use consistently false instead of 0.
10832         (vn_reference_insert_pieces): Likewise.
10834 2020-08-24  Hans-Peter Nilsson  <hp@axis.com>
10836         PR target/93372
10837         * reorg.c (fill_slots_from_thread): Allow trial insns that clobber
10838         TARGET_FLAGS_REGNUM as delay-slot fillers.
10840 2020-08-23  H.J. Lu  <hjl.tools@gmail.com>
10842         PR target/96744
10843         * config/i386/i386-options.c (IX86_ATTR_IX86_YES): New.
10844         (IX86_ATTR_IX86_NO): Likewise.
10845         (ix86_opt_type): Add ix86_opt_ix86_yes and ix86_opt_ix86_no.
10846         (ix86_valid_target_attribute_inner_p): Handle general-regs-only,
10847         ix86_opt_ix86_yes and ix86_opt_ix86_no.
10848         (ix86_option_override_internal): Check opts->x_ix86_target_flags
10849         instead of opts->x_ix86_target_flags.
10850         * doc/extend.texi: Document target("general-regs-only") function
10851         attribute.
10853 2020-08-21  Richard Sandiford  <richard.sandiford@arm.com>
10855         * doc/extend.texi: Update links to Arm docs.
10856         * doc/invoke.texi: Likewise.
10858 2020-08-21  Hongtao Liu  <hongtao.liu@intel.com>
10860         PR target/96262
10861         * config/i386/i386-expand.c
10862         (ix86_expand_vec_shift_qihi_constant): Refine.
10864 2020-08-21  Alex Coplan  <alex.coplan@arm.com>
10866         PR jit/63854
10867         * gcc.c (set_static_spec): New.
10868         (set_static_spec_owned): New.
10869         (set_static_spec_shared): New.
10870         (driver::maybe_putenv_COLLECT_LTO_WRAPPER): Use
10871         set_static_spec_owned() to take ownership of lto_wrapper_file
10872         such that it gets freed in driver::finalize.
10873         (driver::maybe_run_linker): Use set_static_spec_shared() to
10874         ensure that we don't try and free() the static string "ld",
10875         also ensuring that any previously-allocated string in
10876         linker_name_spec is freed. Likewise with argv0.
10877         (driver::finalize): Use set_static_spec_shared() when resetting
10878         specs that previously had allocated strings; remove if(0)
10879         around call to free().
10881 2020-08-21  Senthil Kumar Selvaraj  <saaadhu@gcc.gnu.org>
10883         * emit-rtl.c (try_split): Call copy_frame_info_to_split_insn
10884         to split certain RTX_FRAME_RELATED_P insns.
10885         * recog.c (copy_frame_info_to_split_insn): New function.
10886         (peep2_attempt): Split copying of frame related info of
10887         RTX_FRAME_RELATED_P insns into above function and call it.
10888         * recog.h (copy_frame_info_to_split_insn): Declare it.
10890 2020-08-21  liuhongt  <hongtao.liu@intel.com>
10892         PR target/88808
10893         * config/i386/i386.c (ix86_preferred_reload_class): Allow
10894         QImode data go into mask registers.
10895         * config/i386/i386.md: (*movhi_internal): Adjust constraints
10896         for mask registers.
10897         (*movqi_internal): Ditto.
10898         (*anddi_1): Support mask register operations
10899         (*and<mode>_1): Ditto.
10900         (*andqi_1): Ditto.
10901         (*andn<mode>_1): Ditto.
10902         (*<code><mode>_1): Ditto.
10903         (*<code>qi_1): Ditto.
10904         (*one_cmpl<mode>2_1): Ditto.
10905         (*one_cmplsi2_1_zext): Ditto.
10906         (*one_cmplqi2_1): Ditto.
10907         (define_peephole2): Move constant 0/-1 directly into mask
10908         registers.
10909         * config/i386/predicates.md (mask_reg_operand): New predicate.
10910         * config/i386/sse.md (define_split): Add post-reload splitters
10911         that would convert "generic" patterns to mask patterns.
10912         (*knotsi_1_zext): New define_insn.
10914 2020-08-21  liuhongt  <hongtao.liu@intel.com>
10916         * config/i386/x86-tune-costs.h (skylake_cost): Adjust cost
10917         model.
10919 2020-08-21  liuhongt  <hongtao.liu@intel.com>
10921         * config/i386/i386.c (inline_secondary_memory_needed):
10922         No memory is needed between mask regs and gpr.
10923         (ix86_hard_regno_mode_ok): Add condition TARGET_AVX512F for
10924         mask regno.
10925         * config/i386/i386.h (enum reg_class): Add INT_MASK_REGS.
10926         (REG_CLASS_NAMES): Ditto.
10927         (REG_CLASS_CONTENTS): Ditto.
10928         * config/i386/i386.md: Exclude mask register in
10929         define_peephole2 which is avaiable only for gpr.
10931 2020-08-21  H.J. Lu  <hjl.tools@gmail.com>
10933         PR target/71453
10934         * config/i386/i386.h (struct processor_costs): Add member
10935         mask_to_integer, integer_to_mask, mask_load[3], mask_store[3],
10936         mask_move.
10937         * config/i386/x86-tune-costs.h (ix86_size_cost, i386_cost,
10938         i386_cost, pentium_cost, lakemont_cost, pentiumpro_cost,
10939         geode_cost, k6_cost, athlon_cost, k8_cost, amdfam10_cost,
10940         bdver_cost, znver1_cost, znver2_cost, skylake_cost,
10941         btver1_cost, btver2_cost, pentium4_cost, nocona_cost,
10942         atom_cost, slm_cost, intel_cost, generic_cost, core_cost):
10943         Initialize mask_load[3], mask_store[3], mask_move,
10944         integer_to_mask, mask_to_integer for all target costs.
10945         * config/i386/i386.c (ix86_register_move_cost): Using cost
10946         model of mask registers.
10947         (inline_memory_move_cost): Ditto.
10948         (ix86_register_move_cost): Ditto.
10950 2020-08-20  Iain Buclaw  <ibuclaw@gdcproject.org>
10952         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Don't include
10953         VxWorks header files if -fself-test is used.
10954         (STARTFILE_PREFIX_SPEC): Avoid using VSB_DIR if -fself-test is used.
10956 2020-08-20  Joe Ramsay  <Joe.Ramsay@arm.com>
10958         PR target/96683
10959         * config/arm/mve.md (mve_vst1q_f<mode>): Require MVE memory operand for
10960         destination.
10961         (mve_vst1q_<supf><mode>): Likewise.
10963 2020-08-19  2020-08-19  Carl Love  <cel@us.ibm.com>
10965         * config/rs6000/rs6000-builtin.def (BU_P10V_0, BU_P10V_1,
10966         BU_P10V_2, BU_P10V_3): Rename BU_P10V_VSX_0, BU_P10V_VSX_1,
10967         BU_P10V_VSX_2, BU_P10V_VSX_3 respectively.
10968         (BU_P10V_4): Remove.
10969         (BU_P10V_AV_0, BU_P10V_AV_1, BU_P10V_AV_2, BU_P10V_AV_3, BU_P10V_AV_4):
10970         New definitions for Power 10 Altivec macros.
10971         (VSTRIBR, VSTRIHR, VSTRIBL, VSTRIHL, VSTRIBR_P, VSTRIHR_P,
10972         VSTRIBL_P, VSTRIHL_P, MTVSRBM, MTVSRHM, MTVSRWM, MTVSRDM, MTVSRQM,
10973         VEXPANDMB, VEXPANDMH, VEXPANDMW, VEXPANDMD, VEXPANDMQ, VEXTRACTMB,
10974         VEXTRACTMH, VEXTRACTMW, VEXTRACTMD, VEXTRACTMQ): Replace macro
10975         expansion BU_P10V_1 with BU_P10V_AV_1.
10976         (VCLRLB, VCLRRB, VCFUGED, VCLZDM, VCTZDM, VPDEPD, VPEXTD, VGNB,
10977         VCNTMBB, VCNTMBH, VCNTMBW, VCNTMBD): Replace macro expansion
10978         BU_P10V_2 with  BU_P10V_AV_2.
10979         (VEXTRACTBL, VEXTRACTHL, VEXTRACTWL, VEXTRACTDL, VEXTRACTBR, VEXTRACTHR,
10980         VEXTRACTWR, VEXTRACTDR, VINSERTGPRBL, VINSERTGPRHL, VINSERTGPRWL,
10981         VINSERTGPRDL, VINSERTVPRBL, VINSERTVPRHL, VINSERTVPRWL, VINSERTGPRBR,
10982         VINSERTGPRHR, VINSERTGPRWR, VINSERTGPRDR, VINSERTVPRBR, VINSERTVPRHR,
10983         VINSERTVPRWR, VREPLACE_ELT_V4SI, VREPLACE_ELT_UV4SI, VREPLACE_ELT_V2DF,
10984         VREPLACE_ELT_V4SF, VREPLACE_ELT_V2DI, VREPLACE_ELT_UV2DI, VREPLACE_UN_V4SI,
10985         VREPLACE_UN_UV4SI, VREPLACE_UN_V4SF, VREPLACE_UN_V2DI, VREPLACE_UN_UV2DI,
10986         VREPLACE_UN_V2DF, VSLDB_V16QI, VSLDB_V8HI, VSLDB_V4SI, VSLDB_V2DI,
10987         VSRDB_V16QI, VSRDB_V8HI, VSRDB_V4SI, VSRDB_V2DI): Replace macro expansion
10988         BU_P10V_3 with BU_P10V_AV_3.
10989         (VXXSPLTIW_V4SI, VXXSPLTIW_V4SF, VXXSPLTID): Replace macro expansion
10990         BU_P10V_1 with BU_P10V_AV_1.
10991         (XXGENPCVM_V16QI, XXGENPCVM_V8HI, XXGENPCVM_V4SI, XXGENPCVM_V2DI):
10992         Replace macro expansion BU_P10V_2 with BU_P10V_VSX_2.
10993         (VXXSPLTI32DX_V4SI, VXXSPLTI32DX_V4SF, VXXBLEND_V16QI, VXXBLEND_V8HI,
10994         VXXBLEND_V4SI, VXXBLEND_V2DI, VXXBLEND_V4SF, VXXBLEND_V2DF): Replace macor
10995         expansion BU_P10V_3 with BU_P10V_VSX_3.
10996         (XXEVAL, VXXPERMX): Replace macro expansion BU_P10V_4 with BU_P10V_VSX_4.
10997         (XVCVBF16SP, XVCVSPBF16): Replace macro expansion BU_VSX_1 with
10998         BU_P10V_VSX_1. Also change MISC to CONST.
10999         * config/rs6000/rs6000-c.c: (P10_BUILTIN_VXXPERMX): Replace with
11000         P10V_BUILTIN_VXXPERMX.
11001         (P10_BUILTIN_VCLRLB, P10_BUILTIN_VCLRLB, P10_BUILTIN_VCLRRB,
11002         P10_BUILTIN_VGNB, P10_BUILTIN_XXEVAL, P10_BUILTIN_VXXPERMX,
11003         P10_BUILTIN_VEXTRACTBL, P10_BUILTIN_VEXTRACTHL, P10_BUILTIN_VEXTRACTWL,
11004         P10_BUILTIN_VEXTRACTDL, P10_BUILTIN_VINSERTGPRHL,
11005         P10_BUILTIN_VINSERTGPRWL, P10_BUILTIN_VINSERTGPRDL,
11006         P10_BUILTIN_VINSERTVPRBL, P10_BUILTIN_VINSERTVPRHL,
11007         P10_BUILTIN_VEXTRACTBR, P10_BUILTIN_VEXTRACTHR,
11008         P10_BUILTIN_VEXTRACTWR, P10_BUILTIN_VEXTRACTDR,
11009         P10_BUILTIN_VINSERTGPRBR, P10_BUILTIN_VINSERTGPRHR,
11010         P10_BUILTIN_VINSERTGPRWR, P10_BUILTIN_VINSERTGPRDR,
11011         P10_BUILTIN_VINSERTVPRBR, P10_BUILTIN_VINSERTVPRHR,
11012         P10_BUILTIN_VINSERTVPRWR, P10_BUILTIN_VREPLACE_ELT_UV4SI,
11013         P10_BUILTIN_VREPLACE_ELT_V4SI, P10_BUILTIN_VREPLACE_ELT_UV2DI,
11014         P10_BUILTIN_VREPLACE_ELT_V2DI, P10_BUILTIN_VREPLACE_ELT_V2DF,
11015         P10_BUILTIN_VREPLACE_UN_UV4SI, P10_BUILTIN_VREPLACE_UN_V4SI,
11016         P10_BUILTIN_VREPLACE_UN_V4SF, P10_BUILTIN_VREPLACE_UN_UV2DI,
11017         P10_BUILTIN_VREPLACE_UN_V2DI, P10_BUILTIN_VREPLACE_UN_V2DF,
11018         P10_BUILTIN_VSLDB_V16QI, P10_BUILTIN_VSLDB_V16QI,
11019         P10_BUILTIN_VSLDB_V8HI, P10_BUILTIN_VSLDB_V4SI,
11020         P10_BUILTIN_VSLDB_V2DI, P10_BUILTIN_VXXSPLTIW_V4SI,
11021         P10_BUILTIN_VXXSPLTIW_V4SF, P10_BUILTIN_VXXSPLTID,
11022         P10_BUILTIN_VXXSPLTI32DX_V4SI, P10_BUILTIN_VXXSPLTI32DX_V4SF,
11023         P10_BUILTIN_VXXBLEND_V16QI, P10_BUILTIN_VXXBLEND_V8HI,
11024         P10_BUILTIN_VXXBLEND_V4SI, P10_BUILTIN_VXXBLEND_V2DI,
11025         P10_BUILTIN_VXXBLEND_V4SF, P10_BUILTIN_VXXBLEND_V2DF,
11026         P10_BUILTIN_VSRDB_V16QI, P10_BUILTIN_VSRDB_V8HI,
11027         P10_BUILTIN_VSRDB_V4SI, P10_BUILTIN_VSRDB_V2DI,
11028         P10_BUILTIN_VSTRIBL, P10_BUILTIN_VSTRIHL,
11029         P10_BUILTIN_VSTRIBL_P, P10_BUILTIN_VSTRIHL_P,
11030         P10_BUILTIN_VSTRIBR, P10_BUILTIN_VSTRIHR,
11031         P10_BUILTIN_VSTRIBR_P, P10_BUILTIN_VSTRIHR_P,
11032         P10_BUILTIN_MTVSRBM, P10_BUILTIN_MTVSRHM,
11033         P10_BUILTIN_MTVSRWM, P10_BUILTIN_MTVSRDM,
11034         P10_BUILTIN_MTVSRQM, P10_BUILTIN_VCNTMBB,
11035         P10_BUILTIN_VCNTMBH, P10_BUILTIN_VCNTMBW,
11036         P10_BUILTIN_VCNTMBD, P10_BUILTIN_VEXPANDMB,
11037         P10_BUILTIN_VEXPANDMH, P10_BUILTIN_VEXPANDMW,
11038         P10_BUILTIN_VEXPANDMD, P10_BUILTIN_VEXPANDMQ,
11039         P10_BUILTIN_VEXTRACTMB, P10_BUILTIN_VEXTRACTMH,
11040         P10_BUILTIN_VEXTRACTMW, P10_BUILTIN_VEXTRACTMD,
11041         P10_BUILTIN_VEXTRACTMQ, P10_BUILTIN_XVTLSBB_ZEROS,
11042         P10_BUILTIN_XVTLSBB_ONES): Replace with
11043         P10V_BUILTIN_VCLRLB, P10V_BUILTIN_VCLRLB, P10V_BUILTIN_VCLRRB,
11044         P10V_BUILTIN_VGNB, P10V_BUILTIN_XXEVAL, P10V_BUILTIN_VXXPERMX,
11045         P10V_BUILTIN_VEXTRACTBL, P10V_BUILTIN_VEXTRACTHL, P10V_BUILTIN_VEXTRACTWL,
11046         P10V_BUILTIN_VEXTRACTDL, P10V_BUILTIN_VINSERTGPRHL,
11047         P10V_BUILTIN_VINSERTGPRWL, P10V_BUILTIN_VINSERTGPRDL,
11048         P10V_BUILTIN_VINSERTVPRBL,P10V_BUILTIN_VINSERTVPRHL,
11049         P10V_BUILTIN_VEXTRACTBR, P10V_BUILTIN_VEXTRACTHR
11050         P10V_BUILTIN_VEXTRACTWR, P10V_BUILTIN_VEXTRACTDR,
11051         P10V_BUILTIN_VINSERTGPRBR, P10V_BUILTIN_VINSERTGPRHR,
11052         P10V_BUILTIN_VINSERTGPRWR, P10V_BUILTIN_VINSERTGPRDR,
11053         P10V_BUILTIN_VINSERTVPRBR, P10V_BUILTIN_VINSERTVPRHR,
11054         P10V_BUILTIN_VINSERTVPRWR, P10V_BUILTIN_VREPLACE_ELT_UV4SI,
11055         P10V_BUILTIN_VREPLACE_ELT_V4SI, P10V_BUILTIN_VREPLACE_ELT_UV2DI,
11056         P10V_BUILTIN_VREPLACE_ELT_V2DI, P10V_BUILTIN_VREPLACE_ELT_V2DF,
11057         P10V_BUILTIN_VREPLACE_UN_UV4SI, P10V_BUILTIN_VREPLACE_UN_V4SI,
11058         P10V_BUILTIN_VREPLACE_UN_V4SF, P10V_BUILTIN_VREPLACE_UN_UV2DI,
11059         P10V_BUILTIN_VREPLACE_UN_V2DI, P10V_BUILTIN_VREPLACE_UN_V2DF,
11060         P10V_BUILTIN_VSLDB_V16QI, P10V_BUILTIN_VSLDB_V16QI,
11061         P10V_BUILTIN_VSLDB_V8HI, P10V_BUILTIN_VSLDB_V4SI,
11062         P10V_BUILTIN_VSLDB_V2DI, P10V_BUILTIN_VXXSPLTIW_V4SI,
11063         P10V_BUILTIN_VXXSPLTIW_V4SF, P10V_BUILTIN_VXXSPLTID,
11064         P10V_BUILTIN_VXXSPLTI32DX_V4SI, P10V_BUILTIN_VXXSPLTI32DX_V4SF,
11065         P10V_BUILTIN_VXXBLEND_V16QI, P10V_BUILTIN_VXXBLEND_V8HI,
11066         P10V_BUILTIN_VXXBLEND_V4SI, P10V_BUILTIN_VXXBLEND_V2DI,
11067         P10V_BUILTIN_VXXBLEND_V4SF, P10V_BUILTIN_VXXBLEND_V2DF,
11068         P10V_BUILTIN_VSRDB_V16QI, P10V_BUILTIN_VSRDB_V8HI,
11069         P10V_BUILTIN_VSRDB_V4SI, P10V_BUILTIN_VSRDB_V2DI,
11070         P10V_BUILTIN_VSTRIBL, P10V_BUILTIN_VSTRIHL,
11071         P10V_BUILTIN_VSTRIBL_P, P10V_BUILTIN_VSTRIHL_P,
11072         P10V_BUILTIN_VSTRIBR, P10V_BUILTIN_VSTRIHR,
11073         P10V_BUILTIN_VSTRIBR_P, P10V_BUILTIN_VSTRIHR_P,
11074         P10V_BUILTIN_MTVSRBM, P10V_BUILTIN_MTVSRHM,
11075         P10V_BUILTIN_MTVSRWM, P10V_BUILTIN_MTVSRDM,
11076         P10V_BUILTIN_MTVSRQM, P10V_BUILTIN_VCNTMBB,
11077         P10V_BUILTIN_VCNTMBH, P10V_BUILTIN_VCNTMBW,
11078         P10V_BUILTIN_VCNTMBD, P10V_BUILTIN_VEXPANDMB,
11079         P10V_BUILTIN_VEXPANDMH, P10V_BUILTIN_VEXPANDMW,
11080         P10V_BUILTIN_VEXPANDMD, P10V_BUILTIN_VEXPANDMQ,
11081         P10V_BUILTIN_VEXTRACTMB, P10V_BUILTIN_VEXTRACTMH,
11082         P10V_BUILTIN_VEXTRACTMW, P10V_BUILTIN_VEXTRACTMD,
11083         P10V_BUILTIN_VEXTRACTMQ, P10V_BUILTIN_XVTLSBB_ZEROS,
11084         P10V_BUILTIN_XVTLSBB_ONES respectively.
11085         * config/rs6000/rs6000-call.c: Ditto above, change P10_BUILTIN_name to
11086         P10V_BUILTIN_name.
11087         (P10_BUILTIN_XVCVSPBF16, P10_BUILTIN_XVCVBF16SP): Change to
11088         P10V_BUILTIN_XVCVSPBF16, P10V_BUILTIN_XVCVBF16SP respectively.
11090 2020-08-19  Bill Schmidt  <wschmidt@linux.ibm.com>
11092         * config/rs6000/rs6000-logue.c (rs6000_decl_ok_for_sibcall):
11093         Sibcalls are always legal when the caller doesn't preserve r2.
11095 2020-08-19  Uroš Bizjak  <ubizjak@gmail.com>
11097         * config/i386/i386-expand.c (ix86_expand_builtin)
11098         [case IX86_BUILTIN_ENQCMD, case IX86_BUILTIN_ENQCMDS]:
11099         Rewrite expansion to use code_for_enqcmd.
11100         [case IX86_BUILTIN_WRSSD, case IX86_BUILTIN_WRSSQ]:
11101         Rewrite expansion to use code_for_wrss.
11102         [case IX86_BUILTIN_WRUSSD, case IX86_BUILTIN_WRUSSD]:
11103         Rewrite expansion to use code_for_wrss.
11105 2020-08-19  Feng Xue  <fxue@os.amperecomputing.com>
11107         PR tree-optimization/94234
11108         * match.pd ((PTR_A + OFF) - (PTR_B + OFF)) -> (PTR_A - PTR_B): New
11109         simplification.
11111 2020-08-19  H.J. Lu  <hjl.tools@gmail.com>
11113         * common/config/i386/cpuinfo.h (get_intel_cpu): Detect Rocket
11114         Lake and Alder Lake.
11116 2020-08-19  Peixin Qiao  <qiaopeixin@huawei.com>
11118         * config/aarch64/aarch64.c (aarch64_init_cumulative_args): Remove
11119         "fndecl && TREE_PUBLIC (fndecl)" check since it prevents the funtion
11120         type check when calling via a function pointer or when calling a static
11121         function.
11123 2020-08-19  Kewen Lin  <linkw@linux.ibm.com>
11125         * opts-global.c (decode_options): Call target_option_override_hook
11126         before it prints for --help=*.
11128 2020-08-18  Peter Bergner  <bergner@linux.ibm.com>
11130         * config/rs6000/rs6000-builtin.def (BU_VSX_1): Rename xvcvbf16sp to
11131         xvcvbf16spn.
11132         * config/rs6000/rs6000-call.c (builtin_function_type): Likewise.
11133         * config/rs6000/vsx.md: Likewise.
11134         * doc/extend.texi: Likewise.
11136 2020-08-18  Aaron Sawdey  <acsawdey@linux.ibm.com>
11138         * config/rs6000/rs6000-string.c (gen_lxvl_stxvl_move):
11139         Helper function.
11140         (expand_block_move): Add lxvl/stxvl, vector pair, and
11141         unaligned VSX.
11142         * config/rs6000/rs6000.c (rs6000_option_override_internal):
11143         Default value for -mblock-ops-vector-pair.
11144         * config/rs6000/rs6000.opt: Add -mblock-ops-vector-pair.
11146 2020-08-18  Aldy Hernandez  <aldyh@redhat.com>
11148         * vr-values.c (check_for_binary_op_overflow): Change type of store
11149         to range_query.
11150         (vr_values::adjust_range_with_scev): Abstract most of the code...
11151         (range_of_var_in_loop): ...here.  Remove value_range_equiv uses.
11152         (simplify_using_ranges::simplify_using_ranges): Change type of store
11153         to range_query.
11154         * vr-values.h (class range_query): New.
11155         (class simplify_using_ranges): Use range_query.
11156         (class vr_values): Add OVERRIDE to get_value_range.
11157         (range_of_var_in_loop): New.
11159 2020-08-18  Martin Sebor  <msebor@redhat.com>
11161         PR middle-end/96665
11162         PR middle-end/78257
11163         * expr.c (convert_to_bytes): Replace statically allocated buffer with
11164         a dynamically allocated one of sufficient size.
11166 2020-08-18  Martin Sebor  <msebor@redhat.com>
11168         PR tree-optimization/96670
11169         PR middle-end/78257
11170         * gimple-fold.c (gimple_fold_builtin_memchr): Call byte_representation
11171         to get it, not string_constant.
11173 2020-08-18  Hu Jiangping  <hujiangping@cn.fujitsu.com>
11175         * doc/gimple.texi (gimple_debug_begin_stmt_p): Add return type.
11176         (gimple_debug_inline_entry_p, gimple_debug_nonbind_marker_p): Likewise.
11178 2020-08-18  Martin Sebor  <msebor@redhat.com>
11180         * fold-const.c (native_encode_expr): Update comment.
11182 2020-08-18  Uroš Bizjak  <ubizjak@gmail.com>
11184         PR target/96536
11185         * config/i386/i386.md (restore_stack_nonlocal): Add missing compare
11186         RTX.  Rewrite expander to use high-level functions in RTL construction.
11188 2020-08-18  liuhongt  <hongtao.liu@intel.com>
11190         PR target/96562
11191         PR target/93897
11192         * config/i386/i386-expand.c (ix86_expand_pinsr): Don't use
11193         pinsr for TImode.
11194         (ix86_expand_pextr): Don't use pextr for TImode.
11196 2020-08-17  Uroš Bizjak  <ubizjak@gmail.com>
11198         * config/i386/i386-builtin.def (__builtin_ia32_bextri_u32)
11199         (__builtin_ia32_bextri_u64): Use CODE_FOR_nothing.
11200         * config/i386/i386.md (@tbm_bextri_<mode>):
11201         Implement as parametrized name pattern.
11202         (@rdrand<mode>): Ditto.
11203         (@rdseed<mode>): Ditto.
11204         * config/i386/i386-expand.c (ix86_expand_builtin)
11205         [case IX86_BUILTIN_BEXTRI32, case IX86_BUILTIN_BEXTRI64]:
11206         Update for parameterized name patterns.
11207         [case IX86_BUILTIN_RDRAND16_STEP, case IX86_BUILTIN_RDRAND32_STEP]
11208         [case IX86_BUILTIN_RDRAND64_STEP]: Ditto.
11209         [case IX86_BUILTIN_RDSEED16_STEP, case IX86_BUILTIN_RDSEED32_STEP]
11210         [case IX86_BUILTIN_RDSEED64_STEP]: Ditto.
11212 2020-08-17  Aldy Hernandez  <aldyh@redhat.com>
11214         * vr-values.c (vr_values::get_value_range): Add stmt param.
11215         (vr_values::extract_range_from_comparison): Same.
11216         (vr_values::extract_range_from_assignment): Pass stmt to
11217         extract_range_from_comparison.
11218         (vr_values::adjust_range_with_scev): Pass stmt to get_value_range.
11219         (simplify_using_ranges::vrp_evaluate_conditional): Add stmt param.
11220         Pass stmt to get_value_range.
11221         (simplify_using_ranges::vrp_visit_cond_stmt): Pass stmt to
11222         get_value_range.
11223         (simplify_using_ranges::simplify_abs_using_ranges): Same.
11224         (simplify_using_ranges::simplify_div_or_mod_using_ranges): Same.
11225         (simplify_using_ranges::simplify_bit_ops_using_ranges): Same.
11226         (simplify_using_ranges::simplify_cond_using_ranges_1): Same.
11227         (simplify_using_ranges::simplify_switch_using_ranges): Same.
11228         (simplify_using_ranges::simplify_float_conversion_using_ranges): Same.
11229         * vr-values.h (class vr_values): Add stmt arg to
11230         vrp_evaluate_conditional_warnv_with_ops.
11231         Add stmt arg to extract_range_from_comparison and get_value_range.
11232         (simplify_using_ranges::get_value_range): Add stmt arg.
11234 2020-08-17  liuhongt  <hongtao.liu@intel.com>
11236         PR target/96350
11237         * config/i386/i386.c (ix86_legitimate_constant_p): Return
11238         false for ENDBR immediate.
11239         (ix86_legitimate_address_p): Ditto.
11240         * config/i386/predicates.md
11241         (x86_64_immediate_operand): Exclude ENDBR immediate.
11242         (x86_64_zext_immediate_operand): Ditto.
11243         (x86_64_dwzext_immediate_operand): Ditto.
11244         (ix86_endbr_immediate_operand): New predicate.
11246 2020-08-16  Roger Sayle  <roger@nextmovesoftware.com>
11248         * simplify-rtx.c (simplify_unary_operation_1) [SIGN_EXTEND]:
11249         Simplify (sign_extend:M (truncate:N (lshiftrt:M x C))) to
11250         (ashiftrt:M x C) when the shift sets the high bits appropriately.
11252 2020-08-14  Martin Sebor  <msebor@redhat.com>
11254         PR middle-end/78257
11255         * builtins.c (expand_builtin_memory_copy_args): Rename called function.
11256         (expand_builtin_stpcpy_1): Remove argument from call.
11257         (expand_builtin_memcmp): Rename called function.
11258         (inline_expand_builtin_bytecmp): Same.
11259         * expr.c (convert_to_bytes): New function.
11260         (constant_byte_string): New function (formerly string_constant).
11261         (string_constant): Call constant_byte_string.
11262         (byte_representation): New function.
11263         * expr.h (byte_representation): Declare.
11264         * fold-const-call.c (fold_const_call): Rename called function.
11265         * fold-const.c (c_getstr): Remove an argument.
11266         (getbyterep): Define a new function.
11267         * fold-const.h (c_getstr): Remove an argument.
11268         (getbyterep): Declare a new function.
11269         * gimple-fold.c (gimple_fold_builtin_memory_op): Rename callee.
11270         (gimple_fold_builtin_string_compare): Same.
11271         (gimple_fold_builtin_memchr): Same.
11273 2020-08-14  David Malcolm  <dmalcolm@redhat.com>
11275         * doc/analyzer.texi (Overview): Add tip about how to get a
11276         gimple dump if the analyzer ICEs.
11278 2020-08-14  Uroš Bizjak  <ubizjak@gmail.com>
11280         * config/i386/i386-builtin.def (__builtin_ia32_llwpcb)
11281         (__builtin_ia32_slwpcb, __builtin_ia32_lwpval32)
11282         (__builtin_ia32_lwpval64, __builtin_ia32_lwpins32)
11283         (__builtin_ia32_lwpins64): Use CODE_FOR_nothing.
11284         * config/i386/i386.md (@lwp_llwpcb<mode>):
11285         Implement as parametrized name pattern.
11286         (@lwp_slwpcb<mode>): Ditto.
11287         (@lwp_lwpval<mode>): Ditto.
11288         (@lwp_lwpins<mode>): Ditto.
11289         * config/i386/i386-expand.c (ix86_expand_special_args_builtin)
11290         [case VOID_FTYPE_UINT_UINT_UINT, case VOID_FTYPE_UINT64_UINT_UINT]
11291         [case UCHAR_FTYPE_UINT_UINT_UINT, case UCHAR_FTYPE_UINT64_UINT_UINT]:
11292         Remove.
11293         (ix86_expand_builtin)
11294         [ case IX86_BUILTIN_LLWPCB, case IX86_BUILTIN_LLWPCB]:
11295         Update for parameterized name patterns.
11296         [case IX86_BUILTIN_LWPVAL32, case IX86_BUILTIN_LWPVAL64]
11297         [case IX86_BUILTIN_LWPINS32, case IX86_BUILTIN_LWPINS64]: Expand here.
11299 2020-08-14  Lewis Hyatt  <lhyatt@gmail.com>
11301         * common.opt: Add new option -fdiagnostics-plain-output.
11302         * doc/invoke.texi: Document it.
11303         * opts-common.c (decode_cmdline_options_to_array): Implement it.
11304         (decode_cmdline_option): Add missing const qualifier to argv.
11306 2020-08-14  Jakub Jelinek  <jakub@redhat.com>
11307             Jonathan Wakely  <jwakely@redhat.com>
11308             Jonathan Wakely   <jwakely@redhat.com>
11310         * system.h: Include type_traits.
11311         * vec.h (vec<T, A, vl_embed>::embedded_size): Use offsetof and asserts
11312         on vec_stdlayout, which is conditionally a vec (for standard layout T)
11313         and otherwise vec_embedded.
11315 2020-08-14  Jojo R  <jiejie_rong@c-sky.com>
11317         * config/csky/csky-elf.h (ASM_SPEC): Use mfloat-abi.
11318         * config/csky/csky-linux-elf.h (ASM_SPEC): mfloat-abi.
11320 2020-08-13  David Malcolm  <dmalcolm@redhat.com>
11322         PR analyzer/93032
11323         PR analyzer/93938
11324         PR analyzer/94011
11325         PR analyzer/94099
11326         PR analyzer/94399
11327         PR analyzer/94458
11328         PR analyzer/94503
11329         PR analyzer/94640
11330         PR analyzer/94688
11331         PR analyzer/94689
11332         PR analyzer/94839
11333         PR analyzer/95026
11334         PR analyzer/95042
11335         PR analyzer/95240
11336         * Makefile.in (ANALYZER_OBJS): Add analyzer/region.o,
11337         analyzer/region-model-impl-calls.o,
11338         analyzer/region-model-manager.o,
11339         analyzer/region-model-reachability.o, analyzer/store.o, and
11340         analyzer/svalue.o.
11341         * doc/analyzer.texi: Update for changes to analyzer
11342         implementation.
11343         * tristate.h (tristate::get_value): New accessor.
11345 2020-08-13  Uroš Bizjak  <ubizjak@gmail.com>
11347         * config/i386/i386-builtin.def (CET_NORMAL): Merge to CET BDESC array.
11348         (__builtin_ia32_rddspd, __builtin_ia32_rddspq, __builtin_ia32_incsspd)
11349         (__builtin_ia32_incsspq, __builtin_ia32_wrssd, __builtin_ia32_wrssq)
11350         (__builtin_ia32_wrussd, __builtin_ia32_wrussq): Use CODE_FOR_nothing.
11351         * config/i386/i386-builtins.c: Remove handling of CET_NORMAL builtins.
11352         * config/i386/i386.md (@rdssp<mode>): Implement as parametrized
11353         name pattern.  Use SWI48 mode iterator.  Introduce input operand
11354         and remove explicit XOR zeroing from insn template.
11355         (@incssp<mode>): Implement as parametrized name pattern.
11356         Use SWI48 mode iterator.
11357         (@wrss<mode>): Ditto.
11358         (@wruss<mode>): Ditto.
11359         (rstorssp): Remove expander.  Rename insn pattern from *rstorssp<mode>.
11360         Use DImode memory operand.
11361         (clrssbsy): Remove expander.  Rename insn pattern from *clrssbsy<mode>.
11362         Use DImode memory operand.
11363         (save_stack_nonlocal): Update for parametrized name patterns.
11364         Use cleared register as an argument to gen_rddsp.
11365         (restore_stack_nonlocal): Update for parametrized name patterns.
11366         * config/i386/i386-expand.c (ix86_expand_builtin):
11367         [case IX86_BUILTIN_RDSSPD, case IX86_BUILTIN_RDSSPQ]: Expand here.
11368         [case IX86_BUILTIN_INCSSPD, case IX86_BUILTIN_INCSSPQ]: Ditto.
11369         [case IX86_BUILTIN_RSTORSSP, case IX86_BUILTIN_CLRSSBSY]:
11370         Generate DImode memory operand.
11371         [case IX86_BUILTIN_WRSSD, case IX86_BUILTIN_WRSSQ]
11372         [case IX86_BUILTIN_WRUSSD, case IX86_BUILTIN_WRUSSD]:
11373         Update for parameterized name patterns.
11375 2020-08-13  Peter Bergner  <bergner@linux.ibm.com>
11377         PR target/96506
11378         * config/rs6000/rs6000-call.c (rs6000_promote_function_mode): Disallow
11379         MMA types as return values.
11380         (rs6000_function_arg): Disallow MMA types as function arguments.
11382 2020-08-13  Richard Sandiford  <richard.sandiford@arm.com>
11384         Revert:
11385         2020-08-12  Peixin Qiao  <qiaopeixin@huawei.com>
11387         * config/aarch64/aarch64.c (aarch64_function_value): Add if
11388         condition to check ag_mode after entering if condition of
11389         aarch64_vfp_is_call_or_return_candidate. If TARGET_FLOAT is
11390         set as false by -mgeneral-regs-only, report the diagnostic
11391         information of -mgeneral-regs-only imcompatible with the use
11392         of fp/simd register(s).
11394 2020-08-13  Martin Liska  <mliska@suse.cz>
11396         PR ipa/96482
11397         * ipa-cp.c (ipcp_bits_lattice::meet_with_1): Mask m_value
11398         with m_mask.
11400 2020-08-13  Jakub Jelinek  <jakub@redhat.com>
11402         * gimplify.c (gimplify_omp_taskloop_expr): New function.
11403         (gimplify_omp_for): Use it.  For OMP_FOR_NON_RECTANGULAR
11404         loops adjust in outer taskloop the var-outer decls.
11405         * omp-expand.c (expand_omp_taskloop_for_inner): Handle non-rectangular
11406         loops.
11407         (expand_omp_for): Don't reject non-rectangular taskloop.
11408         * omp-general.c (omp_extract_for_data): Don't assert that
11409         non-rectangular loops have static schedule, instead treat loop->m1
11410         or loop->m2 as if loop->n1 or loop->n2 is non-constant.
11412 2020-08-13  Hongtao Liu  <hongtao.liu@intel.com>
11414         PR target/96246
11415         * config/i386/sse.md (<avx512>_load<mode>_mask,
11416         <avx512>_load<mode>_mask): Extend to generate blendm
11417         instructions.
11418         (<avx512>_blendm<mode>, <avx512>_blendm<mode>): Change
11419         define_insn to define_expand.
11421 2020-08-12  Roger Sayle  <roger@nextmovesoftware.com>
11422             Uroš Bizjak  <ubizjak@gmail.com>
11424         PR target/96558
11425         * config/i386/i386.md (peephole2): Only reorder register clearing
11426         instructions to allow use of xor for general registers.
11428 2020-08-12  Martin Liska  <mliska@suse.cz>
11430         PR ipa/96482
11431         * ipa-cp.c (ipcp_bits_lattice::meet_with_1): Drop value bits
11432         for bits that are unknown.
11433         (ipcp_bits_lattice::set_to_constant): Likewise.
11434         * tree-ssa-ccp.c (get_default_value): Add sanity check that
11435         IPA CP bit info has all bits set to zero in bits that
11436         are unknown.
11438 2020-08-12  Peixin Qiao  <qiaopeixin@huawei.com>
11440         * config/aarch64/aarch64.c (aarch64_function_value): Add if
11441         condition to check ag_mode after entering if condition of
11442         aarch64_vfp_is_call_or_return_candidate. If TARGET_FLOAT is
11443         set as false by -mgeneral-regs-only, report the diagnostic
11444         information of -mgeneral-regs-only imcompatible with the use
11445         of fp/simd register(s).
11447 2020-08-12  Jakub Jelinek  <jakub@redhat.com>
11449         PR tree-optimization/96535
11450         * toplev.c (process_options): Move flag_unroll_loops and
11451         flag_cunroll_grow_size handling from here to ...
11452         * opts.c (finish_options): ... here.  For flag_cunroll_grow_size,
11453         don't check for AUTODETECT_VALUE, but instead check
11454         opts_set->x_flag_cunroll_grow_size.
11455         * common.opt (funroll-completely-grow-size): Default to 0.
11456         * config/rs6000/rs6000.c (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE):
11457         Redefine.
11458         (rs6000_override_options_after_change): New function.
11459         (rs6000_option_override_internal): Call it.  Move there the
11460         flag_cunroll_grow_size, unroll_only_small_loops and
11461         flag_rename_registers handling.
11463 2020-08-12  Tom de Vries  <tdevries@suse.de>
11465         * config/nvptx/nvptx.c (nvptx_assemble_decl_begin): Make elt_size an
11466         unsigned HOST_WIDE_INT.  Print init_frag.remaining using
11467         HOST_WIDE_INT_PRINT_UNSIGNED.
11469 2020-08-12  Roger Sayle  <roger@nextmovesoftware.com>
11470             Uroš Bizjak  <ubizjak@gmail.com>
11472         * config/i386/i386.md (peephole2): Reduce unnecessary
11473         register shuffling produced by register allocation.
11475 2020-08-12  Aldy Hernandez  <aldyh@redhat.com>
11477         * ipa-fnsummary.c (evaluate_conditions_for_known_args): Use vec<>
11478         instead of std::vector<>.
11479         (evaluate_properties_for_edge): Same.
11480         (ipa_fn_summary_t::duplicate): Same.
11481         (estimate_ipcp_clone_size_and_time): Same.
11482         * vec.h (<T, A, vl_embed>::embedded_size): Change vec_embedded
11483         type to contain a char[].
11485 2020-08-12  Andreas Krebbel  <krebbel@linux.ibm.com>
11487         PR target/96308
11488         * config/s390/s390.c (s390_cannot_force_const_mem): Reject an
11489         unary minus for everything not being a numeric constant.
11490         (legitimize_tls_address): Move a NEG out of the CONST rtx.
11492 2020-08-12  Andreas Krebbel  <krebbel@linux.ibm.com>
11494         PR target/96456
11495         * config/s390/s390.h (TARGET_NONSIGNALING_VECTOR_COMPARE_OK): New
11496         macro.
11497         * config/s390/vector.md (vcond_comparison_operator): Use new macro
11498         for the check.
11500 2020-08-11  Jakub Jelinek  <jakub@redhat.com>
11502         PR rtl-optimization/96539
11503         * expr.c (emit_block_move_hints): Don't copy anything if x and y
11504         are the same and neither is MEM_VOLATILE_P.
11506 2020-08-11  Jakub Jelinek  <jakub@redhat.com>
11508         PR c/96549
11509         * tree.c (get_narrower): Use TREE_TYPE (ret) instead of
11510         TREE_TYPE (win) for COMPOUND_EXPRs.
11512 2020-08-11  Jan Hubicka  <hubicka@ucw.cz>
11514         * predict.c (not_loop_guard_equal_edge_p): New function.
11515         (maybe_predict_edge): New function.
11516         (predict_paths_for_bb): Use it.
11517         (predict_paths_leading_to_edge): Use it.
11519 2020-08-11  Martin Liska  <mliska@suse.cz>
11521         * dbgcnt.def (DEBUG_COUNTER): Add ipa_cp_bits.
11522         * ipa-cp.c (ipcp_store_bits_results): Use it when we store known
11523         bits for parameters.
11525 2020-08-10  Marek Polacek  <polacek@redhat.com>
11527         * doc/sourcebuild.texi: Document dg-ice.
11529 2020-08-10  Roger Sayle  <roger@nextmovesoftware.com>
11531         * config/i386/i386-expand.c (ix86_expand_int_movcc): Expand
11532         signed MIN_EXPR against zero as "x < 0 ? x : 0" instead of
11533         "x <= 0 ? x : 0" to enable sign_bit_compare_p optimizations.
11535 2020-08-10  Aldy Hernandez  <aldyh@redhat.com>
11537         * value-range.h (gt_ggc_mx): Declare inline.
11538         (gt_pch_nx): Same.
11540 2020-08-10  Marc Glisse  <marc.glisse@inria.fr>
11542         PR tree-optimization/95433
11543         * match.pd (X * C1 == C2): Handle wrapping overflow.
11544         * expr.c (maybe_optimize_mod_cmp): Qualify call to mod_inv.
11545         (mod_inv): Move...
11546         * wide-int.cc (mod_inv): ... here.
11547         * wide-int.h (mod_inv): Declare it.
11549 2020-08-10  Jan Hubicka  <hubicka@ucw.cz>
11551         * predict.c (filter_predictions): Document semantics of filter.
11552         (equal_edge_p): Rename to ...
11553         (not_equal_edge_p): ... this; reverse semantics.
11554         (remove_predictions_associated_with_edge): Fix.
11556 2020-08-10  Hongtao Liu  <hongtao.liu@intel.com>
11558         PR target/96243
11559         * config/i386/i386-expand.c (ix86_expand_sse_cmp): Refine for
11560         maskcmp.
11561         (ix86_expand_mask_vec_cmp): Change prototype.
11562         * config/i386/i386-protos.h (ix86_expand_mask_vec_cmp): Change prototype.
11563         * config/i386/i386.c (ix86_print_operand): Remove operand
11564         modifier 'I'.
11565         * config/i386/sse.md
11566         (*<avx512>_cmp<mode>3<mask_scalar_merge_name><round_saeonly_name>): Deleted.
11567         (*<avx512>_cmp<mode>3<mask_scalar_merge_name>): Ditto.
11568         (*<avx512>_ucmp<mode>3<mask_scalar_merge_name>): Ditto.
11569         (*<avx512>_ucmp<mode>3<mask_scalar_merge_name>,
11570         avx512f_maskcmp<mode>3): Ditto.
11572 2020-08-09  Roger Sayle  <roger@nextmovesoftware.com>
11574         * expmed.c (init_expmed_one_conv): Restore all->reg's mode.
11575         (init_expmed_one_mode): Set all->reg to desired mode.
11577 2020-08-08  Peter Bergner  <bergner@linux.ibm.com>
11579         PR target/96530
11580         * config/rs6000/rs6000.c (rs6000_invalid_conversion): Use canonical
11581         types for type comparisons.  Refactor code to simplify it.
11583 2020-08-08  Jakub Jelinek  <jakub@redhat.com>
11585         PR fortran/93553
11586         * tree-nested.c (convert_nonlocal_omp_clauses): For
11587         OMP_CLAUSE_REDUCTION, OMP_CLAUSE_LASTPRIVATE and OMP_CLAUSE_LINEAR
11588         save info->new_local_var_chain around walks of the clause gimple
11589         sequences and declare_vars if needed into the sequence.
11591 2020-08-08  Jakub Jelinek  <jakub@redhat.com>
11593         PR tree-optimization/96424
11594         * omp-expand.c: Include tree-eh.h.
11595         (expand_omp_for_init_vars): Handle -fexceptions -fnon-call-exceptions
11596         by forcing floating point comparison into a bool temporary.
11598 2020-08-07  Marc Glisse  <marc.glisse@inria.fr>
11600         * generic-match-head.c (optimize_vectors_before_lowering_p): New
11601         function.
11602         * gimple-match-head.c (optimize_vectors_before_lowering_p):
11603         Likewise.
11604         * match.pd ((v ? w : 0) ? a : b, c1 ? c2 ? a : b : b): Use it.
11606 2020-08-07  Richard Biener  <rguenther@suse.de>
11608         PR tree-optimization/96514
11609         * tree-if-conv.c (if_convertible_bb_p): If the last stmt
11610         is a call that is control-altering, fail.
11612 2020-08-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
11614         * config/bpf/bpf.md: Remove trailing whitespaces.
11615         * config/bpf/constraints.md: Likewise.
11616         * config/bpf/predicates.md: Likewise.
11618 2020-08-07  Michael Meissner  <meissner@linux.ibm.com>
11620         * config/rs6000/rs6000.md (bswaphi2_reg): Add ISA 3.1 support.
11621         (bswapsi2_reg): Add ISA 3.1 support.
11622         (bswapdi2): Rename bswapdi2_xxbrd to bswapdi2_brd.
11623         (bswapdi2_brd,bswapdi2_xxbrd): Rename.  Add ISA 3.1 support.
11625 2020-08-07  Alan Modra  <amodra@gmail.com>
11627         PR target/96493
11628         * config/rs6000/predicates.md (current_file_function_operand): Don't
11629         accept functions that differ in r2 usage.
11631 2020-08-06  Hans-Peter Nilsson  <hp@bitrange.com>
11633         * config/mmix/mmix.md (MM): New mode_iterator.
11634         ("mov<mode>"): New expander to expand for all MM-modes.
11635         ("*movqi_expanded", "*movhi_expanded", "*movsi_expanded")
11636         ("*movsf_expanded", "*movdf_expanded"): Rename from the
11637         corresponding mov<M> named pattern.  Add to the condition that
11638         either operand must be a register_operand.
11639         ("*movdi_expanded"): Similar, but also allow STCO in the condition.
11641 2020-08-06  Richard Sandiford  <richard.sandiford@arm.com>
11643         PR target/96191
11644         * config/arm/arm.md (arm_stack_protect_test_insn): Zero out
11645         operand 2 after use.
11646         * config/arm/thumb1.md (thumb1_stack_protect_test_insn): Likewise.
11648 2020-08-06  Peter Bergner  <bergner@linux.ibm.com>
11650         PR target/96446
11651         * config/rs6000/mma.md (*movpxi): Add xxsetaccz generation.
11652         Disable split for zero constant source operand.
11653         (mma_xxsetaccz): Change to define_expand.  Call gen_movpxi.
11655 2020-08-06  Jakub Jelinek  <jakub@redhat.com>
11657         PR tree-optimization/96480
11658         * tree-ssa-reassoc.c (suitable_cond_bb): Add TEST_SWAPPED_P argument.
11659         If TEST_BB ends in cond and has one edge to *OTHER_BB and another
11660         through an empty bb to that block too, if PHI args don't match, retry
11661         them through the other path from TEST_BB.
11662         (maybe_optimize_range_tests): Adjust callers.  Handle such LAST_BB
11663         through inversion of the condition.
11665 2020-08-06  Jose E. Marchesi  <jose.marchesi@oracle.com>
11667         * config/bpf/bpf-helpers.h (KERNEL_HELPER): Define.
11668         (KERNEL_VERSION): Remove.
11669         * config/bpf/bpf-helpers.def: Delete.
11670         * config/bpf/bpf.c (bpf_handle_fndecl_attribute): New function.
11671         (bpf_attribute_table): Define.
11672         (bpf_helper_names): Delete.
11673         (bpf_helper_code): Likewise.
11674         (enum bpf_builtins): Adjust to new helpers mechanism.
11675         (bpf_output_call): Likewise.
11676         (bpf_init_builtins): Likewise.
11677         (bpf_init_builtins): Likewise.
11678         * doc/extend.texi (BPF Function Attributes): New section.
11679         (BPF Kernel Helpers): Delete section.
11681 2020-08-06  Richard Biener  <rguenther@suse.de>
11683         PR tree-optimization/96491
11684         * tree-ssa-sink.c (sink_common_stores_to_bb): Avoid
11685         sinking across abnormal edges.
11687 2020-08-06  Richard Biener  <rguenther@suse.de>
11689         PR tree-optimization/96483
11690         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
11691         POLY_INT_CST.
11693 2020-08-06  Richard Biener  <rguenther@suse.de>
11695         * graphite-isl-ast-to-gimple.c (ivs_params): Use hash_map instead
11696         of std::map.
11697         (ivs_params_clear): Adjust.
11698         (gcc_expression_from_isl_ast_expr_id): Likewise.
11699         (graphite_create_new_loop): Likewise.
11700         (add_parameters_to_ivs_params): Likewise.
11702 2020-08-06  Roger Sayle  <roger@nextmovesoftware.com>
11703             Uroš Bizjak  <ubizjak@gmail.com>
11705         * config/i386/i386.md (MAXMIN_IMODE): No longer needed.
11706         (<maxmin><mode>3):  Support SWI248 and general_operand for
11707         second operand, when TARGET_CMOVE.
11708         (<maxmin><mode>3_1 splitter): Optimize comparisons against
11709         0, 1 and -1 to use "test" instead of "cmp".
11710         (*<maxmin>di3_doubleword): Likewise, allow general_operand
11711         and enable on TARGET_CMOVE.
11712         (peephole2): Convert clearing a register after a flag setting
11713         instruction into an xor followed by the original flag setter.
11715 2020-08-06  Gerald Pfeifer  <gerald@pfeifer.com>
11717         * ipa-fnsummary.c (INCLUDE_VECTOR): Define.
11718         Remove direct inclusion of <vector>.
11720 2020-08-06  Kewen Lin  <linkw@gcc.gnu.org>
11722         * config/rs6000/rs6000.c (rs6000_adjust_vect_cost_per_loop): New
11723         function.
11724         (rs6000_finish_cost): Call rs6000_adjust_vect_cost_per_loop.
11725         * tree-vect-loop.c (vect_estimate_min_profitable_iters): Add cost
11726         modeling for vector with length.
11727         (vect_rgroup_iv_might_wrap_p): New function, factored out from...
11728         * tree-vect-loop-manip.c (vect_set_loop_controls_directly): ...this.
11729         Update function comment.
11730         * tree-vect-stmts.c (vect_gen_len): Update function comment.
11731         * tree-vectorizer.h (vect_rgroup_iv_might_wrap_p): New declare.
11733 2020-08-06  Kewen Lin  <linkw@linux.ibm.com>
11735         * tree-vectorizer.c (try_vectorize_loop_1): Skip the epilogue loops
11736         for dbgcnt check.
11738 2020-08-05  Marc Glisse  <marc.glisse@inria.fr>
11740         PR tree-optimization/95906
11741         PR target/70314
11742         * match.pd ((c ? a : b) op d, (c ? a : b) op (c ? d : e),
11743         (v ? w : 0) ? a : b, c1 ? c2 ? a : b : b): New transformations.
11744         (op (c ? a : b)): Update to match the new transformations.
11746 2020-08-05  Richard Sandiford  <richard.sandiford@arm.com>
11748         PR target/96191
11749         * config/aarch64/aarch64.md (stack_protect_test_<mode>): Set the
11750         CC register directly, instead of a GPR.  Replace the original GPR
11751         destination with an extra scratch register.  Zero out operand 3
11752         after use.
11753         (stack_protect_test): Update accordingly.
11755 2020-08-05  Richard Sandiford  <richard.sandiford@arm.com>
11757         * config/aarch64/aarch64.md (load_pair_sw_<SX:mode><SX2:mode>)
11758         (load_pair_dw_<DX:mode><DX2:mode>, load_pair_dw_tftf)
11759         (store_pair_sw_<SX:mode><SX2:mode>)
11760         (store_pair_dw_<DX:mode><DX2:mode>, store_pair_dw_tftf)
11761         (*load_pair_extendsidi2_aarch64)
11762         (*load_pair_zero_extendsidi2_aarch64): Use %z for the memory operand.
11763         * config/aarch64/aarch64-simd.md (load_pair<DREG:mode><DREG2:mode>)
11764         (vec_store_pair<DREG:mode><DREG2:mode>, load_pair<VQ:mode><VQ2:mode>)
11765         (vec_store_pair<VQ:mode><VQ2:mode>): Likewise.
11767 2020-08-05  Richard Biener  <rguenther@suse.de>
11769         * tree-ssa-loop-im.c (invariantness_dom_walker): Remove.
11770         (invariantness_dom_walker::before_dom_children): Move to ...
11771         (compute_invariantness): ... this function.
11772         (move_computations): Inline ...
11773         (tree_ssa_lim): ... here, share RPO order and avoid some
11774         cfun references.
11775         (analyze_memory_references): Remove sorting of location
11776         lists, instead assert they are sorted already when checking.
11777         (prev_flag_edges): Remove.
11778         (execute_sm_if_changed): Pass down and adjust prev edge state.
11779         (execute_sm_exit): Likewise.
11780         (hoist_memory_references): Likewise.  Commit edge insertions
11781         of each processed exit.
11782         (store_motion_loop): Do not commit edge insertions on all
11783         edges in the function.
11784         (tree_ssa_lim_initialize): Do not call alloc_aux_for_edges.
11785         (tree_ssa_lim_finalize): Do not call free_aux_for_edges.
11787 2020-08-05  Richard Biener  <rguenther@suse.de>
11789         * genmatch.c (fail_label): New global.
11790         (expr::gen_transform): Branch to fail_label instead of
11791         returning.  Fix indent of call argument checking.
11792         (dt_simplify::gen_1): Compute and emit fail_label, branch
11793         to it instead of returning early.
11795 2020-08-05  Jakub Jelinek  <jakub@redhat.com>
11797         * omp-expand.c (expand_omp_for): Don't disallow combined non-rectangular
11798         loops.
11800 2020-08-05  Jakub Jelinek  <jakub@redhat.com>
11802         PR middle-end/96459
11803         * omp-low.c (lower_omp_taskreg): Call lower_reduction_clauses even in
11804         for host teams.
11806 2020-08-05  Jakub Jelinek  <jakub@redhat.com>
11808         * omp-expand.c (expand_omp_for_init_counts): Remember
11809         first_inner_iterations, factor and n1o from the number of iterations
11810         computation in *fd.
11811         (expand_omp_for_init_vars): Use more efficient logical iteration number
11812         to actual iterator values computation even for non-rectangular loops
11813         where number of loop iterations could not be computed at compile time.
11815 2020-08-05  2020-08-04  Carl Love  <cel@us.ibm.com>
11817         * config/rs6000/altivec.h (vec_blendv, vec_permx): Add define.
11818         * config/rs6000/altivec.md (UNSPEC_XXBLEND, UNSPEC_XXPERMX.): New
11819         unspecs.
11820         (VM3): New define_mode.
11821         (VM3_char): New define_attr.
11822         (xxblend_<mode> mode VM3): New define_insn.
11823         (xxpermx): New define_expand.
11824         (xxpermx_inst): New define_insn.
11825         * config/rs6000/rs6000-builtin.def (VXXBLEND_V16QI, VXXBLEND_V8HI,
11826         VXXBLEND_V4SI, VXXBLEND_V2DI, VXXBLEND_V4SF, VXXBLEND_V2DF): New
11827         BU_P10V_3 definitions.
11828         (XXBLEND): New BU_P10_OVERLOAD_3 definition.
11829         (XXPERMX): New BU_P10_OVERLOAD_4 definition.
11830         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
11831         (P10_BUILTIN_VXXPERMX): Add if statement.
11832         * config/rs6000/rs6000-call.c (P10_BUILTIN_VXXBLEND_V16QI,
11833         P10_BUILTIN_VXXBLEND_V8HI, P10_BUILTIN_VXXBLEND_V4SI,
11834         P10_BUILTIN_VXXBLEND_V2DI, P10_BUILTIN_VXXBLEND_V4SF,
11835         P10_BUILTIN_VXXBLEND_V2DF, P10_BUILTIN_VXXPERMX): Define
11836         overloaded arguments.
11837         (rs6000_expand_quaternop_builtin): Add if case for CODE_FOR_xxpermx.
11838         (builtin_quaternary_function_type): Add v16uqi_type and xxpermx_type
11839         variables, add case statement for P10_BUILTIN_VXXPERMX.
11840         (builtin_function_type): Add case statements for
11841         P10_BUILTIN_VXXBLEND_V16QI, P10_BUILTIN_VXXBLEND_V8HI,
11842         P10_BUILTIN_VXXBLEND_V4SI, P10_BUILTIN_VXXBLEND_V2DI.
11843         * doc/extend.texi: Add documentation for vec_blendv and vec_permx.
11845 2020-08-05  2020-08-04  Carl Love  <cel@us.ibm.com>
11847         * config/rs6000/altivec.h (vec_splati, vec_splatid, vec_splati_ins):
11848         Add defines.
11849         * config/rs6000/altivec.md (UNSPEC_XXSPLTIW, UNSPEC_XXSPLTID,
11850         UNSPEC_XXSPLTI32DX): New.
11851         (vxxspltiw_v4si, vxxspltiw_v4sf_inst, vxxspltidp_v2df_inst,
11852         vxxsplti32dx_v4si_inst, vxxsplti32dx_v4sf_inst): New define_insn.
11853         (vxxspltiw_v4sf, vxxspltidp_v2df, vxxsplti32dx_v4si,
11854         vxxsplti32dx_v4sf.): New define_expands.
11855         * config/rs6000/predicates.md (u1bit_cint_operand,
11856         s32bit_cint_operand, c32bit_cint_operand): New predicates.
11857         * config/rs6000/rs6000-builtin.def (VXXSPLTIW_V4SI, VXXSPLTIW_V4SF,
11858         VXXSPLTID): New definitions.
11859         (VXXSPLTI32DX_V4SI, VXXSPLTI32DX_V4SF): New BU_P10V_3
11860         definitions.
11861         (XXSPLTIW, XXSPLTID): New definitions.
11862         (XXSPLTI32DX): Add definitions.
11863         * config/rs6000/rs6000-call.c (P10_BUILTIN_VEC_XXSPLTIW,
11864         P10_BUILTIN_VEC_XXSPLTID, P10_BUILTIN_VEC_XXSPLTI32DX):
11865         New definitions.
11866         * config/rs6000/rs6000-protos.h (rs6000_constF32toI32): New extern
11867         declaration.
11868         * config/rs6000/rs6000.c (rs6000_constF32toI32): New function.
11869         * doc/extend.texi: Add documentation for vec_splati,
11870         vec_splatid, and vec_splati_ins.
11872 2020-08-05  2020-08-04  Carl Love  <cel@us.ibm.com>
11874         * config/rs6000/altivec.h (vec_sldb, vec_srdb): New defines.
11875         * config/rs6000/altivec.md (UNSPEC_SLDB, UNSPEC_SRDB): New.
11876         (SLDB_lr): New attribute.
11877         (VSHIFT_DBL_LR): New iterator.
11878         (vs<SLDB_lr>db_<mode>): New define_insn.
11879         * config/rs6000/rs6000-builtin.def (VSLDB_V16QI, VSLDB_V8HI,
11880         VSLDB_V4SI, VSLDB_V2DI, VSRDB_V16QI, VSRDB_V8HI, VSRDB_V4SI,
11881         VSRDB_V2DI): New BU_P10V_3 definitions.
11882         (SLDB, SRDB): New BU_P10_OVERLOAD_3 definitions.
11883         * config/rs6000/rs6000-call.c (P10_BUILTIN_VEC_SLDB,
11884         P10_BUILTIN_VEC_SRDB): New definitions.
11885         (rs6000_expand_ternop_builtin) [CODE_FOR_vsldb_v16qi,
11886         CODE_FOR_vsldb_v8hi, CODE_FOR_vsldb_v4si, CODE_FOR_vsldb_v2di,
11887         CODE_FOR_vsrdb_v16qi, CODE_FOR_vsrdb_v8hi, CODE_FOR_vsrdb_v4si,
11888         CODE_FOR_vsrdb_v2di]: Add clauses.
11889         * doc/extend.texi: Add description for vec_sldb and vec_srdb.
11891 2020-08-05  2020-08-04 Carl Love  <cel@us.ibm.com>
11893         * config/rs6000/altivec.h: Add define for vec_replace_elt and
11894         vec_replace_unaligned.
11895         * config/rs6000/vsx.md (UNSPEC_REPLACE_ELT, UNSPEC_REPLACE_UN): New
11896         unspecs.
11897         (REPLACE_ELT): New mode iterator.
11898         (REPLACE_ELT_char, REPLACE_ELT_sh, REPLACE_ELT_max): New mode attributes.
11899         (vreplace_un_<mode>, vreplace_elt_<mode>_inst): New.
11900         * config/rs6000/rs6000-builtin.def (VREPLACE_ELT_V4SI,
11901         VREPLACE_ELT_UV4SI, VREPLACE_ELT_V4SF, VREPLACE_ELT_UV2DI,
11902         VREPLACE_ELT_V2DF, VREPLACE_UN_V4SI, VREPLACE_UN_UV4SI,
11903         VREPLACE_UN_V4SF, VREPLACE_UN_V2DI, VREPLACE_UN_UV2DI,
11904         VREPLACE_UN_V2DF, (REPLACE_ELT, REPLACE_UN, VREPLACE_ELT_V2DI): New builtin
11905         entries.
11906         * config/rs6000/rs6000-call.c (P10_BUILTIN_VEC_REPLACE_ELT,
11907         P10_BUILTIN_VEC_REPLACE_UN): New builtin argument definitions.
11908         (rs6000_expand_quaternop_builtin): Add 3rd argument checks for
11909         CODE_FOR_vreplace_elt_v4si, CODE_FOR_vreplace_elt_v4sf,
11910         CODE_FOR_vreplace_un_v4si, CODE_FOR_vreplace_un_v4sf.
11911         (builtin_function_type) [P10_BUILTIN_VREPLACE_ELT_UV4SI,
11912         P10_BUILTIN_VREPLACE_ELT_UV2DI, P10_BUILTIN_VREPLACE_UN_UV4SI,
11913         P10_BUILTIN_VREPLACE_UN_UV2DI]: New cases.
11914         * doc/extend.texi: Add description for vec_replace_elt and
11915         vec_replace_unaligned builtins.
11917 2020-08-05  2020-08-04  Carl Love  <cel@us.ibm.com>
11919         * config/rs6000/altivec.h (vec_insertl, vec_inserth): New defines.
11920         * config/rs6000/rs6000-builtin.def (VINSERTGPRBL, VINSERTGPRHL,
11921         VINSERTGPRWL, VINSERTGPRDL, VINSERTVPRBL, VINSERTVPRHL, VINSERTVPRWL,
11922         VINSERTGPRBR, VINSERTGPRHR, VINSERTGPRWR, VINSERTGPRDR, VINSERTVPRBR,
11923         VINSERTVPRHR, VINSERTVPRWR): New builtins.
11924         (INSERTL, INSERTH): New builtins.
11925         * config/rs6000/rs6000-call.c (P10_BUILTIN_VEC_INSERTL,
11926         P10_BUILTIN_VEC_INSERTH): New overloaded definitions.
11927         (P10_BUILTIN_VINSERTGPRBL, P10_BUILTIN_VINSERTGPRHL,
11928         P10_BUILTIN_VINSERTGPRWL, P10_BUILTIN_VINSERTGPRDL,
11929         P10_BUILTIN_VINSERTVPRBL, P10_BUILTIN_VINSERTVPRHL,
11930         P10_BUILTIN_VINSERTVPRWL): Add case entries.
11931         * config/rs6000/vsx.md (define_c_enum): Add UNSPEC_INSERTL,
11932         UNSPEC_INSERTR.
11933         (define_expand): Add vinsertvl_<mode>, vinsertvr_<mode>,
11934         vinsertgl_<mode>, vinsertgr_<mode>, mode is VI2.
11935         (define_ins): vinsertvl_internal_<mode>, vinsertvr_internal_<mode>,
11936         vinsertgl_internal_<mode>, vinsertgr_internal_<mode>, mode VEC_I.
11937         * doc/extend.texi: Add documentation for vec_insertl, vec_inserth.
11939 2020-08-05  2020-08-04  Carl Love  <cel@us.ibm.com>
11941         * config/rs6000/altivec.md: (UNSPEC_EXTRACTL, UNSPEC_EXTRACTR)
11942         (vextractl<mode>, vextractr<mode>)
11943         (vextractl<mode>_internal, vextractr<mode>_internal for mode VI2)
11944         (VI2): Move to ...
11945         * config/rs6000/vsx.md: (UNSPEC_EXTRACTL, UNSPEC_EXTRACTR)
11946         (vextractl<mode>, vextractr<mode>)
11947         (vextractl<mode>_internal, vextractr<mode>_internal for mode VI2)
11948         (VI2):  ..here.
11949         * doc/extend.texi: Update documentation for vec_extractl.
11950         Replace builtin name vec_extractr with vec_extracth.  Update
11951         description of vec_extracth.
11953 2020-08-04  Jim Wilson  <jimw@sifive.com>
11955         * doc/invoke.texi (AArch64 Options): Delete duplicate
11956         -mstack-protector-guard docs.
11958 2020-08-04  Roger Sayle  <roger@nextmovesoftware.com>
11960         * config/nvptx/nvptx.md (smulhi3_highpart, smulsi3_highpart)
11961         (umulhi3_highpart, umulsi3_highpart): New instructions.
11963 2020-08-04  Andrew Stubbs  <ams@codesourcery.com>
11965         * config/gcn/gcn-run.c (R_AMDGPU_NONE): Delete.
11966         (R_AMDGPU_ABS32_LO): Delete.
11967         (R_AMDGPU_ABS32_HI): Delete.
11968         (R_AMDGPU_ABS64): Delete.
11969         (R_AMDGPU_REL32): Delete.
11970         (R_AMDGPU_REL64): Delete.
11971         (R_AMDGPU_ABS32): Delete.
11972         (R_AMDGPU_GOTPCREL): Delete.
11973         (R_AMDGPU_GOTPCREL32_LO): Delete.
11974         (R_AMDGPU_GOTPCREL32_HI): Delete.
11975         (R_AMDGPU_REL32_LO): Delete.
11976         (R_AMDGPU_REL32_HI): Delete.
11977         (reserved): Delete.
11978         (R_AMDGPU_RELATIVE64): Delete.
11980 2020-08-04  Omar Tahir  <omar.tahir@arm.com>
11982         * config/arm/arm-cpus.in (armv8.1-m.main): Tune for Cortex-M55.
11984 2020-08-04  Hu Jiangping  <hujiangping@cn.fujitsu.com>
11986         * config/aarch64/aarch64.c (aarch64_if_then_else_costs): Delete
11987         redundant extra_cost variable.
11989 2020-08-04  Zhiheng Xie  <xiezhiheng@huawei.com>
11991         * config/aarch64/aarch64-builtins.c (aarch64_call_properties):
11992         Use FLOAT_MODE_P macro instead of enumerating all floating-point
11993         modes and add global flag FLAG_AUTO_FP.
11995 2020-08-04  Jakub Jelinek  <jakub@redhat.com>
11997         * doc/extend.texi (symver): Add @cindex for symver function attribute.
11999 2020-08-04  Marc Glisse  <marc.glisse@inria.fr>
12001         PR tree-optimization/95433
12002         * match.pd (X * C1 == C2): New transformation.
12004 2020-08-04  Aldy Hernandez  <aldyh@redhat.com>
12006         * gimple-ssa-sprintf.c (get_int_range): Adjust for irange API.
12007         (format_integer): Same.
12008         (handle_printf_call): Same.
12010 2020-08-04  Andrew Stubbs  <ams@codesourcery.com>
12012         * config/gcn/gcn.md ("<expander>ti3"): New.
12014 2020-08-04  Richard Biener  <rguenther@suse.de>
12016         PR tree-optimization/88240
12017         * tree-ssa-sccvn.h (vn_reference_s::punned): New flag.
12018         * tree-ssa-sccvn.c (vn_reference_insert): Initialize punned.
12019         (vn_reference_insert_pieces): Likewise.
12020         (visit_reference_op_call): Likewise.
12021         (visit_reference_op_load): Track whether a ref was punned.
12022         * tree-ssa-pre.c (do_hoist_insertion): Refuse to perform hoist
12023         insertion on punned floating point loads.
12025 2020-08-04  Sudakshina Das  <sudi.das@arm.com>
12027         * config/aarch64/aarch64.c (aarch64_gen_store_pair): Add case
12028         for E_V4SImode.
12029         (aarch64_gen_load_pair): Likewise.
12030         (aarch64_copy_one_block_and_progress_pointers): Handle 256 bit copy.
12031         (aarch64_expand_cpymem): Expand copy_limit to 256bits where
12032         appropriate.
12034 2020-08-04  Andrea Corallo  <andrea.corallo@arm.com>
12036         * config/aarch64/aarch64.md (aarch64_fjcvtzs): Add missing
12037         clobber.
12038         * doc/sourcebuild.texi (aarch64_fjcvtzs_hw) Document new
12039         target supports option.
12041 2020-08-04  Tom de Vries  <tdevries@suse.de>
12043         PR target/96428
12044         * config/nvptx/nvptx.c (nvptx_gen_shuffle): Handle V2SI/V2DI.
12046 2020-08-04  Jakub Jelinek  <jakub@redhat.com>
12048         PR middle-end/96426
12049         * tree-vect-generic.c (expand_vector_conversion): Replace .VEC_CONVERT
12050         call with GIMPLE_NOP if there is no lhs.
12052 2020-08-04  Jakub Jelinek  <jakub@redhat.com>
12054         PR debug/96354
12055         * gimple-fold.c (maybe_canonicalize_mem_ref_addr): Add IS_DEBUG
12056         argument.  Return false instead of gcc_unreachable if it is true and
12057         get_addr_base_and_unit_offset returns NULL.
12058         (fold_stmt_1) <case GIMPLE_DEBUG>: Adjust caller.
12060 2020-08-04  Aldy Hernandez  <aldyh@redhat.com>
12062         * vr-values.c (simplify_using_ranges::vrp_evaluate_conditional):
12063         Call is_gimple_min_invariant dropped from previous patch.
12065 2020-08-04  Jakub Jelinek  <jakub@redhat.com>
12067         * omp-expand.c (expand_omp_for_init_counts): For triangular loops
12068         compute number of iterations at runtime more efficiently.
12069         (expand_omp_for_init_vars): Adjust immediate dominators.
12070         (extract_omp_for_update_vars): Likewise.
12072 2020-08-04  Aldy Hernandez  <aldyh@redhat.com>
12074         * vr-values.c (simplify_using_ranges::two_valued_val_range_p):
12075         Use irange API.
12077 2020-08-04  Aldy Hernandez  <aldyh@redhat.com>
12079         * vr-values.c (simplify_conversion_using_ranges): Convert to irange API.
12081 2020-08-04  Aldy Hernandez  <aldyh@redhat.com>
12083         * vr-values.c (test_for_singularity): Use irange API.
12084         (simplify_using_ranges::simplify_cond_using_ranges_1): Do not
12085         special case VR_RANGE.
12087 2020-08-04  Aldy Hernandez  <aldyh@redhat.com>
12089         * vr-values.c (simplify_using_ranges::vrp_evaluate_conditional): Adjust
12090         for irange API.
12092 2020-08-04  Aldy Hernandez  <aldyh@redhat.com>
12094         * vr-values.c (simplify_using_ranges::op_with_boolean_value_range_p): Adjust
12095         for irange API.
12097 2020-08-04  Aldy Hernandez  <aldyh@redhat.com>
12099         * tree-ssanames.c (get_range_info): Use irange instead of value_range.
12100         * tree-ssanames.h (get_range_info): Same.
12102 2020-08-04  Aldy Hernandez  <aldyh@redhat.com>
12104         * fold-const.c (expr_not_equal_to): Adjust for irange API.
12106 2020-08-04  Aldy Hernandez  <aldyh@redhat.com>
12108         * builtins.c (determine_block_size): Remove ad-hoc range canonicalization.
12110 2020-08-04  Xionghu Luo  <luoxhu@linux.ibm.com>
12112         PR rtl-optimization/71309
12113         * dse.c (find_shift_sequence): Use subreg of shifted from high part
12114         register to avoid loading from address.
12116 2020-08-03  Jonathan Wakely  <jwakely@redhat.com>
12118         * doc/cpp.texi (Variadic Macros): Use the exact ... token in
12119         code examples.
12121 2020-08-03  Nathan Sidwell  <nathan@acm.org>
12123         * doc/invoke.texi: Refer to c++20
12125 2020-08-03  Julian Brown  <julian@codesourcery.com>
12126             Thomas Schwinge  <thomas@codesourcery.com>
12128         * gimplify.c (gimplify_omp_target_update): Allow GOMP_MAP_TO_PSET
12129         without a preceding data-movement mapping.
12131 2020-08-03  Iain Sandoe  <iain@sandoe.co.uk>
12133         * config/darwin.h (ASM_DECLARE_FUNCTION_NAME): UNDEF before
12134         use.
12135         (DEF_MIN_OSX_VERSION): Only define if there's no existing
12136         def.
12138 2020-08-03  Iain Sandoe  <iain@sandoe.co.uk>
12140         * config/darwin.c (IN_TARGET_CODE): Remove.
12141         (darwin_mergeable_constant_section): Handle poly-int machine modes.
12142         (machopic_select_rtx_section): Likewise.
12144 2020-08-03  Aldy Hernandez  <aldyh@redhat.com>
12146         PR tree-optimization/96430
12147         * range-op.cc (operator_tests): Do not shift by 31 on targets with
12148         integer's smaller than 32 bits.
12150 2020-08-03  Martin Jambor  <mjambor@suse.cz>
12152         * hsa-brig-format.h: Moved to brig/brigfrontend.
12153         * hsa-brig.c: Removed.
12154         * hsa-builtins.def: Likewise.
12155         * hsa-common.c: Likewise.
12156         * hsa-common.h: Likewise.
12157         * hsa-dump.c: Likewise.
12158         * hsa-gen.c: Likewise.
12159         * hsa-regalloc.c: Likewise.
12160         * ipa-hsa.c: Likewise.
12161         * omp-grid.c: Likewise.
12162         * omp-grid.h: Likewise.
12163         * Makefile.in (BUILTINS_DEF): Remove hsa-builtins.def.
12164         (OBJS): Remove hsa-common.o, hsa-gen.o, hsa-regalloc.o, hsa-brig.o,
12165         hsa-dump.o, ipa-hsa.c and omp-grid.o.
12166         (GTFILES): Removed hsa-common.c and omp-expand.c.
12167         * builtins.def: Remove processing of hsa-builtins.def.
12168         (DEF_HSA_BUILTIN): Remove.
12169         * common.opt (flag_disable_hsa): Remove.
12170         (-Whsa): Ignore.
12171         * config.in (ENABLE_HSA): Removed.
12172         * configure.ac: Removed handling configuration for hsa offloading.
12173         (ENABLE_HSA): Removed.
12174         * configure: Regenerated.
12175         * doc/install.texi (--enable-offload-targets): Remove hsa from the
12176         example.
12177         (--with-hsa-runtime): Reword to reference any HSA run-time, not
12178         specifically HSA offloading.
12179         * doc/invoke.texi (Option Summary): Remove -Whsa.
12180         (Warning Options): Likewise.
12181         (Optimize Options): Remove hsa-gen-debug-stores.
12182         * doc/passes.texi (Regular IPA passes): Remove section on IPA HSA
12183         pass.
12184         * gimple-low.c (lower_stmt): Remove GIMPLE_OMP_GRID_BODY case.
12185         * gimple-pretty-print.c (dump_gimple_omp_for): Likewise.
12186         (dump_gimple_omp_block): Likewise.
12187         (pp_gimple_stmt_1): Likewise.
12188         * gimple-walk.c (walk_gimple_stmt): Likewise.
12189         * gimple.c (gimple_build_omp_grid_body): Removed function.
12190         (gimple_copy): Remove GIMPLE_OMP_GRID_BODY case.
12191         * gimple.def (GIMPLE_OMP_GRID_BODY): Removed.
12192         * gimple.h (gf_mask): Removed GF_OMP_PARALLEL_GRID_PHONY,
12193         OMP_FOR_KIND_GRID_LOOP, GF_OMP_FOR_GRID_PHONY,
12194         GF_OMP_FOR_GRID_INTRA_GROUP, GF_OMP_FOR_GRID_GROUP_ITER and
12195         GF_OMP_TEAMS_GRID_PHONY.  Renumbered GF_OMP_FOR_KIND_SIMD and
12196         GF_OMP_TEAMS_HOST.
12197         (gimple_build_omp_grid_body): Removed declaration.
12198         (gimple_has_substatements): Remove GIMPLE_OMP_GRID_BODY case.
12199         (gimple_omp_for_grid_phony): Removed.
12200         (gimple_omp_for_set_grid_phony): Likewise.
12201         (gimple_omp_for_grid_intra_group): Likewise.
12202         (gimple_omp_for_grid_intra_group): Likewise.
12203         (gimple_omp_for_grid_group_iter): Likewise.
12204         (gimple_omp_for_set_grid_group_iter): Likewise.
12205         (gimple_omp_parallel_grid_phony): Likewise.
12206         (gimple_omp_parallel_set_grid_phony): Likewise.
12207         (gimple_omp_teams_grid_phony): Likewise.
12208         (gimple_omp_teams_set_grid_phony): Likewise.
12209         (CASE_GIMPLE_OMP): Remove GIMPLE_OMP_GRID_BODY case.
12210         * lto-section-in.c (lto_section_name): Removed hsa.
12211         * lto-streamer.h (lto_section_type): Removed LTO_section_ipa_hsa.
12212         * lto-wrapper.c (compile_images_for_offload_targets): Remove special
12213         handling of hsa.
12214         * omp-expand.c: Do not include hsa-common.h and gt-omp-expand.h.
12215         (parallel_needs_hsa_kernel_p): Removed.
12216         (grid_launch_attributes_trees): Likewise.
12217         (grid_launch_attributes_trees): Likewise.
12218         (grid_create_kernel_launch_attr_types): Likewise.
12219         (grid_insert_store_range_dim): Likewise.
12220         (grid_get_kernel_launch_attributes): Likewise.
12221         (get_target_arguments): Remove code passing HSA grid sizes.
12222         (grid_expand_omp_for_loop): Remove.
12223         (grid_arg_decl_map): Likewise.
12224         (grid_remap_kernel_arg_accesses): Likewise.
12225         (grid_expand_target_grid_body): Likewise.
12226         (expand_omp): Remove call to grid_expand_target_grid_body.
12227         (omp_make_gimple_edges): Remove GIMPLE_OMP_GRID_BODY case.
12228         * omp-general.c: Do not include hsa-common.h.
12229         (omp_maybe_offloaded): Do not check for HSA offloading.
12230         (omp_context_selector_matches): Likewise.
12231         * omp-low.c: Do not include hsa-common.h and omp-grid.h.
12232         (build_outer_var_ref): Remove handling of GIMPLE_OMP_GRID_BODY.
12233         (scan_sharing_clauses): Remove handling of OMP_CLAUSE__GRIDDIM_.
12234         (scan_omp_parallel): Remove handling of the phoney variant.
12235         (check_omp_nesting_restrictions): Remove handling of
12236         GIMPLE_OMP_GRID_BODY and GF_OMP_FOR_KIND_GRID_LOOP.
12237         (scan_omp_1_stmt): Remove handling of GIMPLE_OMP_GRID_BODY.
12238         (lower_omp_for_lastprivate): Remove handling of gridified loops.
12239         (lower_omp_for): Remove phony loop handling.
12240         (lower_omp_taskreg): Remove phony construct handling.
12241         (lower_omp_teams): Likewise.
12242         (lower_omp_grid_body): Removed.
12243         (lower_omp_1): Remove GIMPLE_OMP_GRID_BODY case.
12244         (execute_lower_omp): Do not call omp_grid_gridify_all_targets.
12245         * opts.c (common_handle_option): Do not handle hsa when processing
12246         OPT_foffload_.
12247         * params.opt (hsa-gen-debug-stores): Remove.
12248         * passes.def: Remove pass_ipa_hsa and pass_gen_hsail.
12249         * timevar.def: Remove TV_IPA_HSA.
12250         * toplev.c: Do not include hsa-common.h.
12251         (compile_file): Do not call hsa_output_brig.
12252         * tree-core.h (enum omp_clause_code): Remove OMP_CLAUSE__GRIDDIM_.
12253         (tree_omp_clause): Remove union field dimension.
12254         * tree-nested.c (convert_nonlocal_omp_clauses): Remove the
12255         OMP_CLAUSE__GRIDDIM_ case.
12256         (convert_local_omp_clauses): Likewise.
12257         * tree-pass.h (make_pass_gen_hsail): Remove declaration.
12258         (make_pass_ipa_hsa): Likewise.
12259         * tree-pretty-print.c (dump_omp_clause): Remove GIMPLE_OMP_GRID_BODY
12260         case.
12261         * tree.c (omp_clause_num_ops): Remove the element corresponding to
12262         OMP_CLAUSE__GRIDDIM_.
12263         (omp_clause_code_name): Likewise.
12264         (walk_tree_1): Remove GIMPLE_OMP_GRID_BODY case.
12265         * tree.h (OMP_CLAUSE__GRIDDIM__DIMENSION): Remove.
12266         (OMP_CLAUSE__GRIDDIM__SIZE): Likewise.
12267         (OMP_CLAUSE__GRIDDIM__GROUP): Likewise.
12269 2020-08-03  Bu Le  <bule1@huawei.com>
12271         * config/aarch64/aarch64-sve.md (sub<mode>3): Add support for
12272         unpacked vectors.
12274 2020-08-03  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
12276         * config/msp430/msp430.h (ASM_SPEC): Don't pass on "-md" option.
12278 2020-08-03  Yunde Zhong  <zhongyunde@huawei.com>
12280         PR rtl-optimization/95696
12281         * regrename.c (regrename_analyze): New param include_all_block_p
12282         with default value TRUE.  If set to false, avoid disrupting SMS
12283         schedule.
12284         * regrename.h (regrename_analyze): Adjust prototype.
12286 2020-08-03  Wei Wentao  <weiwt.fnst@cn.fujitsu.com>
12288         * doc/tm.texi.in (VECTOR_STORE_FLAG_VALUE): Fix a typo.
12289         * doc/tm.texi: Regenerate.
12291 2020-08-03  Richard Sandiford  <richard.sandiford@arm.com>
12293         * doc/invoke.texi: Add missing comma after octeontx2f95mm entry.
12295 2020-08-03  Qian jianhua  <qianjh@cn.fujitsu.com>
12297         * config/aarch64/aarch64-cores.def (a64fx): New core.
12298         * config/aarch64/aarch64-tune.md: Regenerated.
12299         * config/aarch64/aarch64.c (a64fx_prefetch_tune, a64fx_tunings): New.
12300         * doc/invoke.texi: Add a64fx to the list.
12302 2020-08-03  Roger Sayle  <roger@nextmovesoftware.com>
12304         PR rtl-optimization/61494
12305         * simplify-rtx.c (simplify_binary_operation_1) [MINUS]: Don't
12306         simplify x - 0.0 with -fsignaling-nans.
12308 2020-08-03  Roger Sayle  <roger@nextmovesoftware.com>
12310         * genmatch.c (decision_tree::gen): Emit stub functions for
12311         tree code operand counts that have no simplifications.
12312         (main): Correct comment typo.
12314 2020-08-03  Jonathan Wakely  <jwakely@redhat.com>
12316         * gimple-ssa-sprintf.c: Fix typos in comments.
12318 2020-08-03  Tamar Christina  <tamar.christina@arm.com>
12320         * config/aarch64/driver-aarch64.c (readline): Check return value fgets.
12322 2020-08-03  Richard Biener  <rguenther@suse.de>
12324         * doc/match-and-simplify.texi: Amend accordingly.
12326 2020-08-03  Richard Biener  <rguenther@suse.de>
12328         * genmatch.c (parser::gimple): New.
12329         (parser::parser): Initialize gimple flag member.
12330         (parser::parse_expr): Error on ! operator modifier when
12331         not targeting GIMPLE.
12332         (main): Pass down gimple flag to parser ctor.
12334 2020-08-03  Aldy Hernandez  <aldyh@redhat.com>
12336         * Makefile.in (GTFILES): Move value-range.h up.
12337         * gengtype-lex.l: Set yylval to handle GTY markers on templates.
12338         * ipa-cp.c (initialize_node_lattices): Call value_range
12339         constructor.
12340         (ipcp_propagate_stage): Use in-place new so value_range construct
12341         is called.
12342         * ipa-fnsummary.c (evaluate_conditions_for_known_args): Use std
12343         vec instead of GCC's vec<>.
12344         (evaluate_properties_for_edge): Adjust for std vec.
12345         (ipa_fn_summary_t::duplicate): Same.
12346         (estimate_ipcp_clone_size_and_time): Same.
12347         * ipa-prop.c (ipa_get_value_range): Use in-place new for
12348         value_range.
12349         * ipa-prop.h (struct GTY): Remove class keyword for m_vr.
12350         * range-op.cc (empty_range_check): Rename to...
12351         (empty_range_varying): ...this and adjust for varying.
12352         (undefined_shift_range_check): Adjust for irange.
12353         (range_operator::wi_fold): Same.
12354         (range_operator::fold_range): Adjust for irange.  Special case
12355         single pairs for performance.
12356         (range_operator::op1_range): Adjust for irange.
12357         (range_operator::op2_range): Same.
12358         (value_range_from_overflowed_bounds): Same.
12359         (value_range_with_overflow): Same.
12360         (create_possibly_reversed_range): Same.
12361         (range_true): Same.
12362         (range_false): Same.
12363         (range_true_and_false): Same.
12364         (get_bool_state):  Adjust for irange and tweak for performance.
12365         (operator_equal::fold_range): Adjust for irange.
12366         (operator_equal::op1_range): Same.
12367         (operator_equal::op2_range): Same.
12368         (operator_not_equal::fold_range): Same.
12369         (operator_not_equal::op1_range): Same.
12370         (operator_not_equal::op2_range): Same.
12371         (build_lt): Same.
12372         (build_le): Same.
12373         (build_gt): Same.
12374         (build_ge): Same.
12375         (operator_lt::fold_range): Same.
12376         (operator_lt::op1_range): Same.
12377         (operator_lt::op2_range): Same.
12378         (operator_le::fold_range): Same.
12379         (operator_le::op1_range): Same.
12380         (operator_le::op2_range): Same.
12381         (operator_gt::fold_range): Same.
12382         (operator_gt::op1_range): Same.
12383         (operator_gt::op2_range): Same.
12384         (operator_ge::fold_range): Same.
12385         (operator_ge::op1_range): Same.
12386         (operator_ge::op2_range): Same.
12387         (operator_plus::wi_fold): Same.
12388         (operator_plus::op1_range): Same.
12389         (operator_plus::op2_range): Same.
12390         (operator_minus::wi_fold): Same.
12391         (operator_minus::op1_range): Same.
12392         (operator_minus::op2_range): Same.
12393         (operator_min::wi_fold): Same.
12394         (operator_max::wi_fold): Same.
12395         (cross_product_operator::wi_cross_product): Same.
12396         (operator_mult::op1_range): New.
12397         (operator_mult::op2_range): New.
12398         (operator_mult::wi_fold): Adjust for irange.
12399         (operator_div::wi_fold): Same.
12400         (operator_exact_divide::op1_range): Same.
12401         (operator_lshift::fold_range): Same.
12402         (operator_lshift::wi_fold): Same.
12403         (operator_lshift::op1_range): New.
12404         (operator_rshift::op1_range): New.
12405         (operator_rshift::fold_range): Adjust for irange.
12406         (operator_rshift::wi_fold): Same.
12407         (operator_cast::truncating_cast_p): Abstract out from
12408         operator_cast::fold_range.
12409         (operator_cast::fold_range): Adjust for irange and tweak for
12410         performance.
12411         (operator_cast::inside_domain_p): Abstract out from fold_range.
12412         (operator_cast::fold_pair): Same.
12413         (operator_cast::op1_range): Use abstracted methods above.  Adjust
12414         for irange and tweak for performance.
12415         (operator_logical_and::fold_range): Adjust for irange.
12416         (operator_logical_and::op1_range): Same.
12417         (operator_logical_and::op2_range): Same.
12418         (unsigned_singleton_p): New.
12419         (operator_bitwise_and::remove_impossible_ranges): New.
12420         (operator_bitwise_and::fold_range): New.
12421         (wi_optimize_and_or):  Adjust for irange.
12422         (operator_bitwise_and::wi_fold): Same.
12423         (set_nonzero_range_from_mask): New.
12424         (operator_bitwise_and::simple_op1_range_solver): New.
12425         (operator_bitwise_and::op1_range): Adjust for irange.
12426         (operator_bitwise_and::op2_range): Same.
12427         (operator_logical_or::fold_range): Same.
12428         (operator_logical_or::op1_range): Same.
12429         (operator_logical_or::op2_range): Same.
12430         (operator_bitwise_or::wi_fold): Same.
12431         (operator_bitwise_or::op1_range): Same.
12432         (operator_bitwise_or::op2_range): Same.
12433         (operator_bitwise_xor::wi_fold): Same.
12434         (operator_bitwise_xor::op1_range): New.
12435         (operator_bitwise_xor::op2_range): New.
12436         (operator_trunc_mod::wi_fold):  Adjust for irange.
12437         (operator_logical_not::fold_range): Same.
12438         (operator_logical_not::op1_range): Same.
12439         (operator_bitwise_not::fold_range): Same.
12440         (operator_bitwise_not::op1_range): Same.
12441         (operator_cst::fold_range): Same.
12442         (operator_identity::fold_range): Same.
12443         (operator_identity::op1_range): Same.
12444         (class operator_unknown): New.
12445         (operator_unknown::fold_range): New.
12446         (class operator_abs): Adjust for irange.
12447         (operator_abs::wi_fold): Same.
12448         (operator_abs::op1_range): Same.
12449         (operator_absu::wi_fold): Same.
12450         (class operator_negate): Same.
12451         (operator_negate::fold_range): Same.
12452         (operator_negate::op1_range): Same.
12453         (operator_addr_expr::fold_range): Same.
12454         (operator_addr_expr::op1_range): Same.
12455         (pointer_plus_operator::wi_fold): Same.
12456         (pointer_min_max_operator::wi_fold): Same.
12457         (pointer_and_operator::wi_fold): Same.
12458         (pointer_or_operator::op1_range): New.
12459         (pointer_or_operator::op2_range): New.
12460         (pointer_or_operator::wi_fold):  Adjust for irange.
12461         (integral_table::integral_table): Add entries for IMAGPART_EXPR
12462         and POINTER_DIFF_EXPR.
12463         (range_cast):  Adjust for irange.
12464         (build_range3): New.
12465         (range3_tests): New.
12466         (widest_irange_tests): New.
12467         (multi_precision_range_tests): New.
12468         (operator_tests): New.
12469         (range_tests): New.
12470         * range-op.h (class range_operator): Adjust for irange.
12471         (range_cast): Same.
12472         * tree-vrp.c (range_fold_binary_symbolics_p): Adjust for irange and
12473         tweak for performance.
12474         (range_fold_binary_expr): Same.
12475         (masked_increment): Change to extern.
12476         * tree-vrp.h (masked_increment): New.
12477         * tree.c (cache_wide_int_in_type_cache): New function abstracted
12478         out from wide_int_to_tree_1.
12479         (wide_int_to_tree_1): Cache 0, 1, and MAX for pointers.
12480         * value-range-equiv.cc (value_range_equiv::deep_copy): Use kind
12481         method.
12482         (value_range_equiv::move): Same.
12483         (value_range_equiv::check): Adjust for irange.
12484         (value_range_equiv::intersect): Same.
12485         (value_range_equiv::union_): Same.
12486         (value_range_equiv::dump): Same.
12487         * value-range.cc (irange::operator=): Same.
12488         (irange::maybe_anti_range): New.
12489         (irange::copy_legacy_range): New.
12490         (irange::set_undefined): Adjust for irange.
12491         (irange::swap_out_of_order_endpoints): Abstract out from set().
12492         (irange::set_varying): Adjust for irange.
12493         (irange::irange_set): New.
12494         (irange::irange_set_anti_range): New.
12495         (irange::set): Adjust for irange.
12496         (value_range::set_nonzero): Move to header file.
12497         (value_range::set_zero): Move to header file.
12498         (value_range::check): Rename to...
12499         (irange::verify_range): ...this.
12500         (value_range::num_pairs): Rename to...
12501         (irange::legacy_num_pairs): ...this, and adjust for irange.
12502         (value_range::lower_bound): Rename to...
12503         (irange::legacy_lower_bound): ...this, and adjust for irange.
12504         (value_range::upper_bound): Rename to...
12505         (irange::legacy_upper_bound): ...this, and adjust for irange.
12506         (value_range::equal_p): Rename to...
12507         (irange::legacy_equal_p): ...this.
12508         (value_range::operator==): Move to header file.
12509         (irange::equal_p): New.
12510         (irange::symbolic_p): Adjust for irange.
12511         (irange::constant_p): Same.
12512         (irange::singleton_p): Same.
12513         (irange::value_inside_range): Same.
12514         (irange::may_contain_p): Same.
12515         (irange::contains_p): Same.
12516         (irange::normalize_addresses): Same.
12517         (irange::normalize_symbolics): Same.
12518         (irange::legacy_intersect): Same.
12519         (irange::legacy_union): Same.
12520         (irange::union_): Same.
12521         (irange::intersect): Same.
12522         (irange::irange_union): New.
12523         (irange::irange_intersect): New.
12524         (subtract_one): New.
12525         (irange::invert): Adjust for irange.
12526         (dump_bound_with_infinite_markers): New.
12527         (irange::dump): Adjust for irange.
12528         (debug): Add irange versions.
12529         (range_has_numeric_bounds_p): Adjust for irange.
12530         (vrp_val_max): Move to header file.
12531         (vrp_val_min): Move to header file.
12532         (DEFINE_INT_RANGE_GC_STUBS): New.
12533         (DEFINE_INT_RANGE_INSTANCE): New.
12534         * value-range.h (class irange): New.
12535         (class int_range): New.
12536         (class value_range): Rename to a instantiation of int_range.
12537         (irange::legacy_mode_p): New.
12538         (value_range::value_range): Remove.
12539         (irange::kind): New.
12540         (irange::num_pairs): Adjust for irange.
12541         (irange::type): Adjust for irange.
12542         (irange::tree_lower_bound): New.
12543         (irange::tree_upper_bound): New.
12544         (irange::type): Adjust for irange.
12545         (irange::min): Same.
12546         (irange::max): Same.
12547         (irange::varying_p): Same.
12548         (irange::undefined_p): Same.
12549         (irange::zero_p): Same.
12550         (irange::nonzero_p): Same.
12551         (irange::supports_type_p): Same.
12552         (range_includes_zero_p): Same.
12553         (gt_ggc_mx): New.
12554         (gt_pch_nx): New.
12555         (irange::irange): New.
12556         (int_range::int_range): New.
12557         (int_range::operator=): New.
12558         (irange::set): Moved from value-range.cc and adjusted for irange.
12559         (irange::set_undefined): Same.
12560         (irange::set_varying): Same.
12561         (irange::operator==): Same.
12562         (irange::lower_bound): Same.
12563         (irange::upper_bound): Same.
12564         (irange::union_): Same.
12565         (irange::intersect): Same.
12566         (irange::set_nonzero): Same.
12567         (irange::set_zero): Same.
12568         (irange::normalize_min_max): New.
12569         (vrp_val_max): Move from value-range.cc.
12570         (vrp_val_min): Same.
12571         * vr-values.c (vr_values::get_lattice_entry): Call value_range
12572         constructor.
12574 2020-08-02  Sergei Trofimovich  <siarheit@google.com>
12576         PR bootstrap/96404
12577         * var-tracking.c (vt_find_locations): Fully initialize
12578         all 'in_pending' bits.
12580 2020-08-01  Jan Hubicka  <jh@suse.cz>
12582         * symtab.c (symtab_node::verify_base): Verify order.
12583         (symtab_node::verify_symtab_nodes): Verify order.
12585 2020-08-01  Jan Hubicka  <jh@suse.cz>
12587         * predict.c (estimate_bb_frequencies): Cap recursive calls by 90%.
12589 2020-08-01  Jojo R  <jiejie_rong@c-sky.com>
12591         * config/csky/csky_opts.h (float_abi_type): New.
12592         * config/csky/csky.h (TARGET_SOFT_FLOAT): New.
12593         (TARGET_HARD_FLOAT): New.
12594         (TARGET_HARD_FLOAT_ABI): New.
12595         (OPTION_DEFAULT_SPECS): Use mfloat-abi.
12596         * config/csky/csky.opt (mfloat-abi): New.
12597         * doc/invoke.texi (C-SKY Options): Document -mfloat-abi=.
12599 2020-08-01  Cooper Qu  <cooper.qu@linux.alibaba.com>
12601         * config/csky/t-csky-linux: Delete big endian CPUs' multilib.
12603 2020-07-31  Roger Sayle  <roger@nextmovesoftware.com>
12604             Tom de Vries  <tdevries@suse.de>
12606         PR target/90928
12607         * config/nvptx/nvptx.c (nvptx_truly_noop_truncation): Implement.
12608         (TARGET_TRULY_NOOP_TRUNCATION): Define.
12610 2020-07-31  Richard Biener  <rguenther@suse.de>
12612         PR debug/96383
12613         * langhooks-def.h (lhd_finalize_early_debug): Declare.
12614         (LANG_HOOKS_FINALIZE_EARLY_DEBUG): Define.
12615         (LANG_HOOKS_INITIALIZER): Amend.
12616         * langhooks.c: Include cgraph.h and debug.h.
12617         (lhd_finalize_early_debug): Default implementation from
12618         former code in finalize_compilation_unit.
12619         * langhooks.h (lang_hooks::finalize_early_debug): Add.
12620         * cgraphunit.c (symbol_table::finalize_compilation_unit):
12621         Call the finalize_early_debug langhook.
12623 2020-07-31  Richard Biener  <rguenther@suse.de>
12625         * genmatch.c (expr::force_leaf): Add and initialize.
12626         (expr::gen_transform): Honor force_leaf by passing
12627         NULL as sequence argument to maybe_push_res_to_seq.
12628         (parser::parse_expr): Allow ! marker on result expression
12629         operations.
12630         * doc/match-and-simplify.texi: Amend.
12632 2020-07-31  Kewen Lin  <linkw@linux.ibm.com>
12634         * tree-vect-loop.c (vect_get_known_peeling_cost): Don't consider branch
12635         taken costs for prologue and epilogue if they don't exist.
12636         (vect_estimate_min_profitable_iters): Likewise.
12638 2020-07-31  Martin Liska  <mliska@suse.cz>
12640         * cgraph.h: Remove leading empty lines.
12641         * cgraphunit.c (enum cgraph_order_sort_kind): Remove
12642         ORDER_UNDEFINED.
12643         (struct cgraph_order_sort): Add constructors.
12644         (cgraph_order_sort::process): New.
12645         (cgraph_order_cmp): New.
12646         (output_in_order): Simplify and push nodes to vector.
12648 2020-07-31  Richard Biener  <rguenther@suse.de>
12650         PR middle-end/96369
12651         * fold-const.c (fold_range_test): Special-case constant
12652         LHS for short-circuiting operations.
12654 2020-07-31  Martin Liska  <mliska@suse.cz>
12656         * gcov-io.h (GCOV_PREALLOCATED_KVP): New.
12658 2020-07-31  Zhiheng Xie  <xiezhiheng@huawei.com>
12660         * config/aarch64/aarch64-builtins.c (aarch64_general_add_builtin):
12661         Add new argument ATTRS.
12662         (aarch64_call_properties): New function.
12663         (aarch64_modifies_global_state_p): Likewise.
12664         (aarch64_reads_global_state_p): Likewise.
12665         (aarch64_could_trap_p): Likewise.
12666         (aarch64_add_attribute): Likewise.
12667         (aarch64_get_attributes): Likewise.
12668         (aarch64_init_simd_builtins): Add attributes for each built-in function.
12670 2020-07-31  Richard Biener  <rguenther@suse.de>
12672         PR debug/78288
12673         * var-tracking.c (vt_find_locations): Use
12674         rev_post_order_and_mark_dfs_back_seme and separately iterate
12675         over toplevel SCCs.
12677 2020-07-31  Richard Biener  <rguenther@suse.de>
12679         * cfganal.h (rev_post_order_and_mark_dfs_back_seme): Adjust
12680         prototype.
12681         * cfganal.c (rpoamdbs_bb_data): New struct with pre BB data.
12682         (tag_header): New helper.
12683         (cmp_edge_dest_pre): Likewise.
12684         (rev_post_order_and_mark_dfs_back_seme): Compute SCCs,
12685         find SCC exits and perform a DFS walk with extra edges to
12686         compute a RPO with adjacent SCC members when requesting an
12687         iteration optimized order and populate the toplevel SCC array.
12688         * tree-ssa-sccvn.c (do_rpo_vn): Remove ad-hoc computation
12689         of max_rpo and fill it in from SCC extent info instead.
12691 2020-07-30  Will Schmidt  <will_schmidt@vnet.ibm.com>
12693         * config/rs6000/altivec.h (vec_test_lsbb_all_ones): New define.
12694         (vec_test_lsbb_all_zeros): New define.
12695         * config/rs6000/rs6000-builtin.def (BU_P10_VSX_1): New built-in
12696         handling macro.
12697         (XVTLSBB_ZEROS, XVTLSBB_ONES): New builtin defines.
12698         (xvtlsbb_all_zeros, xvtlsbb_all_ones): New builtin overloads.
12699         * config/rs6000/rs6000-call.c (P10_BUILTIN_VEC_XVTLSBB_ZEROS,
12700         P10_BUILTIN_VEC_XVTLSBB_ONES): New altivec_builtin_types entries.
12701         * config/rs6000/rs6000.md (UNSPEC_XVTLSBB):  New unspec.
12702         * config/rs6000/vsx.md (*xvtlsbb_internal): New instruction define.
12703         (xvtlsbbo, xvtlsbbz): New instruction expands.
12705 2020-07-30  Cooper Qu  <cooper.qu@linux.alibaba.com>
12707         * config/riscv/riscv-opts.h (stack_protector_guard): New enum.
12708         * config/riscv/riscv.c (riscv_option_override): Handle
12709         the new options.
12710         * config/riscv/riscv.md (stack_protect_set): New pattern to handle
12711         flexible stack protector guard settings.
12712         (stack_protect_set_<mode>): Ditto.
12713         (stack_protect_test): Ditto.
12714         (stack_protect_test_<mode>): Ditto.
12715         * config/riscv/riscv.opt (mstack-protector-guard=,
12716         mstack-protector-guard-reg=, mstack-protector-guard-offset=): New
12717         options.
12718         * doc/invoke.texi (Option Summary) [RISC-V Options]:
12719         Add -mstack-protector-guard=, -mstack-protector-guard-reg=, and
12720         -mstack-protector-guard-offset=.
12721         (RISC-V Options): Ditto.
12723 2020-07-30  H.J. Lu  <hjl.tools@gmail.com>
12725         PR bootstrap/96202
12726         * configure: Regenerated.
12728 2020-07-30  Richard Biener  <rguenther@suse.de>
12730         PR tree-optimization/96370
12731         * tree-ssa-reassoc.c (rewrite_expr_tree): Add operation
12732         code parameter and use it instead of picking it up from
12733         the stmt that is being rewritten.
12734         (reassociate_bb): Pass down the operation code.
12736 2020-07-30  Roger Sayle  <roger@nextmovesoftware.com>
12737             Tom de Vries  <tdevries@suse.de>
12739         * config/nvptx/nvptx.md (nvptx_vector_index_operand): New predicate.
12740         (VECELEM): New mode attribute for a vector's uppercase element mode.
12741         (Vecelem): New mode attribute for a vector's lowercase element mode.
12742         (*vec_set<mode>_0, *vec_set<mode>_1, *vec_set<mode>_2)
12743         (*vec_set<mode>_3): New instructions.
12744         (vec_set<mode>): New expander to generate one of the above insns.
12745         (vec_extract<mode><Vecelem>): New instruction.
12747 2020-07-30  Martin Liska  <mliska@suse.cz>
12749         PR target/95435
12750         * config/i386/x86-tune-costs.h: Use libcall for large sizes for
12751         -m32. Start using libcall from 128+ bytes.
12753 2020-07-30  Martin Liska  <mliska@suse.cz>
12755         * config/i386/x86-tune-costs.h: Change code formatting.
12757 2020-07-29  Roger Sayle  <roger@nextmovesoftware.com>
12759         * config/nvptx/nvptx.md (recip<mode>2): New instruction.
12761 2020-07-29  Fangrui Song  <maskray@google.com>
12763         PR debug/95096
12764         * opts.c (common_handle_option): Don't make -gsplit-dwarf imply -g.
12765         * doc/invoke.texi (-gsplit-dwarf): Update documentation.
12767 2020-07-29  Joe Ramsay  <joe.ramsay@arm.com>
12769         * config/arm/arm-protos.h (arm_coproc_mem_operand_no_writeback):
12770         Declare prototype.
12771         (arm_mve_mode_and_operands_type_check): Declare prototype.
12772         * config/arm/arm.c (arm_coproc_mem_operand): Refactor to use
12773         _arm_coproc_mem_operand.
12774         (arm_coproc_mem_operand_wb): New function to cover full, limited
12775         and no writeback.
12776         (arm_coproc_mem_operand_no_writeback): New constraint for memory
12777         operand with no writeback.
12778         (arm_print_operand): Extend 'E' specifier for memory operand
12779         that does not support writeback.
12780         (arm_mve_mode_and_operands_type_check): New constraint check for
12781         MVE memory operands.
12782         * config/arm/constraints.md: Add Uj constraint for VFP vldr.16
12783         and vstr.16.
12784         * config/arm/vfp.md (*mov_load_vfp_hf16): New pattern for
12785         vldr.16.
12786         (*mov_store_vfp_hf16): New pattern for vstr.16.
12787         (*mov<mode>_vfp_<mode>16): Remove MVE moves.
12789 2020-07-29  Richard Biener  <rguenther@suse.de>
12791         PR tree-optimization/96349
12792         * tree-ssa-loop-split.c (stmt_semi_invariant_p_1): When the
12793         condition runs into a loop PHI with an abnormal entry value give up.
12795 2020-07-29  Richard Biener  <rguenther@suse.de>
12797         * tree-vectorizer.c (vectorize_loops): Reset the SCEV
12798         cache if we removed any SIMD UID SSA defs.
12799         * gimple-loop-interchange.cc (pass_linterchange::execute):
12800         Reset the scev cache if we interchanged a loop.
12802 2020-07-29  Richard Biener  <rguenther@suse.de>
12804         PR tree-optimization/95679
12805         * tree-ssa-propagate.h
12806         (substitute_and_fold_engine::propagate_into_phi_args): Return
12807         whether anything changed.
12808         * tree-ssa-propagate.c
12809         (substitute_and_fold_engine::propagate_into_phi_args): Likewise.
12810         (substitute_and_fold_dom_walker::before_dom_children): Update
12811         something_changed.
12813 2020-07-29  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
12815         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
12816         Ensure that loop variable npeel_tmp advances in each iteration.
12818 2020-07-29  Hans-Peter Nilsson  <hp@bitrange.com>
12820         * config/mmix/mmix.h (NO_FUNCTION_CSE): Define to 1.
12822 2020-07-29  Hans-Peter Nilsson  <hp@bitrange.com>
12824         * config/mmix/mmix.h (ASM_OUTPUT_EXTERNAL): Define to
12825         default_elf_asm_output_external.
12827 2020-07-28  Sergei Trofimovich  <siarheit@google.com>
12829         PR ipa/96291
12830         * ipa-cp.c (has_undead_caller_from_outside_scc_p): Consider
12831         unoptimized callers as undead.
12833 2020-07-28  Roger Sayle  <roger@nextmovesoftware.com>
12834             Richard Biener  <rguenther@suse.de>
12836         * match.pd (popcount(x)&1 -> parity(x)): New simplification.
12837         (parity(~x) -> parity(x)): New simplification.
12838         (parity(x)^parity(y) -> parity(x^y)): New simplification.
12839         (parity(x&1) -> x&1): New simplification.
12840         (popcount(x) -> x>>C): New simplification.
12842 2020-07-28  Roger Sayle  <roger@nextmovesoftware.com>
12843             Tom de Vries  <tdevries@suse.de>
12845         * config/nvptx/nvptx.md (extendqihi2): New instruction.
12846         (ashl<mode>3, ashr<mode>3, lshr<mode>3): Support HImode.
12848 2020-07-28  Jakub Jelinek  <jakub@redhat.com>
12850         PR middle-end/96335
12851         * calls.c (maybe_warn_rdwr_sizes): Add FNDECL and FNTYPE arguments,
12852         instead of trying to rediscover them in the body.
12853         (initialize_argument_information): Adjust caller.
12855 2020-07-28  Kewen Lin  <linkw@linux.ibm.com>
12857         * tree-vect-loop.c (vect_get_known_peeling_cost): Factor out some code
12858         to determine peel_iters_epilogue to...
12859         (vect_get_peel_iters_epilogue): ...this new function.
12860         (vect_estimate_min_profitable_iters): Refactor cost calculation on
12861         peel_iters_prologue and peel_iters_epilogue.
12863 2020-07-27  Martin Sebor  <msebor@redhat.com>
12865         PR tree-optimization/84079
12866         * gimple-array-bounds.cc (array_bounds_checker::check_addr_expr):
12867         Only allow just-past-the-end references for the most significant
12868         array bound.
12870 2020-07-27  Hu Jiangping  <hujiangping@cn.fujitsu.com>
12872         PR driver/96247
12873         * opts.c (check_alignment_argument): Set the -falign-Name
12874         on/off flag on and set the -falign-Name string value null,
12875         when the command-line specified argument is zero.
12877 2020-07-27  Martin Liska  <mliska@suse.cz>
12879         PR tree-optimization/96058
12880         * expr.c (string_constant): Build string_constant only
12881         for a type that has same precision as char_type_node
12882         and is an integral type.
12884 2020-07-27  Richard Biener  <rguenther@suse.de>
12886         * var-tracking.c (variable_tracking_main_1): Remove call
12887         to mark_dfs_back_edges.
12889 2020-07-27  Martin Liska  <mliska@suse.cz>
12891         PR tree-optimization/96128
12892         * tree-vect-generic.c (expand_vector_comparison): Do not expand
12893         vector comparison with VEC_COND_EXPR.
12895 2020-07-27  H.J. Lu  <hjl.tools@gmail.com>
12897         PR bootstrap/96203
12898         * common.opt: Add -fcf-protection=check.
12899         * flag-types.h (cf_protection_level): Add CF_CHECK.
12900         * lto-wrapper.c (merge_and_complain): Issue an error for
12901         mismatching -fcf-protection values with -fcf-protection=check.
12902         Otherwise, merge -fcf-protection values.
12903         * doc/invoke.texi: Document -fcf-protection=check.
12905 2020-07-27  Martin Liska  <mliska@suse.cz>
12907         PR lto/45375
12908         * symbol-summary.h: Call vec_safe_reserve before grow is called
12909         in order to grow to a reasonable size.
12910         * vec.h (vec_safe_reserve): Add missing function for vl_ptr
12911         type.
12913 2020-07-26  Hans-Peter Nilsson  <hp@bitrange.com>
12915         * configure.ac (out-of-tree linker .hidden support): Don't turn off
12916         for mmix-knuth-mmixware.
12917         * configure: Regenerate.
12919 2020-07-26  Aaron Sawdey  <acsawdey@linux.ibm.com>
12921         * config/rs6000/rs6000.c (rs6000_option_override_internal):
12922         Set the default value for -mblock-ops-unaligned-vsx.
12923         * config/rs6000/rs6000.opt: Add -mblock-ops-unaligned-vsx.
12924         * doc/invoke.texi: Document -mblock-ops-unaligned-vsx.
12926 2020-07-25  Hans-Peter Nilsson  <hp@bitrange.com>
12928         * config/mmix/mmix.c (TARGET_ASM_OUTPUT_IDENT): Override the default
12929         with default_asm_output_ident_directive.
12931 2020-07-25  Andrew Stubbs  <ams@codesourcery.com>
12933         * config/gcn/gcn.c (gcn_scalar_mode_supported_p): New function.
12934         (TARGET_SCALAR_MODE_SUPPORTED_P): New define.
12936 2020-07-24  David Edelsohn  <dje.gcc@gmail.com>
12937             Clement Chigot  <clement.chigot@atos.net>
12939         * config.gcc (powerpc-ibm-aix7.1): Use t-aix64 and biarch64 for
12940         cpu_is_64bit.
12941         * config/rs6000/aix71.h (ASM_SPEC): Remove aix64 option.
12942         (ASM_SPEC32): New.
12943         (ASM_SPEC64): New.
12944         (ASM_CPU_SPEC): Remove vsx and altivec options.
12945         (CPP_SPEC_COMMON): Rename from CPP_SPEC.
12946         (CPP_SPEC32): New.
12947         (CPP_SPEC64): New.
12948         (CPLUSPLUS_CPP_SPEC): Rename to CPLUSPLUS_CPP_SPEC_COMMON..
12949         (TARGET_DEFAULT): Use 64 bit mask if BIARCH.
12950         (LIB_SPEC_COMMON): Rename from LIB_SPEC.
12951         (LIB_SPEC32): New.
12952         (LIB_SPEC64): New.
12953         (LINK_SPEC_COMMON): Rename from LINK_SPEC.
12954         (LINK_SPEC32): New.
12955         (LINK_SPEC64): New.
12956         (STARTFILE_SPEC): Add 64 bit version of crtcxa and crtdbase.
12957         (ASM_SPEC): Define 32 and 64 bit alternatives using DEFAULT_ARCH64_P.
12958         (CPP_SPEC): Same.
12959         (CPLUSPLUS_CPP_SPEC): Same.
12960         (LIB_SPEC): Same.
12961         (LINK_SPEC): Same.
12962         (SUBTARGET_EXTRA_SPECS): Add new 32/64 specs.
12963         * config/rs6000/aix72.h (TARGET_DEFAULT): Use 64 bit mask if BIARCH.
12964         * config/rs6000/defaultaix64.h: Delete.
12966 2020-07-24  Segher Boessenkool  <segher@kernel.crashing.org>
12968         * config/rs6000/rs6000.opt: Delete -mpower10.
12970 2020-07-24  Alexandre Oliva  <oliva@adacore.com>
12972         * config/i386/intelmic-mkoffload.c
12973         (generate_target_descr_file): Use dumppfx for save_temps
12974         files.  Pass -dumpbase et al down to the compiler.
12975         (generate_target_offloadend_file): Likewise.
12976         (generate_host_descr_file): Likewise.
12977         (prepare_target_image): Likewise.  Move out_obj_filename
12978         setting...
12979         (main): ... here.  Detect -dumpbase, set dumppfx too.
12981 2020-07-24  Alexandre Oliva  <oliva@adacore.com>
12983         PR driver/96230
12984         * gcc.c (process_command): Adjust and document conditions to
12985         reset dumpbase_ext.
12987 2020-07-24  Matthias Klose  <doko@ubuntu.com>
12989         * config/aarch64/aarch64.c (+aarch64_offload_options,
12990         TARGET_OFFLOAD_OPTIONS): New.
12992 2020-07-24  Uroš Bizjak  <ubizjak@gmail.com>
12994         PR target/95750
12995         * config/i386/sync.md (mmem_thread_fence): Emit mfence_sse2 for -Os.
12997 2020-07-23  Roger Sayle  <roger@nextmovesoftware.com>
12999         PR rtl-optimization/96298
13000         * simplify-rtx.c (simplify_binary_operation_1) [XOR]: Xor doesn't
13001         distribute over xor, so (a^b)^(c^b) is not the same as (a^c)^b.
13003 2020-07-23  Dong JianQiang  <dongjianqiang2@huawei.com>
13005         PR gcov-profile/96267
13006         * gcov-io.c (gcov_open): enable if IN_GCOV_TOOL.
13008 2020-07-23  Kewen Lin  <linkw@linux.ibm.com>
13010         * config/rs6000/rs6000.c (adjust_vectorization_cost): Renamed to ...
13011         (rs6000_adjust_vect_cost_per_stmt): ... here.
13012         (rs6000_add_stmt_cost): Rename adjust_vectorization_cost to
13013         rs6000_adjust_vect_cost_per_stmt.
13015 2020-07-23  Kewen Lin  <linkw@linux.ibm.com>
13017         * tree-ssa-loop-ivopts.c (get_mem_type_for_internal_fn): Handle
13018         IFN_LEN_LOAD and IFN_LEN_STORE.
13019         (get_alias_ptr_type_for_ptr_address): Likewise.
13021 2020-07-23  Kito Cheng  <kito.cheng@sifive.com>
13023         PR target/96260
13024         * asan.c (asan_shadow_offset_set_p): New.
13025         * asan.h (asan_shadow_offset_set_p): Ditto.
13026         * toplev.c (process_options): Allow -fsanitize=kernel-address
13027         even TARGET_ASAN_SHADOW_OFFSET not implemented, only check when
13028         asan stack protection is enabled.
13030 2020-07-22  Peter Bergner  <bergner@linux.ibm.com>
13032         PR target/96236
13033         * config/rs6000/rs6000-call.c (rs6000_gimple_fold_mma_builtin): Handle
13034         little-endian memory ordering.
13036 2020-07-22  Nathan Sidwell  <nathan@acm.org>
13038         * dumpfile.c (parse_dump_option): Deal with filenames
13039         containing '-'
13041 2020-07-22  Nathan Sidwell  <nathan@acm.org>
13043         * incpath.c (add_path): Avoid multiple strlen calls.
13045 2020-07-22  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
13047         * expmed.c (expand_sdiv_pow2): Check return value from emit_store_flag
13048         is not NULL_RTX before use.
13050 2020-07-22  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
13052         * expr.c (convert_modes): Allow a constant integer to be converted to
13053         any scalar int mode.
13055 2020-07-22  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>
13057         * config/aarch64/aarch64-ldpstp.md: Add two peepholes for adjusted vector
13058         V2SI, V2SF, V2DI, V2DF load pair and store pair modes.
13059         * config/aarch64/aarch64-protos.h (aarch64_gen_adjusted_ldpstp):
13060         Change mode parameter to machine_mode.
13061         (aarch64_operands_adjust_ok_for_ldpstp): Change mode parameter to
13062         machine_mode.
13063         * config/aarch64/aarch64.c (aarch64_operands_adjust_ok_for_ldpstp):
13064         Change mode parameter to machine_mode.
13065         (aarch64_gen_adjusted_ldpstp): Change mode parameter to machine_mode.
13066         * config/aarch64/iterators.md (VP_2E): New iterator for 2 element vectors.
13068 2020-07-22  Wei Wentao  <weiwt.fnst@cn.fujitsu.com>
13070         * doc/languages.texi: Fix “then”/“than” typo.
13072 2020-07-21  Sunil K Pandey  <skpgkp2@gmail.com>
13074         PR target/95237
13075         * config/i386/i386-protos.h (ix86_local_alignment): Add
13076         another function parameter may_lower alignment. Default is
13077         false.
13078         * config/i386/i386.c (ix86_lower_local_decl_alignment): New
13079         function.
13080         (ix86_local_alignment): Amend ix86_local_alignment to accept
13081         another parameter may_lower. If may_lower is true, new align
13082         may be lower than incoming alignment. If may_lower is false,
13083         new align will be greater or equal to incoming alignment.
13084         (TARGET_LOWER_LOCAL_DECL_ALIGNMENT): Define.
13085         * doc/tm.texi: Regenerate.
13086         * doc/tm.texi.in (TARGET_LOWER_LOCAL_DECL_ALIGNMENT): New
13087         hook.
13088         * target.def (lower_local_decl_alignment): New hook.
13090 2020-07-21  Uroš Bizjak  <ubizjak@gmail.com>
13092         PR target/95750
13093         * config/i386/sync.md (mfence_sse2): Enable for
13094         TARGET_64BIT and TARGET_SSE2.
13095         (mfence_nosse): Always enable.
13097 2020-07-21  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
13099         * config/msp430/msp430-protos.h (msp430_do_not_relax_short_jumps):
13100         Remove.
13101         * config/msp430/msp430.c (msp430_do_not_relax_short_jumps): Likewise.
13102         * config/msp430/msp430.md (cbranchhi4_real): Remove special case for
13103         msp430_do_not_relax_short_jumps.
13105 2020-07-21  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
13107         * config/msp430/msp430.md: New "extendqipsi2" define_insn.
13109 2020-07-21  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
13111         * config/msp430/msp430.h (NO_FUNCTION_CSE): Set to true at -O2 and
13112         above.
13114 2020-07-21  Xionghu Luo  <luoxhu@linux.ibm.com>
13116         PR rtl-optimization/89310
13117         * config/rs6000/rs6000.md (movsf_from_si2): New define_insn_and_split.
13119 2020-07-20  Hans-Peter Nilsson  <hp@bitrange.com>
13121         * config/mmix/mmix.c (mmix_expand_prologue): Calculate the total
13122         allocated size and set current_function_static_stack_size, if
13123         flag_stack_usage_info.
13125 2020-07-20  Sergei Trofimovich  <siarheit@google.com>
13127         PR target/96190
13128         * config/sparc/linux.h (ENDFILE_SPEC): Use GNU_USER_TARGET_ENDFILE_SPEC
13129         to get crtendS.o for !no-pie mode.
13130         * config/sparc/linux64.h (ENDFILE_SPEC): Ditto.
13132 2020-07-20  Yang Yang  <yangyang305@huawei.com>
13134         * tree-vect-stmts.c (vectorizable_simd_clone_call): Add
13135         VIEW_CONVERT_EXPRs if the arguments types and return type
13136         of simd clone function are distinct with the vectype of stmt.
13138 2020-07-20  Uroš Bizjak  <ubizjak@gmail.com>
13140         PR target/95750
13141         * config/i386/i386.h (TARGET_AVOID_MFENCE):
13142         Rename from TARGET_USE_XCHG_FOR_ATOMIC_STORE.
13143         * config/i386/sync.md (mfence_sse2): Disable for TARGET_AVOID_MFENCE.
13144         (mfence_nosse): Enable also for TARGET_AVOID_MFENCE. Emit stack
13145         referred memory in word_mode.
13146         (mem_thread_fence): Do not generate mfence_sse2 pattern when
13147         TARGET_AVOID_MFENCE is true.
13148         (atomic_store<mode>): Update for rename.
13149         * config/i386/x86-tune.def (X86_TUNE_AVOID_MFENCE):
13150         Rename from X86_TUNE_USE_XCHG_FOR_ATOMIC_STORE.
13152 2020-07-20  Martin Sebor  <msebor@redhat.com>
13154         PR middle-end/95189
13155         PR middle-end/95886
13156         * builtins.c (inline_expand_builtin_string_cmp): Rename...
13157         (inline_expand_builtin_bytecmp): ...to this.
13158         (builtin_memcpy_read_str): Don't expect data to be nul-terminated.
13159         (expand_builtin_memory_copy_args): Handle object representations
13160         with embedded nul bytes.
13161         (expand_builtin_memcmp): Same.
13162         (expand_builtin_strcmp): Adjust call to naming change.
13163         (expand_builtin_strncmp): Same.
13164         * expr.c (string_constant): Create empty strings with nonzero size.
13165         * fold-const.c (c_getstr): Rename locals and update comments.
13166         * tree.c (build_string): Accept null pointer argument.
13167         (build_string_literal): Same.
13168         * tree.h (build_string): Provide a default.
13169         (build_string_literal): Same.
13171 2020-07-20  Richard Biener  <rguenther@suse.de>
13173         * cfganal.c (rev_post_order_and_mark_dfs_back_seme): Remove
13174         write-only post array.
13176 2020-07-20  Jakub Jelinek  <jakub@redhat.com>
13178         PR libstdc++/93121
13179         * gimple-fold.c (fold_const_aggregate_ref_1): For COMPONENT_REF
13180         of a bitfield not aligned on byte boundaries try to
13181         fold_ctor_reference DECL_BIT_FIELD_REPRESENTATIVE if any and
13182         adjust it depending on endianity.
13184 2020-07-20  Jakub Jelinek  <jakub@redhat.com>
13186         PR libstdc++/93121
13187         * fold-const.c (native_encode_initializer): Handle bit-fields.
13189 2020-07-20  Kewen Lin  <linkw@linux.ibm.com>
13191         * config/rs6000/rs6000.c (rs6000_option_override_internal):
13192         Set param_vect_partial_vector_usage to 0 explicitly.
13193         * doc/invoke.texi (vect-partial-vector-usage): Document new option.
13194         * optabs-query.c (get_len_load_store_mode): New function.
13195         * optabs-query.h (get_len_load_store_mode): New declare.
13196         * params.opt (vect-partial-vector-usage): New.
13197         * tree-vect-loop-manip.c (vect_set_loop_controls_directly): Add the
13198         handlings for vectorization using length-based partial vectors, call
13199         vect_gen_len for length generation, and rename some variables with
13200         items instead of scalars.
13201         (vect_set_loop_condition_partial_vectors): Add the handlings for
13202         vectorization using length-based partial vectors.
13203         (vect_do_peeling): Allow remaining eiters less than epilogue vf for
13204         LOOP_VINFO_USING_PARTIAL_VECTORS_P.
13205         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Init
13206         epil_using_partial_vectors_p.
13207         (_loop_vec_info::~_loop_vec_info): Call release_vec_loop_controls
13208         for lengths destruction.
13209         (vect_verify_loop_lens): New function.
13210         (vect_analyze_loop): Add handlings for epilogue of loop when it's
13211         marked to use vectorization using partial vectors.
13212         (vect_analyze_loop_2): Add the check to allow only one vectorization
13213         approach using partial vectorization at the same time.  Check param
13214         vect-partial-vector-usage for partial vectors decision.  Mark
13215         LOOP_VINFO_EPIL_USING_PARTIAL_VECTORS_P if the epilogue is
13216         considerable to use partial vectors.  Call release_vec_loop_controls
13217         for lengths destruction.
13218         (vect_estimate_min_profitable_iters): Adjust for loop vectorization
13219         using length-based partial vectors.
13220         (vect_record_loop_mask): Init factor to 1 for vectorization using
13221         mask-based partial vectors.
13222         (vect_record_loop_len): New function.
13223         (vect_get_loop_len): Likewise.
13224         * tree-vect-stmts.c (check_load_store_for_partial_vectors): Add
13225         checks for vectorization using length-based partial vectors.  Factor
13226         some code to lambda function get_valid_nvectors.
13227         (vectorizable_store): Add handlings when using length-based partial
13228         vectors.
13229         (vectorizable_load): Likewise.
13230         (vect_gen_len): New function.
13231         * tree-vectorizer.h (struct rgroup_controls): Add field factor
13232         mainly for length-based partial vectors.
13233         (vec_loop_lens): New typedef.
13234         (_loop_vec_info): Add lens and epil_using_partial_vectors_p.
13235         (LOOP_VINFO_EPIL_USING_PARTIAL_VECTORS_P): New macro.
13236         (LOOP_VINFO_LENS): Likewise.
13237         (LOOP_VINFO_FULLY_WITH_LENGTH_P): Likewise.
13238         (vect_record_loop_len): New declare.
13239         (vect_get_loop_len): Likewise.
13240         (vect_gen_len): Likewise.
13242 2020-07-20  Hans-Peter Nilsson  <hp@bitrange.com>
13244         * config/mmix/mmix.c (mmix_option_override): Reinstate default
13245         integer-emitting targetm.asm_out pseudos when dumping detailed
13246         assembly-code.
13247         (mmix_assemble_integer): Update comment.
13249 2020-07-19  H.J. Lu  <hjl.tools@gmail.com>
13251         PR target/95973
13252         PR target/96238
13253         * config/i386/cpuid.h: Add include guard.
13254         (__cpuidex): New.
13256 2020-07-18  H.J. Lu  <hjl.tools@gmail.com>
13258         PR target/95620
13259         * config/i386/x86-64.h (ASM_OUTPUT_ALIGNED_DECL_LOCAL): New.
13261 2020-07-18  Peter Bergner  <bergner@linux.ibm.com>
13263         PR target/92488
13264         * config/rs6000/dfp.md (trunctdsd2): New define_insn.
13265         * config/rs6000/rs6000.md (define_attr "isa"): Add p9.
13266         (define_attr "enabled"): Handle p9.
13268 2020-07-17  Roger Sayle  <roger@nextmovesoftware.com>
13270         * function.c (assign_parm_setup_block): Use the macro
13271         TRULY_NOOP_TRUNCATION_MODES_P instead of calling
13272         targetm.truly_noop_truncation directly.
13274 2020-07-17  H.J. Lu  <hjl.tools@gmail.com>
13276         PR target/96186
13277         PR target/88713
13278         * config/i386/sse.md (VF_AVX512VL_VF1_128_256): Renamed to ...
13279         (VF1_AVX512ER_128_256): This.  Drop DF vector modes.
13280         (rsqrt<mode>2): Replace VF_AVX512VL_VF1_128_256 with
13281         VF1_AVX512ER_128_256.
13283 2020-07-17  Tamar Christina  <tamar.christina@arm.com>
13285         * doc/sourcebuild.texi (dg-set-compiler-env-var,
13286         dg-set-target-env-var): Document.
13288 2020-07-17  Tamar Christina  <tamar.christina@arm.com>
13290         * config/arm/driver-arm.c (host_detect_local_cpu): Add GCC_CPUINFO.
13292 2020-07-17  Tamar Christina  <tamar.christina@arm.com>
13294         * config/aarch64/driver-aarch64.c (host_detect_local_cpu):
13295         Add GCC_CPUINFO.
13297 2020-07-17  Tamar Christina  <tamar.christina@arm.com>
13299         * config/aarch64/driver-aarch64.c (INCLUDE_SET): New.
13300         (parse_field): Use std::string.
13301         (split_words, readline, find_field): New.
13302         (host_detect_local_cpu): Fix truncation issues.
13304 2020-07-17  Andrew Stubbs  <ams@codesourcery.com>
13306         * config/gcn/mkoffload.c (EM_AMDGPU): Undefine before defining.
13307         (ELFOSABI_AMDGPU_HSA): Likewise.
13308         (ELFABIVERSION_AMDGPU_HSA): Likewise.
13309         (EF_AMDGPU_MACH_AMDGCN_GFX803): Likewise.
13310         (EF_AMDGPU_MACH_AMDGCN_GFX900): Likewise.
13311         (EF_AMDGPU_MACH_AMDGCN_GFX906): Likewise.
13312         (reserved): Delete.
13314 2020-07-17  Andrew Pinski  <apinksi@marvell.com>
13315             Dmitrij Pochepko  <dmitrij.pochepko@bell-sw.com>
13317         PR target/93720
13318         * config/aarch64/aarch64.c (aarch64_evpc_ins): New function.
13319         (aarch64_expand_vec_perm_const_1): Call it.
13320         * config/aarch64/aarch64-simd.md (aarch64_simd_vec_copy_lane): Make
13321         public, and add a "@" prefix.
13323 2020-07-17  Andrew Pinski  <apinksi@marvell.com>
13324             Dmitrij Pochepko  <dmitrij.pochepko@bell-sw.com>
13326         PR target/82199
13327         * config/aarch64/aarch64.c (aarch64_evpc_reencode): New function.
13328         (aarch64_expand_vec_perm_const_1): Call it.
13330 2020-07-17  Zhiheng Xie  <xiezhiheng@huawei.com>
13332         * config/aarch64/aarch64-builtins.c (enum aarch64_type_qualifiers):
13333         Add new field flags.
13334         (VAR1): Add new field FLAG in macro.
13335         (VAR2): Likewise.
13336         (VAR3): Likewise.
13337         (VAR4): Likewise.
13338         (VAR5): Likewise.
13339         (VAR6): Likewise.
13340         (VAR7): Likewise.
13341         (VAR8): Likewise.
13342         (VAR9): Likewise.
13343         (VAR10): Likewise.
13344         (VAR11): Likewise.
13345         (VAR12): Likewise.
13346         (VAR13): Likewise.
13347         (VAR14): Likewise.
13348         (VAR15): Likewise.
13349         (VAR16): Likewise.
13350         (aarch64_general_fold_builtin): Likewise.
13351         (aarch64_general_gimple_fold_builtin): Likewise.
13352         * config/aarch64/aarch64-simd-builtins.def: Add default flag for
13353         each built-in function.
13354         * config/aarch64/geniterators.sh: Add new field in BUILTIN macro.
13356 2020-07-17  Andreas Krebbel  <krebbel@linux.ibm.com>
13358         PR target/96127
13359         * config/s390/s390.c (s390_expand_insv): Invoke the movstrict
13360         expanders to generate the pattern.
13361         * config/s390/s390.md ("*movstricthi", "*movstrictqi"): Remove the
13362         '*' to have callable expanders.
13364 2020-07-16  Hans-Peter Nilsson  <hp@axis.com>
13365             Segher Boessenkool  <segher@kernel.crashing.org>
13367         PR target/93372
13368         * combine.c (is_just_move): Take an rtx_insn* as argument.  Use
13369         single_set on it.
13371 2020-07-16  Uroš Bizjak  <ubizjak@gmail.com>
13373         PR target/96189
13374         * config/i386/sync.md
13375         (peephole2 to remove unneded compare after CMPXCHG):
13376         New pattern, also handle XOR zeroing and load of -1 by OR.
13378 2020-07-16  Eric Botcazou  <ebotcazou@adacore.com>
13380         * config/i386/i386.c (ix86_compute_frame_layout): Minor tweak.
13381         (ix86_adjust_stack_and_probe): Delete.
13382         (ix86_adjust_stack_and_probe_stack_clash): Rename to above and add
13383         PROTECTION_AREA parameter.  If it is true, probe PROBE_INTERVAL plus
13384         a small dope beyond SIZE bytes.
13385         (ix86_emit_probe_stack_range): Use local variable.
13386         (ix86_expand_prologue): Adjust calls to ix86_adjust_stack_and_probe
13387         and tidy up the stack checking code.
13388         * explow.c (get_stack_check_protect): Fix head comment.
13389         (anti_adjust_stack_and_probe_stack_clash): Likewise.
13390         (allocate_dynamic_stack_space): Add comment.
13391         * tree-nested.c (lookup_field_for_decl): Set the DECL_IGNORED_P and
13392         TREE_NO_WARNING but not TREE_ADDRESSABLE flags on the field.
13394 2020-07-16  Andrew Stubbs  <ams@codesourcery.com>
13396         * config/gcn/mkoffload.c: Include simple-object.h and elf.h.
13397         (EM_AMDGPU): New macro.
13398         (ELFOSABI_AMDGPU_HSA): New macro.
13399         (ELFABIVERSION_AMDGPU_HSA): New macro.
13400         (EF_AMDGPU_MACH_AMDGCN_GFX803): New macro.
13401         (EF_AMDGPU_MACH_AMDGCN_GFX900): New macro.
13402         (EF_AMDGPU_MACH_AMDGCN_GFX906): New macro.
13403         (R_AMDGPU_NONE): New macro.
13404         (R_AMDGPU_ABS32_LO): New macro.
13405         (R_AMDGPU_ABS32_HI): New macro.
13406         (R_AMDGPU_ABS64): New macro.
13407         (R_AMDGPU_REL32): New macro.
13408         (R_AMDGPU_REL64): New macro.
13409         (R_AMDGPU_ABS32): New macro.
13410         (R_AMDGPU_GOTPCREL): New macro.
13411         (R_AMDGPU_GOTPCREL32_LO): New macro.
13412         (R_AMDGPU_GOTPCREL32_HI): New macro.
13413         (R_AMDGPU_REL32_LO): New macro.
13414         (R_AMDGPU_REL32_HI): New macro.
13415         (reserved): New macro.
13416         (R_AMDGPU_RELATIVE64): New macro.
13417         (gcn_s1_name): Delete global variable.
13418         (gcn_s2_name): Delete global variable.
13419         (gcn_o_name): Delete global variable.
13420         (gcn_cfile_name): Delete global variable.
13421         (files_to_cleanup): New global variable.
13422         (offload_abi): New global variable.
13423         (tool_cleanup): Use files_to_cleanup, not explicit list.
13424         (copy_early_debug_info): New function.
13425         (main): New local variables gcn_s1_name, gcn_s2_name, gcn_o_name,
13426         gcn_cfile_name.
13427         Create files_to_cleanup obstack.
13428         Recognize -march options.
13429         Copy early debug info from input .o files.
13431 2020-07-16  Andrea Corallo  <andrea.corallo@arm.com>
13433         * Makefile.in (TAGS): Remove 'params.def'.
13435 2020-07-16  Roger Sayle  <roger@nextmovesoftware.com>
13437         * target.def (TARGET_TRULY_NOOP_TRUNCATION): Clarify that
13438         targets that return false, indicating SUBREGs shouldn't be
13439         used, also need to provide a trunc?i?i2 optab that performs this
13440         truncation.
13441         * doc/tm.texi: Regenerate.
13443 2020-07-15  Uroš Bizjak  <ubizjak@gmail.com>
13445         PR target/96189
13446         * config/i386/sync.md
13447         (peephole2 to remove unneded compare after CMPXCHG): New pattern.
13449 2020-07-15  Jakub Jelinek  <jakub@redhat.com>
13451         PR libgomp/96198
13452         * omp-general.h (struct omp_for_data): Rename min_inner_iterations
13453         member to first_inner_iterations, adjust comment.
13454         * omp-general.c (omp_extract_for_data): Adjust for the above change.
13455         Always use n1first and n2first to compute it, rather than depending
13456         on single_nonrect_cond_code.  Similarly, always compute factor
13457         as (m2 - m1) * outer_step / inner_step rather than sometimes m1 - m2
13458         depending on single_nonrect_cond_code.
13459         * omp-expand.c (expand_omp_for_init_vars): Rename min_inner_iterations
13460         to first_inner_iterations and min_inner_iterationsd to
13461         first_inner_iterationsd.
13463 2020-07-15  Jakub Jelinek  <jakub@redhat.com>
13465         PR target/96174
13466         * config/i386/avx512fintrin.h (_mm512_cmpeq_pd_mask,
13467         _mm512_mask_cmpeq_pd_mask, _mm512_cmplt_pd_mask,
13468         _mm512_mask_cmplt_pd_mask, _mm512_cmple_pd_mask,
13469         _mm512_mask_cmple_pd_mask, _mm512_cmpunord_pd_mask,
13470         _mm512_mask_cmpunord_pd_mask, _mm512_cmpneq_pd_mask,
13471         _mm512_mask_cmpneq_pd_mask, _mm512_cmpnlt_pd_mask,
13472         _mm512_mask_cmpnlt_pd_mask, _mm512_cmpnle_pd_mask,
13473         _mm512_mask_cmpnle_pd_mask, _mm512_cmpord_pd_mask,
13474         _mm512_mask_cmpord_pd_mask, _mm512_cmpeq_ps_mask,
13475         _mm512_mask_cmpeq_ps_mask, _mm512_cmplt_ps_mask,
13476         _mm512_mask_cmplt_ps_mask, _mm512_cmple_ps_mask,
13477         _mm512_mask_cmple_ps_mask, _mm512_cmpunord_ps_mask,
13478         _mm512_mask_cmpunord_ps_mask, _mm512_cmpneq_ps_mask,
13479         _mm512_mask_cmpneq_ps_mask, _mm512_cmpnlt_ps_mask,
13480         _mm512_mask_cmpnlt_ps_mask, _mm512_cmpnle_ps_mask,
13481         _mm512_mask_cmpnle_ps_mask, _mm512_cmpord_ps_mask,
13482         _mm512_mask_cmpord_ps_mask): Move outside of __OPTIMIZE__ guarded
13483         section.
13485 2020-07-15  Jakub Jelinek  <jakub@redhat.com>
13487         PR target/96176
13488         * builtins.c: Include gimple-ssa.h, tree-ssa-live.h and
13489         tree-outof-ssa.h.
13490         (expand_expr_force_mode): If exp is a SSA_NAME with different mode
13491         from MODE and get_gimple_for_ssa_name is a cast from MODE, use the
13492         cast's rhs.
13494 2020-07-15  Jiufu Guo   <guojiufu@cn.ibm.com>
13496         * config/rs6000/rs6000.c (rs6000_loop_unroll_adjust): Refine hook.
13498 2020-07-14  David Edelsohn  <dje.gcc@gmail.com>
13500         * config/rs6000/rs6000.md (rotldi3_insert_sf): Add TARGET_POWERPC64
13501         condition.
13502         * config/rs6000/rs6000.c (rs6000_expand_vector_init): Add
13503         TARGET_POWERPC64 requirement to TARGET_P8_VECTOR case.
13505 2020-07-14  Lewis Hyatt  <lhyatt@gmail.com>
13507         PR preprocessor/49973
13508         PR other/86904
13509         * common.opt: Handle -ftabstop here instead of in c-family
13510         options.  Add -fdiagnostics-column-unit= and
13511         -fdiagnostics-column-origin= options.
13512         * opts.c (common_handle_option): Handle the new options.
13513         * diagnostic-format-json.cc (json_from_expanded_location): Add
13514         diagnostic_context argument.  Use it to convert column numbers as per
13515         the new options.
13516         (json_from_location_range): Likewise.
13517         (json_from_fixit_hint): Likewise.
13518         (json_end_diagnostic): Pass the new context argument to helper
13519         functions above.  Add "column-origin" field to the output.
13520         (test_unknown_location): Add the new context argument to calls to
13521         helper functions.
13522         (test_bad_endpoints): Likewise.
13523         * diagnostic-show-locus.c
13524         (exploc_with_display_col::exploc_with_display_col): Support
13525         tabstop parameter.
13526         (layout_point::layout_point): Make use of class
13527         exploc_with_display_col.
13528         (layout_range::layout_range): Likewise.
13529         (struct line_bounds): Clarify that the units are now always
13530         display columns.  Rename members accordingly.  Add constructor.
13531         (layout::print_source_line): Add support for tab expansion.
13532         (make_range): Adapt to class layout_range changes.
13533         (layout::maybe_add_location_range): Likewise.
13534         (layout::layout): Adapt to class exploc_with_display_col changes.
13535         (layout::calculate_x_offset_display): Support tabstop parameter.
13536         (layout::print_annotation_line): Adapt to struct line_bounds changes.
13537         (layout::print_line): Likewise.
13538         (line_label::line_label): Add diagnostic_context argument.
13539         (get_affected_range): Likewise.
13540         (get_printed_columns): Likewise.
13541         (layout::print_any_labels): Adapt to struct line_label changes.
13542         (class correction): Add m_tabstop member.
13543         (correction::correction): Add tabstop argument.
13544         (correction::compute_display_cols): Use m_tabstop.
13545         (class line_corrections): Add m_context member.
13546         (line_corrections::line_corrections): Add diagnostic_context argument.
13547         (line_corrections::add_hint): Use m_context to handle tabstops.
13548         (layout::print_trailing_fixits): Adapt to class line_corrections
13549         changes.
13550         (test_layout_x_offset_display_utf8): Support tabstop parameter.
13551         (test_layout_x_offset_display_tab): New selftest.
13552         (test_one_liner_colorized_utf8): Likewise.
13553         (test_tab_expansion): Likewise.
13554         (test_diagnostic_show_locus_one_liner_utf8): Call the new tests.
13555         (diagnostic_show_locus_c_tests): Likewise.
13556         (test_overlapped_fixit_printing): Adapt to helper class and
13557         function changes.
13558         (test_overlapped_fixit_printing_utf8): Likewise.
13559         (test_overlapped_fixit_printing_2): Likewise.
13560         * diagnostic.h (enum diagnostics_column_unit): New enum.
13561         (struct diagnostic_context): Add members for the new options.
13562         (diagnostic_converted_column): Declare.
13563         (json_from_expanded_location): Add new context argument.
13564         * diagnostic.c (diagnostic_initialize): Initialize new members.
13565         (diagnostic_converted_column): New function.
13566         (maybe_line_and_column): Be willing to output a column of 0.
13567         (diagnostic_get_location_text): Convert column number as per the new
13568         options.
13569         (diagnostic_report_current_module): Likewise.
13570         (assert_location_text): Add origin and column_unit arguments for
13571         testing the new functionality.
13572         (test_diagnostic_get_location_text): Test the new functionality.
13573         * doc/invoke.texi: Document the new options and behavior.
13574         * input.h (location_compute_display_column): Add tabstop argument.
13575         * input.c (location_compute_display_column): Likewise.
13576         (test_cpp_utf8): Add selftests for tab expansion.
13577         * tree-diagnostic-path.cc (default_tree_make_json_for_path): Pass the
13578         new context argument to json_from_expanded_location().
13580 2020-07-14  Jakub Jelinek  <jakub@redhat.com>
13582         PR middle-end/96194
13583         * expr.c (expand_constructor): Don't create temporary for store to
13584         volatile MEM if exp has an addressable type.
13586 2020-07-14  Nathan Sidwell  <nathan@acm.org>
13588         * hash-map.h (hash_map::get): Note it is a pointer to value.
13589         * incpath.h (incpath_kind): Align comments.
13591 2020-07-14  Nathan Sidwell  <nathan@acm.org>
13593         * tree-core.h (tree_decl_with_vis, tree_function_decl):
13594         Note additional padding on 64-bits
13595         * tree.c (cache_integer_cst): Note why no caching of enum literals.
13596         (get_tree_code_name): Robustify error case.
13598 2020-07-14  Nathan Sidwell  <nathan@acm.org>
13600         * doc/gty.texi: Fic gt_cleare_cache name.
13601         * doc/invoke.texi: Remove duplicate opindex Wabi-tag.
13603 2020-07-14  Jakub Jelinek  <jakub@redhat.com>
13605         * omp-general.h (struct omp_for_data): Add adjn1 member.
13606         * omp-general.c (omp_extract_for_data): For non-rect loop, punt on
13607         count computing if n1, n2 or step are not INTEGER_CST earlier.
13608         Narrow the outer iterator range if needed so that non-rect loop
13609         has at least one iteration for each outer range iteration.  Compute
13610         adjn1.
13611         * omp-expand.c (expand_omp_for_init_vars): Use adjn1 if non-NULL
13612         instead of the outer loop's n1.
13614 2020-07-14  Matthias Klose  <doko@ubuntu.com>
13616         PR lto/95604
13617         * lto-wrapper.c (merge_and_complain): Add decoded options as parameter,
13618         error on different values for -fcf-protection.
13619         (append_compiler_options): Pass -fcf-protection option.
13620         (find_and_merge_options): Add decoded options as parameter,
13621         pass decoded_options to merge_and_complain.
13622         (run_gcc): Pass decoded options to find_and_merge_options.
13623         * lto-opts.c (lto_write_options): Pass -fcf-protection option.
13625 2020-07-13  Alan Modra  <amodra@gmail.com>
13627         * config/rs6000/rs6000.md (sibcall_local): Merge sibcall_local32
13628         and sibcall_local64.
13629         (sibcall_value_local): Similarly.
13631 2020-07-13  Nathan Sidwell  <nathan@acm.org>
13633         * Makefile.in (distclean): Remove long gone cxxmain.c
13635 2020-07-13  H.J. Lu  <hjl.tools@gmail.com>
13637         PR target/95443
13638         * config/i386/i386.md (cmpstrnsi): Pass a copy of the string
13639         length to cmpstrnqi patterns.
13641 2020-07-13  Jakub Jelinek  <jakub@redhat.com>
13643         PR ipa/96130
13644         * ipa-fnsummary.c (analyze_function_body): Treat NULL bb->aux
13645         as false predicate.
13647 2020-07-13  Richard Biener  <rguenther@suse.de>
13649         PR tree-optimization/96163
13650         * tree-vect-slp.c (vect_schedule_slp_instance): Put new stmts
13651         at least after region begin.
13653 2020-07-13  Szabolcs Nagy  <szabolcs.nagy@arm.com>
13655         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Add
13656         __ARM_FEATURE_PAC_DEFAULT support.
13658 2020-07-13  Szabolcs Nagy  <szabolcs.nagy@arm.com>
13660         PR target/94891
13661         * doc/extend.texi: Update the text for  __builtin_return_address.
13663 2020-07-13  Szabolcs Nagy  <szabolcs.nagy@arm.com>
13665         PR target/94891
13666         * config/aarch64/aarch64.c (aarch64_return_address_signing_enabled):
13667         Disable return address signing if __builtin_eh_return is used.
13669 2020-07-13  Szabolcs Nagy  <szabolcs.nagy@arm.com>
13671         PR target/94891
13672         PR target/94791
13673         * config/aarch64/aarch64-protos.h (aarch64_return_addr_rtx): Declare.
13674         * config/aarch64/aarch64.c (aarch64_return_addr_rtx): New.
13675         (aarch64_return_addr): Use aarch64_return_addr_rtx.
13676         * config/aarch64/aarch64.h (PROFILE_HOOK): Likewise.
13678 2020-07-13  Richard Sandiford  <richard.sandiford@arm.com>
13680         PR middle-end/95114
13681         * tree.h (virtual_method_call_p): Add a default-false parameter
13682         that indicates whether the function is being called from dump
13683         routines.
13684         (obj_type_ref_class): Likewise.
13685         * tree.c (virtual_method_call_p): Likewise.
13686         * ipa-devirt.c (obj_type_ref_class): Likewise.  Lazily add ODR
13687         type information for the type when the parameter is false.
13688         * tree-pretty-print.c (dump_generic_node): Update calls to
13689         virtual_method_call_p and obj_type_ref_class accordingly.
13691 2020-07-13  Julian Brown  <julian@codesourcery.com>
13692             Thomas Schwinge  <thomas@codesourcery.com>
13694         * gimplify.c (gimplify_scan_omp_clauses): Do not strip
13695         GOMP_MAP_TO_PSET/GOMP_MAP_POINTER for OpenACC enter/exit data
13696         directives (see also PR92929).
13698 2020-07-13  Roger Sayle  <roger@nextmovesoftware.com>
13700         * convert.c (convert_to_integer_1): Narrow integer operations
13701         even on targets that require explicit truncation instructions.
13703 2020-07-13  Hans-Peter Nilsson  <hp@axis.com>
13705         PR target/93372
13706         * config/cris/cris-passes.def: New file.
13707         * config/cris/t-cris (PASSES_EXTRA): Add cris-passes.def.
13708         * config/cris/cris.c: Add infrastructure bits and pass execute
13709         function cris_postdbr_cmpelim.
13710         * config/cris/cris-protos.h (make_pass_cris_postdbr_cmpelim): Declare.
13712 2020-07-13  Hans-Peter Nilsson  <hp@axis.com>
13714         * config/cris/t-cris: Remove gt-cris.h-related excessive cargo.
13716 2020-07-13  Hans-Peter Nilsson  <hp@axis.com>
13718         PR target/93372
13719         * config/cris/cris.md ("*add<mode>3_addi"): New splitter.
13720         ("*addi_b_<mode>"): New pattern.
13721         ("*addsi3<setnz>"): Remove stale %-related comment.
13723 2020-07-13  Hans-Peter Nilsson  <hp@axis.com>
13725         * config/cris/cris.md ("setnz_subst", "setnz_subst", "setcc_subst"):
13726         Use match_dup in output template, not match_operand.
13728 2020-07-13  Richard Biener  <rguenther@suse.de>
13730         * var-tracking.c (bb_heap_node_t): Remove unused typedef.
13731         (vt_find_locations): Eliminate visited bitmap in favor of
13732         RPO order check.  Dump statistics about the number of
13733         local BB dataflow computes.
13735 2020-07-13  Richard Biener  <rguenther@suse.de>
13737         PR middle-end/94600
13738         * expr.c (expand_constructor): Make a temporary also if we're
13739         storing to volatile memory.
13741 2020-07-13  Xionghu Luo  <luoxhu@linux.ibm.com>
13743         * config/rs6000/rs6000.md (rotl_unspec): New
13744         define_insn_and_split.
13746 2020-07-13  Xionghu Luo  <luoxhu@linux.ibm.com>
13748         * config/rs6000/rs6000.c (rs6000_expand_vector_init):
13749         Move V4SF to V4SI, init vector like V4SI and move to V4SF back.
13751 2020-07-11  Roger Sayle  <roger@nextmovesoftware.com>
13753         * internal-fn.c (expand_mul_overflow): When checking for signed
13754         overflow from a widening multiplication, we access the truncated
13755         lowpart RES twice, so keep this value in a pseudo register.
13757 2020-07-11  Richard Sandiford  <richard.sandiford@arm.com>
13759         PR tree-optimization/96146
13760         * value-range.cc (value_range::set): Only decompose POLY_INT_CST
13761         bounds to integers for VR_RANGE.  Decay to VR_VARYING for anti-ranges
13762         involving POLY_INT_CSTs.
13764 2020-07-10  David Edelsohn  <dje.gcc@gmail.com>
13766         PR target/77373
13767         * config/rs6000/rs6000.c (rs6000_xcoff_select_section): Only
13768         create named section for VAR_DECL or FUNCTION_DECL.
13770 2020-07-10  Joseph Myers  <joseph@codesourcery.com>
13772         * glimits.h [__STDC_VERSION__ > 201710L] (BOOL_MAX, BOOL_WIDTH):
13773         New macros.
13775 2020-07-10  Alexander Popov  <alex.popov@linux.com>
13777         * shrink-wrap.c (try_shrink_wrapping): Improve debug output.
13779 2020-07-10  Richard Sandiford  <richard.sandiford@arm.com>
13781         PR middle-end/96151
13782         * expr.c (expand_expr_real_2): When reducing bit fields,
13783         clear the target if it has a different mode from the expression.
13784         (reduce_to_bit_field_precision): Don't do that here.  Instead
13785         assert that the target already has the correct mode.
13787 2020-07-10  Richard Sandiford  <richard.sandiford@arm.com>
13789         PR target/92789
13790         PR target/95726
13791         * config/arm/arm.c (arm_attribute_table): Add
13792         "Advanced SIMD type".
13793         (arm_comp_type_attributes): Check that the "Advanced SIMD type"
13794         attributes are equal.
13795         * config/arm/arm-builtins.c: Include stringpool.h and
13796         attribs.h.
13797         (arm_mangle_builtin_vector_type): Use the mangling recorded
13798         in the "Advanced SIMD type" attribute.
13799         (arm_init_simd_builtin_types): Add an "Advanced SIMD type"
13800         attribute to each Advanced SIMD type, using the mangled type
13801         as the attribute's single argument.
13803 2020-07-10  Carl Love  <cel@us.ibm.com>
13805         * config/rs6000/vsx.md  (VSX_MM): New define_mode_iterator.
13806         (VSX_MM4): New define_mode_iterator.
13807         (vec_mtvsrbmi): New define_insn.
13808         (vec_mtvsr_<mode>): New define_insn.
13809         (vec_cntmb_<mode>): New define_insn.
13810         (vec_extract_<mode>): New define_insn.
13811         (vec_expand_<mode>): New define_insn.
13812         (define_c_enum unspec): Add entries UNSPEC_MTVSBM, UNSPEC_VCNTMB,
13813         UNSPEC_VEXTRACT, UNSPEC_VEXPAND.
13814         * config/rs6000/altivec.h ( vec_genbm, vec_genhm, vec_genwm,
13815         vec_gendm, vec_genqm, vec_cntm, vec_expandm, vec_extractm): Add
13816         defines.
13817         * config/rs6000/rs6000-builtin.def: Add defines BU_P10_2, BU_P10_1.
13818         (BU_P10_1): Add definitions for mtvsrbm, mtvsrhm, mtvsrwm,
13819         mtvsrdm, mtvsrqm, vexpandmb, vexpandmh, vexpandmw, vexpandmd,
13820         vexpandmq, vextractmb, vextractmh, vextractmw, vextractmd, vextractmq.
13821         (BU_P10_2): Add definitions for cntmbb, cntmbh, cntmbw, cntmbd.
13822         (BU_P10_OVERLOAD_1): Add definitions for mtvsrbm, mtvsrhm,
13823         mtvsrwm, mtvsrdm, mtvsrqm, vexpandm, vextractm.
13824         (BU_P10_OVERLOAD_2): Add defition for cntm.
13825         * config/rs6000/rs6000-call.c (rs6000_expand_binop_builtin): Add
13826         checks for CODE_FOR_vec_cntmbb_v16qi, CODE_FOR_vec_cntmb_v8hi,
13827         CODE_FOR_vec_cntmb_v4si, CODE_FOR_vec_cntmb_v2di.
13828         (altivec_overloaded_builtins): Add overloaded argument entries for
13829         P10_BUILTIN_VEC_MTVSRBM, P10_BUILTIN_VEC_MTVSRHM,
13830         P10_BUILTIN_VEC_MTVSRWM, P10_BUILTIN_VEC_MTVSRDM,
13831         P10_BUILTIN_VEC_MTVSRQM, P10_BUILTIN_VEC_VCNTMBB,
13832         P10_BUILTIN_VCNTMBB, P10_BUILTIN_VCNTMBH,
13833         P10_BUILTIN_VCNTMBW, P10_BUILTIN_VCNTMBD,
13834         P10_BUILTIN_VEXPANDMB, P10_BUILTIN_VEXPANDMH,
13835         P10_BUILTIN_VEXPANDMW, P10_BUILTIN_VEXPANDMD,
13836         P10_BUILTIN_VEXPANDMQ, P10_BUILTIN_VEXTRACTMB,
13837         P10_BUILTIN_VEXTRACTMH, P10_BUILTIN_VEXTRACTMW,
13838         P10_BUILTIN_VEXTRACTMD, P10_BUILTIN_VEXTRACTMQ.
13839         (builtin_function_type): Add case entries for P10_BUILTIN_MTVSRBM,
13840         P10_BUILTIN_MTVSRHM, P10_BUILTIN_MTVSRWM, P10_BUILTIN_MTVSRDM,
13841         P10_BUILTIN_MTVSRQM, P10_BUILTIN_VCNTMBB, P10_BUILTIN_VCNTMBH,
13842         P10_BUILTIN_VCNTMBW, P10_BUILTIN_VCNTMBD,
13843         P10_BUILTIN_VEXPANDMB, P10_BUILTIN_VEXPANDMH,
13844         P10_BUILTIN_VEXPANDMW, P10_BUILTIN_VEXPANDMD,
13845         P10_BUILTIN_VEXPANDMQ.
13846         * config/rs6000/rs6000-builtin.def (altivec_overloaded_builtins): Add
13847         entries for MTVSRBM, MTVSRHM, MTVSRWM, MTVSRDM, MTVSRQM, VCNTM,
13848         VEXPANDM, VEXTRACTM.
13850 2020-07-10  Bill Seurer, 507-253-3502, seurer@us.ibm.com  <(no_default)>
13852         PR target/95581
13853         * config/rs6000/rs6000-call.c: Add new type v16qi_ftype_pcvoid.
13854         (altivec_init_builtins) Change __builtin_altivec_mask_for_load to use
13855         v16qi_ftype_pcvoid with correct number of parameters.
13857 2020-07-10  H.J. Lu  <hjl.tools@gmail.com>
13859         PR target/96144
13860         * config/i386/i386-expand.c (ix86_emit_swsqrtsf): Check
13861         TARGET_AVX512VL when enabling FMA.
13863 2020-07-10  Andrea Corallo  <andrea.corallo@arm.com>
13864             Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
13865             Iain Apreotesei  <iain.apreotesei@arm.com>
13867         * config/arm/arm-protos.h (arm_target_insn_ok_for_lob): New
13868         prototype.
13869         * config/arm/arm.c (TARGET_INVALID_WITHIN_DOLOOP): Define.
13870         (arm_invalid_within_doloop): Implement invalid_within_doloop hook.
13871         (arm_target_insn_ok_for_lob): New function.
13872         * config/arm/arm.h (TARGET_HAVE_LOB): Define macro.
13873         * config/arm/thumb2.md (*doloop_end_internal, doloop_begin)
13874         (dls_insn): Add new patterns.
13875         (doloop_end): Modify to select LR when LOB is available.
13876         * config/arm/unspecs.md: Add new unspec.
13877         * doc/sourcebuild.texi (arm_v8_1_lob_ok)
13878         (arm_thumb2_ok_no_arm_v8_1_lob): Document new target supports
13879         options.
13881 2020-07-10  Richard Biener  <rguenther@suse.de>
13883         PR tree-optimization/96133
13884         * gimple-fold.c (fold_array_ctor_reference): Do not
13885         recurse to folding a CTOR that does not fully cover the
13886         asked for object.
13888 2020-07-10  Cui,Lili  <lili.cui@intel.com>
13890         * common/config/i386/cpuinfo.h
13891         (get_intel_cpu): Handle sapphirerapids.
13892         * common/config/i386/i386-common.c
13893         (processor_names): Add sapphirerapids and alderlake.
13894         (processor_alias_table): Add sapphirerapids and alderlake.
13895         * common/config/i386/i386-cpuinfo.h
13896         (processor_subtypes): Add INTEL_COREI7_ALDERLAKE and
13897         INTEL_COREI7_ALDERLAKE.
13898         * config.gcc: Add -march=sapphirerapids and alderlake.
13899         * config/i386/driver-i386.c
13900         (host_detect_local_cpu) Handle sapphirerapids and alderlake.
13901         * config/i386/i386-c.c
13902         (ix86_target_macros_internal): Handle sapphirerapids and alderlake.
13903         * config/i386/i386-options.c
13904         (m_SAPPHIRERAPIDS) : Define.
13905         (m_ALDERLAKE): Ditto.
13906         (m_CORE_AVX512) : Add m_SAPPHIRERAPIDS.
13907         (processor_cost_table): Add sapphirerapids and alderlake.
13908         (ix86_option_override_internal) Handle PTA_WAITPKG, PTA_ENQCMD,
13909         PTA_CLDEMOTE, PTA_SERIALIZE, PTA_TSXLDTRK.
13910         * config/i386/i386.h
13911         (ix86_size_cost) : Define SAPPHIRERAPIDS and ALDERLAKE.
13912         (processor_type) : Add PROCESSOR_SAPPHIRERAPIDS and
13913         PROCESSOR_ALDERLAKE.
13914         (PTA_ENQCMD): New.
13915         (PTA_CLDEMOTE): Ditto.
13916         (PTA_SERIALIZE): Ditto.
13917         (PTA_TSXLDTRK): New.
13918         (PTA_SAPPHIRERAPIDS): Ditto.
13919         (PTA_ALDERLAKE): Ditto.
13920         (processor_type) : Add PROCESSOR_SAPPHIRERAPIDS and
13921         PROCESSOR_ALDERLAKE.
13922         * doc/extend.texi: Add sapphirerapids and alderlake.
13923         * doc/invoke.texi: Add sapphirerapids and alderlake.
13925 2020-07-10  Martin Liska  <mliska@suse.cz>
13927         * dumpfile.c [profile-report]: Add new profile dump.
13928         * dumpfile.h (enum tree_dump_index): Ad TDI_profile_report.
13929         * passes.c (pass_manager::dump_profile_report): Change stderr
13930         to dump_file.
13932 2020-07-10  Kewen Lin  <linkw@linux.ibm.com>
13934         * tree-vect-loop.c (vect_transform_loop): Use LOOP_VINFO_NITERS which
13935         is adjusted by considering peeled prologue for non
13936         vect_use_loop_mask_for_alignment_p cases.
13938 2020-07-09  Peter Bergner  <bergner@linux.ibm.com>
13940         PR target/96125
13941         * config/rs6000/rs6000-call.c (rs6000_init_builtins): Define the MMA
13942         specific types __vector_quad and __vector_pair, and initialize the
13943         MMA built-ins if TARGET_EXTRA_BUILTINS is set.
13944         (mma_init_builtins): Don't test for mask set in rs6000_builtin_mask.
13945         Remove now unneeded mask variable.
13946         * config/rs6000/rs6000.c (rs6000_option_override_internal): Add the
13947         OPTION_MASK_MMA flag for power10 if not already set.
13949 2020-07-09  Richard Biener  <rguenther@suse.de>
13951         PR tree-optimization/96133
13952         * tree-vect-slp.c (vect_build_slp_tree_1): Compare load_p
13953         status between stmts.
13955 2020-07-09  H.J. Lu  <hjl.tools@gmail.com>
13957         PR target/88713
13958         * config/i386/i386-expand.c (ix86_emit_swsqrtsf): Enable FMA.
13959         * config/i386/sse.md (VF_AVX512VL_VF1_128_256): New.
13960         (rsqrt<mode>2): Replace VF1_128_256 with VF_AVX512VL_VF1_128_256.
13961         (rsqrtv16sf2): Removed.
13963 2020-07-09  Richard Biener  <rguenther@suse.de>
13965         * tree-vectorizer.h (vect_verify_datarefs_alignment): Remove.
13966         (vect_slp_analyze_and_verify_instance_alignment): Rename to ...
13967         (vect_slp_analyze_instance_alignment): ... this.
13968         * tree-vect-data-refs.c (verify_data_ref_alignment): Remove.
13969         (vect_verify_datarefs_alignment): Likewise.
13970         (vect_enhance_data_refs_alignment): Do not call
13971         vect_verify_datarefs_alignment.
13972         (vect_slp_analyze_node_alignment): Rename from
13973         vect_slp_analyze_and_verify_node_alignment and do not
13974         call verify_data_ref_alignment.
13975         (vect_slp_analyze_instance_alignment): Rename from
13976         vect_slp_analyze_and_verify_instance_alignment.
13977         * tree-vect-stmts.c (vectorizable_store): Dump when
13978         we vectorize an unaligned access.
13979         (vectorizable_load): Likewise.
13980         * tree-vect-loop.c (vect_analyze_loop_2): Do not call
13981         vect_verify_datarefs_alignment.
13982         * tree-vect-slp.c (vect_slp_analyze_bb_1): Adjust.
13984 2020-07-09  Bin Cheng  <bin.cheng@linux.alibaba.com>
13986         PR tree-optimization/95804
13987         * tree-loop-distribution.c (break_alias_scc_partitions): Force
13988         negative post order to reduction partition.
13990 2020-07-09  Jakub Jelinek  <jakub@redhat.com>
13992         * omp-general.h (struct omp_for_data): Add min_inner_iterations
13993         and factor members.
13994         * omp-general.c (omp_extract_for_data): Initialize them and remember
13995         them in OMP_CLAUSE_COLLAPSE_COUNT if needed and restore from there.
13996         * omp-expand.c (expand_omp_for_init_counts): Fix up computation of
13997         counts[fd->last_nonrect] if fd->loop.n2 is INTEGER_CST.
13998         (expand_omp_for_init_vars): For
13999         fd->first_nonrect + 1 == fd->last_nonrect loops with for now
14000         INTEGER_CST fd->loop.n2 find quadratic equation roots instead of
14001         using fallback method when possible.
14003 2020-07-09  Omar Tahir  <omar.tahir@arm.com>
14005         * ira.c (move_unallocated_pseudos): Zero first_moveable_pseudo and
14006         last_moveable_pseudo before returning.
14008 2020-07-09  Szabolcs Nagy  <szabolcs.nagy@arm.com>
14010         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Add
14011         __ARM_FEATURE_BTI_DEFAULT support.
14013 2020-07-09  Matthew Malcomson  <matthew.malcomson@arm.com>
14015         * config/aarch64/aarch64-protos.h (aarch64_indirect_call_asm):
14016         New declaration.
14017         * config/aarch64/aarch64.c (aarch64_regno_regclass): Handle new
14018         stub registers class.
14019         (aarch64_class_max_nregs): Likewise.
14020         (aarch64_register_move_cost): Likewise.
14021         (aarch64_sls_shared_thunks): Global array to store stub labels.
14022         (aarch64_sls_emit_function_stub): New.
14023         (aarch64_create_blr_label): New.
14024         (aarch64_sls_emit_blr_function_thunks): New.
14025         (aarch64_sls_emit_shared_blr_thunks): New.
14026         (aarch64_asm_file_end): New.
14027         (aarch64_indirect_call_asm): New.
14028         (TARGET_ASM_FILE_END): Use aarch64_asm_file_end.
14029         (TARGET_ASM_FUNCTION_EPILOGUE): Use
14030         aarch64_sls_emit_blr_function_thunks.
14031         * config/aarch64/aarch64.h (STB_REGNUM_P): New.
14032         (enum reg_class): Add STUB_REGS class.
14033         (machine_function): Introduce `call_via` array for
14034         function-local stub labels.
14035         * config/aarch64/aarch64.md (*call_insn, *call_value_insn): Use
14036         aarch64_indirect_call_asm to emit code when hardening BLR
14037         instructions.
14038         * config/aarch64/constraints.md (Ucr): New constraint
14039         representing registers for indirect calls.  Is GENERAL_REGS
14040         usually, and STUB_REGS when hardening BLR instruction against
14041         SLS.
14042         * config/aarch64/predicates.md (aarch64_general_reg): STUB_REGS class
14043         is also a general register.
14045 2020-07-09  Matthew Malcomson  <matthew.malcomson@arm.com>
14047         * config/aarch64/aarch64-protos.h (aarch64_sls_barrier): New.
14048         * config/aarch64/aarch64.c (aarch64_output_casesi): Emit
14049         speculation barrier after BR instruction if needs be.
14050         (aarch64_trampoline_init): Handle ptr_mode value & adjust size
14051         of code copied.
14052         (aarch64_sls_barrier): New.
14053         (aarch64_asm_trampoline_template): Add needed barriers.
14054         * config/aarch64/aarch64.h (AARCH64_ISA_SB): New.
14055         (TARGET_SB): New.
14056         (TRAMPOLINE_SIZE): Account for barrier.
14057         * config/aarch64/aarch64.md (indirect_jump, *casesi_dispatch,
14058         simple_return, *do_return, *sibcall_insn, *sibcall_value_insn):
14059         Emit barrier if needs be, also account for possible barrier using
14060         "sls_length" attribute.
14061         (sls_length): New attribute.
14062         (length): Determine default using any non-default sls_length
14063         value.
14065 2020-07-09  Matthew Malcomson  <matthew.malcomson@arm.com>
14067         * config/aarch64/aarch64-protos.h (aarch64_harden_sls_retbr_p):
14068         New.
14069         (aarch64_harden_sls_blr_p): New.
14070         * config/aarch64/aarch64.c (enum aarch64_sls_hardening_type):
14071         New.
14072         (aarch64_harden_sls_retbr_p): New.
14073         (aarch64_harden_sls_blr_p): New.
14074         (aarch64_validate_sls_mitigation): New.
14075         (aarch64_override_options): Parse options for SLS mitigation.
14076         * config/aarch64/aarch64.opt (-mharden-sls): New option.
14077         * doc/invoke.texi: Document new option.
14079 2020-07-09  Kewen Lin  <linkw@linux.ibm.com>
14081         * tree-vect-stmts.c (vectorizable_condition): Prohibit vectorization
14082         with partial vectors explicitly excepting for EXTRACT_LAST_REDUCTION
14083         or nested-cycle reduction.
14085 2020-07-09  Kewen Lin  <linkw@linux.ibm.com>
14087         * tree-vect-loop.c (vect_analyze_loop_2): Update dumping string
14088         for fully masking to be more common.
14090 2020-07-09  Kito Cheng  <kito.cheng@sifive.com>
14092         * config/riscv/riscv.md (get_thread_pointer<mode>): New.
14093         (TP_REGNUM): Ditto.
14094         * doc/extend.texi (Target Builtins): Add RISC-V built-in section.
14095         Document __builtin_thread_pointer.
14097 2020-07-09  Kito Cheng  <kito.cheng@sifive.com>
14099         * config/riscv/riscv-sr.c (riscv_remove_unneeded_save_restore_calls):
14100         Abort if any arguments on stack.
14102 2020-07-08  Eric Botcazou  <ebotcazou@adacore.com>
14104         * gimple-fold.c (gimple_fold_builtin_memory_op): Do not fold if
14105         either type has reverse scalar storage order.
14106         * tree-ssa-sccvn.c (vn_reference_lookup_3): Do not propagate through
14107         a memory copy if either type has reverse scalar storage order.
14109 2020-07-08  Tobias Burnus  <tobias@codesourcery.com>
14111         * config/gcn/mkoffload.c (compile_native, main): Pass -fPIC/-fpic
14112         on to the native compiler, if used.
14113         * config/nvptx/mkoffload.c (compile_native, main): Likewise.
14115 2020-07-08  Will Schmidt  <will_schmidt@vnet.ibm.com>
14117         * config/rs6000/altivec.h (vec_vmsumudm): New define.
14118         * config/rs6000/altivec.md (UNSPEC_VMSUMUDM): New unspec.
14119           (altivec_vmsumudm): New define_insn.
14120         * config/rs6000/rs6000-builtin.def (altivec_vmsumudm): New BU_ALTIVEC_3
14121           entry. (vmsumudm): New BU_ALTIVEC_OVERLOAD_3 entry.
14122         * config/rs6000/rs6000-call.c (altivec_overloaded_builtins): Add entries for
14123           ALTIVEC_BUILTIN_VMSUMUDM variants of vec_msum.
14124         * doc/extend.texi: Add document for vmsumudm behind vmsum.
14126 2020-07-08  Richard Biener  <rguenther@suse.de>
14128         * tree-vect-stmts.c (get_group_load_store_type): Pass
14129         in the SLP node and the alignment support scheme output.
14130         Set that.
14131         (get_load_store_type): Likewise.
14132         (vectorizable_store): Adjust.
14133         (vectorizable_load): Likewise.
14135 2020-07-08  Richard Sandiford  <richard.sandiford@arm.com>
14137         PR middle-end/95694
14138         * expr.c (expand_expr_real_2): Get the mode from the type rather
14139         than the rtx, and assert that it is consistent with the mode of
14140         the rtx (where known).  Optimize all constant integers, not just
14141         those that can be represented in poly_int64.
14143 2020-07-08  Kewen Lin  <linkw@linux.ibm.com>
14145         * config/rs6000/vsx.md (len_load_v16qi): New define_expand.
14146         (len_store_v16qi): Likewise.
14148 2020-07-08  Kewen Lin  <linkw@linux.ibm.com>
14150         * doc/md.texi (len_load_@var{m}): Document.
14151         (len_store_@var{m}): Likewise.
14152         * internal-fn.c (len_load_direct): New macro.
14153         (len_store_direct): Likewise.
14154         (expand_len_load_optab_fn): Likewise.
14155         (expand_len_store_optab_fn): Likewise.
14156         (direct_len_load_optab_supported_p): Likewise.
14157         (direct_len_store_optab_supported_p): Likewise.
14158         (expand_mask_load_optab_fn): New macro.  Original renamed to ...
14159         (expand_partial_load_optab_fn): ... here.  Add handlings for
14160         len_load_optab.
14161         (expand_mask_store_optab_fn): New macro.  Original renamed to ...
14162         (expand_partial_store_optab_fn): ... here. Add handlings for
14163         len_store_optab.
14164         (internal_load_fn_p): Handle IFN_LEN_LOAD.
14165         (internal_store_fn_p): Handle IFN_LEN_STORE.
14166         (internal_fn_stored_value_index): Handle IFN_LEN_STORE.
14167         * internal-fn.def (LEN_LOAD): New internal function.
14168         (LEN_STORE): Likewise.
14169         * optabs.def (len_load_optab, len_store_optab): New optab.
14171 2020-07-07  Anton Youdkevitch  <anton.youdkevitch@bell-sw.com>
14173         * config/aarch64/aarch64.c (thunderx2t99_regmove_cost,
14174         thunderx2t99_vector_cost): Likewise.
14176 2020-07-07  Richard Biener  <rguenther@suse.de>
14178         * tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Fix
14179         group overlap condition to allow negative step DR groups.
14180         * tree-vect-stmts.c (get_group_load_store_type): For
14181         multi element SLP groups force VMAT_STRIDED_SLP when the step
14182         is negative.
14184 2020-07-07  Qian Jianhua  <qianjh@cn.fujitsu.com>
14186         * doc/generic.texi: Fix typo.
14188 2020-07-07  Richard Biener  <rguenther@suse.de>
14190         * lto-streamer-out.c (cmp_symbol_files): Use the computed
14191         order map to sort symbols from the same sub-file together.
14192         (lto_output): Compute a map of sub-file to an order number
14193         it appears in the symbol output array.
14195 2020-07-06  Richard Biener  <rguenther@suse.de>
14197         PR tree-optimization/96075
14198         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Use
14199         TYPE_SIZE_UNIT of the vector component type instead of DR_STEP
14200         for the misalignment calculation for negative step.
14202 2020-07-06  Roger Sayle  <roger@nextmovesoftware.com>
14204         * config/nvptx/nvptx.md (*vadd_addsi4): New instruction.
14205         (*vsub_addsi4): New instruction.
14207 2020-07-06  Hans-Peter Nilsson  <hp@axis.com>
14209         * config/cris/cris.md (movulsr): New peephole2.
14211 2020-07-06  Hans-Peter Nilsson  <hp@axis.com>
14213         * config/cris/sync.md ("cris_atomic_fetch_<atomic_op_name><mode>_1"):
14214         Correct gcc_assert of overlapping operands.
14216 2020-07-05  Hans-Peter Nilsson  <hp@axis.com>
14218         * config/cris/cris.c (cris_select_cc_mode): Always return
14219         CC_NZmode for matching comparisons.  Clarify comments.
14220         * config/cris/cris-modes.def: Clarify mode comment.
14221         * config/cris/cris.md (plusminus, plusminusumin, plusumin): New
14222         code iterators.
14223         (addsub, addsubbo, nd): New code iterator attributes.
14224         ("*<addsub><su>qihi"): Rename from "*extopqihi".  Use code
14225         iterator constructs instead of match_operator constructs.
14226         ("*<addsubbo><su><nd><mode>si<setnz>"): Similar from
14227         "*extop<mode>si<setnz>".
14228         ("*add<su>qihi_swap"): Similar from "*addxqihi_swap".
14229         ("*<addsubbo><su><nd><mode>si<setnz>_swap"): Similar from
14230         "*extop<mode>si<setnz>_swap".
14232 2020-07-05  Hans-Peter Nilsson  <hp@axis.com>
14234         * config/cris/cris.md ("*extopqihi", "*extop<mode>si<setnz>_swap")
14235         ("*extop<mode>si<setnz>", "*addxqihi_swap"): Reinstate.
14237 2020-07-03  Eric Botcazou  <ebotcazou@adacore.com>
14239         * gimple-fold.c (gimple_fold_builtin_memory_op): Fold calls that
14240         were initially created for the assignment of a variable-sized
14241         object and whose source is now a string constant.
14242         * gimple-ssa-store-merging.c (struct merged_store_group): Document
14243         STRING_CST for rhs_code field.
14244         Add string_concatenation boolean field.
14245         (merged_store_group::merged_store_group): Initialize it as well as
14246         bit_insertion here.
14247         (merged_store_group::do_merge): Set it upon seeing a STRING_CST.
14248         Also set bit_insertion here upon seeing a BIT_INSERT_EXPR.
14249         (merged_store_group::apply_stores): Clear it for small regions.
14250         Do not create a power-of-2-sized buffer if it is still true.
14251         And do not set bit_insertion here again.
14252         (encode_tree_to_bitpos): Deal with BLKmode for the expression.
14253         (merged_store_group::can_be_merged_into): Deal with STRING_CST.
14254         (imm_store_chain_info::coalesce_immediate_stores): Set bit_insertion
14255         to true after changing MEM_REF stores into BIT_INSERT_EXPR stores.
14256         (count_multiple_uses): Return 0 for STRING_CST.
14257         (split_group): Do not split the group for a string concatenation.
14258         (imm_store_chain_info::output_merged_store): Constify and rename
14259         some local variables.  Build an array type as destination type
14260         for a string concatenation, as well as a zero mask, and call
14261         build_string to build the source.
14262         (lhs_valid_for_store_merging_p): Return true for VIEW_CONVERT_EXPR.
14263         (pass_store_merging::process_store): Accept STRING_CST on the RHS.
14264         * gimple.h (gimple_call_alloca_for_var_p): New accessor function.
14265         * gimplify.c (gimplify_modify_expr_to_memcpy): Set alloca_for_var.
14266         * tree.h (CALL_ALLOCA_FOR_VAR_P): Document it for BUILT_IN_MEMCPY.
14268 2020-07-03  Martin Jambor  <mjambor@suse.cz>
14270         PR ipa/96040
14271         * ipa-sra.c (all_callee_accesses_present_p): Do not accept type
14272         mismatched accesses.
14274 2020-07-03  Roger Sayle  <roger@nextmovesoftware.com>
14276         * config/nvptx/nvptx.md (popcount<mode>2): New instructions.
14277         (mulhishi3, mulsidi3, umulhisi3, umulsidi3): New instructions.
14279 2020-07-03  Martin Liska  <mliska@suse.cz>
14280             Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
14282         PR bootstrap/96046
14283         * gcov-dump.c (tag_function): Use gcov_position_t
14284         type.
14286 2020-07-03  Richard Biener  <rguenther@suse.de>
14288         PR tree-optimization/96037
14289         * tree-vect-stmts.c (vect_is_simple_use): Initialize *slp_def.
14291 2020-07-03  Richard Biener  <rguenther@suse.de>
14293         * tree-vect-slp.c (vect_bb_slp_scalar_cost): Cost the
14294         original non-pattern stmts, look at the pattern stmt
14295         vectorization status.
14297 2020-07-03  Andrew Stubbs  <ams@codesourcery.com>
14299         * config/gcn/gcn-valu.md (fold_left_plus_<mode>): New.
14301 2020-07-03  Richard Biener  <rguenther@suse.de>
14303         * tree-vectorizer.h (vec_info::insert_on_entry): New.
14304         (vec_info::insert_seq_on_entry): Likewise.
14305         * tree-vectorizer.c (vec_info::insert_on_entry): Implement.
14306         (vec_info::insert_seq_on_entry): Likewise.
14307         * tree-vect-stmts.c (vect_init_vector_1): Use
14308         vec_info::insert_on_entry.
14309         (vect_finish_stmt_generation): Set modified bit after
14310         adjusting VUSE.
14311         * tree-vect-slp.c (vect_create_constant_vectors): Simplify
14312         by using vec_info::insert_seq_on_entry and bypassing
14313         vec_init_vector.
14314         (vect_schedule_slp_instance): Deal with all-constant
14315         children later.
14317 2020-07-03  Roger Sayle  <roger@nextmovesoftware.com>
14318             Tom de Vries  <tdevries@suse.de>
14320         PR target/90932
14321         * config/nvptx/nvptx.c (nvptx_vector_alignment): Use tree_to_uhwi
14322         to access TYPE_SIZE (type).  Return at least the mode's alignment.
14324 2020-07-02  Richard Biener  <rguenther@suse.de>
14326         PR tree-optimization/96028
14327         * tree-vect-slp.c (vect_slp_convert_to_external): Make sure
14328         we have scalar stmts to use.
14329         (vect_slp_analyze_node_operations): When analyzing a child
14330         failed try externalizing the parent node.
14332 2020-07-02  Martin Jambor  <mjambor@suse.cz>
14334         PR debug/95343
14335         * ipa-param-manipulation.c (ipa_param_adjustments::modify_call): Adjust
14336         argument index if necessary.
14338 2020-07-02  Martin Liska  <mliska@suse.cz>
14340         PR middle-end/95830
14341         * tree-vect-generic.c (expand_vector_condition): Forward declaration.
14342         (expand_vector_comparison): Do not expand a comparison if all
14343         uses are consumed by a VEC_COND_EXPR.
14344         (expand_vector_operation): Change void return type to bool.
14345         (expand_vector_operations_1): Pass dce_ssa_names.
14347 2020-07-02  Ilya Leoshkevich  <iii@linux.ibm.com>
14349         PR bootstrap/95700
14350         * system.h (NULL): Redefine to nullptr.
14352 2020-07-02  Jakub Jelinek  <jakub@redhat.com>
14354         PR tree-optimization/95857
14355         * tree-cfg.c (group_case_labels_stmt): When removing an unreachable
14356         base_bb, remember all forced and non-local labels on it and later
14357         treat those as if they have NULL label_to_block.  Formatting fix.
14358         Fix a comment typo.
14360 2020-07-02  Richard Biener  <rguenther@suse.de>
14362         PR tree-optimization/96022
14363         * tree-vect-stmts.c (vectorizable_shift): Only use the
14364         first vector stmt when extracting the scalar shift amount.
14365         * tree-vect-slp.c (vect_build_slp_tree_2): Also build unary
14366         nodes with all-scalar children from scalars but not stores.
14367         (vect_analyze_slp_instance): Mark the node not failed.
14369 2020-07-02  Felix Yang  <felix.yang@huawei.com>
14371         PR tree-optimization/95961
14372         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Use the
14373         number of scalars instead of the number of vectors as an upper bound
14374         for the loop saving info about DR in the hash table.  Remove unused
14375         local variables.
14377 2020-07-02  Jakub Jelinek  <jakub@redhat.com>
14379         * omp-expand.c (expand_omp_for): Diagnose non-rectangular loops with
14380         invalid steps - ((m2 - m1) * incr_outer) % incr must be 0 in valid
14381         OpenMP non-rectangular loops.  Use XALLOCAVEC.
14383 2020-07-02  Martin Liska  <mliska@suse.cz>
14385         PR gcov-profile/95348
14386         * coverage.c (read_counts_file): Read only COUNTERS that are
14387         not all-zero.
14388         * gcov-dump.c (tag_function): Change signature from unsigned to
14389         signed integer.
14390         (tag_blocks): Likewise.
14391         (tag_arcs): Likewise.
14392         (tag_lines): Likewise.
14393         (tag_counters): Likewise.
14394         (tag_summary): Likewise.
14395         * gcov.c (read_count_file): Read all non-zero counters
14396         sensitively.
14398 2020-07-02  Kito Cheng  <kito.cheng@sifive.com>
14400         * config/riscv/multilib-generator (arch_canonicalize): Handle
14401         multi-letter extension.
14402         Using underline as separator between different extensions.
14404 2020-07-01  Pip Cet  <pipcet@gmail.com>
14406         * spellcheck.c (test_data): Add problematic strings.
14407         (test_metric_conditions): Don't test the triangle inequality
14408         condition, which our distance function does not satisfy.
14410 2020-07-01  Omar Tahir  <omar.tahir@arm.com>
14412         * config/aarch64/aarch64.c (aarch64_asm_trampoline_template): Always
14413         generate a BTI instruction.
14415 2020-07-01  Jeff Law  <law@redhat.com>
14417         PR tree-optimization/94882
14418         * match.pd (x & y) - (x | y) - 1 -> ~(x ^ y): New simplification.
14420 2020-07-01  Jeff Law  <law@redhat.com>
14422         * config/m68k/m68k.c (m68k_output_btst): Drop "register" keyword.
14423         (emit_move_sequence, output_iorsi3, output_xorsi3): Likewise.
14425 2020-07-01  Andrea Corallo  <andrea.corallo@arm.com>
14427         * config/aarch64/aarch64-builtins.c (aarch64_builtins): Add enums
14428         for 64bits fpsr/fpcr getter setters builtin variants.
14429         (aarch64_init_fpsr_fpcr_builtins): New function.
14430         (aarch64_general_init_builtins): Modify to make use of the later.
14431         (aarch64_expand_fpsr_fpcr_setter): New function.
14432         (aarch64_general_expand_builtin): Modify to make use of the later.
14433         * config/aarch64/aarch64.md (@aarch64_set_<fpscr_name><GPI:mode>)
14434         (@aarch64_get_<fpscr_name><GPI:mode>): New patterns replacing and
14435         generalizing 'get_fpcr', 'set_fpsr'.
14436         * config/aarch64/iterators.md (GET_FPSCR, SET_FPSCR): New int
14437         iterators.
14438         (fpscr_name): New int attribute.
14439         * doc/extend.texi (__builtin_aarch64_get_fpcr64)
14440         (__builtin_aarch64_set_fpcr64, __builtin_aarch64_get_fpsr64)
14441         (__builtin_aarch64_set_fpsr64): Add into AArch64 Built-in
14442         Functions.
14444 2020-07-01  Martin Liska  <mliska@suse.cz>
14446         * gcov.c (print_usage): Avoid trailing space for -j option.
14448 2020-07-01  Richard Biener  <rguenther@suse.de>
14450         PR tree-optimization/95839
14451         * tree-vect-slp.c (vect_slp_tree_uniform_p): Pre-existing
14452         vectors are not uniform.
14453         (vect_build_slp_tree_1): Handle BIT_FIELD_REFs of
14454         vector registers.
14455         (vect_build_slp_tree_2): For groups of lane extracts
14456         from a vector register generate a permute node
14457         with a special child representing the pre-existing vector.
14458         (vect_prologue_cost_for_slp): Pre-existing vectors cost nothing.
14459         (vect_slp_analyze_node_operations): Use SLP_TREE_LANES.
14460         (vectorizable_slp_permutation): Do not generate or cost identity
14461         permutes.
14462         (vect_schedule_slp_instance): Handle pre-existing vector
14463         that are function arguments.
14465 2020-07-01  Richard Biener  <rguenther@suse.de>
14467         * system.h (INCLUDE_ISL): New guarded include.
14468         * graphite-dependences.c: Use it.
14469         * graphite-isl-ast-to-gimple.c: Likewise.
14470         * graphite-optimize-isl.c: Likewise.
14471         * graphite-poly.c: Likewise.
14472         * graphite-scop-detection.c: Likewise.
14473         * graphite-sese-to-poly.c: Likewise.
14474         * graphite.c: Likewise.
14475         * graphite.h: Drop the includes here.
14477 2020-07-01  Martin Liska  <mliska@suse.cz>
14479         * gcov.c (print_usage): Shorted option description for -j
14480         option.
14482 2020-07-01  Martin Liska  <mliska@suse.cz>
14484         * doc/gcov.texi: Rename 2 options.
14485         * gcov.c (print_usage): Rename -i,--json-format to
14486         -j,--json-format and -j,--human-readable to -H,--human-readable.
14487         (process_args): Fix up parsing.  Document obsolete options and
14488         how are they changed.
14490 2020-07-01  Jeff Law  <law@redhat.com>
14492         * config/pa/pa.c (pa_emit_move_sequence): Drop register keyword.
14493         (pa_output_ascii): Likewise.
14495 2020-07-01  Kito Cheng  <kito.cheng@sifive.com>
14497         * common/config/riscv/riscv-common.c (riscv_subset_t): New field
14498         added.
14499         (riscv_subset_list::parsing_subset_version): Add parameter for
14500         indicate explicitly version, and handle explicitly version.
14501         (riscv_subset_list::handle_implied_ext): Ditto.
14502         (riscv_subset_list::add): Ditto.
14503         (riscv_subset_t::riscv_subset_t): Init new field.
14504         (riscv_subset_list::to_string): Always output version info if version
14505         explicitly specified.
14506         (riscv_subset_list::parsing_subset_version): Handle explicitly
14507         arch version.
14508         (riscv_subset_list::parse_std_ext): Ditto.
14509         (riscv_subset_list::parse_multiletter_ext): Ditto.
14511 2020-06-30  Richard Sandiford  <richard.sandiford@arm.com>
14513         PR target/92789
14514         PR target/95726
14515         * config/aarch64/aarch64.c (aarch64_attribute_table): Add
14516         "Advanced SIMD type".
14517         (aarch64_comp_type_attributes): Check that the "Advanced SIMD type"
14518         attributes are equal.
14519         * config/aarch64/aarch64-builtins.c: Include stringpool.h and
14520         attribs.h.
14521         (aarch64_mangle_builtin_vector_type): Use the mangling recorded
14522         in the "Advanced SIMD type" attribute.
14523         (aarch64_init_simd_builtin_types): Add an "Advanced SIMD type"
14524         attribute to each Advanced SIMD type, using the mangled type
14525         as the attribute's single argument.
14527 2020-06-30  Christophe Lyon  <christophe.lyon@linaro.org>
14529         PR target/94743
14530         * config/arm/arm.c (arm_handle_isr_attribute): Warn if
14531         -mgeneral-regs-only is not used.
14533 2020-06-30  Yang Yang  <yangyang305@huawei.com>
14535         PR tree-optimization/95855
14536         * gimple-ssa-split-paths.c (is_feasible_trace): Add extra
14537         checks to recognize a missed if-conversion opportunity when
14538         judging whether to duplicate a block.
14540 2020-06-29  Segher Boessenkool  <segher@kernel.crashing.org>
14542         * doc/extend.texi: Change references to "future architecture" to
14543         "ISA 3.1", "-mcpu=future" to "-mcpu=power10", and remove vaguer
14544         references to "future" (because the future is now).
14546 2020-06-29  Segher Boessenkool  <segher@kernel.crashing.org>
14548         * config/rs6000/rs6000.md (isa): Rename "fut" to "p10".
14550 2020-06-29  Roger Sayle  <roger@nextmovesoftware.com>
14552         * simplify-rtx.c (simplify_distributive_operation): New function
14553         to un-distribute a binary operation of two binary operations.
14554         (X & C) ^ (Y & C) to (X ^ Y) & C, when C is simple (i.e. a constant).
14555         (simplify_binary_operation_1) <IOR, XOR, AND>: Call it from here
14556         when appropriate.
14557         (test_scalar_int_ops): New function for unit self-testing
14558         scalar integer transformations in simplify-rtx.c.
14559         (test_scalar_ops): Call test_scalar_int_ops for each integer mode.
14560         (simplify_rtx_c_tests): Call test_scalar_ops.
14562 2020-06-29  Richard Biener  <rguenther@suse.de>
14564         PR tree-optimization/95916
14565         * tree-vect-slp.c (vect_schedule_slp_instance): Explicitely handle
14566         the case of not vectorized externals.
14568 2020-06-29  Richard Biener  <rguenther@suse.de>
14570         * tree-vectorizer.h: Do not include <utility>.
14572 2020-06-29  Martin Liska  <mliska@suse.cz>
14574         * tree-ssa-ccp.c (gsi_prev_dom_bb_nondebug): Use gsi_bb
14575         instead of gimple_stmt_iterator::bb.
14576         * tree-ssa-math-opts.c (insert_reciprocals): Likewise.
14577         * tree-vectorizer.h: Likewise.
14579 2020-06-29  Andrew Stubbs  <ams@codesourcery.com>
14581         * config/gcn/gcn-hsa.h (DBX_REGISTER_NUMBER): New macro.
14582         * config/gcn/gcn-protos.h (gcn_dwarf_register_number): New prototype.
14583         * config/gcn/gcn.c (gcn_expand_prologue): Add RTX_FRAME_RELATED_P
14584         and REG_FRAME_RELATED_EXPR to stack and frame pointer adjustments.
14585         (gcn_dwarf_register_number): New function.
14586         (gcn_dwarf_register_span): New function.
14587         (TARGET_DWARF_REGISTER_SPAN): New hook macro.
14589 2020-06-29  Kaipeng Zhou  <zhoukaipeng3@huawei.com>
14591         PR tree-optimization/95854
14592         * gimple-ssa-store-merging.c (find_bswap_or_nop_1): Return NULL
14593         if operand 1 or 2 of a BIT_FIELD_REF cannot be converted to
14594         unsigned HOST_WIDE_INT.
14596 2020-06-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
14598         * config/sparc/sparc.c (epilogue_renumber): Remove register.
14599         (sparc_print_operand_address): Likewise.
14600         (sparc_type_code): Likewise.
14601         (set_extends): Likewise.
14603 2020-06-29  Martin Liska  <mliska@suse.cz>
14605         PR tree-optimization/92860
14606         * optc-save-gen.awk: Add exceptions for arc target.
14608 2020-06-29  Frederik Harwath  <frederik@codesourcery.com>
14610         * doc/sourcebuild.texi: Describe globbing of the
14611         dump file scanning commands "suffix" argument.
14613 2020-06-28  Martin Sebor  <msebor@redhat.com>
14615         PR c++/86568
14616         * calls.c (maybe_warn_rdwr_sizes): Use location of argument if
14617         available.
14618         * tree-ssa-ccp.c (pass_post_ipa_warn::execute): Same.  Adjust
14619         indentation.
14620         * tree.c (get_nonnull_args): Consider the this pointer implicitly
14621         nonnull.
14622         * var-tracking.c (deps_vec): New type.
14623         (var_loc_dep_vec): New function.
14624         (VAR_LOC_DEP_VEC): Use it.
14626 2020-06-28  Kewen Lin  <linkw@linux.ibm.com>
14628         * internal-fn.c (direct_mask_load_optab_supported_p): Use
14629         convert_optab_supported_p instead of direct_optab_supported_p.
14630         (direct_mask_store_optab_supported_p): Likewise.
14632 2020-06-27  Aldy Hernandez  <aldyh@redhat.com>
14634         * gimple-ssa-evrp-analyze.h (vrp_visit_cond_stmt): Use
14635         simplify_using_ranges class.
14636         * gimple-ssa-evrp.c (class evrp_folder): New simplify_using_ranges
14637         field.  Adjust all methods to use new field.
14638         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Use
14639         simplify_using_ranges class.
14640         * tree-vrp.c (class vrp_folder): New simplify_using_ranges
14641         field.  Adjust all methods to use new field.
14642         (simplify_stmt_for_jump_threading): Use simplify_using_ranges class.
14643         (vrp_prop::vrp_finalize): New vrp_folder argument.
14644         (execute_vrp): Pass folder to vrp_finalize.  Use
14645         simplify_using_ranges class.
14646         Remove cleanup_edges_and_switches call.
14647         * vr-values.c (vr_values::op_with_boolean_value_range_p): Change
14648         value_range_equiv uses to value_range.
14649         (simplify_using_ranges::op_with_boolean_value_range_p): Use
14650         simplify_using_ranges class.
14651         (check_for_binary_op_overflow): Make static.
14652         (vr_values::extract_range_basic): Pass this to
14653         check_for_binary_op_overflow.
14654         (compare_range_with_value): Change value_range_equiv uses to
14655         value_range.
14656         (vr_values::vr_values): Initialize simplifier field.
14657         Remove uses of to_remove_edges and to_update_switch_stmts.
14658         (vr_values::~vr_values): Remove uses of to_remove_edges and
14659         to_update_switch_stmts.
14660         (vr_values::get_vr_for_comparison): Move to simplify_using_ranges
14661         class.
14662         (vr_values::compare_name_with_value): Same.
14663         (vr_values::compare_names): Same.
14664         (vr_values::vrp_evaluate_conditional_warnv_with_ops): Same.
14665         (vr_values::vrp_evaluate_conditional): Same.
14666         (vr_values::vrp_visit_cond_stmt): Same.
14667         (find_case_label_ranges): Change value_range_equiv uses to
14668         value_range.
14669         (vr_values::extract_range_from_stmt): Use simplify_using_ranges class.
14670         (vr_values::simplify_truth_ops_using_ranges): Move to
14671         simplify_using_ranges class.
14672         (vr_values::simplify_div_or_mod_using_ranges): Same.
14673         (vr_values::simplify_min_or_max_using_ranges): Same.
14674         (vr_values::simplify_abs_using_ranges): Same.
14675         (vr_values::simplify_bit_ops_using_ranges): Same.
14676         (test_for_singularity): Change value_range_equiv uses to
14677         value_range.
14678         (range_fits_type_p): Same.
14679         (vr_values::simplify_cond_using_ranges_1): Same.
14680         (vr_values::simplify_cond_using_ranges_2): Make extern.
14681         (vr_values::fold_cond): Move to simplify_using_ranges class.
14682         (vr_values::simplify_switch_using_ranges): Same.
14683         (vr_values::cleanup_edges_and_switches): Same.
14684         (vr_values::simplify_float_conversion_using_ranges): Same.
14685         (vr_values::simplify_internal_call_using_ranges): Same.
14686         (vr_values::two_valued_val_range_p): Same.
14687         (vr_values::simplify_stmt_using_ranges): Move to...
14688         (simplify_using_ranges::simplify): ...here.
14689         * vr-values.h (class vr_values): Move all the simplification of
14690         statements using ranges methods and code from here...
14691         (class simplify_using_ranges): ...to here.
14692         (simplify_cond_using_ranges_2): New extern prototype.
14694 2020-06-27  Jakub Jelinek  <jakub@redhat.com>
14696         * omp-general.h (struct omp_for_data_loop): Add non_rect_referenced
14697         member, move outer member.
14698         (struct omp_for_data): Add first_nonrect and last_nonrect members.
14699         * omp-general.c (omp_extract_for_data): Initialize first_nonrect,
14700         last_nonrect and non_rect_referenced members.
14701         * omp-expand.c (expand_omp_for_init_counts): Handle non-rectangular
14702         loops.
14703         (expand_omp_for_init_vars): Add nonrect_bounds parameter.  Handle
14704         non-rectangular loops.
14705         (extract_omp_for_update_vars): Likewise.
14706         (expand_omp_for_generic, expand_omp_for_static_nochunk,
14707         expand_omp_for_static_chunk, expand_omp_simd,
14708         expand_omp_taskloop_for_outer, expand_omp_taskloop_for_inner): Adjust
14709         expand_omp_for_init_vars and extract_omp_for_update_vars callers.
14710         (expand_omp_for): Don't sorry on non-composite worksharing-loop or
14711         distribute.
14713 2020-06-26  H.J. Lu  <hjl.tools@gmail.com>
14715         PR target/95655
14716         * config/i386/gnu-user.h (SUBTARGET_FRAME_POINTER_REQUIRED):
14717         Removed.
14718         * config/i386/i386.c (ix86_frame_pointer_required): Update
14719         comments.
14721 2020-06-26  Yichao Yu  <yyc1992@gmail.com>
14723         * multiple_target.c (redirect_to_specific_clone): Fix tests
14724         to check individual attribute rather than an attribute list.
14726 2020-06-26  Peter Bergner  <bergner@linux.ibm.com>
14728         * config/rs6000/rs6000-call.c (cpu_is_info) <power10>: New.
14729         * doc/extend.texi (PowerPC Built-in Functions): Document power10,
14730         arch_3_1 and mma.
14732 2020-06-26  Marek Polacek  <polacek@redhat.com>
14734         * doc/invoke.texi (C Dialect Options): Adjust -std default for C++.
14735         * doc/standards.texi (C Language): Correct the default dialect.
14736         (C++ Language): Update the default for C++ to gnu++17.
14738 2020-06-26  Eric Botcazou  <ebotcazou@adacore.com>
14740         * tree-ssa-reassoc.c (dump_range_entry): New function.
14741         (debug_range_entry): New debug function.
14742         (update_range_test): Invoke dump_range_entry for dumping.
14743         (optimize_range_tests_to_bit_test): Merge the entry test in the
14744         bit test when possible and lower the profitability threshold.
14746 2020-06-26  Richard Biener  <rguenther@suse.de>
14748         PR tree-optimization/95897
14749         * tree-vectorizer.h (vectorizable_induction): Remove
14750         unused gimple_stmt_iterator * parameter.
14751         * tree-vect-loop.c (vectorizable_induction): Likewise.
14752         (vect_analyze_loop_operations): Adjust.
14753         * tree-vect-stmts.c (vect_analyze_stmt): Likewise.
14754         (vect_transform_stmt): Likewise.
14755         * tree-vect-slp.c (vect_schedule_slp_instance): Adjust
14756         for fold-left reductions, clarify existing reduction case.
14758 2020-06-25  Nick Clifton  <nickc@redhat.com>
14760         * config/m32r/m32r.md (movsicc): Disable pattern.
14762 2020-06-25  Richard Biener  <rguenther@suse.de>
14764         PR tree-optimization/95839
14765         * tree-vect-slp.c (vect_slp_analyze_bb_1): Remove premature
14766         check on the number of datarefs.
14768 2020-06-25  Iain Sandoe  <iain@sandoe.co.uk>
14770         * config/rs6000/rs6000-call.c (mma_init_builtins): Cast
14771         the insn_data n_operands value to unsigned.
14773 2020-06-25  Richard Biener  <rguenther@suse.de>
14775         * tree-vect-slp.c (vect_schedule_slp_instance): Always use
14776         vector defs to determine insertion place.
14778 2020-06-25  H.J. Lu  <hjl.tools@gmail.com>
14780         PR target/95874
14781         * config/i386/i386.h (PTA_ICELAKE_CLIENT): Remove PTA_CLWB.
14782         (PTA_ICELAKE_SERVER): Add PTA_CLWB.
14783         (PTA_TIGERLAKE): Add PTA_CLWB.
14785 2020-06-25  Richard Biener  <rguenther@suse.de>
14787         PR tree-optimization/95866
14788         * tree-vect-stmts.c (vectorizable_shift): Reject incompatible
14789         vectorized shift operands.  For scalar shifts use lane zero
14790         of a vectorized shift operand.
14792 2020-06-25  Martin Liska  <mliska@suse.cz>
14794         PR tree-optimization/95745
14795         PR middle-end/95830
14796         * gimple-isel.cc (gimple_expand_vec_cond_exprs): Delete dead
14797         SSA_NAMEs used as the first argument of a VEC_COND_EXPR.  Always
14798         return 0.
14799         * tree-vect-generic.c (expand_vector_condition): Remove dead
14800         SSA_NAMEs used as the first argument of a VEC_COND_EXPR.
14802 2020-06-24  Will Schmidt  <will_schmidt@vnet.ibm.com>
14804         PR target/94954
14805         * config/rs6000/altivec.h (vec_pack_to_short_fp32): Update.
14806         * config/rs6000/altivec.md (UNSPEC_CONVERT_4F32_8F16): New unspec.
14807         (convert_4f32_8f16): New define_expand
14808         * config/rs6000/rs6000-builtin.def (convert_4f32_8f16): New builtin define
14809         and overload.
14810         * config/rs6000/rs6000-call.c (P9V_BUILTIN_VEC_CONVERT_4F32_8F16): New
14811         overloaded builtin entry.
14812         * config/rs6000/vsx.md (UNSPEC_VSX_XVCVSPHP): New unspec.
14813         (vsx_xvcvsphp): New define_insn.
14815 2020-06-24  Roger Sayle  <roger@nextmovesoftware.com>
14816             Segher Boessenkool  <segher@kernel.crashing.org>
14818         * simplify-rtx.c (simplify_unary_operation_1): Simplify rotates by 0.
14820 2020-06-24  Roger Sayle  <roger@nextmovesoftware.com>
14822         * simplify-rtx.c (simplify_unary_operation_1): Simplify
14823         (parity (parity x)) as (parity x), i.e. PARITY is idempotent.
14825 2020-06-24  Richard Biener  <rguenther@suse.de>
14827         PR tree-optimization/95866
14828         * tree-vect-slp.c (vect_slp_tree_uniform_p): New.
14829         (vect_build_slp_tree_2): Properly reset matches[0],
14830         ignore uniform constants.
14832 2020-06-24  H.J. Lu  <hjl.tools@gmail.com>
14834         PR target/95660
14835         * common/config/i386/cpuinfo.h (get_intel_cpu): Remove brand_id.
14836         (cpu_indicator_init): Likewise.
14837         * config/i386/driver-i386.c (host_detect_local_cpu): Updated.
14839 2020-06-24  H.J. Lu  <hjl.tools@gmail.com>
14841         PR target/95774
14842         * common/config/i386/cpuinfo.h (get_intel_cpu): Add Cooper Lake
14843         detection with AVX512BF16.
14845 2020-06-24  H.J. Lu  <hjl.tools@gmail.com>
14847         PR target/95843
14848         * common/config/i386/i386-isas.h: New file.  Extracted from
14849         gcc/config/i386/i386-builtins.c.
14850         (_isa_names_table): Add option.
14851         (ISA_NAMES_TABLE_START): New.
14852         (ISA_NAMES_TABLE_END): Likewise.
14853         (ISA_NAMES_TABLE_ENTRY): Likewise.
14854         (isa_names_table): Defined with ISA_NAMES_TABLE_START,
14855         ISA_NAMES_TABLE_END and ISA_NAMES_TABLE_ENTRY.  Add more ISAs
14856         from enum processor_features.
14857         * config/i386/driver-i386.c: Include
14858         "common/config/i386/cpuinfo.h" and
14859         "common/config/i386/i386-isas.h".
14860         (has_feature): New macro.
14861         (host_detect_local_cpu): Call cpu_indicator_init to get CPU
14862         features.  Use has_feature to detect processor features.  Call
14863         Call get_intel_cpu to get the newer Intel CPU name.  Use
14864         isa_names_table to generate command-line options.
14865         * config/i386/i386-builtins.c: Include
14866         "common/config/i386/i386-isas.h".
14867         (_arch_names_table): Removed.
14868         (isa_names_table): Likewise.
14870 2020-06-24  H.J. Lu  <hjl.tools@gmail.com>
14872         PR target/95259
14873         * common/config/i386/cpuinfo.h: New file.
14874         (__processor_model): Moved from libgcc/config/i386/cpuinfo.h.
14875         (__processor_model2): New.
14876         (CHECK___builtin_cpu_is): New.  Defined as empty if not defined.
14877         (has_cpu_feature): New function.
14878         (set_cpu_feature): Likewise.
14879         (get_amd_cpu): Moved from libgcc/config/i386/cpuinfo.c.  Use
14880         CHECK___builtin_cpu_is.  Return AMD CPU name.
14881         (get_intel_cpu): Moved from libgcc/config/i386/cpuinfo.c.  Use
14882         Use CHECK___builtin_cpu_is.  Return Intel CPU name.
14883         (get_available_features): Moved from libgcc/config/i386/cpuinfo.c.
14884         Also check FEATURE_3DNOW, FEATURE_3DNOWP, FEATURE_ADX,
14885         FEATURE_ABM, FEATURE_CLDEMOTE, FEATURE_CLFLUSHOPT, FEATURE_CLWB,
14886         FEATURE_CLZERO, FEATURE_CMPXCHG16B, FEATURE_CMPXCHG8B,
14887         FEATURE_ENQCMD, FEATURE_F16C, FEATURE_FSGSBASE, FEATURE_FXSAVE,
14888         FEATURE_HLE, FEATURE_IBT, FEATURE_LAHF_LM, FEATURE_LM,
14889         FEATURE_LWP, FEATURE_LZCNT, FEATURE_MOVBE, FEATURE_MOVDIR64B,
14890         FEATURE_MOVDIRI, FEATURE_MWAITX, FEATURE_OSXSAVE,
14891         FEATURE_PCONFIG, FEATURE_PKU, FEATURE_PREFETCHWT1, FEATURE_PRFCHW,
14892         FEATURE_PTWRITE, FEATURE_RDPID, FEATURE_RDRND, FEATURE_RDSEED,
14893         FEATURE_RTM, FEATURE_SERIALIZE, FEATURE_SGX, FEATURE_SHA,
14894         FEATURE_SHSTK, FEATURE_TBM, FEATURE_TSXLDTRK, FEATURE_VAES,
14895         FEATURE_WAITPKG, FEATURE_WBNOINVD, FEATURE_XSAVE, FEATURE_XSAVEC,
14896         FEATURE_XSAVEOPT and FEATURE_XSAVES
14897         (cpu_indicator_init): Moved from libgcc/config/i386/cpuinfo.c.
14898         Also update cpu_model2.
14899         * common/config/i386/i386-cpuinfo.h (processor_vendor): Add
14900         Add VENDOR_CENTAUR, VENDOR_CYRIX and VENDOR_NSC.
14901         (processor_features): Moved from gcc/config/i386/i386-builtins.c.
14902         Renamed F_XXX to FEATURE_XXX.  Add FEATURE_3DNOW, FEATURE_3DNOWP,
14903         FEATURE_ADX, FEATURE_ABM, FEATURE_CLDEMOTE, FEATURE_CLFLUSHOPT,
14904         FEATURE_CLWB, FEATURE_CLZERO, FEATURE_CMPXCHG16B,
14905         FEATURE_CMPXCHG8B, FEATURE_ENQCMD, FEATURE_F16C,
14906         FEATURE_FSGSBASE, FEATURE_FXSAVE, FEATURE_HLE, FEATURE_IBT,
14907         FEATURE_LAHF_LM, FEATURE_LM, FEATURE_LWP, FEATURE_LZCNT,
14908         FEATURE_MOVBE, FEATURE_MOVDIR64B, FEATURE_MOVDIRI,
14909         FEATURE_MWAITX, FEATURE_OSXSAVE, FEATURE_PCONFIG,
14910         FEATURE_PKU, FEATURE_PREFETCHWT1, FEATURE_PRFCHW,
14911         FEATURE_PTWRITE, FEATURE_RDPID, FEATURE_RDRND, FEATURE_RDSEED,
14912         FEATURE_RTM, FEATURE_SERIALIZE, FEATURE_SGX, FEATURE_SHA,
14913         FEATURE_SHSTK, FEATURE_TBM, FEATURE_TSXLDTRK, FEATURE_VAES,
14914         FEATURE_WAITPKG, FEATURE_WBNOINVD, FEATURE_XSAVE, FEATURE_XSAVEC,
14915         FEATURE_XSAVEOPT, FEATURE_XSAVES and CPU_FEATURE_MAX.
14916         (SIZE_OF_CPU_FEATURES): New.
14917         * config/i386/i386-builtins.c (processor_features): Removed.
14918         (isa_names_table): Replace F_XXX with FEATURE_XXX.
14919         (fold_builtin_cpu): Change __cpu_features2 to an array.
14921 2020-06-24  H.J. Lu  <hjl.tools@gmail.com>
14923         PR target/95842
14924         * common/config/i386/i386-common.c (processor_alias_table): Add
14925         processor model and priority to each entry.
14926         (pta_size): Updated with -6.
14927         (num_arch_names): New.
14928         * common/config/i386/i386-cpuinfo.h: New file.
14929         * config/i386/i386-builtins.c (feature_priority): Removed.
14930         (processor_model): Likewise.
14931         (_arch_names_table): Likewise.
14932         (arch_names_table): Likewise.
14933         (_isa_names_table): Replace P_ZERO with P_NONE.
14934         (get_builtin_code_for_version): Replace P_ZERO with P_NONE.  Use
14935         processor_alias_table.
14936         (fold_builtin_cpu): Replace arch_names_table with
14937         processor_alias_table.
14938         * config/i386/i386.h: Include "common/config/i386/i386-cpuinfo.h".
14939         (pta): Add model and priority.
14940         (num_arch_names): New.
14942 2020-06-24  Richard Biener  <rguenther@suse.de>
14944         * tree-vectorizer.h (vect_find_first_scalar_stmt_in_slp):
14945         Declare.
14946         * tree-vect-data-refs.c (vect_preserves_scalar_order_p):
14947         Simplify for new position of vectorized SLP loads.
14948         (vect_slp_analyze_node_dependences): Adjust for it.
14949         (vect_slp_analyze_and_verify_node_alignment): Compute alignment
14950         for the first stmts dataref.
14951         * tree-vect-slp.c (vect_find_first_scalar_stmt_in_slp): New.
14952         (vect_schedule_slp_instance): Emit loads before the
14953         first scalar stmt.
14954         * tree-vect-stmts.c (vectorizable_load): Do what the comment
14955         says and use vect_find_first_scalar_stmt_in_slp.
14957 2020-06-24  Richard Biener  <rguenther@suse.de>
14959         PR tree-optimization/95856
14960         * tree-vectorizer.c (vect_stmt_dominates_stmt_p): Honor
14961         region marker -1u.
14963 2020-06-24  Jakub Jelinek  <jakub@redhat.com>
14965         PR middle-end/95810
14966         * fold-const.c (fold_cond_expr_with_comparison): Optimize
14967         A <= 0 ? A : -A into (type)-absu(A) rather than -abs(A).
14969 2020-06-24  Jakub Jelinek  <jakub@redhat.com>
14971         * omp-low.c (lower_omp_for): Fix two pastos.
14973 2020-06-24  Martin Liska  <mliska@suse.cz>
14975         * optc-save-gen.awk: Compare string options in cl_optimization_compare
14976         by strcmp.
14978 2020-06-23  Aaron Sawdey  <acsawdey@linux.ibm.com>
14980         * config.gcc: Identify power10 as a 64-bit processor and as valid
14981         for --with-cpu and --with-tune.
14983 2020-06-23  David Edelsohn  <dje.gcc@gmail.com>
14985         * Makefile.in (LANG_MAKEFRAGS): Same.
14986         (tmake_file): Use -include.
14987         (xmake_file): Same.
14989 2020-06-23  Michael Meissner  <meissner@linux.ibm.com>
14991         * REVISION: Delete file meant for a private branch.
14993 2020-06-23  Andre Vieira  <andre.simoesdiasvieira@arm.com>
14995         PR target/95646
14996         * config/arm/arm.c: (cmse_nonsecure_entry_clear_before_return): Use
14997         'callee_saved_reg_p' instead of 'calL_used_or_fixed_reg_p'.
14999 2020-06-23  Alexandre Oliva  <oliva@adacore.com>
15001         * collect-utils.h (dumppfx): New.
15002         * collect-utils.c (dumppfx): Likewise.
15003         * lto-wrapper.c (run_gcc): Set global dumppfx.
15004         (compile_offload_image): Pass a -dumpbase on to mkoffload.
15005         * config/nvptx/mkoffload.c (ptx_dumpbase): New.
15006         (main): Handle incoming -dumpbase.  Set ptx_dumpbase.  Obey
15007         save_temps.
15008         (compile_native): Pass -dumpbase et al to compiler.
15009         * config/gcn/mkoffload.c (gcn_dumpbase): New.
15010         (main): Handle incoming -dumpbase.  Set gcn_dumpbase.  Obey
15011         save_temps.  Pass -dumpbase et al to offload target compiler.
15012         (compile_native): Pass -dumpbase et al to compiler.
15014 2020-06-23  Michael Meissner  <meissner@linux.ibm.com>
15016         * REVISION: New file.
15018 2020-06-22  Segher Boessenkool  <segher@kernel.crashing.org>
15020         * config/rs6000/altivec.h: Use _ARCH_PWR10, not _ARCH_PWR_FUTURE.
15021         Update comment for ISA 3.1.
15022         * config/rs6000/altivec.md: Use TARGET_POWER10, not TARGET_FUTURE.
15023         * config/rs6000/driver-rs6000.c (asm_names): Use -mpwr10 for power10
15024         on AIX, and -mpower10 elsewhere.
15025         * config/rs6000/future.md: Delete.
15026         * config/rs6000/linux64.h: Update comments.  Use TARGET_POWER10, not
15027         TARGET_FUTURE.
15028         * config/rs6000/power10.md: New file.
15029         * config/rs6000/ppc-auxv.h: Use PPC_PLATFORM_POWER10, not
15030         PPC_PLATFORM_FUTURE.
15031         * config/rs6000/rs6000-builtin.def: Update comments.  Use BU_P10V_*
15032         names instead of BU_FUTURE_V_* names.  Use RS6000_BTM_P10 instead of
15033         RS6000_BTM_FUTURE.  Use P10_BUILTIN_* instead of FUTURE_BUILTIN_*.
15034         Use BU_P10_* instead of BU_FUTURE_*.
15035         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Define
15036         _ARCH_PWR10 instead of _ARCH_PWR_FUTURE.
15037         (altivec_resolve_overloaded_builtin): Use P10_BUILTIN_VEC_XXEVAL, not
15038         FUTURE_BUILTIN_VEC_XXEVAL.
15039         * config/rs6000/rs6000-call.c: Use P10_BUILTIN_*, not FUTURE_BUILTIN_*.
15040         Update compiler messages.
15041         * config/rs6000/rs6000-cpus.def: Update comments.  Use ISA_3_1_*, not
15042         ISA_FUTURE_*.  Use OPTION_MASK_POWER10, not OPTION_MASK_FUTURE.
15043         * config/rs6000/rs6000-opts.h: Use PROCESSOR_POWER10, not
15044         PROCESSOR_FUTURE.
15045         * config/rs6000/rs6000-string.c: Ditto.
15046         * config/rs6000/rs6000-tables.opt (rs6000_cpu_opt_value): Use "power10"
15047         instead of "future", reorder it to right after "power9".
15048         * config/rs6000/rs6000.c: Update comments.  Use OPTION_MASK_POWER10,
15049         not OPTION_MASK_FUTURE.  Use TARGET_POWER10, not TARGET_FUTURE.  Use
15050         RS6000_BTM_P10, not RS6000_BTM_FUTURE.  Update compiler messages.
15051         Use PROCESSOR_POWER10, not PROCESSOR_FUTURE.  Use ISA_3_1_MASKS_SERVER,
15052         not ISA_FUTURE_MASKS_SERVER.
15053         (rs6000_opt_masks): Use "power10" instead of "future".
15054         (rs6000_builtin_mask_names): Ditto.
15055         (rs6000_disable_incompatible_switches): Ditto.
15056         * config/rs6000/rs6000.h: Use -mpower10, not -mfuture.  Use
15057         -mcpu=power10, not -mcpu=future.  Use MASK_POWER10, not MASK_FUTURE.
15058         Use OPTION_MASK_POWER10, not OPTION_MASK_FUTURE.  Use RS6000_BTM_P10,
15059         not RS6000_BTM_FUTURE.
15060         * config/rs6000/rs6000.md: Use "power10", not "future".  Use
15061         TARGET_POWER10, not TARGET_FUTURE.  Include "power10.md", not
15062         "future.md".
15063         * config/rs6000/rs6000.opt (mfuture): Delete.
15064         (mpower10): New.
15065         * config/rs6000/t-rs6000: Use "power10.md", not "future.md".
15066         * config/rs6000/vsx.md: Use TARGET_POWER10, not TARGET_FUTURE.
15068 2020-06-22  Richard Sandiford  <richard.sandiford@arm.com>
15070         * coretypes.h (first_type): Delete.
15071         * recog.h (insn_gen_fn::operator()): Go back to using a decltype.
15073 2020-06-22  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
15075         * doc/sourcebuild.texi (arm_v8_1m_mve_fp_ok): Add item.
15076         (arm_mve_hw): Likewise.
15078 2020-06-22  H.J. Lu  <hjl.tools@gmail.com>
15080         PR target/95791
15081         * config/i386/i386.c (ix86_dirflag_mode_needed): Skip
15082         EXT_REX_SSE_REG_P.
15084 2020-06-22  Richard Biener  <rguenther@suse.de>
15086         PR tree-optimization/95770
15087         * tree-vect-slp.c (vect_schedule_slp_instance): Also consider
15088         external defs.
15090 2020-06-22  Andrew Stubbs  <ams@codesourcery.com>
15092         * config/gcn/gcn.c (gcn_function_arg): Disallow vector arguments.
15093         (gcn_return_in_memory): Return vectors in memory.
15095 2020-06-22  Jakub Jelinek  <jakub@redhat.com>
15097         * omp-general.c (omp_extract_for_data): For triangular loops with
15098         all loop invariant expressions constant where the innermost loop is
15099         executed at least once compute number of iterations at compile time.
15101 2020-06-22  Kito Cheng  <kito.cheng@sifive.com>
15103         * config/riscv/riscv.h (ASM_SPEC): Remove riscv_expand_arch call.
15104         (DRIVER_SELF_SPECS): New.
15106 2020-06-22  Kito Cheng  <kito.cheng@sifive.com>
15108         * config/riscv/riscv-builtins.c (RISCV_FTYPE_NAME0): New.
15109         (RISCV_FTYPE_ATYPES0): New.
15110         (riscv_builtins): Using RISCV_USI_FTYPE for frflags.
15111         * config/riscv/riscv-ftypes.def: Remove VOID argument.
15113 2020-06-21  David Edelsohn  <dje.gcc@gmail.com>
15115         * config.gcc: Use t-aix64, biarch64 and default64 for cpu_is_64bit.
15116         * config/rs6000/aix72.h (ASM_SPEC): Remove aix64 option.
15117         (ASM_SPEC32): New.
15118         (ASM_SPEC64): New.
15119         (ASM_CPU_SPEC): Remove vsx and altivec options.
15120         (CPP_SPEC_COMMON): Rename from CPP_SPEC.
15121         (CPP_SPEC32): New.
15122         (CPP_SPEC64): New.
15123         (CPLUSPLUS_CPP_SPEC): Rename to CPLUSPLUS_CPP_SPEC_COMMON..
15124         (TARGET_DEFAULT): Only define if not BIARCH.
15125         (LIB_SPEC_COMMON): Rename from LIB_SPEC.
15126         (LIB_SPEC32): New.
15127         (LIB_SPEC64): New.
15128         (LINK_SPEC_COMMON): Rename from LINK_SPEC.
15129         (LINK_SPEC32): New.
15130         (LINK_SPEC64): New.
15131         (STARTFILE_SPEC): Add 64 bit version of crtcxa and crtdbase.
15132         (ASM_SPEC): Define 32 and 64 bit alternatives using DEFAULT_ARCH64_P.
15133         (CPP_SPEC): Same.
15134         (CPLUSPLUS_CPP_SPEC): Same.
15135         (LIB_SPEC): Same.
15136         (LINK_SPEC): Same.
15137         (SUBTARGET_EXTRA_SPECS): Add new 32/64 specs.
15138         * config/rs6000/defaultaix64.h: New file.
15139         * config/rs6000/t-aix64: New file.
15141 2020-06-21  Peter Bergner  <bergner@linux.ibm.com>
15143         * config/rs6000/predicates.md (mma_assemble_input_operand): New.
15144         * config/rs6000/rs6000-builtin.def (BU_MMA_1, BU_MMA_V2, BU_MMA_3,
15145         BU_MMA_5, BU_MMA_6, BU_VSX_1): Add support macros for defining MMA
15146         built-in functions.
15147         (ASSEMBLE_ACC, ASSEMBLE_PAIR, DISASSEMBLE_ACC, DISASSEMBLE_PAIR,
15148         PMXVBF16GER2, PMXVBF16GER2NN, PMXVBF16GER2NP, PMXVBF16GER2PN,
15149         PMXVBF16GER2PP, PMXVF16GER2, PMXVF16GER2NN, PMXVF16GER2NP,
15150         PMXVF16GER2PN, PMXVF16GER2PP, PMXVF32GER, PMXVF32GERNN,
15151         PMXVF32GERNP, PMXVF32GERPN, PMXVF32GERPP, PMXVF64GER, PMXVF64GERNN,
15152         PMXVF64GERNP, PMXVF64GERPN, PMXVF64GERPP, PMXVI16GER2, PMXVI16GER2PP,
15153         PMXVI16GER2S, PMXVI16GER2SPP, PMXVI4GER8, PMXVI4GER8PP, PMXVI8GER4,
15154         PMXVI8GER4PP, PMXVI8GER4SPP, XVBF16GER2, XVBF16GER2NN, XVBF16GER2NP,
15155         XVBF16GER2PN, XVBF16GER2PP, XVCVBF16SP, XVCVSPBF16, XVF16GER2,
15156         XVF16GER2NN, XVF16GER2NP, XVF16GER2PN, XVF16GER2PP, XVF32GER,
15157         XVF32GERNN, XVF32GERNP, XVF32GERPN, XVF32GERPP, XVF64GER, XVF64GERNN,
15158         XVF64GERNP, XVF64GERPN, XVF64GERPP, XVI16GER2, XVI16GER2PP, XVI16GER2S,
15159         XVI16GER2SPP, XVI4GER8, XVI4GER8PP, XVI8GER4, XVI8GER4PP, XVI8GER4SPP,
15160         XXMFACC, XXMTACC, XXSETACCZ): Add MMA built-ins.
15161         * config/rs6000/rs6000.c (rs6000_emit_move): Use CONST_INT_P.
15162         Allow zero constants.
15163         (print_operand) <case 'A'>: New output modifier.
15164         (rs6000_split_multireg_move): Add support for inserting accumulator
15165         priming and depriming instructions.  Add support for splitting an
15166         assemble accumulator pattern.
15167         * config/rs6000/rs6000-call.c (mma_init_builtins, mma_expand_builtin,
15168         rs6000_gimple_fold_mma_builtin): New functions.
15169         (RS6000_BUILTIN_M): New macro.
15170         (def_builtin): Handle RS6000_BTC_QUAD and RS6000_BTC_PAIR attributes.
15171         (bdesc_mma): Add new MMA built-in support.
15172         (htm_expand_builtin): Use RS6000_BTC_OPND_MASK.
15173         (rs6000_invalid_builtin): Add handling of RS6000_BTM_FUTURE and
15174         RS6000_BTM_MMA.
15175         (rs6000_builtin_valid_without_lhs): Handle RS6000_BTC_VOID attribute.
15176         (rs6000_gimple_fold_builtin): Call rs6000_builtin_is_supported_p
15177         and rs6000_gimple_fold_mma_builtin.
15178         (rs6000_expand_builtin): Call mma_expand_builtin.
15179         Use RS6000_BTC_OPND_MASK.
15180         (rs6000_init_builtins): Adjust comment.  Call mma_init_builtins.
15181         (htm_init_builtins): Use RS6000_BTC_OPND_MASK.
15182         (builtin_function_type): Handle VSX_BUILTIN_XVCVSPBF16 and
15183         VSX_BUILTIN_XVCVBF16SP.
15184         * config/rs6000/rs6000.h (RS6000_BTC_QUINARY, RS6000_BTC_SENARY,
15185         RS6000_BTC_OPND_MASK, RS6000_BTC_QUAD, RS6000_BTC_PAIR,
15186         RS6000_BTC_QUADPAIR, RS6000_BTC_GIMPLE): New defines.
15187         (RS6000_BTC_PREDICATE, RS6000_BTC_ABS, RS6000_BTC_DST,
15188         RS6000_BTC_TYPE_MASK, RS6000_BTC_ATTR_MASK): Adjust values.
15189         * config/rs6000/mma.md (MAX_MMA_OPERANDS): New define_constant.
15190         (UNSPEC_MMA_ASSEMBLE_ACC, UNSPEC_MMA_PMXVBF16GER2,
15191         UNSPEC_MMA_PMXVBF16GER2NN, UNSPEC_MMA_PMXVBF16GER2NP,
15192         UNSPEC_MMA_PMXVBF16GER2PN, UNSPEC_MMA_PMXVBF16GER2PP,
15193         UNSPEC_MMA_PMXVF16GER2, UNSPEC_MMA_PMXVF16GER2NN,
15194         UNSPEC_MMA_PMXVF16GER2NP, UNSPEC_MMA_PMXVF16GER2PN,
15195         UNSPEC_MMA_PMXVF16GER2PP, UNSPEC_MMA_PMXVF32GER,
15196         UNSPEC_MMA_PMXVF32GERNN, UNSPEC_MMA_PMXVF32GERNP,
15197         UNSPEC_MMA_PMXVF32GERPN, UNSPEC_MMA_PMXVF32GERPP,
15198         UNSPEC_MMA_PMXVF64GER, UNSPEC_MMA_PMXVF64GERNN,
15199         UNSPEC_MMA_PMXVF64GERNP, UNSPEC_MMA_PMXVF64GERPN,
15200         UNSPEC_MMA_PMXVF64GERPP, UNSPEC_MMA_PMXVI16GER2,
15201         UNSPEC_MMA_PMXVI16GER2PP, UNSPEC_MMA_PMXVI16GER2S,
15202         UNSPEC_MMA_PMXVI16GER2SPP, UNSPEC_MMA_PMXVI4GER8,
15203         UNSPEC_MMA_PMXVI4GER8PP, UNSPEC_MMA_PMXVI8GER4,
15204         UNSPEC_MMA_PMXVI8GER4PP, UNSPEC_MMA_PMXVI8GER4SPP,
15205         UNSPEC_MMA_XVBF16GER2, UNSPEC_MMA_XVBF16GER2NN,
15206         UNSPEC_MMA_XVBF16GER2NP, UNSPEC_MMA_XVBF16GER2PN,
15207         UNSPEC_MMA_XVBF16GER2PP, UNSPEC_MMA_XVF16GER2, UNSPEC_MMA_XVF16GER2NN,
15208         UNSPEC_MMA_XVF16GER2NP, UNSPEC_MMA_XVF16GER2PN, UNSPEC_MMA_XVF16GER2PP,
15209         UNSPEC_MMA_XVF32GER, UNSPEC_MMA_XVF32GERNN, UNSPEC_MMA_XVF32GERNP,
15210         UNSPEC_MMA_XVF32GERPN, UNSPEC_MMA_XVF32GERPP, UNSPEC_MMA_XVF64GER,
15211         UNSPEC_MMA_XVF64GERNN, UNSPEC_MMA_XVF64GERNP, UNSPEC_MMA_XVF64GERPN,
15212         UNSPEC_MMA_XVF64GERPP, UNSPEC_MMA_XVI16GER2, UNSPEC_MMA_XVI16GER2PP,
15213         UNSPEC_MMA_XVI16GER2S, UNSPEC_MMA_XVI16GER2SPP, UNSPEC_MMA_XVI4GER8,
15214         UNSPEC_MMA_XVI4GER8PP, UNSPEC_MMA_XVI8GER4, UNSPEC_MMA_XVI8GER4PP,
15215         UNSPEC_MMA_XVI8GER4SPP, UNSPEC_MMA_XXMFACC, UNSPEC_MMA_XXMTACC): New.
15216         (MMA_ACC, MMA_VV, MMA_AVV, MMA_PV, MMA_APV, MMA_VVI4I4I8,
15217         MMA_AVVI4I4I8, MMA_VVI4I4I2, MMA_AVVI4I4I2, MMA_VVI4I4,
15218         MMA_AVVI4I4, MMA_PVI4I2, MMA_APVI4I2, MMA_VVI4I4I4,
15219         MMA_AVVI4I4I4): New define_int_iterator.
15220         (acc, vv, avv, pv, apv, vvi4i4i8, avvi4i4i8, vvi4i4i2,
15221         avvi4i4i2, vvi4i4, avvi4i4, pvi4i2, apvi4i2, vvi4i4i4,
15222         avvi4i4i4): New define_int_attr.
15223         (*movpxi): Add zero constant alternative.
15224         (mma_assemble_pair, mma_assemble_acc): New define_expand.
15225         (*mma_assemble_acc): New define_insn_and_split.
15226         (mma_<acc>, mma_xxsetaccz, mma_<vv>, mma_<avv>, mma_<pv>, mma_<apv>,
15227         mma_<vvi4i4i8>, mma_<avvi4i4i8>, mma_<vvi4i4i2>, mma_<avvi4i4i2>,
15228         mma_<vvi4i4>, mma_<avvi4i4>, mma_<pvi4i2>, mma_<apvi4i2>,
15229         mma_<vvi4i4i4>, mma_<avvi4i4i4>): New define_insn.
15230         * config/rs6000/rs6000.md (define_attr "type"): New type mma.
15231         * config/rs6000/vsx.md (UNSPEC_VSX_XVCVBF16SP): New.
15232         (UNSPEC_VSX_XVCVSPBF16): Likewise.
15233         (XVCVBF16): New define_int_iterator.
15234         (xvcvbf16): New define_int_attr.
15235         (vsx_<xvcvbf16>): New define_insn.
15236         * doc/extend.texi: Document the mma built-ins.
15238 2020-06-21  Peter Bergner  <bergner@linux.ibm.com>
15239             Michael Meissner  <meissner@linux.ibm.com>
15241         * config/rs6000/mma.md: New file.
15242         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Define
15243         __MMA__ for mma.
15244         * config/rs6000/rs6000-call.c (rs6000_init_builtins): Add support
15245         for __vector_pair and __vector_quad types.
15246         * config/rs6000/rs6000-cpus.def (OTHER_FUTURE_MASKS): Add
15247         OPTION_MASK_MMA.
15248         (POWERPC_MASKS): Likewise.
15249         * config/rs6000/rs6000-modes.def (OI, XI): New integer modes.
15250         (POI, PXI): New partial integer modes.
15251         * config/rs6000/rs6000.c (TARGET_INVALID_CONVERSION): Define.
15252         (rs6000_hard_regno_nregs_internal): Use VECTOR_ALIGNMENT_P.
15253         (rs6000_hard_regno_mode_ok_uncached): Likewise.
15254         Add support for POImode being allowed in VSX registers and PXImode
15255         being allowed in FP registers.
15256         (rs6000_modes_tieable_p): Adjust comment.
15257         Add support for POImode and PXImode.
15258         (rs6000_debug_reg_global) <print_tieable_modes>: Add OImode, POImode
15259         XImode, PXImode, V2SImode, V2SFmode and CCFPmode..
15260         (rs6000_setup_reg_addr_masks): Use VECTOR_ALIGNMENT_P.
15261         Set up appropriate addr_masks for vector pair and vector quad addresses.
15262         (rs6000_init_hard_regno_mode_ok): Add support for vector pair and
15263         vector quad registers.  Setup reload handlers for POImode and PXImode.
15264         (rs6000_builtin_mask_calculate): Add support for RS6000_BTM_MMA.
15265         (rs6000_option_override_internal): Error if -mmma is specified
15266         without -mcpu=future.
15267         (rs6000_slow_unaligned_access): Use VECTOR_ALIGNMENT_P.
15268         (quad_address_p): Change size test to less than 16 bytes.
15269         (reg_offset_addressing_ok_p): Add support for ISA 3.1 vector pair
15270         and vector quad instructions.
15271         (avoiding_indexed_address_p): Likewise.
15272         (rs6000_emit_move): Disallow POImode and PXImode moves involving
15273         constants.
15274         (rs6000_preferred_reload_class): Prefer VSX registers for POImode
15275         and FP registers for PXImode.
15276         (rs6000_split_multireg_move): Support splitting POImode and PXImode
15277         move instructions.
15278         (rs6000_mangle_type): Adjust comment.  Add support for mangling
15279         __vector_pair and __vector_quad types.
15280         (rs6000_opt_masks): Add entry for mma.
15281         (rs6000_builtin_mask_names): Add RS6000_BTM_MMA and RS6000_BTM_FUTURE.
15282         (rs6000_function_value): Use VECTOR_ALIGNMENT_P.
15283         (address_to_insn_form): Likewise.
15284         (reg_to_non_prefixed): Likewise.
15285         (rs6000_invalid_conversion): New function.
15286         * config/rs6000/rs6000.h (MASK_MMA): Define.
15287         (BIGGEST_ALIGNMENT): Set to 512 if MMA support is enabled.
15288         (VECTOR_ALIGNMENT_P): New helper macro.
15289         (ALTIVEC_VECTOR_MODE): Use VECTOR_ALIGNMENT_P.
15290         (RS6000_BTM_MMA): Define.
15291         (RS6000_BTM_COMMON): Add RS6000_BTM_MMA and RS6000_BTM_FUTURE.
15292         (rs6000_builtin_type_index): Add RS6000_BTI_vector_pair and
15293         RS6000_BTI_vector_quad.
15294         (vector_pair_type_node): New.
15295         (vector_quad_type_node): New.
15296         * config/rs6000/rs6000.md: Include mma.md.
15297         (define_mode_iterator RELOAD): Add POI and PXI.
15298         * config/rs6000/t-rs6000 (MD_INCLUDES): Add mma.md.
15299         * config/rs6000/rs6000.opt (-mmma): New.
15300         * doc/invoke.texi: Document -mmma.
15302 2020-06-20  Bin Cheng  <bin.cheng@linux.alibaba.com>
15304         PR tree-optimization/95638
15305         * tree-loop-distribution.c (pg_edge_callback_data): New field.
15306         (loop_distribution::break_alias_scc_partitions): Record and restore
15307         postorder information.  Fix memory leak.
15309 2020-06-19  Tobias Burnus  <tobias@codesourcery.com>
15311         * config/gcn/gcn.c (gcn_related_vector_mode): Add ARG_UNUSED.
15312         (output_file_start): Use const 'char *'.
15314 2020-06-19  Przemyslaw Wirkus  <Przemyslaw.Wirkus@arm.com>
15316         PR tree-optimization/94880
15317         * match.pd (A | B) - B -> (A & ~B): New simplification.
15319 2020-06-19  Richard Biener  <rguenther@suse.de>
15321         * tree-vect-slp.c (vect_bb_slp_scalar_cost): Adjust
15322         for lane permutations.
15324 2020-06-19  Richard Biener  <rguenther@suse.de>
15326         PR tree-optimization/95761
15327         * tree-vect-slp.c (vect_schedule_slp_instance): Walk all
15328         vectorized stmts for finding the last one.
15330 2020-06-18  Felix Yang  <felix.yang@huawei.com>
15332         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Call
15333         vect_relevant_for_alignment_p to filter out data references in
15334         the loop whose alignment is irrelevant when trying loop peeling
15335         to force alignment.
15337 2020-06-18  Uroš Bizjak  <ubizjak@gmail.com>
15339         * config/i386/i386.md (*cmpqi_ext<mode>_1): Use SWI248 mode
15340         iterator instead of SImode for ZERO_EXTRACT RTX.  Use SWI248
15341         mode iterator for the first operand of ZERO_EXTRACT RTX.
15342         Change ext_register_operand predicate to register_operand.
15343         Rename from *cmpqi_ext_1.
15344         (*cmpqi_ext<mode>_2): Ditto.  Rename from *cmpqi_ext_2.
15345         (*cmpqi_ext<mode>_3): Ditto.  Rename from *cmpqi_ext_3.
15346         (*cmpqi_ext<mode>_4): Ditto.  Rename from *cmpqi_ext_4.
15347         (cmpi_ext_3): Use HImode instead of SImode for ZERO_EXTRACT RTX.
15348         (*extv<mode>): Use SWI24 mode iterator for the first operand
15349         of ZERO_EXTRACT RTX.  Change ext_register_operand predicate
15350         to register_operand.
15351         (*extzv<mode>): Use SWI248 mode iterator for the first operand
15352         of ZERO_EXTRACT RTX.  Change ext_register_operand predicate
15353         to register_operand.
15354         (*extzvqi): Use SWI248 mode iterator instead of SImode for
15355         ZERO_EXTRACT RTX.  Use SWI248 mode iterator for the first operand
15356         of ZERO_EXTRACT RTX.  Change ext_register_operand predicate to
15357         register_operand.
15358         (*extzvqi_mem_rex64 and corresponding peephole2):  Use SWI248 mode
15359         iterator instead of SImode for ZERO_EXTRACT RTX.  Use SWI248
15360         mode iterator for the first operand of ZERO_EXTRACT RTX.
15361         Change ext_register_operand predicate to register_operand.
15362         (@insv<mode>_1): Use SWI248 mode iterator for the first operand
15363         of ZERO_EXTRACT RTX.  Change ext_register_operand predicate to
15364         register_operand.
15365         (*insvqi_1): Use SWI248 mode iterator instead of SImode
15366         for ZERO_EXTRACT RTX.  Use SWI248 mode iterator for the
15367         first operand of ZERO_EXTRACT RTX.  Change ext_register_operand
15368         predicate to register_operand.
15369         (*insvqi_2): Ditto.
15370         (*insvqi_3): Ditto.
15371         (*insvqi_1_mem_rex64 and corresponding peephole2):  Use SWI248 mode
15372         iterator instead of SImode for ZERO_EXTRACT RTX.  Use SWI248
15373         mode iterator for the first operand of ZERO_EXTRACT RTX.
15374         Change ext_register_operand predicate to register_operand.
15375         (addqi_ext_1): New expander.
15376         (*addqi_ext<mode>_1): Use SWI248 mode iterator instead of SImode
15377         for ZERO_EXTRACT RTX.  Use SWI248 mode iterator for the first
15378         operand of ZERO_EXTRACT RTX.  Change ext_register_operand predicate
15379         to register_operand.  Rename from *addqi_ext_1.
15380         (*addqi_ext<mode>_2): Ditto. Rename from *addqi_ext_2.
15381         (divmodqi4): Use HImode instead of SImode for ZERO_EXTRACT RTX.
15382         (udivmodqi4): Ditto.
15383         (testqi_ext_1): Use HImode instead of SImode for ZERO_EXTRACT RTX.
15384         (*testqi_ext<mode>_1): Use SWI248 mode iterator instead of SImode
15385         for ZERO_EXTRACT RTX.  Use SWI248 mode iterator for the first
15386         operand of ZERO_EXTRACT RTX.  Change ext_register_operand predicate
15387         to register_operand.  Rename from *testqi_ext_1.
15388         (*testqi_ext<mode>_2): Ditto.  Rename from *testqi_ext_2.
15389         (andqi_ext_1): New expander.
15390         (*andqi_ext<mode>_1): Use SWI248 mode iterator instead of SImode
15391         for ZERO_EXTRACT RTX.  Use SWI248 mode iterator for the first
15392         operand of ZERO_EXTRACT RTX.  Change ext_register_operand predicate
15393         to register_operand.  Rename from andqi_ext_1.
15394         (*andqi_ext<mode>_1_cc): Ditto.  Rename from *andqi_ext_1_cc.
15395         (*andqi_ext<mode>_2): Ditto.  Rename from *andqi_ext_2.
15396         (*<code>qi_ext<mode>_1): Ditto.  Rename from *<code>qi_ext_1.
15397         (*<code>qi_ext<mode>_2): Ditto.  Rename from *<code>qi_ext_2.
15398         (xorqi_ext_1_cc): Use HImode instead of SImode for ZERO_EXTRACT RTX.
15399         (*xorqi_ext<mode>_1_cc):  Use SWI248 mode iterator instead of SImode
15400         for ZERO_EXTRACT RTX.  Use SWI248 mode iterator for the first
15401         operand of ZERO_EXTRACT RTX.  Change ext_register_operand predicate
15402         to register_operand.  Rename from *xorqi_ext_1_cc.
15403         * config/i386/i386-expand.c (ix86_split_idivmod): Emit ZERO_EXTRACT
15404         in mode, matching its first operand.
15405         (promote_duplicated_reg): Update for renamed insv<mode>_1.
15406         * config/i386/predicates.md (ext_register_operand): Remove predicate.
15408 2020-06-18  Martin Sebor  <msebor@redhat.com>
15410         PR middle-end/95667
15411         PR middle-end/92814
15412         * builtins.c (compute_objsize): Remove call to
15413         compute_builtin_object_size and instead compute conservative sizes
15414         directly here.
15416 2020-06-18  Martin Liska  <mliska@suse.cz>
15418         * coretypes.h (struct iterator_range): New type.
15419         * tree-vect-patterns.c (vect_determine_precisions): Use
15420         range-based iterator.
15421         (vect_pattern_recog): Likewise.
15422         * tree-vect-slp.c (_bb_vec_info):  Likewise.
15423         (_bb_vec_info::~_bb_vec_info): Likewise.
15424         (vect_slp_check_for_constructors): Likewise.
15425         * tree-vectorizer.h:Add new iterators
15426         and functions that use it.
15428 2020-06-18  Martin Liska  <mliska@suse.cz>
15430         * config/rs6000/rs6000-call.c (fold_build_vec_cmp):
15431         Since 502d63b6d6141597bb18fd23c87736a1b384cf8f, first argument
15432         of a VEC_COND_EXPR cannot be tcc_comparison and so that
15433         a SSA_NAME needs to be created before we use it for the first
15434         argument of the VEC_COND_EXPR.
15435         (fold_compare_helper): Pass gsi to fold_build_vec_cmp.
15437 2020-06-18  Richard Biener  <rguenther@suse.de>
15439         PR middle-end/95739
15440         * internal-fn.c (expand_vect_cond_optab_fn): Move the result
15441         to the target if necessary.
15442         (expand_vect_cond_mask_optab_fn): Likewise.
15444 2020-06-18  Martin Liska  <mliska@suse.cz>
15446         * tree-ssa-reassoc.c (ovce_extract_ops): Replace *vcond with
15447         vcond as we check for NULL pointer.
15449 2020-06-18  Tobias Burnus  <tobias@codesourcery.com>
15451         * gimple-pretty-print.c (dump_binary_rhs): Use braces to
15452         silence empty-body warning with gcc_fallthrough.
15454 2020-06-18  Jakub Jelinek  <jakub@redhat.com>
15456         PR tree-optimization/95699
15457         * tree-ssa-phiopt.c (minmax_replacement): Treat (signed int)x < 0
15458         as x > INT_MAX and (signed int)x >= 0 as x <= INT_MAX.  Move variable
15459         declarations to the statements that set them where possible.
15461 2020-06-18  Jakub Jelinek  <jakub@redhat.com>
15463         PR target/95713
15464         * tree-ssa-forwprop.c (simplify_vector_constructor): Don't allow
15465         scalar mode halfvectype other than vector boolean for
15466         VEC_PACK_TRUNC_EXPR.
15468 2020-06-18  Richard Biener  <rguenther@suse.de>
15470         * varasm.c (assemble_variable): Make sure to not
15471         defer output when outputting addressed constants.
15472         (output_constant_def_contents): Likewise.
15473         (add_constant_to_table): Take and pass on whether to
15474         defer output.
15475         (output_addressed_constants): Likewise.
15476         (output_constant_def): Pass on whether to defer output
15477         to add_constant_to_table.
15478         (tree_output_constant_def): Defer output of constants.
15480 2020-06-18  Richard Biener  <rguenther@suse.de>
15482         * tree-vectorizer.h (_slp_tree::two_operators): Remove.
15483         (_slp_tree::lane_permutation): New member.
15484         (_slp_tree::code): Likewise.
15485         (SLP_TREE_TWO_OPERATORS): Remove.
15486         (SLP_TREE_LANE_PERMUTATION): New.
15487         (SLP_TREE_CODE): Likewise.
15488         (vect_stmt_dominates_stmt_p): Declare.
15489         * tree-vectorizer.c (vect_stmt_dominates_stmt_p): New function.
15490         * tree-vect-stmts.c (vect_model_simple_cost): Remove
15491         SLP_TREE_TWO_OPERATORS handling.
15492         * tree-vect-slp.c (_slp_tree::_slp_tree): Amend.
15493         (_slp_tree::~_slp_tree): Likewise.
15494         (vect_two_operations_perm_ok_p): Remove.
15495         (vect_build_slp_tree_1): Remove verification of two-operator
15496         permutation here.
15497         (vect_build_slp_tree_2): When we have two different operators
15498         build two computation SLP nodes and a blend.
15499         (vect_print_slp_tree): Print the lane permutation if it exists.
15500         (slp_copy_subtree): Copy it.
15501         (vect_slp_rearrange_stmts): Re-arrange it.
15502         (vect_slp_analyze_node_operations_1): Handle SLP_TREE_CODE
15503         VEC_PERM_EXPR explicitely.
15504         (vect_schedule_slp_instance): Likewise.  Remove old
15505         SLP_TREE_TWO_OPERATORS code.
15506         (vectorizable_slp_permutation): New function.
15508 2020-06-18  Martin Liska  <mliska@suse.cz>
15510         * tree-vect-generic.c (expand_vector_condition): Check
15511         for gassign before inspecting RHS.
15513 2020-06-17  Thomas Schwinge  <thomas@codesourcery.com>
15515         * gimplify.c (omp_notice_threadprivate_variable)
15516         (omp_default_clause, omp_notice_variable): 'inform' after 'error'
15517         diagnostic.  Adjust all users.
15519 2020-06-17  Thomas Schwinge  <thomas@codesourcery.com>
15521         * hsa-gen.c (gen_hsa_insns_for_call): Move 'function_decl ==
15522         NULL_TREE' check earlier.
15524 2020-06-17  Forrest Timour  <forrest.timour@gmail.com>
15526         * doc/extend.texi (attribute access): Fix a typo.
15528 2020-06-17  Bin Cheng  <bin.cheng@linux.alibaba.com>
15529             Kaipeng Zhou  <zhoukaipeng3@huawei.com>
15531         PR tree-optimization/95199
15532         * tree-vect-stmts.c: Eliminate common stmts for bump and offset in
15533         strided load/store operations and remove redundant code.
15535 2020-06-17  Richard Sandiford  <richard.sandiford@arm.com>
15537         * coretypes.h (first_type): New alias template.
15538         * recog.h (insn_gen_fn::operator()): Use it instead of a decltype.
15539         Remove spurious “...” and split the function type out into a typedef.
15541 2020-06-17  Andreas Krebbel  <krebbel@linux.ibm.com>
15543         * config/s390/s390.c (s390_fix_long_loop_prediction): Exit early
15544         for PARALLELs.
15546 2020-06-17  Richard Biener  <rguenther@suse.de>
15548         * tree-vect-slp.c (vect_build_slp_tree_1): Set the passed
15549         in *vectype parameter.
15550         (vect_build_slp_tree_2): Set SLP_TREE_VECTYPE from what
15551         vect_build_slp_tree_1 computed.
15552         (vect_analyze_slp_instance): Set SLP_TREE_VECTYPE.
15553         (vect_slp_analyze_node_operations_1): Use the SLP node vector type.
15554         (vect_schedule_slp_instance): Likewise.
15555         * tree-vect-stmts.c (vect_is_simple_use): Take the vector type
15556         from SLP_TREE_VECTYPE.
15558 2020-06-17  Richard Biener  <rguenther@suse.de>
15560         PR tree-optimization/95717
15561         * tree-vect-loop-manip.c (slpeel_tree_duplicate_loop_to_edge_cfg):
15562         Move BB SSA updating before exit/latch PHI current def copying.
15564 2020-06-17  Martin Liska  <mliska@suse.cz>
15566         * Makefile.in: Add new file.
15567         * expr.c (expand_expr_real_2): Add gcc_unreachable as we should
15568         not meet this condition.
15569         (do_store_flag): Likewise.
15570         * gimplify.c (gimplify_expr): Gimplify first argument of
15571         VEC_COND_EXPR to be a SSA name.
15572         * internal-fn.c (vec_cond_mask_direct): New.
15573         (vec_cond_direct): Likewise.
15574         (vec_condu_direct): Likewise.
15575         (vec_condeq_direct): Likewise.
15576         (expand_vect_cond_optab_fn):  New.
15577         (expand_vec_cond_optab_fn): Likewise.
15578         (expand_vec_condu_optab_fn): Likewise.
15579         (expand_vec_condeq_optab_fn): Likewise.
15580         (expand_vect_cond_mask_optab_fn): Likewise.
15581         (expand_vec_cond_mask_optab_fn): Likewise.
15582         (direct_vec_cond_mask_optab_supported_p): Likewise.
15583         (direct_vec_cond_optab_supported_p): Likewise.
15584         (direct_vec_condu_optab_supported_p): Likewise.
15585         (direct_vec_condeq_optab_supported_p): Likewise.
15586         * internal-fn.def (VCOND): New OPTAB.
15587         (VCONDU): Likewise.
15588         (VCONDEQ): Likewise.
15589         (VCOND_MASK): Likewise.
15590         * optabs.c (get_rtx_code): Make it global.
15591         (expand_vec_cond_mask_expr): Removed.
15592         (expand_vec_cond_expr): Removed.
15593         * optabs.h (expand_vec_cond_expr): Likewise.
15594         (vector_compare_rtx): Make it global.
15595         * passes.def: Add new pass_gimple_isel pass.
15596         * tree-cfg.c (verify_gimple_assign_ternary): Add check
15597         for VEC_COND_EXPR about first argument.
15598         * tree-pass.h (make_pass_gimple_isel): New.
15599         * tree-ssa-forwprop.c (pass_forwprop::execute): Prevent
15600         propagation of the first argument of a VEC_COND_EXPR.
15601         * tree-ssa-reassoc.c (ovce_extract_ops): Support SSA_NAME as
15602         first argument of a VEC_COND_EXPR.
15603         (optimize_vec_cond_expr): Likewise.
15604         * tree-vect-generic.c (expand_vector_divmod): Make SSA_NAME
15605         for a first argument of created VEC_COND_EXPR.
15606         (expand_vector_condition): Fix coding style.
15607         * tree-vect-stmts.c (vectorizable_condition): Gimplify
15608         first argument.
15609         * gimple-isel.cc: New file.
15611 2020-06-17  Andrew Stubbs  <ams@codesourcery.com>
15613         * config/gcn/gcn-hsa.h (TEXT_SECTION_ASM_OP): Use ".text".
15614         (BSS_SECTION_ASM_OP): Use ".bss".
15615         (ASM_SPEC): Remove "-mattr=-code-object-v3".
15616         (LINK_SPEC): Add "--export-dynamic".
15617         * config/gcn/gcn-opts.h (processor_type): Replace PROCESSOR_VEGA with
15618         PROCESSOR_VEGA10 and PROCESSOR_VEGA20.
15619         * config/gcn/gcn-run.c (HSA_RUNTIME_LIB): Use ".so.1" variant.
15620         (load_image): Remove obsolete relocation handling.
15621         Add ".kd" suffix to the symbol names.
15622         * config/gcn/gcn.c (MAX_NORMAL_SGPR_COUNT): Set to 62.
15623         (gcn_option_override): Update gcn_isa test.
15624         (gcn_kernel_arg_types): Update all the assembler directives.
15625         Remove the obsolete options.
15626         (gcn_conditional_register_usage): Update MAX_NORMAL_SGPR_COUNT usage.
15627         (gcn_omp_device_kind_arch_isa): Handle PROCESSOR_VEGA10 and
15628         PROCESSOR_VEGA20.
15629         (output_file_start): Rework assembler file header.
15630         (gcn_hsa_declare_function_name): Rework kernel metadata.
15631         * config/gcn/gcn.h (GCN_KERNEL_ARG_TYPES): Set to 16.
15632         * config/gcn/gcn.opt (PROCESSOR_VEGA): Remove enum.
15633         (PROCESSOR_VEGA10): New enum value.
15634         (PROCESSOR_VEGA20): New enum value.
15636 2020-06-17  Martin Liska  <mliska@suse.cz>
15638         * gcov-dump.c (print_version): Collapse lisence header to 2 lines
15639         in --version.
15640         * gcov-tool.c (print_version): Likewise.
15641         * gcov.c (print_version): Likewise.
15643 2020-06-17  liuhongt  <hongtao.liu@intel.com>
15645         PR target/95524
15646         * config/i386/i386-expand.c
15647         (ix86_expand_vec_shift_qihi_constant): New function.
15648         * config/i386/i386-protos.h
15649         (ix86_expand_vec_shift_qihi_constant): Declare.
15650         * config/i386/sse.md (<shift_insn><mode>3): Optimize shift
15651         V*QImode by constant.
15653 2020-06-16  Aldy Hernandez  <aldyh@redhat.com>
15655         PR tree-optimization/95649
15656         * tree-ssa-propagate.c (propagate_into_phi_args): Do not propagate unless
15657         value is a constant.
15659 2020-06-16  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
15661         * config.in: Regenerate.
15662         * config/s390/s390.c (print_operand): Emit vector alignment hints
15663         for target z13, if AS accepts them.  For other targets the logic
15664         stays the same.
15665         * config/s390/s390.h (TARGET_VECTOR_LOADSTORE_ALIGNMENT_HINTS): Define
15666         macro.
15667         * configure: Regenerate.
15668         * configure.ac: Check HAVE_AS_VECTOR_LOADSTORE_ALIGNMENT_HINTS_ON_Z13.
15670 2020-06-16  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
15672         * config/arm/arm_mve.h (__arm_vaddq_m_n_s8): Correct the intrinsic
15673         arguments.
15674         (__arm_vaddq_m_n_s32): Likewise.
15675         (__arm_vaddq_m_n_s16): Likewise.
15676         (__arm_vaddq_m_n_u8): Likewise.
15677         (__arm_vaddq_m_n_u32): Likewise.
15678         (__arm_vaddq_m_n_u16): Likewise.
15679         (__arm_vaddq_m): Modify polymorphic variant.
15681 2020-06-16  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
15683         * config/arm/mve.md (mve_uqrshll_sat<supf>_di): Correct the predicate
15684         and constraint of all the operands.
15685         (mve_sqrshrl_sat<supf>_di): Likewise.
15686         (mve_uqrshl_si): Likewise.
15687         (mve_sqrshr_si): Likewise.
15688         (mve_uqshll_di): Likewise.
15689         (mve_urshrl_di): Likewise.
15690         (mve_uqshl_si): Likewise.
15691         (mve_urshr_si): Likewise.
15692         (mve_sqshl_si): Likewise.
15693         (mve_srshr_si): Likewise.
15694         (mve_srshrl_di): Likewise.
15695         (mve_sqshll_di): Likewise.
15696         * config/arm/predicates.md (arm_low_register_operand): Define.
15698 2020-06-16  Jakub Jelinek  <jakub@redhat.com>
15700         * tree.h (OMP_FOR_NON_RECTANGULAR): Define.
15701         * gimplify.c (gimplify_omp_for): Diagnose schedule, ordered
15702         or dist_schedule clause on non-rectangular loops.  Handle
15703         gimplification of non-rectangular lb/b expressions.  When changing
15704         iteration variable, adjust also non-rectangular lb/b expressions
15705         referencing that.
15706         * omp-general.h (struct omp_for_data_loop): Add m1, m2 and outer
15707         members.
15708         (struct omp_for_data): Add non_rect member.
15709         * omp-general.c (omp_extract_for_data): Handle non-rectangular
15710         loops.  Fill in non_rect, m1, m2 and outer.
15711         * omp-low.c (lower_omp_for): Handle non-rectangular lb/b expressions.
15712         * omp-expand.c (expand_omp_for): Emit sorry_at for unsupported
15713         non-rectangular loop cases and assert for cases that can't be
15714         non-rectangular.
15715         * tree-pretty-print.c (dump_mem_ref): Formatting fix.
15716         (dump_omp_loop_non_rect_expr): New function.
15717         (dump_generic_node): Handle non-rectangular OpenMP loops.
15718         * tree-pretty-print.h (dump_omp_loop_non_rect_expr): Declare.
15719         * gimple-pretty-print.c (dump_gimple_omp_for): Handle non-rectangular
15720         OpenMP loops.
15722 2020-06-16  Richard Biener  <rguenther@suse.de>
15724         PR middle-end/95690
15725         * varasm.c (build_constant_desc): Remove set_mem_attributes call.
15727 2020-06-16  Kito Cheng  <kito.cheng@sifive.com>
15729         PR target/95683
15730         * config/riscv/riscv.c (riscv_gpr_save_operation_p): Remove
15731         assertion and turn it into a early exit check.
15733 2020-06-15  Eric Botcazou  <ebotcazou@adacore.com>
15735         * gimplify.c (gimplify_init_constructor) <AGGREGATE_TYPE>: Declare
15736         new ENSURE_SINGLE_ACCESS constant and move variables down.  If it is
15737         true and all elements are zero, then always clear.  Return GS_ERROR
15738         if a temporary would be created for it and NOTIFY_TEMP_CREATION set.
15739         (gimplify_modify_expr_rhs) <VAR_DECL>: If the target is volatile but
15740         the type is aggregate non-addressable, ask gimplify_init_constructor
15741         whether it can generate a single access to the target.
15743 2020-06-15  Eric Botcazou  <ebotcazou@adacore.com>
15745         * tree-sra.c (propagate_subaccesses_from_rhs): When a non-scalar
15746         access on the LHS is replaced with a scalar access, propagate the
15747         TYPE_REVERSE_STORAGE_ORDER flag of the type of the original access.
15749 2020-06-15  Max Filippov  <jcmvbkbc@gmail.com>
15751         * config/xtensa/xtensa.c (TARGET_HAVE_TLS): Remove
15752         TARGET_THREADPTR reference.
15753         (xtensa_tls_symbol_p, xtensa_tls_referenced_p): Use
15754         targetm.have_tls instead of TARGET_HAVE_TLS.
15755         (xtensa_option_override): Set targetm.have_tls to false in
15756         configurations without THREADPTR.
15758 2020-06-15  Max Filippov  <jcmvbkbc@gmail.com>
15760         * config/xtensa/elf.h (ASM_SPEC, LINK_SPEC): Pass ABI switch to
15761         assembler/linker.
15762         * config/xtensa/linux.h (ASM_SPEC, LINK_SPEC): Ditto.
15763         * config/xtensa/uclinux.h (ASM_SPEC, LINK_SPEC): Ditto.
15764         * config/xtensa/xtensa.c (xtensa_option_override): Initialize
15765         xtensa_windowed_abi if needed.
15766         * config/xtensa/xtensa.h (TARGET_WINDOWED_ABI_DEFAULT): New
15767         macro.
15768         (TARGET_WINDOWED_ABI): Redefine to xtensa_windowed_abi.
15769         * config/xtensa/xtensa.opt (xtensa_windowed_abi): New target
15770         option variable.
15771         (mabi=call0, mabi=windowed): New options.
15772         * doc/invoke.texi: Document new -mabi= Xtensa-specific options.
15774 2020-06-15  Max Filippov  <jcmvbkbc@gmail.com>
15776         * config/xtensa/xtensa.c (xtensa_can_eliminate): New function.
15777         (TARGET_CAN_ELIMINATE): New macro.
15778         * config/xtensa/xtensa.h
15779         (XTENSA_WINDOWED_HARD_FRAME_POINTER_REGNUM)
15780         (XTENSA_CALL0_HARD_FRAME_POINTER_REGNUM): New macros.
15781         (HARD_FRAME_POINTER_REGNUM): Define using
15782         XTENSA_*_HARD_FRAME_POINTER_REGNUM.
15783         (ELIMINABLE_REGS): Replace lines with HARD_FRAME_POINTER_REGNUM
15784         by lines with XTENSA_WINDOWED_HARD_FRAME_POINTER_REGNUM and
15785         XTENSA_CALL0_HARD_FRAME_POINTER_REGNUM.
15787 2020-06-15  Felix Yang  <felix.yang@huawei.com>
15789         * tree-vect-data-refs.c (vect_verify_datarefs_alignment): Rename
15790         parameter to loop_vinfo and update uses.  Use LOOP_VINFO_DATAREFS
15791         when possible.
15792         (vect_analyze_data_refs_alignment): Likewise, and use LOOP_VINFO_DDRS
15793         when possible.
15794         * tree-vect-loop.c (vect_dissolve_slp_only_groups): Use
15795         LOOP_VINFO_DATAREFS when possible.
15796         (update_epilogue_loop_vinfo): Likewise.
15798 2020-06-15  Kito Cheng  <kito.cheng@sifive.com>
15800         * config/riscv/riscv.c (riscv_gen_gpr_save_insn): Change type to
15801         unsigned for i.
15802         (riscv_gpr_save_operation_p): Change type to unsigned for i and
15803         len.
15805 2020-06-15   Hongtao Liu  <hongtao.liu@intel.com>
15807         PR target/95488
15808         * config/i386/i386-expand.c (ix86_expand_vecmul_qihi): New
15809         function.
15810         * config/i386/i386-protos.h (ix86_expand_vecmul_qihi): Declare.
15811         * config/i386/sse.md (mul<mode>3): Drop mask_name since
15812         there's no real simd int8 multiplication instruction with
15813         mask. Also optimize it under TARGET_AVX512BW.
15814         (mulv8qi3): New expander.
15816 2020-06-12  Marco Elver  <elver@google.com>
15818         * gimplify.c (gimplify_function_tree): Optimize and do not emit
15819         IFN_TSAN_FUNC_EXIT in a finally block if we do not need it.
15820         * params.opt: Add --param=tsan-instrument-func-entry-exit=.
15821         * tsan.c (instrument_memory_accesses): Make
15822         fentry_exit_instrument bool depend on new param.
15824 2020-06-12  Felix Yang  <felix.yang@huawei.com>
15826         PR tree-optimization/95570
15827         * tree-vect-data-refs.c (vect_relevant_for_alignment_p): New function.
15828         (vect_verify_datarefs_alignment): Call it to filter out data references
15829         in the loop whose alignment is irrelevant.
15830         (vect_get_peeling_costs_all_drs): Likewise.
15831         (vect_peeling_supportable): Likewise.
15832         (vect_enhance_data_refs_alignment): Likewise.
15834 2020-06-12  Richard Biener  <rguenther@suse.de>
15836         PR tree-optimization/95633
15837         * tree-vect-stmts.c (vectorizable_condition): Properly
15838         guard the vec_else_clause access with EXTRACT_LAST_REDUCTION.
15840 2020-06-12  Martin Liška  <mliska@suse.cz>
15842         * cgraphunit.c (process_symver_attribute): Wrap weakref keyword.
15843         * dbgcnt.c (dbg_cnt_set_limit_by_index): Do not print extra new
15844         line.
15845         * lto-wrapper.c (merge_and_complain): Wrap option names.
15847 2020-06-12  Kewen Lin  <linkw@gcc.gnu.org>
15849         * tree-vect-loop-manip.c (vect_set_loop_controls_directly): Rename
15850         LOOP_VINFO_MASK_COMPARE_TYPE to LOOP_VINFO_RGROUP_COMPARE_TYPE.  Rename
15851         LOOP_VINFO_MASK_IV_TYPE to LOOP_VINFO_RGROUP_IV_TYPE.
15852         (vect_set_loop_condition_masked): Renamed to ...
15853         (vect_set_loop_condition_partial_vectors): ... this.  Rename
15854         LOOP_VINFO_MASK_COMPARE_TYPE to LOOP_VINFO_RGROUP_COMPARE_TYPE.  Rename
15855         vect_iv_limit_for_full_masking to vect_iv_limit_for_partial_vectors.
15856         (vect_set_loop_condition_unmasked): Renamed to ...
15857         (vect_set_loop_condition_normal): ... this.
15858         (vect_set_loop_condition): Rename vect_set_loop_condition_unmasked to
15859         vect_set_loop_condition_normal.  Rename vect_set_loop_condition_masked
15860         to vect_set_loop_condition_partial_vectors.
15861         (vect_prepare_for_masked_peels): Rename LOOP_VINFO_MASK_COMPARE_TYPE
15862         to LOOP_VINFO_RGROUP_COMPARE_TYPE.
15863         * tree-vect-loop.c (vect_known_niters_smaller_than_vf): New, factored
15864         out from ...
15865         (vect_analyze_loop_costing): ... this.
15866         (_loop_vec_info::_loop_vec_info): Rename mask_compare_type to
15867         compare_type.
15868         (vect_min_prec_for_max_niters): New, factored out from ...
15869         (vect_verify_full_masking): ... this.  Rename
15870         vect_iv_limit_for_full_masking to vect_iv_limit_for_partial_vectors.
15871         Rename LOOP_VINFO_MASK_COMPARE_TYPE to LOOP_VINFO_RGROUP_COMPARE_TYPE.
15872         Rename LOOP_VINFO_MASK_IV_TYPE to LOOP_VINFO_RGROUP_IV_TYPE.
15873         (vectorizable_reduction): Update some dumpings with partial
15874         vectors instead of fully-masked.
15875         (vectorizable_live_operation): Likewise.
15876         (vect_iv_limit_for_full_masking): Renamed to ...
15877         (vect_iv_limit_for_partial_vectors): ... this.
15878         * tree-vect-stmts.c (check_load_store_masking): Renamed to ...
15879         (check_load_store_for_partial_vectors): ... this.  Update some
15880         dumpings with partial vectors instead of fully-masked.
15881         (vectorizable_store): Rename check_load_store_masking to
15882         check_load_store_for_partial_vectors.
15883         (vectorizable_load): Likewise.
15884         * tree-vectorizer.h (LOOP_VINFO_MASK_COMPARE_TYPE): Renamed to ...
15885         (LOOP_VINFO_RGROUP_COMPARE_TYPE): ... this.
15886         (LOOP_VINFO_MASK_IV_TYPE): Renamed to ...
15887         (LOOP_VINFO_RGROUP_IV_TYPE): ... this.
15888         (vect_iv_limit_for_full_masking): Renamed to ...
15889         (vect_iv_limit_for_partial_vectors): this.
15890         (_loop_vec_info): Rename mask_compare_type to rgroup_compare_type.
15891         Rename iv_type to rgroup_iv_type.
15893 2020-06-12  Richard Sandiford  <richard.sandiford@arm.com>
15895         * recog.h (insn_gen_fn::f0, insn_gen_fn::f1, insn_gen_fn::f2)
15896         (insn_gen_fn::f3, insn_gen_fn::f4, insn_gen_fn::f5, insn_gen_fn::f6)
15897         (insn_gen_fn::f7, insn_gen_fn::f8, insn_gen_fn::f9, insn_gen_fn::f10)
15898         (insn_gen_fn::f11, insn_gen_fn::f12, insn_gen_fn::f13)
15899         (insn_gen_fn::f14, insn_gen_fn::f15, insn_gen_fn::f16): Delete.
15900         (insn_gen_fn::operator()): Replace overloaded definitions with
15901         a parameter-pack version.
15903 2020-06-12  H.J. Lu  <hjl.tools@gmail.com>
15905         PR target/93492
15906         * config/i386/i386-features.c (rest_of_insert_endbranch):
15907         Renamed to ...
15908         (rest_of_insert_endbr_and_patchable_area): Change return type
15909         to void. Add need_endbr and patchable_area_size arguments.
15910         Don't call timevar_push nor timevar_pop.  Replace
15911         endbr_queued_at_entrance with insn_queued_at_entrance.  Insert
15912         UNSPECV_PATCHABLE_AREA for patchable area.
15913         (pass_data_insert_endbranch): Renamed to ...
15914         (pass_data_insert_endbr_and_patchable_area): This.  Change
15915         pass name to endbr_and_patchable_area.
15916         (pass_insert_endbranch): Renamed to ...
15917         (pass_insert_endbr_and_patchable_area): This.  Add need_endbr
15918         and patchable_area_size;.
15919         (pass_insert_endbr_and_patchable_area::gate): Set and check
15920         need_endbr and patchable_area_size.
15921         (pass_insert_endbr_and_patchable_area::execute): Call
15922         timevar_push and timevar_pop.  Pass need_endbr and
15923         patchable_area_size to rest_of_insert_endbr_and_patchable_area.
15924         (make_pass_insert_endbranch): Renamed to ...
15925         (make_pass_insert_endbr_and_patchable_area): This.
15926         * config/i386/i386-passes.def: Replace pass_insert_endbranch
15927         with pass_insert_endbr_and_patchable_area.
15928         * config/i386/i386-protos.h (ix86_output_patchable_area): New.
15929         (make_pass_insert_endbranch): Renamed to ...
15930         (make_pass_insert_endbr_and_patchable_area): This.
15931         * config/i386/i386.c (ix86_asm_output_function_label): Set
15932         function_label_emitted to true.
15933         (ix86_print_patchable_function_entry): New function.
15934         (ix86_output_patchable_area): Likewise.
15935         (x86_function_profiler): Replace endbr_queued_at_entrance with
15936         insn_queued_at_entrance.  Generate ENDBR only for TYPE_ENDBR.
15937         Call ix86_output_patchable_area to generate patchable area if
15938         needed.
15939         (TARGET_ASM_PRINT_PATCHABLE_FUNCTION_ENTRY): New.
15940         * config/i386/i386.h (queued_insn_type): New.
15941         (machine_function): Add function_label_emitted.  Replace
15942         endbr_queued_at_entrance with insn_queued_at_entrance.
15943         * config/i386/i386.md (UNSPECV_PATCHABLE_AREA): New.
15944         (patchable_area): New.
15946 2020-06-11  Martin Liska  <mliska@suse.cz>
15948         * config/rs6000/rs6000.c (rs6000_density_test): Fix GNU coding
15949         style.
15951 2020-06-11  Martin Liska  <mliska@suse.cz>
15953         PR target/95627
15954         * config/rs6000/rs6000.c (rs6000_density_test): Skip debug
15955         statements.
15957 2020-06-11  Martin Liska  <mliska@suse.cz>
15958             Jakub Jelinek  <jakub@redhat.com>
15960         PR sanitizer/95634
15961         * asan.c (asan_emit_stack_protection): Fix emission for ilp32
15962         by using Pmode instead of ptr_mode.
15964 2020-06-11  Kewen Lin  <linkw@gcc.gnu.org>
15966         * tree-vect-loop-manip.c (vect_set_loop_mask): Renamed to ...
15967         (vect_set_loop_control): ... this.
15968         (vect_maybe_permute_loop_masks): Rename rgroup_masks related things.
15969         (vect_set_loop_masks_directly): Renamed to ...
15970         (vect_set_loop_controls_directly): ... this.  Also rename some
15971         variables with ctrl instead of mask.  Rename vect_set_loop_mask to
15972         vect_set_loop_control.
15973         (vect_set_loop_condition_masked): Rename rgroup_masks related things.
15974         Also rename some variables with ctrl instead of mask.
15975         * tree-vect-loop.c (release_vec_loop_masks): Renamed to ...
15976         (release_vec_loop_controls): ... this.  Rename rgroup_masks related
15977         things.
15978         (_loop_vec_info::~_loop_vec_info): Rename release_vec_loop_masks to
15979         release_vec_loop_controls.
15980         (can_produce_all_loop_masks_p): Rename rgroup_masks related things.
15981         (vect_get_max_nscalars_per_iter): Likewise.
15982         (vect_estimate_min_profitable_iters): Likewise.
15983         (vect_record_loop_mask): Likewise.
15984         (vect_get_loop_mask): Likewise.
15985         * tree-vectorizer.h (struct rgroup_masks): Renamed to ...
15986         (struct rgroup_controls): ... this.  Also rename mask_type
15987         to type and rename masks to controls.
15989 2020-06-11  Kewen Lin  <linkw@gcc.gnu.org>
15991         * tree-vect-loop-manip.c (vect_set_loop_condition): Rename
15992         LOOP_VINFO_FULLY_MASKED_P to LOOP_VINFO_USING_PARTIAL_VECTORS_P.
15993         (vect_gen_vector_loop_niters): Likewise.
15994         (vect_do_peeling): Likewise.
15995         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Rename
15996         fully_masked_p to using_partial_vectors_p.
15997         (vect_analyze_loop_costing): Rename LOOP_VINFO_FULLY_MASKED_P to
15998         LOOP_VINFO_USING_PARTIAL_VECTORS_P.
15999         (determine_peel_for_niter): Likewise.
16000         (vect_estimate_min_profitable_iters): Likewise.
16001         (vect_transform_loop): Likewise.
16002         * tree-vectorizer.h (LOOP_VINFO_FULLY_MASKED_P): Updated.
16003         (LOOP_VINFO_USING_PARTIAL_VECTORS_P): New macro.
16005 2020-06-11  Kewen Lin  <linkw@gcc.gnu.org>
16007         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Rename
16008         can_fully_mask_p to can_use_partial_vectors_p.
16009         (vect_analyze_loop_2): Rename LOOP_VINFO_CAN_FULLY_MASK_P to
16010         LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P.  Rename saved_can_fully_mask_p
16011         to saved_can_use_partial_vectors_p.
16012         (vectorizable_reduction): Rename LOOP_VINFO_CAN_FULLY_MASK_P to
16013         LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P.
16014         (vectorizable_live_operation): Likewise.
16015         * tree-vect-stmts.c (permute_vec_elements): Likewise.
16016         (check_load_store_masking): Likewise.
16017         (vectorizable_operation): Likewise.
16018         (vectorizable_store): Likewise.
16019         (vectorizable_load): Likewise.
16020         (vectorizable_condition): Likewise.
16021         * tree-vectorizer.h (LOOP_VINFO_CAN_FULLY_MASK_P): Renamed to ...
16022         (LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P): ... this.
16023         (_loop_vec_info): Rename can_fully_mask_p to can_use_partial_vectors_p.
16025 2020-06-11  Martin Liska  <mliska@suse.cz>
16027         * optc-save-gen.awk: Quote error string.
16029 2020-06-11  Alexandre Oliva  <oliva@adacore.com>
16031         * print-rtl.c (print_mem_expr): Enable TDF_SLIM in dump_flags.
16033 2020-06-11  Kito Cheng  <kito.cheng@sifive.com>
16035         * config/riscv/riscv-protos.h (riscv_output_gpr_save): Remove.
16036         * config/riscv/riscv-sr.c (riscv_sr_match_prologue): Update
16037         value.
16038         * config/riscv/riscv.c (riscv_output_gpr_save): Remove.
16039         * config/riscv/riscv.md (gpr_save): Update output asm pattern.
16041 2020-06-11  Kito Cheng  <kito.cheng@sifive.com>
16043         * config/riscv/predicates.md (gpr_save_operation): New.
16044         * config/riscv/riscv-protos.h (riscv_gen_gpr_save_insn): New.
16045         (riscv_gpr_save_operation_p): Ditto.
16046         * config/riscv/riscv-sr.c (riscv_remove_unneeded_save_restore_calls):
16047         Ignore USEs for gpr_save patter.
16048         * config/riscv/riscv.c (gpr_save_reg_order): New.
16049         (riscv_expand_prologue): Use riscv_gen_gpr_save_insn to gen gpr_save.
16050         (riscv_gen_gpr_save_insn): New.
16051         (riscv_gpr_save_operation_p): Ditto.
16052         * config/riscv/riscv.md (S3_REGNUM): New.
16053         (S4_REGNUM): Ditto.
16054         (S5_REGNUM): Ditto.
16055         (S6_REGNUM): Ditto.
16056         (S7_REGNUM): Ditto.
16057         (S8_REGNUM): Ditto.
16058         (S9_REGNUM): Ditto.
16059         (S10_REGNUM): Ditto.
16060         (S11_REGNUM): Ditto.
16061         (gpr_save): Model USEs correctly.
16063 2020-06-10  Martin Sebor  <msebor@redhat.com>
16065         PR middle-end/95353
16066         PR middle-end/92939
16067         * builtins.c (inform_access): New function.
16068         (check_access): Call it.  Add argument.
16069         (addr_decl_size): Remove.
16070         (get_range): New function.
16071         (compute_objsize): New overload.  Only use compute_builtin_object_size
16072         with raw memory function.
16073         (check_memop_access): Pass new argument to compute_objsize and
16074         check_access.
16075         (expand_builtin_memchr, expand_builtin_strcat): Same.
16076         (expand_builtin_strcpy, expand_builtin_stpcpy_1): Same.
16077         (expand_builtin_stpncpy, check_strncat_sizes): Same.
16078         (expand_builtin_strncat, expand_builtin_strncpy): Same.
16079         (expand_builtin_memcmp): Same.
16080         * builtins.h (check_nul_terminated_array): Declare extern.
16081         (check_access): Add argument.
16082         (struct access_ref, struct access_data): New structs.
16083         * gimple-ssa-warn-restrict.c (clamp_offset): New helper.
16084         (builtin_access::overlap): Call it.
16085         * tree-object-size.c (decl_init_size): Declare extern.
16086         (addr_object_size): Correct offset computation.
16087         * tree-object-size.h (decl_init_size): Declare.
16088         * tree-ssa-strlen.c (handle_integral_assign): Remove a call
16089         to maybe_warn_overflow when assigning to an SSA_NAME.
16091 2020-06-10  Richard Biener  <rguenther@suse.de>
16093         * tree-vect-loop.c (vect_determine_vectorization_factor):
16094         Skip debug stmts.
16095         (_loop_vec_info::_loop_vec_info): Likewise.
16096         (vect_update_vf_for_slp): Likewise.
16097         (vect_analyze_loop_operations): Likewise.
16098         (update_epilogue_loop_vinfo): Likewise.
16099         * tree-vect-patterns.c (vect_determine_precisions): Likewise.
16100         (vect_pattern_recog): Likewise.
16101         * tree-vect-slp.c (vect_detect_hybrid_slp): Likewise.
16102         (_bb_vec_info::_bb_vec_info): Likewise.
16103         * tree-vect-stmts.c (vect_mark_stmts_to_be_vectorized):
16104         Likewise.
16106 2020-06-10  Richard Biener  <rguenther@suse.de>
16108         PR tree-optimization/95576
16109         * tree-vect-slp.c (vect_slp_bb): Skip leading debug stmts.
16111 2020-06-10  Haijian Zhang  <z.zhanghaijian@huawei.com>
16113         PR target/95523
16114         * config/aarch64/aarch64-sve-builtins.h
16115         (sve_switcher::m_old_maximum_field_alignment): New member.
16116         * config/aarch64/aarch64-sve-builtins.cc
16117         (sve_switcher::sve_switcher): Save maximum_field_alignment in
16118         m_old_maximum_field_alignment and clear maximum_field_alignment.
16119         (sve_switcher::~sve_switcher): Restore maximum_field_alignment.
16121 2020-06-10  Richard Biener  <rguenther@suse.de>
16123         * tree-vectorizer.h (_slp_tree::vec_stmts): Make it a vector
16124         of gimple * stmts.
16125         (_stmt_vec_info::vec_stmts): Likewise.
16126         (vec_info::stmt_vec_info_ro): New flag.
16127         (vect_finish_replace_stmt): Adjust declaration.
16128         (vect_finish_stmt_generation): Likewise.
16129         (vectorizable_induction): Likewise.
16130         (vect_transform_reduction): Likewise.
16131         (vectorizable_lc_phi): Likewise.
16132         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Do not
16133         allocate stmt infos for increments.
16134         (vect_record_grouped_load_vectors): Adjust.
16135         * tree-vect-loop.c (vect_create_epilog_for_reduction): Likewise.
16136         (vectorize_fold_left_reduction): Likewise.
16137         (vect_transform_reduction): Likewise.
16138         (vect_transform_cycle_phi): Likewise.
16139         (vectorizable_lc_phi): Likewise.
16140         (vectorizable_induction): Likewise.
16141         (vectorizable_live_operation): Likewise.
16142         (vect_transform_loop): Likewise.
16143         * tree-vect-patterns.c (vect_pattern_recog): Set stmt_vec_info_ro.
16144         * tree-vect-slp.c (vect_get_slp_vect_def): Adjust.
16145         (vect_get_slp_defs): Likewise.
16146         (vect_transform_slp_perm_load): Likewise.
16147         (vect_schedule_slp_instance): Likewise.
16148         (vectorize_slp_instance_root_stmt): Likewise.
16149         * tree-vect-stmts.c (vect_get_vec_defs_for_operand): Likewise.
16150         (vect_finish_stmt_generation_1): Do not allocate a stmt info.
16151         (vect_finish_replace_stmt): Do not return anything.
16152         (vect_finish_stmt_generation): Likewise.
16153         (vect_build_gather_load_calls): Adjust.
16154         (vectorizable_bswap): Likewise.
16155         (vectorizable_call): Likewise.
16156         (vectorizable_simd_clone_call): Likewise.
16157         (vect_create_vectorized_demotion_stmts): Likewise.
16158         (vectorizable_conversion): Likewise.
16159         (vectorizable_assignment): Likewise.
16160         (vectorizable_shift): Likewise.
16161         (vectorizable_operation): Likewise.
16162         (vectorizable_scan_store): Likewise.
16163         (vectorizable_store): Likewise.
16164         (vectorizable_load): Likewise.
16165         (vectorizable_condition): Likewise.
16166         (vectorizable_comparison): Likewise.
16167         (vect_transform_stmt): Likewise.
16168         * tree-vectorizer.c (vec_info::vec_info): Initialize
16169         stmt_vec_info_ro.
16170         (vec_info::replace_stmt): Copy over stmt UID rather than
16171         unsetting/setting a stmt info allocating a new UID.
16172         (vec_info::set_vinfo_for_stmt): Assert !stmt_vec_info_ro.
16174 2020-06-10  Aldy Hernandez  <aldyh@redhat.com>
16176         * gimple-loop-versioning.cc (loop_versioning::name_prop::get_value):
16177         Add stmt parameter.
16178         * gimple-ssa-evrp.c (class evrp_folder): New.
16179         (class evrp_dom_walker): Remove.
16180         (execute_early_vrp): Use evrp_folder instead of evrp_dom_walker.
16181         * tree-ssa-ccp.c (ccp_folder::get_value): Add stmt parameter.
16182         * tree-ssa-copy.c (copy_folder::get_value): Same.
16183         * tree-ssa-propagate.c (substitute_and_fold_engine::replace_uses_in):
16184         Pass stmt to get_value.
16185         (substitute_and_fold_engine::replace_phi_args_in): Same.
16186         (substitute_and_fold_dom_walker::after_dom_children): Call
16187         post_fold_bb.
16188         (substitute_and_fold_dom_walker::foreach_new_stmt_in_bb): New.
16189         (substitute_and_fold_dom_walker::propagate_into_phi_args): New.
16190         (substitute_and_fold_dom_walker::before_dom_children): Adjust to
16191         call virtual functions for folding, pre_folding, and post folding.
16192         Call get_value with PHI.  Tweak dump.
16193         * tree-ssa-propagate.h (class substitute_and_fold_engine):
16194         New argument to get_value.
16195         New virtual function pre_fold_bb.
16196         New virtual function post_fold_bb.
16197         New virtual function pre_fold_stmt.
16198         New virtual function post_new_stmt.
16199         New function propagate_into_phi_args.
16200         * tree-vrp.c (vrp_folder::get_value): Add stmt argument.
16201         * vr-values.c (vr_values::extract_range_from_stmt): Adjust dump
16202         output.
16203         (vr_values::fold_cond): New.
16204         (vr_values::simplify_cond_using_ranges_1): Call fold_cond.
16205         * vr-values.h (class vr_values): Add
16206         simplify_cond_using_ranges_when_edge_is_known.
16208 2020-06-10  Martin Liska  <mliska@suse.cz>
16210         PR sanitizer/94910
16211         * asan.c (asan_emit_stack_protection): Emit
16212         also **SavedFlagPtr(FakeStack, class_id) = 0 in order to release
16213         a stack frame.
16215 2020-06-10  Tamar Christina  <tamar.christina@arm.com>
16217         * config/aarch64/aarch64.c (aarch64_rtx_mult_cost): Adjust costs for mul.
16219 2020-06-10  Richard Biener  <rguenther@suse.de>
16221         * tree-vect-data-refs.c (vect_vfa_access_size): Adjust.
16222         (vect_record_grouped_load_vectors): Likewise.
16223         * tree-vect-loop.c (vect_create_epilog_for_reduction): Likewise.
16224         (vectorize_fold_left_reduction): Likewise.
16225         (vect_transform_reduction): Likewise.
16226         (vect_transform_cycle_phi): Likewise.
16227         (vectorizable_lc_phi): Likewise.
16228         (vectorizable_induction): Likewise.
16229         (vectorizable_live_operation): Likewise.
16230         (vect_transform_loop): Likewise.
16231         * tree-vect-slp.c (vect_get_slp_defs): New function, split out
16232         from overload.
16233         * tree-vect-stmts.c (vect_get_vec_def_for_operand_1): Remove.
16234         (vect_get_vec_def_for_operand): Likewise.
16235         (vect_get_vec_def_for_stmt_copy): Likewise.
16236         (vect_get_vec_defs_for_stmt_copy): Likewise.
16237         (vect_get_vec_defs_for_operand): New function.
16238         (vect_get_vec_defs): Likewise.
16239         (vect_build_gather_load_calls): Adjust.
16240         (vect_get_gather_scatter_ops): Likewise.
16241         (vectorizable_bswap): Likewise.
16242         (vectorizable_call): Likewise.
16243         (vectorizable_simd_clone_call): Likewise.
16244         (vect_get_loop_based_defs): Remove.
16245         (vect_create_vectorized_demotion_stmts): Adjust.
16246         (vectorizable_conversion): Likewise.
16247         (vectorizable_assignment): Likewise.
16248         (vectorizable_shift): Likewise.
16249         (vectorizable_operation): Likewise.
16250         (vectorizable_scan_store): Likewise.
16251         (vectorizable_store): Likewise.
16252         (vectorizable_load): Likewise.
16253         (vectorizable_condition): Likewise.
16254         (vectorizable_comparison): Likewise.
16255         (vect_transform_stmt): Adjust and remove no longer applicable
16256         sanity checks.
16257         * tree-vectorizer.c (vec_info::new_stmt_vec_info): Initialize
16258         STMT_VINFO_VEC_STMTS.
16259         (vec_info::free_stmt_vec_info): Relase it.
16260         * tree-vectorizer.h (_stmt_vec_info::vectorized_stmt): Remove.
16261         (_stmt_vec_info::vec_stmts): Add.
16262         (STMT_VINFO_VEC_STMT): Remove.
16263         (STMT_VINFO_VEC_STMTS): New.
16264         (vect_get_vec_def_for_operand_1): Remove.
16265         (vect_get_vec_def_for_operand): Likewise.
16266         (vect_get_vec_defs_for_stmt_copy): Likewise.
16267         (vect_get_vec_def_for_stmt_copy): Likewise.
16268         (vect_get_vec_defs): New overloads.
16269         (vect_get_vec_defs_for_operand): New.
16270         (vect_get_slp_defs): Declare.
16272 2020-06-10  Qian Chao  <qianchao9@huawei.com>
16274         PR tree-optimization/95569
16275         * trans-mem.c (expand_assign_tm): Ensure that rtmp is marked TREE_ADDRESSABLE.
16277 2020-06-10  Martin Liska  <mliska@suse.cz>
16279         PR tree-optimization/92860
16280         * optc-save-gen.awk: Generate new function cl_optimization_compare.
16281         * opth-gen.awk: Generate declaration of the function.
16283 2020-06-09  Michael Meissner  <meissner@linux.ibm.com>
16285         * config/rs6000/ppc-auxv.h (PPC_PLATFORM_FUTURE): Allocate
16286         'future' PowerPC platform.
16287         (PPC_FEATURE2_ARCH_3_1): New HWCAP2 bit for ISA 3.1.
16288         (PPC_FEATURE2_MMA): New HWCAP2 bit for MMA.
16289         * config/rs6000/rs6000-call.c (cpu_supports_info): Add ISA 3.1 and
16290         MMA HWCAP2 bits.
16291         * config/rs6000/rs6000.c (CLONE_ISA_3_1): New clone support.
16292         (rs6000_clone_map): Add 'future' system target_clones support.
16294 2020-06-09  Michael Kuhn  <gcc@ikkoku.de>
16296         * Makefile.in (ZSTD_INC): Define.
16297         (ZSTD_LIB): Include ZSTD_LDFLAGS.
16298         (CFLAGS-lto-compress.o): Add ZSTD_INC.
16299         * configure.ac (ZSTD_CPPFLAGS, ZSTD_LDFLAGS): New variables for
16300         AC_SUBST.
16301         * configure: Rebuilt.
16303 2020-06-09  Jason Merrill  <jason@redhat.com>
16305         PR c++/95552
16306         * tree.c (walk_tree_1): Call func on the TYPE_DECL of a DECL_EXPR.
16308 2020-06-09  Marco Elver  <elver@google.com>
16310         * params.opt: Define --param=tsan-distinguish-volatile=[0,1].
16311         * sanitizer.def (BUILT_IN_TSAN_VOLATILE_READ1): Define new
16312         builtin for volatile instrumentation of reads/writes.
16313         (BUILT_IN_TSAN_VOLATILE_READ2): Likewise.
16314         (BUILT_IN_TSAN_VOLATILE_READ4): Likewise.
16315         (BUILT_IN_TSAN_VOLATILE_READ8): Likewise.
16316         (BUILT_IN_TSAN_VOLATILE_READ16): Likewise.
16317         (BUILT_IN_TSAN_VOLATILE_WRITE1): Likewise.
16318         (BUILT_IN_TSAN_VOLATILE_WRITE2): Likewise.
16319         (BUILT_IN_TSAN_VOLATILE_WRITE4): Likewise.
16320         (BUILT_IN_TSAN_VOLATILE_WRITE8): Likewise.
16321         (BUILT_IN_TSAN_VOLATILE_WRITE16): Likewise.
16322         * tsan.c (get_memory_access_decl): Argument if access is
16323         volatile. If param tsan-distinguish-volatile is non-zero, and
16324         access if volatile, return volatile instrumentation decl.
16325         (instrument_expr): Check if access is volatile.
16327 2020-06-09  Richard Biener  <rguenther@suse.de>
16329         * tree-vect-loop.c (vectorizable_induction): Remove dead code.
16331 2020-06-09  Tobias Burnus  <tobias@codesourcery.com>
16333         * omp-offload.c (add_decls_addresses_to_decl_constructor,
16334         omp_finish_file): With in_lto_p, stream out all offload-table
16335         items even if the symtab_node does not exist.
16337 2020-06-09  Richard Biener  <rguenther@suse.de>
16339         * tree-vect-stmts.c (vect_transform_stmt): Remove dead code.
16341 2020-06-09  Martin Liska  <mliska@suse.cz>
16343         * gcov-dump.c (print_usage): Fix spacing for --raw option
16344         in --help.
16346 2020-06-09  Martin Liska  <mliska@suse.cz>
16348         * cif-code.def (ATTRIBUTE_MISMATCH): Rename to...
16349         (SANITIZE_ATTRIBUTE_MISMATCH): ...this.
16350         * ipa-inline.c (sanitize_attrs_match_for_inline_p):
16351         Handle all sanitizer options.
16352         (can_inline_edge_p): Use renamed CIF_* enum value.
16354 2020-06-09  Joe Ramsay  <joe.ramsay@arm.com>
16356         * config/aarch64/aarch64-sve.md (<optab><mode>2): Add support for
16357         unpacked vectors.
16358         (@aarch64_pred_<optab><mode>): Add support for unpacked vectors.
16359         (@aarch64_bic<mode>): Enable unpacked BIC.
16360         (*bic<mode>3): Enable unpacked BIC.
16362 2020-06-09  Martin Liska  <mliska@suse.cz>
16364         PR gcov-profile/95365
16365         * doc/gcov.texi: Compile and link one example in 2 steps.
16367 2020-06-09  Jakub Jelinek  <jakub@redhat.com>
16369         PR tree-optimization/95527
16370         * match.pd (__builtin_ffs (X) cmp CST): New optimizations.
16372 2020-06-09  Michael Meissner  <meissner@linux.ibm.com>
16374         * config/rs6000/ppc-auxv.h (PPC_PLATFORM_FUTURE): Allocate
16375         'future' PowerPC platform.
16376         (PPC_FEATURE2_ARCH_3_1): New HWCAP2 bit for ISA 3.1.
16377         (PPC_FEATURE2_MMA): New HWCAP2 bit for MMA.
16378         * config/rs6000/rs6000-call.c (cpu_supports_info): Add ISA 3.1 and
16379         MMA HWCAP2 bits.
16380         * config/rs6000/rs6000.c (CLONE_ISA_3_1): New clone support.
16381         (rs6000_clone_map): Add 'future' system target_clones support.
16383 2020-06-08  Tobias Burnus  <tobias@codesourcery.com>
16385         PR lto/94848
16386         PR middle-end/95551
16387         * omp-offload.c (add_decls_addresses_to_decl_constructor,
16388         omp_finish_file): Skip removed items.
16389         * lto-cgraph.c (output_offload_tables): Likewise; set force_output
16390         to this node for variables and functions.
16392 2020-06-08  Jason Merrill  <jason@redhat.com>
16394         * aclocal.m4: Remove ax_cxx_compile_stdcxx.m4.
16395         * configure.ac: Remove AX_CXX_COMPILE_STDCXX.
16396         * configure: Regenerate.
16398 2020-06-08  Martin Sebor  <msebor@redhat.com>
16400         * postreload.c (reload_cse_simplify_operands): Clear first array element
16401         before using it.  Assert a precondition.
16403 2020-06-08  Jakub Jelinek  <jakub@redhat.com>
16405         PR target/95528
16406         * tree-ssa-forwprop.c (simplify_vector_constructor): Don't use
16407         VEC_UNPACK*_EXPR or VEC_PACK_TRUNC_EXPR with scalar modes unless the
16408         type is vector boolean.
16410 2020-06-08  Tamar Christina  <tamar.christina@arm.com>
16412         * config/aarch64/aarch64.c (aarch64_layout_frame): Expand comments.
16414 2020-06-08  Christophe Lyon  <christophe.lyon@linaro.org>
16416         * config/arm/predicates.md (vfp_register_operand): Use VFP_HI_REGS
16417         instead of VFP_REGS.
16419 2020-06-08  Martin Liska  <mliska@suse.cz>
16421         * config/rs6000/vector.md: Replace FAIL with gcc_unreachable
16422         in all vcond* patterns.
16424 2020-06-08  Christophe Lyon  <christophe.lyon@linaro.org>
16426         * common/config/arm/arm-common.c (INCLUDE_ALGORITHM):
16427         Define. No longer include <algorithm>.
16429 2020-06-07  Roger Sayle  <roger@nextmovesoftware.com>
16431         * config/i386/i386.md (paritydi2, paritysi2): Expand reduction
16432         via shift and xor to an USPEC PARITY matching a parityhi2_cmp.
16433         (paritydi2_cmp, paritysi2_cmp): Delete these define_insn_and_split.
16434         (parityhi2, parityqi2): New expanders.
16435         (parityhi2_cmp): Implement set parity flag with xorb insn.
16436         (parityqi2_cmp): Implement set parity flag with testb insn.
16437         New peephole2s to use these insns (UNSPEC PARITY) when appropriate.
16439 2020-06-07  Jiufu Guo  <guojiufu@linux.ibm.com>
16441         PR target/95018
16442         * config/rs6000/rs6000.c (rs6000_option_override_internal):
16443         Override flag_cunroll_grow_size.
16445 2020-06-07  Jiufu Guo  <guojiufu@linux.ibm.com>
16447         * common.opt (flag_cunroll_grow_size): New flag.
16448         * toplev.c (process_options): Set flag_cunroll_grow_size.
16449         * tree-ssa-loop-ivcanon.c (pass_complete_unroll::execute):
16450         Use flag_cunroll_grow_size.
16452 2020-06-06  Jan Hubicka  <hubicka@ucw.cz>
16454         PR lto/95548
16455         * ipa-devirt.c (struct odr_enum_val): Turn values to wide_int.
16456         (ipa_odr_summary_write): Update streaming.
16457         (ipa_odr_read_section): Update streaming.
16459 2020-06-06  Alexandre Oliva  <oliva@adacore.com>
16461         PR driver/95456
16462         * gcc.c (do_spec_1): Don't call memcpy (_, NULL, 0).
16464 2020-06-05  Thomas Schwinge  <thomas@codesourcery.com>
16465             Julian Brown  <julian@codesourcery.com>
16467         * gimplify.c (gimplify_adjust_omp_clauses): Remove
16468         'GOMP_MAP_STRUCT' mapping from OpenACC 'exit data' directives.
16470 2020-06-05  Richard Biener  <rguenther@suse.de>
16472         PR tree-optimization/95539
16473         * tree-vect-data-refs.c
16474         (vect_slp_analyze_and_verify_instance_alignment): Use
16475         SLP_TREE_REPRESENTATIVE for the data-ref check.
16476         * tree-vect-stmts.c (vectorizable_load): Reset stmt_info
16477         back to the first scalar stmt rather than the
16478         SLP_TREE_REPRESENTATIVE to match previous behavior.
16480 2020-06-05  Felix Yang  <felix.yang@huawei.com>
16482         PR target/95254
16483         * expr.c (emit_move_insn): Check src and dest of the copy to see
16484         if one or both of them are subregs, try to remove the subregs when
16485         innermode and outermode are equal in size and the mode change involves
16486         an implicit round trip through memory.
16488 2020-06-05  Jakub Jelinek  <jakub@redhat.com>
16490         PR target/95535
16491         * config/i386/i386.md (*ctzsi2_zext, *clzsi2_lzcnt_zext): New
16492         define_insn_and_split patterns.
16493         (*ctzsi2_zext_falsedep, *clzsi2_lzcnt_zext_falsedep): New
16494         define_insn patterns.
16496 2020-06-05  Jonathan Wakely  <jwakely@redhat.com>
16498         * alloc-pool.h (object_allocator::remove_raw): New.
16499         * tree-ssa-math-opts.c (struct occurrence): Use NSMDI.
16500         (occurrence::occurrence): Add.
16501         (occurrence::~occurrence): Likewise.
16502         (occurrence::new): Likewise.
16503         (occurrence::delete): Likewise.
16504         (occ_new): Remove.
16505         (insert_bb): Use new occurence (...) instead of occ_new.
16506         (register_division_in): Likewise.
16507         (free_bb): Use delete occ instead of manually removing
16508         from the pool.
16510 2020-06-05  Richard Biener  <rguenther@suse.de>
16512         PR middle-end/95493
16513         * cfgexpand.c (expand_debug_expr): Avoid calling
16514         set_mem_attributes_minus_bitpos when we were expanding
16515         an SSA name.
16516         * emit-rtl.c (set_mem_attributes_minus_bitpos): Remove
16517         ARRAY_REF special-casing, add CONSTRUCTOR to the set of
16518         special-cases we do not want MEM_EXPRs for.  Assert
16519         we end up with reasonable MEM_EXPRs.
16521 2020-06-05  Lili Cui  <lili.cui@intel.com>
16523         PR target/95525
16524         * config/i386/i386.h (PTA_WAITPKG): Change bitmask value.
16526 2020-06-04  Martin Sebor  <msebor@redhat.com>
16528         PR middle-end/10138
16529         PR middle-end/95136
16530         * attribs.c (init_attr_rdwr_indices): Move function here.
16531         * attribs.h (rdwr_access_hash, rdwr_map): Define.
16532         (attr_access): Add 'none'.
16533         (init_attr_rdwr_indices): Declared function.
16534         * builtins.c (warn_for_access)): New function.
16535         (check_access): Call it.
16536         * builtins.h (checK-access): Add an optional argument.
16537         * calls.c (rdwr_access_hash, rdwr_map): Move to attribs.h.
16538         (init_attr_rdwr_indices): Declare extern.
16539         (append_attrname): Handle attr_access::none.
16540         (maybe_warn_rdwr_sizes): Same.
16541         (initialize_argument_information): Update comments.
16542         * doc/extend.texi (attribute access): Document 'none'.
16543         * tree-ssa-uninit.c (struct wlimits): New.
16544         (maybe_warn_operand): New function.
16545         (maybe_warn_pass_by_reference): Same.
16546         (warn_uninitialized_vars): Refactor code into maybe_warn_operand.
16547         Also call for function calls.
16548         (pass_late_warn_uninitialized::execute): Adjust comments.
16549         (execute_early_warn_uninitialized): Same.
16551 2020-06-04  Vladimir Makarov  <vmakarov@redhat.com>
16553         PR middle-end/95464
16554         * lra.c (lra_emit_move): Add processing STRICT_LOW_PART.
16555         * lra-constraints.c (match_reload): Use STRICT_LOW_PART in output
16556         reload if the original insn has it too.
16558 2020-06-04  Richard Biener  <rguenther@suse.de>
16560         * config/aarch64/aarch64.c (aarch64_gimplify_va_arg_expr):
16561         Ensure that tmp_ha is marked TREE_ADDRESSABLE.
16563 2020-06-04  Martin Jambor  <mjambor@suse.cz>
16565         PR ipa/95113
16566         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Move non-call
16567         exceptions check to...
16568         * tree-eh.c (stmt_unremovable_because_of_non_call_eh_p): ...this
16569         new function.
16570         * tree-eh.h (stmt_unremovable_because_of_non_call_eh_p): Declare it.
16571         * ipa-sra.c (isra_track_scalar_value_uses): Use it.  New parameter
16572         fun.
16574 2020-06-04  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
16576         PR target/94735
16577         * config/arm/predicates.md (mve_scatter_memory): Define to
16578         match (mem (reg)) for scatter store memory.
16579         * config/arm/mve.md (mve_vstrbq_scatter_offset_<supf><mode>): Modify
16580         define_insn to define_expand.
16581         (mve_vstrbq_scatter_offset_p_<supf><mode>): Likewise.
16582         (mve_vstrhq_scatter_offset_<supf><mode>): Likewise.
16583         (mve_vstrhq_scatter_shifted_offset_p_<supf><mode>): Likewise.
16584         (mve_vstrhq_scatter_shifted_offset_<supf><mode>): Likewise.
16585         (mve_vstrdq_scatter_offset_p_<supf>v2di): Likewise.
16586         (mve_vstrdq_scatter_offset_<supf>v2di): Likewise.
16587         (mve_vstrdq_scatter_shifted_offset_p_<supf>v2di): Likewise.
16588         (mve_vstrdq_scatter_shifted_offset_<supf>v2di): Likewise.
16589         (mve_vstrhq_scatter_offset_fv8hf): Likewise.
16590         (mve_vstrhq_scatter_offset_p_fv8hf): Likewise.
16591         (mve_vstrhq_scatter_shifted_offset_fv8hf): Likewise.
16592         (mve_vstrhq_scatter_shifted_offset_p_fv8hf): Likewise.
16593         (mve_vstrwq_scatter_offset_fv4sf): Likewise.
16594         (mve_vstrwq_scatter_offset_p_fv4sf): Likewise.
16595         (mve_vstrwq_scatter_offset_p_<supf>v4si): Likewise.
16596         (mve_vstrwq_scatter_offset_<supf>v4si): Likewise.
16597         (mve_vstrwq_scatter_shifted_offset_fv4sf): Likewise.
16598         (mve_vstrwq_scatter_shifted_offset_p_fv4sf): Likewise.
16599         (mve_vstrwq_scatter_shifted_offset_p_<supf>v4si): Likewise.
16600         (mve_vstrwq_scatter_shifted_offset_<supf>v4si): Likewise.
16601         (mve_vstrbq_scatter_offset_<supf><mode>_insn): Define insn for scatter
16602         stores.
16603         (mve_vstrbq_scatter_offset_p_<supf><mode>_insn): Likewise.
16604         (mve_vstrhq_scatter_offset_<supf><mode>_insn): Likewise.
16605         (mve_vstrhq_scatter_shifted_offset_p_<supf><mode>_insn): Likewise.
16606         (mve_vstrhq_scatter_shifted_offset_<supf><mode>_insn): Likewise.
16607         (mve_vstrdq_scatter_offset_p_<supf>v2di_insn): Likewise.
16608         (mve_vstrdq_scatter_offset_<supf>v2di_insn): Likewise.
16609         (mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn): Likewise.
16610         (mve_vstrdq_scatter_shifted_offset_<supf>v2di_insn): Likewise.
16611         (mve_vstrhq_scatter_offset_fv8hf_insn): Likewise.
16612         (mve_vstrhq_scatter_offset_p_fv8hf_insn): Likewise.
16613         (mve_vstrhq_scatter_shifted_offset_fv8hf_insn): Likewise.
16614         (mve_vstrhq_scatter_shifted_offset_p_fv8hf_insn): Likewise.
16615         (mve_vstrwq_scatter_offset_fv4sf_insn): Likewise.
16616         (mve_vstrwq_scatter_offset_p_fv4sf_insn): Likewise.
16617         (mve_vstrwq_scatter_offset_p_<supf>v4si_insn): Likewise.
16618         (mve_vstrwq_scatter_offset_<supf>v4si_insn): Likewise.
16619         (mve_vstrwq_scatter_shifted_offset_fv4sf_insn): Likewise.
16620         (mve_vstrwq_scatter_shifted_offset_p_fv4sf_insn): Likewise.
16621         (mve_vstrwq_scatter_shifted_offset_p_<supf>v4si_insn): Likewise.
16622         (mve_vstrwq_scatter_shifted_offset_<supf>v4si_insn): Likewise.
16624 2020-06-04  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
16626         * config/arm/arm_mve.h (__arm_vbicq_n_u16): Correct the intrinsic
16627         arguments.
16628         (__arm_vbicq_n_s16): Likewise.
16629         (__arm_vbicq_n_u32): Likewise.
16630         (__arm_vbicq_n_s32): Likewise.
16631         (__arm_vbicq): Modify polymorphic variant.
16633 2020-06-04  Richard Biener  <rguenther@suse.de>
16635         * tree-vectorizer.h (vect_get_slp_vect_def): Declare.
16636         * tree-vect-loop.c (vect_create_epilog_for_reduction): Use it.
16637         * tree-vect-stmts.c (vect_transform_stmt): Likewise.
16638         (vect_is_simple_use): Use SLP_TREE_REPRESENTATIVE.
16639         * tree-vect-slp.c (vect_get_slp_vect_defs): Fold into single
16640         use ...
16641         (vect_get_slp_defs): ... here.
16642         (vect_get_slp_vect_def): New function.
16644 2020-06-04  Richard Biener  <rguenther@suse.de>
16646         * tree-vectorizer.h (_slp_tree::lanes): New.
16647         (SLP_TREE_LANES): Likewise.
16648         * tree-vect-loop.c (vect_create_epilog_for_reduction): Use it.
16649         (vectorizable_reduction): Likewise.
16650         (vect_transform_cycle_phi): Likewise.
16651         (vectorizable_induction): Likewise.
16652         (vectorizable_live_operation): Likewise.
16653         * tree-vect-slp.c (_slp_tree::_slp_tree): Initialize lanes.
16654         (vect_create_new_slp_node): Likewise.
16655         (slp_copy_subtree): Copy it.
16656         (vect_optimize_slp): Use it.
16657         (vect_slp_analyze_node_operations_1): Likewise.
16658         (vect_slp_convert_to_external): Likewise.
16659         (vect_bb_vectorization_profitable_p): Likewise.
16660         * tree-vect-stmts.c (vectorizable_load): Likewise.
16661         (get_vectype_for_scalar_type): Likewise.
16663 2020-06-04  Richard Biener  <rguenther@suse.de>
16665         * tree-vect-slp.c (vect_update_all_shared_vectypes): Remove.
16666         (vect_build_slp_tree_2): Simplify building all external op
16667         nodes from scalars.
16668         (vect_slp_analyze_node_operations): Remove push/pop of
16669         STMT_VINFO_DEF_TYPE.
16670         (vect_schedule_slp_instance): Likewise.
16671         * tree-vect-stmts.c (ect_check_store_rhs): Pass in the
16672         stmt_info, use the vect_is_simple_use overload combining
16673         SLP and stmt_info analysis.
16674         (vect_is_simple_cond): Likewise.
16675         (vectorizable_store): Adjust.
16676         (vectorizable_condition): Likewise.
16677         (vect_is_simple_use): Fully handle invariant SLP nodes
16678         here.  Amend stmt_info operand extraction with COND_EXPR
16679         and masked stores.
16680         * tree-vect-loop.c (vectorizable_reduction): Deal with
16681         COND_EXPR representation ugliness.
16683 2020-06-04  Hongtao Liu  <hongtao.liu@inte.com>
16685         PR target/95254
16686         * config/i386/sse.md (*vcvtps2ph_store<merge_mask_name>):
16687         Refine from *vcvtps2ph_store<mask_name>.
16688         (vcvtps2ph256<mask_name>): Refine constraint from vm to v.
16689         (<mask_codefor>avx512f_vcvtps2ph512<mask_name>): Ditto.
16690         (*vcvtps2ph256<merge_mask_name>): New define_insn.
16691         (*avx512f_vcvtps2ph512<merge_mask_name>): Ditto.
16692         * config/i386/subst.md (merge_mask): New define_subst.
16693         (merge_mask_name): New define_subst_attr.
16694         (merge_mask_operand3): Ditto.
16696 2020-06-04  Hao Liu  <hliu@os.amperecomputing.com>
16698         PR tree-optimization/89430
16699         * tree-ssa-phiopt.c
16700         (struct name_to_bb): Rename to ref_to_bb; add a new field exp;
16701         remove ssa_name_ver, store, offset fields.
16702         (struct ssa_names_hasher): Rename to refs_hasher; update functions.
16703         (class nontrapping_dom_walker): Rename m_seen_ssa_names to m_seen_refs.
16704         (nontrapping_dom_walker::add_or_mark_expr): Extend to support ARRAY_REFs
16705         and COMPONENT_REFs.
16707 2020-06-04  Andreas Schwab  <schwab@suse.de>
16709         PR target/95154
16710         * config/ia64/ia64.h (ASM_OUTPUT_FDESC): Call assemble_external.
16712 2020-06-04  Hongtao.liu  <hongtao.liu@intel.com>
16714         * config/i386/sse.md (pmov_dst_3_lower): New mode attribute.
16715         (trunc<mode><pmov_dst_3_lower>2): Refine from
16716         trunc<mode><pmov_dst_3>2.
16718 2020-06-03  Vitor Guidi  <vitor.guidi@usp.br>
16720         * match.pd (tanh/sinh -> 1/cosh): New simplification.
16722 2020-06-03  Aaron Sawdey  <acsawdey@linux.ibm.com>
16724         PR target/95347
16725         * config/rs6000/rs6000.c (is_stfs_insn): Rename to
16726         is_lfs_stfs_insn and make it recognize lfs as well.
16727         (prefixed_store_p): Use is_lfs_stfs_insn().
16728         (prefixed_load_p): Use is_lfs_stfs_insn() to recognize lfs.
16730 2020-06-03  Jan Hubicka  <hubicka@ucw.cz>
16732         * ipa-devirt.c: Include data-streamer.h, lto-streamer.h and
16733         streamer-hooks.h.
16734         (odr_enums): New static var.
16735         (struct odr_enum_val): New struct.
16736         (class odr_enum): New struct.
16737         (odr_enum_map): New hashtable.
16738         (odr_types_equivalent_p): Drop code testing TYPE_VALUES.
16739         (add_type_duplicate): Likewise.
16740         (free_odr_warning_data): Do not free TYPE_VALUES.
16741         (register_odr_enum): New function.
16742         (ipa_odr_summary_write): New function.
16743         (ipa_odr_read_section): New function.
16744         (ipa_odr_summary_read): New function.
16745         (class pass_ipa_odr): New pass.
16746         (make_pass_ipa_odr): New function.
16747         * ipa-utils.h (register_odr_enum): Declare.
16748         * lto-section-in.c: (lto_section_name): Add odr_types section.
16749         * lto-streamer.h (enum lto_section_type): Add odr_types section.
16750         * passes.def: Add odr_types pass.
16751         * lto-streamer-out.c (DFS::DFS_write_tree_body): Do not stream
16752         TYPE_VALUES.
16753         (hash_tree): Likewise.
16754         * tree-streamer-in.c (lto_input_ts_type_non_common_tree_pointers):
16755         Likewise.
16756         * tree-streamer-out.c (write_ts_type_non_common_tree_pointers):
16757         Likewise.
16758         * timevar.def (TV_IPA_ODR): New timervar.
16759         * tree-pass.h (make_pass_ipa_odr): Declare.
16760         * tree.c (free_lang_data_in_type): Regiser ODR types.
16762 2020-06-03  Romain Naour  <romain.naour@gmail.com>
16764         * Makefile.in (SELFTEST_DEPS): Move before including language makefile
16765         fragments.
16767 2020-06-03  Richard Biener  <rguenther@suse.de>
16769         PR tree-optimization/95487
16770         * tree-vect-stmts.c (vectorizable_store): Use a truth type
16771         for the scatter mask.
16773 2020-06-03  Richard Biener  <rguenther@suse.de>
16775         PR tree-optimization/95495
16776         * tree-vect-slp.c (vect_slp_analyze_node_operations): Use
16777         SLP_TREE_REPRESENTATIVE in the shift assertion.
16779 2020-06-03  Tom Tromey  <tromey@adacore.com>
16781         * spellcheck.c (CASE_COST): New define.
16782         (BASE_COST): New define.
16783         (get_edit_distance): Recognize case changes.
16784         (get_edit_distance_cutoff): Update.
16785         (test_edit_distances): Update.
16786         (get_old_cutoff): Update.
16787         (test_find_closest_string): Add case sensitivity test.
16789 2020-06-03  Richard Biener  <rguenther@suse.de>
16791         * tree-vect-slp.c (vect_bb_vectorization_profitable_p): Loop over
16792         the cost vector to unset the visited flag on stmts.
16794 2020-06-03  Tobias Burnus  <tobias@codesourcery.com>
16796         * gimplify.c (omp_notice_variable): Use new hook.
16797         * langhooks-def.h (lhd_omp_predetermined_mapping): Declare.
16798         (LANG_HOOKS_OMP_PREDETERMINED_MAPPING): Define
16799         (LANG_HOOKS_DECLS): Add it.
16800         * langhooks.c (lhd_omp_predetermined_sharing): Remove bogus unused attr.
16801         (lhd_omp_predetermined_mapping): New.
16802         * langhooks.h (struct lang_hooks_for_decls): Add new hook.
16804 2020-06-03  Jan Hubicka  <jh@suse.cz>
16806         * lto-streamer.h (LTO_tags): Reorder so frequent tags has small indexes;
16807         add LTO_first_tree_tag and LTO_first_gimple_tag.
16808         (lto_tag_is_tree_code_p): Update.
16809         (lto_tag_is_gimple_code_p): Update.
16810         (lto_gimple_code_to_tag): Update.
16811         (lto_tag_to_gimple_code): Update.
16812         (lto_tree_code_to_tag): Update.
16813         (lto_tag_to_tree_code): Update.
16815 2020-06-02  Felix Yang  <felix.yang@huawei.com>
16817         PR target/95459
16818         * config/aarch64/aarch64.c (aarch64_short_vector_p):
16819         Leave later code to report an error if SVE is disabled.
16821 2020-06-02  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
16823         * config/aarch64/aarch64-cores.def (zeus): Define.
16824         * config/aarch64/aarch64-tune.md: Regenerate.
16825         * doc/invoke.texi (AArch64 Options): Document zeus -mcpu option.
16827 2020-06-02  Aaron Sawdey  <acsawdey@linux.ibm.com>
16829         PR target/95347
16830         * config/rs6000/rs6000.c (prefixed_store_p): Add special case
16831         for stfs.
16832         (is_stfs_insn): New helper function.
16834 2020-06-02  Jan Hubicka  <jh@suse.cz>
16836         * lto-streamer-in.c (stream_read_tree_ref): Simplify streaming of
16837         references.
16838         * lto-streamer-out.c (stream_write_tree_ref): Likewise.
16840 2020-06-02  Andrew Stubbs  <ams@codesourcery.com>
16842         * config/gcn/gcn-hsa.h (CC1_SPEC): Delete.
16843         * config/gcn/gcn.opt (-mlocal-symbol-id): Delete.
16844         * config/gcn/mkoffload.c (main): Don't use -mlocal-symbol-id.
16846 2020-06-02  Eric Botcazou  <ebotcazou@adacore.com>
16848         PR middle-end/95395
16849         * optabs.c (expand_unop): Fix bits/bytes confusion in latest change.
16850         * tree-pretty-print.c (dump_generic_node) <ARRAY_TYPE>: Print quals.
16852 2020-06-02  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
16854         * config/s390/s390.c (print_operand): Emit vector alignment
16855         hints for z13.
16857 2020-06-02  Martin Liska  <mliska@suse.cz>
16859         * coverage.c (get_coverage_counts): Skip sanity check for TOP N counters
16860         as they have variable number of counters.
16861         * gcov-dump.c (main): Add new option -r.
16862         (print_usage): Likewise.
16863         (tag_counters): All new raw format.
16864         * gcov-io.h (struct gcov_kvp): New.
16865         (GCOV_TOPN_VALUES): Remove.
16866         (GCOV_TOPN_VALUES_COUNTERS): Likewise.
16867         (GCOV_TOPN_MEM_COUNTERS): New.
16868         (GCOV_TOPN_DISK_COUNTERS): Likewise.
16869         (GCOV_TOPN_MAXIMUM_TRACKED_VALUES): Likewise.
16870         * ipa-profile.c (ipa_profile_generate_summary): Use
16871         GCOV_TOPN_MAXIMUM_TRACKED_VALUES.
16872         (ipa_profile_write_edge_summary): Likewise.
16873         (ipa_profile_read_edge_summary): Likewise.
16874         (ipa_profile): Remove usage of GCOV_TOPN_VALUES.
16875         * profile.c (sort_hist_values): Sort variable number
16876         of counters.
16877         (compute_value_histograms): Special case for TOP N counters
16878         that have dynamic number of key-value pairs.
16879         * value-prof.c (dump_histogram_value): Dump variable number
16880         of key-value pairs.
16881         (stream_in_histogram_value): Stream in variable number
16882         of key-value pairs for TOP N counter.
16883         (get_nth_most_common_value): Deal with variable number
16884         of key-value pairs.
16885         (dump_ic_profile): Use GCOV_TOPN_MAXIMUM_TRACKED_VALUES
16886         for loop iteration.
16887         (gimple_find_values_to_profile): Set GCOV_TOPN_MEM_COUNTERS
16888         to n_counters.
16889         * doc/gcov-dump.texi: Document new -r option.
16891 2020-06-02  Iain Buclaw  <ibuclaw@gdcproject.org>
16893         PR target/95420
16894         * config.gcc (arm-wrs-vxworks7*): Set default cpu to generic-armv7-a.
16896 2020-06-01  Jeff Law  <law@torsion.usersys.redhat.com>
16898         * lower-subreg.c (resolve_simple_move): If simplify_gen_subreg_concatn
16899         returns (const_int 0) for the destination, then emit nothing.
16901 2020-06-01  Jan Hubicka  <hubicka@ucw.cz>
16903         * lto-streamer.h (enum LTO_tags): Remove LTO_field_decl_ref,
16904         LTO_function_decl_ref, LTO_label_decl_ref, LTO_namespace_decl_ref,
16905         LTO_result_decl_ref, LTO_type_decl_ref, LTO_type_ref,
16906         LTO_const_decl_ref, LTO_imported_decl_ref,
16907         LTO_translation_unit_decl_ref, LTO_global_decl_ref and
16908         LTO_namelist_decl_ref; add LTO_global_stream_ref.
16909         * lto-streamer-in.c (lto_input_tree_ref): Simplify.
16910         (lto_input_scc): Update.
16911         (lto_input_tree_1): Update.
16912         * lto-streamer-out.c (lto_indexable_tree_ref): Simlify.
16913         * lto-streamer.c (lto_tag_name): Update.
16915 2020-06-01  Jan Hubicka  <hubicka@ucw.cz>
16917         * ipa-reference.c (stream_out_bitmap): Use lto_output_var_decl_ref.
16918         (ipa_reference_read_optimization_summary): Use lto_intput_var_decl_ref.
16919         * lto-cgraph.c (lto_output_node): Likewise.
16920         (lto_output_varpool_node): Likewise.
16921         (output_offload_tables): Likewise.
16922         (input_node): Likewise.
16923         (input_varpool_node): Likewise.
16924         (input_offload_tables): Likewise.
16925         * lto-streamer-in.c (lto_input_tree_ref): Declare.
16926         (lto_input_var_decl_ref): Declare.
16927         (lto_input_fn_decl_ref): Declare.
16928         * lto-streamer-out.c (lto_indexable_tree_ref): Use only one decl stream.
16929         (lto_output_var_decl_index): Rename to ..
16930         (lto_output_var_decl_ref): ... this.
16931         (lto_output_fn_decl_index): Rename to ...
16932         (lto_output_fn_decl_ref): ... this.
16933         * lto-streamer.h (enum lto_decl_stream_e_t): Remove per-type streams.
16934         (DEFINE_DECL_STREAM_FUNCS): Remove.
16935         (lto_output_var_decl_index): Remove.
16936         (lto_output_fn_decl_index): Remove.
16937         (lto_output_var_decl_ref): Declare.
16938         (lto_output_fn_decl_ref): Declare.
16939         (lto_input_var_decl_ref): Declare.
16940         (lto_input_fn_decl_ref): Declare.
16942 2020-06-01  Feng Xue  <fxue@os.amperecomputing.com>
16944         * cgraphclones.c (materialize_all_clones): Adjust replace map dump.
16945         * ipa-param-manipulation.c (ipa_dump_adjusted_parameters): Do not
16946         dump infomation if there is no adjusted parameter.
16947         * (ipa_param_adjustments::dump): Adjust prefix spaces for dump string.
16949 2020-06-01  Aldy Hernandez  <aldyh@redhat.com>
16951         * Makefile.in (gimple-array-bounds.o): New.
16952         * tree-vrp.c: Move array bounds code...
16953         * gimple-array-bounds.cc: ...here...
16954         * gimple-array-bounds.h: ...and here.
16956 2020-06-01  Aldy Hernandez  <aldyh@redhat.com>
16958         * Makefile.in (OBJS): Add value-range-equiv.o.
16959         * tree-vrp.c (*value_range_equiv*): Move to...
16960         * value-range-equiv.cc: ...here.
16961         * tree-vrp.h (class value_range_equiv): Move to...
16962         * value-range-equiv.h: ...here.
16963         * vr-values.h: Include value-range-equiv.h.
16965 2020-06-01  Feng Xue  <fxue@os.amperecomputing.com>
16967         PR ipa/93429
16968         * ipa-cp.c (propagate_aggs_across_jump_function): Check aggregate
16969         lattice for simple pass-through by-ref argument.
16971 2020-05-31  Jeff Law  <law@redhat.com>
16973         * lra.c (add_auto_inc_notes): Remove function.
16974         * reload1.c (add_auto_inc_notes): Similarly.  Move into...
16975         * rtlanal.c (add_auto_inc_notes): New function.
16976         * rtl.h (add_auto_inc_notes): Add prototype.
16977         * recog.c (peep2_attempt): Scan and add REG_INC notes to new insns
16978         as needed.
16980 2020-05-31  Jan Hubicka  <jh@suse.cz>
16982         * lto-section-out.c (lto_output_decl_index): Remove.
16983         (lto_output_field_decl_index): Move to lto-streamer-out.c
16984         (lto_output_fn_decl_index): Move to lto-streamer-out.c
16985         (lto_output_namespace_decl_index): Remove.
16986         (lto_output_var_decl_index): Remove.
16987         (lto_output_type_decl_index): Remove.
16988         (lto_output_type_ref_index): Remove.
16989         * lto-streamer-out.c (output_type_ref): Remove.
16990         (lto_get_index): New function.
16991         (lto_output_tree_ref): Remove.
16992         (lto_indexable_tree_ref): New function.
16993         (lto_output_var_decl_index): Move here from lto-section-out.c; simplify.
16994         (lto_output_fn_decl_index): Move here from lto-section-out.c; simplify.
16995         (stream_write_tree_ref): Update.
16996         (lto_output_tree): Update.
16997         * lto-streamer.h (lto_output_decl_index): Remove prototype.
16998         (lto_output_field_decl_index): Remove prototype.
16999         (lto_output_namespace_decl_index): Remove prototype.
17000         (lto_output_type_decl_index): Remove prototype.
17001         (lto_output_type_ref_index): Remove prototype.
17002         (lto_output_var_decl_index): Move.
17003         (lto_output_fn_decl_index): Move
17005 2020-05-31  Jakub Jelinek  <jakub@redhat.com>
17007         PR middle-end/95052
17008         * expr.c (store_expr): For shortedned_string_cst, ensure temp has
17009         BLKmode.
17011 2020-05-31  Jeff Law  <law@redhat.com>
17013         * config/h8300/jumpcall.md (brabs, brabc): Disable patterns.
17015 2020-05-31  Jim Wilson  <jimw@sifive.com>
17017         * config/riscv/riscv.md (zero_extendsidi2_shifted): New.
17019 2020-05-30  Jonathan Yong  <10walls@gmail.com>
17021         * config/i386/mingw32.h (REAL_LIBGCC_SPEC): Insert -lkernel32
17022         after -lmsvcrt. This is necessary as libmsvcrt.a is not a pure
17023         import library, but also contains some functions that invoke
17024         others in KERNEL32.DLL.
17026 2020-05-29  Segher Boessenkool  <segher@kernel.crashing.org>
17028         * config/rs6000/altivec.md (altivec_vmrghw_direct): Prefer VSX form.
17029         (altivec_vmrglw_direct): Ditto.
17030         (altivec_vperm_<mode>_direct): Ditto.
17031         (altivec_vperm_v8hiv16qi): Ditto.
17032         (*altivec_vperm_<mode>_uns_internal): Ditto.
17033         (*altivec_vpermr_<mode>_internal): Ditto.
17034         (vperm_v8hiv4si): Ditto.
17035         (vperm_v16qiv8hi): Ditto.
17037 2020-05-29  Jan Hubicka  <jh@suse.cz>
17039         * lto-streamer-in.c (streamer_read_chain): Move here from
17040         tree-streamer-in.c.
17041         (stream_read_tree_ref): New.
17042         (lto_input_tree_1): Simplify.
17043         * lto-streamer-out.c (stream_write_tree_ref): New.
17044         (lto_write_tree_1): Simplify.
17045         (lto_output_tree_1): Simplify.
17046         (DFS::DFS_write_tree): Simplify.
17047         (streamer_write_chain): Move here from tree-stremaer-out.c.
17048         * lto-streamer.h (lto_output_tree_ref): Update prototype.
17049         (stream_read_tree_ref): Declare
17050         (stream_write_tree_ref): Declare
17051         * tree-streamer-in.c (streamer_read_chain): Update to use
17052         stream_read_tree_ref.
17053         (lto_input_ts_common_tree_pointers): Likewise.
17054         (lto_input_ts_vector_tree_pointers): Likewise.
17055         (lto_input_ts_poly_tree_pointers): Likewise.
17056         (lto_input_ts_complex_tree_pointers): Likewise.
17057         (lto_input_ts_decl_minimal_tree_pointers): Likewise.
17058         (lto_input_ts_decl_common_tree_pointers): Likewise.
17059         (lto_input_ts_decl_with_vis_tree_pointers): Likewise.
17060         (lto_input_ts_field_decl_tree_pointers): Likewise.
17061         (lto_input_ts_function_decl_tree_pointers): Likewise.
17062         (lto_input_ts_type_common_tree_pointers): Likewise.
17063         (lto_input_ts_type_non_common_tree_pointers): Likewise.
17064         (lto_input_ts_list_tree_pointers): Likewise.
17065         (lto_input_ts_vec_tree_pointers): Likewise.
17066         (lto_input_ts_exp_tree_pointers): Likewise.
17067         (lto_input_ts_block_tree_pointers): Likewise.
17068         (lto_input_ts_binfo_tree_pointers): Likewise.
17069         (lto_input_ts_constructor_tree_pointers): Likewise.
17070         (lto_input_ts_omp_clause_tree_pointers): Likewise.
17071         * tree-streamer-out.c (streamer_write_chain): Update to use
17072         stream_write_tree_ref.
17073         (write_ts_common_tree_pointers): Likewise.
17074         (write_ts_vector_tree_pointers): Likewise.
17075         (write_ts_poly_tree_pointers): Likewise.
17076         (write_ts_complex_tree_pointers): Likewise.
17077         (write_ts_decl_minimal_tree_pointers): Likewise.
17078         (write_ts_decl_common_tree_pointers): Likewise.
17079         (write_ts_decl_non_common_tree_pointers): Likewise.
17080         (write_ts_decl_with_vis_tree_pointers): Likewise.
17081         (write_ts_field_decl_tree_pointers): Likewise.
17082         (write_ts_function_decl_tree_pointers): Likewise.
17083         (write_ts_type_common_tree_pointers): Likewise.
17084         (write_ts_type_non_common_tree_pointers): Likewise.
17085         (write_ts_list_tree_pointers): Likewise.
17086         (write_ts_vec_tree_pointers): Likewise.
17087         (write_ts_exp_tree_pointers): Likewise.
17088         (write_ts_block_tree_pointers): Likewise.
17089         (write_ts_binfo_tree_pointers): Likewise.
17090         (write_ts_constructor_tree_pointers): Likewise.
17091         (write_ts_omp_clause_tree_pointers): Likewise.
17092         (streamer_write_tree_body): Likewise.
17093         (streamer_write_integer_cst): Likewise.
17094         * tree-streamer.h (streamer_read_chain):Declare.
17095         (streamer_write_chain):Declare.
17096         (streamer_write_tree_body): Update prototype.
17097         (streamer_write_integer_cst): Update prototype.
17099 2020-05-29  H.J. Lu  <hjl.tools@gmail.com>
17101         PR bootstrap/95413
17102         * configure: Regenerated.
17104 2020-05-29  Andrew Stubbs  <ams@codesourcery.com>
17106         * config/gcn/gcn-valu.md (add<mode>3_vcc_zext_dup): Add early clobber.
17107         (add<mode>3_vcc_zext_dup_exec): Likewise.
17108         (add<mode>3_vcc_zext_dup2): Likewise.
17109         (add<mode>3_vcc_zext_dup2_exec): Likewise.
17111 2020-05-29  Richard Biener  <rguenther@suse.de>
17113         PR tree-optimization/95272
17114         * tree-vectorizer.h (_slp_tree::representative): Add.
17115         (SLP_TREE_REPRESENTATIVE): Likewise.
17116         * tree-vect-loop.c (vectorizable_reduction): Adjust SLP
17117         node gathering.
17118         (vectorizable_live_operation): Use the representative to
17119         attach the reduction info to.
17120         * tree-vect-slp.c (_slp_tree::_slp_tree): Initialize
17121         SLP_TREE_REPRESENTATIVE.
17122         (vect_create_new_slp_node): Likewise.
17123         (slp_copy_subtree): Copy it.
17124         (vect_slp_rearrange_stmts): Re-arrange even COND_EXPR stmts.
17125         (vect_slp_analyze_node_operations_1): Pass the representative
17126         to vect_analyze_stmt.
17127         (vect_schedule_slp_instance): Pass the representative to
17128         vect_transform_stmt.
17130 2020-05-29  Richard Biener  <rguenther@suse.de>
17132         PR tree-optimization/95356
17133         * tree-vect-stmts.c (vectorizable_shift): Do in-place SLP
17134         node hacking during analysis.
17136 2020-05-29  Jan Hubicka  <hubicka@ucw.cz>
17138         PR lto/95362
17139         * lto-streamer-out.c (lto_output_tree): Disable redundant streaming.
17141 2020-05-29  Richard Biener  <rguenther@suse.de>
17143         PR tree-optimization/95403
17144         * tree-vect-stmts.c (vect_init_vector_1): Guard against NULL
17145         stmt_vinfo.
17147 2020-05-29  Jakub Jelinek  <jakub@redhat.com>
17149         PR middle-end/95315
17150         * omp-general.c (omp_resolve_declare_variant): Fix up addition of
17151         declare variant cgraph node removal callback.
17153 2020-05-29  Jakub Jelinek  <jakub@redhat.com>
17155         PR middle-end/95052
17156         * expr.c (store_expr): If expr_size is constant and significantly
17157         larger than TREE_STRING_LENGTH, set temp to just the
17158         TREE_STRING_LENGTH portion of the STRING_CST.
17160 2020-05-29  Richard Biener  <rguenther@suse.de>
17162         PR tree-optimization/95393
17163         * tree-ssa-phiopt.c (minmax_replacement): Use gimple_build
17164         to build the min/max expression so we simplify cases like
17165         MAX(0, s) immediately.
17167 2020-05-29  Joe Ramsay  <joe.ramsay@arm.com>
17169         * config/aarch64/aarch64-sve.md (<LOGICAL:optab><mode>3): Add support
17170         for unpacked EOR, ORR, AND.
17172 2020-05-28  Nicolas Bértolo  <nicolasbertolo@gmail.com>
17174         * Makefile.in: don't look for libiberty in the "pic" subdirectory
17175         when building for Mingw. Add dependency on xgcc with the proper
17176         extension.
17178 2020-05-28  Jeff Law  <law@redhat.com>
17180         * config/h8300/logical.md (bclrhi_msx): Remove pattern.
17182 2020-05-28  Jeff Law  <law@redhat.com>
17184         * config/h8300/logical.md (HImode H8/SX bit-and splitter): Don't
17185         make a nonzero adjustment to the memory offset.
17186         (b<ior,xor>hi_msx): Turn into a splitter.
17188 2020-05-28  Eric Botcazou  <ebotcazou@adacore.com>
17190         * gimple-ssa-store-merging.c (merged_store_group::can_be_merged_into):
17191         Fix off-by-one error.
17193 2020-05-28  Richard Sandiford  <richard.sandiford@arm.com>
17195         * config/aarch64/aarch64.h (aarch64_frame): Add a comment above
17196         wb_candidate1 and wb_candidate2.
17197         * config/aarch64/aarch64.c (aarch64_layout_frame): Invalidate
17198         wb_candidate1 and wb_candidate2 if we decided not to use them.
17200 2020-05-28  Richard Sandiford  <richard.sandiford@arm.com>
17202         PR testsuite/95361
17203         * config/aarch64/aarch64.c (aarch64_expand_epilogue): Assert that
17204         we have at least some CFI operations when using a frame pointer.
17205         Only redefine the CFA if we have CFI operations.
17207 2020-05-28  Richard Biener  <rguenther@suse.de>
17209         * tree-vect-slp.c (vect_prologue_cost_for_slp): Remove
17210         case for !SLP_TREE_VECTYPE.
17211         (vect_slp_analyze_node_operations): Adjust.
17213 2020-05-28  Richard Biener  <rguenther@suse.de>
17215         * tree-vectorizer.h (_slp_tree::vec_defs): Add.
17216         (SLP_TREE_VEC_DEFS): Likewise.
17217         * tree-vect-slp.c (_slp_tree::_slp_tree): Adjust.
17218         (_slp_tree::~_slp_tree): Likewise.
17219         (vect_mask_constant_operand_p): Remove unused function.
17220         (vect_get_constant_vectors): Rename to...
17221         (vect_create_constant_vectors): ... this.  Take the
17222         invariant node as argument and code generate it.  Remove
17223         dead code, remove temporary asserts.  Pass a NULL stmt_info
17224         to vect_init_vector.
17225         (vect_get_slp_defs): Simplify.
17226         (vect_schedule_slp_instance): Code-generate externals and
17227         invariants using vect_create_constant_vectors.
17229 2020-05-28  Richard Biener  <rguenther@suse.de>
17231         * tree-vect-stmts.c (vect_finish_stmt_generation_1):
17232         Conditionalize stmt_info use, assert the new stmt cannot throw
17233         when not specified.
17234         (vect_finish_stmt_generation): Adjust assert.
17236 2020-05-28  Richard Biener  <rguenther@suse.de>
17238         PR tree-optimization/95273
17239         PR tree-optimization/95356
17240         * tree-vect-stmts.c (vectorizable_shift): Adjust when and to
17241         what we set the vector type of the shift operand SLP node
17242         again.
17244 2020-05-28  Andrea Corallo  <andrea.corallo@arm.com>
17246         * config/arm/arm.c (mve_vector_mem_operand): Fix unwanted
17247         fall-throughs.
17249 2020-05-28  Martin Liska  <mliska@suse.cz>
17251         PR web/95380
17252         * doc/invoke.texi: Add missing params, remove max-once-peeled-insns and
17253         rename ipcp-unit-growth to ipa-cp-unit-growth.
17255 2020-05-28  Hongtao Liu  <hongtao.liu@intel.com>
17257         * config/i386/sse.md (*avx512vl_<code>v2div2qi2_store_1): Rename
17258         from *avx512vl_<code>v2div2qi_store and refine memory size of
17259         the pattern.
17260         (*avx512vl_<code>v2div2qi2_mask_store_1): Ditto.
17261         (*avx512vl_<code><mode>v4qi2_store_1): Ditto.
17262         (*avx512vl_<code><mode>v4qi2_mask_store_1): Ditto.
17263         (*avx512vl_<code><mode>v8qi2_store_1): Ditto.
17264         (*avx512vl_<code><mode>v8qi2_mask_store_1): Ditto.
17265         (*avx512vl_<code><mode>v4hi2_store_1): Ditto.
17266         (*avx512vl_<code><mode>v4hi2_mask_store_1): Ditto.
17267         (*avx512vl_<code>v2div2hi2_store_1): Ditto.
17268         (*avx512vl_<code>v2div2hi2_mask_store_1): Ditto.
17269         (*avx512vl_<code>v2div2si2_store_1): Ditto.
17270         (*avx512vl_<code>v2div2si2_mask_store_1): Ditto.
17271         (*avx512f_<code>v8div16qi2_store_1): Ditto.
17272         (*avx512f_<code>v8div16qi2_mask_store_1): Ditto.
17273         (*avx512vl_<code>v2div2qi2_store_2): New define_insn_and_split.
17274         (*avx512vl_<code>v2div2qi2_mask_store_2): Ditto.
17275         (*avx512vl_<code><mode>v4qi2_store_2): Ditto.
17276         (*avx512vl_<code><mode>v4qi2_mask_store_2): Ditto.
17277         (*avx512vl_<code><mode>v8qi2_store_2): Ditto.
17278         (*avx512vl_<code><mode>v8qi2_mask_store_2): Ditto.
17279         (*avx512vl_<code><mode>v4hi2_store_2): Ditto.
17280         (*avx512vl_<code><mode>v4hi2_mask_store_2): Ditto.
17281         (*avx512vl_<code>v2div2hi2_store_2): Ditto.
17282         (*avx512vl_<code>v2div2hi2_mask_store_2): Ditto.
17283         (*avx512vl_<code>v2div2si2_store_2): Ditto.
17284         (*avx512vl_<code>v2div2si2_mask_store_2): Ditto.
17285         (*avx512f_<code>v8div16qi2_store_2): Ditto.
17286         (*avx512f_<code>v8div16qi2_mask_store_2): Ditto.
17287         * config/i386/i386-builtin-types.def: Adjust builtin type.
17288         * config/i386/i386-expand.c: Ditto.
17289         * config/i386/i386-builtin.def: Adjust builtin.
17290         * config/i386/avx512fintrin.h: Ditto.
17291         * config/i386/avx512vlbwintrin.h: Ditto.
17292         * config/i386/avx512vlintrin.h: Ditto.
17294 2020-05-28  Dong JianQiang  <dongjianqiang2@huawei.com>
17296         PR gcov-profile/95332
17297         * gcov-io.c (gcov_var::endian): Move field.
17298         (from_file): Add IN_GCOV_TOOL check.
17299         * gcov-io.h (gcov_magic): Ditto.
17301 2020-05-28  Max Filippov  <jcmvbkbc@gmail.com>
17303         * config/xtensa/xtensa.c (xtensa_delegitimize_address): New
17304         function.
17305         (TARGET_DELEGITIMIZE_ADDRESS): New macro.
17307 2020-05-27  Eric Botcazou  <ebotcazou@adacore.com>
17309         * builtin-types.def (BT_UINT128): New primitive type.
17310         (BT_FN_UINT128_UINT128): New function type.
17311         * builtins.def (BUILT_IN_BSWAP128): New GCC builtin.
17312         * doc/extend.texi (__builtin_bswap128): Document it.
17313         * builtins.c (expand_builtin): Deal with BUILT_IN_BSWAP128.
17314         (is_inexpensive_builtin): Likewise.
17315         * fold-const-call.c (fold_const_call_ss): Likewise.
17316         * fold-const.c (tree_call_nonnegative_warnv_p): Likewise.
17317         * tree-ssa-ccp.c (evaluate_stmt): Likewise.
17318         * tree-vect-stmts.c (vect_get_data_ptr_increment): Likewise.
17319         (vectorizable_call): Likewise.
17320         * optabs.c (expand_unop): Always use the double word path for it.
17321         * tree-core.h (enum tree_index): Add TI_UINT128_TYPE.
17322         * tree.h (uint128_type_node): New global type.
17323         * tree.c (build_common_tree_nodes): Build it if TImode is supported.
17325 2020-05-27  Uroš Bizjak  <ubizjak@gmail.com>
17327         * config/i386/mmx.md (*mmx_haddv2sf3): Remove SSE alternatives.
17328         (mmx_hsubv2sf3): Ditto.
17329         (mmx_haddsubv2sf3): New expander.
17330         (*mmx_haddsubv2sf3): Rename from mmx_addsubv2sf3. Correct
17331         RTL template to model horizontal subtraction and addition.
17332         * config/i386/i386-builtin.def (IX86_BUILTIN_PFPNACC):
17333         Update for rename.
17335 2020-05-27  Uroš Bizjak  <ubizjak@gmail.com>
17337         PR target/95355
17338         * config/i386/sse.md
17339         (<mask_codefor>avx512f_<code>v16qiv16si2<mask_name>):
17340         Remove %q operand modifier from insn template.
17341         (avx512f_<code>v8hiv8di2<mask_name>): Ditto.
17343 2020-05-27  Uroš Bizjak  <ubizjak@gmail.com>
17345         * config/i386/mmx.md (mmx_pswapdsf2): Add SSE alternatives.
17346         Enable insn pattern for TARGET_MMX_WITH_SSE.
17347         (*mmx_movshdup): New insn pattern.
17348         (*mmx_movsldup): Ditto.
17349         (*mmx_movss): Ditto.
17350         * config/i386/i386-expand.c (ix86_vectorize_vec_perm_const):
17351         Handle E_V2SFmode.
17352         (expand_vec_perm_movs): Handle E_V2SFmode.
17353         (expand_vec_perm_even_odd): Ditto.
17354         (expand_vec_perm_broadcast_1): Assert that E_V2SFmode
17355         is already handled by standard shuffle patterns.
17357 2020-05-27  Richard Biener  <rguenther@suse.de>
17359         PR tree-optimization/95295
17360         * tree-ssa-loop-im.c (sm_seq_valid_bb): Fix sinking after
17361         merging stores from paths.
17363 2020-05-27  Richard Biener  <rguenther@suse.de>
17365         PR tree-optimization/95356
17366         * tree-vect-stmts.c (vectorizable_shift): Adjust vector
17367         type for the shift operand.
17369 2020-05-27  Richard Biener  <rguenther@suse.de>
17371         PR tree-optimization/95335
17372         * tree-vect-slp.c (vect_slp_analyze_node_operations): Reset
17373         lvisited for nodes made external.
17375 2020-05-27  Richard Biener  <rguenther@suse.de>
17377         * dump-context.h (debug_dump_context): New class.
17378         (dump_context): Make it friend.
17379         * dumpfile.c (debug_dump_context::debug_dump_context):
17380         Implement.
17381         (debug_dump_context::~debug_dump_context): Likewise.
17382         * tree-vect-slp.c: Include dump-context.h.
17383         (vect_print_slp_tree): Dump a single SLP node.
17384         (debug): New overload for slp_tree.
17385         (vect_print_slp_graph): Rename from vect_print_slp_tree and
17386         use that.
17387         (vect_analyze_slp_instance): Adjust.
17389 2020-05-27  Jakub Jelinek  <jakub@redhat.com>
17391         PR middle-end/95315
17392         * omp-general.c (omp_declare_variant_remove_hook): New function.
17393         (omp_resolve_declare_variant): Always return base if it is already
17394         declare_variant_alt magic decl itself.  Register
17395         omp_declare_variant_remove_hook as cgraph node removal hook.
17397 2020-05-27  Jeff Law  <law@redhat.com>
17399         * config/h8300/testcompare.md (tst_extzv_1_n): Do not accept constants
17400         for the primary input operand.
17401         (tstsi_variable_bit_qi): Similarly.
17403 2020-05-26  Uroš Bizjak  <ubizjak@gmail.com>
17405         * config/i386/mmx.md (mmx_pswapdv2si2): Add SSE2 alternative.
17407 2020-05-26  Tobias Burnus  <tobias@codesourcery.com>
17409         PR ipa/95320
17410         * ipa-utils.h (odr_type_p): Also permit calls with
17411         only flag_generate_offload set.
17413 2020-05-26  Alexandre Oliva  <oliva@adacore.com>
17415         * gcc.c (validate_switches): Add braced parameter.  Adjust all
17416         callers.  Expected and skip trailing brace only if braced.
17417         Return after handling one atom otherwise.
17418         (DUMPS_OPTIONS): New.
17419         (cpp_debug_options): Define in terms of it.
17421 2020-05-26  Richard Biener  <rguenther@suse.de>
17423         PR tree-optimization/95327
17424         * tree-vect-stmts.c (vectorizable_shift): Compute op1_vectype
17425         when we are not using a scalar shift.
17427 2020-05-26  Uroš Bizjak  <ubizjak@gmail.com>
17429         * config/i386/mmx.md (*mmx_pshufd_1): New insn pattern.
17430         * config/i386/i386-expand.c (ix86_vectorize_vec_perm_const):
17431         Handle E_V2SImode and E_V4HImode.
17432         (expand_vec_perm_even_odd_1): Handle E_V4HImode.
17433         Assert that E_V2SImode is already handled.
17434         (expand_vec_perm_broadcast_1): Assert that E_V2SImode
17435         is already handled by standard shuffle patterns.
17437 2020-05-26  Jan Hubicka  <jh@suse.cz>
17439         * tree.c (free_lang_data_in_type): Simpify types of TYPE_VALUES in
17440         enumeral types.
17442 2020-05-26  Jakub Jelinek  <jakub@redhat.com>
17444         PR c++/95197
17445         * gimplify.c (find_combined_omp_for): Move to omp-general.c.
17446         * omp-general.h (find_combined_omp_for): Declare.
17447         * omp-general.c: Include tree-iterator.h.
17448         (find_combined_omp_for): New function, moved from gimplify.c.
17450 2020-05-26  Alexandre Oliva  <oliva@adacore.com>
17452         * common.opt (aux_base_name): Define.
17453         (dumpbase, dumpdir): Mark as Driver options.
17454         (-dumpbase, -dumpdir): Likewise.
17455         (dumpbase-ext, -dumpbase-ext): New.
17456         (auxbase, auxbase-strip): Drop.
17457         * doc/invoke.texi (-dumpbase, -dumpbase-ext, -dumpdir):
17458         Document.
17459         (-o): Introduce the notion of primary output, mention it
17460         influences auxiliary and dump output names as well, add
17461         examples.
17462         (-save-temps): Adjust, move examples into -dump*.
17463         (-save-temps=cwd, -save-temps=obj): Likewise.
17464         (-fdump-final-insns): Adjust.
17465         * dwarf2out.c (gen_producer_string): Drop auxbase and
17466         auxbase_strip; add dumpbase_ext.
17467         * gcc.c (enum save_temps): Add SAVE_TEMPS_DUMP.
17468         (save_temps_prefix, save_temps_length): Drop.
17469         (save_temps_overrides_dumpdir): New.
17470         (dumpdir, dumpbase, dumpbase_ext): New.
17471         (dumpdir_length, dumpdir_trailing_dash_added): New.
17472         (outbase, outbase_length): New.
17473         (The Specs Language): Introduce %".  Adjust %b and %B.
17474         (ASM_FINAL_SPEC): Use %b.dwo for an aux output name always.
17475         Precede object file with %w when it's the primary output.
17476         (cpp_debug_options): Do not pass on incoming -dumpdir,
17477         -dumpbase and -dumpbase-ext options; recompute them with
17478         %:dumps.
17479         (cc1_options): Drop auxbase with and without compare-debug;
17480         use cpp_debug_options instead of dumpbase.  Mark asm output
17481         with %w when it's the primary output.
17482         (static_spec_functions): Drop %:compare-debug-auxbase-opt and
17483         %:replace-exception.  Add %:dumps.
17484         (driver_handle_option): Implement -save-temps=*/-dumpdir
17485         mutual overriding logic.  Save dumpdir, dumpbase and
17486         dumpbase-ext options.  Do not save output_file in
17487         save_temps_prefix.
17488         (adds_single_suffix_p): New.
17489         (single_input_file_index): New.
17490         (process_command): Combine output dir, output base name, and
17491         dumpbase into dumpdir and outbase.
17492         (set_collect_gcc_options): Pass a possibly-adjusted -dumpdir.
17493         (do_spec_1): Optionally dumpdir instead of save_temps_prefix,
17494         and outbase instead of input_basename in %b, %B and in
17495         -save-temps aux files.  Handle empty argument %".
17496         (driver::maybe_run_linker): Adjust dumpdir and auxbase.
17497         (compare_debug_dump_opt_spec_function): Adjust gkd dump file
17498         naming.  Spec-quote the computed -fdump-final-insns file name.
17499         (debug_auxbase_opt): Drop.
17500         (compare_debug_self_opt_spec_function): Drop auxbase-strip
17501         computation.
17502         (compare_debug_auxbase_opt_spec_function): Drop.
17503         (not_actual_file_p): New.
17504         (replace_extension_spec_func): Drop.
17505         (dumps_spec_func): New.
17506         (convert_white_space): Split-out parts into...
17507         (quote_string, whitespace_to_convert_p): ... these.  New.
17508         (quote_spec_char_p, quote_spec, quote_spec_arg): New.
17509         (driver::finalize): Release and reset new variables; drop
17510         removed ones.
17511         * lto-wrapper.c (HAVE_TARGET_EXECUTABLE_SUFFIX): Define if...
17512         (TARGET_EXECUTABLE_SUFFIX): ... is defined; define this to the
17513         empty string otherwise.
17514         (DUMPBASE_SUFFIX): Drop leading period.
17515         (debug_objcopy): Use concat.
17516         (run_gcc): Recognize -save-temps=* as -save-temps too.  Obey
17517         -dumpdir.  Pass on empty dumpdir and dumpbase with a directory
17518         component.  Simplify temp file names.
17519         * opts.c (finish_options): Drop aux base name handling.
17520         (common_handle_option): Drop auxbase-strip handling.
17521         * toplev.c (print_switch_values): Drop auxbase, add
17522         dumpbase-ext.
17523         (process_options): Derive aux_base_name from dump_base_name
17524         and dump_base_ext.
17525         (lang_dependent_init): Compute dump_base_ext along with
17526         dump_base_name.  Disable stack usage and callgraph-info during
17527         lto generation and compare-debug recompilation.
17529 2020-05-26  Hongtao Liu  <hongtao.liu@intel.com>
17530             Uroš Bizjak  <ubizjak@gmail.com>
17532         PR target/95211
17533         PR target/95256
17534         * config/i386/sse.md (<floatunssuffix>v2div2sf2): New expander.
17535         (fix<fixunssuffix>_truncv2sfv2di2): Ditto.
17536         (avx512dq_float<floatunssuffix>v2div2sf2): Renaming from
17537         float<floatunssuffix>v2div2sf2.
17538         (avx512dq_fix<fixunssuffix>_truncv2sfv2di2<mask_name>):
17539         Renaming from fix<fixunssuffix>_truncv2sfv2di2<mask_name>.
17540         (vec_pack<floatprefix>_float_<mode>): Adjust icode name.
17541         (vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Ditto.
17542         (vec_unpack_<fixprefix>fix_trunc_hi_<mode>): Ditto.
17543         * config/i386/i386-builtin.def: Ditto.
17544         * emit-rtl.c (validate_subreg): Allow use of *paradoxical* vector
17545         subregs when both omode and imode are vector mode and
17546         have the same inner mode.
17548 2020-05-25  Eric Botcazou  <ebotcazou@adacore.com>
17550         * gimple-ssa-store-merging.c (merged_store_group::can_be_merged_into):
17551         Only turn MEM_REFs into bit-field stores for small bit-field regions.
17552         (imm_store_chain_info::output_merged_store): Be prepared for sources
17553         with non-integral type in the bit-field insertion case.
17554         (pass_store_merging::process_store): Use MAX_BITSIZE_MODE_ANY_INT as
17555         the largest size for the bit-field case.
17557 2020-05-25  Uroš Bizjak  <ubizjak@gmail.com>
17559         * config/i386/mmx.md (*vec_dupv2sf): Redefine as define_insn.
17560         (mmx_pshufw_1): Change Yv constraint to xYw.  Correct type attribute.
17561         (*vec_dupv4hi): Redefine as define_insn.
17562         Remove alternative with general register input.
17563         (*vec_dupv2si): Ditto.
17565 2020-05-25  Richard Biener  <rguenther@suse.de>
17567         PR tree-optimization/95309
17568         * tree-vect-slp.c (vect_get_constant_vectors): Move number
17569         of vector computation ...
17570         (vect_slp_analyze_node_operations): ... to analysis phase.
17572 2020-05-25  Jan Hubicka  <hubicka@ucw.cz>
17574         * lto-streamer-out.c (lto_output_tree): Add streamer_debugging check.
17575         * lto-streamer.h (streamer_debugging): New constant
17576         * tree-streamer-in.c (streamer_read_tree_bitfields): Add
17577         streamer_debugging check.
17578         (streamer_get_pickled_tree): Likewise.
17579         * tree-streamer-out.c (pack_ts_base_value_fields): Likewise.
17581 2020-05-25  Richard Biener  <rguenther@suse.de>
17583         PR tree-optimization/95308
17584         * tree-ssa-forwprop.c (pass_forwprop::execute): Generalize
17585         test for TARGET_MEM_REFs.
17587 2020-05-25  Richard Biener  <rguenther@suse.de>
17589         PR tree-optimization/95295
17590         * tree-ssa-loop-im.c (sm_seq_valid_bb): Compare remat stores
17591         RHSes and drop to full sm_other if they are not equal.
17593 2020-05-25  Richard Biener  <rguenther@suse.de>
17595         PR tree-optimization/95271
17596         * tree-vect-stmts.c (vectorizable_bswap): Update invariant SLP
17597         children vector type.
17598         (vectorizable_call): Pass down slp ops.
17600 2020-05-25  Richard Biener  <rguenther@suse.de>
17602         PR tree-optimization/95297
17603         * tree-vect-stmts.c (vectorizable_shift): For scalar_shift_arg
17604         skip updating operand 1 vector type.
17606 2020-05-25  Richard Biener  <rguenther@suse.de>
17608         PR tree-optimization/95284
17609         * tree-ssa-sink.c (sink_common_stores_to_bb): Amend previous
17610         fix.
17612 2020-05-25  Hongtao Liu  <hongtao.liu@intel.com>
17614         PR target/95125
17615         * config/i386/sse.md (sf2dfmode_lower): New mode attribute.
17616         (trunc<mode><sf2dfmode_lower>2) New expander.
17617         (extend<sf2dfmode_lower><mode>2): Ditto.
17619 2020-05-23 Iain Sandoe <iain@sandoe.co.uk>
17621         * config/darwin.h (ASM_GENERATE_INTERNAL_LABEL): Make
17622         ubsan_{data,type},ASAN symbols linker-visible.
17624 2020-05-22  Jan Hubicka  <hubicka@ucw.cz>
17626         * lto-streamer-out.c (DFS::DFS): Silence warning.
17628 2020-05-22  Uroš Bizjak  <ubizjak@gmail.com>
17630         PR target/95255
17631         * config/i386/i386.md (<rounding_insn><mode>2): Do not try to
17632         expand non-sse4 ROUND_ROUNDEVEN rounding via SSE support routines.
17634 2020-05-22  Jan Hubicka  <hubicka@ucw.cz>
17636         * lto-streamer-out.c (lto_output_tree): Do not stream final ref if
17637         it is not needed.
17639 2020-05-22  Jan Hubicka  <hubicka@ucw.cz>
17641         * lto-section-out.c (lto_output_decl_index): Adjust dump indentation.
17642         * lto-streamer-out.c (create_output_block): Fix whitespace
17643         (lto_write_tree_1): Add (debug) dump.
17644         (DFS::DFS): Add dump.
17645         (DFS::DFS_write_tree_body): Do not dump here.
17646         (lto_output_tree): Improve dumping; do not stream ref when not needed.
17647         (produce_asm_for_decls): Fix whitespace.
17648         * tree-streamer-out.c (streamer_write_tree_header): Add dump.
17649         * tree-streamer-out.c (streamer_write_integer_cst): Add debug dump.
17651 2020-05-22  Hongtao.liu  <hongtao.liu@intel.com>
17653         PR target/92658
17654         * config/i386/sse.md (trunc<pmov_src_lower><mode>2): New expander
17655         (truncv32hiv32qi2): Ditto.
17656         (trunc<ssedoublemodelower><mode>2): Ditto.
17657         (trunc<mode><pmov_dst_3>2): Ditto.
17658         (trunc<mode><pmov_dst_mode_4>2): Ditto.
17659         (truncv2div2si2): Ditto.
17660         (truncv8div8qi2): Ditto.
17661         (avx512f_<code>v8div16qi2): Renaming from *avx512f_<code>v8div16qi2.
17662         (avx512vl_<code>v2div2si): Renaming from *avx512vl_<code>v2div2si2.
17663         (avx512vl_<code><mode>v2<ssecakarnum>qi2): Renaming from
17664         *avx512vl_<code><mode>v<ssescalarnum>qi2.
17666 2020-05-22  H.J. Lu  <hongjiu.lu@intel.com>
17668         PR target/95258
17669         * config/i386/driver-i386.c (host_detect_local_cpu): Detect
17670         AVX512VPOPCNTDQ.
17672 2020-05-22  Richard Biener  <rguenther@suse.de>
17674         PR tree-optimization/95268
17675         * tree-ssa-sink.c (sink_common_stores_to_bb): Handle clobbers
17676         properly.
17678 2020-05-22  Jan Hubicka  <hubicka@ucw.cz>
17680         * tree-streamer.c (record_common_node): Fix hash value of pre-streamed
17681         nodes.
17683 2020-05-22  Jan Hubicka  <hubicka@ucw.cz>
17685         * lto-streamer-in.c (lto_read_tree): Do not stream end markers.
17686         (lto_input_scc): Optimize streaming of entry lengths.
17687         * lto-streamer-out.c (lto_write_tree): Do not stream end markers
17688         (DFS::DFS): Optimize stremaing of entry lengths
17690 2020-05-22  Richard Biener  <rguenther@suse.de>
17692         PR lto/95190
17693         * doc/invoke.texi (flto): Document behavior of diagnostic
17694         options.
17696 2020-05-22  Richard Biener  <rguenther@suse.de>
17698         * tree-vectorizer.h (vect_is_simple_use): New overload.
17699         (vect_maybe_update_slp_op_vectype): New.
17700         * tree-vect-stmts.c (vect_is_simple_use): New overload
17701         accessing operands of SLP vs. non-SLP operation transparently.
17702         (vect_maybe_update_slp_op_vectype): New function updating
17703         the possibly shared SLP operands vector type.
17704         (vectorizable_operation): Be a bit more SLP vs non-SLP agnostic
17705         using the new vect_is_simple_use overload;  update SLP invariant
17706         operand nodes vector type.
17707         (vectorizable_comparison): Likewise.
17708         (vectorizable_call): Likewise.
17709         (vectorizable_conversion): Likewise.
17710         (vectorizable_shift): Likewise.
17711         (vectorizable_store): Likewise.
17712         (vectorizable_condition): Likewise.
17713         (vectorizable_assignment): Likewise.
17714         * tree-vect-loop.c (vectorizable_reduction): Likewise.
17715         * tree-vect-slp.c (vect_get_constant_vectors): Enforce
17716         present SLP_TREE_VECTYPE and check it matches previous
17717         behavior.
17719 2020-05-22  Richard Biener  <rguenther@suse.de>
17721         PR tree-optimization/95248
17722         * tree-ssa-loop-im.c (sm_seq_valid_bb): Remove bogus early out.
17724 2020-05-22  Richard Biener  <rguenther@suse.de>
17726         * tree-vectorizer.h (_slp_tree::_slp_tree): New.
17727         (_slp_tree::~_slp_tree): Likewise.
17728         * tree-vect-slp.c (_slp_tree::_slp_tree): Factor out code
17729         from allocators.
17730         (_slp_tree::~_slp_tree): Implement.
17731         (vect_free_slp_tree): Simplify.
17732         (vect_create_new_slp_node): Likewise.  Add nops parameter.
17733         (vect_build_slp_tree_2): Adjust.
17734         (vect_analyze_slp_instance): Likewise.
17736 2020-05-21  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
17738         * adjust-alignment.c: Include memmodel.h.
17740 2020-05-21  H.J. Lu  <hongjiu.lu@intel.com>
17742         PR target/95260
17743         * config/i386/cpuid.h: Use hexadecimal in comments.
17745 2020-05-21  H.J. Lu  <hongjiu.lu@intel.com>
17747         PR target/95212
17748         * config/i386/i386-builtins.c (processor_features): Move
17749         F_AVX512VP2INTERSECT after F_AVX512BF16.
17750         (isa_names_table): Likewise.
17752 2020-05-21  Martin Liska  <mliska@suse.cz>
17754         * common/config/aarch64/aarch64-common.c (aarch64_handle_option):
17755         Handle OPT_moutline_atomics.
17756         * config/aarch64/aarch64.c: Add outline-atomics to
17757         aarch64_attributes.
17758         * doc/extend.texi: Document the newly added target attribute.
17760 2020-05-21  Uroš Bizjak  <ubizjak@gmail.com>
17762         PR target/95218
17764         * config/i386/mmx.md (*mmx_<code>v2sf): Do not mark
17765         operands 1 and 2 commutative.  Manually swap operands.
17766         (*mmx_nabsv2sf2): Ditto.
17768         Partially revert:
17769         2020-05-18  Uroš Bizjak  <ubizjak@gmail.com>
17771         * config/i386/i386.md (*<code>tf2_1):
17772         Mark operands 1 and 2 commutative.
17773         (*nabstf2_1): Ditto.
17774         * config/i386/sse.md (*<code><mode>2): Mark operands 1 and 2
17775         commutative.  Do not swap operands.
17776         (*nabs<mode>2): Ditto.
17778 2020-05-20  Uroš Bizjak  <ubizjak@gmail.com>
17780         PR target/95229
17781         * config/i386/sse.md (<code>v8qiv8hi2): Use
17782         simplify_gen_subreg instead of simplify_subreg.
17783         (<code>v8qiv8si2): Ditto.
17784         (<code>v4qiv4si2): Ditto.
17785         (<code>v4hiv4si2): Ditto.
17786         (<code>v8qiv8di2): Ditto.
17787         (<code>v4qiv4di2): Ditto.
17788         (<code>v2qiv2di2): Ditto.
17789         (<code>v4hiv4di2): Ditto.
17790         (<code>v2hiv2di2): Ditto.
17791         (<code>v2siv2di2): Ditto.
17793 2020-05-20  Uroš Bizjak  <ubizjak@gmail.com>
17795         PR target/95238
17796         * config/i386/i386.md (*pushsi2_rex64):
17797         Use "e" constraint instead of "i".
17799 2020-05-20  Jan Hubicka  <hubicka@ucw.cz>
17801         * lto-streamer-in.c (lto_input_scc): Add SHARED_SCC parameter.
17802         (lto_input_tree_1): Strenghten sanity check.
17803         (lto_input_tree): Update call of lto_input_scc.
17804         * lto-streamer-out.c: Include ipa-utils.h
17805         (create_output_block): Initialize local_trees if merigng is going
17806         to happen.
17807         (destroy_output_block): Destroy local_trees.
17808         (DFS): Add max_local_entry.
17809         (local_tree_p): New function.
17810         (DFS::DFS): Initialize and maintain it.
17811         (DFS::DFS_write_tree): Decide on streaming format.
17812         (lto_output_tree): Stream inline singleton SCCs
17813         * lto-streamer.h (enum LTO_tags): Add LTO_trees.
17814         (struct output_block): Add local_trees.
17815         (lto_input_scc): Update prototype.
17817 2020-05-20  Patrick Palka  <ppalka@redhat.com>
17819         PR c++/95223
17820         * hash-table.h (hash_table::find_with_hash): Move up the call to
17821         hash_table::verify.
17823 2020-05-20  Martin Liska  <mliska@suse.cz>
17825         * lto-compress.c (lto_compression_zstd): Fill up
17826         num_compressed_il_bytes.
17827         (lto_uncompression_zstd): Likewise for num_uncompressed_il_bytes here.
17829 2020-05-20  Richard Biener  <rguenther@suse.de>
17831         PR tree-optimization/95219
17832         * tree-vect-loop.c (vectorizable_induction): Reduce
17833         group_size before computing the number of required IVs.
17835 2020-05-20  Richard Biener  <rguenther@suse.de>
17837         PR middle-end/95231
17838         * tree-inline.c (remap_gimple_stmt): Revert adjusting
17839         COND_EXPR and VEC_COND_EXPR for a -fnon-call-exception boundary.
17841 2020-05-20  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
17842             Andre Vieira  <andre.simoesdiasvieira@arm.com>
17844         PR target/94959
17845         * config/arm/arm-protos.h (arm_mode_base_reg_class): Function
17846         declaration.
17847         (mve_vector_mem_operand): Likewise.
17848         * config/arm/arm.c (thumb2_legitimate_address_p): For MVE target check
17849         the load from memory to a core register is legitimate for give mode.
17850         (mve_vector_mem_operand): Define function.
17851         (arm_print_operand): Modify comment.
17852         (arm_mode_base_reg_class): Define.
17853         * config/arm/arm.h (MODE_BASE_REG_CLASS): Modify to add check for
17854         TARGET_HAVE_MVE and expand to arm_mode_base_reg_class on TRUE.
17855         * config/arm/constraints.md (Ux): Likewise.
17856         (Ul): Likewise.
17857         * config/arm/mve.md (mve_mov): Replace constraint Us with Ux and also
17858         add support for missing Vector Store Register and Vector Load Register.
17859         Add a new alternative to support load from memory to PC (or label) in
17860         vector store/load.
17861         (mve_vstrbq_<supf><mode>): Modify constraint Us to Ux.
17862         (mve_vldrbq_<supf><mode>): Modify constriant Us to Ux, predicate to
17863         mve_memory_operand and also modify the MVE instructions to emit.
17864         (mve_vldrbq_z_<supf><mode>): Modify constraint Us to Ux.
17865         (mve_vldrhq_fv8hf): Modify constriant Us to Ux, predicate to
17866         mve_memory_operand and also modify the MVE instructions to emit.
17867         (mve_vldrhq_<supf><mode>): Modify constriant Us to Ux, predicate to
17868         mve_memory_operand and also modify the MVE instructions to emit.
17869         (mve_vldrhq_z_fv8hf): Likewise.
17870         (mve_vldrhq_z_<supf><mode>): Likewise.
17871         (mve_vldrwq_fv4sf): Likewise.
17872         (mve_vldrwq_<supf>v4si): Likewise.
17873         (mve_vldrwq_z_fv4sf): Likewise.
17874         (mve_vldrwq_z_<supf>v4si): Likewise.
17875         (mve_vld1q_f<mode>): Modify constriant Us to Ux.
17876         (mve_vld1q_<supf><mode>): Likewise.
17877         (mve_vstrhq_fv8hf): Modify constriant Us to Ux, predicate to
17878         mve_memory_operand.
17879         (mve_vstrhq_p_fv8hf): Modify constriant Us to Ux, predicate to
17880         mve_memory_operand and also modify the MVE instructions to emit.
17881         (mve_vstrhq_p_<supf><mode>): Likewise.
17882         (mve_vstrhq_<supf><mode>): Modify constriant Us to Ux, predicate to
17883         mve_memory_operand.
17884         (mve_vstrwq_fv4sf): Modify constriant Us to Ux.
17885         (mve_vstrwq_p_fv4sf): Modify constriant Us to Ux and also modify the MVE
17886         instructions to emit.
17887         (mve_vstrwq_p_<supf>v4si): Likewise.
17888         (mve_vstrwq_<supf>v4si): Likewise.Modify constriant Us to Ux.
17889         * config/arm/predicates.md (mve_memory_operand): Define.
17891 2020-05-30  Richard Biener  <rguenther@suse.de>
17893         PR c/95141
17894         * c-fold.c (c_fully_fold_internal): Enhance guard on
17895         overflow_warning.
17897 2020-05-20  Kito Cheng  <kito.cheng@sifive.com>
17899         PR target/90811
17900         * Makefile.in (OBJS): Add adjust-alignment.o.
17901         * adjust-alignment.c (pass_data_adjust_alignment): New.
17902         (pass_adjust_alignment): New.
17903         (pass_adjust_alignment::execute): New.
17904         (make_pass_adjust_alignment): New.
17905         * tree-pass.h (make_pass_adjust_alignment): New.
17906         * passes.def: Add pass_adjust_alignment.
17908 2020-05-19  Alex Coplan  <alex.coplan@arm.com>
17910         PR target/94591
17911         * config/aarch64/aarch64.c (aarch64_evpc_rev_local): Don't match
17912         identity permutation.
17914 2020-05-19  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
17916         * doc/sourcebuild.texi: Document new short_eq_int, ptr_eq_short,
17917         msp430_small, msp430_large and size24plus DejaGNU effective
17918         targets.
17919         Improve grammar in descriptions for size20plus and size32plus effective
17920         targets.
17922 2020-05-19  Jose E. Marchesi  <jose.marchesi@oracle.com>
17924         * config/bpf/bpf.c (bpf_compute_frame_layout): Include space for
17925         callee saved registers only in xBPF.
17926         (bpf_expand_prologue): Save callee saved registers only in xBPF.
17927         (bpf_expand_epilogue): Likewise for restoring.
17928         * doc/invoke.texi (eBPF Options): Document this is activated by
17929         -mxbpf.
17931 2020-05-19  Jose E. Marchesi  <jose.marchesi@oracle.com>
17933         * config/bpf/bpf.opt (mxbpf): New option.
17934         * doc/invoke.texi (Option Summary): Add -mxbpf.
17935         (eBPF Options): Document -mxbbpf.
17937 2020-05-19  Uroš Bizjak  <ubizjak@gmail.com>
17939         PR target/92658
17940         * config/i386/sse.md (<code>v16qiv16hi2): New expander.
17941         (<code>v32qiv32hi2): Ditto.
17942         (<code>v8qiv8hi2): Ditto.
17943         (<code>v16qiv16si2): Ditto.
17944         (<code>v8qiv8si2): Ditto.
17945         (<code>v4qiv4si2): Ditto.
17946         (<code>v16hiv16si2): Ditto.
17947         (<code>v8hiv8si2): Ditto.
17948         (<code>v4hiv4si2): Ditto.
17949         (<code>v8qiv8di2): Ditto.
17950         (<code>v4qiv4di2): Ditto.
17951         (<code>v2qiv2di2): Ditto.
17952         (<code>v8hiv8di2): Ditto.
17953         (<code>v4hiv4di2): Ditto.
17954         (<code>v2hiv2di2): Ditto.
17955         (<code>v8siv8di2): Ditto.
17956         (<code>v4siv4di2): Ditto.
17957         (<code>v2siv2di2): Ditto.
17959 2020-05-19  Kito Cheng  <kito.cheng@sifive.com>
17961         * common/config/riscv/riscv-common.c (riscv_implied_info_t): New.
17962         (riscv_implied_info): New.
17963         (riscv_subset_list): Add handle_implied_ext.
17964         (riscv_subset_list::to_string): New parameter version_p to
17965         control output format.
17966         (riscv_subset_list::handle_implied_ext): New.
17967         (riscv_subset_list::parse_std_ext): Call handle_implied_ext.
17968         (riscv_arch_str): New parameter version_p to control output format.
17969         (riscv_expand_arch): New.
17970         * config/riscv/riscv-protos.h (riscv_arch_str): New parameter,
17971         version_p.
17972         * config/riscv/riscv.h (riscv_expand_arch): New,
17973         (EXTRA_SPEC_FUNCTIONS): Define.
17974         (ASM_SPEC): Transform -march= via riscv_expand_arch.
17976 2020-05-19  Kito Cheng  <kito.cheng@sifive.com>
17978         * riscv-common.c (parse_sv_or_non_std_ext): Rename to
17979         parse_multiletter_ext.
17980         (parse_multiletter_ext): Add parsing `h` and `z`, drop `sx`,
17981         adjust parsing order for 's' and 'x'.
17983 2020-05-19  Richard Biener  <rguenther@suse.de>
17985         * tree-vectorizer.h (_slp_tree::vectype): Add field.
17986         (SLP_TREE_VECTYPE): New.
17987         * tree-vect-slp.c (vect_create_new_slp_node): Initialize
17988         SLP_TREE_VECTYPE.
17989         (vect_create_new_slp_node): Likewise.
17990         (vect_prologue_cost_for_slp): Move here from tree-vect-stmts.c
17991         and simplify.
17992         (vect_slp_analyze_node_operations): Walk nodes children for
17993         invariant costing.
17994         (vect_get_constant_vectors): Use local scope op variable.
17995         * tree-vect-stmts.c (vect_prologue_cost_for_slp_op): Remove here.
17996         (vect_model_simple_cost): Adjust.
17997         (vect_model_store_cost): Likewise.
17998         (vectorizable_store): Likewise.
18000 2020-05-18  Martin Sebor  <msebor@redhat.com>
18002         PR middle-end/92815
18003         * tree-object-size.c (decl_init_size): New function.
18004         (addr_object_size): Call it.
18005         * tree.h (last_field): Declare.
18006         (first_field): Add attribute nonnull.
18008 2020-05-18  Martin Sebor  <msebor@redhat.com>
18010         PR middle-end/94940
18011         * tree-vrp.c (vrp_prop::check_mem_ref): Remove unreachable code.
18012         * tree.c (component_ref_size): Correct the handling or array members
18013         of unions.
18014         Drop a pointless test.
18015         Rename a local variable.
18017 2020-05-18  Jason Merrill  <jason@redhat.com>
18019         * aclocal.m4: Add ax_cxx_compile_stdcxx.m4.
18020         * configure.ac: Use AX_CXX_COMPILE_STDCXX(11).
18022 2020-05-14  Jason Merrill  <jason@redhat.com>
18024         * doc/install.texi (Prerequisites): Update boostrap compiler
18025         requirement to C++11/GCC 4.8.
18027 2020-05-18  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
18029         PR tree-optimization/94952
18030         * gimple-ssa-store-merging.c (pass_store_merging::process_store):
18031         Initialize variables bitpos, bitregion_start, and bitregion_end in
18032         order to silence warnings about use of uninitialized variables.
18034 2020-05-18  Carl Love  <cel@us.ibm.com>
18036         PR target/94833
18037         * config/rs6000/vsx.md (define_expand): Fix instruction generation for
18038         first_match_index_<mode>.
18039         * testsuite/gcc.target/powerpc/builtins-8-p9-runnable.c (main): Add
18040         additional test cases with zero vector elements.
18042 2020-05-18  Uroš Bizjak  <ubizjak@gmail.com>
18044         PR target/95169
18045         * config/i386/i386-expand.c (ix86_expand_int_movcc):
18046          Avoid reversing a non-trapping comparison to a trapping one.
18048 2020-05-18  Alex Coplan  <alex.coplan@arm.com>
18050         * config/arm/arm.c (output_move_double): Fix codegen when loading into
18051         a register pair with an odd base register.
18053 2020-05-18  Uroš Bizjak  <ubizjak@gmail.com>
18055         * config/i386/i386-expand.c (ix86_expand_fp_absneg_operator):
18056         Do not emit FLAGS_REG clobber for TFmode.
18057         * config/i386/i386.md (*<code>tf2_1): Rewrite as
18058         define_insn_and_split.  Mark operands 1 and 2 commutative.
18059         (*nabstf2_1): Ditto.
18060         (absneg SSE splitter): Use MODEF mode iterator instead of SSEMODEF.
18061         Do not swap memory operands.  Simplify RTX generation.
18062         (neg abs SSE splitter): Ditto.
18063         * config/i386/sse.md (*<code><mode>2): Mark operands 1 and 2
18064         commutative.  Do not swap operands.  Simplify RTX generation.
18065         (*nabs<mode>2): Ditto.
18067 2020-05-18  Richard Biener  <rguenther@suse.de>
18069         * tree-vect-slp.c (vect_slp_bb): Start after labels.
18070         (vect_get_constant_vectors): Really place init stmt after scalar defs.
18071         * tree-vect-stmts.c (vect_init_vector_1): Insert before
18072         region begin.
18074 2020-05-18  H.J. Lu  <hongjiu.lu@intel.com>
18076         * config/i386/driver-i386.c (host_detect_local_cpu): Support
18077         Intel Airmont, Tremont, Comet Lake, Ice Lake and Tiger Lake
18078         processor families.
18080 2020-05-18  Richard Biener  <rguenther@suse.de>
18082         PR middle-end/95171
18083         * tree-inline.c (remap_gimple_stmt): Split out trapping compares
18084         when inlining into a non-call EH function.
18086 2020-05-18  Richard Biener  <rguenther@suse.de>
18088         PR tree-optimization/95172
18089         * tree-ssa-loop-im.c (execute_sm): Get flag whether we
18090         eventually need the conditional processing.
18091         (execute_sm_exit): When processing an orderd sequence
18092         avoid doing any conditional processing.
18093         (hoist_memory_references): Pass down whether all edges
18094         have ordered processing for a ref to execute_sm.
18096 2020-05-17 Jeff Law  <law@redhat.com>
18098         * config/h8300/predicates.md (pc_or_label_operand): New predicate.
18099         * config/h8300/jumpcall.md (branch_true, branch_false): Consolidate
18100         into a single pattern using pc_or_label_operand.
18101         * config/h8300/combiner.md (bit branch patterns): Likewise.
18102         * config/h8300/peepholes.md (HImode and SImode branches): Likewise.
18104 2020-05-17  H.J. Lu  <hongjiu.lu@intel.com>
18106         PR target/95021
18107         * config/i386/i386-features.c (has_non_address_hard_reg):
18108         Renamed to ...
18109         (pseudo_reg_set): This.  Return the SET expression.  Ignore
18110         pseudo register push.
18111         (general_scalar_to_vector_candidate_p): Combine single_set and
18112         has_non_address_hard_reg calls to pseudo_reg_set.
18113         (timode_scalar_to_vector_candidate_p): Likewise.
18114         * config/i386/i386.md (*pushv1ti2): New pattern.
18116 2020-05-17  Aldy Hernandez  <aldyh@redhat.com>
18118         Revert:
18119         2020-05-17  Aldy Hernandez  <aldyh@redhat.com>
18121         * tree-vrp.c (operand_less_p): Move to...
18122         * vr-values.c (operand_less_p): ...here.
18123         * tree-vrp.h (operand_less_p): Remove.
18125 2020-05-17  Aldy Hernandez  <aldyh@redhat.com>
18127         * tree-vrp.c (operand_less_p): Move to...
18128         * vr-values.c (operand_less_p): ...here.
18129         * tree-vrp.h (operand_less_p): Remove.
18131 2020-05-17  Aldy Hernandez  <aldyh@redhat.com>
18133         * tree-vrp.c (class vrp_insert): Remove prototype for
18134         live_on_edge.
18136 2020-05-17  Aldy Hernandez  <aldyh@redhat.com>
18138         * tree-vrp.c (class live_names): New.
18139         (live_on_edge): Move into live_names.
18140         (build_assert_expr_for): Move into vrp_insert.
18141         (find_assert_locations_in_bb): Rename from
18142         find_assert_locations_1.
18143         (process_assert_insertions_for): Move into vrp_insert.
18144         (compare_assert_loc): Same.
18145         (remove_range_assertions): Same.
18146         (dump_asserts_for): Rename to vrp_insert::dump.
18147         (debug_asserts_for): Rename to vrp_insert::debug.
18148         (dump_all_asserts): Rename to vrp_insert::dump.
18149         (debug_all_asserts): Rename to vrp_insert::debug.
18151 2020-05-17  Aldy Hernandez  <aldyh@redhat.com>
18153         * tree-vrp.c (class vrp_prop): Move check_all_array_refs,
18154         check_array_ref, check_mem_ref, and search_for_addr_array
18155         into new class...
18156         (class array_bounds_checker): ...here.
18157         (class check_array_bounds_dom_walker): Adjust to use
18158         array_bounds_checker.
18159         (check_all_array_refs): Move into array_bounds_checker and rename
18160         to check.
18161         (class vrp_folder): Make fold_predicate_in private.
18163 2020-05-15 Jeff Law  <law@redhat.com>
18165         * config/h8300/h8300.md (SFI iterator): New iterator for
18166         SFmode and SImode.
18167         * config/h8300/peepholes.md (memory comparison): Use mode
18168         iterator to consolidate 3 patterns into one.
18169         (stack allocation and stack store): Handle SFmode.  Handle
18170         8 byte allocations.
18172 2020-05-15  Segher Boessenkool  <segher@kernel.crashing.org>
18174         * config/rs6000/rs6000-builtin.def (BU_FUTURE_MISC_2): Also require
18175         RS6000_BTM_POWERPC64.
18177 2020-05-15  Uroš Bizjak  <ubizjak@gmail.com>
18179         * config/i386/i386.md (SWI48DWI): New mode iterator.
18180         (*push<mode>2): Allow XMM registers.
18181         (*pushdi2_rex64): Ditto.
18182         (*pushsi2_rex64): Ditto.
18183         (*pushsi2): Ditto.
18184         (push XMM reg splitter): New splitter
18186         (*pushdf) Change "x" operand constraint to "v".
18187         (*pushsf_rex64): Ditto.
18188         (*pushsf): Ditto.
18190 2020-05-15  Richard Biener  <rguenther@suse.de>
18192         PR tree-optimization/92260
18193         * tree-vect-slp.c (vect_get_constant_vectors): Compute
18194         the number of vector stmts in a canonical way.
18196 2020-05-15  Martin Liska  <mliska@suse.cz>
18198         * hsa-gen.c (get_symbol_for_decl): Fix misleading indentation
18199         warning.
18201 2020-05-15  Andrew Stubbs  <ams@codesourcery.com>
18203         * config/gcn/gcn-valu.md (v<expander><mode>3): Fix unsignedp.
18205 2020-05-15  Richard Biener  <rguenther@suse.de>
18207         PR tree-optimization/95133
18208         * gimple-ssa-split-paths.c
18209         (find_block_to_duplicate_for_splitting_paths): Check for
18210         normal edges.
18212 2020-05-15  Christophe Lyon  <christophe.lyon@linaro.org>
18214         * config/arm/arm.c (reg_needs_saving_p): Add support for interrupt
18215         routines.
18216         (arm_compute_save_reg0_reg12_mask): Use reg_needs_saving_p.
18218 2020-05-15  Tobias Burnus  <tobias@codesourcery.com>
18220         PR middle-end/94635
18221         * gimplify.c (gimplify_scan_omp_clauses): For MAP_TO_PSET with
18222         OMP_TARGET_EXIT_DATA, use 'release:' unless the associated
18223         item is 'delete:'.
18225 2020-05-15  Uroš Bizjak  <ubizjak@gmail.com>
18227         PR target/95046
18228         * config/i386/i386.md (isa): Add sse3_noavx.
18229         (enabled): Handle sse3_noavx.
18231         * config/i386/mmx.md (mmx_haddv2sf3): New expander.
18232         (*mmx_haddv2sf3): Rename from mmx_haddv2sf3.  Add SSE/AVX
18233         alternatives.  Match commutative vec_select selector operands.
18234         (*mmx_haddv2sf3_low): New insn pattern.
18236         (*mmx_hsubv2sf3): Add SSE/AVX alternatives.
18237         (*mmx_hsubv2sf3_low): New insn pattern.
18239 2020-05-15  Richard Biener  <rguenther@suse.de>
18241         PR tree-optimization/33315
18242         * tree-ssa-sink.c: Include tree-eh.h.
18243         (sink_stats): Add commoned member.
18244         (sink_common_stores_to_bb): New function implementing store
18245         commoning by sinking to the successor.
18246         (sink_code_in_bb): Call it, pass down TODO_cleanup_cfg returned.
18247         (pass_sink_code::execute): Likewise.  Record commoned stores
18248         in statistics.
18250 2020-05-14  Xiong Hu Luo  <luoxhu@linux.ibm.com>
18252         PR rtl-optimization/37451, part of PR target/61837
18253         * loop-doloop.c (doloop_simplify_count): New function.  Simplify
18254         (add -1; zero_ext; add +1) to zero_ext when not wrapping.
18255         (doloop_modify): Call doloop_simplify_count.
18257 2020-05-14  H.J. Lu  <hongjiu.lu@intel.com>
18259         PR jit/94778
18260         * doc/sourcebuild.texi: Document effective target lgccjit.
18262 2020-05-14  Andrew Stubbs  <ams@codesourcery.com>
18264         * config/gcn/gcn-valu.md (add<mode>3_zext_dup): Change to a
18265         define_expand, and rename the original to ...
18266         (add<mode>3_vcc_zext_dup): ... this, and add a custom VCC operand.
18267         (add<mode>3_zext_dup_exec): Likewise, with ...
18268         (add<mode>3_vcc_zext_dup_exec): ... this.
18269         (add<mode>3_zext_dup2): Likewise, with ...
18270         (add<mode>3_zext_dup_exec): ... this.
18271         (add<mode>3_zext_dup2_exec): Likewise, with ...
18272         (add<mode>3_zext_dup2): ... this.
18273         * config/gcn/gcn.c (gcn_expand_scalar_to_vector_address): Switch
18274         addv64di3_zext* calls to use addv64di3_vcc_zext*.
18276 2020-05-14  Uroš Bizjak  <ubizjak@gmail.com>
18278         PR target/95046
18279         * config/i386/sse.md (truncv2dfv2df2): New insn pattern.
18280         (extendv2sfv2df2): Ditto.
18282 2020-05-14  H.J. Lu  <hongjiu.lu@intel.com>
18284         * configure: Regenerated.
18286 2020-05-14  Christophe Lyon  <christophe.lyon@linaro.org>
18288         * config/arm/arm.c (reg_needs_saving_p): New function.
18289         (use_return_insn): Use reg_needs_saving_p.
18290         (arm_get_vfp_saved_size): Likewise.
18291         (arm_compute_frame_layout): Likewise.
18292         (arm_save_coproc_regs): Likewise.
18293         (thumb1_expand_epilogue): Likewise.
18294         (arm_expand_epilogue_apcs_frame): Likewise.
18295         (arm_expand_epilogue): Likewise.
18297 2020-05-14  Christophe Lyon  <christophe.lyon@linaro.org>
18299         * config/arm/arm.c (thumb1_expand_prologue): Update error message.
18301 2020-05-14  Uroš Bizjak  <ubizjak@gmail.com>
18303         PR target/95046
18304         * config/i386/sse.md (sse2_cvtpi2pd): Add memory to alternative 1.
18306         (floatv2siv2df2): New expander.
18307         (floatunsv2siv2df2): New insn pattern.
18309         (fix_truncv2dfv2si2): New expander.
18310         (fixuns_truncv2dfv2si2): New insn pattern.
18312 2020-05-14  Richard Sandiford  <richard.sandiford@arm.com>
18314         PR target/95105
18315         * config/aarch64/aarch64-sve-builtins.cc
18316         (handle_arm_sve_vector_bits_attribute): Create a copy of the
18317         original type's TYPE_MAIN_VARIANT, then reapply all the differences
18318         between the original type and its main variant.
18320 2020-05-14  Richard Biener  <rguenther@suse.de>
18322         PR middle-end/95118
18323         * real.c (real_to_decimal_for_mode): Make sure we handle
18324         a zero with nonzero exponent.
18326 2020-05-14  Jakub Jelinek  <jakub@redhat.com>
18328         * Makefile.in (GTFILES): Add omp-general.c.
18329         * cgraph.h (struct cgraph_node): Add declare_variant_alt and
18330         calls_declare_variant_alt members and initialize them in the
18331         ctor.
18332         * ipa.c (symbol_table::remove_unreachable_nodes): Handle direct
18333         calls to declare_variant_alt nodes.
18334         * lto-cgraph.c (lto_output_node): Write declare_variant_alt
18335         and calls_declare_variant_alt.
18336         (input_overwrite_node): Read them back.
18337         * omp-simd-clone.c (simd_clone_create): Copy calls_declare_variant_alt
18338         bit.
18339         * tree-inline.c (expand_call_inline): Or in calls_declare_variant_alt
18340         bit.
18341         (tree_function_versioning): Copy calls_declare_variant_alt bit.
18342         * omp-offload.c (execute_omp_device_lower): Call
18343         omp_resolve_declare_variant on direct function calls.
18344         (pass_omp_device_lower::gate): Also enable for
18345         calls_declare_variant_alt functions.
18346         * omp-general.c (omp_maybe_offloaded): Return false after inlining.
18347         (omp_context_selector_matches): Handle the case when
18348         cfun->curr_properties has PROP_gimple_any bit set.
18349         (struct omp_declare_variant_entry): New type.
18350         (struct omp_declare_variant_base_entry): New type.
18351         (struct omp_declare_variant_hasher): New type.
18352         (omp_declare_variant_hasher::hash, omp_declare_variant_hasher::equal):
18353         New methods.
18354         (omp_declare_variants): New variable.
18355         (struct omp_declare_variant_alt_hasher): New type.
18356         (omp_declare_variant_alt_hasher::hash,
18357         omp_declare_variant_alt_hasher::equal): New methods.
18358         (omp_declare_variant_alt): New variables.
18359         (omp_resolve_late_declare_variant): New function.
18360         (omp_resolve_declare_variant): Call omp_resolve_late_declare_variant
18361         when called late.  Create a magic declare_variant_alt fndecl and
18362         cgraph node and return that if decision needs to be deferred until
18363         after gimplification.
18364         * cgraph.c (symbol_table::create_edge): Or in calls_declare_variant_alt
18365         bit.
18367         PR middle-end/95108
18368         * omp-simd-clone.c (struct modify_stmt_info): Add after_stmt member.
18369         (ipa_simd_modify_stmt_ops): For PHIs, only add before first stmt in
18370         entry block if info->after_stmt is NULL, otherwise add after that stmt
18371         and update it after adding each stmt.
18372         (ipa_simd_modify_function_body): Initialize info.after_stmt.
18374         * function.h (struct function): Add has_omp_target bit.
18375         * omp-offload.c (omp_discover_declare_target_fn_r): New function,
18376         old renamed to ...
18377         (omp_discover_declare_target_tgt_fn_r): ... this.
18378         (omp_discover_declare_target_var_r): Call
18379         omp_discover_declare_target_tgt_fn_r instead of
18380         omp_discover_declare_target_fn_r.
18381         (omp_discover_implicit_declare_target): Also queue functions with
18382         has_omp_target bit set, for those walk with
18383         omp_discover_declare_target_fn_r, for declare target to functions
18384         walk with omp_discover_declare_target_tgt_fn_r.
18386 2020-05-14  Uroš Bizjak  <ubizjak@gmail.com>
18388         PR target/95046
18389         * config/i386/mmx.md (mmx_fix_truncv2sfv2si2): Rename from mmx_pf2id.
18390         Add SSE/AVX alternative.  Change operand predicates from
18391         nonimmediate_operand to register_mmxmem_operand.
18392         Enable instruction pattern for TARGET_MMX_WITH_SSE.
18393         (fix_truncv2sfv2si2): New expander.
18394         (fixuns_truncv2sfv2si2): New insn pattern.
18396         (mmx_floatv2siv2sf2): rename from mmx_floatv2si2.
18397         Add SSE/AVX alternative.  Change operand predicates from
18398         nonimmediate_operand to register_mmxmem_operand.
18399         Enable instruction pattern for TARGET_MMX_WITH_SSE.
18400         (floatv2siv2sf2): New expander.
18401         (floatunsv2siv2sf2): New insn pattern.
18403         * config/i386/i386-builtin.def (IX86_BUILTIN_PF2ID):
18404         Update for rename.
18405         (IX86_BUILTIN_PI2FD): Ditto.
18407 2020-05-14  Andreas Krebbel  <krebbel@linux.ibm.com>
18409         * config/s390/s390.c (s390_emit_stack_probe): Call the probe_stack
18410         expander.
18411         * config/s390/s390.md ("@probe_stack2<mode>", "probe_stack"): New
18412         expanders.
18414 2020-05-14  Andreas Krebbel  <krebbel@linux.ibm.com>
18416         * config/s390/s390.c (allocate_stack_space): Add missing updates
18417         of last_probe_offset.
18419 2020-05-14  Andreas Krebbel  <krebbel@linux.ibm.com>
18421         * config/s390/s390.md ("allocate_stack"): Call
18422         anti_adjust_stack_and_probe_stack_clash when stack clash
18423         protection is enabled.
18424         * explow.c (anti_adjust_stack_and_probe_stack_clash): Remove
18425         prototype. Remove static.
18426         * explow.h (anti_adjust_stack_and_probe_stack_clash): Add
18427         prototype.
18429 2020-05-13  Kelvin Nilsen  <kelvin@gcc.gnu.org>
18431         * config/rs6000/altivec.h (vec_extractl): New #define.
18432         (vec_extracth): Likewise.
18433         * config/rs6000/altivec.md (UNSPEC_EXTRACTL): New constant.
18434         (UNSPEC_EXTRACTR): Likewise.
18435         (vextractl<mode>): New expansion.
18436         (vextractl<mode>_internal): New insn.
18437         (vextractr<mode>): New expansion.
18438         (vextractr<mode>_internal): New insn.
18439         * config/rs6000/rs6000-builtin.def (__builtin_altivec_vextdubvlx):
18440         New built-in function.
18441         (__builtin_altivec_vextduhvlx): Likewise.
18442         (__builtin_altivec_vextduwvlx): Likewise.
18443         (__builtin_altivec_vextddvlx): Likewise.
18444         (__builtin_altivec_vextdubvhx): Likewise.
18445         (__builtin_altivec_vextduhvhx): Likewise.
18446         (__builtin_altivec_vextduwvhx): Likewise.
18447         (__builtin_altivec_vextddvhx): Likewise.
18448         (__builtin_vec_extractl): New overloaded built-in function.
18449         (__builtin_vec_extracth): Likewise.
18450         * config/rs6000/rs6000-call.c (altivec_overloaded_builtins):
18451         Define overloaded forms of __builtin_vec_extractl and
18452         __builtin_vec_extracth.
18453         (builtin_function_type): Add cases to mark arguments of new
18454         built-in functions as unsigned.
18455         (rs6000_common_init_builtins): Add
18456         opaque_ftype_opaque_opaque_opaque_opaque.
18457         * config/rs6000/rs6000.md (du_or_d): New mode attribute.
18458         * doc/extend.texi (PowerPC AltiVec Built-in Functions Available
18459         for a Future Architecture): Add description of vec_extractl and
18460         vec_extractr built-in functions.
18462 2020-05-13  Richard Biener  <rguenther@suse.de>
18464         * target.def (add_stmt_cost): Add new vectype parameter.
18465         * targhooks.c (default_add_stmt_cost): Adjust.
18466         * targhooks.h (default_add_stmt_cost): Likewise.
18467         * config/aarch64/aarch64.c (aarch64_add_stmt_cost): Take new
18468         vectype parameter.
18469         * config/arm/arm.c (arm_add_stmt_cost): Likewise.
18470         * config/i386/i386.c (ix86_add_stmt_cost): Likewise.
18471         * config/rs6000/rs6000.c (rs6000_add_stmt_cost): Likewise.
18473         * tree-vectorizer.h (stmt_info_for_cost::vectype): Add.
18474         (dump_stmt_cost): Add new vectype parameter.
18475         (add_stmt_cost): Likewise.
18476         (record_stmt_cost): Likewise.
18477         (record_stmt_cost): Add overload with old signature.
18478         * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost):
18479         Adjust.
18480         (vect_get_known_peeling_cost): Likewise.
18481         (vect_estimate_min_profitable_iters): Likewise.
18482         * tree-vectorizer.c (dump_stmt_cost): Add new vectype parameter.
18483         * tree-vect-stmts.c (record_stmt_cost): Likewise.
18484         (vect_prologue_cost_for_slp_op): Remove stmt_vec_info parameter
18485         and pass down correct vectype and NULL stmt_info.
18486         (vect_model_simple_cost): Adjust.
18487         (vect_model_store_cost): Likewise.
18489 2020-05-13  Richard Biener  <rguenther@suse.de>
18491         * tree-vectorizer.h (SLP_INSTANCE_GROUP_SIZE): Remove.
18492         (_slp_instance::group_size): Likewise.
18493         * tree-vect-loop.c (vectorizable_reduction): The group size
18494         is the number of lanes in the node.
18495         * tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Likewise.
18496         (vect_analyze_slp_instance): Do not set SLP_INSTANCE_GROUP_SIZE,
18497         verify it matches the instance trees number of lanes.
18498         (vect_slp_analyze_node_operations_1): Use the numer of lanes
18499         in the node as group size.
18500         (vect_bb_vectorization_profitable_p): Use the instance root
18501         number of lanes for the size of life.
18502         (vect_schedule_slp_instance): Use the number of lanes as
18503         group_size.
18504         * tree-vect-stmts.c (vectorizable_load): Remove SLP instance
18505         parameter.  Use the number of lanes of the load for the group
18506         size in the gap adjustment code.
18507         (vect_analyze_stmt): Adjust.
18508         (vect_transform_stmt): Likewise.
18510 2020-05-13  Jakub Jelinek  <jakub@redhat.com>
18512         PR debug/95080
18513         * cfgrtl.c (purge_dead_edges): Skip over debug and note insns even
18514         if the last insn is a note.
18516         PR tree-optimization/95060
18517         * tree-ssa-math-opts.c (convert_mult_to_fma_1): Fold a NEGATE_EXPR
18518         if it is the single use of the FMA internal builtin.
18520 2020-05-13  Bin Cheng  <bin.cheng@linux.alibaba.com>
18522         PR tree-optimization/94969
18523         * tree-data-dependence.c (constant_access_functions): Rename to...
18524         (invariant_access_functions): ...this.  Add parameter.  Check for
18525         invariant access function, rather than constant.
18526         (build_classic_dist_vector): Call above function.
18527         * tree-loop-distribution.c (pg_add_dependence_edges): Add comment.
18529 2020-05-13  Hongtao Liu  <hongtao.liu@intel.com>
18531         PR target/94118
18532         * doc/extend.texi (x86Operandmodifiers): Document more x86
18533         operand modifier.
18534         * gcc/config/i386/i386.c: Add comment for operand modifier N and I.
18536 2020-05-12  Giuliano Belinassi  <giuliano.belinassi@usp.br>
18538         * tree-vrp.c (class vrp_insert): New.
18539         (insert_range_assertions): Move to class vrp_insert.
18540         (dump_all_asserts): Same as above.
18541         (dump_asserts_for): Same as above.
18542         (live): Same as above.
18543         (need_assert_for): Same as above.
18544         (live_on_edge): Same as above.
18545         (finish_register_edge_assert_for): Same as above.
18546         (find_switch_asserts): Same as above.
18547         (find_assert_locations): Same as above.
18548         (find_assert_locations_1): Same as above.
18549         (find_conditional_asserts): Same as above.
18550         (process_assert_insertions): Same as above.
18551         (register_new_assert_for): Same as above.
18552         (vrp_prop): New variable fun.
18553         (vrp_initialize): New parameter.
18554         (identify_jump_threads): Same as above.
18555         (execute_vrp): Same as above.
18558 2020-05-12  Keith Packard  <keith.packard@sifive.com>
18560         * config/riscv/riscv.c (riscv_unique_section): New.
18561         (TARGET_ASM_UNIQUE_SECTION): New.
18563 2020-05-12  Craig Blackmore  <craig.blackmore@embecosm.com>
18565         * config.gcc:  Add riscv-shorten-memrefs.o to extra_objs for riscv.
18566         * config/riscv/riscv-passes.def: New file.
18567         * config/riscv/riscv-protos.h (make_pass_shorten_memrefs): Declare.
18568         * config/riscv/riscv-shorten-memrefs.c: New file.
18569         * config/riscv/riscv.c (tree-pass.h): New include.
18570         (riscv_compressed_reg_p): New Function
18571         (riscv_compressed_lw_offset_p): Likewise.
18572         (riscv_compressed_lw_address_p): Likewise.
18573         (riscv_shorten_lw_offset): Likewise.
18574         (riscv_legitimize_address): Attempt to convert base + large_offset
18575         to compressible new_base + small_offset.
18576         (riscv_address_cost): Make anticipated compressed load/stores
18577         cheaper for code size than uncompressed load/stores.
18578         (riscv_register_priority): Move compressed register check to
18579         riscv_compressed_reg_p.
18580         * config/riscv/riscv.h (C_S_BITS): Define.
18581         (CSW_MAX_OFFSET): Define.
18582         * config/riscv/riscv.opt (mshorten-memefs): New option.
18583         * config/riscv/t-riscv (riscv-shorten-memrefs.o): New rule.
18584         (PASSES_EXTRA): Add riscv-passes.def.
18585         * doc/invoke.texi: Document -mshorten-memrefs.
18587         * config/riscv/riscv.c (riscv_new_address_profitable_p): New function.
18588         (TARGET_NEW_ADDRESS_PROFITABLE_P): Define.
18589         * doc/tm.texi: Regenerate.
18590         * doc/tm.texi.in (TARGET_NEW_ADDRESS_PROFITABLE_P):  New hook.
18591         * sched-deps.c (attempt_change): Use old address if it is cheaper than
18592         new address.
18593         * target.def (new_address_profitable_p): New hook.
18594         * targhooks.c (default_new_address_profitable_p): New function.
18595         * targhooks.h (default_new_address_profitable_p): Declare.
18597 2020-05-12  Uroš Bizjak  <ubizjak@gmail.com>
18599         PR target/95046
18600         * config/i386/mmx.md (copysignv2sf3): New expander.
18601         (xorsignv2sf3): Ditto.
18602         (signbitv2sf3): Ditto.
18604 2020-05-12  Uroš Bizjak  <ubizjak@gmail.com>
18606         PR target/95046
18607         * config/i386/mmx.md (fmav2sf4): New insn pattern.
18608         (fmsv2sf4): Ditto.
18609         (fnmav2sf4): Ditto.
18610         (fnmsv2sf4): Ditto.
18612 2020-05-12  H.J. Lu  <hongjiu.lu@intel.com>
18614         * Makefile.in (CET_HOST_FLAGS): New.
18615         (COMPILER): Add $(CET_HOST_FLAGS).
18616         * configure.ac: Add GCC_CET_HOST_FLAGS(CET_HOST_FLAGS) and
18617         AC_SUBST(CET_HOST_FLAGS).  Clear CET_HOST_FLAGS if jit isn't
18618         enabled.
18619         * aclocal.m4: Regenerated.
18620         * configure: Likewise.
18622 2020-05-12  Uroš Bizjak  <ubizjak@gmail.com>
18624         PR target/95046
18625         * config/i386/mmx.md (<code>v2sf2): New insn pattern.
18626         (*mmx_<code>v2sf2): New insn_and_split pattern.
18627         (*mmx_nabsv2sf2): Ditto.
18628         (*mmx_andnotv2sf3): New insn pattern.
18629         (*mmx_<code>v2sf3): Ditto.
18630         * config/i386/i386.md (absneg_op): New code attribute.
18631         * config/i386/i386.c (ix86_build_const_vector): Handle V2SFmode.
18632         (ix86_build_signbit_mask): Ditto.
18634 2020-05-12  Richard Biener  <rguenther@suse.de>
18636         * tree-ssa-live.c (remove_unused_locals): Remove dead debug
18637         bind resets.
18639 2020-05-12  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
18641         * config/msp430/msp430-protos.h (msp430_output_aligned_decl_common):
18642         Update prototype to include "local" argument.
18643         * config/msp430/msp430.c (msp430_output_aligned_decl_common): Add
18644         "local" argument.  Handle local common decls.
18645         * config/msp430/msp430.h (ASM_OUTPUT_ALIGNED_DECL_COMMON): Adjust
18646         msp430_output_aligned_decl_common call with 0 for "local" argument.
18647         (ASM_OUTPUT_ALIGNED_DECL_LOCAL): Define.
18649 2020-05-12  Richard Biener  <rguenther@suse.de>
18651         * cfghooks.c (split_edge): Preserve EDGE_DFS_BACK if set.
18653 2020-05-12  Martin Liska  <mliska@suse.cz>
18655         PR sanitizer/95033
18656         PR sanitizer/95051
18657         * sanopt.c (sanitize_rewrite_addressable_params):
18658         Clear DECL_NOT_GIMPLE_REG_P for argument.
18660 2020-05-12  Richard Sandiford  <richard.sandiford@arm.com>
18662         PR tree-optimization/94980
18663         * tree-vect-generic.c (expand_vector_comparison): Use
18664         vector_element_bits_tree to get the element size in bits,
18665         rather than using TYPE_SIZE.
18666         (expand_vector_condition, vector_element): Likewise.
18668 2020-05-12  Richard Sandiford  <richard.sandiford@arm.com>
18670         PR tree-optimization/94980
18671         * tree-vect-generic.c (build_replicated_const): Take the number
18672         of bits as a parameter, instead of the type of the elements.
18673         (do_plus_minus): Update accordingly, using vector_element_bits
18674         to calculate the correct number of bits.
18675         (do_negate): Likewise.
18677 2020-05-12  Richard Sandiford  <richard.sandiford@arm.com>
18679         PR tree-optimization/94980
18680         * tree.h (vector_element_bits, vector_element_bits_tree): Declare.
18681         * tree.c (vector_element_bits, vector_element_bits_tree): New.
18682         * match.pd: Use the new functions instead of determining the
18683         vector element size directly from TYPE_SIZE(_UNIT).
18684         * tree-vect-data-refs.c (vect_gather_scatter_fn_p): Likewise.
18685         * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): Likewise.
18686         * tree-vect-stmts.c (vect_is_simple_cond): Likewise.
18687         * tree-vect-generic.c (expand_vector_piecewise): Likewise.
18688         (expand_vector_conversion): Likewise.
18689         (expand_vector_addition): Likewise for a TYPE_SIZE_UNIT used as
18690         a divisor.  Convert the dividend to bits to compensate.
18691         * tree-vect-loop.c (vectorizable_live_operation): Call
18692         vector_element_bits instead of open-coding it.
18694 2020-05-12  Jakub Jelinek  <jakub@redhat.com>
18696         * omp-offload.h (omp_discover_implicit_declare_target): Declare.
18697         * omp-offload.c: Include context.h.
18698         (omp_declare_target_fn_p, omp_declare_target_var_p,
18699         omp_discover_declare_target_fn_r, omp_discover_declare_target_var_r,
18700         omp_discover_implicit_declare_target): New functions.
18701         * cgraphunit.c (analyze_functions): Call
18702         omp_discover_implicit_declare_target.
18704 2020-05-12  Richard Biener  <rguenther@suse.de>
18706         * gimple-fold.c (maybe_canonicalize_mem_ref_addr): Canonicalize
18707         literal constant &MEM[..] to a constant literal.
18709 2020-05-12  Richard Biener  <rguenther@suse.de>
18711         PR tree-optimization/95045
18712         * dbgcnt.def (lim): Add debug-counter.
18713         * tree-ssa-loop-im.c: Include dbgcnt.h.
18714         (find_refs_for_sm): Use lim debug counter for store motion
18715         candidates.
18716         (do_store_motion): Rename form store_motion.  Commit edge
18717         insertions...
18718         (store_motion_loop): ... here.
18719         (tree_ssa_lim): Adjust.
18721 2020-05-11  Kelvin Nilsen  <kelvin@gcc.gnu.org>
18723         * config/rs6000/altivec.h (vec_clzm): Rename to vec_cntlzm.
18724         (vec_ctzm): Rename to vec_cnttzm.
18725         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
18726         Change fourth operand for vec_ternarylogic to require
18727         compatibility with unsigned SImode rather than unsigned QImode.
18728         * config/rs6000/rs6000-call.c (altivec_overloaded_builtins):
18729         Remove overloaded forms of vec_gnb that are no longer needed.
18730         * doc/extend.texi (PowerPC AltiVec Built-in Functions Available
18731         for a Future Architecture): Replace vec_clzm with vec_cntlzm;
18732         replace vec_ctzm with vec_cntlzm; remove four unwanted forms of
18733         vec_gnb; move vec_ternarylogic documentation into this section
18734         and replace const unsigned char with const unsigned int as its
18735         fourth argument.
18737 2020-05-11  Carl Love  <cel@us.ibm.com>
18739         * config/rs6000/altivec.h (vec_genpcvm): New #define.
18740         * config/rs6000/rs6000-builtin.def (XXGENPCVM_V16QI): New built-in
18741         instantiation.
18742         (XXGENPCVM_V8HI): Likewise.
18743         (XXGENPCVM_V4SI): Likewise.
18744         (XXGENPCVM_V2DI): Likewise.
18745         (XXGENPCVM): New overloaded built-in instantiation.
18746         * config/rs6000/rs6000-call.c (altivec_overloaded_builtins): Add
18747         entries for FUTURE_BUILTIN_VEC_XXGENPCVM.
18748         (altivec_expand_builtin): Add special handling for
18749         FUTURE_BUILTIN_VEC_XXGENPCVM.
18750         (builtin_function_type): Add handling for
18751         FUTURE_BUILTIN_XXGENPCVM_{V16QI,V8HI,V4SI,V2DI}.
18752         * config/rs6000/vsx.md (VSX_EXTRACT_I4): New mode iterator.
18753         (UNSPEC_XXGENPCV): New constant.
18754         (xxgenpcvm_<mode>_internal): New insn.
18755         (xxgenpcvm_<mode>): New expansion.
18756         * doc/extend.texi: Add documentation for vec_genpcvm built-ins.
18758 2020-05-11  Kelvin Nilsen  <kelvin@gcc.gnu.org>
18760         * config/rs6000/altivec.h (vec_strir): New #define.
18761         (vec_stril): Likewise.
18762         (vec_strir_p): Likewise.
18763         (vec_stril_p): Likewise.
18764         * config/rs6000/altivec.md (UNSPEC_VSTRIR): New constant.
18765         (UNSPEC_VSTRIL): Likewise.
18766         (vstrir_<mode>): New expansion.
18767         (vstrir_code_<mode>): New insn.
18768         (vstrir_p_<mode>): New expansion.
18769         (vstrir_p_code_<mode>): New insn.
18770         (vstril_<mode>): New expansion.
18771         (vstril_code_<mode>): New insn.
18772         (vstril_p_<mode>): New expansion.
18773         (vstril_p_code_<mode>): New insn.
18774         * config/rs6000/rs6000-builtin.def (__builtin_altivec_vstribr):
18775         New built-in function.
18776         (__builtin_altivec_vstrihr): Likewise.
18777         (__builtin_altivec_vstribl): Likewise.
18778         (__builtin_altivec_vstrihl): Likewise.
18779         (__builtin_altivec_vstribr_p): Likewise.
18780         (__builtin_altivec_vstrihr_p): Likewise.
18781         (__builtin_altivec_vstribl_p): Likewise.
18782         (__builtin_altivec_vstrihl_p): Likewise.
18783         (__builtin_vec_strir): New overloaded built-in function.
18784         (__builtin_vec_stril): Likewise.
18785         (__builtin_vec_strir_p): Likewise.
18786         (__builtin_vec_stril_p): Likewise.
18787         * config/rs6000/rs6000-call.c (altivec_overloaded_builtins):
18788         Define overloaded forms of __builtin_vec_strir,
18789         __builtin_vec_stril, __builtin_vec_strir_p, and
18790         __builtin_vec_stril_p.
18791         * doc/extend.texi (PowerPC AltiVec Built-in Functions Available
18792         for a Future Architecture): Add description of vec_stril,
18793         vec_stril_p, vec_strir, and vec_strir_p built-in functions.
18795 2020-05-11  Kelvin Nilsen  <wschmidt@linux.ibm.com>
18797         * config/rs6000/altivec.h (vec_ternarylogic): New #define.
18798         * config/rs6000/altivec.md (UNSPEC_XXEVAL): New constant.
18799         (xxeval): New insn.
18800         * config/rs6000/predicates.md (u8bit_cint_operand): New predicate.
18801         * config/rs6000/rs6000-builtin.def: Add handling of new macro
18802         RS6000_BUILTIN_4.
18803         (BU_FUTURE_V_4): New macro. Use it.
18804         (BU_FUTURE_OVERLOAD_4): Likewise.
18805         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Add
18806         handling for quaternary built-in functions.
18807         (altivec_resolve_overloaded_builtin): Add special-case handling
18808         for __builtin_vec_xxeval.
18809         * config/rs6000/rs6000-call.c: Add handling of new macro
18810         RS6000_BUILTIN_4 in initialization of rs6000_builtin_info,
18811         bdesc0_arg, bdesc1_arg, bdesc2_arg, bdesc_3arg,
18812         bdesc_altivec_preds, bdesc_abs, and bdesc_htm arrays.
18813         (altivec_overloaded_builtins): Add definitions for
18814         FUTURE_BUILTIN_VEC_XXEVAL.
18815         (bdesc_4arg): New array.
18816         (htm_expand_builtin): Add handling for quaternary built-in
18817         functions.
18818         (rs6000_expand_quaternop_builtin): New function.
18819         (rs6000_expand_builtin): Add handling for quaternary built-in
18820         functions.
18821         (rs6000_init_builtins): Initialize builtin_mode_to_type entries
18822         for unsigned QImode and unsigned HImode.
18823         (builtin_quaternary_function_type): New function.
18824         (rs6000_common_init_builtins): Add handling of quaternary
18825         operations.
18826         * config/rs6000/rs6000.h (RS6000_BTC_QUATERNARY): New defined
18827         constant.
18828         (RS6000_BTC_PREDICATE): Change value of constant.
18829         (RS6000_BTC_ABS): Likewise.
18830         (rs6000_builtins): Add support for new macro RS6000_BUILTIN_4.
18831         * doc/extend.texi (PowerPC AltiVec Built-In Functions Available
18832         for a Future Architecture): Add description of vec_ternarylogic
18833         built-in function.
18835 2020-05-11  Kelvin Nilsen  <kelvin@gcc.gnu.org>
18837         * config/rs6000/rs6000-builtin.def (__builtin_pdepd): New built-in
18838         function.
18839         (__builtin_pextd): Likewise.
18840         * config/rs6000/rs6000.md (UNSPEC_PDEPD): New constant.
18841         (UNSPEC_PEXTD): Likewise.
18842         (pdepd): New insn.
18843         (pextd): Likewise.
18844         * doc/extend.texi (Basic PowerPC Built-in Functions Available for
18845         a Future Architecture): Add descriptions of __builtin_pdepd and
18846         __builtin_pextd functions.
18848 2020-05-11  Kelvin Nilsen  <kelvin@gcc.gnu.org>
18850         * config/rs6000/altivec.h (vec_clrl): New #define.
18851         (vec_clrr): Likewise.
18852         * config/rs6000/altivec.md (UNSPEC_VCLRLB): New constant.
18853         (UNSPEC_VCLRRB): Likewise.
18854         (vclrlb): New insn.
18855         (vclrrb): Likewise.
18856         * config/rs6000/rs6000-builtin.def (__builtin_altivec_vclrlb): New
18857         built-in function.
18858         (__builtin_altivec_vclrrb): Likewise.
18859         (__builtin_vec_clrl): New overloaded built-in function.
18860         (__builtin_vec_clrr): Likewise.
18861         * config/rs6000/rs6000-call.c (altivec_overloaded_builtins):
18862         Define overloaded forms of __builtin_vec_clrl and
18863         __builtin_vec_clrr.
18864         * doc/extend.texi (PowerPC AltiVec Built-in Functions Available
18865         for a Future Architecture): Add descriptions of vec_clrl and
18866         vec_clrr.
18868 2020-05-11  Kelvin Nilsen  <kelvin@gcc.gnu.org>
18870         * config/rs6000/rs6000-builtin.def (__builtin_cntlzdm): New
18871         built-in function definition.
18872         (__builtin_cnttzdm): Likewise.
18873         * config/rs6000/rs6000.md (UNSPEC_CNTLZDM): New constant.
18874         (UNSPEC_CNTTZDM): Likewise.
18875         (cntlzdm): New insn.
18876         (cnttzdm): Likewise.
18877         * doc/extend.texi (Basic PowerPC Built-in Functions available for
18878         a Future Architecture): Add descriptions of __builtin_cntlzdm and
18879         __builtin_cnttzdm functions.
18881 2020-05-11  Uroš Bizjak  <ubizjak@gmail.com>
18883         PR target/95046
18884         * config/i386/mmx.md (sqrtv2sf2): New insn pattern.
18886 2020-05-11  Kelvin Nilsen  <kelvin@gcc.gnu.org>
18888         * config/rs6000/altivec.h (vec_cfuge): New #define.
18889         * config/rs6000/altivec.md (UNSPEC_VCFUGED): New constant.
18890         (vcfuged): New insn.
18891         * config/rs6000/rs6000-builtin.def (__builtin_altivec_vcfuged):
18892         New built-in function.
18893         * config/rs6000/rs6000-call.c (builtin_function_type): Add
18894         handling for FUTURE_BUILTIN_VCFUGED case.
18895         * doc/extend.texi (PowerPC AltiVec Built-in Functions Available
18896         for a Future Architecture): Add description of vec_cfuge built-in
18897         function.
18899 2020-05-11  Kelvin Nilsen  <kelvin@gcc.gnu.org>
18901         * config/rs6000/rs6000-builtin.def (BU_FUTURE_MISC_0): New
18902         #define.
18903         (BU_FUTURE_MISC_1): Likewise.
18904         (BU_FUTURE_MISC_2): Likewise.
18905         (BU_FUTURE_MISC_3): Likewise.
18906         (__builtin_cfuged): New built-in function definition.
18907         * config/rs6000/rs6000.md (UNSPEC_CFUGED): New constant.
18908         (cfuged): New insn.
18909         * doc/extend.texi (Basic PowerPC Built-in Functions Available for
18910         a Future Architecture): New subsubsection.
18912 2020-05-11  Richard Biener  <rguenther@suse.de>
18914         PR tree-optimization/95049
18915         * tree-ssa-sccvn.c (set_ssa_val_to): Reject lattice transition
18916         between different constants.
18918 2020-05-11  Richard Sandiford  <richard.sandiford@arm.com>
18920         * tree-pretty-print.c (dump_generic_node): Handle BOOLEAN_TYPEs.
18922 2020-05-11  Kelvin Nilsen  <kelvin@gcc.gnu.org>
18923             Bill Schmidt  <wschmidt@linux.ibm.com>
18925         * config/rs6000/altivec.h (vec_gnb): New #define.
18926         * config/rs6000/altivec.md (UNSPEC_VGNB): New constant.
18927         (vgnb): New insn.
18928         * config/rs6000/rs6000-builtin.def (BU_FUTURE_OVERLOAD_1): New
18929         #define.
18930         (BU_FUTURE_OVERLOAD_2): Likewise.
18931         (BU_FUTURE_OVERLOAD_3): Likewise.
18932         (__builtin_altivec_gnb): New built-in function.
18933         (__buiiltin_vec_gnb): New overloaded built-in function.
18934         * config/rs6000/rs6000-call.c (altivec_overloaded_builtins):
18935         Define overloaded forms of __builtin_vec_gnb.
18936         (rs6000_expand_binop_builtin): Add error checking for 2nd argument
18937         of __builtin_vec_gnb.
18938         (builtin_function_type): Mark return value and arguments unsigned
18939         for FUTURE_BUILTIN_VGNB.
18940         * doc/extend.texi (PowerPC AltiVec Built-in Functions Available
18941         for a Future Architecture): Add description of vec_gnb built-in
18942         function.
18944 2020-05-11  Kelvin Nilsen  <kelvin@gcc.gnu.org>
18945             Bill Schmidt  <wschmidt@linux.ibm.com>
18947         * config/rs6000/altivec.h (vec_pdep): New macro implementing new
18948         built-in function.
18949         (vec_pext): Likewise.
18950         * config/rs6000/altivec.md (UNSPEC_VPDEPD): New constant.
18951         (UNSPEC_VPEXTD): Likewise.
18952         (vpdepd): New insn.
18953         (vpextd): Likewise.
18954         * config/rs6000/rs6000-builtin.def (__builtin_altivec_vpdepd): New
18955         built-in function.
18956         (__builtin_altivec_vpextd): Likewise.
18957         * config/rs6000/rs6000-call.c (builtin_function_type): Add
18958         handling for FUTURE_BUILTIN_VPDEPD and FUTURE_BUILTIN_VPEXTD
18959         cases.
18960         * doc/extend.texi (PowerPC Altivec Built-in Functions Available
18961         for a Future Architecture): Add description of vec_pdep and
18962         vec_pext built-in functions.
18964 2020-05-11  Kelvin Nilsen  <kelvin@gcc.gnu.org>
18965             Bill Schmidt  <wschmidt@linux.ibm.com>
18967         * config/rs6000/altivec.h (vec_clzm): New macro.
18968         (vec_ctzm): Likewise.
18969         * config/rs6000/altivec.md (UNSPEC_VCLZDM): New constant.
18970         (UNSPEC_VCTZDM): Likewise.
18971         (vclzdm): New insn.
18972         (vctzdm): Likewise.
18973         * config/rs6000/rs6000-builtin.def (BU_FUTURE_V_0): New macro.
18974         (BU_FUTURE_V_1): Likewise.
18975         (BU_FUTURE_V_2): Likewise.
18976         (BU_FUTURE_V_3): Likewise.
18977         (__builtin_altivec_vclzdm): New builtin definition.
18978         (__builtin_altivec_vctzdm): Likewise.
18979         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Cause
18980         _ARCH_PWR_FUTURE macro to be defined if OPTION_MASK_FUTURE flag is
18981         set.
18982         * config/rs6000/rs6000-call.c (builtin_function_type): Set return
18983         value and parameter types to be unsigned for VCLZDM and VCTZDM.
18984         * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add
18985         support for TARGET_FUTURE flag.
18986         * config/rs6000/rs6000.h (RS6000_BTM_FUTURE): New macro constant.
18987         * doc/extend.texi (PowerPC Altivec Built-in Functions Available
18988         for a Future Architecture): New subsubsection.
18990 2020-05-11  Richard Biener  <rguenther@suse.de>
18992         PR tree-optimization/94988
18993         PR tree-optimization/95025
18994         * tree-ssa-loop-im.c (seq_entry): Make a struct, add from.
18995         (sm_seq_push_down): Take extra parameter denoting where we
18996         moved the ref to.
18997         (execute_sm_exit): Re-issue sm_other stores in the correct
18998         order.
18999         (sm_seq_valid_bb): When always executed, allow sm_other to
19000         prevail inbetween sm_ord and record their stored value.
19001         (hoist_memory_references): Adjust refs_not_supported propagation
19002         and prune sm_other from the end of the ordered sequences.
19004 2020-05-11  Felix Yang  <felix.yang@huawei.com>
19006         PR target/94991
19007         * config/aarch64/aarch64.md (mov<mode>):
19008         Bitcasts to the equivalent integer mode using gen_lowpart
19009         instead of doing FAIL for scalar floating point move.
19011 2020-05-11  Alex Coplan  <alex.coplan@arm.com>
19013         * config/aarch64/aarch64.c (aarch64_if_then_else_costs): Add case
19014         to correctly calculate cost for new pattern (*csinv3_uxtw_insn3).
19015         * config/aarch64/aarch64.md (*csinv3_utxw_insn1): New.
19016         (*csinv3_uxtw_insn2): New.
19017         (*csinv3_uxtw_insn3): New.
19018         * config/aarch64/iterators.md (neg_not_cs): New.
19020 2020-05-11  Uroš Bizjak  <ubizjak@gmail.com>
19022         PR target/95046
19023         * config/i386/mmx.md (mmx_addv2sf3): Use "v" constraint
19024         instead of "Yv" for AVX alternatives.  Add "prefix" attribute.
19025         (*mmx_addv2sf3): Ditto.
19026         (*mmx_subv2sf3): Ditto.
19027         (*mmx_mulv2sf3): Ditto.
19028         (*mmx_<code>v2sf3): Ditto.
19029         (mmx_ieee_<ieee_maxmin>v2sf3): Ditto.
19031 2020-05-11  Uroš Bizjak  <ubizjak@gmail.com>
19033         PR target/95046
19034         * config/i386/i386.c (ix86_vector_mode_supported_p):
19035         Vectorize 3dNOW! vector modes for TARGET_MMX_WITH_SSE.
19036         * config/i386/mmx.md (*mov<mode>_internal): Do not set
19037         mode of alternative 13 to V2SF for TARGET_MMX_WITH_SSE.
19039         (mmx_addv2sf3): Change operand predicates from
19040         nonimmediate_operand to register_mmxmem_operand.
19041         (addv2sf3): New expander.
19042         (*mmx_addv2sf3): Add SSE/AVX alternatives.  Change operand
19043         predicates from nonimmediate_operand to register_mmxmem_operand.
19044         Enable instruction pattern for TARGET_MMX_WITH_SSE.
19046         (mmx_subv2sf3): Change operand predicate from
19047         nonimmediate_operand to register_mmxmem_operand.
19048         (mmx_subrv2sf3): Ditto.
19049         (subv2sf3): New expander.
19050         (*mmx_subv2sf3): Add SSE/AVX alternatives.  Change operand
19051         predicates from nonimmediate_operand to register_mmxmem_operand.
19052         Enable instruction pattern for TARGET_MMX_WITH_SSE.
19054         (mmx_mulv2sf3): Change operand predicates from
19055         nonimmediate_operand to register_mmxmem_operand.
19056         (mulv2sf3): New expander.
19057         (*mmx_mulv2sf3): Add SSE/AVX alternatives.  Change operand
19058         predicates from nonimmediate_operand to register_mmxmem_operand.
19059         Enable instruction pattern for TARGET_MMX_WITH_SSE.
19061         (mmx_<code>v2sf3): Change operand predicates from
19062         nonimmediate_operand to register_mmxmem_operand.
19063         (<code>v2sf3): New expander.
19064         (*mmx_<code>v2sf3): Add SSE/AVX alternatives.  Change operand
19065         predicates from nonimmediate_operand to register_mmxmem_operand.
19066         Enable instruction pattern for TARGET_MMX_WITH_SSE.
19067         (mmx_ieee_<ieee_maxmin>v2sf3): Ditto.
19069 2020-05-11  Martin Liska  <mliska@suse.cz>
19071         PR c/95040
19072         * common.opt: Fix typo in option description.
19074 2020-05-11  Martin Liska  <mliska@suse.cz>
19076         PR gcov-profile/94928
19077         * gcov-io.h: Add caveat about coverage format parsing and
19078         possible outdated documentation.
19080 2020-05-11  Xiong Hu Luo  <luoxhu@linux.ibm.com>
19082         PR tree-optimization/83403
19083         * tree-affine.c (expr_to_aff_combination): Replace SSA_NAME with
19084         determine_value_range, Add fold conversion of MULT_EXPR, fix the
19085         previous PLUS_EXPR.
19087 2020-05-10  Gerald Pfeifer  <gerald@pfeifer.com>
19089         * config/i386/i386-c.c (ix86_target_macros): Define _ILP32 and
19090         __ILP32__ for 32-bit targets.
19092 2020-05-09  Eric Botcazou  <ebotcazou@adacore.com>
19094         * tree.h (expr_align): Delete.
19095         * tree.c (expr_align): Likewise.
19097 2020-05-09  Hans-Peter Nilsson  <hp@axis.com>
19099         * resource.c (init_resource_info): Filter-out TARGET_FLAGS_REGNUM
19100         from end_of_function_needs.
19102         * config.gcc: Remove support for crisv32-*-* and cris-*-linux*.
19103         * config/cris/t-linux, config/cris/linux.h, config/cris/linux.opt:
19104         Remove.
19105         * config/cris/t-elfmulti: Remove crisv32 multilib.
19106         * config/cris: Remove shared-library and CRIS v32 support.
19108         Move trivially from cc0 to reg:CC model, removing most optimizations.
19109         * config/cris/cris.md: Remove all side-effect patterns and their
19110         splitters.  Remove most peepholes.  Add clobbers of CRIS_CC0_REGNUM
19111         to all but post-reload control-flow and movem insns.  Remove
19112         constraints on all modified expanders.  Remove obsoleted cc0-related
19113         references.
19114         (attr "cc"): Remove alternative "rev".
19115         (mode_iterator BWDD, DI_, SI_): New.
19116         (mode_attr sCC_destc, cmp_op1c, cmp_op2c): New.
19117         ("tst<mode>"): Remove; fold as "M" alternative into compare insn.
19118         ("mstep_shift", "mstep_mul"): Remove patterns.
19119         ("s<rcond>", "s<ocond>", "s<ncond>"): Anonymize.
19120         * config/cris/cris.c: Change all non-condition-code,
19121         non-control-flow emitted insns to add a parallel with clobber of
19122         CRIS_CC0_REGNUM, mostly by changing from gen_rtx_SET with
19123         emit_insn to use of emit_move_insn, gen_add2_insn or
19124         cris_emit_insn, as convenient.
19125         (cris_reg_overlap_mentioned_p)
19126         (cris_normal_notice_update_cc, cris_notice_update_cc): Remove.
19127         (cris_movem_load_rest_p): Don't assume all elements in a
19128         PARALLEL are SETs.
19129         (cris_store_multiple_op_p): Ditto.
19130         (cris_emit_insn): New function.
19131         * cris/cris-protos.h (cris_emit_insn): Declare.
19133         PR target/93372
19134         * config/cris/cris.md (zcond): New code_iterator.
19135         ("*cbranch<mode>4_btstq<CC>"): New insn_and_split.
19137         * config/cris/cris.c (TARGET_FLAGS_REGNUM): Define.
19139         * config/cris/cris.h (REVERSIBLE_CC_MODE): Define to true.
19141         * config/cris/cris.md ("movsi"): For memory destination
19142         post-reload, generate clobberless variant.  Similarly for a
19143         zero-source post-reload.
19144         ("*mov_tomem<mode>_split"): New split.
19145         ("*mov_tomem<mode>"): New insn.
19146         ("enabled", mov_tomem_enabled): Define and use to exclude "x" ->
19147         "Q>m" for less-than-SImode.
19148         ("*mov_fromzero<mode>_split"): New split.
19149         ("*mov_fromzero<mode>"): New insn.
19151         Prepare for cmpelim pass to eliminate redundant compare insns.
19152         * config/cris/cris-modes.def: New file.
19153         * config/cris/cris-protos.h (cris_select_cc_mode): Declare.
19154         (cris_notice_update_cc): Remove left-over declaration.
19155         * config/cris/cris.c (TARGET_CC_MODES_COMPATIBLE): Define.
19156         (cris_select_cc_mode, cris_cc_modes_compatible): New functions.
19157         * config/cris/cris.h (SELECT_CC_MODE): Define.
19158         * config/cris/cris.md (NZSET, NZUSE, NZVCSET, NZVCUSE): New
19159         mode_iterators.
19160         (cond): New code_iterator.
19161         (nzcond): Replacement for incorrect ncond.  All callers changed.
19162         (nzvccond): Replacement for ocond.  All callers changed.
19163         (rnzcond): Replacement for rcond.  All callers changed.
19164         (xCC): New code_attr.
19165         (cmp_op1c, cmp_op0c): Renumber from cmp_op1c and cmp_op2c.  All
19166         users changed.
19167         ("*cmpdi<NZVCSET:mode>"): Rename from "*cmpdi".  Replace
19168         CCmode with iteration over NZVCSET.
19169         ("*cmp_ext<BW:mode><NZVCSET:mode>"): Similarly; rename from
19170         "*cmp_ext<mode>".
19171         ("*cmpsi<NZVCSET:mode>"): Similarly, from "*cmpsi".
19172         ("*cmp<BW:mode><NZVCSET:mode>"): Similarly from "*cmp<mode>".
19173         ("*btst<mode>"): Similarly, from "*btst".
19174         ("*cbranch<mode><code>4"): Rename from "*cbranch<mode>4",
19175         iterating over cond instead of matching the comparison with
19176         ordered_comparison_operator.
19177         ("*cbranch<mode>4_btstq<CC>"): Correct label operand number.
19178         ("b<zcond:code><mode>"): Rename from "b<ncond:code>", iterating
19179         over NZUSE.
19180         ("b<nzvccond:code><mode>"): Similarly from "b<ocond:code>", over
19181         NZVCUSE.  Remove FIXME.
19182         ("*b<nzcond:code>_reversed<mode>"): Similarly from
19183         "*b<ncond:code>_reversed", over NZUSE.
19184         ("*b<nzvccond:code>_reversed<mode>"): Similarly from
19185         "*b<ocond:code>_reversed", over NZVCUSE.  Remove FIXME.
19186         ("b<rnzcond:code><mode>"): Similarly from "b<rcond:code>",
19187         over NZUSE.  Reinstate "b<oCC>" vs. "b<CC>" mnemonic choice,
19188         depending on CC_NZmode vs. CCmode.  Remove FIXME.
19189         ("*b<rnzcond:code>_reversed<mode>"): Similarly from
19190         "*b<rcond:code>_reversed", over NZUSE.
19191         ("*cstore<mode><code>4"): Rename from "*cstore<mode>4",
19192         iterating over cond instead of matching the comparison with
19193         ordered_comparison_operator.
19194         ("*s<nzcond:code><mode>"): Rename from "*s<ncond:code>",
19195         iterating over NZUSE.
19196         ("*s<rnzcond:code><mode>"): Similar from "*s<rcond:code>", over
19197         NZUSE.  Reinstate "b<oCC>" vs. "b<CC>" mnemonic choice,
19198         depending on CC_NZmode vs. CCmode.
19199         ("*s<nzvccond:code><mode>"): Simlar from "*s<ocond:code>", over
19200         NZVCUSE.  Remove FIXME.
19201         ("cc"): Comment on new use.
19202         ("cc_enabled"): New attribute.
19203         ("enabled"): Make default fall back to cc_enabled.
19204         ("setnz", "ccnz", "setnzvc", "ccnzvc", "setcc", "cccc"): New
19205         default_subst_attrs.
19206         ("setnz_subst", "setnzvc_subst", "setcc_subst"): New default_subst.
19207         ("*movsi_internal<setcc><setnz><setnzvc>"): Rename from
19208         "*movsi_internal".  Correct contents of, and rename attribute
19209         "cc" to "cc<cccc><ccnz><ccnzvc>".
19210         ("anz", "anzvc", "acc"): New define_subst_attrs.
19211         ("<acc><anz><anzvc>movhi<setcc><setnz><setnzvc>"): Rename from
19212         "movhi".  Rename "cc" attribute to "cc<cccc><ccnz><ccnzvc>".
19213         ("<acc><anz><anzvc>movqi<setcc><setnz><setnzvc>"): Similar from
19214         "movqi".  Correct contents of, and rename "cc" attribute to
19215         "cc<cccc><ccnz><ccnzvc>".
19216         ("*b<zcond:code><mode>"): Rename from "b<zcond:code><mode>".
19217         ("*b<nzvccond:code><mode>"): Rename from "b<nzvccond:code><mode>".
19218         ("*b<rnzcond:code><mode>"): Rename from "*b<rnzcond:code><mode>".
19219         ("<acc><anz><anzvc>extend<mode>si2<setcc><setnz><setnzvc>"):
19220         Rename from "extend<mode>si2".
19221         ("<acc><anz><anzvc>zero_extend<mode>si2<setcc><setnz><setnzvc>"):
19222         Similar, from "zero_extend<mode>si2".
19223         ("*adddi3<setnz>"): Rename from "*adddi3".
19224         ("*subdi3<setnz>"): Similarly from "*subdi3".
19225         ("*addsi3<setnz>"): Similarly from "*addsi3".
19226         ("*subsi3<setnz>"): Similarly from "*subsi3".
19227         ("*addhi3<setnz>"): Similarly from "*addhi3" and decorate the
19228         "cc" attribute to "cc<ccnz>".
19229         ("*addqi3<setnz>"): Similarly from "*addqi3".
19230         ("*sub<mode>3<setnz>"): Similarly from "*sub<mode>3".
19231         ("*expanded_andsi<setcc><setnz><setnzvc>"): Rename from
19232         "*expanded_andsi".
19233         ("*iorsi3<setcc><setnz><setnzvc>"): Similar from "*iorsi3".
19234         Decorate "cc" attribute to make "cc<cccc><ccnz><ccnzvc>".
19235         ("*iorhi3<setcc><setnz><setnzvc>"): Similar from "*iorhi3".
19236         ("*iorqi3<setcc><setnz><setnzvc>"): Similar from "*iorqi3".
19237         ("*expanded_andhi<setcc><setnz><setnzvc>"): Similar from
19238         "*expanded_andhi".  Add quick cc-setting alternative for 0..31.
19239         ("*andqi3<setcc><setnz><setnzvc>"): Similar from "*andqi3".
19240         ("<acc><anz><anzvc>xorsi3<setcc><setnz><setnzvc>"): Rename
19241         from "xorsi3".
19242         ("<acc><anz><anzvc>one_cmplsi2<setcc><setnz><setnzvc>"): Rename
19243         from "one_cmplsi2".
19244         ("<acc><anz><anzvc><shlr>si3<setcc><setnz><setnzvc>"): Rename
19245         from "<shlr>si3".
19246         ("<acc><anz><anzvc>clzsi2<setcc><setnz><setnzvc>"): Rename
19247         from "clzsi2".
19248         ("<acc><anz><anzvc>bswapsi2<setcc><setnz><setnzvc>"): Rename
19249         from "bswapsi2".
19250         ("*uminsi3<setcc><setnz><setnzvc>"): Rename from "*uminsi3".
19252         * config/cris/cris-modes.def (CC_ZnN): New CC_MODE.
19253         * config/cris/cris.c (cris_rtx_costs): Handle pre-split bit-test
19254         * config/cris/cris.md (ZnNNZSET, ZnNNZUSE): New mode_iterators.
19255         (znnCC, rznnCC): New code_attrs.
19256         ("*btst<mode>"): Iterator over ZnNNZSET instead of NZVCSET.  Remove
19257         obseolete comment.  Add belt-and-suspenders mode-test to condition.
19258         Add fixme regarding remaining matched-but-not-generated case.
19259         ("*cbranch<mode>4_btstrq1_<CC>"): New insn_and_split.
19260         ("*cbranch<mode>4_btstqb0_<CC>"): Rename from
19261         "*cbranch<mode>4_btstq<CC>".  Split to CC_NZ instead of CC.
19262         ("*b<zcond:code><mode>"): Iterate over ZnNNZUSE instead of NZUSE.
19263         Handle output of CC_ZnNmode.
19264         ("*b<nzcond:code>_reversed<mode>"): Ditto.
19266         * config/cris/cris.c (cris_select_cc_mode): Return CC_NZmode for
19267         NEG too.  Correct comment.
19268         * config/cris/cris.md ("<anz>neg<mode>2<setnz>"): Rename from
19269         "neg<mode>2".
19271 2020-05-08  Vladimir Makarov  <vmakarov@redhat.com>
19273         * ira-color.c (update_costs_from_allocno): Remove
19274         conflict_cost_update_p argument.  Propagate costs only along
19275         threads. Always do conflict cost update.  Add printing debugging
19276         info.
19277         (update_costs_from_copies): Add printing debugging info.
19278         (restore_costs_from_copies): Ditto.
19279         (assign_hard_reg): Improve debug info.
19280         (push_only_colorable): Ditto. Call update_costs_from_prefs.
19281         (color_allocnos): Remove update_costs_from_prefs.
19283 2020-05-08  Richard Biener  <rguenther@suse.de>
19285         * tree-vectorizer.h (vec_info::slp_loads): New.
19286         (vect_optimize_slp): Declare.
19287         * tree-vect-slp.c (vect_attempt_slp_rearrange_stmts):  Do
19288         nothing when there are no loads.
19289         (vect_gather_slp_loads): Gather loads into a vector.
19290         (vect_supported_load_permutation_p): Remove.
19291         (vect_analyze_slp_instance): Do not verify permutation
19292         validity here.
19293         (vect_analyze_slp): Optimize permutations of reductions
19294         after all SLP instances have been gathered and gather
19295         all loads.
19296         (vect_optimize_slp): New function split out from
19297         vect_supported_load_permutation_p.  Elide some permutations.
19298         (vect_slp_analyze_bb_1): Call vect_optimize_slp.
19299         * tree-vect-loop.c (vect_analyze_loop_2): Likewise.
19300         * tree-vect-stmts.c (vectorizable_load): Check whether
19301         the load can be permuted.  When generating code assert we can.
19303 2020-05-08  Richard Biener  <rguenther@suse.de>
19305         * tree-ssa-sccvn.c (rpo_avail): Change type to
19306         eliminate_dom_walker *.
19307         (eliminate_with_rpo_vn): Adjust rpo_avail to make vn_valueize
19308         use the DOM walker availability.
19309         (vn_reference_fold_indirect): Use get_addr_base_and_unit_offset_1
19310         with vn_valueize as valueization callback.
19311         (vn_reference_maybe_forwprop_address): Likewise.
19312         * tree-dfa.c (get_addr_base_and_unit_offset_1): Also valueize
19313         array_ref_low_bound.
19315 2020-05-08  Jakub Jelinek  <jakub@redhat.com>
19317         PR tree-optimization/94786
19318         * match.pd (A ^ ((A ^ B) & -(C cmp D)) -> (C cmp D) ? B : A): New
19319         simplification.
19321         PR target/94857
19322         * config/i386/i386.md (peephole2 after *add<mode>3_cc_overflow_1): New
19323         define_peephole2.
19325         PR middle-end/94724
19326         * tree.c (get_narrower): Reuse the op temporary instead of
19327         shadowing it.
19329         PR tree-optimization/94783
19330         * match.pd ((X + (X >> (prec - 1))) ^ (X >> (prec - 1)) to abs (X)):
19331         New simplification.
19333         PR tree-optimization/94956
19334         * match.pd (FFS): Optimize __builtin_ffs* of non-zero argument into
19335         __builtin_ctz* + 1 if direct IFN_CTZ is supported.
19337         PR tree-optimization/94913
19338         * match.pd (A - B + -1 >= A to B >= A): New simplification.
19339         (A - B > A to A < B): Don't test TYPE_OVERFLOW_WRAPS which is always
19340         true for TYPE_UNSIGNED integral types.
19342         PR bootstrap/94961
19343         PR rtl-optimization/94516
19344         * rtl.h (remove_reg_equal_equiv_notes): Add a bool argument defaulted
19345         to false.
19346         * rtlanal.c (remove_reg_equal_equiv_notes): Add no_rescan argument.
19347         Call df_notes_rescan if that argument is not true and returning true.
19348         * combine.c (adjust_for_new_dest): Pass true as second argument to
19349         remove_reg_equal_equiv_notes.
19350         * postreload.c (reload_combine_recognize_pattern): Don't call
19351         df_notes_rescan.
19353 2020-05-07  Segher Boessenkool  <segher@kernel.crashing.org>
19355         * config/rs6000/rs6000.md (*setnbc_<un>signed_<GPR:mode>): New
19356         define_insn.
19357         (*setnbcr_<un>signed_<GPR:mode>): New define_insn.
19358         (*neg_eq_<mode>): Avoid for TARGET_FUTURE; add missing && 1.
19359         (*neg_ne_<mode>): Likewise.
19361 2020-05-07  Segher Boessenkool  <segher@kernel.crashing.org>
19363         * config/rs6000/rs6000.md (setbc_<un>signed_<GPR:mode>): New
19364         define_insn.
19365         (*setbcr_<un>signed_<GPR:mode>): Likewise.
19366         (cstore<mode>4): Use setbc[r] if available.
19367         (<code><GPR:mode><GPR2:mode>2_isel): Avoid for TARGET_FUTURE.
19368         (eq<mode>3): Use setbc for TARGET_FUTURE.
19369         (*eq<mode>3): Avoid for TARGET_FUTURE.
19370         (ne<mode>3): Replace :P with :GPR; use setbc for TARGET_FUTURE;
19371         else for non-Pmode, use gen_eq and gen_xor.
19372         (*ne<mode>3): Avoid for TARGET_FUTURE.
19373         (*eqsi3_ext<mode>): Avoid for TARGET_FUTURE; fix missing && 1.
19375 2020-05-07 Jeff Law  <law@redhat.com>
19377         * config/h8300/h8300.md: Move expanders and patterns into
19378         files based on functionality.
19379         * config/h8300/addsub.md: New file.
19380         * config/h8300/bitfield.md: New file
19381         * config/h8300/combiner.md: New file
19382         * config/h8300/divmod.md: New file
19383         * config/h8300/extensions.md: New file
19384         * config/h8300/jumpcall.md: New file
19385         * config/h8300/logical.md: New file
19386         * config/h8300/movepush.md: New file
19387         * config/h8300/multiply.md: New file
19388         * config/h8300/other.md: New file
19389         * config/h8300/proepi.md: New file
19390         * config/h8300/shiftrotate.md: New file
19391         * config/h8300/testcompare.md: New file
19393         * config/h8300/h8300.md (adds/subs splitters): Merge into single
19394         splitter.
19395         (negation expanders and patterns): Simplify and combine using
19396         iterators.
19397         (one_cmpl expanders and patterns): Likewise.
19398         (tablejump, indirect_jump patterns ): Likewise.
19399         (shift and rotate expanders and patterns): Likewise.
19400         (absolute value expander and pattern): Drop expander, rename pattern
19401         to just "abssf2"
19402         (peephole2 patterns): Move into...
19403         * config/h8300/peepholes.md: New file.
19404         
19405         * config/h8300/constraints.md (L and N): Simplify now that we're not
19406         longer supporting the original H8/300 chip.
19407         * config/h8300/elf.h (LINK_SPEC): Likewise.  Default to H8/300H.
19408         * config/h8300/h8300.c (shift_alg_qi): Drop H8/300 support.
19409         (shift_alg_hi, shift_alg_si): Similarly.
19410         (h8300_option_overrides): Similarly.  Default to H8/300H.  If
19411         compiling for H8/S, then turn off H8/300H.  Do not update the
19412         shift_alg tables for H8/300 port.
19413         (h8300_emit_stack_adjustment): Remove support for H8/300.  Simplify
19414         where possible.
19415         (push, split_adds_subs, h8300_rtx_costs): Likewise.
19416         (h8300_print_operand, compute_mov_length): Likewise.
19417         (output_plussi, compute_plussi_length): Likewise.
19418         (compute_plussi_cc, output_logical_op): Likewise.
19419         (compute_logical_op_length, compute_logical_op_cc): Likewise.
19420         (get_shift_alg, h8300_shift_needs_scratch): Likewise.
19421         (output_a_shift, compute_a_shift_length): Likewise.
19422         (output_a_rotate, compute_a_rotate_length): Likewise.
19423         (output_simode_bld, h8300_hard_regno_mode_ok): Likewise.
19424         (h8300_modes_tieable_p, h8300_return_in_memory): Likewise.
19425         * config/h8300/h8300.h (TARGET_CPU_CPP_BUILTINS): Likewise.
19426         (attr_cpu, TARGET_H8300): Remove.
19427         (TARGET_DEFAULT): Update.
19428         (UNITS_PER_WORD, PARM_BOUNDARY): Simplify where possible.
19429         (BIGGEST_ALIGNMENT, STACK_BOUNDARY): Likewise.
19430         (CONSTANT_ADDRESS_P, MOVE_MAX, Pmode): Likewise.
19431         (SIZE_TYPE, POINTER_SIZE, ASM_WORD_OP): Likewise.
19432         * config/h8300/h8300.md: Simplify patterns throughout.
19433         * config/h8300/t-h8300: Update multilib configuration.
19434         
19435         * config/h8300/h8300.h (LINK_SPEC): Remove.
19436         (USER_LABEL_PREFIX): Likewise.
19438         * config/h8300/h8300.c (h8300_asm_named_section): Remove.
19439         (h8300_option_override): Remove remnants of COFF support.
19441 2020-05-07  Alan Modra  <amodra@gmail.com>
19443         * tree-ssa-reassoc.c (optimize_range_tests_to_bit_test): Replace
19444         set_rtx_cost with set_src_cost.
19445         * tree-switch-conversion.c (bit_test_cluster::emit): Likewise.
19447 2020-05-07  Kewen Lin  <linkw@gcc.gnu.org>
19449         * tree-vect-stmts.c (vectorizable_load): Check alignment to avoid
19450         redundant half vector handlings for no peeling gaps.
19452 2020-05-07  Giuliano Belinassi  <giuliano.belinassi@usp.br>
19454         * tree-ssa-operands.c (operands_scanner): New class.
19455         (operands_bitmap_obstack): Remove.
19456         (n_initialized): Remove.
19457         (build_uses): Move to operands_scanner class.
19458         (build_vuse): Same as above.
19459         (build_vdef): Same as above.
19460         (verify_ssa_operands): Same as above.
19461         (finalize_ssa_uses): Same as above.
19462         (cleanup_build_arrays): Same as above.
19463         (finalize_ssa_stmt_operands): Same as above.
19464         (start_ssa_stmt_operands): Same as above.
19465         (append_use): Same as above.
19466         (append_vdef): Same as above.
19467         (add_virtual_operand): Same as above.
19468         (add_stmt_operand): Same as above.
19469         (get_mem_ref_operands): Same as above.
19470         (get_tmr_operands): Same as above.
19471         (maybe_add_call_vops): Same as above.
19472         (get_asm_stmt_operands): Same as above.
19473         (get_expr_operands): Same as above.
19474         (parse_ssa_operands): Same as above.
19475         (finalize_ssa_defs): Same as above.
19476         (build_ssa_operands): Same as above, plus create a C-like wrapper.
19477         (update_stmt_operands): Create an instance of operands_scanner.
19479 2020-05-07  Richard Biener  <rguenther@suse.de>
19481         PR ipa/94947
19482         * tree-ssa-structalias.c (refered_from_nonlocal_fn): Use
19483         DECL_EXTERNAL || TREE_PUBLIC instead of externally_visible.
19484         (refered_from_nonlocal_var): Likewise.
19485         (ipa_pta_execute): Likewise.
19487 2020-05-07  Erick Ochoa <erick.ochoa@theobroma-systems.com>
19489         * gcc/tree-ssa-struct-alias.c: Fix comments
19491 2020-05-07  Martin Liska  <mliska@suse.cz>
19493         * doc/invoke.texi: Fix 2 optindex entries.
19495 2020-05-07  Richard Biener  <rguenther@suse.de>
19497         PR middle-end/94703
19498         * tree-core.h (tree_decl_common::gimple_reg_flag): Rename ...
19499         (tree_decl_common::not_gimple_reg_flag): ... to this.
19500         * tree.h (DECL_GIMPLE_REG_P): Rename ...
19501         (DECL_NOT_GIMPLE_REG_P): ... to this.
19502         * gimple-expr.c (copy_var_decl): Copy DECL_NOT_GIMPLE_REG_P.
19503         (create_tmp_reg): Simplify.
19504         (create_tmp_reg_fn): Likewise.
19505         (is_gimple_reg): Check DECL_NOT_GIMPLE_REG_P for all regs.
19506         * gimplify.c (create_tmp_from_val): Simplify.
19507         (gimplify_bind_expr): Likewise.
19508         (gimplify_compound_literal_expr): Likewise.
19509         (gimplify_function_tree): Likewise.
19510         (prepare_gimple_addressable): Set DECL_NOT_GIMPLE_REG_P.
19511         * asan.c (create_odr_indicator): Do not clear DECL_GIMPLE_REG_P.
19512         (asan_add_global): Copy it.
19513         * cgraphunit.c (cgraph_node::expand_thunk): Force args
19514         to be GIMPLE regs.
19515         * function.c (gimplify_parameters): Copy
19516         DECL_NOT_GIMPLE_REG_P.
19517         * ipa-param-manipulation.c
19518         (ipa_param_body_adjustments::common_initialization): Simplify.
19519         (ipa_param_body_adjustments::reset_debug_stmts): Copy
19520         DECL_NOT_GIMPLE_REG_P.
19521         * omp-low.c (lower_omp_for_scan): Do not set DECL_GIMPLE_REG_P.
19522         * sanopt.c (sanitize_rewrite_addressable_params): Likewise.
19523         * tree-cfg.c (make_blocks_1): Simplify.
19524         (verify_address): Do not verify DECL_GIMPLE_REG_P setting.
19525         * tree-eh.c (lower_eh_constructs_2): Simplify.
19526         * tree-inline.c (declare_return_variable): Adjust and
19527         generalize.
19528         (copy_decl_to_var): Copy DECL_NOT_GIMPLE_REG_P.
19529         (copy_result_decl_to_var): Likewise.
19530         * tree-into-ssa.c (pass_build_ssa::execute): Adjust comment.
19531         * tree-nested.c (create_tmp_var_for): Simplify.
19532         * tree-parloops.c (separate_decls_in_region_name): Copy
19533         DECL_NOT_GIMPLE_REG_P.
19534         * tree-sra.c (create_access_replacement): Adjust and
19535         generalize partial def support.
19536         * tree-ssa-forwprop.c (pass_forwprop::execute): Set
19537         DECL_NOT_GIMPLE_REG_P on decls we introduce partial defs on.
19538         * tree-ssa.c (maybe_optimize_var): Handle clearing of
19539         TREE_ADDRESSABLE and setting/clearing DECL_NOT_GIMPLE_REG_P
19540         independently.
19541         * lto-streamer-out.c (hash_tree): Hash DECL_NOT_GIMPLE_REG_P.
19542         * tree-streamer-out.c (pack_ts_decl_common_value_fields): Stream
19543         DECL_NOT_GIMPLE_REG_P.
19544         * tree-streamer-in.c (unpack_ts_decl_common_value_fields): Likewise.
19545         * cfgexpand.c (avoid_type_punning_on_regs): New.
19546         (discover_nonconstant_array_refs): Call
19547         avoid_type_punning_on_regs to avoid unsupported mode punning.
19549 2020-05-07  Alex Coplan  <alex.coplan@arm.com>
19551         * config/arm/arm.c (arm_add_stmt_cost): Fix declaration, remove class
19552         from definition.
19554 2020-05-07  Richard Biener  <rguenther@suse.de>
19556         PR tree-optimization/57359
19557         * tree-ssa-loop-im.c (im_mem_ref::indep_loop): Remove.
19558         (in_mem_ref::dep_loop): Repurpose.
19559         (LOOP_DEP_BIT): Remove.
19560         (enum dep_kind): New.
19561         (enum dep_state): Likewise.
19562         (record_loop_dependence): New function to populate the
19563         dependence cache.
19564         (query_loop_dependence): New function to query the dependence
19565         cache.
19566         (memory_accesses::refs_in_loop): Rename to ...
19567         (memory_accesses::refs_loaded_in_loop): ... this and change to
19568         only record loads.
19569         (outermost_indep_loop): Adjust.
19570         (mem_ref_alloc): Likewise.
19571         (gather_mem_refs_stmt): Likewise.
19572         (mem_refs_may_alias_p): Add tbaa_p parameter and pass it down.
19573         (struct sm_aux): New.
19574         (execute_sm): Split code generation on exits, record state
19575         into new hash-map.
19576         (enum sm_kind): New.
19577         (execute_sm_exit): Exit code generation part.
19578         (sm_seq_push_down): Helper for sm_seq_valid_bb performing
19579         dependence checking on stores reached from exits.
19580         (sm_seq_valid_bb): New function gathering SM stores on exits.
19581         (hoist_memory_references): Re-implement.
19582         (refs_independent_p): Add tbaa_p parameter and pass it down.
19583         (record_dep_loop): Remove.
19584         (ref_indep_loop_p_1): Fold into ...
19585         (ref_indep_loop_p): ... this and generalize for three kinds
19586         of dependence queries.
19587         (can_sm_ref_p): Adjust according to hoist_memory_references
19588         changes.
19589         (store_motion_loop): Don't do anything if the set of SM
19590         candidates is empty.
19591         (tree_ssa_lim_initialize): Adjust.
19592         (tree_ssa_lim_finalize): Likewise.
19594 2020-05-07  Eric Botcazou  <ebotcazou@adacore.com>
19595             Pierre-Marie de Rodat  <derodat@adacore.com>
19597         * dwarf2out.c (add_data_member_location_attribute): Take into account
19598         the variant part offset in the computation of the data bit offset.
19599         (add_bit_offset_attribute): Remove CTX parameter.  Pass a new context
19600         in the call to field_byte_offset.
19601         (gen_field_die): Adjust call to add_bit_offset_attribute and remove
19602         confusing assertion.
19603         (analyze_variant_discr): Deal with boolean subtypes.
19605 2020-05-07  Martin Liska  <mliska@suse.cz>
19607         * lto-wrapper.c: Split arguments of MAKE environment
19608         variable.
19610 2020-05-07  Uroš Bizjak  <ubizjak@gmail.com>
19612         * config/alpha/alpha.c (alpha_atomic_assign_expand_fenv): Use
19613         TARGET_EXPR instead of MODIFY_EXPR for the first assignments to
19614         fenv_var and new_fenv_var.
19616 2020-05-06  Jakub Jelinek  <jakub@redhat.com>
19618         PR target/93069
19619         * config/i386/subst.md (store_mask_constraint, store_mask_predicate):
19620         Remove.
19621         (avx512dq_vextract<shuffletype>64x2_1_maskm,
19622         avx512f_vextract<shuffletype>32x4_1_maskm,
19623         vec_extract_lo_<mode>_maskm, vec_extract_hi_<mode>_maskm): Remove.
19624         (<mask_codefor>avx512dq_vextract<shuffletype>64x2_1<mask_name>): Split
19625         into ...
19626         (*avx512dq_vextract<shuffletype>64x2_1,
19627         avx512dq_vextract<shuffletype>64x2_1_mask): ... these new
19628         define_insns.  Even in the masked variant allow memory output but in
19629         that case use 0 rather than 0C constraint on the source of masked-out
19630         elts.
19631         (<mask_codefor>avx512f_vextract<shuffletype>32x4_1<mask_name>): Split
19632         into ...
19633         (*avx512f_vextract<shuffletype>32x4_1,
19634         avx512f_vextract<shuffletype>32x4_1_mask): ... these new define_insns.
19635         Even in the masked variant allow memory output but in that case use
19636         0 rather than 0C constraint on the source of masked-out elts.
19637         (vec_extract_lo_<mode><mask_name>): Split into ...
19638         (vec_extract_lo_<mode>, vec_extract_lo_<mode>_mask): ... these new
19639         define_insns.  Even in the masked variant allow memory output but in
19640         that case use 0 rather than 0C constraint on the source of masked-out
19641         elts.
19642         (vec_extract_hi_<mode><mask_name>): Split into ...
19643         (vec_extract_hi_<mode>, vec_extract_hi_<mode>_mask): ... these new
19644         define_insns.  Even in the masked variant allow memory output but in
19645         that case use 0 rather than 0C constraint on the source of masked-out
19646         elts.
19648 2020-05-06  qing zhao  <qing.zhao@oracle.com>
19650         PR c/94230
19651         * common.opt: Add -flarge-source-files.
19652         * doc/invoke.texi: Document it.
19653         * toplev.c (process_options): set line_table->default_range_bits
19654         to 0 when flag_large_source_files is true.
19656 2020-05-06  Uroš Bizjak  <ubizjak@gmail.com>
19658         PR target/94913
19659         * config/i386/predicates.md (add_comparison_operator): New predicate.
19660         * config/i386/i386.md (compare->add splitter): New splitters.
19662 2020-05-06  Richard Biener  <rguenther@suse.de>
19664         * tree-vectorizer.h (vect_transform_slp_perm_load): Adjust.
19665         * tree-vect-data-refs.c (vect_slp_analyze_node_dependences):
19666         Remove slp_instance parameter, just iterate over all scalar stmts.
19667         (vect_slp_analyze_instance_dependence): Adjust and likewise.
19668         * tree-vect-slp.c (vect_bb_slp_scalar_cost): Remove unused BB
19669         parameter.
19670         (vect_schedule_slp): Just iterate over all scalar stmts.
19671         (vect_supported_load_permutation_p): Adjust.
19672         (vect_transform_slp_perm_load): Remove slp_instance parameter,
19673         instead use the number of lanes in the node as group size.
19674         * tree-vect-stmts.c (vect_model_load_cost): Get vectorization
19675         factor instead of slp_instance as parameter.
19676         (vectorizable_load): Adjust.
19678 2020-05-06  Andreas Schwab  <schwab@suse.de>
19680         * config/aarch64/driver-aarch64.c: Include "aarch64-protos.h".
19681         (aarch64_get_extension_string_for_isa_flags): Don't declare.
19683 2020-05-06  Richard Biener  <rguenther@suse.de>
19685         PR middle-end/94964
19686         * cfgloopmanip.c (create_preheader): Require non-complex
19687         preheader edge for CP_SIMPLE_PREHEADERS.
19689 2020-05-06  Richard Biener  <rguenther@suse.de>
19691         PR tree-optimization/94963
19692         * tree-ssa-loop-im.c (execute_sm_if_changed): Remove
19693         no-warning marking of the conditional store.
19694         (execute_sm): Instead mark the uninitialized state
19695         on loop entry to be not warned about.
19697 2020-05-06  Hongtao Liu  <hongtao.liu@intel.com>
19699         * common/config/i386/i386-common.c (OPTION_MASK_ISA2_TSXLDTRK_SET,
19700         OPTION_MASK_ISA2_TSXLDTRK_UNSET): New macros.
19701         * config.gcc: Add tsxldtrkintrin.h to extra_headers.
19702         * config/i386/driver-i386.c (host_detect_local_cpu): Detect
19703         TSXLDTRK.
19704         * config/i386/i386-builtin.def: Add new builtins.
19705         * config/i386/i386-c.c (ix86_target_macros_internal): Define
19706         __TSXLDTRK__.
19707         * config/i386/i386-options.c (ix86_target_string): Add
19708         -mtsxldtrk.
19709         (ix86_valid_target_attribute_inner_p): Add attribute tsxldtrk.
19710         * config/i386/i386.h (TARGET_TSXLDTRK, TARGET_TSXLDTRK_P):
19711         New.
19712         * config/i386/i386.md (define_c_enum "unspec"): Add
19713         UNSPECV_SUSLDTRK, UNSPECV_RESLDTRK.
19714         (TSXLDTRK): New define_int_iterator.
19715         ("<tsxldtrk>"): New define_insn.
19716         * config/i386/i386.opt: Add -mtsxldtrk.
19717         * config/i386/immintrin.h: Include tsxldtrkintrin.h.
19718         * config/i386/tsxldtrkintrin.h: New.
19719         * doc/invoke.texi: Document -mtsxldtrk.
19721 2020-05-06  Jakub Jelinek  <jakub@redhat.com>
19723         PR tree-optimization/94921
19724         * match.pd (~(~X - Y) -> X + Y, ~(~X + Y) -> X - Y): New
19725         simplifications.
19727 2020-05-06  Richard Biener  <rguenther@suse.de>
19729         PR tree-optimization/94965
19730         * tree-vect-stmts.c (vectorizable_load): Fix typo.
19732 2020-05-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
19734         * doc/install.texi: Replace Sun with Solaris as appropriate.
19735         (Tools/packages necessary for building GCC, Perl version between
19736         5.6.1 and 5.6.24): Remove Solaris 8 reference.
19737         (Installing GCC: Binaries, Solaris 2 (SPARC, Intel)): Remove
19738         TGCware reference.
19739         (Specific, i?86-*-solaris2*): Update version references for
19740         Solaris 11.3 and later.  Remove gas 2.26 caveat.
19741         (Specific, *-*-solaris2*): Update version references for
19742         Solaris 11.3 and later.  Remove boehm-gc reference.
19743         Document GMP, MPFR caveats on Solaris 11.3.
19744         (Specific, sparc-sun-solaris2*): Update Solaris 9 references.
19745         (Specific, sparc64-*-solaris2*): Likewise.
19746         Document --build requirement.
19748 2020-05-06  Jakub Jelinek  <jakub@redhat.com>
19750         PR target/94950
19751         * config/riscv/riscv-builtins.c (riscv_atomic_assign_expand_fenv): Use
19752         TARGET_EXPR instead of MODIFY_EXPR for first assignment to old_flags.
19754         PR rtl-optimization/94873
19755         * combine.c (combine_instructions): Don't optimize using REG_EQUAL
19756         note if SET_SRC (set) has side-effects.
19758 2020-05-06  Hongtao Liu  <hongtao.liu@intel.com>
19759             Wei Xiao  <wei3.xiao@intel.com>
19761         * common/config/i386/i386-common.c (OPTION_MASK_ISA2_SERIALIZE_SET,
19762         OPTION_MASK_ISA2_SERIALIZE_UNSET): New macros.
19763         (ix86_handle_option): Handle -mserialize.
19764         * config.gcc (serializeintrin.h): New header file.
19765         * config/i386/cpuid.h (bit_SERIALIZE): New bit.
19766         * config/i386/driver-i386.c (host_detect_local_cpu): Detect
19767         -mserialize.
19768         * config/i386/i386-builtin.def: Add new builtin.
19769         * config/i386/i386-c.c (__SERIALIZE__): New macro.
19770         * config/i386/i386-options.c (ix86_target_opts_isa2_opts):
19771           Add -mserialize.
19772         * (ix86_valid_target_attribute_inner_p): Add target attribute
19773         * for serialize.
19774         * config/i386/i386.h (TARGET_SERIALIZE, TARGET_SERIALIZE_P):
19775           New macros.
19776         * config/i386/i386.md (UNSPECV_SERIALIZE): New unspec.
19777           (serialize): New define_insn.
19778         * config/i386/i386.opt (mserialize): New option
19779         * config/i386/immintrin.h: Include serailizeintrin.h.
19780         * config/i386/serializeintrin.h: New header file.
19781         * doc/invoke.texi: Add documents for -mserialize.
19783 2020-05-06  Richard Biener  <rguenther@suse.de>
19785         * tree-cfg.c (verify_gimple_assign_unary): Adjust integer
19786         to/from pointer conversion checking.
19788 2020-05-05  Michael Meissner  <meissner@linux.ibm.com>
19790         * config/rs6000/rs6000-builtin.def: Delete changes meant for a
19791         private branch.
19792         * config/rs6000/rs6000-c.c: Likewise.
19793         * config/rs6000/rs6000-call.c: Likewise.
19794         * config/rs6000/rs6000.c: Likewise.
19796 2020-05-05  Sebastian Huber  <sebastian.huber@embedded-brains.de>
19798         * config/rtems.h (RTEMS_STARTFILE_SPEC): Define if undefined.
19799         (RTEMS_ENDFILE_SPEC): Likewise.
19800         (STARTFILE_SPEC): Update comment.  Add RTEMS_STARTFILE_SPEC.
19801         (ENDFILE_SPEC): Add RTEMS_ENDFILE_SPEC.
19802         (LIB_SPECS): Support -nodefaultlibs option.
19803         * config/or1k/rtems.h (RTEMS_STARTFILE_SPEC): Define.
19804         (RTEMS_ENDFILE_SPEC): Likewise.
19805         * config/rs6000/rtems.h (RTEMS_STARTFILE_SPEC): Likewise.
19806         (RTEMS_ENDFILE_SPEC): Likewise.
19807         * config/v850/rtems.h (RTEMS_STARTFILE_SPEC): Likewise.
19808         (RTEMS_ENDFILE_SPEC): Likewise.
19810 2020-05-05  Dimitar Dimitrov  <dimitar@dinux.eu>
19812         * config/pru/pru.c (pru_hard_regno_call_part_clobbered): Remove.
19813         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Remove.
19815 2020-05-05  Dimitar Dimitrov  <dimitar@dinux.eu>
19817         * config/pru/pru.h: Mark R3.w0 as caller saved.
19819 2020-05-05  Dimitar Dimitrov  <dimitar@dinux.eu>
19821         * config/pru/pru.c (pru_emit_doloop): Use new gen_doloop_end_internal
19822         and gen_doloop_begin_internal.
19823         (pru_reorg_loop): Use gen_pruloop with mode.
19824         * config/pru/pru.md: Use new @insn syntax.
19826 2020-05-05  Dimitar Dimitrov  <dimitar@dinux.eu>
19828         * config/pru/pru.c (pru_print_operand): Fix fall through comment.
19830 2020-05-05  Uroš Bizjak  <ubizjak@gmail.com>
19832         * config/i386/i386.md (fixuns_trunc<mode>si2): Use
19833         "clobber (scratch:M)" instad of "clobber (match_scratch:M N)".
19834         (addqi3_cconly_overflow): Ditto.
19835         (umulv<mode>4): Ditto.
19836         (<s>mul<mode>3_highpart): Ditto.
19837         (tls_global_dynamic_32): Ditto.
19838         (tls_local_dynamic_base_32): Ditto.
19839         (atanxf2): Ditto.
19840         (asinxf2): Ditto.
19841         (acosxf2): Ditto.
19842         (logxf2): Ditto.
19843         (log10xf2): Ditto.
19844         (log2xf2): Ditto.
19845         (*adddi_4): Remove "m" constraint from scratch operand.
19846         (*add<mode>_4): Ditto.
19848 2020-05-05  Jakub Jelinek  <jakub@redhat.com>
19850         PR rtl-optimization/94516
19851         * postreload.c (reload_cse_simplify): When replacing sp = sp + const
19852         with sp = reg, add REG_EQUAL note with sp + const.
19853         * combine-stack-adj.c (try_apply_stack_adjustment): Change return
19854         type from int to bool.  Add LIVE and OTHER_INSN arguments.  Undo
19855         postreload sp = sp + const to sp = reg optimization if needed and
19856         possible.
19857         (combine_stack_adjustments_for_block): Add LIVE argument.  Handle
19858         reg = sp insn with sp + const REG_EQUAL note.  Adjust
19859         try_apply_stack_adjustment caller, call
19860         df_simulate_initialize_forwards and df_simulate_one_insn_forwards.
19861         (combine_stack_adjustments): Allocate and free LIVE bitmap,
19862         adjust combine_stack_adjustments_for_block caller.
19864 2020-05-05  Martin Liska  <mliska@suse.cz>
19866         PR gcov-profile/93623
19867         * tree-cfg.c (stmt_can_terminate_bb_p): Update comment to reflect
19868         reality.
19870 2020-05-05  Martin Liska  <mliska@suse.cz>
19872         * opt-functions.awk (opt_args_non_empty): New function.
19873         * opt-read.awk: Use the function for various option arguments.
19875 2020-05-05  Martin Liska  <mliska@suse.cz>
19877         PR driver/94330
19878         * lto-wrapper.c (run_gcc): When using -flto=jobserver,
19879         report warning when the jobserver is not detected.
19881 2020-05-05  Martin Liska  <mliska@suse.cz>
19883         PR gcov-profile/94636
19884         * gcov.c (main): Print total lines summary at the end.
19885         (generate_results): Expect file_name always being non-null.
19886         Print newline after intermediate file is printed in order to align with
19887         what we do for normal files.
19889 2020-05-05  Martin Liska  <mliska@suse.cz>
19891         * dumpfile.c (dump_switch_p): Change return type
19892         and print option suggestion.
19893         * dumpfile.h: Change return type.
19894         * opts-global.c (handle_common_deferred_options):
19895         Move error into dump_switch_p function.
19897 2020-05-05  Martin Liska  <mliska@suse.cz>
19899         PR c/92472
19900         * alloc-pool.h: Use const for some arguments.
19901         * bitmap.h: Likewise.
19902         * mem-stats.h: Likewise.
19903         * sese.h (get_entry_bb): Likewise.
19904         (get_exit_bb): Likewise.
19906 2020-05-05  Richard Biener  <rguenther@suse.de>
19908         * tree-vect-slp.c (struct vdhs_data): New.
19909         (vect_detect_hybrid_slp): New walker.
19910         (vect_detect_hybrid_slp): Rewrite.
19912 2020-05-05  Richard Biener  <rguenther@suse.de>
19914         PR ipa/94947
19915         * tree-ssa-structalias.c (ipa_pta_execute): Use
19916         varpool_node::externally_visible_p ().
19917         (refered_from_nonlocal_var): Likewise.
19919 2020-05-05  Eric Botcazou  <ebotcazou@adacore.com>
19921         * gcc.c (LTO_PLUGIN_SPEC): Define if not already.
19922         (LINK_PLUGIN_SPEC): Execute LTO_PLUGIN_SPEC.
19923         * config/vxworks.h (LTO_PLUGIN_SPEC): Define.
19925 2020-05-05  Eric Botcazou  <ebotcazou@adacore.com>
19927         * gimplify.c (gimplify_init_constructor): Do not put the constructor
19928         into static memory if it is not complete.
19930 2020-05-05  Richard Biener  <rguenther@suse.de>
19932         PR tree-optimization/94949
19933         * tree-ssa-loop-im.c (execute_sm): Check whether we use
19934         the multithreaded model or always compute the stored value
19935         before eliding a load.
19937 2020-05-05  Alex Coplan  <alex.coplan@arm.com>
19939         * config/aarch64/aarch64.md (*one_cmpl_zero_extend): New.
19941 2020-05-05  Jakub Jelinek  <jakub@redhat.com>
19943         PR tree-optimization/94800
19944         * match.pd (X + (X << C) to X * (1 + (1 << C)),
19945         (X << C1) + (X << C2) to X * ((1 << C1) + (1 << C2))): New
19946         canonicalizations.
19948         PR target/94942
19949         * config/i386/mmx.md (*vec_dupv4hi): Use xYw constraints instead of Yv.
19951         PR tree-optimization/94914
19952         * match.pd ((((type)A * B) >> prec) != 0 to .MUL_OVERFLOW(A, B) != 0):
19953         New simplification.
19955 2020-05-05  Uroš Bizjak  <ubizjak@gmail.com>
19957         * config/i386/i386.md (*testqi_ext_3): Use
19958         int_nonimmediate_operand instead of manual mode checks.
19959         (*x86_mov<SWI48:mode>cc_0_m1_neg_leu<SWI:mode>):
19960         Use int_nonimmediate_operand predicate.  Rewrite
19961         define_insn_and_split pattern to a combine pass splitter.
19963 2020-05-05  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
19965         * configure.ac <i[34567]86-*-*>: Add --32 to tls_as_opt on Solaris.
19966         * configure: Regenerate.
19968 2020-05-05  Jakub Jelinek  <jakub@redhat.com>
19970         PR target/94460
19971         * config/i386/sse.md (avx2_ph<plusminus_mnemonic>wv16hi3,
19972         ssse3_ph<plusminus_mnemonic>wv8hi3, ssse3_ph<plusminus_mnemonic>wv4hi3,
19973         avx2_ph<plusminus_mnemonic>dv8si3, ssse3_ph<plusminus_mnemonic>dv4si3,
19974         ssse3_ph<plusminus_mnemonic>dv2si3): Simplify RTL patterns.
19976 2020-05-04  Clement Chigot  <clement.chigot@atos.net>
19977             David Edelsohn  <dje.gcc@gmail.com>
19979         * config/rs6000/rs6000-call.c (rs6000_init_builtins): Override explicit
19980         for fmodl, frexpl, ldexpl and modfl builtins.
19982 2020-05-04  Richard Sandiford  <richard.sandiford@arm.com>
19984         PR middle-end/94941
19985         * internal-fn.c (expand_load_lanes_optab_fn): Emit a move if the
19986         chosen lhs is different from the gcall lhs.
19987         (expand_mask_load_optab_fn): Likewise.
19988         (expand_gather_load_optab_fn): Likewise.
19990 2020-05-04  Uroš Bizjak  <ubizjak@gmail.com>
19992         PR target/94795
19993         * config/i386/i386.md (*neg<mode>_ccc): New insn pattern.
19994         (EQ compare->LTU compare splitter): New splitter.
19995         (NE compare->NEG splitter): Ditto.
19997 2020-05-04  Marek Polacek  <polacek@redhat.com>
19999         Revert:
20000         2020-04-30  Marek Polacek  <polacek@redhat.com>
20002         PR c++/94775
20003         * tree.c (check_base_type): Return true only if TYPE_USER_ALIGN match.
20004         (check_aligned_type): Check if TYPE_USER_ALIGN match.
20006 2020-05-04  Richard Biener  <rguenther@suse.de>
20008         PR tree-optimization/93891
20009         * tree-ssa-sccvn.c (vn_reference_lookup_3): Fall back to
20010         the original reference tree for assessing access alignment.
20012 2020-05-04  Richard Biener  <rguenther@suse.de>
20014         PR tree-optimization/39612
20015         * tree-ssa-loop-im.c (im_mem_ref::loaded): New member.
20016         (set_ref_loaded_in_loop): New.
20017         (mark_ref_loaded): Likewise.
20018         (gather_mem_refs_stmt): Call mark_ref_loaded for loads.
20019         (execute_sm): Avoid issueing a load when it was not there.
20020         (execute_sm_if_changed): Avoid issueing warnings for the
20021         conditional store.
20023 2020-05-04  Martin Jambor  <mjambor@suse.cz>
20025         PR ipa/93385
20026         * tree-inline.c (tree_function_versioning): Leave any type conversion
20027         of replacements to setup_one_parameter and its friend
20028         force_value_to_type.
20030 2020-05-04  Uroš Bizjak  <ubizjak@gmail.com>
20032         PR target/94650
20033         * config/i386/predicates.md (shr_comparison_operator): New predicate.
20034         * config/i386/i386.md (compare->shr splitter): New splitters.
20036 2020-05-04  Jakub Jelinek  <jakub@redhat.com>
20038         PR tree-optimization/94718
20039         * match.pd ((X < 0) != (Y < 0) into (X ^ Y) < 0): New simplification.
20041         PR tree-optimization/94718
20042         * match.pd (bitop (convert @0) (convert? @1)): For GIMPLE, if we can,
20043         replace two nop conversions on bit_{and,ior,xor} argument
20044         and result with just one conversion on the result or another argument.
20046         PR tree-optimization/94718
20047         * fold-const.c (fold_binary_loc): Move (X & C) eqne (Y & C)
20048         -> (X ^ Y) & C eqne 0 optimization to ...
20049         * match.pd ((X & C) op (Y & C) into (X ^ Y) & C op 0): ... here.
20051         * opts.c (get_option_html_page): Instead of hardcoding a list of
20052         options common between C/C++ and Fortran only use gfortran/
20053         documentation for warnings that have CL_Fortran set but not
20054         CL_C or CL_CXX.
20056 2020-05-03  Uroš Bizjak  <ubizjak@gmail.com>
20058         * config/i386/i386-expand.c (ix86_expand_int_movcc):
20059         Use plus_constant instead of gen_rtx_PLUS with GEN_INT.
20060         (emit_memmov): Ditto.
20061         (emit_memset): Ditto.
20062         (ix86_expand_strlensi_unroll_1): Ditto.
20063         (release_scratch_register_on_entry): Ditto.
20064         (gen_frame_set): Ditto.
20065         (ix86_emit_restore_reg_using_pop): Ditto.
20066         (ix86_emit_outlined_ms2sysv_restore): Ditto.
20067         (ix86_expand_epilogue): Ditto.
20068         (ix86_expand_split_stack_prologue): Ditto.
20069         * config/i386/i386.md (push immediate splitter): Ditto.
20070         (strmov): Ditto.
20071         (strset): Ditto.
20073 2020-05-02  Iain Sandoe  <iain@sandoe.co.uk>
20075         PR translation/93861
20076         * config/darwin-driver.c (darwin_driver_init): Adjust spelling in
20077         a warning.
20079 2020-05-02  Jakub Jelinek  <jakub@redhat.com>
20081         * config/tilegx/tilegx.md
20082         (insn_stnt<I124MODE:n>_add<I48MODE:bitsuffix>): Use <I124MODE:n>
20083         rather than just <n>.
20085 2020-05-01  H.J. Lu  <hongjiu.lu@intel.com>
20087         PR target/93492
20088         * cfgexpand.c (pass_expand::execute): Set crtl->patch_area_size
20089         and crtl->patch_area_entry.
20090         * emit-rtl.h (rtl_data): Add patch_area_size and patch_area_entry.
20091         * opts.c (common_handle_option): Limit
20092         function_entry_patch_area_size and function_entry_patch_area_start
20093         to USHRT_MAX.  Fix a typo in error message.
20094         * varasm.c (assemble_start_function): Use crtl->patch_area_size
20095         and crtl->patch_area_entry.
20096         * doc/invoke.texi: Document the maximum value for
20097         -fpatchable-function-entry.
20099 2020-05-01  Iain Sandoe  <iain@sandoe.co.uk>
20101         * config/i386/darwin.h: Repair SUBTARGET_INIT_BUILTINS.
20102         Override SUBTARGET_SHADOW_OFFSET macro.
20104 2020-05-01  Andreas Tobler  <andreast@gcc.gnu.org>
20106         * config/i386/i386.h: Define a new macro: SUBTARGET_SHADOW_OFFSET.
20107         * config/i386/i386.c (ix86_asan_shadow_offset): Use this macro.
20108         * config/i386/darwin.h: Override the SUBTARGET_SHADOW_OFFSET macro.
20109         * config/i386/freebsd.h: Likewise.
20110         * config/freebsd.h (LIBASAN_EARLY_SPEC): Define.
20111         LIBTSAN_EARLY_SPEC): Likewise. (LIBLSAN_EARLY_SPEC): Likewise.
20113 2020-04-30  Alexandre Oliva <oliva@adacore.com>
20115         * doc/sourcebuild.texi (Effective-Target Keywords): Document
20116         the newly-introduced fileio effective target.
20118 2020-04-30  Richard Sandiford  <richard.sandiford@arm.com>
20120         PR rtl-optimization/94740
20121         * cse.c (cse_process_notes_1): Replace with...
20122         (cse_process_note_1): ...this new function, acting as a
20123         simplify_replace_fn_rtx callback to process_note.  Handle only
20124         REGs and MEMs directly.  Validate the MEM if cse_process_note
20125         changes its address.
20126         (cse_process_notes): Replace with...
20127         (cse_process_note): ...this new function.
20128         (cse_extended_basic_block): Update accordingly, iterating over
20129         the register notes and passing individual notes to cse_process_note.
20131 2020-04-30  Carl Love  <cel@us.ibm.com>
20133         * config/rs6000/emmintrin.h (_mm_movemask_epi8): Fix comment.
20135 2020-04-30  Martin Jambor  <mjambor@suse.cz>
20137         PR ipa/94856
20138         * cgraph.c (clone_of_p): Also consider thunks whih had their bodies
20139         saved by the inliner and thunks which had their call inlined.
20140         * ipa-inline-transform.c (save_inline_function_body): Fill in
20141         former_clone_of of new body holders.
20143 2020-04-30  Jakub Jelinek  <jakub@redhat.com>
20145         * BASE-VER: Set to 11.0.0.
20147 2020-04-30  Jonathan Wakely  <jwakely@redhat.com>
20149         * pretty-print.c (pp_take_prefix): Fix spelling in comment.
20151 2020-04-30  Marek Polacek  <polacek@redhat.com>
20153         PR c++/94775
20154         * tree.c (check_base_type): Return true only if TYPE_USER_ALIGN match.
20155         (check_aligned_type): Check if TYPE_USER_ALIGN match.
20157 2020-04-30  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
20159         * config/aarch64/aarch64.h (TARGET_OUTLINE_ATOMICS): Define.
20160         * config/aarch64/aarch64.opt (moutline-atomics): Change to Int variable.
20161         * doc/invoke.texi (moutline-atomics): Document as on by default.
20163 2020-04-30  Szabolcs Nagy  <szabolcs.nagy@arm.com>
20165         PR target/94748
20166         * config/aarch64/aarch64-bti-insert.c (rest_of_insert_bti): Remove
20167         the check for NOTE_INSN_DELETED_LABEL.
20169 2020-04-30  Jakub Jelinek  <jakub@redhat.com>
20171         * configure.ac (--with-documentation-root-url,
20172         --with-changes-root-url): Diagnose URL not ending with /,
20173         use AC_DEFINE_UNQUOTED instead of AC_SUBST.
20174         * opts.h (get_changes_url): Remove.
20175         * opts.c (get_changes_url): Remove.
20176         * Makefile.in (CFLAGS-opts.o): Don't add -DDOCUMENTATION_ROOT_URL
20177         or -DCHANGES_ROOT_URL.
20178         * doc/install.texi (--with-documentation-root-url,
20179         --with-changes-root-url): Document.
20180         * config/arm/arm.c (aapcs_vfp_is_call_or_return_candidate): Don't call
20181         get_changes_url and free, change url variable type to const char * and
20182         set it to CHANGES_ROOT_URL "gcc-10/changes.html#empty_base".
20183         * config/s390/s390.c (s390_function_arg_vector,
20184         s390_function_arg_float): Likewise.
20185         * config/aarch64/aarch64.c (aarch64_vfp_is_call_or_return_candidate):
20186         Likewise.
20187         * config/rs6000/rs6000-call.c (rs6000_discover_homogeneous_aggregate):
20188         Likewise.
20189         * config.in: Regenerate.
20190         * configure: Regenerate.
20192 2020-04-30  Christophe Lyon  <christophe.lyon@linaro.org>
20194         PR target/57002
20195         * config/arm/arm.c (isr_attribute_args): Remove duplicate entries.
20197 2020-04-30  Andreas Krebbel  <krebbel@linux.ibm.com>
20199         * config/s390/constraints.md ("j>f", "jb4"): New constraints.
20200         * config/s390/vecintrin.h (vec_load_len_r, vec_store_len_r): Fix
20201         macro definitions.
20202         * config/s390/vx-builtins.md ("vlrlrv16qi", "vstrlrv16qi"): Add a
20203         separate expander.
20204         ("*vlrlrv16qi", "*vstrlrv16qi"): Add alternative for vl/vst.
20205         Change constraint for vlrl/vstrl to jb4.
20207 2020-04-30  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
20209         * var-tracking.c (vt_initialize): Move variables pre and post
20210         into inner block and initialize both in order to fix warning
20211         about uninitialized use.  Remove unnecessary checks for
20212         frame_pointer_needed.
20214 2020-04-30  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
20216         * toplev.c (output_stack_usage_1): Ensure that first
20217         argument to fprintf is not null.
20219 2020-04-29  Jakub Jelinek  <jakub@redhat.com>
20221         * configure.ac (-with-changes-root-url): New configure option,
20222         defaulting to https://gcc.gnu.org/.
20223         * Makefile.in (CFLAGS-opts.o): Define CHANGES_ROOT_URL for
20224         opts.c.
20225         * pretty-print.c (get_end_url_string): New function.
20226         (pp_format): Handle %{ and %} for URLs.
20227         (pp_begin_url): Use pp_string instead of pp_printf.
20228         (pp_end_url): Use get_end_url_string.
20229         * opts.h (get_changes_url): Declare.
20230         * opts.c (get_changes_url): New function.
20231         * config/rs6000/rs6000-call.c: Include opts.h.
20232         (rs6000_discover_homogeneous_aggregate): Use %{in GCC 10.1%} instead
20233         of just in GCC 10.1 in diagnostics and add URL.
20234         * config/arm/arm.c (aapcs_vfp_is_call_or_return_candidate): Likewise.
20235         * config/aarch64/aarch64.c (aarch64_vfp_is_call_or_return_candidate):
20236         Likewise.
20237         * config/s390/s390.c (s390_function_arg_vector,
20238         s390_function_arg_float): Likewise.
20239         * configure: Regenerated.
20241         PR target/94704
20242         * config/s390/s390.c (s390_function_arg_vector,
20243         s390_function_arg_float): Use DECL_FIELD_ABI_IGNORED instead of
20244         cxx17_empty_base_field_p.  In -Wpsabi diagnostics use the type
20245         passed to the function rather than the type of the single element.
20246         Rename cxx17_empty_base_seen variable to empty_base_seen, change
20247         type to int, and adjust diagnostics depending on if the field
20248         has [[no_unique_attribute]] or not.
20250         PR target/94832
20251         * config/i386/avx512bwintrin.h (_mm512_alignr_epi8,
20252         _mm512_mask_alignr_epi8, _mm512_maskz_alignr_epi8): Wrap macro operands
20253         used in casts into parens.
20254         * config/i386/avx512fintrin.h (_mm512_cvt_roundps_ph, _mm512_cvtps_ph,
20255         _mm512_mask_cvt_roundps_ph, _mm512_mask_cvtps_ph,
20256         _mm512_maskz_cvt_roundps_ph, _mm512_maskz_cvtps_ph,
20257         _mm512_mask_cmp_epi64_mask, _mm512_mask_cmp_epi32_mask,
20258         _mm512_mask_cmp_epu64_mask, _mm512_mask_cmp_epu32_mask,
20259         _mm512_mask_cmp_round_pd_mask, _mm512_mask_cmp_round_ps_mask,
20260         _mm512_mask_cmp_pd_mask, _mm512_mask_cmp_ps_mask): Likewise.
20261         * config/i386/avx512vlbwintrin.h (_mm256_mask_alignr_epi8,
20262         _mm256_maskz_alignr_epi8, _mm_mask_alignr_epi8, _mm_maskz_alignr_epi8,
20263         _mm256_mask_cmp_epu8_mask): Likewise.
20264         * config/i386/avx512vlintrin.h (_mm_mask_cvtps_ph, _mm_maskz_cvtps_ph,
20265         _mm256_mask_cvtps_ph, _mm256_maskz_cvtps_ph): Likewise.
20266         * config/i386/f16cintrin.h (_mm_cvtps_ph, _mm256_cvtps_ph): Likewise.
20267         * config/i386/shaintrin.h (_mm_sha1rnds4_epu32): Likewise.
20269         PR target/94832
20270         * config/i386/avx2intrin.h (_mm_mask_i32gather_pd,
20271         _mm256_mask_i32gather_pd, _mm_mask_i64gather_pd,
20272         _mm256_mask_i64gather_pd, _mm_mask_i32gather_ps,
20273         _mm256_mask_i32gather_ps, _mm_mask_i64gather_ps,
20274         _mm256_mask_i64gather_ps, _mm_i32gather_epi64,
20275         _mm_mask_i32gather_epi64, _mm256_i32gather_epi64,
20276         _mm256_mask_i32gather_epi64, _mm_i64gather_epi64,
20277         _mm_mask_i64gather_epi64, _mm256_i64gather_epi64,
20278         _mm256_mask_i64gather_epi64, _mm_i32gather_epi32,
20279         _mm_mask_i32gather_epi32, _mm256_i32gather_epi32,
20280         _mm256_mask_i32gather_epi32, _mm_i64gather_epi32,
20281         _mm_mask_i64gather_epi32, _mm256_i64gather_epi32,
20282         _mm256_mask_i64gather_epi32): Surround macro parameter uses with
20283         parens.
20284         (_mm_i32gather_pd, _mm256_i32gather_pd, _mm_i64gather_pd,
20285         _mm256_i64gather_pd, _mm_i32gather_ps, _mm256_i32gather_ps,
20286         _mm_i64gather_ps, _mm256_i64gather_ps): Likewise.  Don't use
20287         as mask vector containing -1.0 or -1.0f elts, but instead vector
20288         with all bits set using _mm*_cmpeq_p? with zero operands.
20289         * config/i386/avx512fintrin.h (_mm512_i32gather_ps,
20290         _mm512_mask_i32gather_ps, _mm512_i32gather_pd,
20291         _mm512_mask_i32gather_pd, _mm512_i64gather_ps,
20292         _mm512_mask_i64gather_ps, _mm512_i64gather_pd,
20293         _mm512_mask_i64gather_pd, _mm512_i32gather_epi32,
20294         _mm512_mask_i32gather_epi32, _mm512_i32gather_epi64,
20295         _mm512_mask_i32gather_epi64, _mm512_i64gather_epi32,
20296         _mm512_mask_i64gather_epi32, _mm512_i64gather_epi64,
20297         _mm512_mask_i64gather_epi64, _mm512_i32scatter_ps,
20298         _mm512_mask_i32scatter_ps, _mm512_i32scatter_pd,
20299         _mm512_mask_i32scatter_pd, _mm512_i64scatter_ps,
20300         _mm512_mask_i64scatter_ps, _mm512_i64scatter_pd,
20301         _mm512_mask_i64scatter_pd, _mm512_i32scatter_epi32,
20302         _mm512_mask_i32scatter_epi32, _mm512_i32scatter_epi64,
20303         _mm512_mask_i32scatter_epi64, _mm512_i64scatter_epi32,
20304         _mm512_mask_i64scatter_epi32, _mm512_i64scatter_epi64,
20305         _mm512_mask_i64scatter_epi64): Surround macro parameter uses with
20306         parens.
20307         * config/i386/avx512pfintrin.h (_mm512_prefetch_i32gather_pd,
20308         _mm512_prefetch_i32gather_ps, _mm512_mask_prefetch_i32gather_pd,
20309         _mm512_mask_prefetch_i32gather_ps, _mm512_prefetch_i64gather_pd,
20310         _mm512_prefetch_i64gather_ps, _mm512_mask_prefetch_i64gather_pd,
20311         _mm512_mask_prefetch_i64gather_ps, _mm512_prefetch_i32scatter_pd,
20312         _mm512_prefetch_i32scatter_ps, _mm512_mask_prefetch_i32scatter_pd,
20313         _mm512_mask_prefetch_i32scatter_ps, _mm512_prefetch_i64scatter_pd,
20314         _mm512_prefetch_i64scatter_ps, _mm512_mask_prefetch_i64scatter_pd,
20315         _mm512_mask_prefetch_i64scatter_ps): Likewise.
20316         * config/i386/avx512vlintrin.h (_mm256_mmask_i32gather_ps,
20317         _mm_mmask_i32gather_ps, _mm256_mmask_i32gather_pd,
20318         _mm_mmask_i32gather_pd, _mm256_mmask_i64gather_ps,
20319         _mm_mmask_i64gather_ps, _mm256_mmask_i64gather_pd,
20320         _mm_mmask_i64gather_pd, _mm256_mmask_i32gather_epi32,
20321         _mm_mmask_i32gather_epi32, _mm256_mmask_i32gather_epi64,
20322         _mm_mmask_i32gather_epi64, _mm256_mmask_i64gather_epi32,
20323         _mm_mmask_i64gather_epi32, _mm256_mmask_i64gather_epi64,
20324         _mm_mmask_i64gather_epi64, _mm256_i32scatter_ps,
20325         _mm256_mask_i32scatter_ps, _mm_i32scatter_ps, _mm_mask_i32scatter_ps,
20326         _mm256_i32scatter_pd, _mm256_mask_i32scatter_pd, _mm_i32scatter_pd,
20327         _mm_mask_i32scatter_pd, _mm256_i64scatter_ps,
20328         _mm256_mask_i64scatter_ps, _mm_i64scatter_ps, _mm_mask_i64scatter_ps,
20329         _mm256_i64scatter_pd, _mm256_mask_i64scatter_pd, _mm_i64scatter_pd,
20330         _mm_mask_i64scatter_pd, _mm256_i32scatter_epi32,
20331         _mm256_mask_i32scatter_epi32, _mm_i32scatter_epi32,
20332         _mm_mask_i32scatter_epi32, _mm256_i32scatter_epi64,
20333         _mm256_mask_i32scatter_epi64, _mm_i32scatter_epi64,
20334         _mm_mask_i32scatter_epi64, _mm256_i64scatter_epi32,
20335         _mm256_mask_i64scatter_epi32, _mm_i64scatter_epi32,
20336         _mm_mask_i64scatter_epi32, _mm256_i64scatter_epi64,
20337         _mm256_mask_i64scatter_epi64, _mm_i64scatter_epi64,
20338         _mm_mask_i64scatter_epi64): Likewise.
20340 2020-04-29  Jeff Law  <law@redhat.com>
20342         * config/h8300/h8300.md (H8/SX div patterns): All H8/SX specific
20343         division instructions are 4 bytes long.
20345 2020-04-29  Jakub Jelinek  <jakub@redhat.com>
20347         PR target/94826
20348         * config/rs6000/rs6000.c (rs6000_atomic_assign_expand_fenv): Use
20349         TARGET_EXPR instead of MODIFY_EXPR for first assignment to
20350         fenv_var, fenv_clear and old_fenv variables.  For fenv_addr
20351         take address of TARGET_EXPR of fenv_var with void_node initializer.
20352         Formatting fixes.
20354 2020-04-29  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
20356         PR tree-optimization/94774
20357         * gimple-ssa-sprintf.c (try_substitute_return_value): Initialize
20358         variable retval.
20360 2020-04-29  Richard Sandiford  <richard.sandiford@arm.com>
20362         * calls.h (cxx17_empty_base_field_p): Turn into a function declaration.
20363         * calls.c (cxx17_empty_base_field_p): New function.  Check
20364         DECL_ARTIFICIAL and RECORD_OR_UNION_TYPE_P in addition to the
20365         previous checks.
20367 2020-04-29  H.J. Lu  <hongjiu.lu@intel.com>
20369         PR target/93654
20370         * config/i386/i386-options.c (ix86_set_indirect_branch_type):
20371         Allow -fcf-protection with -mindirect-branch=thunk-extern and
20372         -mfunction-return=thunk-extern.
20373         * doc/invoke.texi: Update notes for -fcf-protection=branch with
20374         -mindirect-branch=thunk-extern and -mindirect-return=thunk-extern.
20376 2020-04-29  Richard Sandiford  <richard.sandiford@arm.com>
20378         * doc/sourcebuild.texi: Add missing arm_arch_v8a_hard_ok anchor.
20380 2020-04-29  Richard Sandiford  <richard.sandiford@arm.com>
20382         * config/arm/arm-builtins.c (arm_atomic_assign_expand_fenv): Use
20383         TARGET_EXPR instead of MODIFY_EXPR for the first assignments to
20384         fenv_var and new_fenv_var.
20386 2020-04-29  Richard Sandiford  <richard.sandiford@arm.com>
20388         * doc/sourcebuild.texi (arm_arch_v8a_hard_ok): Document new
20389         effective-target keyword.
20390         (arm_arch_v8a_hard_multilib): Likewise.
20391         (arm_arch_v8a_hard): Document new dg-add-options keyword.
20392         * config/arm/arm.c (arm_return_in_memory): Note that the APCS
20393         code is deprecated and has not been updated to handle
20394         DECL_FIELD_ABI_IGNORED.
20395         (WARN_PSABI_EMPTY_CXX17_BASE): New constant.
20396         (WARN_PSABI_NO_UNIQUE_ADDRESS): Likewise.
20397         (aapcs_vfp_sub_candidate): Replace the boolean pointer parameter
20398         avoid_cxx17_empty_base with a pointer to a bitmask.  Ignore fields
20399         whose DECL_FIELD_ABI_IGNORED bit is set when determining whether
20400         something actually is a HFA or HVA.  Record whether we see a
20401         [[no_unique_address]] field that previous GCCs would not have
20402         ignored in this way.
20403         (aapcs_vfp_is_call_or_return_candidate): Update the calls to
20404         aapcs_vfp_sub_candidate and report a -Wpsabi warning for the
20405         [[no_unique_address]] case.  Use TYPE_MAIN_VARIANT in the
20406         diagnostic messages.
20407         (arm_needs_doubleword_align): Add a comment explaining why we
20408         consider even zero-sized fields.
20410 2020-04-29  Richard Biener  <rguenther@suse.de>
20411             Li Zekun  <lizekun1@huawei.com>
20413         PR lto/94822
20414         * tree.c (component_ref_size): Guard against error_mark_node
20415         DECL_INITIAL as it happens with LTO.
20417 2020-04-29  Richard Sandiford  <richard.sandiford@arm.com>
20419         * config/aarch64/aarch64.c (aarch64_function_arg_alignment): Add a
20420         comment explaining why we consider even zero-sized fields.
20421         (WARN_PSABI_EMPTY_CXX17_BASE): New constant.
20422         (WARN_PSABI_NO_UNIQUE_ADDRESS): Likewise.
20423         (aapcs_vfp_sub_candidate): Replace the boolean pointer parameter
20424         avoid_cxx17_empty_base with a pointer to a bitmask.  Ignore fields
20425         whose DECL_FIELD_ABI_IGNORED bit is set when determining whether
20426         something actually is a HFA or HVA.  Record whether we see a
20427         [[no_unique_address]] field that previous GCCs would not have
20428         ignored in this way.
20429         (aarch64_vfp_is_call_or_return_candidate): Add a parameter to say
20430         whether diagnostics should be suppressed.  Update the calls to
20431         aapcs_vfp_sub_candidate and report a -Wpsabi warning for the
20432         [[no_unique_address]] case.
20433         (aarch64_return_in_msb): Update call accordingly, never silencing
20434         diagnostics.
20435         (aarch64_function_value): Likewise.
20436         (aarch64_return_in_memory_1): Likewise.
20437         (aarch64_init_cumulative_args): Likewise.
20438         (aarch64_gimplify_va_arg_expr): Likewise.
20439         (aarch64_pass_by_reference_1): Take a CUMULATIVE_ARGS pointer and
20440         use it to decide whether arch64_vfp_is_call_or_return_candidate
20441         should be silent.
20442         (aarch64_pass_by_reference): Update calls accordingly.
20443         (aarch64_vfp_is_call_candidate): Use the CUMULATIVE_ARGS argument
20444         to decide whether arch64_vfp_is_call_or_return_candidate should be
20445         silent.
20447 2020-04-29  Haijian Zhang  <z.zhanghaijian@huawei.com>
20449         PR target/94820
20450         * config/aarch64/aarch64-builtins.c
20451         (aarch64_atomic_assign_expand_fenv): Use TARGET_EXPR instead of
20452         MODIFY_EXPR for first assignment to fenv_cr, fenv_sr and
20453         new_fenv_var.
20455 2020-04-29  Thomas Schwinge  <thomas@codesourcery.com>
20457         * configure.ac <$enable_offload_targets>: Do parsing as done
20458         elsewhere.
20459         * configure: Regenerate.
20461         * configure.ac <$enable_offload_targets>: 'amdgcn' is 'gcn'.
20462         * configure: Regenerate.
20464         PR target/94279
20465         * rtlanal.c (set_noop_p): Handle non-constant selectors.
20467         PR target/94282
20468         * common/config/gcn/gcn-common.c (gcn_except_unwind_info): New
20469         function.
20470         (TARGET_EXCEPT_UNWIND_INFO): Define.
20472 2020-04-29  Jakub Jelinek  <jakub@redhat.com>
20474         PR target/94248
20475         * config/gcn/gcn.md (*mov<mode>_insn): Use
20476         'reg_overlap_mentioned_p' to check for overlap.
20478         PR target/94706
20479         * config/ia64/ia64.c (hfa_element_mode): Use DECL_FIELD_ABI_IGNORED
20480         instead of cxx17_empty_base_field_p.
20482         PR target/94707
20483         * tree-core.h (tree_decl_common): Note decl_flag_0 used for
20484         DECL_FIELD_ABI_IGNORED.
20485         * tree.h (DECL_FIELD_ABI_IGNORED): Define.
20486         * calls.h (cxx17_empty_base_field_p): Change into a temporary
20487         macro, check DECL_FIELD_ABI_IGNORED flag with no "no_unique_address"
20488         attribute.
20489         * calls.c (cxx17_empty_base_field_p): Remove.
20490         * tree-streamer-out.c (pack_ts_decl_common_value_fields): Handle
20491         DECL_FIELD_ABI_IGNORED.
20492         * tree-streamer-in.c (unpack_ts_decl_common_value_fields): Likewise.
20493         * lto-streamer-out.c (hash_tree): Likewise.
20494         * config/rs6000/rs6000-call.c (rs6000_aggregate_candidate): Rename
20495         cxx17_empty_base_seen to empty_base_seen, change type to int *,
20496         adjust recursive calls, use DECL_FIELD_ABI_IGNORED instead of
20497         cxx17_empty_base_field_p, if "no_unique_address" attribute is
20498         present, propagate that to the caller too.
20499         (rs6000_discover_homogeneous_aggregate): Adjust
20500         rs6000_aggregate_candidate caller, emit different diagnostics
20501         when c++17 empty base fields are present and when empty
20502         [[no_unique_address]] fields are present.
20503         * config/rs6000/rs6000.c (rs6000_special_round_type_align,
20504         darwin_rs6000_special_round_type_align): Skip DECL_FIELD_ABI_IGNORED
20505         fields.
20507 2020-04-29  Richard Biener  <rguenther@suse.de>
20509         * tree-ssa-loop-im.c (ref_always_accessed::operator ()):
20510         Just check whether the stmt stores.
20512 2020-04-28  Alexandre Oliva <oliva@adacore.com>
20514         PR target/94812
20515         * config/rs6000/rs6000.md (rs6000_mffsl): Copy result to
20516         output operand in emulation.  Don't overwrite pseudos.
20518 2020-04-28  Jeff Law  <law@redhat.com>
20520         * config/h8300/h8300.md (H8/SX mult patterns): All H8/SX specific
20521         multiply patterns are 4 bytes long.
20523 2020-04-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
20525         * config/arm/arm-cpus.in (cortex-m55): Remove +nofp option.
20526         * doc/invoke.texi (Arm Options): Remove -mcpu=cortex-m55 from +nofp option.
20528 2020-04-28  Matthew Malcomson  <matthew.malcomson@arm.com>
20529             Jakub Jelinek  <jakub@redhat.com>
20531         PR target/94711
20532         * config/arm/arm.c (aapcs_vfp_sub_candidate): Account for C++17 empty
20533         base class artificial fields.
20534         (aapcs_vfp_is_call_or_return_candidate): Warn when PCS ABI
20535         decision is different after this fix.
20537 2020-04-28  David Malcolm  <dmalcolm@redhat.com>
20539         PR analyzer/94447
20540         PR analyzer/94639
20541         PR analyzer/94732
20542         PR analyzer/94754
20543         * doc/invoke.texi (Static Analyzer Options): Remove
20544         -Wanalyzer-use-of-uninitialized-value.
20545         (-Wno-analyzer-use-of-uninitialized-value): Remove item.
20547 2020-04-28  Jakub Jelinek  <jakub@redhat.com>
20549         PR tree-optimization/94809
20550         * tree.c (build_call_expr_internal_loc_array): Call
20551         process_call_operands.
20553 2020-04-27  Anton Youdkevitch  <anton.youdkevitch@bell-sw.com>
20555         * config/aarch64/aarch64-cores.def (thunderx3t110): Add the chip name.
20556         * config/aarch64/aarch64-tune.md: Regenerate.
20557         * config/aarch64/aarch64.c (thunderx3t110_addrcost_table): Define.
20558         (thunderx3t110_regmove_cost): Likewise.
20559         (thunderx3t110_vector_cost): Likewise.
20560         (thunderx3t110_prefetch_tune): Likewise.
20561         (thunderx3t110_tunings): Likewise.
20562         * config/aarch64/aarch64-cost-tables.h (thunderx3t110_extra_costs):
20563         Define.
20564         * config/aarch64/thunderx3t110.md: New file.
20565         * config/aarch64/aarch64.md: Include thunderx3t110.md.
20566         * doc/invoke.texi (AArch64 options): Add thunderx3t110.
20568 2020-04-28  Jakub Jelinek  <jakub@redhat.com>
20570         PR target/94704
20571         * config/s390/s390.c (s390_function_arg_vector,
20572         s390_function_arg_float): Emit -Wpsabi diagnostics if the ABI changed.
20574 2020-04-28  Richard Sandiford  <richard.sandiford@arm.com>
20576         PR tree-optimization/94727
20577         * tree-vect-stmts.c (vect_is_simple_cond): If both comparison
20578         operands are invariant booleans, use the mask type associated with the
20579         STMT_VINFO_VECTYPE.  Use !slp_node instead of !vectype to exclude SLP.
20580         (vectorizable_condition): Pass vectype unconditionally to
20581         vect_is_simple_cond.
20583 2020-04-27  Jakub Jelinek  <jakub@redhat.com>
20585         PR target/94780
20586         * config/i386/i386.c (ix86_atomic_assign_expand_fenv): Use
20587         TARGET_EXPR instead of MODIFY_EXPR for first assignment to
20588         sw_var, exceptions_var, mxcsr_orig_var and mxcsr_mod_var.
20590 2020-04-27  David Malcolm  <dmalcolm@redhat.com>
20592         PR 92830
20593         * configure.ac (DOCUMENTATION_ROOT_URL): Drop trailing "gcc/" from
20594         default value, so that it can by supplied by get_option_html_page.
20595         * configure: Regenerate.
20596         * opts.c: Include "selftest.h".
20597         (get_option_html_page): New function.
20598         (get_option_url): Use it.  Reformat to place comments next to the
20599         expressions they refer to.
20600         (selftest::test_get_option_html_page): New.
20601         (selftest::opts_c_tests): New.
20602         * selftest-run-tests.c (selftest::run_tests): Call
20603         selftest::opts_c_tests.
20604         * selftest.h (selftest::opts_c_tests): New decl.
20606 2020-04-27  Richard Sandiford  <richard.sandiford@arm.com>
20608         * config/arm/arm-builtins.c (arm_expand_builtin_args): Only apply
20609         UINTVAL to CONST_INTs.
20611 2020-04-27  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
20613         * config/arm/constraints.md (e): Remove constraint.
20614         (Te): Define constraint.
20615         * config/arm/mve.md (vaddvq_<supf><mode>): Modify constraint in
20616         operand 0 from "e" to "Te".
20617         (vaddvaq_<supf><mode>): Likewise.
20618         (vaddvq_p_<supf><mode>): Likewise.
20619         (vmladavq_<supf><mode>): Likewise.
20620         (vmladavxq_s<mode>): Likewise.
20621         (vmlsdavq_s<mode>): Likewise.
20622         (vmlsdavxq_s<mode>): Likewise.
20623         (vaddvaq_p_<supf><mode>): Likewise.
20624         (vmladavaq_<supf><mode>): Likewise.
20625         (vmladavq_p_<supf><mode>): Likewise.
20626         (vmladavxq_p_s<mode>): Likewise.
20627         (vmlsdavq_p_s<mode>): Likewise.
20628         (vmlsdavxq_p_s<mode>): Likewise.
20629         (vmlsdavaxq_s<mode>): Likewise.
20630         (vmlsdavaq_s<mode>): Likewise.
20631         (vmladavaxq_s<mode>): Likewise.
20632         (vmladavaq_p_<supf><mode>): Likewise.
20633         (vmladavaxq_p_s<mode>): Likewise.
20634         (vmlsdavaq_p_s<mode>): Likewise.
20635         (vmlsdavaxq_p_s<mode>): Likewise.
20637 2020-04-27  Andre Vieira  <andre.simoesdiasvieira@arm.com>
20639         * config/arm/arm.c (output_move_neon): Only get the first operand if
20640         addr is PLUS.
20642 2020-04-27  Felix Yang  <felix.yang@huawei.com>
20644         PR tree-optimization/94784
20645         * tree-ssa-forwprop.c (simplify_vector_constructor): Flip the
20646         assert around so that it checks that the two vectors have equal
20647         TYPE_VECTOR_SUBPARTS and that converting the corresponding element
20648         types is a useless_type_conversion_p.
20650 2020-04-27  Szabolcs Nagy  <szabolcs.nagy@arm.com>
20652         PR target/94515
20653         * dwarf2cfi.c (struct GTY): Add ra_mangled.
20654         (cfi_row_equal_p): Check ra_mangled.
20655         (dwarf2out_frame_debug_cfa_window_save): Remove the argument,
20656         this only handles the sparc logic now.
20657         (dwarf2out_frame_debug_cfa_toggle_ra_mangle): New function for
20658         the aarch64 specific logic.
20659         (dwarf2out_frame_debug): Update to use the new subroutines.
20660         (change_cfi_row): Check ra_mangled.
20662 2020-04-27  Jakub Jelinek  <jakub@redhat.com>
20664         PR target/94704
20665         * config/s390/s390.c (s390_function_arg_vector,
20666         s390_function_arg_float): Ignore cxx17_empty_base_field_p fields.
20668 2020-04-27  Jiufu Guo   <guojiufu@cn.ibm.com>
20670         * common/config/rs6000/rs6000-common.c
20671         (rs6000_option_optimization_table) [OPT_LEVELS_ALL]: Remove turn off
20672         -fweb.
20673         * config/rs6000/rs6000.c (rs6000_option_override_internal): Avoid to
20674         set flag_web.
20676 2020-04-27  Martin Liska  <mliska@suse.cz>
20678         PR lto/94659
20679         * cgraph.h (cgraph_node::can_remove_if_no_direct_calls_and_refs_p):
20680         Do not remove ifunc_resolvers in remove unreachable nodes in LTO.
20682 2020-04-27  Xiong Hu Luo  <luoxhu@linux.ibm.com>
20684         PR target/91518
20685         * config/rs6000/rs6000-logue.c (frame_pointer_needed_indeed):
20686         New variable.
20687         (rs6000_emit_prologue_components):
20688         Check with frame_pointer_needed_indeed.
20689         (rs6000_emit_epilogue_components): Likewise.
20690         (rs6000_emit_prologue): Likewise.
20691         (rs6000_emit_epilogue): Set frame_pointer_needed_indeed.
20693 2020-04-25  David Edelsohn  <dje.gcc@gmail.com>
20695         * config/rs6000/rs6000-logue.c (rs6000_stack_info): Don't push a
20696         stack frame when debugging and flag_compare_debug is enabled.
20698 2020-04-25  Michael Meissner  <meissner@linux.ibm.com>
20700         * config/rs6000/linux64.h (PCREL_SUPPORTED_BY_OS): Define to
20701         enable PC-relative addressing for -mcpu=future.
20702         * config/rs6000/rs6000-cpus.def (ISA_FUTURE_MASKS_SERVER): Move
20703         after OTHER_FUTURE_MASKS.  Use OTHER_FUTURE_MASKS.
20704         * config/rs6000/rs6000.c (PCREL_SUPPORTED_BY_OS): If not defined,
20705         suppress PC-relative addressing.
20706         (rs6000_option_override_internal): Split up error messages
20707         checking for -mprefixed and -mpcrel.  Enable -mpcrel if the target
20708         system supports it.
20710 2020-04-25  Jakub Jelinek  <jakub@redhat.com>
20711             Richard Biener  <rguenther@suse.de>
20713         PR tree-optimization/94734
20714         PR tree-optimization/89430
20715         * tree-ssa-phiopt.c: Include tree-eh.h.
20716         (cond_store_replacement): Return false if an automatic variable
20717         access could trap.  If -fstore-data-races, don't return false
20718         just because an automatic variable is addressable.
20720 2020-04-24  Andrew Stubbs  <ams@codesourcery.com>
20722         * config/gcn/gcn-valu.md (add<mode>_zext_dup2_exec): Fix merge
20723         of high-part.
20724         (add<mode>_sext_dup2_exec): Likewise.
20726 2020-04-24  Segher Boessenkool  <segher@kernel.crashing.org>
20728         PR target/94710
20729         * config/rs6000/vector.md (vec_shr_<mode> for VEC_L): Correct little
20730         endian byteshift_val calculation.
20732 2020-04-24  Andrew Stubbs  <ams@codesourcery.com>
20734         * config/gcn/gcn.md (*mov<mode>_insn): Only split post-reload.
20736 2020-04-24  Richard Sandiford  <richard.sandiford@arm.com>
20738         * config/aarch64/arm_sve.h: Add a comment.
20740 2020-04-24  Haijian Zhang <z.zhanghaijian@huawei.com>
20742         PR rtl-optimization/94708
20743         * combine.c (simplify_if_then_else): Add check for
20744         !HONOR_NANS (mode) && !HONOR_SIGNED_ZEROS (mode).
20746 2020-04-23  Martin Sebor  <msebor@redhat.com>
20748         PR driver/90983
20749         * common.opt (-Wno-frame-larger-than): New option.
20750         (-Wno-larger-than, -Wno-stack-usage): Same.
20752 2020-04-23  Andrew Stubbs  <ams@codesourcery.com>
20754         * config/gcn/gcn-valu.md (mov<mode>_exec): Swap the numbers on operands
20755         2 and 3.
20756         (mov<mode>_exec): Likewise.
20757         (trunc<vndi><mode>2_exec): Swap parameters to gen_mov<mode>_exec.
20758         (<convop><mode><vndi>2_exec): Likewise.
20760 2019-04-23  Eric Botcazou  <ebotcazou@adacore.com>
20762         PR tree-optimization/94717
20763         * gimple-ssa-store-merging.c (try_coalesce_bswap): Return false if one
20764         of the stores doesn't have the same landing pad number as the first.
20765         (coalesce_immediate_stores): Do not try to coalesce the store using
20766         bswap if it doesn't have the same landing pad number as the first.
20768 2020-04-23  Bill Schmidt  <wschmidt@linux.ibm.com>
20770         * doc/extend.texi (PowerPC AltiVec/VSX Built-in Functions):
20771         Replace outdated link to ELFv2 ABI.
20773 2020-04-23  Jakub Jelinek  <jakub@redhat.com>
20775         PR target/94710
20776         * optabs.c (expand_vec_perm_const): For shift_amt const0_rtx
20777         just return v2.
20779         PR middle-end/94724
20780         * tree.c (get_narrower): Instead of creating COMPOUND_EXPRs
20781         temporarily with non-final second operand and updating it later,
20782         push COMPOUND_EXPRs into a vector and process it in reverse,
20783         creating COMPOUND_EXPRs with the final operands.
20785 2020-04-23  Szabolcs Nagy  <szabolcs.nagy@arm.com>
20787         PR target/94697
20788         * config/aarch64/aarch64-bti-insert.c (rest_of_insert_bti): Swap
20789         bti c and bti j handling.
20791 2020-04-23  Andrew Stubbs  <ams@codesourcery.com>
20792             Thomas Schwinge  <thomas@codesourcery.com>
20794         PR middle-end/93488
20796         * omp-expand.c (expand_omp_target): Use force_gimple_operand_gsi on
20797         t_async and the wait arguments.
20799 2020-04-23  Richard Sandiford  <richard.sandiford@arm.com>
20801         PR tree-optimization/94727
20802         * tree-vect-stmts.c (vectorizable_comparison): Use mask_type when
20803         comparing invariant scalar booleans.
20805 2020-04-23  Matthew Malcomson  <matthew.malcomson@arm.com>
20806             Jakub Jelinek  <jakub@redhat.com>
20808         PR target/94383
20809         * config/aarch64/aarch64.c (aapcs_vfp_sub_candidate): Account for C++17
20810         empty base class artificial fields.
20811         (aarch64_vfp_is_call_or_return_candidate): Warn when ABI PCS decision is
20812         different after this fix.
20814 2020-04-23  Jakub Jelinek  <jakub@redhat.com>
20816         PR target/94707
20817         * config/rs6000/rs6000-call.c (rs6000_discover_homogeneous_aggregate):
20818         Use TYPE_UID (TYPE_MAIN_VARIANT (type)) instead of type to check
20819         if the same type has been diagnosed most recently already.
20821 2020-04-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
20823         * config/arm/arm_mve.h (__arm_vbicq_n_u16): Modify function parameter's
20824         datatype.
20825         (__arm_vbicq_n_s16): Likewise.
20826         (__arm_vbicq_n_u32): Likewise.
20827         (__arm_vbicq_n_s32): Likewise.
20828         (__arm_vbicq): Likewise.
20829         (__arm_vbicq_n_s16): Modify MVE polymorphic variant argument's datatype.
20830         (__arm_vbicq_n_s32): Likewise.
20831         (__arm_vbicq_n_u16): Likewise.
20832         (__arm_vbicq_n_u32): Likewise.
20833         (__arm_vdupq_m_n_s8): Likewise.
20834         (__arm_vdupq_m_n_s16): Likewise.
20835         (__arm_vdupq_m_n_s32): Likewise.
20836         (__arm_vdupq_m_n_u8): Likewise.
20837         (__arm_vdupq_m_n_u16): Likewise.
20838         (__arm_vdupq_m_n_u32): Likewise.
20839         (__arm_vdupq_m_n_f16): Likewise.
20840         (__arm_vdupq_m_n_f32): Likewise.
20841         (__arm_vldrhq_gather_offset_s16): Likewise.
20842         (__arm_vldrhq_gather_offset_s32): Likewise.
20843         (__arm_vldrhq_gather_offset_u16): Likewise.
20844         (__arm_vldrhq_gather_offset_u32): Likewise.
20845         (__arm_vldrhq_gather_offset_f16): Likewise.
20846         (__arm_vldrhq_gather_offset_z_s16): Likewise.
20847         (__arm_vldrhq_gather_offset_z_s32): Likewise.
20848         (__arm_vldrhq_gather_offset_z_u16): Likewise.
20849         (__arm_vldrhq_gather_offset_z_u32): Likewise.
20850         (__arm_vldrhq_gather_offset_z_f16): Likewise.
20851         (__arm_vldrhq_gather_shifted_offset_s16): Likewise.
20852         (__arm_vldrhq_gather_shifted_offset_s32): Likewise.
20853         (__arm_vldrhq_gather_shifted_offset_u16): Likewise.
20854         (__arm_vldrhq_gather_shifted_offset_u32): Likewise.
20855         (__arm_vldrhq_gather_shifted_offset_f16): Likewise.
20856         (__arm_vldrhq_gather_shifted_offset_z_s16): Likewise.
20857         (__arm_vldrhq_gather_shifted_offset_z_s32): Likewise.
20858         (__arm_vldrhq_gather_shifted_offset_z_u16): Likewise.
20859         (__arm_vldrhq_gather_shifted_offset_z_u32): Likewise.
20860         (__arm_vldrhq_gather_shifted_offset_z_f16): Likewise.
20861         (__arm_vldrwq_gather_offset_s32): Likewise.
20862         (__arm_vldrwq_gather_offset_u32): Likewise.
20863         (__arm_vldrwq_gather_offset_f32): Likewise.
20864         (__arm_vldrwq_gather_offset_z_s32): Likewise.
20865         (__arm_vldrwq_gather_offset_z_u32): Likewise.
20866         (__arm_vldrwq_gather_offset_z_f32): Likewise.
20867         (__arm_vldrwq_gather_shifted_offset_s32): Likewise.
20868         (__arm_vldrwq_gather_shifted_offset_u32): Likewise.
20869         (__arm_vldrwq_gather_shifted_offset_f32): Likewise.
20870         (__arm_vldrwq_gather_shifted_offset_z_s32): Likewise.
20871         (__arm_vldrwq_gather_shifted_offset_z_u32): Likewise.
20872         (__arm_vldrwq_gather_shifted_offset_z_f32): Likewise.
20873         (__arm_vdwdupq_x_n_u8): Likewise.
20874         (__arm_vdwdupq_x_n_u16): Likewise.
20875         (__arm_vdwdupq_x_n_u32): Likewise.
20876         (__arm_viwdupq_x_n_u8): Likewise.
20877         (__arm_viwdupq_x_n_u16): Likewise.
20878         (__arm_viwdupq_x_n_u32): Likewise.
20879         (__arm_vidupq_x_n_u8): Likewise.
20880         (__arm_vddupq_x_n_u8): Likewise.
20881         (__arm_vidupq_x_n_u16): Likewise.
20882         (__arm_vddupq_x_n_u16): Likewise.
20883         (__arm_vidupq_x_n_u32): Likewise.
20884         (__arm_vddupq_x_n_u32): Likewise.
20885         (__arm_vldrdq_gather_offset_s64): Likewise.
20886         (__arm_vldrdq_gather_offset_u64): Likewise.
20887         (__arm_vldrdq_gather_offset_z_s64): Likewise.
20888         (__arm_vldrdq_gather_offset_z_u64): Likewise.
20889         (__arm_vldrdq_gather_shifted_offset_s64): Likewise.
20890         (__arm_vldrdq_gather_shifted_offset_u64): Likewise.
20891         (__arm_vldrdq_gather_shifted_offset_z_s64): Likewise.
20892         (__arm_vldrdq_gather_shifted_offset_z_u64): Likewise.
20893         (__arm_vidupq_m_n_u8): Likewise.
20894         (__arm_vidupq_m_n_u16): Likewise.
20895         (__arm_vidupq_m_n_u32): Likewise.
20896         (__arm_vddupq_m_n_u8): Likewise.
20897         (__arm_vddupq_m_n_u16): Likewise.
20898         (__arm_vddupq_m_n_u32): Likewise.
20899         (__arm_vidupq_n_u16): Likewise.
20900         (__arm_vidupq_n_u32): Likewise.
20901         (__arm_vidupq_n_u8): Likewise.
20902         (__arm_vddupq_n_u16): Likewise.
20903         (__arm_vddupq_n_u32): Likewise.
20904         (__arm_vddupq_n_u8): Likewise.
20906 2020-04-23  Iain Buclaw  <ibuclaw@gdcproject.org>
20908         * doc/install.texi (D-Specific Options): Document
20909         --enable-libphobos-checking and --with-libphobos-druntime-only.
20911 2020-04-23  Jakub Jelinek  <jakub@redhat.com>
20913         PR target/94707
20914         * config/rs6000/rs6000-call.c (rs6000_aggregate_candidate): Add
20915         cxx17_empty_base_seen argument.  Pass it to recursive calls.
20916         Ignore cxx17_empty_base_field_p fields after setting
20917         *cxx17_empty_base_seen to true.
20918         (rs6000_discover_homogeneous_aggregate): Adjust
20919         rs6000_aggregate_candidate caller.  With -Wpsabi, diagnose homogeneous
20920         aggregates with C++17 empty base fields.
20922         PR c/94705
20923         * attribs.c (decl_attribute): Don't diagnose attribute exclusions
20924         if last_decl is error_mark_node or has such a TREE_TYPE.
20926         PR c/94705
20927         * attribs.c (decl_attribute): Don't diagnose attribute exclusions
20928         if last_decl is error_mark_node or has such a TREE_TYPE.
20930 2020-04-22  Felix Yang  <felix.yang@huawei.com>
20932         PR target/94678
20933         * config/aarch64/aarch64.h (TARGET_SVE):
20934         Add && !TARGET_GENERAL_REGS_ONLY.
20935         (TARGET_SVE2): Add && TARGET_SVE.
20936         (TARGET_SVE2_AES, TARGET_SVE2_BITPERM, TARGET_SVE2_SHA3,
20937         TARGET_SVE2_SM4): Add && TARGET_SVE2.
20938         * config/aarch64/aarch64-sve-builtins.h
20939         (sve_switcher::m_old_general_regs_only): New member.
20940         * config/aarch64/aarch64-sve-builtins.cc (check_required_registers):
20941         New function.
20942         (reported_missing_registers_p): New variable.
20943         (check_required_extensions): Call check_required_registers before
20944         return if all required extenstions are present.
20945         (sve_switcher::sve_switcher): Save TARGET_GENERAL_REGS_ONLY in
20946         m_old_general_regs_only and clear MASK_GENERAL_REGS_ONLY in
20947         global_options.x_target_flags.
20948         (sve_switcher::~sve_switcher): Set MASK_GENERAL_REGS_ONLY in
20949         global_options.x_target_flags if m_old_general_regs_only is true.
20951 2020-04-22  Zackery Spytz  <zspytz@gmail.com>
20953         * doc/extend.exi: Add "free" to list of other builtin functions
20954         supported by GCC.
20956 2020-04-20  Aaron Sawdey  <acsawdey@linux.ibm.com>
20958         PR target/94622
20959         * config/rs6000/sync.md (load_quadpti): Add attr "prefixed"
20960         if TARGET_PREFIXED.
20961         (store_quadpti): Ditto.
20962         (atomic_load<mode>): Do not swap doublewords if TARGET_PREFIXED as
20963         plq will be used and doesn't need it.
20964         (atomic_store<mode>): Ditto, for pstq.
20966 2020-04-22  Erick Ochoa  <erick.ochoa@theobroma-systems.com>
20968         * doc/invoke.texi: Update flags turned on by -O3.
20970 2020-04-22  Jakub Jelinek  <jakub@redhat.com>
20972         PR target/94706
20973         * config/ia64/ia64.c (hfa_element_mode): Ignore
20974         cxx17_empty_base_field_p fields.
20976         PR target/94383
20977         * calls.h (cxx17_empty_base_field_p): Declare.
20978         * calls.c (cxx17_empty_base_field_p): Define.
20980 2020-04-22  Christophe Lyon  <christophe.lyon@linaro.org>
20982         * doc/sourcebuild.texi (arm_softfp_ok, arm_hard_ok): Document.
20984 2020-04-22  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
20985             Andre Vieira  <andre.simoesdiasvieira@arm.com>
20986             Mihail Ionescu  <mihail.ionescu@arm.com>
20988         * config/arm/arm.c (arm_file_start): Handle isa_bit_quirk_no_asmcpu.
20989         * config/arm/arm-cpus.in (quirk_no_asmcpu): Define.
20990         (ALL_QUIRKS): Add quirk_no_asmcpu.
20991         (cortex-m55): Define new cpu.
20992         * config/arm/arm-tables.opt: Regenerate.
20993         * config/arm/arm-tune.md: Likewise.
20994         * doc/invoke.texi (Arm Options): Document -mcpu=cortex-m55.
20996 2020-04-22  Richard Sandiford  <richard.sandiford@arm.com>
20998         PR tree-optimization/94700
20999         * tree-ssa-forwprop.c (simplify_vector_constructor): When processing
21000         an identity constructor, use a VIEW_CONVERT_EXPR to handle mixtures
21001         of similarly-structured but distinct vector types.
21003 2020-04-21  Martin Sebor  <msebor@redhat.com>
21005         PR middle-end/94647
21006         * gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Correct
21007         the computation of the lower bound of the source access size.
21008         (builtin_access::generic_overlap): Remove a hack for setting ranges
21009         of overlap offsets.
21011 2020-04-21  John David Anglin  <danglin@gcc.gnu.org>
21013         * config/pa/som.h (ASM_WEAKEN_LABEL): Delete.
21014         (ASM_WEAKEN_DECL): New define.
21015         (HAVE_GAS_WEAKREF): Undefine.
21017 2020-04-21  Richard Sandiford  <richard.sandiford@arm.com>
21019         PR tree-optimization/94683
21020         * tree-ssa-forwprop.c (simplify_vector_constructor): Use a
21021         VIEW_CONVERT_EXPR to handle mixtures of similarly-structured
21022         but distinct vector types.
21024 2020-04-21  Jakub Jelinek  <jakub@redhat.com>
21026         PR c/94641
21027         * stor-layout.c (place_field, finalize_record_size): Don't emit
21028         -Wpadded warning on TYPE_ARTIFICIAL rli->t.
21029         * ubsan.c (ubsan_get_type_descriptor_type,
21030         ubsan_get_source_location_type, ubsan_create_data): Set
21031         TYPE_ARTIFICIAL.
21032         * asan.c (asan_global_struct): Likewise.
21034 2020-04-21  Duan bo  <duanbo3@huawei.com>
21036         PR target/94577
21037         * config/aarch64/aarch64.c: Add an error message for option conflict.
21038         * doc/invoke.texi (-mcmodel=large): Mention that -mcmodel=large is
21039         incompatible with -fpic, -fPIC and -mabi=ilp32.
21041 2020-04-21  Frederik Harwath  <frederik@codesourcery.com>
21043         PR other/94629
21044         * omp-low.c (new_omp_context): Remove assignments to
21045         ctx->outer_reduction_clauses and ctx->local_reduction_clauses.
21047 2020-04-20  Andreas Krebbel  <krebbel@linux.ibm.com>
21049         * config/s390/vector.md ("popcountv8hi2_vx", "popcountv4si2_vx")
21050         ("popcountv2di2_vx"): Use simplify_gen_subreg.
21052 2020-04-20  Andreas Krebbel  <krebbel@linux.ibm.com>
21054         PR target/94613
21055         * config/s390/s390-builtin-types.def: Add 3 new function modes.
21056         * config/s390/s390-builtins.def: Add mode dependent low-level
21057         builtin and map the overloaded builtins to these.
21058         * config/s390/vx-builtins.md ("vec_selV_HW"): Rename to ...
21059         ("vsel<V_HW"): ... this and rewrite the pattern with bitops.
21061 2020-04-20  Richard Sandiford  <richard.sandiford@arm.com>
21063         * tree-vect-loop.c (vect_better_loop_vinfo_p): If old_loop_vinfo
21064         has a variable VF, prefer new_loop_vinfo if it is cheaper for the
21065         estimated VF and is no worse at double the estimated VF.
21067 2020-04-20  Richard Sandiford  <richard.sandiford@arm.com>
21069         PR target/94668
21070         * config/aarch64/aarch64.c (aarch64_sve_expand_vector_init): Fix
21071         order of arguments to rtx_vector_builder.
21072         (aarch64_sve_expand_vector_init_handle_trailing_constants): Likewise.
21073         When extending the trailing constants to a full vector, replace any
21074         variables with zeros.
21076 2020-04-20  Jan Hubicka  <hubicka@ucw.cz>
21078         PR ipa/94582
21079         * tree-inline.c (optimize_inline_calls): Recompute calls_comdat_local
21080         flag.
21082 2020-04-20  Martin Liska  <mliska@suse.cz>
21084         * symtab.c (symtab_node::dump_references): Add space after
21085         one entry.
21086         (symtab_node::dump_referring): Likewise.
21088 2020-04-18  Jeff Law  <law@redhat.com>
21090         PR debug/94439
21091         * regrename.c (check_new_reg_p): Ignore DEBUG_INSNs when walking
21092         the chain.
21094 2020-04-18  Iain Buclaw  <ibuclaw@gdcproject.org>
21096         * doc/sourcebuild.texi (Effective-Target Keywords, Environment
21097         attributes): Document d_runtime_has_std_library.
21099 2020-04-17  Jeff Law  <law@redhat.com>
21101         PR rtl-optimization/90275
21102         * cse.c (cse_insn): Avoid recording nop sets in multi-set parallels
21103         when the destination has a REG_UNUSED note.
21105 2020-04-17  Tobias Burnus  <tobias@codesourcery.com>
21107         PR middle-end/94635
21108         * gimplify.c (gimplify_scan_omp_clauses): Turn MAP_TO_PSET to
21109         MAP_DELETE.
21111 2020-04-17  Richard Sandiford  <richard.sandiford@arm.com>
21113         * config/aarch64/aarch64.c (aarch64_advsimd_ldp_stp_p): New function.
21114         (aarch64_sve_adjust_stmt_cost): Add a vectype parameter.  Double the
21115         cost of load and store insns if one loop iteration has enough scalar
21116         elements to use an Advanced SIMD LDP or STP.
21117         (aarch64_add_stmt_cost): Update call accordingly.
21119 2020-04-17  Jakub Jelinek  <jakub@redhat.com>
21120             Jeff Law  <law@redhat.com>
21122         PR target/94567
21123         * config/i386/i386.md (*testqi_ext_3): Use CCZmode rather than
21124         CCNOmode in ix86_match_ccmode if len is equal to <MODE>mode precision,
21125         or pos + len >= 32, or pos + len is equal to operands[2] precision
21126         and operands[2] is not a register operand.  During splitting perform
21127         SImode AND if operands[0] doesn't have CCZmode and pos + len is
21128         equal to mode precision.
21130 2020-04-17  Richard Biener  <rguenther@suse.de>
21132         PR other/94629
21133         * cgraphclones.c (cgraph_node::create_clone): Remove duplicate
21134         initialization.
21135         * dwarf2out.c (dw_val_equal_p): Fix pasto in
21136         dw_val_class_vms_delta comparison.
21137         * optabs.c (expand_binop_directly): Fix pasto in commutation
21138         check.
21139         * tree-ssa-sccvn.c (vn_reference_lookup_pieces): Fix pasto in
21140         initialization.
21142 2020-04-17  Jakub Jelinek  <jakub@redhat.com>
21144         PR rtl-optimization/94618
21145         * cfgrtl.c (delete_insn_and_edges): Set purge not just when
21146         insn is the BB_END of its block, but also when it is only followed
21147         by DEBUG_INSNs in its block.
21149         PR tree-optimization/94621
21150         * tree-inline.c (remap_type_1): Don't dereference NULL TYPE_DOMAIN.
21151         Move id->adjust_array_error_bounds check first in the condition.
21153 2020-04-17  Martin Liska  <mliska@suse.cz>
21154             Jonathan Yong <10walls@gmail.com>
21156         PR gcov-profile/94570
21157         * coverage.c (coverage_init): Use separator properly.
21159 2020-04-16  Peter Bergner  <bergner@linux.ibm.com>
21161         PR rtl-optimization/93974
21162         * config/rs6000/rs6000.c (TARGET_CANNOT_SUBSTITUTE_MEM_EQUIV_P): Define.
21163         (rs6000_cannot_substitute_mem_equiv_p): New function.
21165 2020-04-16  Martin Jambor  <mjambor@suse.cz>
21167         PR ipa/93621
21168         * ipa-inline.h (ipa_saved_clone_sources): Declare.
21169         * ipa-inline-transform.c (ipa_saved_clone_sources): New variable.
21170         (save_inline_function_body): Link the new body holder with the
21171         previous one.
21172         * cgraph.c: Include ipa-inline.h.
21173         (cgraph_edge::redirect_call_stmt_to_callee): Try to find the decl from
21174         the statement in ipa_saved_clone_sources.
21175         * cgraphunit.c: Include ipa-inline.h.
21176         (expand_all_functions): Free ipa_saved_clone_sources.
21178 2020-04-16  Richard Sandiford  <richard.sandiford@arm.com>
21180         PR target/94606
21181         * config/aarch64/aarch64.c (aarch64_expand_sve_const_pred_eor): Take
21182         the VNx16BI lowpart of the recursively-generated constant.
21184 2020-04-16  Martin Liska  <mliska@suse.cz>
21185             Jakub Jelinek  <jakub@redhat.com>
21187         PR c++/94314
21188         * cgraphclones.c (set_new_clone_decl_and_node_flags): Drop
21189         DECL_IS_REPLACEABLE_OPERATOR during cloning.
21190         * tree-ssa-dce.c (valid_new_delete_pair_p): New function.
21191         (propagate_necessity): Check operator names.
21193 2020-04-16  Richard Sandiford  <richard.sandiford@arm.com>
21195         PR rtl-optimization/94605
21196         * early-remat.c (early_remat::process_block): Handle insns that
21197         set multiple candidate registers.
21198 2020-04-16  Jan Hubicka  <hubicka@ucw.cz>
21199         
21200         PR gcov-profile/93401
21201         * common.opt (profile-prefix-path): New option.
21202         * coverae.c: Include diagnostics.h.
21203         (coverage_init): Strip profile prefix path.
21204         * doc/invoke.texi (-fprofile-prefix-path): Document.
21206 2020-04-16  Richard Biener  <rguenther@suse.de>
21208         PR middle-end/94614
21209         * expr.c (emit_move_multi_word): Do not generate code when
21210         the destination part is undefined_operand_subword_p.
21211         * lower-subreg.c (resolve_clobber): Look through a paradoxica
21212         subreg.
21214 2020-04-16  Martin Jambor  <mjambor@suse.cz>
21216         PR tree-optimization/94598
21217         * tree-sra.c (verify_sra_access_forest): Fix verification of total
21218         scalarization accesses under access to one-element arrays.
21220 2020-04-16  Jakub Jelinek  <jakub@redhat.com>
21222         PR bootstrap/89494
21223         * function.c (assign_parm_find_data_types): Add workaround for
21224         BROKEN_VALUE_INITIALIZATION compilers.
21226 2020-04-16  Richard Biener  <rguenther@suse.de>
21228         * gdbhooks.py (TreePrinter): Print SSA_NAME_VERSION of SSA_NAME
21229         nodes.
21231 2020-04-15  Uroš Bizjak  <ubizjak@gmail.com>
21233         PR target/94603
21234         * config/i386/i386-builtin.def (__builtin_ia32_movq128):
21235         Require OPTION_MASK_ISA_SSE2.
21237 2020-04-15  Gustavo Romero  <gromero@linux.ibm.com>
21239         PR bootstrap/89494
21240         * dumpfile.c (selftest::temp_dump_context::temp_dump_context):
21241         Don't construct a dump_context temporary to call static method.
21243 2020-04-15  Andrea Corallo  <andrea.corallo@arm.com>
21245         * config/aarch64/falkor-tag-collision-avoidance.c
21246         (valid_src_p): Check for aarch64_address_info type before
21247         accessing base field.
21249 2020-04-15  Andre Vieira  <andre.simoesdiasvieira@arm.com>
21251         * config/arm/mve.md (mve_vec_duplicate<mode>): New pattern.
21252         (V_sz_elem2): Remove unused mode attribute.
21254 2020-04-15  Matthew Malcomson  <matthew.malcomson@arm.com>
21256         * config/arm/arm.md (arm_movdi): Disallow for MVE.
21258 2020-04-15  Richard Biener  <rguenther@suse.de>
21260         PR middle-end/94539
21261         * tree-ssa-alias.c (same_type_for_tbaa): Defer to
21262         alias_sets_conflict_p for pointers.
21264 2020-04-14  Max Filippov  <jcmvbkbc@gmail.com>
21266         PR target/94584
21267         * config/xtensa/xtensa.md (zero_extendhisi2, zero_extendqisi2)
21268         (extendhisi2_internal): Add %v1 before the load instructions.
21270 2020-04-14  Aaron Sawdey  <acsawdey@linux.ibm.com>
21272         PR target/94542
21273         * config/rs6000/rs6000.c (address_to_insn_form): Do not attempt to
21274         use PC-relative addressing for TLS references.
21276 2020-04-14  Martin Jambor  <mjambor@suse.cz>
21278         PR ipa/94434
21279         * ipa-sra.c: Include internal-fn.h.
21280         (enum isra_scan_context): Update comment.
21281         (scan_function): Treat calls to internal_functions like loads or stores.
21283 2020-04-14  Yang Yang <yangyang305@huawei.com>
21285         PR tree-optimization/94574
21286         * tree-ssa.c (non_rewritable_lvalue_p): Add size check when analyzing
21287         whether a vector-insert is rewritable using a BIT_INSERT_EXPR.
21289 2020-04-14  H.J. Lu  <hongjiu.lu@intel.com>
21291         PR target/94561
21292         * config/i386/i386.c (ix86_get_ssemov): Remove mode size check.
21294 2020-04-13  Martin Sebor  <msebor@redhat.com>
21296         * doc/extend.texi (-Wall): Mention -Wformat-overflow and
21297         -Wformat-truncation.  Move -Wzero-length-bounds last.
21298         (-Wrestrict): Document positive form of option enabled by -Wall.
21300 2020-04-13 Zachary Spytz  <zspytz@gmail.com>
21302         * doc/extend.texi: Add realloc to list of built-in functions
21303         are recognized by the compiler.
21305 2020-04-13  H.J. Lu  <hongjiu.lu@intel.com>
21307         PR target/94556
21308         * config/i386/i386.c (ix86_expand_epilogue): Restore the frame
21309         pointer in word_mode for eh_return epilogues.
21311 2020-04-13  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
21313         * config/msp430/msp430.c (msp430_print_operand): Don't add offsets to
21314         memory references in %B, %C and %D operand selectors when the inner
21315         operand is a post increment address.
21317 2020-04-13  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
21319         * config/msp430/msp430.c (msp430_print_operand): Offset a %C memory
21320         reference by 4 bytes, and %D memory reference by 6 bytes.
21322 2020-04-11  Uroš Bizjak  <ubizjak@gmail.com>
21324         PR target/94494
21325         * config/i386/sse.md (REDUC_SSE_SMINMAX_MODE): Use TARGET_SSE2
21326         condition for V4SI, V8HI and V16QI modes.
21328 2020-04-11  Jakub Jelinek  <jakub@redhat.com>
21330         PR debug/94495
21331         PR target/94551
21332         * cselib.c (cselib_record_sp_cfa_base_equiv): Set PRESERVED_VALUE_P on
21333         val->val_rtx.
21335 2020-04-10  Thomas Schwinge  <thomas@codesourcery.com>
21337         PR middle-end/89433
21338         PR middle-end/93465
21339         * omp-general.c (oacc_verify_routine_clauses): Diagnose if
21340         "#pragma omp declare target" has also been applied.
21342 2020-04-09  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
21344         * config/msp430/msp430.c (msp430_expand_epilogue): Use emit_jump_insn
21345         when to emit the epilogue_helper insn.
21346         * config/msp430/msp430.md (epilogue_helper): Add a return insn to the
21347         RTL pattern.
21349 2020-04-09  Jakub Jelinek  <jakub@redhat.com>
21351         PR debug/94495
21352         * cselib.h (cselib_record_sp_cfa_base_equiv,
21353         cselib_sp_derived_value_p): Declare.
21354         * cselib.c (cselib_record_sp_cfa_base_equiv,
21355         cselib_sp_derived_value_p): New functions.
21356         * var-tracking.c (add_stores): Don't record MO_VAL_SET for
21357         cselib_sp_derived_value_p values.
21358         (vt_initialize): Call cselib_record_sp_cfa_base_equiv at the
21359         start of extended basic blocks other than the first one
21360         for !frame_pointer_needed functions.
21362 2020-04-09  Richard Sandiford  <richard.sandiford@arm.com>
21364         * doc/sourcebuild.texi (aarch64_sve_hw, aarch64_sve128_hw)
21365         (aarch64_sve256_hw, aarch64_sve512_hw, aarch64_sve1024_hw)
21366         (aarch64_sve2048_hw): Document.
21367         * config/aarch64/aarch64-protos.h
21368         (aarch64_sve::handle_arm_sve_vector_bits_attribute): Declare.
21369         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Define
21370         __ARM_FEATURE_SVE_VECTOR_OPERATIONS when SVE is enabled.
21371         * config/aarch64/aarch64-sve-builtins.cc (matches_type_p): New
21372         function.
21373         (find_type_suffix_for_scalar_type): Use it instead of comparing
21374         TYPE_MAIN_VARIANTs.
21375         (function_resolver::infer_vector_or_tuple_type): Likewise.
21376         (function_resolver::require_vector_type): Likewise.
21377         (handle_arm_sve_vector_bits_attribute): New function.
21378         * config/aarch64/aarch64.c (pure_scalable_type_info): New class.
21379         (aarch64_attribute_table): Add arm_sve_vector_bits.
21380         (aarch64_return_in_memory_1):
21381         (pure_scalable_type_info::piece::get_rtx): New function.
21382         (pure_scalable_type_info::num_zr): Likewise.
21383         (pure_scalable_type_info::num_pr): Likewise.
21384         (pure_scalable_type_info::get_rtx): Likewise.
21385         (pure_scalable_type_info::analyze): Likewise.
21386         (pure_scalable_type_info::analyze_registers): Likewise.
21387         (pure_scalable_type_info::analyze_array): Likewise.
21388         (pure_scalable_type_info::analyze_record): Likewise.
21389         (pure_scalable_type_info::add_piece): Likewise.
21390         (aarch64_some_values_include_pst_objects_p): Likewise.
21391         (aarch64_returns_value_in_sve_regs_p): Use pure_scalable_type_info
21392         to analyze whether the type is returned in SVE registers.
21393         (aarch64_takes_arguments_in_sve_regs_p): Likwise whether the type
21394         is passed in SVE registers.
21395         (aarch64_pass_by_reference_1): New function, extracted from...
21396         (aarch64_pass_by_reference): ...here.  Use pure_scalable_type_info
21397         to analyze whether the type is a pure scalable type and, if so,
21398         whether it should be passed by reference.
21399         (aarch64_return_in_msb): Return false for pure scalable types.
21400         (aarch64_function_value_1): Fold back into...
21401         (aarch64_function_value): ...this function.  Use
21402         pure_scalable_type_info to analyze whether the type is a pure
21403         scalable type and, if so, which registers it should use.  Handle
21404         types that include pure scalable types but are not themselves
21405         pure scalable types.
21406         (aarch64_return_in_memory_1): New function, split out from...
21407         (aarch64_return_in_memory): ...here.  Use pure_scalable_type_info
21408         to analyze whether the type is a pure scalable type and, if so,
21409         whether it should be returned by reference.
21410         (aarch64_layout_arg): Remove orig_mode argument.  Use
21411         pure_scalable_type_info to analyze whether the type is a pure
21412         scalable type and, if so, which registers it should use.  Handle
21413         types that include pure scalable types but are not themselves
21414         pure scalable types.
21415         (aarch64_function_arg): Update call accordingly.
21416         (aarch64_function_arg_advance): Likewise.
21417         (aarch64_pad_reg_upward): On big-endian targets, return false for
21418         pure scalable types that are smaller than 16 bytes.
21419         (aarch64_member_type_forces_blk): New function.
21420         (aapcs_vfp_sub_candidate): Exit early for built-in SVE types.
21421         (aarch64_short_vector_p): Return false for VECTOR_TYPEs that
21422         correspond to built-in SVE types.  Do not rely on a vector mode
21423         if the type includes an pure scalable type.  When returning true,
21424         assert that the mode is not an SVE mode.
21425         (aarch64_vfp_is_call_or_return_candidate): Do not check for SVE
21426         built-in types here.  When returning true, assert that the type
21427         does not have an SVE mode.
21428         (aarch64_can_change_mode_class): Don't allow anything to change
21429         between a predicate mode and a non-predicate mode.  Also don't
21430         allow changes between SVE vector modes and other modes that
21431         might be bigger than 128 bits.
21432         (aarch64_invalid_binary_op): Reject binary operations that mix
21433         SVE and GNU vector types.
21434         (TARGET_MEMBER_TYPE_FORCES_BLK): Define.
21436 2020-04-09  Richard Sandiford  <richard.sandiford@arm.com>
21438         * config/aarch64/aarch64.c (aarch64_attribute_table): Add
21439         "SVE sizeless type".
21440         * config/aarch64/aarch64-sve-builtins.cc (make_type_sizeless)
21441         (sizeless_type_p): New functions.
21442         (register_builtin_types): Apply make_type_sizeless to the type.
21443         (register_tuple_type): Likewise.
21444         (verify_type_context): Use sizeless_type_p instead of builin_type_p.
21446 2020-04-09  Matthew Malcomson  <matthew.malcomson@arm.com>
21448         * config/arm/arm_cde.h: Remove `extern "C"` when compiling for
21449         C++.
21451 2020-04-09  Martin Jambor  <mjambor@suse.cz>
21452             Richard Biener  <rguenther@suse.de>
21454         PR tree-optimization/94482
21455         * tree-sra.c (create_access_replacement): Dump new replacement with
21456         TDF_UID.
21457         (sra_modify_expr): Fix handling of cases when the original EXPR writes
21458         to only part of the replacement.
21459         * tree-ssa-forwprop.c (pass_forwprop::execute): Properly verify
21460         the first operand of combinations into REAL/IMAGPART_EXPR and
21461         BIT_FIELD_REF.
21463 2020-04-09  Richard Sandiford  <richard.sandiford@arm.com>
21465         * doc/sourcebuild.texi (check-function-bodies): Treat the third
21466         parameter as a list of option regexps and require each regexp
21467         to match.
21469 2020-04-09  Andrea Corallo  <andrea.corallo@arm.com>
21471         PR target/94530
21472         * config/aarch64/falkor-tag-collision-avoidance.c
21473         (valid_src_p): Fix missing rtx type check.
21475 2020-04-09  Bin Cheng  <bin.cheng@linux.alibaba.com>
21476             Richard Biener  <rguenther@suse.de>
21478         PR tree-optimization/93674
21479         * tree-ssa-loop-ivopts.c (langhooks.h): New include.
21480         (add_iv_candidate_for_use): For iv_use of non integer or pointer type,
21481         or non-mode precision type, add candidate in unsigned type with the
21482         same precision.
21484 2020-04-08  Clement Chigot  <clement.chigot@atos.net>
21486         * config/rs6000/aix61.h (LIB_SPEC): Add -lc128 with -mlong-double-128.
21487         * config/rs6000/aix71.h (LIB_SPEC): Likewise.
21488         * config/rs6000/aix72.h (LIB_SPEC): Likewise.
21490 2020-04-08  Jakub Jelinek  <jakub@redhat.com>
21492         PR middle-end/94526
21493         * cselib.c (autoinc_split): Handle e->val_rtx being SP_DERIVED_VALUE_P
21494         with zero offset.
21495         * reload1.c (eliminate_regs_1): Avoid creating
21496         (plus (reg) (const_int 0)) in DEBUG_INSNs.
21498         PR tree-optimization/94524
21499         * tree-vect-generic.c (expand_vector_divmod): If any elt of op1 is
21500         negative for signed TRUNC_MOD_EXPR, multiply with absolute value of
21501         op1 rather than op1 itself at the end.  Punt for signed modulo by
21502         most negative constant.
21503         * tree-vect-patterns.c (vect_recog_divmod_pattern): Punt for signed
21504         modulo by most negative constant.
21506 2020-04-08  Richard Biener  <rguenther@suse.de>
21508         PR rtl-optimization/93946
21509         * cse.c (cse_insn): Record the tabled expression in
21510         src_related.  Verify a redundant store removal is valid.
21512 2020-04-08  H.J. Lu  <hongjiu.lu@intel.com>
21514         PR target/94417
21515         * config/i386/i386-features.c (rest_of_insert_endbranch): Insert
21516         ENDBR at function entry if function will be called indirectly.
21518 2020-04-08  Jakub Jelinek  <jakub@redhat.com>
21520         PR target/94438
21521         * config/i386/i386.c (ix86_get_mask_mode): Only use int mask for elem_size
21522         1, 2, 4 and 8.
21524 2020-04-08  Martin Liska  <mliska@suse.cz>
21526         PR c++/94314
21527         * gimple.c (gimple_call_operator_delete_p): Rename to...
21528         (gimple_call_replaceable_operator_delete_p): ... this.
21529         Use DECL_IS_REPLACEABLE_OPERATOR_DELETE_P.
21530         * gimple.h (gimple_call_operator_delete_p): Rename to ...
21531         (gimple_call_replaceable_operator_delete_p): ... this.
21532         * tree-core.h (tree_function_decl): Add replaceable_operator
21533         flag.
21534         * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1):
21535         Use DECL_IS_REPLACEABLE_OPERATOR_DELETE_P.
21536         (propagate_necessity): Use gimple_call_replaceable_operator_delete_p.
21537         (eliminate_unnecessary_stmts): Likewise.
21538         * tree-streamer-in.c (unpack_ts_function_decl_value_fields):
21539         Pack DECL_IS_REPLACEABLE_OPERATOR.
21540         * tree-streamer-out.c (pack_ts_function_decl_value_fields):
21541         Unpack the field here.
21542         * tree.h (DECL_IS_REPLACEABLE_OPERATOR): New.
21543         (DECL_IS_REPLACEABLE_OPERATOR_NEW_P): New.
21544         (DECL_IS_REPLACEABLE_OPERATOR_DELETE_P): New.
21545         * cgraph.c (cgraph_node::dump): Dump if an operator is replaceable.
21546         * ipa-icf.c (sem_item::compare_referenced_symbol_properties): Compare
21547         replaceable operator flags.
21549 2020-04-08  Dennis Zhang  <dennis.zhang@arm.com>
21550             Matthew Malcomson  <matthew.malcomson@arm.com>
21552         * config/arm/arm-builtins.c (CX_IMM_QUALIFIERS): New macro.
21553         (CX_UNARY_QUALIFIERS, CX_BINARY_QUALIFIERS): Likewise.
21554         (CX_TERNARY_QUALIFIERS): Likewise.
21555         (ARM_BUILTIN_CDE_PATTERN_START): Likewise.
21556         (ARM_BUILTIN_CDE_PATTERN_END): Likewise.
21557         (arm_init_acle_builtins): Initialize CDE builtins.
21558         (arm_expand_acle_builtin): Check CDE constant operands.
21559         * config/arm/arm.h (ARM_CDE_CONST_COPROC): New macro to set the range
21560         of CDE constant operand.
21561         * config/arm/arm.c (arm_hard_regno_mode_ok): Support DImode for
21562         TARGET_VFP_BASE.
21563         (ARM_VCDE_CONST_1, ARM_VCDE_CONST_2, ARM_VCDE_CONST_3): Likewise.
21564         * config/arm/arm_cde.h (__arm_vcx1_u32): New macro of ACLE interface.
21565         (__arm_vcx1a_u32, __arm_vcx2_u32, __arm_vcx2a_u32): Likewise.
21566         (__arm_vcx3_u32, __arm_vcx3a_u32, __arm_vcx1d_u64): Likewise.
21567         (__arm_vcx1da_u64, __arm_vcx2d_u64, __arm_vcx2da_u64): Likewise.
21568         (__arm_vcx3d_u64, __arm_vcx3da_u64): Likewise.
21569         * config/arm/arm_cde_builtins.def: New file.
21570         * config/arm/iterators.md (V_reg): New attribute of SI.
21571         * config/arm/predicates.md (const_int_coproc_operand): New.
21572         (const_int_vcde1_operand, const_int_vcde2_operand): New.
21573         (const_int_vcde3_operand): New.
21574         * config/arm/unspecs.md (UNSPEC_VCDE, UNSPEC_VCDEA): New.
21575         * config/arm/vfp.md (arm_vcx1<mode>): New entry.
21576         (arm_vcx1a<mode>, arm_vcx2<mode>, arm_vcx2a<mode>): Likewise.
21577         (arm_vcx3<mode>, arm_vcx3a<mode>): Likewise.
21579 2020-04-08  Dennis Zhang  <dennis.zhang@arm.com>
21581         * config.gcc: Add arm_cde.h.
21582         * config/arm/arm-c.c (arm_cpu_builtins): Define or undefine
21583         __ARM_FEATURE_CDE and __ARM_FEATURE_CDE_COPROC.
21584         * config/arm/arm-cpus.in (cdecp0, cdecp1, ..., cdecp7): New options.
21585         * config/arm/arm.c (arm_option_reconfigure_globals): Configure
21586         arm_arch_cde and arm_arch_cde_coproc to store the feature bits.
21587         * config/arm/arm.h (TARGET_CDE): New macro.
21588         * config/arm/arm_cde.h: New file.
21589         * doc/invoke.texi: Document CDE options +cdecp[0-7].
21590         * doc/sourcebuild.texi (arm_v8m_main_cde_ok): Document new target
21591         supports option.
21592         (arm_v8m_main_cde_fp, arm_v8_1m_main_cde_mve): Likewise.
21594 2020-04-08  Jakub Jelinek  <jakub@redhat.com>
21596         PR rtl-optimization/94516
21597         * postreload.c: Include rtl-iter.h.
21598         (reload_cse_move2add): Handle SP autoinc here by FOR_EACH_SUBRTX_VAR
21599         looking for all MEMs with RTX_AUTOINC operand.
21600         (move2add_note_store): Remove {PRE,POST}_{INC,DEC} handling.
21602 2020-04-08  Tobias Burnus  <tobias@codesourcery.com>
21604         * omp-grid.c (grid_eliminate_combined_simd_part): Use
21605         OMP_CLAUSE_CODE to access the omp clause code.
21607 2020-04-07  Jeff Law  <law@redhat.com>
21609         PR rtl-optimization/92264
21610         * config/h8300/h8300.md (mov;add peephole2): Avoid applying when
21611         the destination is the stack pointer.
21613 2020-04-07  Jakub Jelinek  <jakub@redhat.com>
21615         PR rtl-optimization/94291
21616         PR rtl-optimization/84169
21617         * combine.c (try_combine): For split_i2i3, don't assume SET_DEST
21618         must be a REG or SUBREG of REG; if it is not one of these, don't
21619         update LOG_LINKs.
21621 2020-04-07  Richard Biener  <rguenther@suse.de>
21623         PR middle-end/94479
21624         * gimplify.c (gimplify_addr_expr): Also consider generated
21625         MEM_REFs.
21627 2020-04-07  Andre Vieira  <andre.simoesdiasvieira@arm.com>
21629         * config/arm/arm_mve.h: Add C++ polymorphism and fix preserve MACROs.
21631 2020-04-07  Andre Vieira  <andre.simoesdiasvieira@arm.com>
21633         * config/arm/arm_mve.h: Cast some pointers to expected types.
21635 2020-04-07  Andre Vieira  <andre.simoesdiasvieira@arm.com>
21637         * config/arm/arm_mve.h: Replace all uses of vuninitializedq_* with the
21638         same with '__arm_' prefix.
21640 2020-04-07  Andre Vieira  <andre.simoesdiasvieira@arm.com>
21642         * config/arm/mve.md (mve_vec_extract*): Allow memory operands in set.
21644 2020-04-07  Andre Vieira  <andre.simoesdiasvieira@arm.com>
21646         * config/arm/arm.c (arm_mve_immediate_check): Removed.
21647         * config/arm/mve.md (MVE_pred2, MVE_constraint2): Added FP types.
21648         (mve_vcvtq_n_to_f_*, mve_vcvtq_n_from_f_*, mve_vqshrnbq_n_*,
21649          mve_vqshrntq_n_*, mve_vqshrunbq_n_s*, mve_vqshruntq_n_s*,
21650          mve_vcvtq_m_n_from_f_*, mve_vcvtq_m_n_to_f_*, mve_vqshrnbq_m_n_*,
21651          mve_vqrshruntq_m_n_s*, mve_vqshrunbq_m_n_s*,
21652          mve_vqshruntq_m_n_s*): Fixed immediate constraints.
21654 2020-04-07  Andre Vieira  <andre.simoesdiasvieira@arm.com>
21656         * config/arm/arm.d (ashldi3): Don't use lsll for constant 32-bit shifts.
21658 2020-04-07  Andre Vieira  <andre.simoesdiasvieira@arm.com>
21660         * config/arm/arm_mve.h: Fix v[id]wdup intrinsics.
21661         * config/arm/mve/md: Fix v[id]wdup patterns.
21663 2020-04-07  Andre Vieira  <andre.simoesdiasvieira@arm.com>
21665         * config/arm/arm.c (output_move_neon): Deal with label + offset cases.
21666         * config/arm/mve.md (*mve_mov<mode>): Handle const vectors.
21668 2020-04-07  Andre Vieira  <andre.simoesdiasvieira@arm.com>
21670         * config/arm/arm_mve.h: Remove use of typeof for addr pointer parameters
21671         and remove const_ptr enums.
21673 2020-04-07  Andre Vieira  <andre.simoesdiasvieira@arm.com>
21675         * config/arm/arm_mve.h (vsubq_n): Merge with...
21676         (vsubq): ... this.
21677         (vmulq_n): Merge with...
21678         (vmulq): ... this.
21679         (__ARM_mve_typeid): Simplify scalar and constant detection.
21681 2020-04-07  Jakub Jelinek  <jakub@redhat.com>
21683         PR target/94509
21684         * config/i386/i386-expand.c (expand_vec_perm_pshufb): Fix the check
21685         for inter-lane permutation for 64-byte modes.
21687         PR target/94488
21688         * config/aarch64/aarch64-simd.md (ashl<mode>3, lshr<mode>3,
21689         ashr<mode>3): Force operands[2] into reg whenever it is not CONST_INT.
21690         Assume it is a REG after that instead of testing it and doing FAIL
21691         otherwise.  Formatting fix.
21693 2020-04-07  Sebastian Huber  <sebastian.huber@embedded-brains.de>
21695         * config/rs6000/t-rtems: Delete mcpu=8540 multilib.
21697 2020-04-07  Jakub Jelinek  <jakub@redhat.com>
21699         PR target/94500
21700         * config/i386/i386-expand.c (emit_reduc_half): For V{64QI,32HI}mode
21701         handle i < 64 using avx512bw_lshrv4ti3.  Formatting fixes.
21703 2020-04-06  Jakub Jelinek  <jakub@redhat.com>
21705         * cselib.c (cselib_subst_to_values): For SP_DERIVED_VALUE_P
21706         + const0_rtx return the SP_DERIVED_VALUE_P.
21708 2020-04-06  Richard Sandiford  <richard.sandiford@arm.com>
21710         PR rtl-optimization/92989
21711         * lra-lives.c (process_bb_lives): Do not treat eh_return data
21712         registers as being live at the beginning of the EH receiver.
21714 2020-04-05 Zachary Spytz  <zspytz@gmail.com>
21716         * extend.texi: Add free to list of ISO C90 functions that
21717         are recognized by the compiler.
21719 2020-04-05 Nagaraju Mekala <nmekala@xilix.com>
21721         * config/microblaze/microblaze.c (microblaze_must_save_register): Check
21722         for fast_interrupt.
21724         * config/microblaze/microblaze.md (trap): Update output pattern.
21726 2020-04-04  Hannes Domani  <ssbssa@yahoo.de>
21727             Jakub Jelinek  <jakub@redhat.com>
21729         PR debug/94459
21730         * dwarf2out.c (gen_subprogram_die): Look through references, pointers,
21731         arrays, pointer-to-members, function types and qualifiers when
21732         checking if in-class DIE had an 'auto' or 'decltype(auto)' return type
21733         to emit type again on definition.
21735 2020-04-04  Jan Hubicka  <hubicka@ucw.cz>
21737         PR ipa/93940
21738         * ipa-fnsummary.c (vrp_will_run_p): New function.
21739         (fre_will_run_p): New function.
21740         (evaluate_properties_for_edge): Use it.
21741         * ipa-inline.c (can_inline_edge_by_limits_p): Do not inline
21742         !optimize_debug to optimize_debug.
21744 2020-04-04  Jakub Jelinek  <jakub@redhat.com>
21746         PR rtl-optimization/94468
21747         * cselib.c (references_value_p): Formatting fix.
21748         (cselib_useless_value_p): New function.
21749         (discard_useless_locs, discard_useless_values,
21750         cselib_invalidate_regno_val, cselib_invalidate_mem,
21751         cselib_record_set): Use it instead of
21752         v->locs == 0 && !PRESERVED_VALUE_P (v->val_rtx).
21754         PR debug/94441
21755         * tree-iterator.h (expr_single): Declare.
21756         * tree-iterator.c (expr_single): New function.
21757         * tree.h (protected_set_expr_location_if_unset): Declare.
21758         * tree.c (protected_set_expr_location): Use expr_single.
21759         (protected_set_expr_location_if_unset): New function.
21761 2020-04-03  Jeff Law  <law@redhat.com>
21763         PR rtl-optimization/92264
21764         * config/stormy16/stormy16.c (xstormy16_preferred_reload_class): Handle
21765         reloading of auto-increment addressing modes.
21767 2020-04-03  H.J. Lu  <hongjiu.lu@intel.com>
21769         PR target/94467
21770         * config/i386/sse.md (ssse3_pshufbv8qi3): Mark scratch operand
21771         as earlyclobber.
21773 2020-04-03  Jeff Law  <law@redhat.com>
21775         PR rtl-optimization/92264
21776         * config/m32r/m32r.c (m32r_output_block_move): Properly account for
21777         post-increment addressing of source operands as well as residuals
21778         when computing any adjustments to the input pointer.
21780 2020-04-03  Jakub Jelinek  <jakub@redhat.com>
21782         PR target/94460
21783         * config/i386/sse.md (avx2_ph<plusminus_mnemonic>wv16hi3,
21784         avx2_ph<plusminus_mnemonic>dv8si3): Fix up RTL pattern to do
21785         second half of first lane from first lane of second operand and
21786         first half of second lane from second lane of first operand.
21788 2020-04-03  Andre Vieira  <andre.simoesdiasvieira@arm.com>
21790         * config/arm/arm_mve.h: Condition the header file on __ARM_FEATURE_MVE.
21792 2020-04-03  Tamar Christina  <tamar.christina@arm.com>
21794         PR target/94396
21795         * common/config/aarch64/aarch64-common.c
21796         (aarch64_get_extension_string_for_isa_flags): Handle default flags.
21798 2020-04-03  Richard Biener  <rguenther@suse.de>
21800         PR middle-end/94465
21801         * tree.c (array_ref_low_bound): Deal with released SSA names
21802         in index position.
21804 2020-04-03  Kwok Cheung Yeung  <kcy@codesourcery.com>
21806         * config/gcn/gcn.c (print_operand): Handle unordered comparison
21807         operators.
21808         * config/gcn/predicates.md (gcn_fp_compare_operator): Add unordered
21809         comparison operators.
21811 2020-04-03  Kewen Lin  <linkw@gcc.gnu.org>
21813         PR tree-optimization/94443
21814         * tree-vect-loop.c (vectorizable_live_operation): Use
21815         gsi_insert_seq_before to replace gsi_insert_before.
21817 2020-04-03  Martin Liska  <mliska@suse.cz>
21819         PR ipa/94445
21820         * ipa-icf-gimple.c (func_checker::compare_gimple_call):
21821           Compare type attributes for gimple_call_fntypes.
21823 2020-04-02  Sandra Loosemore  <sandra@codesourcery.com>
21825         * alias.c (get_alias_set): Fix comment typos.
21827 2020-04-02  Fritz Reese  <foreese@gcc.gnu.org>
21829         PR fortran/85982
21830         * fortran/decl.c (match_attr_spec): Lump COMP_STRUCTURE/COMP_MAP into
21831         attribute checking used by TYPE.
21833 2020-04-02  Martin Jambor  <mjambor@suse.cz>
21835         PR ipa/92676
21836         * ipa-sra.c (struct caller_issues): New fields candidate and
21837         call_from_outside_comdat.
21838         (check_for_caller_issues): Check for calls from outsied of
21839         candidate's same_comdat_group.
21840         (check_all_callers_for_issues): Set up issues.candidate, check result
21841         of the new check.
21842         (mark_callers_calls_comdat_local): New function.
21843         (process_isra_node_results): Set calls_comdat_local of callers if
21844         appropriate.
21846 2020-04-02  Richard Biener  <rguenther@suse.de>
21848         PR c/94392
21849         * common.opt (ffinite-loops): Initialize to zero.
21850         * opts.c (default_options_table): Remove OPT_ffinite_loops
21851         entry.
21852         * cfgloop.h (loop::finite_p): New member.
21853         * cfgloopmanip.c (copy_loop_info): Copy finite_p.
21854         * ipa-icf-gimple.c (func_checker::compare_loops): Compare
21855         finite_p.
21856         * lto-streamer-in.c (input_cfg): Stream finite_p.
21857         * lto-streamer-out.c (output_cfg): Likewise.
21858         * tree-cfg.c (replace_loop_annotate): Initialize finite_p
21859         from flag_finite_loops at CFG build time.
21860         * tree-ssa-loop-niter.c (finite_loop_p): Check the loops
21861         finite_p flag instead of flag_finite_loops.
21862         * doc/invoke.texi (ffinite-loops): Adjust documentation of
21863         default setting.
21865 2020-04-02  Richard Biener  <rguenther@suse.de>
21867         PR debug/94450
21868         * dwarf2out.c (dwarf2out_early_finish): Remove code emitting
21869         DW_TAG_imported_unit.
21871 2020-04-02  Maciej W. Rozycki  <macro@wdc.com>
21873         * doc/install.texi (Specific) <riscv32-*-elf, riscv32-*-linux>
21874         <riscv64-*-elf, riscv64-*-linux>: Update binutils requirement to
21875         2.30.
21877 2020-04-02  Kewen Lin  <linkw@gcc.gnu.org>
21879         PR tree-optimization/94401
21880         * tree-vect-loop.c (vectorizable_load): Handle VMAT_CONTIGUOUS_REVERSE
21881         access type when loading halves of vector to avoid peeling for gaps.
21883 2020-04-02  Jakub Jelinek  <jakub@redhat.com>
21885         * config/mips/mti-linux.h (SYSROOT_SUFFIX_SPEC): Add a space in
21886         between a string literal and MIPS_SYSVERSION_SPEC macro.
21888 2020-04-02  Martin Jambor  <mjambor@suse.cz>
21890         * doc/invoke.texi (Optimize Options): Document sra-max-propagations.
21892 2020-04-02  Jakub Jelinek  <jakub@redhat.com>
21894         PR rtl-optimization/92264
21895         * params.opt (-param=max-find-base-term-values=): Decrease default
21896         from 2000 to 200.
21898         PR rtl-optimization/92264
21899         * rtl.h (struct rtx_def): Mention that call bit is used as
21900         SP_DERIVED_VALUE_P in cselib.c.
21901         * cselib.c (SP_DERIVED_VALUE_P): Define.
21902         (PRESERVED_VALUE_P, SP_BASED_VALUE_P): Move definitions earlier.
21903         (cselib_hasher::equal): Handle equality between SP_DERIVED_VALUE_P
21904         val_rtx and sp based expression where offsets cancel each other.
21905         (preserve_constants_and_equivs): Formatting fix.
21906         (cselib_reset_table): Add reverse op loc to SP_DERIVED_VALUE_P
21907         locs list for cfa_base_preserved_val if needed.  Formatting fix.
21908         (autoinc_split): If the to be returned value is a REG, MEM or
21909         VALUE which has SP_DERIVED_VALUE_P + CONST_INT as one of its
21910         locs, return the SP_DERIVED_VALUE_P VALUE and adjust *off.
21911         (rtx_equal_for_cselib_1): Call autoinc_split even if both
21912         expressions are PLUS in Pmode with CONST_INT second operands.
21913         Handle SP_DERIVED_VALUE_P cases.
21914         (cselib_hash_plus_const_int): New function.
21915         (cselib_hash_rtx): Use it for PLUS in Pmode with CONST_INT
21916         second operand, as well as for PRE_DEC etc. that ought to be
21917         hashed the same way.
21918         (cselib_subst_to_values): Substitute PLUS with Pmode and
21919         CONST_INT operand if the first operand is a VALUE which has
21920         SP_DERIVED_VALUE_P + CONST_INT as one of its locs for the
21921         SP_DERIVED_VALUE_P + adjusted offset.
21922         (cselib_lookup_1): When creating a new VALUE for stack_pointer_rtx,
21923         set SP_DERIVED_VALUE_P on it.  Set PRESERVED_VALUE_P when adding
21924         SP_DERIVED_VALUE_P PRESERVED_VALUE_P subseted VALUE location.
21925         * var-tracking.c (vt_initialize): Call cselib_add_permanent_equiv
21926         on the sp value before calling cselib_add_permanent_equiv on the
21927         cfa_base value.
21928         * dse.c (check_for_inc_dec_1, check_for_inc_dec): Punt on RTX_AUTOINC
21929         in the insn without REG_INC note.
21930         (replace_read): Punt on RTX_AUTOINC in the *loc being replaced.
21931         Punt on invalid insns added by copy_to_mode_reg.  Formatting fixes.
21933         PR target/94435
21934         * config/aarch64/aarch64.c (aarch64_gen_compare_reg_maybe_ze): For
21935         y_mode E_[QH]Imode and y being a CONST_INT, change y_mode to SImode.
21937 2020-04-02  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
21939         PR target/94317
21940         * config/arm/arm-builtins.c (LDRGBWBXU_QUALIFIERS): Define.
21941         (LDRGBWBXU_Z_QUALIFIERS): Likewise.
21942         * config/arm/arm_mve.h (__arm_vldrdq_gather_base_wb_s64): Modify
21943         intrinsic defintion by adding a new builtin call to writeback into base
21944         address.
21945         (__arm_vldrdq_gather_base_wb_u64): Likewise.
21946         (__arm_vldrdq_gather_base_wb_z_s64): Likewise.
21947         (__arm_vldrdq_gather_base_wb_z_u64): Likewise.
21948         (__arm_vldrwq_gather_base_wb_s32): Likewise.
21949         (__arm_vldrwq_gather_base_wb_u32): Likewise.
21950         (__arm_vldrwq_gather_base_wb_z_s32): Likewise.
21951         (__arm_vldrwq_gather_base_wb_z_u32): Likewise.
21952         (__arm_vldrwq_gather_base_wb_f32): Likewise.
21953         (__arm_vldrwq_gather_base_wb_z_f32): Likewise.
21954         * config/arm/arm_mve_builtins.def (vldrwq_gather_base_wb_z_u): Modify
21955         builtin's qualifier.
21956         (vldrdq_gather_base_wb_z_u): Likewise.
21957         (vldrwq_gather_base_wb_u): Likewise.
21958         (vldrdq_gather_base_wb_u): Likewise.
21959         (vldrwq_gather_base_wb_z_s): Likewise.
21960         (vldrwq_gather_base_wb_z_f): Likewise.
21961         (vldrdq_gather_base_wb_z_s): Likewise.
21962         (vldrwq_gather_base_wb_s): Likewise.
21963         (vldrwq_gather_base_wb_f): Likewise.
21964         (vldrdq_gather_base_wb_s): Likewise.
21965         (vldrwq_gather_base_nowb_z_u): Define builtin.
21966         (vldrdq_gather_base_nowb_z_u): Likewise.
21967         (vldrwq_gather_base_nowb_u): Likewise.
21968         (vldrdq_gather_base_nowb_u): Likewise.
21969         (vldrwq_gather_base_nowb_z_s): Likewise.
21970         (vldrwq_gather_base_nowb_z_f): Likewise.
21971         (vldrdq_gather_base_nowb_z_s): Likewise.
21972         (vldrwq_gather_base_nowb_s): Likewise.
21973         (vldrwq_gather_base_nowb_f): Likewise.
21974         (vldrdq_gather_base_nowb_s): Likewise.
21975         * config/arm/mve.md (mve_vldrwq_gather_base_nowb_<supf>v4si): Define RTL
21976         pattern.
21977         (mve_vldrwq_gather_base_wb_<supf>v4si): Modify RTL pattern.
21978         (mve_vldrwq_gather_base_nowb_z_<supf>v4si): Define RTL pattern.
21979         (mve_vldrwq_gather_base_wb_z_<supf>v4si): Modify RTL pattern.
21980         (mve_vldrwq_gather_base_wb_fv4sf): Modify RTL pattern.
21981         (mve_vldrwq_gather_base_nowb_fv4sf): Define RTL pattern.
21982         (mve_vldrwq_gather_base_wb_z_fv4sf): Modify RTL pattern.
21983         (mve_vldrwq_gather_base_nowb_z_fv4sf): Define RTL pattern.
21984         (mve_vldrdq_gather_base_nowb_<supf>v4di): Define RTL pattern.
21985         (mve_vldrdq_gather_base_wb_<supf>v4di):  Modify RTL pattern.
21986         (mve_vldrdq_gather_base_nowb_z_<supf>v4di): Define RTL pattern.
21987         (mve_vldrdq_gather_base_wb_z_<supf>v4di):  Modify RTL pattern.
21989 2020-04-02  Andreas Krebbel  <krebbel@linux.ibm.com>
21991         * config/s390/vector.md ("<ti*>add<mode>3", "mul<mode>3")
21992         ("and<mode>3", "notand<mode>3", "ior<mode>3", "ior_not<mode>3")
21993         ("xor<mode>3", "notxor<mode>3", "smin<mode>3", "smax<mode>3")
21994         ("umin<mode>3", "umax<mode>3", "vec_widen_smult_even_<mode>")
21995         ("vec_widen_umult_even_<mode>", "vec_widen_smult_odd_<mode>")
21996         ("vec_widen_umult_odd_<mode>", "add<mode>3", "sub<mode>3")
21997         ("mul<mode>3", "fma<mode>4", "fms<mode>4", "neg_fma<mode>4")
21998         ("neg_fms<mode>4", "*smax<mode>3_vxe", "*smaxv2df3_vx")
21999         ("*smin<mode>3_vxe", "*sminv2df3_vx"): Remove % constraint
22000         modifier.
22001         ("vec_widen_umult_lo_<mode>", "vec_widen_umult_hi_<mode>")
22002         ("vec_widen_smult_lo_<mode>", "vec_widen_smult_hi_<mode>"):
22003         Remove constraints from expander.
22004         * config/s390/vx-builtins.md ("vacc<bhfgq>_<mode>", "vacq")
22005         ("vacccq", "vec_avg<mode>", "vec_avgu<mode>", "vec_vmal<mode>")
22006         ("vec_vmah<mode>", "vec_vmalh<mode>", "vec_vmae<mode>")
22007         ("vec_vmale<mode>", "vec_vmao<mode>", "vec_vmalo<mode>")
22008         ("vec_smulh<mode>", "vec_umulh<mode>", "vec_nor<mode>3")
22009         ("vfmin<mode>", "vfmax<mode>"): Remove % constraint modifier.
22011 2020-04-01  Peter Bergner  <bergner@linux.ibm.com>
22013         PR rtl-optimization/94123
22014         * lower-subreg.c (pass_lower_subreg3::gate): Remove test for
22015         flag_split_wide_types_early.
22017 2020-04-01  Joerg Sonnenberger  <joerg@bec.de>
22019         * doc/extend.texi (Common Function Attributes): Fix typo.
22021 2020-04-01  Segher Boessenkool  <segher@kernel.crashing.org>
22023         PR target/94420
22024         * config/rs6000/rs6000.md (*tocref<mode> for P): Add insn condition
22025         on operands[1].
22027 2020-04-01  Zackery Spytz  <zspytz@gmail.com>
22029         * doc/extend.texi: Fix a typo in the documentation of the
22030         copy function attribute.
22032 2020-04-01  Jakub Jelinek  <jakub@redhat.com>
22034         PR middle-end/94423
22035         * tree-object-size.c (pass_object_sizes::execute): Don't call
22036         replace_uses_by for SSA_NAME_OCCURS_IN_ABNORMAL_PHI lhs, instead
22037         call replace_call_with_value.
22039 2020-04-01  Kewen Lin  <linkw@gcc.gnu.org>
22041         PR tree-optimization/94043
22042         * tree-vect-loop.c (vectorizable_live_operation): Generate loop-closed
22043         phi for vec_lhs and use it for lane extraction.
22045 2020-03-31  Felix Yang  <felix.yang@huawei.com>
22047         PR tree-optimization/94398
22048         * tree-vect-stmts.c (vectorizable_store): Instead of calling
22049         vect_supportable_dr_alignment, set alignment_support_scheme to
22050         dr_unaligned_supported for gather-scatter accesses.
22051         (vectorizable_load): Likewise.
22053 2020-03-31  Andrew Stubbs  <ams@codesourcery.com>
22055         * config/gcn/gcn-valu.md (V_QI, V_HI, V_HF, V_SI, V_SF, V_DI, V_DF):
22056         New mode iterators.
22057         (vnsi, VnSI, vndi, VnDI): New mode attributes.
22058         (mov<mode>): Use <VnDI> in place of V64DI.
22059         (mov<mode>_exec): Likewise.
22060         (mov<mode>_sgprbase): Likewise.
22061         (reload_out<mode>): Likewise.
22062         (*vec_set<mode>_1): Use GET_MODE_NUNITS instead of constant 64.
22063         (gather_load<mode>v64si): Rename to ...
22064         (gather_load<mode><vnsi>): ... this, and use <VnSI> in place of V64SI,
22065         and <VnDI> in place of V64DI.
22066         (gather<mode>_insn_1offset<exec>): Use <VnDI> in place of V64DI.
22067         (gather<mode>_insn_1offset_ds<exec>): Use <VnSI> in place of V64SI.
22068         (gather<mode>_insn_2offsets<exec>): Use <VnSI> and <VnDI>.
22069         (scatter_store<mode>v64si): Rename to ...
22070         (scatter_store<mode><vnsi>): ... this, and use <VnSI> and <VnDI>.
22071         (scatter<mode>_expr<exec_scatter>): Use <VnSI> and <VnDI>.
22072         (scatter<mode>_insn_1offset<exec_scatter>): Likewise.
22073         (scatter<mode>_insn_1offset_ds<exec_scatter>): Likewise.
22074         (scatter<mode>_insn_2offsets<exec_scatter>): Likewise.
22075         (ds_bpermute<mode>): Use <VnSI>.
22076         (addv64si3_vcc<exec_vcc>): Rename to ...
22077         (add<mode>3_vcc<exec_vcc>): ... this, and use V_SI.
22078         (addv64si3_vcc_dup<exec_vcc>): Rename to ...
22079         (add<mode>3_vcc_dup<exec_vcc>): ... this, and use V_SI.
22080         (addcv64si3<exec_vcc>): Rename to ...
22081         (addc<mode>3<exec_vcc>): ... this, and use V_SI.
22082         (subv64si3_vcc<exec_vcc>): Rename to ...
22083         (sub<mode>3_vcc<exec_vcc>): ... this, and use V_SI.
22084         (subcv64si3<exec_vcc>): Rename to ...
22085         (subc<mode>3<exec_vcc>): ... this, and use V_SI.
22086         (addv64di3): Rename to ...
22087         (add<mode>3): ... this, and use V_DI.
22088         (addv64di3_exec): Rename to ...
22089         (add<mode>3_exec): ... this, and use V_DI.
22090         (subv64di3): Rename to ...
22091         (sub<mode>3): ... this, and use V_DI.
22092         (subv64di3_exec): Rename to ...
22093         (sub<mode>3_exec): ... this, and use V_DI.
22094         (addv64di3_zext): Rename to ...
22095         (add<mode>3_zext): ... this, and use V_DI and <VnSI>.
22096         (addv64di3_zext_exec): Rename to ...
22097         (add<mode>3_zext_exec): ... this, and use V_DI and <VnSI>.
22098         (addv64di3_zext_dup): Rename to ...
22099         (add<mode>3_zext_dup): ... this, and use V_DI and <VnSI>.
22100         (addv64di3_zext_dup_exec): Rename to ...
22101         (add<mode>3_zext_dup_exec): ... this, and use V_DI and <VnSI>.
22102         (addv64di3_zext_dup2): Rename to ...
22103         (add<mode>3_zext_dup2): ... this, and use V_DI and <VnSI>.
22104         (addv64di3_zext_dup2_exec): Rename to ...
22105         (add<mode>3_zext_dup2_exec): ... this, and use V_DI and <VnSI>.
22106         (addv64di3_sext_dup2): Rename to ...
22107         (add<mode>3_sext_dup2): ... this, and use V_DI and <VnSI>.
22108         (addv64di3_sext_dup2_exec): Rename to ...
22109         (add<mode>3_sext_dup2_exec): ... this, and use V_DI and <VnSI>.
22110         (<su>mulv64si3_highpart<exec>): Rename to ...
22111         (<su>mul<mode>3_highpart<exec>): ... this and use V_SI and <VnDI>.
22112         (mulv64di3): Rename to ...
22113         (mul<mode>3): ... this, and use V_DI and <VnSI>.
22114         (mulv64di3_exec): Rename to ...
22115         (mul<mode>3_exec): ... this, and use V_DI and <VnSI>.
22116         (mulv64di3_zext): Rename to ...
22117         (mul<mode>3_zext): ... this, and use V_DI and <VnSI>.
22118         (mulv64di3_zext_exec): Rename to ...
22119         (mul<mode>3_zext_exec): ... this, and use V_DI and <VnSI>.
22120         (mulv64di3_zext_dup2): Rename to ...
22121         (mul<mode>3_zext_dup2): ... this, and use V_DI and <VnSI>.
22122         (mulv64di3_zext_dup2_exec): Rename to ...
22123         (mul<mode>3_zext_dup2_exec): ... this, and use V_DI and <VnSI>.
22124         (<expander>v64di3): Rename to ...
22125         (<expander><mode>3): ... this, and use V_DI and <VnSI>.
22126         (<expander>v64di3_exec): Rename to ...
22127         (<expander><mode>3_exec): ... this, and use V_DI and <VnSI>.
22128         (<expander>v64si3<exec>): Rename to ...
22129         (<expander><mode>3<exec>): ... this, and use V_SI and <VnSI>.
22130         (v<expander>v64si3<exec>): Rename to ...
22131         (v<expander><mode>3<exec>): ... this, and use V_SI and <VnSI>.
22132         (<expander>v64si3<exec>): Rename to ...
22133         (<expander><vnsi>3<exec>): ... this, and use V_SI.
22134         (subv64df3<exec>): Rename to ...
22135         (sub<mode>3<exec>): ... this, and use V_DF.
22136         (truncv64di<mode>2): Rename to ...
22137         (trunc<vndi><mode>2): ... this, and use <VnDI>.
22138         (truncv64di<mode>2_exec): Rename to ...
22139         (trunc<vndi><mode>2_exec): ... this, and use <VnDI>.
22140         (<convop><mode>v64di2): Rename to ...
22141         (<convop><mode><vndi>2): ... this, and use <VnDI>.
22142         (<convop><mode>v64di2_exec): Rename to ...
22143         (<convop><mode><vndi>2_exec): ... this, and use <VnDI>.
22144         (vec_cmp<u>v64qidi): Rename to ...
22145         (vec_cmp<u><mode>di): ... this, and use <VnSI>.
22146         (vec_cmp<u>v64qidi_exec): Rename to ...
22147         (vec_cmp<u><mode>di_exec): ... this, and use <VnSI>.
22148         (vcond_mask_<mode>di): Use <VnDI>.
22149         (maskload<mode>di): Likewise.
22150         (maskstore<mode>di): Likewise.
22151         (mask_gather_load<mode>v64si): Rename to ...
22152         (mask_gather_load<mode><vnsi>): ... this, and use <VnSI> and <VnDI>.
22153         (mask_scatter_store<mode>v64si): Rename to ...
22154         (mask_scatter_store<mode><vnsi>): ... this, and use <VnSI> and <VnDI>.
22155         (*<reduc_op>_dpp_shr_v64di): Rename to ...
22156         (*<reduc_op>_dpp_shr_<mode>): ... this, and use V_DI and <VnSI>.
22157         (*plus_carry_in_dpp_shr_v64si): Rename to ...
22158         (*plus_carry_in_dpp_shr_<mode>): ... this, and use V_SI.
22159         (*plus_carry_dpp_shr_v64di): Rename to ...
22160         (*plus_carry_dpp_shr_<mode>): ... this, and use V_DI and <VnSI>.
22161         (vec_seriesv64si): Rename to ...
22162         (vec_series<mode>): ... this, and use V_SI.
22163         (vec_seriesv64di): Rename to ...
22164         (vec_series<mode>): ... this, and use V_DI.
22166 2020-03-31  Claudiu Zissulescu  <claziss@synopsys.com>
22168         * config/arc/arc.c (arc_print_operand): Use
22169         HOST_WIDE_INT_PRINT_DEC macro.
22171 2020-03-31  Claudiu Zissulescu  <claziss@synopsys.com>
22173         * config/arc/arc.h (ASM_FORMAT_PRIVATE_NAME): Fix it.
22175 2020-03-31  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
22177         * config/arm/arm_mve.h (vbicq): Define MVE intrinsic polymorphic
22178         variant.
22179         (__arm_vbicq): Likewise.
22181 2020-03-31  Vineet Gupta <vgupta@synopsys.com>
22183         * config/arc/linux.h: GLIBC_DYNAMIC_LINKER support BE/arc700.
22185 2020-03-31  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
22187         * config/arm/arm_mve.h (vaddlvq): Move the polymorphic variant to the
22188         common section of both MVE Integer and MVE Floating Point.
22189         (vaddvq): Likewise.
22190         (vaddlvq_p): Likewise.
22191         (vaddvaq): Likewise.
22192         (vaddvq_p): Likewise.
22193         (vcmpcsq): Likewise.
22194         (vmlsdavxq): Likewise.
22195         (vmlsdavq): Likewise.
22196         (vmladavxq): Likewise.
22197         (vmladavq): Likewise.
22198         (vminvq): Likewise.
22199         (vminavq): Likewise.
22200         (vmaxvq): Likewise.
22201         (vmaxavq): Likewise.
22202         (vmlaldavq): Likewise.
22203         (vcmphiq): Likewise.
22204         (vaddlvaq): Likewise.
22205         (vrmlaldavhq): Likewise.
22206         (vrmlaldavhxq): Likewise.
22207         (vrmlsldavhq): Likewise.
22208         (vrmlsldavhxq): Likewise.
22209         (vmlsldavxq): Likewise.
22210         (vmlsldavq): Likewise.
22211         (vabavq): Likewise.
22212         (vrmlaldavhaq): Likewise.
22213         (vcmpgeq_m_n): Likewise.
22214         (vmlsdavxq_p): Likewise.
22215         (vmlsdavq_p): Likewise.
22216         (vmlsdavaxq): Likewise.
22217         (vmlsdavaq): Likewise.
22218         (vaddvaq_p): Likewise.
22219         (vcmpcsq_m_n): Likewise.
22220         (vcmpcsq_m): Likewise.
22221         (vmladavxq_p): Likewise.
22222         (vmladavq_p): Likewise.
22223         (vmladavaxq): Likewise.
22224         (vmladavaq): Likewise.
22225         (vminvq_p): Likewise.
22226         (vminavq_p): Likewise.
22227         (vmaxvq_p): Likewise.
22228         (vmaxavq_p): Likewise.
22229         (vcmphiq_m): Likewise.
22230         (vaddlvaq_p): Likewise.
22231         (vmlaldavaq): Likewise.
22232         (vmlaldavaxq): Likewise.
22233         (vmlaldavq_p): Likewise.
22234         (vmlaldavxq_p): Likewise.
22235         (vmlsldavaq): Likewise.
22236         (vmlsldavaxq): Likewise.
22237         (vmlsldavq_p): Likewise.
22238         (vmlsldavxq_p): Likewise.
22239         (vrmlaldavhaxq): Likewise.
22240         (vrmlaldavhq_p): Likewise.
22241         (vrmlaldavhxq_p): Likewise.
22242         (vrmlsldavhaq): Likewise.
22243         (vrmlsldavhaxq): Likewise.
22244         (vrmlsldavhq_p): Likewise.
22245         (vrmlsldavhxq_p): Likewise.
22246         (vabavq_p): Likewise.
22247         (vmladavaq_p): Likewise.
22248         (vstrbq_scatter_offset): Likewise.
22249         (vstrbq_p): Likewise.
22250         (vstrbq_scatter_offset_p): Likewise.
22251         (vstrdq_scatter_base_p): Likewise.
22252         (vstrdq_scatter_base): Likewise.
22253         (vstrdq_scatter_offset_p): Likewise.
22254         (vstrdq_scatter_offset): Likewise.
22255         (vstrdq_scatter_shifted_offset_p): Likewise.
22256         (vstrdq_scatter_shifted_offset): Likewise.
22257         (vmaxq_x): Likewise.
22258         (vminq_x): Likewise.
22259         (vmovlbq_x): Likewise.
22260         (vmovltq_x): Likewise.
22261         (vmulhq_x): Likewise.
22262         (vmullbq_int_x): Likewise.
22263         (vmullbq_poly_x): Likewise.
22264         (vmulltq_int_x): Likewise.
22265         (vmulltq_poly_x): Likewise.
22266         (vstrbq): Likewise.
22268 2020-03-31  Jakub Jelinek  <jakub@redhat.com>
22270         PR target/94368
22271         * config/aarch64/constraints.md (Uph): New constraint.
22272         * config/aarch64/atomics.md (cas_short_expected_imm): New mode attr.
22273         (@aarch64_compare_and_swap<mode>): Use it instead of n in operand 2's
22274         constraint.
22276 2020-03-31  Marc Glisse  <marc.glisse@inria.fr>
22277             Jakub Jelinek  <jakub@redhat.com>
22279         PR middle-end/94412
22280         * fold-const.c (fold_binary_loc) <case TRUNC_DIV_EXPR>: Use
22281         ANY_INTEGRAL_TYPE_P instead of INTEGRAL_TYPE_P.
22283 2020-03-31  Jakub Jelinek  <jakub@redhat.com>
22285         PR tree-optimization/94403
22286         * gimple-ssa-store-merging.c (verify_symbolic_number_p): Allow also
22287         ENUMERAL_TYPE lhs_type.
22289         PR rtl-optimization/94344
22290         * tree-ssa-forwprop.c (simplify_rotate): Handle also same precision
22291         conversions, either on both operands of |^+ or just one.  Handle
22292         also extra same precision conversion on RSHIFT_EXPR first operand
22293         provided RSHIFT_EXPR is performed in unsigned type.
22295 2020-03-30  David Malcolm  <dmalcolm@redhat.com>
22297         * lra.c (finish_insn_code_data_once): Set the array elements
22298         to NULL after freeing them.
22300 2020-03-30  Andreas Schwab  <schwab@suse.de>
22302         * config/host-linux.c (TRY_EMPTY_VM_SPACE) [__riscv && __LP64__]:
22303         Define.
22305 2020-03-30  Will Schmidt  <will_schmidt@vnet.ibm.com>
22307         * config/rs6000/rs6000-call.c altivec_init_builtins(): Remove code
22308         to skip defining builtins based on builtin_mask.
22310 2020-03-30  Jakub Jelinek  <jakub@redhat.com>
22312         PR target/94343
22313         * config/i386/sse.md (<mask_codefor>one_cmpl<mode>2<mask_name>): If
22314         !TARGET_AVX512VL, use 512-bit vpternlog and make sure the input
22315         operand is a register.  Don't enable masked variants for V*[QH]Imode.
22317         PR target/93069
22318         * config/i386/sse.md (vec_extract_lo_<mode><mask_name>): Use
22319         <store_mask_constraint> instead of m in output operand constraint.
22320         (vec_extract_hi_<mode><mask_name>): Use <mask_operand2> instead of
22321         %{%3%}.
22323 2020-03-30  Alan Modra  <amodra@gmail.com>
22325         * config/rs6000/rs6000.c (rs6000_call_aix): Emit cookie to pattern.
22326         (rs6000_indirect_call_template_1): Adjust to suit.
22327         * config/rs6000/rs6000.md (call_local): Merge call_local32,
22328         call_local64, and call_local_aix.
22329         (call_value_local): Simlarly.
22330         (call_nonlocal_aix, call_value_nonlocal_aix): Adjust rtl to suit,
22331         and disable pattern when CALL_LONG.
22332         (call_indirect_aix, call_value_indirect_aix): Adjust rtl.
22333         (call_indirect_elfv2, call_indirect_pcrel): Likewise.
22334         (call_value_indirect_elfv2, call_value_indirect_pcrel): Likewise.
22336 2020-03-29  H.J. Lu  <hongjiu.lu@intel.com>
22338         PR driver/94381
22339         * doc/invoke.texi: Update -falign-functions, -falign-loops and
22340         -falign-jumps documentation.
22342 2020-03-29  Martin Liska  <mliska@suse.cz>
22344         PR ipa/94363
22345         * cgraphunit.c (process_function_and_variable_attributes): Remove
22346         double 'attribute' words.
22348 2020-03-29  John David Anglin  <dave.anglin@bell.net>
22350         * config/pa/pa.c (pa_asm_output_aligned_bss): Delete duplicate
22351         .align output.
22353 2020-03-28  Jakub Jelinek  <jakub@redhat.com>
22355         PR c/93573
22356         * c-decl.c (grokdeclarator): After issuing errors, set size_int_const
22357         to true after setting size to integer_one_node.
22359         PR tree-optimization/94329
22360         * tree-ssa-reassoc.c (reassociate_bb): When calling reassoc_remove_stmt
22361         on the last stmt in a bb, make sure gsi_prev isn't done immediately
22362         after gsi_last_bb.
22364 2020-03-27  Alan Modra  <amodra@gmail.com>
22366         PR target/94145
22367         * config/rs6000/rs6000.c (rs6000_longcall_ref): Use unspec_volatile
22368         for PLT16_LO and PLT_PCREL.
22369         * config/rs6000/rs6000.md (UNSPEC_PLT16_LO, UNSPEC_PLT_PCREL): Remove.
22370         (UNSPECV_PLT16_LO, UNSPECV_PLT_PCREL): Define.
22371         (pltseq_plt16_lo_, pltseq_plt_pcrel): Use unspec_volatile.
22373 2020-03-27  Martin Sebor  <msebor@redhat.com>
22375         PR c++/94098
22376         * calls.c (init_attr_rdwr_indices): Iterate over all access attributes.
22378 2020-03-27  Andrew Stubbs  <ams@codesourcery.com>
22380         * config/gcn/gcn-valu.md:
22381         (VEC_SUBDWORD_MODE): Rename to V_QIHI throughout.
22382         (VEC_1REG_MODE): Delete.
22383         (VEC_1REG_ALT): Delete.
22384         (VEC_ALL1REG_MODE): Rename to V_1REG throughout.
22385         (VEC_1REG_INT_MODE): Delete.
22386         (VEC_ALL1REG_INT_MODE): Rename to V_INT_1REG throughout.
22387         (VEC_ALL1REG_INT_ALT): Rename to V_INT_1REG_ALT throughout.
22388         (VEC_2REG_MODE): Rename to V_2REG throughout.
22389         (VEC_REG_MODE): Rename to V_noHI throughout.
22390         (VEC_ALLREG_MODE): Rename to V_ALL throughout.
22391         (VEC_ALLREG_ALT):  Rename to V_ALL_ALT throughout.
22392         (VEC_ALLREG_INT_MODE): Rename to V_INT throughout.
22393         (VEC_INT_MODE): Delete.
22394         (VEC_FP_MODE): Rename to V_FP throughout and move to top.
22395         (VEC_FP_1REG_MODE): Rename to V_FP_1REG throughout and move to top.
22396         (FP_MODE): Delete and replace with FP throughout.
22397         (FP_1REG_MODE): Delete and replace with FP_1REG throughout.
22398         (VCMP_MODE): Rename to V_noQI throughout and move to top.
22399         (VCMP_MODE_INT): Rename to V_INT_noQI throughout and move to top.
22400         * config/gcn/gcn.md (FP): New mode iterator.
22401         (FP_1REG): New mode iterator.
22403 2020-03-27  David Malcolm  <dmalcolm@redhat.com>
22405         * doc/invoke.texi (-fdump-analyzer-supergraph): Document that this
22406         now emits two .dot files.
22407         * graphviz.cc (graphviz_out::begin_tr): Only emit a TR, not a TD.
22408         (graphviz_out::end_tr): Only close a TR, not a TD.
22409         (graphviz_out::begin_td): New.
22410         (graphviz_out::end_td): New.
22411         (graphviz_out::begin_trtd): New, replacing the old implementation
22412         of graphviz_out::begin_tr.
22413         (graphviz_out::end_tdtr): New, replacing the old implementation
22414         of graphviz_out::end_tr.
22415         * graphviz.h (graphviz_out::begin_td): New decl.
22416         (graphviz_out::end_td): New decl.
22417         (graphviz_out::begin_trtd): New decl.
22418         (graphviz_out::end_tdtr): New decl.
22420 2020-03-27  Richard Biener  <rguenther@suse.de>
22422         PR debug/94273
22423         * dwarf2out.c (should_emit_struct_debug): Return false for
22424         DINFO_LEVEL_TERSE.
22426 2020-03-27  Richard Biener  <rguenther@suse.de>
22428         PR tree-optimization/94352
22429         * tree-ssa-propagate.c (ssa_prop_init): Move seeding of the
22430         worklist ...
22431         (ssa_propagation_engine::ssa_propagate): ... here after
22432         initializing curr_order.
22434 2020-03-27  Kewen Lin  <linkw@gcc.gnu.org>
22436         PR tree-optimization/90332
22437         * tree-vect-stmts.c (vector_vector_composition_type): New function.
22438         (get_group_load_store_type): Adjust to call
22439         vector_vector_composition_type, extend it to construct with scalar
22440         types.
22441         (vectorizable_load): Likewise.
22443 2020-03-27  Roman Zhuykov  <zhroma@ispras.ru>
22445         * ddg.c (create_ddg_dep_from_intra_loop_link): Remove assertions.
22446         (create_ddg_dep_no_link): Likewise.
22447         (add_cross_iteration_register_deps): Move debug instruction check.
22448         Other minor refactoring.
22449         (add_intra_loop_mem_dep): Do not check for debug instructions.
22450         (add_inter_loop_mem_dep): Likewise.
22451         (build_intra_loop_deps): Likewise.
22452         (create_ddg): Do not include debug insns into the graph.
22453         * ddg.h (struct ddg): Remove num_debug field.
22454         * modulo-sched.c (doloop_register_get): Adjust condition.
22455         (res_MII): Remove DDG num_debug field usage.
22456         (sms_schedule_by_order): Use assertion against debug insns.
22457         (ps_has_conflicts): Drop debug insn check.
22459 2020-03-26  Jakub Jelinek  <jakub@redhat.com>
22461         PR debug/94323
22462         * tree.c (protected_set_expr_location): Recurse on STATEMENT_LIST
22463         that contains exactly one non-DEBUG_BEGIN_STMT statement.
22465         PR debug/94281
22466         * gimple.h (gimple_seq_first_nondebug_stmt): New function.
22467         (gimple_seq_last_nondebug_stmt): Don't return NULL if seq contains
22468         a single non-debug stmt followed by one or more debug stmts.
22469         * gimplify.c (gimplify_body): Use gimple_seq_first_nondebug_stmt
22470         instead of gimple_seq_first_stmt, use gimple_seq_first_nondebug_stmt
22471         and gimple_seq_last_nondebug_stmt instead of gimple_seq_first and
22472         gimple_seq_last to check if outer_stmt gbind could be reused and
22473         if yes and it is surrounded by any debug stmts, move them into the
22474         gbind body.
22476         PR rtl-optimization/92264
22477         * var-tracking.c (add_stores): Call cselib_set_value_sp_based even
22478         for sp based values in !frame_pointer_needed
22479         && !ACCUMULATE_OUTGOING_ARGS functions.
22481 2020-03-26  Felix Yang  <felix.yang@huawei.com>
22483         PR tree-optimization/94269
22484         * tree-ssa-math-opts.c (convert_plusminus_to_widen): Restrict
22485         this
22486         operation to single basic block.
22488 2020-03-25  Jeff Law  <law@redhat.com>
22490         PR rtl-optimization/90275
22491         * config/sh/sh.md (mov_neg_si_t): Clobber the T register in the
22492         pattern.
22494 2020-03-25  Jakub Jelinek  <jakub@redhat.com>
22496         PR target/94292
22497         * config/arm/arm.c (arm_gen_dicompare_reg): Set mode of COMPARE to
22498         mode rather than VOIDmode.
22500 2020-03-25  Martin Sebor  <msebor@redhat.com>
22502         PR middle-end/94004
22503         * gimple-ssa-warn-alloca.c (pass_walloca::execute): Issue warnings
22504         even for alloca calls resulting from system macro expansion.
22505         Include inlining context in all warnings.
22507 2020-03-25  Richard Sandiford  <richard.sandiford@arm.com>
22509         PR target/94254
22510         * config/rs6000/rs6000.c (rs6000_can_change_mode_class): Allow
22511         FPRs to change between SDmode and DDmode.
22513 2020-03-25  Martin Sebor  <msebor@redhat.com>
22515         PR tree-optimization/94131
22516         * gimple-fold.c (get_range_strlen_tree): Fail for variable-length
22517         types and decls.
22518         * tree-ssa-strlen.c (get_range_strlen_dynamic): Avoid assuming
22519         types have constant sizes.
22521 2020-03-25  Martin Liska  <mliska@suse.cz>
22523         PR lto/94259
22524         * configure.ac: Report error only when --with-zstd
22525         is used.
22526         * configure: Regenerate.
22528 2020-03-25  Jakub Jelinek  <jakub@redhat.com>
22530         PR target/94308
22531         * config/i386/i386-features.c (ix86_add_reg_usage_to_vzeroupper): Set
22532         INSN_CODE (insn) to -1 when changing the pattern.
22534 2020-03-25  Martin Liska  <mliska@suse.cz>
22536         PR target/93274
22537         PR ipa/94271
22538         * config/i386/i386-features.c (make_resolver_func): Drop
22539         public flag for resolver.
22540         * config/rs6000/rs6000.c (make_resolver_func): Add comdat
22541         group for resolver and drop public flag if possible.
22542         * multiple_target.c (create_dispatcher_calls): Drop unique_name
22543         and resolution as we want to enable LTO privatization of the default
22544         symbol.
22546 2020-03-25  Martin Liska  <mliska@suse.cz>
22548         PR lto/94259
22549         * configure.ac: Respect --without-zstd and report
22550         error when we can't find header file with --with-zstd.
22551         * configure: Regenerate.
22553 2020-03-25  Jakub Jelinek  <jakub@redhat.com>
22555         PR middle-end/94303
22556         * varasm.c (output_constructor_array_range): If local->index
22557         RANGE_EXPR doesn't start at the current location in the constructor,
22558         skip needed number of bytes using assemble_zeros or assert we don't
22559         go backwards.
22561         PR c++/94223
22562         * langhooks.c (lhd_set_decl_assembler_name): Use a static ulong
22563         counter instead of DECL_UID.
22565         PR tree-optimization/94300
22566         * tree-ssa-sccvn.c (vn_walk_cb_data::push_partial_def): If pd.offset
22567         is positive, make sure that off + size isn't larger than needed_len.
22569 2020-03-25  Richard Biener  <rguenther@suse.de>
22570             Jakub Jelinek  <jakub@redhat.com>
22572         PR debug/94283
22573         * tree-if-conv.c (ifcvt_local_dce): Delete dead statements backwards.
22575 2020-03-24  Christophe Lyon  <christophe.lyon@linaro.org>
22577         * doc/sourcebuild.texi (ARM-specific attributes): Add
22578         arm_fp_dp_ok.
22579         (Features for dg-add-options): Add arm_fp_dp.
22581 2020-03-24  John David Anglin  <danglin@gcc.gnu.org>
22583         PR lto/94249
22584         * config/pa/pa.h (TARGET_CPU_CPP_BUILTINS): Define __BIG_ENDIAN__.
22586 2020-03-24  Tobias Burnus  <tobias@codesourcery.com>
22588         PR libgomp/81689
22589         * omp-offload.c (omp_finish_file): Fix target-link handling if
22590         targetm_common.have_named_sections is false.
22592 2020-03-24  Jakub Jelinek  <jakub@redhat.com>
22594         PR target/94286
22595         * config/arm/arm.md (subvdi4, usubvsi4, usubvdi4): Use gen_int_mode
22596         instead of GEN_INT.
22598         PR debug/94285
22599         * tree-ssa-loop-manip.c (create_iv): If after, set stmt location to
22600         e->goto_locus even if gsi_bb (*incr_pos) contains only debug stmts.
22601         If not after and at *incr_pos is a debug stmt, set stmt location to
22602         location of next non-debug stmt after it if any.
22604         PR debug/94283
22605         * tree-if-conv.c (ifcvt_local_dce): For gimple debug stmts, just set
22606         GF_PLF_2, but don't add them to worklist.  Don't add an assigment to
22607         worklist or set GF_PLF_2 just because it is used in a debug stmt in
22608         another bb.  Formatting improvements.
22610         PR debug/94277
22611         * cgraphunit.c (check_global_declaration): For DECL_EXTERNAL and
22612         non-TREE_PUBLIC non-DECL_ARTIFICIAL FUNCTION_DECLs, set TREE_PUBLIC
22613         regardless of whether TREE_NO_WARNING is set on it or whether
22614         warn_unused_function is true or not.
22616 2020-03-23  Jeff Law  <law@redhat.com>
22618         PR rtl-optimization/90275
22619         PR target/94238
22620         PR target/94144
22621         * simplify-rtx.c (comparison_code_valid_for_mode): New function.
22622         (simplify_logical_relational_operation): Use it.
22624 2020-03-23  Jakub Jelinek  <jakub@redhat.com>
22626         PR c++/91993
22627         * tree.c (get_narrower): Handle COMPOUND_EXPR by recursing on
22628         ultimate rhs and if returned something different, reconstructing
22629         the COMPOUND_EXPRs.
22631 2020-03-23  Lewis Hyatt  <lhyatt@gmail.com>
22633         * opts.c (print_filtered_help): Improve the help text for alias options.
22635 2020-03-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
22636             Andre Vieira  <andre.simoesdiasvieira@arm.com>
22637             Mihail Ionescu  <mihail.ionescu@arm.com>
22639         * config/arm/arm_mve.h (vshlcq_m_s8): Define macro.
22640         (vshlcq_m_u8): Likewise.
22641         (vshlcq_m_s16): Likewise.
22642         (vshlcq_m_u16): Likewise.
22643         (vshlcq_m_s32): Likewise.
22644         (vshlcq_m_u32): Likewise.
22645         (__arm_vshlcq_m_s8): Define intrinsic.
22646         (__arm_vshlcq_m_u8): Likewise.
22647         (__arm_vshlcq_m_s16): Likewise.
22648         (__arm_vshlcq_m_u16): Likewise.
22649         (__arm_vshlcq_m_s32): Likewise.
22650         (__arm_vshlcq_m_u32): Likewise.
22651         (vshlcq_m): Define polymorphic variant.
22652         * config/arm/arm_mve_builtins.def (QUADOP_NONE_NONE_UNONE_IMM_UNONE):
22653         Use builtin qualifier.
22654         (QUADOP_UNONE_UNONE_UNONE_IMM_UNONE): Likewise.
22655         * config/arm/mve.md (mve_vshlcq_m_vec_<supf><mode>): Define RTL pattern.
22656         (mve_vshlcq_m_carry_<supf><mode>): Likewise.
22657         (mve_vshlcq_m_<supf><mode>): Likewise.
22659 2020-03-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
22661         * config/arm/arm-builtins.c (LSLL_QUALIFIERS): Define builtin qualifier.
22662         (UQSHL_QUALIFIERS): Likewise.
22663         (ASRL_QUALIFIERS): Likewise.
22664         (SQSHL_QUALIFIERS): Likewise.
22665         * config/arm/arm_mve.h (__ARM_BIG_ENDIAN): Check to not support MVE in
22666         Big-Endian Mode.
22667         (sqrshr): Define macro.
22668         (sqrshrl): Likewise.
22669         (sqrshrl_sat48): Likewise.
22670         (sqshl): Likewise.
22671         (sqshll): Likewise.
22672         (srshr): Likewise.
22673         (srshrl): Likewise.
22674         (uqrshl): Likewise.
22675         (uqrshll): Likewise.
22676         (uqrshll_sat48): Likewise.
22677         (uqshl): Likewise.
22678         (uqshll): Likewise.
22679         (urshr): Likewise.
22680         (urshrl): Likewise.
22681         (lsll): Likewise.
22682         (asrl): Likewise.
22683         (__arm_lsll): Define intrinsic.
22684         (__arm_asrl): Likewise.
22685         (__arm_uqrshll): Likewise.
22686         (__arm_uqrshll_sat48): Likewise.
22687         (__arm_sqrshrl): Likewise.
22688         (__arm_sqrshrl_sat48): Likewise.
22689         (__arm_uqshll): Likewise.
22690         (__arm_urshrl): Likewise.
22691         (__arm_srshrl): Likewise.
22692         (__arm_sqshll): Likewise.
22693         (__arm_uqrshl): Likewise.
22694         (__arm_sqrshr): Likewise.
22695         (__arm_uqshl): Likewise.
22696         (__arm_urshr): Likewise.
22697         (__arm_sqshl): Likewise.
22698         (__arm_srshr): Likewise.
22699         * config/arm/arm_mve_builtins.def (LSLL_QUALIFIERS): Use builtin
22700         qualifier.
22701         (UQSHL_QUALIFIERS): Likewise.
22702         (ASRL_QUALIFIERS): Likewise.
22703         (SQSHL_QUALIFIERS): Likewise.
22704         * config/arm/mve.md (mve_uqrshll_sat<supf>_di): Define RTL pattern.
22705         (mve_sqrshrl_sat<supf>_di): Likewise.
22706         (mve_uqrshl_si): Likewise.
22707         (mve_sqrshr_si): Likewise.
22708         (mve_uqshll_di): Likewise.
22709         (mve_urshrl_di): Likewise.
22710         (mve_uqshl_si): Likewise.
22711         (mve_urshr_si): Likewise.
22712         (mve_sqshl_si): Likewise.
22713         (mve_srshr_si): Likewise.
22714         (mve_srshrl_di): Likewise.
22715         (mve_sqshll_di): Likewise.
22717 2020-03-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
22718             Andre Vieira  <andre.simoesdiasvieira@arm.com>
22719             Mihail Ionescu  <mihail.ionescu@arm.com>
22721         * config/arm/arm_mve.h (vsetq_lane_f16): Define macro.
22722         (vsetq_lane_f32): Likewise.
22723         (vsetq_lane_s16): Likewise.
22724         (vsetq_lane_s32): Likewise.
22725         (vsetq_lane_s8): Likewise.
22726         (vsetq_lane_s64): Likewise.
22727         (vsetq_lane_u8): Likewise.
22728         (vsetq_lane_u16): Likewise.
22729         (vsetq_lane_u32): Likewise.
22730         (vsetq_lane_u64): Likewise.
22731         (vgetq_lane_f16): Likewise.
22732         (vgetq_lane_f32): Likewise.
22733         (vgetq_lane_s16): Likewise.
22734         (vgetq_lane_s32): Likewise.
22735         (vgetq_lane_s8): Likewise.
22736         (vgetq_lane_s64): Likewise.
22737         (vgetq_lane_u8): Likewise.
22738         (vgetq_lane_u16): Likewise.
22739         (vgetq_lane_u32): Likewise.
22740         (vgetq_lane_u64): Likewise.
22741         (__ARM_NUM_LANES): Likewise.
22742         (__ARM_LANEQ): Likewise.
22743         (__ARM_CHECK_LANEQ): Likewise.
22744         (__arm_vsetq_lane_s16): Define intrinsic.
22745         (__arm_vsetq_lane_s32): Likewise.
22746         (__arm_vsetq_lane_s8): Likewise.
22747         (__arm_vsetq_lane_s64): Likewise.
22748         (__arm_vsetq_lane_u8): Likewise.
22749         (__arm_vsetq_lane_u16): Likewise.
22750         (__arm_vsetq_lane_u32): Likewise.
22751         (__arm_vsetq_lane_u64): Likewise.
22752         (__arm_vgetq_lane_s16): Likewise.
22753         (__arm_vgetq_lane_s32): Likewise.
22754         (__arm_vgetq_lane_s8): Likewise.
22755         (__arm_vgetq_lane_s64): Likewise.
22756         (__arm_vgetq_lane_u8): Likewise.
22757         (__arm_vgetq_lane_u16): Likewise.
22758         (__arm_vgetq_lane_u32): Likewise.
22759         (__arm_vgetq_lane_u64): Likewise.
22760         (__arm_vsetq_lane_f16): Likewise.
22761         (__arm_vsetq_lane_f32): Likewise.
22762         (__arm_vgetq_lane_f16): Likewise.
22763         (__arm_vgetq_lane_f32): Likewise.
22764         (vgetq_lane): Define polymorphic variant.
22765         (vsetq_lane): Likewise.
22766         * config/arm/mve.md (mve_vec_extract<mode><V_elem_l>): Define RTL
22767         pattern.
22768         (mve_vec_extractv2didi): Likewise.
22769         (mve_vec_extract_sext_internal<mode>): Likewise.
22770         (mve_vec_extract_zext_internal<mode>): Likewise.
22771         (mve_vec_set<mode>_internal): Likewise.
22772         (mve_vec_setv2di_internal): Likewise.
22773         * config/arm/neon.md (vec_set<mode>): Move RTL pattern to vec-common.md
22774         file.
22775         (vec_extract<mode><V_elem_l>): Rename to
22776         "neon_vec_extract<mode><V_elem_l>".
22777         (vec_extractv2didi): Rename to "neon_vec_extractv2didi".
22778         * config/arm/vec-common.md (vec_extract<mode><V_elem_l>): Define RTL
22779         pattern common for MVE and NEON.
22780         (vec_set<mode>): Move RTL pattern from neon.md and modify to accept both
22781         MVE and NEON.
22783 2020-03-23  Andre Vieira  <andre.simoesdiasvieira@arm.com>
22785         * config/arm/mve.md (earlyclobber_32): New mode attribute.
22786         (mve_vrev64q_*, mve_vcaddq*, mve_vhcaddq_*, mve_vcmulq_*,
22787          mve_vmull[bt]q_*, mve_vqdmull[bt]q_*): Add appropriate early clobbers.
22789 2020-03-23  Richard Biener  <rguenther@suse.de>
22791         PR tree-optimization/94261
22792         * tree-vect-slp.c (vect_get_and_check_slp_defs): Remove
22793         IL operand swapping code.
22794         (vect_slp_rearrange_stmts): Do not arrange isomorphic
22795         nodes that would need operation code adjustments.
22797 2020-03-23  Tobias Burnus  <tobias@codesourcery.com>
22799         * doc/install.texi (amdgcn-*-amdhsa): Renamed
22800         from amdgcn-unknown-amdhsa; change
22801         amdgcn-unknown-amdhsa to amdgcn-amdhsa.
22803 2020-03-23  Richard Biener  <rguenther@suse.de>
22805         PR ipa/94245
22806         * ipa-prop.c (ipa_read_jump_function): Build the ADDR_EXRP
22807         directly rather than also folding it via build_fold_addr_expr.
22809 2020-03-23  Richard Biener  <rguenther@suse.de>
22811         PR tree-optimization/94266
22812         * tree-ssa-forwprop.c (pass_forwprop::execute): Do not propagate
22813         addresses of TARGET_MEM_REFs.
22815 2020-03-23  Martin Liska  <mliska@suse.cz>
22817         PR ipa/94250
22818         * symtab.c (symtab_node::clone_references): Save speculative_id
22819         as ref may be overwritten by create_reference.
22820         (symtab_node::clone_referring): Likewise.
22821         (symtab_node::clone_reference): Likewise.
22823 2020-03-22  Iain Sandoe  <iain@sandoe.co.uk>
22825         * config/i386/darwin.h (JUMP_TABLES_IN_TEXT_SECTION): Remove
22826         references to Darwin.
22827         * config/i386/i386.h (JUMP_TABLES_IN_TEXT_SECTION): Define this
22828         unconditionally and comment on why.
22830 2020-03-21 Iain Sandoe <iain@sandoe.co.uk>
22832         * config/darwin.c (darwin_mergeable_constant_section): Collect
22833         section anchor checks into the caller.
22834         (machopic_select_section): Collect section anchor checks into
22835         the determination of 'effective zero-size' objects. When the
22836         size is unknown, assume it is non-zero, and thus return the
22837         'generic' section for the DECL.
22839 2020-03-21 Iain Sandoe <iain@sandoe.co.uk>
22841         PR target/93694
22842         * config/darwin.opt: Amend options descriptions.
22844 2020-03-21  Richard Sandiford  <richard.sandiford@arm.com>
22846         PR rtl-optimization/94052
22847         * lra-constraints.c (simplify_operand_subreg): Reload the inner
22848         register of a paradoxical subreg if simplify_subreg_regno fails
22849         to give a valid hard register for the outer mode.
22851 2020-03-20  Martin Jambor  <mjambor@suse.cz>
22853         PR tree-optimization/93435
22854         * params.opt (sra-max-propagations): New parameter.
22855         * tree-sra.c (propagation_budget): New variable.
22856         (budget_for_propagation_access): New function.
22857         (propagate_subaccesses_from_rhs): Use it.
22858         (propagate_subaccesses_from_lhs): Likewise.
22859         (propagate_all_subaccesses): Set up and destroy propagation_budget.
22861 2020-03-20  Carl Love  <cel@us.ibm.com>
22863         PR/target 87583
22864         * config/rs6000/rs6000.c (rs6000_option_override_internal):
22865         Add check for TARGET_FPRND for Power 7 or newer.
22867 2020-03-20  Jan Hubicka  <hubicka@ucw.cz>
22869         PR ipa/93347
22870         * cgraph.c (symbol_table::create_edge): Update calls_comdat_local flag.
22871         (cgraph_edge::redirect_callee): Move here; likewise.
22872         (cgraph_node::remove_callees): Update calls_comdat_local flag.
22873         (cgraph_node::verify_node): Verify that calls_comdat_local flag match
22874         reality.
22875         (cgraph_node::check_calls_comdat_local_p): New member function.
22876         * cgraph.h (cgraph_node::check_calls_comdat_local_p): Declare.
22877         (cgraph_edge::redirect_callee): Move offline.
22878         * ipa-fnsummary.c (compute_fn_summary): Do not compute
22879         calls_comdat_local flag here.
22880         * ipa-inline-transform.c (inline_call): Fix updating of
22881         calls_comdat_local flag.
22882         * ipa-split.c (split_function): Use true instead of 1 to set the flag.
22883         * symtab.c (symtab_node::add_to_same_comdat_group): Update
22884         calls_comdat_local flag.
22886 2020-03-20  Richard Biener  <rguenther@suse.de>
22888         * tree-vect-slp.c (vect_analyze_slp_instance): Dump SLP tree
22889         from the possibly modified root.
22891 2020-03-20  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
22892             Andre Vieira  <andre.simoesdiasvieira@arm.com>
22893             Mihail Ionescu  <mihail.ionescu@arm.com>
22895         * config/arm/arm_mve.h (vst1q_p_u8): Define macro.
22896         (vst1q_p_s8): Likewise.
22897         (vst2q_s8): Likewise.
22898         (vst2q_u8): Likewise.
22899         (vld1q_z_u8): Likewise.
22900         (vld1q_z_s8): Likewise.
22901         (vld2q_s8): Likewise.
22902         (vld2q_u8): Likewise.
22903         (vld4q_s8): Likewise.
22904         (vld4q_u8): Likewise.
22905         (vst1q_p_u16): Likewise.
22906         (vst1q_p_s16): Likewise.
22907         (vst2q_s16): Likewise.
22908         (vst2q_u16): Likewise.
22909         (vld1q_z_u16): Likewise.
22910         (vld1q_z_s16): Likewise.
22911         (vld2q_s16): Likewise.
22912         (vld2q_u16): Likewise.
22913         (vld4q_s16): Likewise.
22914         (vld4q_u16): Likewise.
22915         (vst1q_p_u32): Likewise.
22916         (vst1q_p_s32): Likewise.
22917         (vst2q_s32): Likewise.
22918         (vst2q_u32): Likewise.
22919         (vld1q_z_u32): Likewise.
22920         (vld1q_z_s32): Likewise.
22921         (vld2q_s32): Likewise.
22922         (vld2q_u32): Likewise.
22923         (vld4q_s32): Likewise.
22924         (vld4q_u32): Likewise.
22925         (vld4q_f16): Likewise.
22926         (vld2q_f16): Likewise.
22927         (vld1q_z_f16): Likewise.
22928         (vst2q_f16): Likewise.
22929         (vst1q_p_f16): Likewise.
22930         (vld4q_f32): Likewise.
22931         (vld2q_f32): Likewise.
22932         (vld1q_z_f32): Likewise.
22933         (vst2q_f32): Likewise.
22934         (vst1q_p_f32): Likewise.
22935         (__arm_vst1q_p_u8): Define intrinsic.
22936         (__arm_vst1q_p_s8): Likewise.
22937         (__arm_vst2q_s8): Likewise.
22938         (__arm_vst2q_u8): Likewise.
22939         (__arm_vld1q_z_u8): Likewise.
22940         (__arm_vld1q_z_s8): Likewise.
22941         (__arm_vld2q_s8): Likewise.
22942         (__arm_vld2q_u8): Likewise.
22943         (__arm_vld4q_s8): Likewise.
22944         (__arm_vld4q_u8): Likewise.
22945         (__arm_vst1q_p_u16): Likewise.
22946         (__arm_vst1q_p_s16): Likewise.
22947         (__arm_vst2q_s16): Likewise.
22948         (__arm_vst2q_u16): Likewise.
22949         (__arm_vld1q_z_u16): Likewise.
22950         (__arm_vld1q_z_s16): Likewise.
22951         (__arm_vld2q_s16): Likewise.
22952         (__arm_vld2q_u16): Likewise.
22953         (__arm_vld4q_s16): Likewise.
22954         (__arm_vld4q_u16): Likewise.
22955         (__arm_vst1q_p_u32): Likewise.
22956         (__arm_vst1q_p_s32): Likewise.
22957         (__arm_vst2q_s32): Likewise.
22958         (__arm_vst2q_u32): Likewise.
22959         (__arm_vld1q_z_u32): Likewise.
22960         (__arm_vld1q_z_s32): Likewise.
22961         (__arm_vld2q_s32): Likewise.
22962         (__arm_vld2q_u32): Likewise.
22963         (__arm_vld4q_s32): Likewise.
22964         (__arm_vld4q_u32): Likewise.
22965         (__arm_vld4q_f16): Likewise.
22966         (__arm_vld2q_f16): Likewise.
22967         (__arm_vld1q_z_f16): Likewise.
22968         (__arm_vst2q_f16): Likewise.
22969         (__arm_vst1q_p_f16): Likewise.
22970         (__arm_vld4q_f32): Likewise.
22971         (__arm_vld2q_f32): Likewise.
22972         (__arm_vld1q_z_f32): Likewise.
22973         (__arm_vst2q_f32): Likewise.
22974         (__arm_vst1q_p_f32): Likewise.
22975         (vld1q_z): Define polymorphic variant.
22976         (vld2q): Likewise.
22977         (vld4q): Likewise.
22978         (vst1q_p): Likewise.
22979         (vst2q): Likewise.
22980         * config/arm/arm_mve_builtins.def (STORE1): Use builtin qualifier.
22981         (LOAD1): Likewise.
22982         * config/arm/mve.md (mve_vst2q<mode>): Define RTL pattern.
22983         (mve_vld2q<mode>): Likewise.
22984         (mve_vld4q<mode>): Likewise.
22986 2020-03-20  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
22987             Andre Vieira  <andre.simoesdiasvieira@arm.com>
22988             Mihail Ionescu  <mihail.ionescu@arm.com>
22990         * config/arm/arm-builtins.c (ARM_BUILTIN_GET_FPSCR_NZCVQC): Define.
22991         (ARM_BUILTIN_SET_FPSCR_NZCVQC): Likewise.       
22992         (arm_init_mve_builtins): Add "__builtin_arm_get_fpscr_nzcvqc" and
22993         "__builtin_arm_set_fpscr_nzcvqc" to arm_builtin_decls array. 
22994         (arm_expand_builtin): Define case ARM_BUILTIN_GET_FPSCR_NZCVQC
22995         and ARM_BUILTIN_SET_FPSCR_NZCVQC.
22996         * config/arm/arm_mve.h (vadciq_s32): Define macro.
22997         (vadciq_u32): Likewise.
22998         (vadciq_m_s32): Likewise.
22999         (vadciq_m_u32): Likewise.
23000         (vadcq_s32): Likewise.
23001         (vadcq_u32): Likewise.
23002         (vadcq_m_s32): Likewise.
23003         (vadcq_m_u32): Likewise.
23004         (vsbciq_s32): Likewise.
23005         (vsbciq_u32): Likewise.
23006         (vsbciq_m_s32): Likewise.
23007         (vsbciq_m_u32): Likewise.
23008         (vsbcq_s32): Likewise.
23009         (vsbcq_u32): Likewise.
23010         (vsbcq_m_s32): Likewise.
23011         (vsbcq_m_u32): Likewise.
23012         (__arm_vadciq_s32): Define intrinsic.
23013         (__arm_vadciq_u32): Likewise.
23014         (__arm_vadciq_m_s32): Likewise.
23015         (__arm_vadciq_m_u32): Likewise.
23016         (__arm_vadcq_s32): Likewise.
23017         (__arm_vadcq_u32): Likewise.
23018         (__arm_vadcq_m_s32): Likewise.
23019         (__arm_vadcq_m_u32): Likewise.
23020         (__arm_vsbciq_s32): Likewise.
23021         (__arm_vsbciq_u32): Likewise.
23022         (__arm_vsbciq_m_s32): Likewise.
23023         (__arm_vsbciq_m_u32): Likewise.
23024         (__arm_vsbcq_s32): Likewise.
23025         (__arm_vsbcq_u32): Likewise.
23026         (__arm_vsbcq_m_s32): Likewise.
23027         (__arm_vsbcq_m_u32): Likewise.
23028         (vadciq_m): Define polymorphic variant.
23029         (vadciq): Likewise.
23030         (vadcq_m): Likewise.
23031         (vadcq): Likewise.
23032         (vsbciq_m): Likewise.
23033         (vsbciq): Likewise.
23034         (vsbcq_m): Likewise.
23035         (vsbcq): Likewise.
23036         * config/arm/arm_mve_builtins.def (BINOP_NONE_NONE_NONE): Use builtin
23037         qualifier.
23038         (BINOP_UNONE_UNONE_UNONE): Likewise.
23039         (QUADOP_NONE_NONE_NONE_NONE_UNONE): Likewise.
23040         (QUADOP_UNONE_UNONE_UNONE_UNONE_UNONE): Likewise.
23041         * config/arm/mve.md (VADCIQ): Define iterator.
23042         (VADCIQ_M): Likewise.
23043         (VSBCQ): Likewise.
23044         (VSBCQ_M): Likewise.
23045         (VSBCIQ): Likewise.
23046         (VSBCIQ_M): Likewise.
23047         (VADCQ): Likewise.
23048         (VADCQ_M): Likewise.
23049         (mve_vadciq_m_<supf>v4si): Define RTL pattern.
23050         (mve_vadciq_<supf>v4si): Likewise.
23051         (mve_vadcq_m_<supf>v4si): Likewise.
23052         (mve_vadcq_<supf>v4si): Likewise.
23053         (mve_vsbciq_m_<supf>v4si): Likewise.
23054         (mve_vsbciq_<supf>v4si): Likewise.
23055         (mve_vsbcq_m_<supf>v4si): Likewise.
23056         (mve_vsbcq_<supf>v4si): Likewise.
23057         (get_fpscr_nzcvqc): Define isns.
23058         (set_fpscr_nzcvqc): Define isns.
23059         * config/arm/unspecs.md (UNSPEC_GET_FPSCR_NZCVQC): Define.
23060         (UNSPEC_SET_FPSCR_NZCVQC): Define.
23062 2020-03-20  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
23064         * config/arm/arm_mve.h (vddupq_x_n_u8): Define macro.
23065         (vddupq_x_n_u16): Likewise.
23066         (vddupq_x_n_u32): Likewise.
23067         (vddupq_x_wb_u8): Likewise.
23068         (vddupq_x_wb_u16): Likewise.
23069         (vddupq_x_wb_u32): Likewise.
23070         (vdwdupq_x_n_u8): Likewise.
23071         (vdwdupq_x_n_u16): Likewise.
23072         (vdwdupq_x_n_u32): Likewise.
23073         (vdwdupq_x_wb_u8): Likewise.
23074         (vdwdupq_x_wb_u16): Likewise.
23075         (vdwdupq_x_wb_u32): Likewise.
23076         (vidupq_x_n_u8): Likewise.
23077         (vidupq_x_n_u16): Likewise.
23078         (vidupq_x_n_u32): Likewise.
23079         (vidupq_x_wb_u8): Likewise.
23080         (vidupq_x_wb_u16): Likewise.
23081         (vidupq_x_wb_u32): Likewise.
23082         (viwdupq_x_n_u8): Likewise.
23083         (viwdupq_x_n_u16): Likewise.
23084         (viwdupq_x_n_u32): Likewise.
23085         (viwdupq_x_wb_u8): Likewise.
23086         (viwdupq_x_wb_u16): Likewise.
23087         (viwdupq_x_wb_u32): Likewise.
23088         (vdupq_x_n_s8): Likewise.
23089         (vdupq_x_n_s16): Likewise.
23090         (vdupq_x_n_s32): Likewise.
23091         (vdupq_x_n_u8): Likewise.
23092         (vdupq_x_n_u16): Likewise.
23093         (vdupq_x_n_u32): Likewise.
23094         (vminq_x_s8): Likewise.
23095         (vminq_x_s16): Likewise.
23096         (vminq_x_s32): Likewise.
23097         (vminq_x_u8): Likewise.
23098         (vminq_x_u16): Likewise.
23099         (vminq_x_u32): Likewise.
23100         (vmaxq_x_s8): Likewise.
23101         (vmaxq_x_s16): Likewise.
23102         (vmaxq_x_s32): Likewise.
23103         (vmaxq_x_u8): Likewise.
23104         (vmaxq_x_u16): Likewise.
23105         (vmaxq_x_u32): Likewise.
23106         (vabdq_x_s8): Likewise.
23107         (vabdq_x_s16): Likewise.
23108         (vabdq_x_s32): Likewise.
23109         (vabdq_x_u8): Likewise.
23110         (vabdq_x_u16): Likewise.
23111         (vabdq_x_u32): Likewise.
23112         (vabsq_x_s8): Likewise.
23113         (vabsq_x_s16): Likewise.
23114         (vabsq_x_s32): Likewise.
23115         (vaddq_x_s8): Likewise.
23116         (vaddq_x_s16): Likewise.
23117         (vaddq_x_s32): Likewise.
23118         (vaddq_x_n_s8): Likewise.
23119         (vaddq_x_n_s16): Likewise.
23120         (vaddq_x_n_s32): Likewise.
23121         (vaddq_x_u8): Likewise.
23122         (vaddq_x_u16): Likewise.
23123         (vaddq_x_u32): Likewise.
23124         (vaddq_x_n_u8): Likewise.
23125         (vaddq_x_n_u16): Likewise.
23126         (vaddq_x_n_u32): Likewise.
23127         (vclsq_x_s8): Likewise.
23128         (vclsq_x_s16): Likewise.
23129         (vclsq_x_s32): Likewise.
23130         (vclzq_x_s8): Likewise.
23131         (vclzq_x_s16): Likewise.
23132         (vclzq_x_s32): Likewise.
23133         (vclzq_x_u8): Likewise.
23134         (vclzq_x_u16): Likewise.
23135         (vclzq_x_u32): Likewise.
23136         (vnegq_x_s8): Likewise.
23137         (vnegq_x_s16): Likewise.
23138         (vnegq_x_s32): Likewise.
23139         (vmulhq_x_s8): Likewise.
23140         (vmulhq_x_s16): Likewise.
23141         (vmulhq_x_s32): Likewise.
23142         (vmulhq_x_u8): Likewise.
23143         (vmulhq_x_u16): Likewise.
23144         (vmulhq_x_u32): Likewise.
23145         (vmullbq_poly_x_p8): Likewise.
23146         (vmullbq_poly_x_p16): Likewise.
23147         (vmullbq_int_x_s8): Likewise.
23148         (vmullbq_int_x_s16): Likewise.
23149         (vmullbq_int_x_s32): Likewise.
23150         (vmullbq_int_x_u8): Likewise.
23151         (vmullbq_int_x_u16): Likewise.
23152         (vmullbq_int_x_u32): Likewise.
23153         (vmulltq_poly_x_p8): Likewise.
23154         (vmulltq_poly_x_p16): Likewise.
23155         (vmulltq_int_x_s8): Likewise.
23156         (vmulltq_int_x_s16): Likewise.
23157         (vmulltq_int_x_s32): Likewise.
23158         (vmulltq_int_x_u8): Likewise.
23159         (vmulltq_int_x_u16): Likewise.
23160         (vmulltq_int_x_u32): Likewise.
23161         (vmulq_x_s8): Likewise.
23162         (vmulq_x_s16): Likewise.
23163         (vmulq_x_s32): Likewise.
23164         (vmulq_x_n_s8): Likewise.
23165         (vmulq_x_n_s16): Likewise.
23166         (vmulq_x_n_s32): Likewise.
23167         (vmulq_x_u8): Likewise.
23168         (vmulq_x_u16): Likewise.
23169         (vmulq_x_u32): Likewise.
23170         (vmulq_x_n_u8): Likewise.
23171         (vmulq_x_n_u16): Likewise.
23172         (vmulq_x_n_u32): Likewise.
23173         (vsubq_x_s8): Likewise.
23174         (vsubq_x_s16): Likewise.
23175         (vsubq_x_s32): Likewise.
23176         (vsubq_x_n_s8): Likewise.
23177         (vsubq_x_n_s16): Likewise.
23178         (vsubq_x_n_s32): Likewise.
23179         (vsubq_x_u8): Likewise.
23180         (vsubq_x_u16): Likewise.
23181         (vsubq_x_u32): Likewise.
23182         (vsubq_x_n_u8): Likewise.
23183         (vsubq_x_n_u16): Likewise.
23184         (vsubq_x_n_u32): Likewise.
23185         (vcaddq_rot90_x_s8): Likewise.
23186         (vcaddq_rot90_x_s16): Likewise.
23187         (vcaddq_rot90_x_s32): Likewise.
23188         (vcaddq_rot90_x_u8): Likewise.
23189         (vcaddq_rot90_x_u16): Likewise.
23190         (vcaddq_rot90_x_u32): Likewise.
23191         (vcaddq_rot270_x_s8): Likewise.
23192         (vcaddq_rot270_x_s16): Likewise.
23193         (vcaddq_rot270_x_s32): Likewise.
23194         (vcaddq_rot270_x_u8): Likewise.
23195         (vcaddq_rot270_x_u16): Likewise.
23196         (vcaddq_rot270_x_u32): Likewise.
23197         (vhaddq_x_n_s8): Likewise.
23198         (vhaddq_x_n_s16): Likewise.
23199         (vhaddq_x_n_s32): Likewise.
23200         (vhaddq_x_n_u8): Likewise.
23201         (vhaddq_x_n_u16): Likewise.
23202         (vhaddq_x_n_u32): Likewise.
23203         (vhaddq_x_s8): Likewise.
23204         (vhaddq_x_s16): Likewise.
23205         (vhaddq_x_s32): Likewise.
23206         (vhaddq_x_u8): Likewise.
23207         (vhaddq_x_u16): Likewise.
23208         (vhaddq_x_u32): Likewise.
23209         (vhcaddq_rot90_x_s8): Likewise.
23210         (vhcaddq_rot90_x_s16): Likewise.
23211         (vhcaddq_rot90_x_s32): Likewise.
23212         (vhcaddq_rot270_x_s8): Likewise.
23213         (vhcaddq_rot270_x_s16): Likewise.
23214         (vhcaddq_rot270_x_s32): Likewise.
23215         (vhsubq_x_n_s8): Likewise.
23216         (vhsubq_x_n_s16): Likewise.
23217         (vhsubq_x_n_s32): Likewise.
23218         (vhsubq_x_n_u8): Likewise.
23219         (vhsubq_x_n_u16): Likewise.
23220         (vhsubq_x_n_u32): Likewise.
23221         (vhsubq_x_s8): Likewise.
23222         (vhsubq_x_s16): Likewise.
23223         (vhsubq_x_s32): Likewise.
23224         (vhsubq_x_u8): Likewise.
23225         (vhsubq_x_u16): Likewise.
23226         (vhsubq_x_u32): Likewise.
23227         (vrhaddq_x_s8): Likewise.
23228         (vrhaddq_x_s16): Likewise.
23229         (vrhaddq_x_s32): Likewise.
23230         (vrhaddq_x_u8): Likewise.
23231         (vrhaddq_x_u16): Likewise.
23232         (vrhaddq_x_u32): Likewise.
23233         (vrmulhq_x_s8): Likewise.
23234         (vrmulhq_x_s16): Likewise.
23235         (vrmulhq_x_s32): Likewise.
23236         (vrmulhq_x_u8): Likewise.
23237         (vrmulhq_x_u16): Likewise.
23238         (vrmulhq_x_u32): Likewise.
23239         (vandq_x_s8): Likewise.
23240         (vandq_x_s16): Likewise.
23241         (vandq_x_s32): Likewise.
23242         (vandq_x_u8): Likewise.
23243         (vandq_x_u16): Likewise.
23244         (vandq_x_u32): Likewise.
23245         (vbicq_x_s8): Likewise.
23246         (vbicq_x_s16): Likewise.
23247         (vbicq_x_s32): Likewise.
23248         (vbicq_x_u8): Likewise.
23249         (vbicq_x_u16): Likewise.
23250         (vbicq_x_u32): Likewise.
23251         (vbrsrq_x_n_s8): Likewise.
23252         (vbrsrq_x_n_s16): Likewise.
23253         (vbrsrq_x_n_s32): Likewise.
23254         (vbrsrq_x_n_u8): Likewise.
23255         (vbrsrq_x_n_u16): Likewise.
23256         (vbrsrq_x_n_u32): Likewise.
23257         (veorq_x_s8): Likewise.
23258         (veorq_x_s16): Likewise.
23259         (veorq_x_s32): Likewise.
23260         (veorq_x_u8): Likewise.
23261         (veorq_x_u16): Likewise.
23262         (veorq_x_u32): Likewise.
23263         (vmovlbq_x_s8): Likewise.
23264         (vmovlbq_x_s16): Likewise.
23265         (vmovlbq_x_u8): Likewise.
23266         (vmovlbq_x_u16): Likewise.
23267         (vmovltq_x_s8): Likewise.
23268         (vmovltq_x_s16): Likewise.
23269         (vmovltq_x_u8): Likewise.
23270         (vmovltq_x_u16): Likewise.
23271         (vmvnq_x_s8): Likewise.
23272         (vmvnq_x_s16): Likewise.
23273         (vmvnq_x_s32): Likewise.
23274         (vmvnq_x_u8): Likewise.
23275         (vmvnq_x_u16): Likewise.
23276         (vmvnq_x_u32): Likewise.
23277         (vmvnq_x_n_s16): Likewise.
23278         (vmvnq_x_n_s32): Likewise.
23279         (vmvnq_x_n_u16): Likewise.
23280         (vmvnq_x_n_u32): Likewise.
23281         (vornq_x_s8): Likewise.
23282         (vornq_x_s16): Likewise.
23283         (vornq_x_s32): Likewise.
23284         (vornq_x_u8): Likewise.
23285         (vornq_x_u16): Likewise.
23286         (vornq_x_u32): Likewise.
23287         (vorrq_x_s8): Likewise.
23288         (vorrq_x_s16): Likewise.
23289         (vorrq_x_s32): Likewise.
23290         (vorrq_x_u8): Likewise.
23291         (vorrq_x_u16): Likewise.
23292         (vorrq_x_u32): Likewise.
23293         (vrev16q_x_s8): Likewise.
23294         (vrev16q_x_u8): Likewise.
23295         (vrev32q_x_s8): Likewise.
23296         (vrev32q_x_s16): Likewise.
23297         (vrev32q_x_u8): Likewise.
23298         (vrev32q_x_u16): Likewise.
23299         (vrev64q_x_s8): Likewise.
23300         (vrev64q_x_s16): Likewise.
23301         (vrev64q_x_s32): Likewise.
23302         (vrev64q_x_u8): Likewise.
23303         (vrev64q_x_u16): Likewise.
23304         (vrev64q_x_u32): Likewise.
23305         (vrshlq_x_s8): Likewise.
23306         (vrshlq_x_s16): Likewise.
23307         (vrshlq_x_s32): Likewise.
23308         (vrshlq_x_u8): Likewise.
23309         (vrshlq_x_u16): Likewise.
23310         (vrshlq_x_u32): Likewise.
23311         (vshllbq_x_n_s8): Likewise.
23312         (vshllbq_x_n_s16): Likewise.
23313         (vshllbq_x_n_u8): Likewise.
23314         (vshllbq_x_n_u16): Likewise.
23315         (vshlltq_x_n_s8): Likewise.
23316         (vshlltq_x_n_s16): Likewise.
23317         (vshlltq_x_n_u8): Likewise.
23318         (vshlltq_x_n_u16): Likewise.
23319         (vshlq_x_s8): Likewise.
23320         (vshlq_x_s16): Likewise.
23321         (vshlq_x_s32): Likewise.
23322         (vshlq_x_u8): Likewise.
23323         (vshlq_x_u16): Likewise.
23324         (vshlq_x_u32): Likewise.
23325         (vshlq_x_n_s8): Likewise.
23326         (vshlq_x_n_s16): Likewise.
23327         (vshlq_x_n_s32): Likewise.
23328         (vshlq_x_n_u8): Likewise.
23329         (vshlq_x_n_u16): Likewise.
23330         (vshlq_x_n_u32): Likewise.
23331         (vrshrq_x_n_s8): Likewise.
23332         (vrshrq_x_n_s16): Likewise.
23333         (vrshrq_x_n_s32): Likewise.
23334         (vrshrq_x_n_u8): Likewise.
23335         (vrshrq_x_n_u16): Likewise.
23336         (vrshrq_x_n_u32): Likewise.
23337         (vshrq_x_n_s8): Likewise.
23338         (vshrq_x_n_s16): Likewise.
23339         (vshrq_x_n_s32): Likewise.
23340         (vshrq_x_n_u8): Likewise.
23341         (vshrq_x_n_u16): Likewise.
23342         (vshrq_x_n_u32): Likewise.
23343         (vdupq_x_n_f16): Likewise.
23344         (vdupq_x_n_f32): Likewise.
23345         (vminnmq_x_f16): Likewise.
23346         (vminnmq_x_f32): Likewise.
23347         (vmaxnmq_x_f16): Likewise.
23348         (vmaxnmq_x_f32): Likewise.
23349         (vabdq_x_f16): Likewise.
23350         (vabdq_x_f32): Likewise.
23351         (vabsq_x_f16): Likewise.
23352         (vabsq_x_f32): Likewise.
23353         (vaddq_x_f16): Likewise.
23354         (vaddq_x_f32): Likewise.
23355         (vaddq_x_n_f16): Likewise.
23356         (vaddq_x_n_f32): Likewise.
23357         (vnegq_x_f16): Likewise.
23358         (vnegq_x_f32): Likewise.
23359         (vmulq_x_f16): Likewise.
23360         (vmulq_x_f32): Likewise.
23361         (vmulq_x_n_f16): Likewise.
23362         (vmulq_x_n_f32): Likewise.
23363         (vsubq_x_f16): Likewise.
23364         (vsubq_x_f32): Likewise.
23365         (vsubq_x_n_f16): Likewise.
23366         (vsubq_x_n_f32): Likewise.
23367         (vcaddq_rot90_x_f16): Likewise.
23368         (vcaddq_rot90_x_f32): Likewise.
23369         (vcaddq_rot270_x_f16): Likewise.
23370         (vcaddq_rot270_x_f32): Likewise.
23371         (vcmulq_x_f16): Likewise.
23372         (vcmulq_x_f32): Likewise.
23373         (vcmulq_rot90_x_f16): Likewise.
23374         (vcmulq_rot90_x_f32): Likewise.
23375         (vcmulq_rot180_x_f16): Likewise.
23376         (vcmulq_rot180_x_f32): Likewise.
23377         (vcmulq_rot270_x_f16): Likewise.
23378         (vcmulq_rot270_x_f32): Likewise.
23379         (vcvtaq_x_s16_f16): Likewise.
23380         (vcvtaq_x_s32_f32): Likewise.
23381         (vcvtaq_x_u16_f16): Likewise.
23382         (vcvtaq_x_u32_f32): Likewise.
23383         (vcvtnq_x_s16_f16): Likewise.
23384         (vcvtnq_x_s32_f32): Likewise.
23385         (vcvtnq_x_u16_f16): Likewise.
23386         (vcvtnq_x_u32_f32): Likewise.
23387         (vcvtpq_x_s16_f16): Likewise.
23388         (vcvtpq_x_s32_f32): Likewise.
23389         (vcvtpq_x_u16_f16): Likewise.
23390         (vcvtpq_x_u32_f32): Likewise.
23391         (vcvtmq_x_s16_f16): Likewise.
23392         (vcvtmq_x_s32_f32): Likewise.
23393         (vcvtmq_x_u16_f16): Likewise.
23394         (vcvtmq_x_u32_f32): Likewise.
23395         (vcvtbq_x_f32_f16): Likewise.
23396         (vcvttq_x_f32_f16): Likewise.
23397         (vcvtq_x_f16_u16): Likewise.
23398         (vcvtq_x_f16_s16): Likewise.
23399         (vcvtq_x_f32_s32): Likewise.
23400         (vcvtq_x_f32_u32): Likewise.
23401         (vcvtq_x_n_f16_s16): Likewise.
23402         (vcvtq_x_n_f16_u16): Likewise.
23403         (vcvtq_x_n_f32_s32): Likewise.
23404         (vcvtq_x_n_f32_u32): Likewise.
23405         (vcvtq_x_s16_f16): Likewise.
23406         (vcvtq_x_s32_f32): Likewise.
23407         (vcvtq_x_u16_f16): Likewise.
23408         (vcvtq_x_u32_f32): Likewise.
23409         (vcvtq_x_n_s16_f16): Likewise.
23410         (vcvtq_x_n_s32_f32): Likewise.
23411         (vcvtq_x_n_u16_f16): Likewise.
23412         (vcvtq_x_n_u32_f32): Likewise.
23413         (vrndq_x_f16): Likewise.
23414         (vrndq_x_f32): Likewise.
23415         (vrndnq_x_f16): Likewise.
23416         (vrndnq_x_f32): Likewise.
23417         (vrndmq_x_f16): Likewise.
23418         (vrndmq_x_f32): Likewise.
23419         (vrndpq_x_f16): Likewise.
23420         (vrndpq_x_f32): Likewise.
23421         (vrndaq_x_f16): Likewise.
23422         (vrndaq_x_f32): Likewise.
23423         (vrndxq_x_f16): Likewise.
23424         (vrndxq_x_f32): Likewise.
23425         (vandq_x_f16): Likewise.
23426         (vandq_x_f32): Likewise.
23427         (vbicq_x_f16): Likewise.
23428         (vbicq_x_f32): Likewise.
23429         (vbrsrq_x_n_f16): Likewise.
23430         (vbrsrq_x_n_f32): Likewise.
23431         (veorq_x_f16): Likewise.
23432         (veorq_x_f32): Likewise.
23433         (vornq_x_f16): Likewise.
23434         (vornq_x_f32): Likewise.
23435         (vorrq_x_f16): Likewise.
23436         (vorrq_x_f32): Likewise.
23437         (vrev32q_x_f16): Likewise.
23438         (vrev64q_x_f16): Likewise.
23439         (vrev64q_x_f32): Likewise.
23440         (__arm_vddupq_x_n_u8): Define intrinsic.
23441         (__arm_vddupq_x_n_u16): Likewise.
23442         (__arm_vddupq_x_n_u32): Likewise.
23443         (__arm_vddupq_x_wb_u8): Likewise.
23444         (__arm_vddupq_x_wb_u16): Likewise.
23445         (__arm_vddupq_x_wb_u32): Likewise.
23446         (__arm_vdwdupq_x_n_u8): Likewise.
23447         (__arm_vdwdupq_x_n_u16): Likewise.
23448         (__arm_vdwdupq_x_n_u32): Likewise.
23449         (__arm_vdwdupq_x_wb_u8): Likewise.
23450         (__arm_vdwdupq_x_wb_u16): Likewise.
23451         (__arm_vdwdupq_x_wb_u32): Likewise.
23452         (__arm_vidupq_x_n_u8): Likewise.
23453         (__arm_vidupq_x_n_u16): Likewise.
23454         (__arm_vidupq_x_n_u32): Likewise.
23455         (__arm_vidupq_x_wb_u8): Likewise.
23456         (__arm_vidupq_x_wb_u16): Likewise.
23457         (__arm_vidupq_x_wb_u32): Likewise.
23458         (__arm_viwdupq_x_n_u8): Likewise.
23459         (__arm_viwdupq_x_n_u16): Likewise.
23460         (__arm_viwdupq_x_n_u32): Likewise.
23461         (__arm_viwdupq_x_wb_u8): Likewise.
23462         (__arm_viwdupq_x_wb_u16): Likewise.
23463         (__arm_viwdupq_x_wb_u32): Likewise.
23464         (__arm_vdupq_x_n_s8): Likewise.
23465         (__arm_vdupq_x_n_s16): Likewise.
23466         (__arm_vdupq_x_n_s32): Likewise.
23467         (__arm_vdupq_x_n_u8): Likewise.
23468         (__arm_vdupq_x_n_u16): Likewise.
23469         (__arm_vdupq_x_n_u32): Likewise.
23470         (__arm_vminq_x_s8): Likewise.
23471         (__arm_vminq_x_s16): Likewise.
23472         (__arm_vminq_x_s32): Likewise.
23473         (__arm_vminq_x_u8): Likewise.
23474         (__arm_vminq_x_u16): Likewise.
23475         (__arm_vminq_x_u32): Likewise.
23476         (__arm_vmaxq_x_s8): Likewise.
23477         (__arm_vmaxq_x_s16): Likewise.
23478         (__arm_vmaxq_x_s32): Likewise.
23479         (__arm_vmaxq_x_u8): Likewise.
23480         (__arm_vmaxq_x_u16): Likewise.
23481         (__arm_vmaxq_x_u32): Likewise.
23482         (__arm_vabdq_x_s8): Likewise.
23483         (__arm_vabdq_x_s16): Likewise.
23484         (__arm_vabdq_x_s32): Likewise.
23485         (__arm_vabdq_x_u8): Likewise.
23486         (__arm_vabdq_x_u16): Likewise.
23487         (__arm_vabdq_x_u32): Likewise.
23488         (__arm_vabsq_x_s8): Likewise.
23489         (__arm_vabsq_x_s16): Likewise.
23490         (__arm_vabsq_x_s32): Likewise.
23491         (__arm_vaddq_x_s8): Likewise.
23492         (__arm_vaddq_x_s16): Likewise.
23493         (__arm_vaddq_x_s32): Likewise.
23494         (__arm_vaddq_x_n_s8): Likewise.
23495         (__arm_vaddq_x_n_s16): Likewise.
23496         (__arm_vaddq_x_n_s32): Likewise.
23497         (__arm_vaddq_x_u8): Likewise.
23498         (__arm_vaddq_x_u16): Likewise.
23499         (__arm_vaddq_x_u32): Likewise.
23500         (__arm_vaddq_x_n_u8): Likewise.
23501         (__arm_vaddq_x_n_u16): Likewise.
23502         (__arm_vaddq_x_n_u32): Likewise.
23503         (__arm_vclsq_x_s8): Likewise.
23504         (__arm_vclsq_x_s16): Likewise.
23505         (__arm_vclsq_x_s32): Likewise.
23506         (__arm_vclzq_x_s8): Likewise.
23507         (__arm_vclzq_x_s16): Likewise.
23508         (__arm_vclzq_x_s32): Likewise.
23509         (__arm_vclzq_x_u8): Likewise.
23510         (__arm_vclzq_x_u16): Likewise.
23511         (__arm_vclzq_x_u32): Likewise.
23512         (__arm_vnegq_x_s8): Likewise.
23513         (__arm_vnegq_x_s16): Likewise.
23514         (__arm_vnegq_x_s32): Likewise.
23515         (__arm_vmulhq_x_s8): Likewise.
23516         (__arm_vmulhq_x_s16): Likewise.
23517         (__arm_vmulhq_x_s32): Likewise.
23518         (__arm_vmulhq_x_u8): Likewise.
23519         (__arm_vmulhq_x_u16): Likewise.
23520         (__arm_vmulhq_x_u32): Likewise.
23521         (__arm_vmullbq_poly_x_p8): Likewise.
23522         (__arm_vmullbq_poly_x_p16): Likewise.
23523         (__arm_vmullbq_int_x_s8): Likewise.
23524         (__arm_vmullbq_int_x_s16): Likewise.
23525         (__arm_vmullbq_int_x_s32): Likewise.
23526         (__arm_vmullbq_int_x_u8): Likewise.
23527         (__arm_vmullbq_int_x_u16): Likewise.
23528         (__arm_vmullbq_int_x_u32): Likewise.
23529         (__arm_vmulltq_poly_x_p8): Likewise.
23530         (__arm_vmulltq_poly_x_p16): Likewise.
23531         (__arm_vmulltq_int_x_s8): Likewise.
23532         (__arm_vmulltq_int_x_s16): Likewise.
23533         (__arm_vmulltq_int_x_s32): Likewise.
23534         (__arm_vmulltq_int_x_u8): Likewise.
23535         (__arm_vmulltq_int_x_u16): Likewise.
23536         (__arm_vmulltq_int_x_u32): Likewise.
23537         (__arm_vmulq_x_s8): Likewise.
23538         (__arm_vmulq_x_s16): Likewise.
23539         (__arm_vmulq_x_s32): Likewise.
23540         (__arm_vmulq_x_n_s8): Likewise.
23541         (__arm_vmulq_x_n_s16): Likewise.
23542         (__arm_vmulq_x_n_s32): Likewise.
23543         (__arm_vmulq_x_u8): Likewise.
23544         (__arm_vmulq_x_u16): Likewise.
23545         (__arm_vmulq_x_u32): Likewise.
23546         (__arm_vmulq_x_n_u8): Likewise.
23547         (__arm_vmulq_x_n_u16): Likewise.
23548         (__arm_vmulq_x_n_u32): Likewise.
23549         (__arm_vsubq_x_s8): Likewise.
23550         (__arm_vsubq_x_s16): Likewise.
23551         (__arm_vsubq_x_s32): Likewise.
23552         (__arm_vsubq_x_n_s8): Likewise.
23553         (__arm_vsubq_x_n_s16): Likewise.
23554         (__arm_vsubq_x_n_s32): Likewise.
23555         (__arm_vsubq_x_u8): Likewise.
23556         (__arm_vsubq_x_u16): Likewise.
23557         (__arm_vsubq_x_u32): Likewise.
23558         (__arm_vsubq_x_n_u8): Likewise.
23559         (__arm_vsubq_x_n_u16): Likewise.
23560         (__arm_vsubq_x_n_u32): Likewise.
23561         (__arm_vcaddq_rot90_x_s8): Likewise.
23562         (__arm_vcaddq_rot90_x_s16): Likewise.
23563         (__arm_vcaddq_rot90_x_s32): Likewise.
23564         (__arm_vcaddq_rot90_x_u8): Likewise.
23565         (__arm_vcaddq_rot90_x_u16): Likewise.
23566         (__arm_vcaddq_rot90_x_u32): Likewise.
23567         (__arm_vcaddq_rot270_x_s8): Likewise.
23568         (__arm_vcaddq_rot270_x_s16): Likewise.
23569         (__arm_vcaddq_rot270_x_s32): Likewise.
23570         (__arm_vcaddq_rot270_x_u8): Likewise.
23571         (__arm_vcaddq_rot270_x_u16): Likewise.
23572         (__arm_vcaddq_rot270_x_u32): Likewise.
23573         (__arm_vhaddq_x_n_s8): Likewise.
23574         (__arm_vhaddq_x_n_s16): Likewise.
23575         (__arm_vhaddq_x_n_s32): Likewise.
23576         (__arm_vhaddq_x_n_u8): Likewise.
23577         (__arm_vhaddq_x_n_u16): Likewise.
23578         (__arm_vhaddq_x_n_u32): Likewise.
23579         (__arm_vhaddq_x_s8): Likewise.
23580         (__arm_vhaddq_x_s16): Likewise.
23581         (__arm_vhaddq_x_s32): Likewise.
23582         (__arm_vhaddq_x_u8): Likewise.
23583         (__arm_vhaddq_x_u16): Likewise.
23584         (__arm_vhaddq_x_u32): Likewise.
23585         (__arm_vhcaddq_rot90_x_s8): Likewise.
23586         (__arm_vhcaddq_rot90_x_s16): Likewise.
23587         (__arm_vhcaddq_rot90_x_s32): Likewise.
23588         (__arm_vhcaddq_rot270_x_s8): Likewise.
23589         (__arm_vhcaddq_rot270_x_s16): Likewise.
23590         (__arm_vhcaddq_rot270_x_s32): Likewise.
23591         (__arm_vhsubq_x_n_s8): Likewise.
23592         (__arm_vhsubq_x_n_s16): Likewise.
23593         (__arm_vhsubq_x_n_s32): Likewise.
23594         (__arm_vhsubq_x_n_u8): Likewise.
23595         (__arm_vhsubq_x_n_u16): Likewise.
23596         (__arm_vhsubq_x_n_u32): Likewise.
23597         (__arm_vhsubq_x_s8): Likewise.
23598         (__arm_vhsubq_x_s16): Likewise.
23599         (__arm_vhsubq_x_s32): Likewise.
23600         (__arm_vhsubq_x_u8): Likewise.
23601         (__arm_vhsubq_x_u16): Likewise.
23602         (__arm_vhsubq_x_u32): Likewise.
23603         (__arm_vrhaddq_x_s8): Likewise.
23604         (__arm_vrhaddq_x_s16): Likewise.
23605         (__arm_vrhaddq_x_s32): Likewise.
23606         (__arm_vrhaddq_x_u8): Likewise.
23607         (__arm_vrhaddq_x_u16): Likewise.
23608         (__arm_vrhaddq_x_u32): Likewise.
23609         (__arm_vrmulhq_x_s8): Likewise.
23610         (__arm_vrmulhq_x_s16): Likewise.
23611         (__arm_vrmulhq_x_s32): Likewise.
23612         (__arm_vrmulhq_x_u8): Likewise.
23613         (__arm_vrmulhq_x_u16): Likewise.
23614         (__arm_vrmulhq_x_u32): Likewise.
23615         (__arm_vandq_x_s8): Likewise.
23616         (__arm_vandq_x_s16): Likewise.
23617         (__arm_vandq_x_s32): Likewise.
23618         (__arm_vandq_x_u8): Likewise.
23619         (__arm_vandq_x_u16): Likewise.
23620         (__arm_vandq_x_u32): Likewise.
23621         (__arm_vbicq_x_s8): Likewise.
23622         (__arm_vbicq_x_s16): Likewise.
23623         (__arm_vbicq_x_s32): Likewise.
23624         (__arm_vbicq_x_u8): Likewise.
23625         (__arm_vbicq_x_u16): Likewise.
23626         (__arm_vbicq_x_u32): Likewise.
23627         (__arm_vbrsrq_x_n_s8): Likewise.
23628         (__arm_vbrsrq_x_n_s16): Likewise.
23629         (__arm_vbrsrq_x_n_s32): Likewise.
23630         (__arm_vbrsrq_x_n_u8): Likewise.
23631         (__arm_vbrsrq_x_n_u16): Likewise.
23632         (__arm_vbrsrq_x_n_u32): Likewise.
23633         (__arm_veorq_x_s8): Likewise.
23634         (__arm_veorq_x_s16): Likewise.
23635         (__arm_veorq_x_s32): Likewise.
23636         (__arm_veorq_x_u8): Likewise.
23637         (__arm_veorq_x_u16): Likewise.
23638         (__arm_veorq_x_u32): Likewise.
23639         (__arm_vmovlbq_x_s8): Likewise.
23640         (__arm_vmovlbq_x_s16): Likewise.
23641         (__arm_vmovlbq_x_u8): Likewise.
23642         (__arm_vmovlbq_x_u16): Likewise.
23643         (__arm_vmovltq_x_s8): Likewise.
23644         (__arm_vmovltq_x_s16): Likewise.
23645         (__arm_vmovltq_x_u8): Likewise.
23646         (__arm_vmovltq_x_u16): Likewise.
23647         (__arm_vmvnq_x_s8): Likewise.
23648         (__arm_vmvnq_x_s16): Likewise.
23649         (__arm_vmvnq_x_s32): Likewise.
23650         (__arm_vmvnq_x_u8): Likewise.
23651         (__arm_vmvnq_x_u16): Likewise.
23652         (__arm_vmvnq_x_u32): Likewise.
23653         (__arm_vmvnq_x_n_s16): Likewise.
23654         (__arm_vmvnq_x_n_s32): Likewise.
23655         (__arm_vmvnq_x_n_u16): Likewise.
23656         (__arm_vmvnq_x_n_u32): Likewise.
23657         (__arm_vornq_x_s8): Likewise.
23658         (__arm_vornq_x_s16): Likewise.
23659         (__arm_vornq_x_s32): Likewise.
23660         (__arm_vornq_x_u8): Likewise.
23661         (__arm_vornq_x_u16): Likewise.
23662         (__arm_vornq_x_u32): Likewise.
23663         (__arm_vorrq_x_s8): Likewise.
23664         (__arm_vorrq_x_s16): Likewise.
23665         (__arm_vorrq_x_s32): Likewise.
23666         (__arm_vorrq_x_u8): Likewise.
23667         (__arm_vorrq_x_u16): Likewise.
23668         (__arm_vorrq_x_u32): Likewise.
23669         (__arm_vrev16q_x_s8): Likewise.
23670         (__arm_vrev16q_x_u8): Likewise.
23671         (__arm_vrev32q_x_s8): Likewise.
23672         (__arm_vrev32q_x_s16): Likewise.
23673         (__arm_vrev32q_x_u8): Likewise.
23674         (__arm_vrev32q_x_u16): Likewise.
23675         (__arm_vrev64q_x_s8): Likewise.
23676         (__arm_vrev64q_x_s16): Likewise.
23677         (__arm_vrev64q_x_s32): Likewise.
23678         (__arm_vrev64q_x_u8): Likewise.
23679         (__arm_vrev64q_x_u16): Likewise.
23680         (__arm_vrev64q_x_u32): Likewise.
23681         (__arm_vrshlq_x_s8): Likewise.
23682         (__arm_vrshlq_x_s16): Likewise.
23683         (__arm_vrshlq_x_s32): Likewise.
23684         (__arm_vrshlq_x_u8): Likewise.
23685         (__arm_vrshlq_x_u16): Likewise.
23686         (__arm_vrshlq_x_u32): Likewise.
23687         (__arm_vshllbq_x_n_s8): Likewise.
23688         (__arm_vshllbq_x_n_s16): Likewise.
23689         (__arm_vshllbq_x_n_u8): Likewise.
23690         (__arm_vshllbq_x_n_u16): Likewise.
23691         (__arm_vshlltq_x_n_s8): Likewise.
23692         (__arm_vshlltq_x_n_s16): Likewise.
23693         (__arm_vshlltq_x_n_u8): Likewise.
23694         (__arm_vshlltq_x_n_u16): Likewise.
23695         (__arm_vshlq_x_s8): Likewise.
23696         (__arm_vshlq_x_s16): Likewise.
23697         (__arm_vshlq_x_s32): Likewise.
23698         (__arm_vshlq_x_u8): Likewise.
23699         (__arm_vshlq_x_u16): Likewise.
23700         (__arm_vshlq_x_u32): Likewise.
23701         (__arm_vshlq_x_n_s8): Likewise.
23702         (__arm_vshlq_x_n_s16): Likewise.
23703         (__arm_vshlq_x_n_s32): Likewise.
23704         (__arm_vshlq_x_n_u8): Likewise.
23705         (__arm_vshlq_x_n_u16): Likewise.
23706         (__arm_vshlq_x_n_u32): Likewise.
23707         (__arm_vrshrq_x_n_s8): Likewise.
23708         (__arm_vrshrq_x_n_s16): Likewise.
23709         (__arm_vrshrq_x_n_s32): Likewise.
23710         (__arm_vrshrq_x_n_u8): Likewise.
23711         (__arm_vrshrq_x_n_u16): Likewise.
23712         (__arm_vrshrq_x_n_u32): Likewise.
23713         (__arm_vshrq_x_n_s8): Likewise.
23714         (__arm_vshrq_x_n_s16): Likewise.
23715         (__arm_vshrq_x_n_s32): Likewise.
23716         (__arm_vshrq_x_n_u8): Likewise.
23717         (__arm_vshrq_x_n_u16): Likewise.
23718         (__arm_vshrq_x_n_u32): Likewise.
23719         (__arm_vdupq_x_n_f16): Likewise.
23720         (__arm_vdupq_x_n_f32): Likewise.
23721         (__arm_vminnmq_x_f16): Likewise.
23722         (__arm_vminnmq_x_f32): Likewise.
23723         (__arm_vmaxnmq_x_f16): Likewise.
23724         (__arm_vmaxnmq_x_f32): Likewise.
23725         (__arm_vabdq_x_f16): Likewise.
23726         (__arm_vabdq_x_f32): Likewise.
23727         (__arm_vabsq_x_f16): Likewise.
23728         (__arm_vabsq_x_f32): Likewise.
23729         (__arm_vaddq_x_f16): Likewise.
23730         (__arm_vaddq_x_f32): Likewise.
23731         (__arm_vaddq_x_n_f16): Likewise.
23732         (__arm_vaddq_x_n_f32): Likewise.
23733         (__arm_vnegq_x_f16): Likewise.
23734         (__arm_vnegq_x_f32): Likewise.
23735         (__arm_vmulq_x_f16): Likewise.
23736         (__arm_vmulq_x_f32): Likewise.
23737         (__arm_vmulq_x_n_f16): Likewise.
23738         (__arm_vmulq_x_n_f32): Likewise.
23739         (__arm_vsubq_x_f16): Likewise.
23740         (__arm_vsubq_x_f32): Likewise.
23741         (__arm_vsubq_x_n_f16): Likewise.
23742         (__arm_vsubq_x_n_f32): Likewise.
23743         (__arm_vcaddq_rot90_x_f16): Likewise.
23744         (__arm_vcaddq_rot90_x_f32): Likewise.
23745         (__arm_vcaddq_rot270_x_f16): Likewise.
23746         (__arm_vcaddq_rot270_x_f32): Likewise.
23747         (__arm_vcmulq_x_f16): Likewise.
23748         (__arm_vcmulq_x_f32): Likewise.
23749         (__arm_vcmulq_rot90_x_f16): Likewise.
23750         (__arm_vcmulq_rot90_x_f32): Likewise.
23751         (__arm_vcmulq_rot180_x_f16): Likewise.
23752         (__arm_vcmulq_rot180_x_f32): Likewise.
23753         (__arm_vcmulq_rot270_x_f16): Likewise.
23754         (__arm_vcmulq_rot270_x_f32): Likewise.
23755         (__arm_vcvtaq_x_s16_f16): Likewise.
23756         (__arm_vcvtaq_x_s32_f32): Likewise.
23757         (__arm_vcvtaq_x_u16_f16): Likewise.
23758         (__arm_vcvtaq_x_u32_f32): Likewise.
23759         (__arm_vcvtnq_x_s16_f16): Likewise.
23760         (__arm_vcvtnq_x_s32_f32): Likewise.
23761         (__arm_vcvtnq_x_u16_f16): Likewise.
23762         (__arm_vcvtnq_x_u32_f32): Likewise.
23763         (__arm_vcvtpq_x_s16_f16): Likewise.
23764         (__arm_vcvtpq_x_s32_f32): Likewise.
23765         (__arm_vcvtpq_x_u16_f16): Likewise.
23766         (__arm_vcvtpq_x_u32_f32): Likewise.
23767         (__arm_vcvtmq_x_s16_f16): Likewise.
23768         (__arm_vcvtmq_x_s32_f32): Likewise.
23769         (__arm_vcvtmq_x_u16_f16): Likewise.
23770         (__arm_vcvtmq_x_u32_f32): Likewise.
23771         (__arm_vcvtbq_x_f32_f16): Likewise.
23772         (__arm_vcvttq_x_f32_f16): Likewise.
23773         (__arm_vcvtq_x_f16_u16): Likewise.
23774         (__arm_vcvtq_x_f16_s16): Likewise.
23775         (__arm_vcvtq_x_f32_s32): Likewise.
23776         (__arm_vcvtq_x_f32_u32): Likewise.
23777         (__arm_vcvtq_x_n_f16_s16): Likewise.
23778         (__arm_vcvtq_x_n_f16_u16): Likewise.
23779         (__arm_vcvtq_x_n_f32_s32): Likewise.
23780         (__arm_vcvtq_x_n_f32_u32): Likewise.
23781         (__arm_vcvtq_x_s16_f16): Likewise.
23782         (__arm_vcvtq_x_s32_f32): Likewise.
23783         (__arm_vcvtq_x_u16_f16): Likewise.
23784         (__arm_vcvtq_x_u32_f32): Likewise.
23785         (__arm_vcvtq_x_n_s16_f16): Likewise.
23786         (__arm_vcvtq_x_n_s32_f32): Likewise.
23787         (__arm_vcvtq_x_n_u16_f16): Likewise.
23788         (__arm_vcvtq_x_n_u32_f32): Likewise.
23789         (__arm_vrndq_x_f16): Likewise.
23790         (__arm_vrndq_x_f32): Likewise.
23791         (__arm_vrndnq_x_f16): Likewise.
23792         (__arm_vrndnq_x_f32): Likewise.
23793         (__arm_vrndmq_x_f16): Likewise.
23794         (__arm_vrndmq_x_f32): Likewise.
23795         (__arm_vrndpq_x_f16): Likewise.
23796         (__arm_vrndpq_x_f32): Likewise.
23797         (__arm_vrndaq_x_f16): Likewise.
23798         (__arm_vrndaq_x_f32): Likewise.
23799         (__arm_vrndxq_x_f16): Likewise.
23800         (__arm_vrndxq_x_f32): Likewise.
23801         (__arm_vandq_x_f16): Likewise.
23802         (__arm_vandq_x_f32): Likewise.
23803         (__arm_vbicq_x_f16): Likewise.
23804         (__arm_vbicq_x_f32): Likewise.
23805         (__arm_vbrsrq_x_n_f16): Likewise.
23806         (__arm_vbrsrq_x_n_f32): Likewise.
23807         (__arm_veorq_x_f16): Likewise.
23808         (__arm_veorq_x_f32): Likewise.
23809         (__arm_vornq_x_f16): Likewise.
23810         (__arm_vornq_x_f32): Likewise.
23811         (__arm_vorrq_x_f16): Likewise.
23812         (__arm_vorrq_x_f32): Likewise.
23813         (__arm_vrev32q_x_f16): Likewise.
23814         (__arm_vrev64q_x_f16): Likewise.
23815         (__arm_vrev64q_x_f32): Likewise.
23816         (vabdq_x): Define polymorphic variant.
23817         (vabsq_x): Likewise.
23818         (vaddq_x): Likewise.
23819         (vandq_x): Likewise.
23820         (vbicq_x): Likewise.
23821         (vbrsrq_x): Likewise.
23822         (vcaddq_rot270_x): Likewise.
23823         (vcaddq_rot90_x): Likewise.
23824         (vcmulq_rot180_x): Likewise.
23825         (vcmulq_rot270_x): Likewise.
23826         (vcmulq_x): Likewise.
23827         (vcvtq_x): Likewise.
23828         (vcvtq_x_n): Likewise.
23829         (vcvtnq_m): Likewise.
23830         (veorq_x): Likewise.
23831         (vmaxnmq_x): Likewise.
23832         (vminnmq_x): Likewise.
23833         (vmulq_x): Likewise.
23834         (vnegq_x): Likewise.
23835         (vornq_x): Likewise.
23836         (vorrq_x): Likewise.
23837         (vrev32q_x): Likewise.
23838         (vrev64q_x): Likewise.
23839         (vrndaq_x): Likewise.
23840         (vrndmq_x): Likewise.
23841         (vrndnq_x): Likewise.
23842         (vrndpq_x): Likewise.
23843         (vrndq_x): Likewise.
23844         (vrndxq_x): Likewise.
23845         (vsubq_x): Likewise.
23846         (vcmulq_rot90_x): Likewise.
23847         (vadciq): Likewise.
23848         (vclsq_x): Likewise.
23849         (vclzq_x): Likewise.
23850         (vhaddq_x): Likewise.
23851         (vhcaddq_rot270_x): Likewise.
23852         (vhcaddq_rot90_x): Likewise.
23853         (vhsubq_x): Likewise.
23854         (vmaxq_x): Likewise.
23855         (vminq_x): Likewise.
23856         (vmovlbq_x): Likewise.
23857         (vmovltq_x): Likewise.
23858         (vmulhq_x): Likewise.
23859         (vmullbq_int_x): Likewise.
23860         (vmullbq_poly_x): Likewise.
23861         (vmulltq_int_x): Likewise.
23862         (vmulltq_poly_x): Likewise.
23863         (vmvnq_x): Likewise.
23864         (vrev16q_x): Likewise.
23865         (vrhaddq_x): Likewise.
23866         (vrmulhq_x): Likewise.
23867         (vrshlq_x): Likewise.
23868         (vrshrq_x): Likewise.
23869         (vshllbq_x): Likewise.
23870         (vshlltq_x): Likewise.
23871         (vshlq_x_n): Likewise.
23872         (vshlq_x): Likewise.
23873         (vdwdupq_x_u8): Likewise.
23874         (vdwdupq_x_u16): Likewise.
23875         (vdwdupq_x_u32): Likewise.
23876         (viwdupq_x_u8): Likewise.
23877         (viwdupq_x_u16): Likewise.
23878         (viwdupq_x_u32): Likewise.
23879         (vidupq_x_u8): Likewise.
23880         (vddupq_x_u8): Likewise.
23881         (vidupq_x_u16): Likewise.
23882         (vddupq_x_u16): Likewise.
23883         (vidupq_x_u32): Likewise.
23884         (vddupq_x_u32): Likewise.
23885         (vshrq_x): Likewise.
23887 2020-03-20  Richard Biener  <rguenther@suse.de>
23889         * tree-vect-slp.c (vect_analyze_slp_instance): Push the stmts
23890         to vectorize for CTOR defs.
23892 2020-03-20  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
23893             Andre Vieira  <andre.simoesdiasvieira@arm.com>
23894             Mihail Ionescu  <mihail.ionescu@arm.com>
23896         * config/arm/arm-builtins.c (LDRGBWBS_QUALIFIERS): Define builtin
23897         qualifier.
23898         (LDRGBWBU_QUALIFIERS): Likewise.
23899         (LDRGBWBS_Z_QUALIFIERS): Likewise.
23900         (LDRGBWBU_Z_QUALIFIERS): Likewise.
23901         (STRSBWBS_QUALIFIERS): Likewise.
23902         (STRSBWBU_QUALIFIERS): Likewise.
23903         (STRSBWBS_P_QUALIFIERS): Likewise.
23904         (STRSBWBU_P_QUALIFIERS): Likewise.
23905         * config/arm/arm_mve.h (vldrdq_gather_base_wb_s64): Define macro.
23906         (vldrdq_gather_base_wb_u64): Likewise.
23907         (vldrdq_gather_base_wb_z_s64): Likewise.
23908         (vldrdq_gather_base_wb_z_u64): Likewise.
23909         (vldrwq_gather_base_wb_f32): Likewise.
23910         (vldrwq_gather_base_wb_s32): Likewise.
23911         (vldrwq_gather_base_wb_u32): Likewise.
23912         (vldrwq_gather_base_wb_z_f32): Likewise.
23913         (vldrwq_gather_base_wb_z_s32): Likewise.
23914         (vldrwq_gather_base_wb_z_u32): Likewise.
23915         (vstrdq_scatter_base_wb_p_s64): Likewise.
23916         (vstrdq_scatter_base_wb_p_u64): Likewise.
23917         (vstrdq_scatter_base_wb_s64): Likewise.
23918         (vstrdq_scatter_base_wb_u64): Likewise.
23919         (vstrwq_scatter_base_wb_p_s32): Likewise.
23920         (vstrwq_scatter_base_wb_p_f32): Likewise.
23921         (vstrwq_scatter_base_wb_p_u32): Likewise.
23922         (vstrwq_scatter_base_wb_s32): Likewise.
23923         (vstrwq_scatter_base_wb_u32): Likewise.
23924         (vstrwq_scatter_base_wb_f32): Likewise.
23925         (__arm_vldrdq_gather_base_wb_s64): Define intrinsic.
23926         (__arm_vldrdq_gather_base_wb_u64): Likewise.
23927         (__arm_vldrdq_gather_base_wb_z_s64): Likewise.
23928         (__arm_vldrdq_gather_base_wb_z_u64): Likewise.
23929         (__arm_vldrwq_gather_base_wb_s32): Likewise.
23930         (__arm_vldrwq_gather_base_wb_u32): Likewise.
23931         (__arm_vldrwq_gather_base_wb_z_s32): Likewise.
23932         (__arm_vldrwq_gather_base_wb_z_u32): Likewise.
23933         (__arm_vstrdq_scatter_base_wb_s64): Likewise.
23934         (__arm_vstrdq_scatter_base_wb_u64): Likewise.
23935         (__arm_vstrdq_scatter_base_wb_p_s64): Likewise.
23936         (__arm_vstrdq_scatter_base_wb_p_u64): Likewise.
23937         (__arm_vstrwq_scatter_base_wb_p_s32): Likewise.
23938         (__arm_vstrwq_scatter_base_wb_p_u32): Likewise.
23939         (__arm_vstrwq_scatter_base_wb_s32): Likewise.
23940         (__arm_vstrwq_scatter_base_wb_u32): Likewise.
23941         (__arm_vldrwq_gather_base_wb_f32): Likewise.
23942         (__arm_vldrwq_gather_base_wb_z_f32): Likewise.
23943         (__arm_vstrwq_scatter_base_wb_f32): Likewise.
23944         (__arm_vstrwq_scatter_base_wb_p_f32): Likewise.
23945         (vstrwq_scatter_base_wb): Define polymorphic variant.
23946         (vstrwq_scatter_base_wb_p): Likewise.
23947         (vstrdq_scatter_base_wb_p): Likewise.
23948         (vstrdq_scatter_base_wb): Likewise.
23949         * config/arm/arm_mve_builtins.def (LDRGBWBS_QUALIFIERS): Use builtin
23950         qualifier.
23951         * config/arm/mve.md (mve_vstrwq_scatter_base_wb_<supf>v4si): Define RTL
23952         pattern.
23953         (mve_vstrwq_scatter_base_wb_add_<supf>v4si): Likewise.
23954         (mve_vstrwq_scatter_base_wb_<supf>v4si_insn): Likewise.
23955         (mve_vstrwq_scatter_base_wb_p_<supf>v4si): Likewise.
23956         (mve_vstrwq_scatter_base_wb_p_add_<supf>v4si): Likewise.
23957         (mve_vstrwq_scatter_base_wb_p_<supf>v4si_insn): Likewise.
23958         (mve_vstrwq_scatter_base_wb_fv4sf): Likewise.
23959         (mve_vstrwq_scatter_base_wb_add_fv4sf): Likewise.
23960         (mve_vstrwq_scatter_base_wb_fv4sf_insn): Likewise.
23961         (mve_vstrwq_scatter_base_wb_p_fv4sf): Likewise.
23962         (mve_vstrwq_scatter_base_wb_p_add_fv4sf): Likewise.
23963         (mve_vstrwq_scatter_base_wb_p_fv4sf_insn): Likewise.
23964         (mve_vstrdq_scatter_base_wb_<supf>v2di): Likewise.
23965         (mve_vstrdq_scatter_base_wb_add_<supf>v2di): Likewise.
23966         (mve_vstrdq_scatter_base_wb_<supf>v2di_insn): Likewise.
23967         (mve_vstrdq_scatter_base_wb_p_<supf>v2di): Likewise.
23968         (mve_vstrdq_scatter_base_wb_p_add_<supf>v2di): Likewise.
23969         (mve_vstrdq_scatter_base_wb_p_<supf>v2di_insn): Likewise.
23970         (mve_vldrwq_gather_base_wb_<supf>v4si): Likewise.
23971         (mve_vldrwq_gather_base_wb_<supf>v4si_insn): Likewise.
23972         (mve_vldrwq_gather_base_wb_z_<supf>v4si): Likewise.
23973         (mve_vldrwq_gather_base_wb_z_<supf>v4si_insn): Likewise.
23974         (mve_vldrwq_gather_base_wb_fv4sf): Likewise.
23975         (mve_vldrwq_gather_base_wb_fv4sf_insn): Likewise.
23976         (mve_vldrwq_gather_base_wb_z_fv4sf): Likewise.
23977         (mve_vldrwq_gather_base_wb_z_fv4sf_insn): Likewise.
23978         (mve_vldrdq_gather_base_wb_<supf>v2di): Likewise.
23979         (mve_vldrdq_gather_base_wb_<supf>v2di_insn): Likewise.
23980         (mve_vldrdq_gather_base_wb_z_<supf>v2di): Likewise.
23981         (mve_vldrdq_gather_base_wb_z_<supf>v2di_insn): Likewise.
23983 2020-03-20  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
23984             Andre Vieira  <andre.simoesdiasvieira@arm.com>
23985             Mihail Ionescu  <mihail.ionescu@arm.com>
23987         * config/arm/arm-builtins.c
23988         (QUINOP_UNONE_UNONE_UNONE_UNONE_IMM_UNONE_QUALIFIERS): Define quinary
23989         builtin qualifier.
23990         * config/arm/arm_mve.h (vddupq_m_n_u8): Define macro.
23991         (vddupq_m_n_u32): Likewise.
23992         (vddupq_m_n_u16): Likewise.
23993         (vddupq_m_wb_u8): Likewise.
23994         (vddupq_m_wb_u16): Likewise.
23995         (vddupq_m_wb_u32): Likewise.
23996         (vddupq_n_u8): Likewise.
23997         (vddupq_n_u32): Likewise.
23998         (vddupq_n_u16): Likewise.
23999         (vddupq_wb_u8): Likewise.
24000         (vddupq_wb_u16): Likewise.
24001         (vddupq_wb_u32): Likewise.
24002         (vdwdupq_m_n_u8): Likewise.
24003         (vdwdupq_m_n_u32): Likewise.
24004         (vdwdupq_m_n_u16): Likewise.
24005         (vdwdupq_m_wb_u8): Likewise.
24006         (vdwdupq_m_wb_u32): Likewise.
24007         (vdwdupq_m_wb_u16): Likewise.
24008         (vdwdupq_n_u8): Likewise.
24009         (vdwdupq_n_u32): Likewise.
24010         (vdwdupq_n_u16): Likewise.
24011         (vdwdupq_wb_u8): Likewise.
24012         (vdwdupq_wb_u32): Likewise.
24013         (vdwdupq_wb_u16): Likewise.
24014         (vidupq_m_n_u8): Likewise.
24015         (vidupq_m_n_u32): Likewise.
24016         (vidupq_m_n_u16): Likewise.
24017         (vidupq_m_wb_u8): Likewise.
24018         (vidupq_m_wb_u16): Likewise.
24019         (vidupq_m_wb_u32): Likewise.
24020         (vidupq_n_u8): Likewise.
24021         (vidupq_n_u32): Likewise.
24022         (vidupq_n_u16): Likewise.
24023         (vidupq_wb_u8): Likewise.
24024         (vidupq_wb_u16): Likewise.
24025         (vidupq_wb_u32): Likewise.
24026         (viwdupq_m_n_u8): Likewise.
24027         (viwdupq_m_n_u32): Likewise.
24028         (viwdupq_m_n_u16): Likewise.
24029         (viwdupq_m_wb_u8): Likewise.
24030         (viwdupq_m_wb_u32): Likewise.
24031         (viwdupq_m_wb_u16): Likewise.
24032         (viwdupq_n_u8): Likewise.
24033         (viwdupq_n_u32): Likewise.
24034         (viwdupq_n_u16): Likewise.
24035         (viwdupq_wb_u8): Likewise.
24036         (viwdupq_wb_u32): Likewise.
24037         (viwdupq_wb_u16): Likewise.
24038         (__arm_vddupq_m_n_u8): Define intrinsic.
24039         (__arm_vddupq_m_n_u32): Likewise.
24040         (__arm_vddupq_m_n_u16): Likewise.
24041         (__arm_vddupq_m_wb_u8): Likewise.
24042         (__arm_vddupq_m_wb_u16): Likewise.
24043         (__arm_vddupq_m_wb_u32): Likewise.
24044         (__arm_vddupq_n_u8): Likewise.
24045         (__arm_vddupq_n_u32): Likewise.
24046         (__arm_vddupq_n_u16): Likewise.
24047         (__arm_vdwdupq_m_n_u8): Likewise.
24048         (__arm_vdwdupq_m_n_u32): Likewise.
24049         (__arm_vdwdupq_m_n_u16): Likewise.
24050         (__arm_vdwdupq_m_wb_u8): Likewise.
24051         (__arm_vdwdupq_m_wb_u32): Likewise.
24052         (__arm_vdwdupq_m_wb_u16): Likewise.
24053         (__arm_vdwdupq_n_u8): Likewise.
24054         (__arm_vdwdupq_n_u32): Likewise.
24055         (__arm_vdwdupq_n_u16): Likewise.
24056         (__arm_vdwdupq_wb_u8): Likewise.
24057         (__arm_vdwdupq_wb_u32): Likewise.
24058         (__arm_vdwdupq_wb_u16): Likewise.
24059         (__arm_vidupq_m_n_u8): Likewise.
24060         (__arm_vidupq_m_n_u32): Likewise.
24061         (__arm_vidupq_m_n_u16): Likewise.
24062         (__arm_vidupq_n_u8): Likewise.
24063         (__arm_vidupq_m_wb_u8): Likewise.
24064         (__arm_vidupq_m_wb_u16): Likewise.
24065         (__arm_vidupq_m_wb_u32): Likewise.
24066         (__arm_vidupq_n_u32): Likewise.
24067         (__arm_vidupq_n_u16): Likewise.
24068         (__arm_vidupq_wb_u8): Likewise.
24069         (__arm_vidupq_wb_u16): Likewise.
24070         (__arm_vidupq_wb_u32): Likewise.
24071         (__arm_vddupq_wb_u8): Likewise.
24072         (__arm_vddupq_wb_u16): Likewise.
24073         (__arm_vddupq_wb_u32): Likewise.
24074         (__arm_viwdupq_m_n_u8): Likewise.
24075         (__arm_viwdupq_m_n_u32): Likewise.
24076         (__arm_viwdupq_m_n_u16): Likewise.
24077         (__arm_viwdupq_m_wb_u8): Likewise.
24078         (__arm_viwdupq_m_wb_u32): Likewise.
24079         (__arm_viwdupq_m_wb_u16): Likewise.
24080         (__arm_viwdupq_n_u8): Likewise.
24081         (__arm_viwdupq_n_u32): Likewise.
24082         (__arm_viwdupq_n_u16): Likewise.
24083         (__arm_viwdupq_wb_u8): Likewise.
24084         (__arm_viwdupq_wb_u32): Likewise.
24085         (__arm_viwdupq_wb_u16): Likewise.
24086         (vidupq_m): Define polymorphic variant.
24087         (vddupq_m): Likewise.
24088         (vidupq_u16): Likewise.
24089         (vidupq_u32): Likewise.
24090         (vidupq_u8): Likewise.
24091         (vddupq_u16): Likewise.
24092         (vddupq_u32): Likewise.
24093         (vddupq_u8): Likewise.
24094         (viwdupq_m): Likewise.
24095         (viwdupq_u16): Likewise.
24096         (viwdupq_u32): Likewise.
24097         (viwdupq_u8): Likewise.
24098         (vdwdupq_m): Likewise.
24099         (vdwdupq_u16): Likewise.
24100         (vdwdupq_u32): Likewise.
24101         (vdwdupq_u8): Likewise.
24102         * config/arm/arm_mve_builtins.def
24103         (QUINOP_UNONE_UNONE_UNONE_UNONE_IMM_UNONE_QUALIFIERS): Use builtin
24104         qualifier.
24105         * config/arm/mve.md (mve_vidupq_n_u<mode>): Define RTL pattern.
24106         (mve_vidupq_u<mode>_insn): Likewise.
24107         (mve_vidupq_m_n_u<mode>): Likewise.
24108         (mve_vidupq_m_wb_u<mode>_insn): Likewise.
24109         (mve_vddupq_n_u<mode>): Likewise.
24110         (mve_vddupq_u<mode>_insn): Likewise.
24111         (mve_vddupq_m_n_u<mode>): Likewise.
24112         (mve_vddupq_m_wb_u<mode>_insn): Likewise.
24113         (mve_vdwdupq_n_u<mode>): Likewise.
24114         (mve_vdwdupq_wb_u<mode>): Likewise.
24115         (mve_vdwdupq_wb_u<mode>_insn): Likewise.
24116         (mve_vdwdupq_m_n_u<mode>): Likewise.
24117         (mve_vdwdupq_m_wb_u<mode>): Likewise.
24118         (mve_vdwdupq_m_wb_u<mode>_insn): Likewise.
24119         (mve_viwdupq_n_u<mode>): Likewise.
24120         (mve_viwdupq_wb_u<mode>): Likewise.
24121         (mve_viwdupq_wb_u<mode>_insn): Likewise.
24122         (mve_viwdupq_m_n_u<mode>): Likewise.
24123         (mve_viwdupq_m_wb_u<mode>): Likewise.
24124         (mve_viwdupq_m_wb_u<mode>_insn): Likewise.
24126 2020-03-20  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
24128         * config/arm/arm_mve.h (vreinterpretq_s16_s32): Define macro.
24129         (vreinterpretq_s16_s64): Likewise.
24130         (vreinterpretq_s16_s8): Likewise.
24131         (vreinterpretq_s16_u16): Likewise.
24132         (vreinterpretq_s16_u32): Likewise.
24133         (vreinterpretq_s16_u64): Likewise.
24134         (vreinterpretq_s16_u8): Likewise.
24135         (vreinterpretq_s32_s16): Likewise.
24136         (vreinterpretq_s32_s64): Likewise.
24137         (vreinterpretq_s32_s8): Likewise.
24138         (vreinterpretq_s32_u16): Likewise.
24139         (vreinterpretq_s32_u32): Likewise.
24140         (vreinterpretq_s32_u64): Likewise.
24141         (vreinterpretq_s32_u8): Likewise.
24142         (vreinterpretq_s64_s16): Likewise.
24143         (vreinterpretq_s64_s32): Likewise.
24144         (vreinterpretq_s64_s8): Likewise.
24145         (vreinterpretq_s64_u16): Likewise.
24146         (vreinterpretq_s64_u32): Likewise.
24147         (vreinterpretq_s64_u64): Likewise.
24148         (vreinterpretq_s64_u8): Likewise.
24149         (vreinterpretq_s8_s16): Likewise.
24150         (vreinterpretq_s8_s32): Likewise.
24151         (vreinterpretq_s8_s64): Likewise.
24152         (vreinterpretq_s8_u16): Likewise.
24153         (vreinterpretq_s8_u32): Likewise.
24154         (vreinterpretq_s8_u64): Likewise.
24155         (vreinterpretq_s8_u8): Likewise.
24156         (vreinterpretq_u16_s16): Likewise.
24157         (vreinterpretq_u16_s32): Likewise.
24158         (vreinterpretq_u16_s64): Likewise.
24159         (vreinterpretq_u16_s8): Likewise.
24160         (vreinterpretq_u16_u32): Likewise.
24161         (vreinterpretq_u16_u64): Likewise.
24162         (vreinterpretq_u16_u8): Likewise.
24163         (vreinterpretq_u32_s16): Likewise.
24164         (vreinterpretq_u32_s32): Likewise.
24165         (vreinterpretq_u32_s64): Likewise.
24166         (vreinterpretq_u32_s8): Likewise.
24167         (vreinterpretq_u32_u16): Likewise.
24168         (vreinterpretq_u32_u64): Likewise.
24169         (vreinterpretq_u32_u8): Likewise.
24170         (vreinterpretq_u64_s16): Likewise.
24171         (vreinterpretq_u64_s32): Likewise.
24172         (vreinterpretq_u64_s64): Likewise.
24173         (vreinterpretq_u64_s8): Likewise.
24174         (vreinterpretq_u64_u16): Likewise.
24175         (vreinterpretq_u64_u32): Likewise.
24176         (vreinterpretq_u64_u8): Likewise.
24177         (vreinterpretq_u8_s16): Likewise.
24178         (vreinterpretq_u8_s32): Likewise.
24179         (vreinterpretq_u8_s64): Likewise.
24180         (vreinterpretq_u8_s8): Likewise.
24181         (vreinterpretq_u8_u16): Likewise.
24182         (vreinterpretq_u8_u32): Likewise.
24183         (vreinterpretq_u8_u64): Likewise.
24184         (vreinterpretq_s32_f16): Likewise.
24185         (vreinterpretq_s32_f32): Likewise.
24186         (vreinterpretq_u16_f16): Likewise.
24187         (vreinterpretq_u16_f32): Likewise.
24188         (vreinterpretq_u32_f16): Likewise.
24189         (vreinterpretq_u32_f32): Likewise.
24190         (vreinterpretq_u64_f16): Likewise.
24191         (vreinterpretq_u64_f32): Likewise.
24192         (vreinterpretq_u8_f16): Likewise.
24193         (vreinterpretq_u8_f32): Likewise.
24194         (vreinterpretq_f16_f32): Likewise.
24195         (vreinterpretq_f16_s16): Likewise.
24196         (vreinterpretq_f16_s32): Likewise.
24197         (vreinterpretq_f16_s64): Likewise.
24198         (vreinterpretq_f16_s8): Likewise.
24199         (vreinterpretq_f16_u16): Likewise.
24200         (vreinterpretq_f16_u32): Likewise.
24201         (vreinterpretq_f16_u64): Likewise.
24202         (vreinterpretq_f16_u8): Likewise.
24203         (vreinterpretq_f32_f16): Likewise.
24204         (vreinterpretq_f32_s16): Likewise.
24205         (vreinterpretq_f32_s32): Likewise.
24206         (vreinterpretq_f32_s64): Likewise.
24207         (vreinterpretq_f32_s8): Likewise.
24208         (vreinterpretq_f32_u16): Likewise.
24209         (vreinterpretq_f32_u32): Likewise.
24210         (vreinterpretq_f32_u64): Likewise.
24211         (vreinterpretq_f32_u8): Likewise.
24212         (vreinterpretq_s16_f16): Likewise.
24213         (vreinterpretq_s16_f32): Likewise.
24214         (vreinterpretq_s64_f16): Likewise.
24215         (vreinterpretq_s64_f32): Likewise.
24216         (vreinterpretq_s8_f16): Likewise.
24217         (vreinterpretq_s8_f32): Likewise.
24218         (vuninitializedq_u8): Likewise.
24219         (vuninitializedq_u16): Likewise.
24220         (vuninitializedq_u32): Likewise.
24221         (vuninitializedq_u64): Likewise.
24222         (vuninitializedq_s8): Likewise.
24223         (vuninitializedq_s16): Likewise.
24224         (vuninitializedq_s32): Likewise.
24225         (vuninitializedq_s64): Likewise.
24226         (vuninitializedq_f16): Likewise.
24227         (vuninitializedq_f32): Likewise.
24228         (__arm_vuninitializedq_u8): Define intrinsic.
24229         (__arm_vuninitializedq_u16): Likewise.
24230         (__arm_vuninitializedq_u32): Likewise.
24231         (__arm_vuninitializedq_u64): Likewise.
24232         (__arm_vuninitializedq_s8): Likewise.
24233         (__arm_vuninitializedq_s16): Likewise.
24234         (__arm_vuninitializedq_s32): Likewise.
24235         (__arm_vuninitializedq_s64): Likewise.
24236         (__arm_vreinterpretq_s16_s32): Likewise.
24237         (__arm_vreinterpretq_s16_s64): Likewise.
24238         (__arm_vreinterpretq_s16_s8): Likewise.
24239         (__arm_vreinterpretq_s16_u16): Likewise.
24240         (__arm_vreinterpretq_s16_u32): Likewise.
24241         (__arm_vreinterpretq_s16_u64): Likewise.
24242         (__arm_vreinterpretq_s16_u8): Likewise.
24243         (__arm_vreinterpretq_s32_s16): Likewise.
24244         (__arm_vreinterpretq_s32_s64): Likewise.
24245         (__arm_vreinterpretq_s32_s8): Likewise.
24246         (__arm_vreinterpretq_s32_u16): Likewise.
24247         (__arm_vreinterpretq_s32_u32): Likewise.
24248         (__arm_vreinterpretq_s32_u64): Likewise.
24249         (__arm_vreinterpretq_s32_u8): Likewise.
24250         (__arm_vreinterpretq_s64_s16): Likewise.
24251         (__arm_vreinterpretq_s64_s32): Likewise.
24252         (__arm_vreinterpretq_s64_s8): Likewise.
24253         (__arm_vreinterpretq_s64_u16): Likewise.
24254         (__arm_vreinterpretq_s64_u32): Likewise.
24255         (__arm_vreinterpretq_s64_u64): Likewise.
24256         (__arm_vreinterpretq_s64_u8): Likewise.
24257         (__arm_vreinterpretq_s8_s16): Likewise.
24258         (__arm_vreinterpretq_s8_s32): Likewise.
24259         (__arm_vreinterpretq_s8_s64): Likewise.
24260         (__arm_vreinterpretq_s8_u16): Likewise.
24261         (__arm_vreinterpretq_s8_u32): Likewise.
24262         (__arm_vreinterpretq_s8_u64): Likewise.
24263         (__arm_vreinterpretq_s8_u8): Likewise.
24264         (__arm_vreinterpretq_u16_s16): Likewise.
24265         (__arm_vreinterpretq_u16_s32): Likewise.
24266         (__arm_vreinterpretq_u16_s64): Likewise.
24267         (__arm_vreinterpretq_u16_s8): Likewise.
24268         (__arm_vreinterpretq_u16_u32): Likewise.
24269         (__arm_vreinterpretq_u16_u64): Likewise.
24270         (__arm_vreinterpretq_u16_u8): Likewise.
24271         (__arm_vreinterpretq_u32_s16): Likewise.
24272         (__arm_vreinterpretq_u32_s32): Likewise.
24273         (__arm_vreinterpretq_u32_s64): Likewise.
24274         (__arm_vreinterpretq_u32_s8): Likewise.
24275         (__arm_vreinterpretq_u32_u16): Likewise.
24276         (__arm_vreinterpretq_u32_u64): Likewise.
24277         (__arm_vreinterpretq_u32_u8): Likewise.
24278         (__arm_vreinterpretq_u64_s16): Likewise.
24279         (__arm_vreinterpretq_u64_s32): Likewise.
24280         (__arm_vreinterpretq_u64_s64): Likewise.
24281         (__arm_vreinterpretq_u64_s8): Likewise.
24282         (__arm_vreinterpretq_u64_u16): Likewise.
24283         (__arm_vreinterpretq_u64_u32): Likewise.
24284         (__arm_vreinterpretq_u64_u8): Likewise.
24285         (__arm_vreinterpretq_u8_s16): Likewise.
24286         (__arm_vreinterpretq_u8_s32): Likewise.
24287         (__arm_vreinterpretq_u8_s64): Likewise.
24288         (__arm_vreinterpretq_u8_s8): Likewise.
24289         (__arm_vreinterpretq_u8_u16): Likewise.
24290         (__arm_vreinterpretq_u8_u32): Likewise.
24291         (__arm_vreinterpretq_u8_u64): Likewise.
24292         (__arm_vuninitializedq_f16): Likewise.
24293         (__arm_vuninitializedq_f32): Likewise.
24294         (__arm_vreinterpretq_s32_f16): Likewise.
24295         (__arm_vreinterpretq_s32_f32): Likewise.
24296         (__arm_vreinterpretq_s16_f16): Likewise.
24297         (__arm_vreinterpretq_s16_f32): Likewise.
24298         (__arm_vreinterpretq_s64_f16): Likewise.
24299         (__arm_vreinterpretq_s64_f32): Likewise.
24300         (__arm_vreinterpretq_s8_f16): Likewise.
24301         (__arm_vreinterpretq_s8_f32): Likewise.
24302         (__arm_vreinterpretq_u16_f16): Likewise.
24303         (__arm_vreinterpretq_u16_f32): Likewise.
24304         (__arm_vreinterpretq_u32_f16): Likewise.
24305         (__arm_vreinterpretq_u32_f32): Likewise.
24306         (__arm_vreinterpretq_u64_f16): Likewise.
24307         (__arm_vreinterpretq_u64_f32): Likewise.
24308         (__arm_vreinterpretq_u8_f16): Likewise.
24309         (__arm_vreinterpretq_u8_f32): Likewise.
24310         (__arm_vreinterpretq_f16_f32): Likewise.
24311         (__arm_vreinterpretq_f16_s16): Likewise.
24312         (__arm_vreinterpretq_f16_s32): Likewise.
24313         (__arm_vreinterpretq_f16_s64): Likewise.
24314         (__arm_vreinterpretq_f16_s8): Likewise.
24315         (__arm_vreinterpretq_f16_u16): Likewise.
24316         (__arm_vreinterpretq_f16_u32): Likewise.
24317         (__arm_vreinterpretq_f16_u64): Likewise.
24318         (__arm_vreinterpretq_f16_u8): Likewise.
24319         (__arm_vreinterpretq_f32_f16): Likewise.
24320         (__arm_vreinterpretq_f32_s16): Likewise.
24321         (__arm_vreinterpretq_f32_s32): Likewise.
24322         (__arm_vreinterpretq_f32_s64): Likewise.
24323         (__arm_vreinterpretq_f32_s8): Likewise.
24324         (__arm_vreinterpretq_f32_u16): Likewise.
24325         (__arm_vreinterpretq_f32_u32): Likewise.
24326         (__arm_vreinterpretq_f32_u64): Likewise.
24327         (__arm_vreinterpretq_f32_u8): Likewise.
24328         (vuninitializedq): Define polymorphic variant.
24329         (vreinterpretq_f16): Likewise.
24330         (vreinterpretq_f32): Likewise.
24331         (vreinterpretq_s16): Likewise.
24332         (vreinterpretq_s32): Likewise.
24333         (vreinterpretq_s64): Likewise.
24334         (vreinterpretq_s8): Likewise.
24335         (vreinterpretq_u16): Likewise.
24336         (vreinterpretq_u32): Likewise.
24337         (vreinterpretq_u64): Likewise.
24338         (vreinterpretq_u8): Likewise.
24340 2020-03-20  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
24341             Andre Vieira  <andre.simoesdiasvieira@arm.com>
24342             Mihail Ionescu  <mihail.ionescu@arm.com>
24344         * config/arm/arm_mve.h (vaddq_s8): Define macro.
24345         (vaddq_s16): Likewise.
24346         (vaddq_s32): Likewise.
24347         (vaddq_u8): Likewise.
24348         (vaddq_u16): Likewise.
24349         (vaddq_u32): Likewise.
24350         (vaddq_f16): Likewise.
24351         (vaddq_f32): Likewise.
24352         (__arm_vaddq_s8): Define intrinsic.
24353         (__arm_vaddq_s16): Likewise.
24354         (__arm_vaddq_s32): Likewise.
24355         (__arm_vaddq_u8): Likewise.
24356         (__arm_vaddq_u16): Likewise.
24357         (__arm_vaddq_u32): Likewise.
24358         (__arm_vaddq_f16): Likewise.
24359         (__arm_vaddq_f32): Likewise.
24360         (vaddq): Define polymorphic variant.
24361         * config/arm/iterators.md (VNIM): Define mode iterator for common types
24362         Neon, IWMMXT and MVE.
24363         (VNINOTM): Likewise.
24364         * config/arm/mve.md (mve_vaddq<mode>): Define RTL pattern.
24365         (mve_vaddq_f<mode>): Define RTL pattern.
24366         * config/arm/neon.md (add<mode>3): Rename to addv4hf3 RTL pattern.
24367         (addv8hf3_neon): Define RTL pattern.
24368         * config/arm/vec-common.md (add<mode>3): Modify standard add RTL pattern
24369         to support MVE.
24370         (addv8hf3): Define standard RTL pattern for MVE and Neon.
24371         (add<mode>3): Modify existing standard add RTL pattern for Neon and IWMMXT.
24373 2020-03-20  Martin Liska  <mliska@suse.cz>
24375         PR ipa/94232
24376         * ipa-cp.c (ipa_get_jf_ancestor_result): Use offset in bytes. Previously
24377         build_ref_for_offset function was used and it transforms off to bytes
24378         from bits.
24380 2020-03-20  Richard Biener  <rguenther@suse.de>
24382         PR tree-optimization/94266
24383         * gimple-ssa-sprintf.c (get_origin_and_offset): Use the
24384         type of the underlying object to adjust for the containing
24385         field if available.
24387 2020-03-20  Andre Vieira  <andre.simoesdiasvieira@arm.com>
24389         * config/arm/unspecs.md (UNSPEC_GET_FPSCR): Rename this to ...
24390         (VUNSPEC_GET_FPSCR): ... this, and move it to vunspec.
24391         * config/arm/vfp.md: (get_fpscr, set_fpscr): Revert to old patterns.
24393 2020-03-20  Andre Vieira  <andre.simoesdiasvieira@arm.com>
24395         * config/arm/mve.md (mve_mov<mode>): Fix R->R case.
24397 2020-03-20  Jakub Jelinek  <jakub@redhat.com>
24399         PR tree-optimization/94224
24400         * gimple-ssa-store-merging.c
24401         (imm_store_chain_info::coalesce_immediate): Don't consider overlapping
24402         or adjacent INTEGER_CST rhs_code stores as mergeable if they have
24403         different lp_nr.
24405 2020-03-20  Andre Vieira  <andre.simoesdiasvieira@arm.com>
24407         * config/arm/arm.md (define_attr "conds"): Fix logic for neon and mve.
24409 2020-03-19  Jan Hubicka  <hubicka@ucw.cz>
24411         PR ipa/94202
24412         * cgraph.c (cgraph_node::function_symbol): Fix availability computation.
24413         (cgraph_node::function_or_virtual_thunk_symbol): Likewise.
24415 2020-03-19  Jan Hubicka  <hubicka@ucw.cz>
24417         PR ipa/92372
24418         * cgraphunit.c (process_function_and_variable_attributes): warn
24419         for flatten attribute on alias.
24420         * ipa-inline.c (ipa_inline): Do not ICE on flatten attribute on alias.
24422 2020-03-19  Martin Liska  <mliska@suse.cz>
24424         * lto-section-in.c: Add ext_symtab.
24425         * lto-streamer-out.c (write_symbol_extension_info): New.
24426         (produce_symtab_extension): New.
24427         (produce_asm_for_decls): Stream also produce_symtab_extension.
24428         * lto-streamer.h (enum lto_section_type): New section.
24430 2020-03-19  Jakub Jelinek  <jakub@redhat.com>
24432         PR tree-optimization/94211
24433         * tree-ssa-phiopt.c (value_replacement): Use estimate_num_insns_seq
24434         instead of estimate_num_insns for bb_seq (middle_bb).  Rename
24435         emtpy_or_with_defined_p variable to empty_or_with_defined_p, adjust
24436         all uses.
24438 2020-03-19  Richard Biener  <rguenther@suse.de>
24440         PR ipa/94217
24441         * ipa-cp.c (ipa_get_jf_ancestor_result): Avoid build_fold_addr_expr
24442         and build_ref_for_offset.
24444 2020-03-19  Richard Biener  <rguenther@suse.de>
24446         PR middle-end/94216
24447         * fold-const.c (fold_binary_loc): Avoid using
24448         build_fold_addr_expr when we really want an ADDR_EXPR.
24450 2020-03-18  Segher Boessenkool  <segher@kernel.crashing.org>
24452         * config/rs6000/constraints.md (wd, wf, wi, ws, ww): New undocumented
24453         aliases for "wa".
24455 2020-03-12  Richard Sandiford  <richard.sandiford@arm.com>
24457         PR rtl-optimization/90275
24458         * cse.c (cse_insn): Delete no-op register moves too.
24460 2020-03-18  Martin Sebor  <msebor@redhat.com>
24462         PR ipa/92799
24463         * cgraphunit.c (process_function_and_variable_attributes): Also
24464         complain about weakref function definitions and drop all effects
24465         of the attribute.
24467 2020-03-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
24468             Mihail Ionescu  <mihail.ionescu@arm.com>
24469             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
24471         * config/arm/arm_mve.h (vstrdq_scatter_base_p_s64): Define macro.
24472         (vstrdq_scatter_base_p_u64): Likewise.
24473         (vstrdq_scatter_base_s64): Likewise.
24474         (vstrdq_scatter_base_u64): Likewise.
24475         (vstrdq_scatter_offset_p_s64): Likewise.
24476         (vstrdq_scatter_offset_p_u64): Likewise.
24477         (vstrdq_scatter_offset_s64): Likewise.
24478         (vstrdq_scatter_offset_u64): Likewise.
24479         (vstrdq_scatter_shifted_offset_p_s64): Likewise.
24480         (vstrdq_scatter_shifted_offset_p_u64): Likewise.
24481         (vstrdq_scatter_shifted_offset_s64): Likewise.
24482         (vstrdq_scatter_shifted_offset_u64): Likewise.
24483         (vstrhq_scatter_offset_f16): Likewise.
24484         (vstrhq_scatter_offset_p_f16): Likewise.
24485         (vstrhq_scatter_shifted_offset_f16): Likewise.
24486         (vstrhq_scatter_shifted_offset_p_f16): Likewise.
24487         (vstrwq_scatter_base_f32): Likewise.
24488         (vstrwq_scatter_base_p_f32): Likewise.
24489         (vstrwq_scatter_offset_f32): Likewise.
24490         (vstrwq_scatter_offset_p_f32): Likewise.
24491         (vstrwq_scatter_offset_p_s32): Likewise.
24492         (vstrwq_scatter_offset_p_u32): Likewise.
24493         (vstrwq_scatter_offset_s32): Likewise.
24494         (vstrwq_scatter_offset_u32): Likewise.
24495         (vstrwq_scatter_shifted_offset_f32): Likewise.
24496         (vstrwq_scatter_shifted_offset_p_f32): Likewise.
24497         (vstrwq_scatter_shifted_offset_p_s32): Likewise.
24498         (vstrwq_scatter_shifted_offset_p_u32): Likewise.
24499         (vstrwq_scatter_shifted_offset_s32): Likewise.
24500         (vstrwq_scatter_shifted_offset_u32): Likewise.
24501         (__arm_vstrdq_scatter_base_p_s64): Define intrinsic.
24502         (__arm_vstrdq_scatter_base_p_u64): Likewise.
24503         (__arm_vstrdq_scatter_base_s64): Likewise.
24504         (__arm_vstrdq_scatter_base_u64): Likewise.
24505         (__arm_vstrdq_scatter_offset_p_s64): Likewise.
24506         (__arm_vstrdq_scatter_offset_p_u64): Likewise.
24507         (__arm_vstrdq_scatter_offset_s64): Likewise.
24508         (__arm_vstrdq_scatter_offset_u64): Likewise.
24509         (__arm_vstrdq_scatter_shifted_offset_p_s64): Likewise.
24510         (__arm_vstrdq_scatter_shifted_offset_p_u64): Likewise.
24511         (__arm_vstrdq_scatter_shifted_offset_s64): Likewise.
24512         (__arm_vstrdq_scatter_shifted_offset_u64): Likewise.
24513         (__arm_vstrwq_scatter_offset_p_s32): Likewise.
24514         (__arm_vstrwq_scatter_offset_p_u32): Likewise.
24515         (__arm_vstrwq_scatter_offset_s32): Likewise.
24516         (__arm_vstrwq_scatter_offset_u32): Likewise.
24517         (__arm_vstrwq_scatter_shifted_offset_p_s32): Likewise.
24518         (__arm_vstrwq_scatter_shifted_offset_p_u32): Likewise.
24519         (__arm_vstrwq_scatter_shifted_offset_s32): Likewise.
24520         (__arm_vstrwq_scatter_shifted_offset_u32): Likewise.
24521         (__arm_vstrhq_scatter_offset_f16): Likewise.
24522         (__arm_vstrhq_scatter_offset_p_f16): Likewise.
24523         (__arm_vstrhq_scatter_shifted_offset_f16): Likewise.
24524         (__arm_vstrhq_scatter_shifted_offset_p_f16): Likewise.
24525         (__arm_vstrwq_scatter_base_f32): Likewise.
24526         (__arm_vstrwq_scatter_base_p_f32): Likewise.
24527         (__arm_vstrwq_scatter_offset_f32): Likewise.
24528         (__arm_vstrwq_scatter_offset_p_f32): Likewise.
24529         (__arm_vstrwq_scatter_shifted_offset_f32): Likewise.
24530         (__arm_vstrwq_scatter_shifted_offset_p_f32): Likewise.
24531         (vstrhq_scatter_offset): Define polymorphic variant.
24532         (vstrhq_scatter_offset_p): Likewise.
24533         (vstrhq_scatter_shifted_offset): Likewise.
24534         (vstrhq_scatter_shifted_offset_p): Likewise.
24535         (vstrwq_scatter_base): Likewise.
24536         (vstrwq_scatter_base_p): Likewise.
24537         (vstrwq_scatter_offset): Likewise.
24538         (vstrwq_scatter_offset_p): Likewise.
24539         (vstrwq_scatter_shifted_offset): Likewise.
24540         (vstrwq_scatter_shifted_offset_p): Likewise.
24541         (vstrdq_scatter_base_p): Likewise.
24542         (vstrdq_scatter_base): Likewise.
24543         (vstrdq_scatter_offset_p): Likewise.
24544         (vstrdq_scatter_offset): Likewise.
24545         (vstrdq_scatter_shifted_offset_p): Likewise.
24546         (vstrdq_scatter_shifted_offset): Likewise.
24547         * config/arm/arm_mve_builtins.def (STRSBS): Use builtin qualifier.
24548         (STRSBS_P): Likewise.
24549         (STRSBU): Likewise.
24550         (STRSBU_P): Likewise.
24551         (STRSS): Likewise.
24552         (STRSS_P): Likewise.
24553         (STRSU): Likewise.
24554         (STRSU_P): Likewise.
24555         * config/arm/constraints.md (Ri): Define.
24556         * config/arm/mve.md (VSTRDSBQ): Define iterator.
24557         (VSTRDSOQ): Likewise.
24558         (VSTRDSSOQ): Likewise.
24559         (VSTRWSOQ): Likewise.
24560         (VSTRWSSOQ): Likewise.
24561         (mve_vstrdq_scatter_base_p_<supf>v2di): Define RTL pattern.
24562         (mve_vstrdq_scatter_base_<supf>v2di): Likewise.
24563         (mve_vstrdq_scatter_offset_p_<supf>v2di): Likewise.
24564         (mve_vstrdq_scatter_offset_<supf>v2di): Likewise.
24565         (mve_vstrdq_scatter_shifted_offset_p_<supf>v2di): Likewise.
24566         (mve_vstrdq_scatter_shifted_offset_<supf>v2di): Likewise.
24567         (mve_vstrhq_scatter_offset_fv8hf): Likewise.
24568         (mve_vstrhq_scatter_offset_p_fv8hf): Likewise.
24569         (mve_vstrhq_scatter_shifted_offset_fv8hf): Likewise.
24570         (mve_vstrhq_scatter_shifted_offset_p_fv8hf): Likewise.
24571         (mve_vstrwq_scatter_base_fv4sf): Likewise.
24572         (mve_vstrwq_scatter_base_p_fv4sf): Likewise.
24573         (mve_vstrwq_scatter_offset_fv4sf): Likewise.
24574         (mve_vstrwq_scatter_offset_p_fv4sf): Likewise.
24575         (mve_vstrwq_scatter_offset_p_<supf>v4si): Likewise.
24576         (mve_vstrwq_scatter_offset_<supf>v4si): Likewise.
24577         (mve_vstrwq_scatter_shifted_offset_fv4sf): Likewise.
24578         (mve_vstrwq_scatter_shifted_offset_p_fv4sf): Likewise.
24579         (mve_vstrwq_scatter_shifted_offset_p_<supf>v4si): Likewise.
24580         (mve_vstrwq_scatter_shifted_offset_<supf>v4si): Likewise.
24581         * config/arm/predicates.md (Ri): Define predicate to check immediate
24582         is the range +/-1016 and multiple of 8.
24584 2020-03-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
24585             Mihail Ionescu  <mihail.ionescu@arm.com>
24586             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
24588         * config/arm/arm_mve.h (vst1q_f32): Define macro.
24589         (vst1q_f16): Likewise.
24590         (vst1q_s8): Likewise.
24591         (vst1q_s32): Likewise.
24592         (vst1q_s16): Likewise.
24593         (vst1q_u8): Likewise.
24594         (vst1q_u32): Likewise.
24595         (vst1q_u16): Likewise.
24596         (vstrhq_f16): Likewise.
24597         (vstrhq_scatter_offset_s32): Likewise.
24598         (vstrhq_scatter_offset_s16): Likewise.
24599         (vstrhq_scatter_offset_u32): Likewise.
24600         (vstrhq_scatter_offset_u16): Likewise.
24601         (vstrhq_scatter_offset_p_s32): Likewise.
24602         (vstrhq_scatter_offset_p_s16): Likewise.
24603         (vstrhq_scatter_offset_p_u32): Likewise.
24604         (vstrhq_scatter_offset_p_u16): Likewise.
24605         (vstrhq_scatter_shifted_offset_s32): Likewise.
24606         (vstrhq_scatter_shifted_offset_s16): Likewise.
24607         (vstrhq_scatter_shifted_offset_u32): Likewise.
24608         (vstrhq_scatter_shifted_offset_u16): Likewise.
24609         (vstrhq_scatter_shifted_offset_p_s32): Likewise.
24610         (vstrhq_scatter_shifted_offset_p_s16): Likewise.
24611         (vstrhq_scatter_shifted_offset_p_u32): Likewise.
24612         (vstrhq_scatter_shifted_offset_p_u16): Likewise.
24613         (vstrhq_s32): Likewise.
24614         (vstrhq_s16): Likewise.
24615         (vstrhq_u32): Likewise.
24616         (vstrhq_u16): Likewise.
24617         (vstrhq_p_f16): Likewise.
24618         (vstrhq_p_s32): Likewise.
24619         (vstrhq_p_s16): Likewise.
24620         (vstrhq_p_u32): Likewise.
24621         (vstrhq_p_u16): Likewise.
24622         (vstrwq_f32): Likewise.
24623         (vstrwq_s32): Likewise.
24624         (vstrwq_u32): Likewise.
24625         (vstrwq_p_f32): Likewise.
24626         (vstrwq_p_s32): Likewise.
24627         (vstrwq_p_u32): Likewise.
24628         (__arm_vst1q_s8): Define intrinsic.
24629         (__arm_vst1q_s32): Likewise.
24630         (__arm_vst1q_s16): Likewise.
24631         (__arm_vst1q_u8): Likewise.
24632         (__arm_vst1q_u32): Likewise.
24633         (__arm_vst1q_u16): Likewise.
24634         (__arm_vstrhq_scatter_offset_s32): Likewise.
24635         (__arm_vstrhq_scatter_offset_s16): Likewise.
24636         (__arm_vstrhq_scatter_offset_u32): Likewise.
24637         (__arm_vstrhq_scatter_offset_u16): Likewise.
24638         (__arm_vstrhq_scatter_offset_p_s32): Likewise.
24639         (__arm_vstrhq_scatter_offset_p_s16): Likewise.
24640         (__arm_vstrhq_scatter_offset_p_u32): Likewise.
24641         (__arm_vstrhq_scatter_offset_p_u16): Likewise.
24642         (__arm_vstrhq_scatter_shifted_offset_s32): Likewise.
24643         (__arm_vstrhq_scatter_shifted_offset_s16): Likewise.
24644         (__arm_vstrhq_scatter_shifted_offset_u32): Likewise.
24645         (__arm_vstrhq_scatter_shifted_offset_u16): Likewise.
24646         (__arm_vstrhq_scatter_shifted_offset_p_s32): Likewise.
24647         (__arm_vstrhq_scatter_shifted_offset_p_s16): Likewise.
24648         (__arm_vstrhq_scatter_shifted_offset_p_u32): Likewise.
24649         (__arm_vstrhq_scatter_shifted_offset_p_u16): Likewise.
24650         (__arm_vstrhq_s32): Likewise.
24651         (__arm_vstrhq_s16): Likewise.
24652         (__arm_vstrhq_u32): Likewise.
24653         (__arm_vstrhq_u16): Likewise.
24654         (__arm_vstrhq_p_s32): Likewise.
24655         (__arm_vstrhq_p_s16): Likewise.
24656         (__arm_vstrhq_p_u32): Likewise.
24657         (__arm_vstrhq_p_u16): Likewise.
24658         (__arm_vstrwq_s32): Likewise.
24659         (__arm_vstrwq_u32): Likewise.
24660         (__arm_vstrwq_p_s32): Likewise.
24661         (__arm_vstrwq_p_u32): Likewise.
24662         (__arm_vstrwq_p_f32): Likewise.
24663         (__arm_vstrwq_f32): Likewise.
24664         (__arm_vst1q_f32): Likewise.
24665         (__arm_vst1q_f16): Likewise.
24666         (__arm_vstrhq_f16): Likewise.
24667         (__arm_vstrhq_p_f16): Likewise.
24668         (vst1q): Define polymorphic variant.
24669         (vstrhq): Likewise.
24670         (vstrhq_p): Likewise.
24671         (vstrhq_scatter_offset_p): Likewise.
24672         (vstrhq_scatter_offset): Likewise.
24673         (vstrhq_scatter_shifted_offset_p): Likewise.
24674         (vstrhq_scatter_shifted_offset): Likewise.
24675         (vstrwq_p): Likewise.
24676         (vstrwq): Likewise.
24677         * config/arm/arm_mve_builtins.def (STRS): Use builtin qualifier.
24678         (STRS_P): Likewise.
24679         (STRSS): Likewise.
24680         (STRSS_P): Likewise.
24681         (STRSU): Likewise.
24682         (STRSU_P): Likewise.
24683         (STRU): Likewise.
24684         (STRU_P): Likewise.
24685         * config/arm/mve.md (VST1Q): Define iterator.
24686         (VSTRHSOQ): Likewise.
24687         (VSTRHSSOQ): Likewise.
24688         (VSTRHQ): Likewise.
24689         (VSTRWQ): Likewise.
24690         (mve_vstrhq_fv8hf): Define RTL pattern.
24691         (mve_vstrhq_p_fv8hf): Likewise.
24692         (mve_vstrhq_p_<supf><mode>): Likewise.
24693         (mve_vstrhq_scatter_offset_p_<supf><mode>): Likewise.
24694         (mve_vstrhq_scatter_offset_<supf><mode>): Likewise.
24695         (mve_vstrhq_scatter_shifted_offset_p_<supf><mode>): Likewise.
24696         (mve_vstrhq_scatter_shifted_offset_<supf><mode>): Likewise.
24697         (mve_vstrhq_<supf><mode>): Likewise.
24698         (mve_vstrwq_fv4sf): Likewise.
24699         (mve_vstrwq_p_fv4sf): Likewise.
24700         (mve_vstrwq_p_<supf>v4si): Likewise.
24701         (mve_vstrwq_<supf>v4si): Likewise.
24702         (mve_vst1q_f<mode>): Define expand.
24703         (mve_vst1q_<supf><mode>): Likewise.
24705 2020-03-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
24706             Mihail Ionescu  <mihail.ionescu@arm.com>
24707             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
24709         * config/arm/arm_mve.h (vld1q_s8): Define macro.
24710         (vld1q_s32): Likewise.
24711         (vld1q_s16): Likewise.
24712         (vld1q_u8): Likewise.
24713         (vld1q_u32): Likewise.
24714         (vld1q_u16): Likewise.
24715         (vldrhq_gather_offset_s32): Likewise.
24716         (vldrhq_gather_offset_s16): Likewise.
24717         (vldrhq_gather_offset_u32): Likewise.
24718         (vldrhq_gather_offset_u16): Likewise.
24719         (vldrhq_gather_offset_z_s32): Likewise.
24720         (vldrhq_gather_offset_z_s16): Likewise.
24721         (vldrhq_gather_offset_z_u32): Likewise.
24722         (vldrhq_gather_offset_z_u16): Likewise.
24723         (vldrhq_gather_shifted_offset_s32): Likewise.
24724         (vldrhq_gather_shifted_offset_s16): Likewise.
24725         (vldrhq_gather_shifted_offset_u32): Likewise.
24726         (vldrhq_gather_shifted_offset_u16): Likewise.
24727         (vldrhq_gather_shifted_offset_z_s32): Likewise.
24728         (vldrhq_gather_shifted_offset_z_s16): Likewise.
24729         (vldrhq_gather_shifted_offset_z_u32): Likewise.
24730         (vldrhq_gather_shifted_offset_z_u16): Likewise.
24731         (vldrhq_s32): Likewise.
24732         (vldrhq_s16): Likewise.
24733         (vldrhq_u32): Likewise.
24734         (vldrhq_u16): Likewise.
24735         (vldrhq_z_s32): Likewise.
24736         (vldrhq_z_s16): Likewise.
24737         (vldrhq_z_u32): Likewise.
24738         (vldrhq_z_u16): Likewise.
24739         (vldrwq_s32): Likewise.
24740         (vldrwq_u32): Likewise.
24741         (vldrwq_z_s32): Likewise.
24742         (vldrwq_z_u32): Likewise.
24743         (vld1q_f32): Likewise.
24744         (vld1q_f16): Likewise.
24745         (vldrhq_f16): Likewise.
24746         (vldrhq_z_f16): Likewise.
24747         (vldrwq_f32): Likewise.
24748         (vldrwq_z_f32): Likewise.
24749         (__arm_vld1q_s8): Define intrinsic.
24750         (__arm_vld1q_s32): Likewise.
24751         (__arm_vld1q_s16): Likewise.
24752         (__arm_vld1q_u8): Likewise.
24753         (__arm_vld1q_u32): Likewise.
24754         (__arm_vld1q_u16): Likewise.
24755         (__arm_vldrhq_gather_offset_s32): Likewise.
24756         (__arm_vldrhq_gather_offset_s16): Likewise.
24757         (__arm_vldrhq_gather_offset_u32): Likewise.
24758         (__arm_vldrhq_gather_offset_u16): Likewise.
24759         (__arm_vldrhq_gather_offset_z_s32): Likewise.
24760         (__arm_vldrhq_gather_offset_z_s16): Likewise.
24761         (__arm_vldrhq_gather_offset_z_u32): Likewise.
24762         (__arm_vldrhq_gather_offset_z_u16): Likewise.
24763         (__arm_vldrhq_gather_shifted_offset_s32): Likewise.
24764         (__arm_vldrhq_gather_shifted_offset_s16): Likewise.
24765         (__arm_vldrhq_gather_shifted_offset_u32): Likewise.
24766         (__arm_vldrhq_gather_shifted_offset_u16): Likewise.
24767         (__arm_vldrhq_gather_shifted_offset_z_s32): Likewise.
24768         (__arm_vldrhq_gather_shifted_offset_z_s16): Likewise.
24769         (__arm_vldrhq_gather_shifted_offset_z_u32): Likewise.
24770         (__arm_vldrhq_gather_shifted_offset_z_u16): Likewise.
24771         (__arm_vldrhq_s32): Likewise.
24772         (__arm_vldrhq_s16): Likewise.
24773         (__arm_vldrhq_u32): Likewise.
24774         (__arm_vldrhq_u16): Likewise.
24775         (__arm_vldrhq_z_s32): Likewise.
24776         (__arm_vldrhq_z_s16): Likewise.
24777         (__arm_vldrhq_z_u32): Likewise.
24778         (__arm_vldrhq_z_u16): Likewise.
24779         (__arm_vldrwq_s32): Likewise.
24780         (__arm_vldrwq_u32): Likewise.
24781         (__arm_vldrwq_z_s32): Likewise.
24782         (__arm_vldrwq_z_u32): Likewise.
24783         (__arm_vld1q_f32): Likewise.
24784         (__arm_vld1q_f16): Likewise.
24785         (__arm_vldrwq_f32): Likewise.
24786         (__arm_vldrwq_z_f32): Likewise.
24787         (__arm_vldrhq_z_f16): Likewise.
24788         (__arm_vldrhq_f16): Likewise.
24789         (vld1q): Define polymorphic variant.
24790         (vldrhq_gather_offset): Likewise.
24791         (vldrhq_gather_offset_z): Likewise.
24792         (vldrhq_gather_shifted_offset): Likewise.
24793         (vldrhq_gather_shifted_offset_z): Likewise.
24794         * config/arm/arm_mve_builtins.def (LDRU): Use builtin qualifier.
24795         (LDRS): Likewise.
24796         (LDRU_Z): Likewise.
24797         (LDRS_Z): Likewise.
24798         (LDRGU_Z): Likewise.
24799         (LDRGU): Likewise.
24800         (LDRGS_Z): Likewise.
24801         (LDRGS): Likewise.
24802         * config/arm/mve.md (MVE_H_ELEM): Define mode iterator.
24803         (V_sz_elem1): Likewise.
24804         (VLD1Q): Define iterator.
24805         (VLDRHGOQ): Likewise.
24806         (VLDRHGSOQ): Likewise.
24807         (VLDRHQ): Likewise.
24808         (VLDRWQ): Likewise.
24809         (mve_vldrhq_fv8hf): Define RTL pattern.
24810         (mve_vldrhq_gather_offset_<supf><mode>): Likewise.
24811         (mve_vldrhq_gather_offset_z_<supf><mode>): Likewise.
24812         (mve_vldrhq_gather_shifted_offset_<supf><mode>): Likewise.
24813         (mve_vldrhq_gather_shifted_offset_z_<supf><mode>): Likewise.
24814         (mve_vldrhq_<supf><mode>): Likewise.
24815         (mve_vldrhq_z_fv8hf): Likewise.
24816         (mve_vldrhq_z_<supf><mode>): Likewise.
24817         (mve_vldrwq_fv4sf): Likewise.
24818         (mve_vldrwq_<supf>v4si): Likewise.
24819         (mve_vldrwq_z_fv4sf): Likewise.
24820         (mve_vldrwq_z_<supf>v4si): Likewise.
24821         (mve_vld1q_f<mode>): Define RTL expand pattern.
24822         (mve_vld1q_<supf><mode>): Likewise.
24824 2020-03-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
24825             Mihail Ionescu  <mihail.ionescu@arm.com>
24826             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
24828         * config/arm/arm_mve.h (vld1q_s8): Define macro.
24829         (vld1q_s32): Likewise.
24830         (vld1q_s16): Likewise.
24831         (vld1q_u8): Likewise.
24832         (vld1q_u32): Likewise.
24833         (vld1q_u16): Likewise.
24834         (vldrhq_gather_offset_s32): Likewise.
24835         (vldrhq_gather_offset_s16): Likewise.
24836         (vldrhq_gather_offset_u32): Likewise.
24837         (vldrhq_gather_offset_u16): Likewise.
24838         (vldrhq_gather_offset_z_s32): Likewise.
24839         (vldrhq_gather_offset_z_s16): Likewise.
24840         (vldrhq_gather_offset_z_u32): Likewise.
24841         (vldrhq_gather_offset_z_u16): Likewise.
24842         (vldrhq_gather_shifted_offset_s32): Likewise.
24843         (vldrhq_gather_shifted_offset_s16): Likewise.
24844         (vldrhq_gather_shifted_offset_u32): Likewise.
24845         (vldrhq_gather_shifted_offset_u16): Likewise.
24846         (vldrhq_gather_shifted_offset_z_s32): Likewise.
24847         (vldrhq_gather_shifted_offset_z_s16): Likewise.
24848         (vldrhq_gather_shifted_offset_z_u32): Likewise.
24849         (vldrhq_gather_shifted_offset_z_u16): Likewise.
24850         (vldrhq_s32): Likewise.
24851         (vldrhq_s16): Likewise.
24852         (vldrhq_u32): Likewise.
24853         (vldrhq_u16): Likewise.
24854         (vldrhq_z_s32): Likewise.
24855         (vldrhq_z_s16): Likewise.
24856         (vldrhq_z_u32): Likewise.
24857         (vldrhq_z_u16): Likewise.
24858         (vldrwq_s32): Likewise.
24859         (vldrwq_u32): Likewise.
24860         (vldrwq_z_s32): Likewise.
24861         (vldrwq_z_u32): Likewise.
24862         (vld1q_f32): Likewise.
24863         (vld1q_f16): Likewise.
24864         (vldrhq_f16): Likewise.
24865         (vldrhq_z_f16): Likewise.
24866         (vldrwq_f32): Likewise.
24867         (vldrwq_z_f32): Likewise.
24868         (__arm_vld1q_s8): Define intrinsic.
24869         (__arm_vld1q_s32): Likewise.
24870         (__arm_vld1q_s16): Likewise.
24871         (__arm_vld1q_u8): Likewise.
24872         (__arm_vld1q_u32): Likewise.
24873         (__arm_vld1q_u16): Likewise.
24874         (__arm_vldrhq_gather_offset_s32): Likewise.
24875         (__arm_vldrhq_gather_offset_s16): Likewise.
24876         (__arm_vldrhq_gather_offset_u32): Likewise.
24877         (__arm_vldrhq_gather_offset_u16): Likewise.
24878         (__arm_vldrhq_gather_offset_z_s32): Likewise.
24879         (__arm_vldrhq_gather_offset_z_s16): Likewise.
24880         (__arm_vldrhq_gather_offset_z_u32): Likewise.
24881         (__arm_vldrhq_gather_offset_z_u16): Likewise.
24882         (__arm_vldrhq_gather_shifted_offset_s32): Likewise.
24883         (__arm_vldrhq_gather_shifted_offset_s16): Likewise.
24884         (__arm_vldrhq_gather_shifted_offset_u32): Likewise.
24885         (__arm_vldrhq_gather_shifted_offset_u16): Likewise.
24886         (__arm_vldrhq_gather_shifted_offset_z_s32): Likewise.
24887         (__arm_vldrhq_gather_shifted_offset_z_s16): Likewise.
24888         (__arm_vldrhq_gather_shifted_offset_z_u32): Likewise.
24889         (__arm_vldrhq_gather_shifted_offset_z_u16): Likewise.
24890         (__arm_vldrhq_s32): Likewise.
24891         (__arm_vldrhq_s16): Likewise.
24892         (__arm_vldrhq_u32): Likewise.
24893         (__arm_vldrhq_u16): Likewise.
24894         (__arm_vldrhq_z_s32): Likewise.
24895         (__arm_vldrhq_z_s16): Likewise.
24896         (__arm_vldrhq_z_u32): Likewise.
24897         (__arm_vldrhq_z_u16): Likewise.
24898         (__arm_vldrwq_s32): Likewise.
24899         (__arm_vldrwq_u32): Likewise.
24900         (__arm_vldrwq_z_s32): Likewise.
24901         (__arm_vldrwq_z_u32): Likewise.
24902         (__arm_vld1q_f32): Likewise.
24903         (__arm_vld1q_f16): Likewise.
24904         (__arm_vldrwq_f32): Likewise.
24905         (__arm_vldrwq_z_f32): Likewise.
24906         (__arm_vldrhq_z_f16): Likewise.
24907         (__arm_vldrhq_f16): Likewise.
24908         (vld1q): Define polymorphic variant.
24909         (vldrhq_gather_offset): Likewise.
24910         (vldrhq_gather_offset_z): Likewise.
24911         (vldrhq_gather_shifted_offset): Likewise.
24912         (vldrhq_gather_shifted_offset_z): Likewise.
24913         * config/arm/arm_mve_builtins.def (LDRU): Use builtin qualifier.
24914         (LDRS): Likewise.
24915         (LDRU_Z): Likewise.
24916         (LDRS_Z): Likewise.
24917         (LDRGU_Z): Likewise.
24918         (LDRGU): Likewise.
24919         (LDRGS_Z): Likewise.
24920         (LDRGS): Likewise.
24921         * config/arm/mve.md (MVE_H_ELEM): Define mode iterator.
24922         (V_sz_elem1): Likewise.
24923         (VLD1Q): Define iterator.
24924         (VLDRHGOQ): Likewise.
24925         (VLDRHGSOQ): Likewise.
24926         (VLDRHQ): Likewise.
24927         (VLDRWQ): Likewise.
24928         (mve_vldrhq_fv8hf): Define RTL pattern.
24929         (mve_vldrhq_gather_offset_<supf><mode>): Likewise.
24930         (mve_vldrhq_gather_offset_z_<supf><mode>): Likewise.
24931         (mve_vldrhq_gather_shifted_offset_<supf><mode>): Likewise.
24932         (mve_vldrhq_gather_shifted_offset_z_<supf><mode>): Likewise.
24933         (mve_vldrhq_<supf><mode>): Likewise.
24934         (mve_vldrhq_z_fv8hf): Likewise.
24935         (mve_vldrhq_z_<supf><mode>): Likewise.
24936         (mve_vldrwq_fv4sf): Likewise.
24937         (mve_vldrwq_<supf>v4si): Likewise.
24938         (mve_vldrwq_z_fv4sf): Likewise.
24939         (mve_vldrwq_z_<supf>v4si): Likewise.
24940         (mve_vld1q_f<mode>): Define RTL expand pattern.
24941         (mve_vld1q_<supf><mode>): Likewise.
24943 2020-03-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
24944             Mihail Ionescu  <mihail.ionescu@arm.com>
24945             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
24947         * config/arm/arm-builtins.c (LDRGBS_Z_QUALIFIERS): Define builtin
24948         qualifier.
24949         (LDRGBU_Z_QUALIFIERS): Likewise.
24950         (LDRGS_Z_QUALIFIERS): Likewise.
24951         (LDRGU_Z_QUALIFIERS): Likewise.
24952         (LDRS_Z_QUALIFIERS): Likewise.
24953         (LDRU_Z_QUALIFIERS): Likewise.
24954         * config/arm/arm_mve.h (vldrbq_gather_offset_z_s16): Define macro.
24955         (vldrbq_gather_offset_z_u8): Likewise.
24956         (vldrbq_gather_offset_z_s32): Likewise.
24957         (vldrbq_gather_offset_z_u16): Likewise.
24958         (vldrbq_gather_offset_z_u32): Likewise.
24959         (vldrbq_gather_offset_z_s8): Likewise.
24960         (vldrbq_z_s16): Likewise.
24961         (vldrbq_z_u8): Likewise.
24962         (vldrbq_z_s8): Likewise.
24963         (vldrbq_z_s32): Likewise.
24964         (vldrbq_z_u16): Likewise.
24965         (vldrbq_z_u32): Likewise.
24966         (vldrwq_gather_base_z_u32): Likewise.
24967         (vldrwq_gather_base_z_s32): Likewise.
24968         (__arm_vldrbq_gather_offset_z_s8): Define intrinsic.
24969         (__arm_vldrbq_gather_offset_z_s32): Likewise.
24970         (__arm_vldrbq_gather_offset_z_s16): Likewise.
24971         (__arm_vldrbq_gather_offset_z_u8): Likewise.
24972         (__arm_vldrbq_gather_offset_z_u32): Likewise.
24973         (__arm_vldrbq_gather_offset_z_u16): Likewise.
24974         (__arm_vldrbq_z_s8): Likewise.
24975         (__arm_vldrbq_z_s32): Likewise.
24976         (__arm_vldrbq_z_s16): Likewise.
24977         (__arm_vldrbq_z_u8): Likewise.
24978         (__arm_vldrbq_z_u32): Likewise.
24979         (__arm_vldrbq_z_u16): Likewise.
24980         (__arm_vldrwq_gather_base_z_s32): Likewise.
24981         (__arm_vldrwq_gather_base_z_u32): Likewise.
24982         (vldrbq_gather_offset_z): Define polymorphic variant.
24983         * config/arm/arm_mve_builtins.def (LDRGBS_Z_QUALIFIERS): Use builtin
24984         qualifier.
24985         (LDRGBU_Z_QUALIFIERS): Likewise.
24986         (LDRGS_Z_QUALIFIERS): Likewise.
24987         (LDRGU_Z_QUALIFIERS): Likewise.
24988         (LDRS_Z_QUALIFIERS): Likewise.
24989         (LDRU_Z_QUALIFIERS): Likewise.
24990         * config/arm/mve.md (mve_vldrbq_gather_offset_z_<supf><mode>): Define
24991         RTL pattern.
24992         (mve_vldrbq_z_<supf><mode>): Likewise.
24993         (mve_vldrwq_gather_base_z_<supf>v4si): Likewise.
24995 2020-03-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
24996             Mihail Ionescu  <mihail.ionescu@arm.com>
24997             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
24999         * config/arm/arm-builtins.c (STRS_P_QUALIFIERS): Define builtin
25000         qualifier.
25001         (STRU_P_QUALIFIERS): Likewise.
25002         (STRSU_P_QUALIFIERS): Likewise.
25003         (STRSS_P_QUALIFIERS): Likewise.
25004         (STRSBS_P_QUALIFIERS): Likewise.
25005         (STRSBU_P_QUALIFIERS): Likewise.
25006         * config/arm/arm_mve.h (vstrbq_p_s8): Define macro.
25007         (vstrbq_p_s32): Likewise.
25008         (vstrbq_p_s16): Likewise.
25009         (vstrbq_p_u8): Likewise.
25010         (vstrbq_p_u32): Likewise.
25011         (vstrbq_p_u16): Likewise.
25012         (vstrbq_scatter_offset_p_s8): Likewise.
25013         (vstrbq_scatter_offset_p_s32): Likewise.
25014         (vstrbq_scatter_offset_p_s16): Likewise.
25015         (vstrbq_scatter_offset_p_u8): Likewise.
25016         (vstrbq_scatter_offset_p_u32): Likewise.
25017         (vstrbq_scatter_offset_p_u16): Likewise.
25018         (vstrwq_scatter_base_p_s32): Likewise.
25019         (vstrwq_scatter_base_p_u32): Likewise.
25020         (__arm_vstrbq_p_s8): Define intrinsic.
25021         (__arm_vstrbq_p_s32): Likewise.
25022         (__arm_vstrbq_p_s16): Likewise.
25023         (__arm_vstrbq_p_u8): Likewise.
25024         (__arm_vstrbq_p_u32): Likewise.
25025         (__arm_vstrbq_p_u16): Likewise.
25026         (__arm_vstrbq_scatter_offset_p_s8): Likewise.
25027         (__arm_vstrbq_scatter_offset_p_s32): Likewise.
25028         (__arm_vstrbq_scatter_offset_p_s16): Likewise.
25029         (__arm_vstrbq_scatter_offset_p_u8): Likewise.
25030         (__arm_vstrbq_scatter_offset_p_u32): Likewise.
25031         (__arm_vstrbq_scatter_offset_p_u16): Likewise.
25032         (__arm_vstrwq_scatter_base_p_s32): Likewise.
25033         (__arm_vstrwq_scatter_base_p_u32): Likewise.
25034         (vstrbq_p): Define polymorphic variant.
25035         (vstrbq_scatter_offset_p): Likewise.
25036         (vstrwq_scatter_base_p): Likewise.
25037         * config/arm/arm_mve_builtins.def (STRS_P_QUALIFIERS): Use builtin
25038         qualifier.
25039         (STRU_P_QUALIFIERS): Likewise.
25040         (STRSU_P_QUALIFIERS): Likewise.
25041         (STRSS_P_QUALIFIERS): Likewise.
25042         (STRSBS_P_QUALIFIERS): Likewise.
25043         (STRSBU_P_QUALIFIERS): Likewise.
25044         * config/arm/mve.md (mve_vstrbq_scatter_offset_p_<supf><mode>): Define
25045         RTL pattern.
25046         (mve_vstrwq_scatter_base_p_<supf>v4si): Likewise.
25047         (mve_vstrbq_p_<supf><mode>): Likewise.
25049 2020-03-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
25050             Mihail Ionescu  <mihail.ionescu@arm.com>
25051             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
25053         * config/arm/arm-builtins.c (LDRGU_QUALIFIERS): Define builtin
25054         qualifier.
25055         (LDRGS_QUALIFIERS): Likewise.
25056         (LDRS_QUALIFIERS): Likewise.
25057         (LDRU_QUALIFIERS): Likewise.
25058         (LDRGBS_QUALIFIERS): Likewise.
25059         (LDRGBU_QUALIFIERS): Likewise.
25060         * config/arm/arm_mve.h (vldrbq_gather_offset_u8): Define macro.
25061         (vldrbq_gather_offset_s8): Likewise.
25062         (vldrbq_s8): Likewise.
25063         (vldrbq_u8): Likewise.
25064         (vldrbq_gather_offset_u16): Likewise.
25065         (vldrbq_gather_offset_s16): Likewise.
25066         (vldrbq_s16): Likewise.
25067         (vldrbq_u16): Likewise.
25068         (vldrbq_gather_offset_u32): Likewise.
25069         (vldrbq_gather_offset_s32): Likewise.
25070         (vldrbq_s32): Likewise.
25071         (vldrbq_u32): Likewise.
25072         (vldrwq_gather_base_s32): Likewise.
25073         (vldrwq_gather_base_u32): Likewise.
25074         (__arm_vldrbq_gather_offset_u8): Define intrinsic.
25075         (__arm_vldrbq_gather_offset_s8): Likewise.
25076         (__arm_vldrbq_s8): Likewise.
25077         (__arm_vldrbq_u8): Likewise.
25078         (__arm_vldrbq_gather_offset_u16): Likewise.
25079         (__arm_vldrbq_gather_offset_s16): Likewise.
25080         (__arm_vldrbq_s16): Likewise.
25081         (__arm_vldrbq_u16): Likewise.
25082         (__arm_vldrbq_gather_offset_u32): Likewise.
25083         (__arm_vldrbq_gather_offset_s32): Likewise.
25084         (__arm_vldrbq_s32): Likewise.
25085         (__arm_vldrbq_u32): Likewise.
25086         (__arm_vldrwq_gather_base_s32): Likewise.
25087         (__arm_vldrwq_gather_base_u32): Likewise.
25088         (vldrbq_gather_offset): Define polymorphic variant.
25089         * config/arm/arm_mve_builtins.def (LDRGU_QUALIFIERS): Use builtin
25090         qualifier.
25091         (LDRGS_QUALIFIERS): Likewise.
25092         (LDRS_QUALIFIERS): Likewise.
25093         (LDRU_QUALIFIERS): Likewise.
25094         (LDRGBS_QUALIFIERS): Likewise.
25095         (LDRGBU_QUALIFIERS): Likewise.
25096         * config/arm/mve.md (VLDRBGOQ): Define iterator.
25097         (VLDRBQ): Likewise. 
25098         (VLDRWGBQ): Likewise.
25099         (mve_vldrbq_gather_offset_<supf><mode>): Define RTL pattern.
25100         (mve_vldrbq_<supf><mode>): Likewise.
25101         (mve_vldrwq_gather_base_<supf>v4si): Likewise.
25103 2020-03-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
25104             Mihail Ionescu  <mihail.ionescu@arm.com>
25105             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
25107         * config/arm/arm-builtins.c (STRS_QUALIFIERS): Define builtin qualifier.
25108         (STRU_QUALIFIERS): Likewise.
25109         (STRSS_QUALIFIERS): Likewise.
25110         (STRSU_QUALIFIERS): Likewise.
25111         (STRSBS_QUALIFIERS): Likewise.
25112         (STRSBU_QUALIFIERS): Likewise.
25113         * config/arm/arm_mve.h (vstrbq_s8): Define macro.
25114         (vstrbq_u8): Likewise.
25115         (vstrbq_u16): Likewise.
25116         (vstrbq_scatter_offset_s8): Likewise.
25117         (vstrbq_scatter_offset_u8): Likewise.
25118         (vstrbq_scatter_offset_u16): Likewise.
25119         (vstrbq_s16): Likewise.
25120         (vstrbq_u32): Likewise.
25121         (vstrbq_scatter_offset_s16): Likewise.
25122         (vstrbq_scatter_offset_u32): Likewise.
25123         (vstrbq_s32): Likewise.
25124         (vstrbq_scatter_offset_s32): Likewise.
25125         (vstrwq_scatter_base_s32): Likewise.
25126         (vstrwq_scatter_base_u32): Likewise.
25127         (__arm_vstrbq_scatter_offset_s8): Define intrinsic.
25128         (__arm_vstrbq_scatter_offset_s32): Likewise.
25129         (__arm_vstrbq_scatter_offset_s16): Likewise.
25130         (__arm_vstrbq_scatter_offset_u8): Likewise.
25131         (__arm_vstrbq_scatter_offset_u32): Likewise.
25132         (__arm_vstrbq_scatter_offset_u16): Likewise.
25133         (__arm_vstrbq_s8): Likewise.
25134         (__arm_vstrbq_s32): Likewise.
25135         (__arm_vstrbq_s16): Likewise.
25136         (__arm_vstrbq_u8): Likewise.
25137         (__arm_vstrbq_u32): Likewise.
25138         (__arm_vstrbq_u16): Likewise.
25139         (__arm_vstrwq_scatter_base_s32): Likewise.
25140         (__arm_vstrwq_scatter_base_u32): Likewise.
25141         (vstrbq): Define polymorphic variant.
25142         (vstrbq_scatter_offset): Likewise.
25143         (vstrwq_scatter_base): Likewise.
25144         * config/arm/arm_mve_builtins.def (STRS_QUALIFIERS): Use builtin
25145         qualifier.
25146         (STRU_QUALIFIERS): Likewise.
25147         (STRSS_QUALIFIERS): Likewise.
25148         (STRSU_QUALIFIERS): Likewise.
25149         (STRSBS_QUALIFIERS): Likewise.
25150         (STRSBU_QUALIFIERS): Likewise.
25151         * config/arm/mve.md (MVE_B_ELEM): Define mode attribute iterator.
25152         (VSTRWSBQ): Define iterators.
25153         (VSTRBSOQ): Likewise. 
25154         (VSTRBQ): Likewise.
25155         (mve_vstrbq_<supf><mode>): Define RTL pattern.
25156         (mve_vstrbq_scatter_offset_<supf><mode>): Likewise.
25157         (mve_vstrwq_scatter_base_<supf>v4si): Likewise.
25159 2020-03-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
25160             Mihail Ionescu  <mihail.ionescu@arm.com>
25161             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
25163         * config/arm/arm_mve.h (vabdq_m_f32): Define macro.
25164         (vabdq_m_f16): Likewise.
25165         (vaddq_m_f32): Likewise.
25166         (vaddq_m_f16): Likewise.
25167         (vaddq_m_n_f32): Likewise.
25168         (vaddq_m_n_f16): Likewise.
25169         (vandq_m_f32): Likewise.
25170         (vandq_m_f16): Likewise.
25171         (vbicq_m_f32): Likewise.
25172         (vbicq_m_f16): Likewise.
25173         (vbrsrq_m_n_f32): Likewise.
25174         (vbrsrq_m_n_f16): Likewise.
25175         (vcaddq_rot270_m_f32): Likewise.
25176         (vcaddq_rot270_m_f16): Likewise.
25177         (vcaddq_rot90_m_f32): Likewise.
25178         (vcaddq_rot90_m_f16): Likewise.
25179         (vcmlaq_m_f32): Likewise.
25180         (vcmlaq_m_f16): Likewise.
25181         (vcmlaq_rot180_m_f32): Likewise.
25182         (vcmlaq_rot180_m_f16): Likewise.
25183         (vcmlaq_rot270_m_f32): Likewise.
25184         (vcmlaq_rot270_m_f16): Likewise.
25185         (vcmlaq_rot90_m_f32): Likewise.
25186         (vcmlaq_rot90_m_f16): Likewise.
25187         (vcmulq_m_f32): Likewise.
25188         (vcmulq_m_f16): Likewise.
25189         (vcmulq_rot180_m_f32): Likewise.
25190         (vcmulq_rot180_m_f16): Likewise.
25191         (vcmulq_rot270_m_f32): Likewise.
25192         (vcmulq_rot270_m_f16): Likewise.
25193         (vcmulq_rot90_m_f32): Likewise.
25194         (vcmulq_rot90_m_f16): Likewise.
25195         (vcvtq_m_n_s32_f32): Likewise.
25196         (vcvtq_m_n_s16_f16): Likewise.
25197         (vcvtq_m_n_u32_f32): Likewise.
25198         (vcvtq_m_n_u16_f16): Likewise.
25199         (veorq_m_f32): Likewise.
25200         (veorq_m_f16): Likewise.
25201         (vfmaq_m_f32): Likewise.
25202         (vfmaq_m_f16): Likewise.
25203         (vfmaq_m_n_f32): Likewise.
25204         (vfmaq_m_n_f16): Likewise.
25205         (vfmasq_m_n_f32): Likewise.
25206         (vfmasq_m_n_f16): Likewise.
25207         (vfmsq_m_f32): Likewise.
25208         (vfmsq_m_f16): Likewise.
25209         (vmaxnmq_m_f32): Likewise.
25210         (vmaxnmq_m_f16): Likewise.
25211         (vminnmq_m_f32): Likewise.
25212         (vminnmq_m_f16): Likewise.
25213         (vmulq_m_f32): Likewise.
25214         (vmulq_m_f16): Likewise.
25215         (vmulq_m_n_f32): Likewise.
25216         (vmulq_m_n_f16): Likewise.
25217         (vornq_m_f32): Likewise.
25218         (vornq_m_f16): Likewise.
25219         (vorrq_m_f32): Likewise.
25220         (vorrq_m_f16): Likewise.
25221         (vsubq_m_f32): Likewise.
25222         (vsubq_m_f16): Likewise.
25223         (vsubq_m_n_f32): Likewise.
25224         (vsubq_m_n_f16): Likewise.
25225         (__attribute__): Likewise.
25226         (__arm_vabdq_m_f32): Likewise.
25227         (__arm_vabdq_m_f16): Likewise.
25228         (__arm_vaddq_m_f32): Likewise.
25229         (__arm_vaddq_m_f16): Likewise.
25230         (__arm_vaddq_m_n_f32): Likewise.
25231         (__arm_vaddq_m_n_f16): Likewise.
25232         (__arm_vandq_m_f32): Likewise.
25233         (__arm_vandq_m_f16): Likewise.
25234         (__arm_vbicq_m_f32): Likewise.
25235         (__arm_vbicq_m_f16): Likewise.
25236         (__arm_vbrsrq_m_n_f32): Likewise.
25237         (__arm_vbrsrq_m_n_f16): Likewise.
25238         (__arm_vcaddq_rot270_m_f32): Likewise.
25239         (__arm_vcaddq_rot270_m_f16): Likewise.
25240         (__arm_vcaddq_rot90_m_f32): Likewise.
25241         (__arm_vcaddq_rot90_m_f16): Likewise.
25242         (__arm_vcmlaq_m_f32): Likewise.
25243         (__arm_vcmlaq_m_f16): Likewise.
25244         (__arm_vcmlaq_rot180_m_f32): Likewise.
25245         (__arm_vcmlaq_rot180_m_f16): Likewise.
25246         (__arm_vcmlaq_rot270_m_f32): Likewise.
25247         (__arm_vcmlaq_rot270_m_f16): Likewise.
25248         (__arm_vcmlaq_rot90_m_f32): Likewise.
25249         (__arm_vcmlaq_rot90_m_f16): Likewise.
25250         (__arm_vcmulq_m_f32): Likewise.
25251         (__arm_vcmulq_m_f16): Likewise.
25252         (__arm_vcmulq_rot180_m_f32): Define intrinsic.
25253         (__arm_vcmulq_rot180_m_f16): Likewise.
25254         (__arm_vcmulq_rot270_m_f32): Likewise.
25255         (__arm_vcmulq_rot270_m_f16): Likewise.
25256         (__arm_vcmulq_rot90_m_f32): Likewise.
25257         (__arm_vcmulq_rot90_m_f16): Likewise.
25258         (__arm_vcvtq_m_n_s32_f32): Likewise.
25259         (__arm_vcvtq_m_n_s16_f16): Likewise.
25260         (__arm_vcvtq_m_n_u32_f32): Likewise.
25261         (__arm_vcvtq_m_n_u16_f16): Likewise.
25262         (__arm_veorq_m_f32): Likewise.
25263         (__arm_veorq_m_f16): Likewise.
25264         (__arm_vfmaq_m_f32): Likewise.
25265         (__arm_vfmaq_m_f16): Likewise.
25266         (__arm_vfmaq_m_n_f32): Likewise.
25267         (__arm_vfmaq_m_n_f16): Likewise.
25268         (__arm_vfmasq_m_n_f32): Likewise.
25269         (__arm_vfmasq_m_n_f16): Likewise.
25270         (__arm_vfmsq_m_f32): Likewise.
25271         (__arm_vfmsq_m_f16): Likewise.
25272         (__arm_vmaxnmq_m_f32): Likewise.
25273         (__arm_vmaxnmq_m_f16): Likewise.
25274         (__arm_vminnmq_m_f32): Likewise.
25275         (__arm_vminnmq_m_f16): Likewise.
25276         (__arm_vmulq_m_f32): Likewise.
25277         (__arm_vmulq_m_f16): Likewise.
25278         (__arm_vmulq_m_n_f32): Likewise.
25279         (__arm_vmulq_m_n_f16): Likewise.
25280         (__arm_vornq_m_f32): Likewise.
25281         (__arm_vornq_m_f16): Likewise.
25282         (__arm_vorrq_m_f32): Likewise.
25283         (__arm_vorrq_m_f16): Likewise.
25284         (__arm_vsubq_m_f32): Likewise.
25285         (__arm_vsubq_m_f16): Likewise.
25286         (__arm_vsubq_m_n_f32): Likewise.
25287         (__arm_vsubq_m_n_f16): Likewise.
25288         (vabdq_m): Define polymorphic variant.
25289         (vaddq_m): Likewise.
25290         (vaddq_m_n): Likewise.
25291         (vandq_m): Likewise.
25292         (vbicq_m): Likewise.
25293         (vbrsrq_m_n): Likewise.
25294         (vcaddq_rot270_m): Likewise.
25295         (vcaddq_rot90_m): Likewise.
25296         (vcmlaq_m): Likewise.
25297         (vcmlaq_rot180_m): Likewise.
25298         (vcmlaq_rot270_m): Likewise.
25299         (vcmlaq_rot90_m): Likewise.
25300         (vcmulq_m): Likewise.
25301         (vcmulq_rot180_m): Likewise.
25302         (vcmulq_rot270_m): Likewise.
25303         (vcmulq_rot90_m): Likewise.
25304         (veorq_m): Likewise.
25305         (vfmaq_m): Likewise.
25306         (vfmaq_m_n): Likewise.
25307         (vfmasq_m_n): Likewise.
25308         (vfmsq_m): Likewise.
25309         (vmaxnmq_m): Likewise.
25310         (vminnmq_m): Likewise.
25311         (vmulq_m): Likewise.
25312         (vmulq_m_n): Likewise.
25313         (vornq_m): Likewise.
25314         (vsubq_m): Likewise.
25315         (vsubq_m_n): Likewise.
25316         (vorrq_m): Likewise.
25317         * config/arm/arm_mve_builtins.def (QUADOP_NONE_NONE_NONE_IMM_UNONE): Use
25318         builtin qualifier.
25319         (QUADOP_NONE_NONE_NONE_NONE_UNONE): Likewise.
25320         (QUADOP_UNONE_UNONE_NONE_IMM_UNONE): Likewise.
25321         * config/arm/mve.md (mve_vabdq_m_f<mode>): Define RTL pattern.
25322         (mve_vaddq_m_f<mode>): Likewise.
25323         (mve_vaddq_m_n_f<mode>): Likewise.
25324         (mve_vandq_m_f<mode>): Likewise.
25325         (mve_vbicq_m_f<mode>): Likewise.
25326         (mve_vbrsrq_m_n_f<mode>): Likewise.
25327         (mve_vcaddq_rot270_m_f<mode>): Likewise.
25328         (mve_vcaddq_rot90_m_f<mode>): Likewise.
25329         (mve_vcmlaq_m_f<mode>): Likewise.
25330         (mve_vcmlaq_rot180_m_f<mode>): Likewise.
25331         (mve_vcmlaq_rot270_m_f<mode>): Likewise.
25332         (mve_vcmlaq_rot90_m_f<mode>): Likewise.
25333         (mve_vcmulq_m_f<mode>): Likewise.
25334         (mve_vcmulq_rot180_m_f<mode>): Likewise.
25335         (mve_vcmulq_rot270_m_f<mode>): Likewise.
25336         (mve_vcmulq_rot90_m_f<mode>): Likewise.
25337         (mve_veorq_m_f<mode>): Likewise.
25338         (mve_vfmaq_m_f<mode>): Likewise.
25339         (mve_vfmaq_m_n_f<mode>): Likewise.
25340         (mve_vfmasq_m_n_f<mode>): Likewise.
25341         (mve_vfmsq_m_f<mode>): Likewise.
25342         (mve_vmaxnmq_m_f<mode>): Likewise.
25343         (mve_vminnmq_m_f<mode>): Likewise.
25344         (mve_vmulq_m_f<mode>): Likewise.
25345         (mve_vmulq_m_n_f<mode>): Likewise.
25346         (mve_vornq_m_f<mode>): Likewise.
25347         (mve_vorrq_m_f<mode>): Likewise.
25348         (mve_vsubq_m_f<mode>): Likewise.
25349         (mve_vsubq_m_n_f<mode>): Likewise.
25351 2020-03-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
25352             Mihail Ionescu  <mihail.ionescu@arm.com>
25353             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
25355         * config/arm/arm-protos.h (arm_mve_immediate_check): 
25356         * config/arm/arm.c (arm_mve_immediate_check): Define fuction to check
25357         mode and interger value.
25358         * config/arm/arm_mve.h (vmlaldavaq_p_s32): Define macro.
25359         (vmlaldavaq_p_s16): Likewise.
25360         (vmlaldavaq_p_u32): Likewise.
25361         (vmlaldavaq_p_u16): Likewise.
25362         (vmlaldavaxq_p_s32): Likewise.
25363         (vmlaldavaxq_p_s16): Likewise.
25364         (vmlaldavaxq_p_u32): Likewise.
25365         (vmlaldavaxq_p_u16): Likewise.
25366         (vmlsldavaq_p_s32): Likewise.
25367         (vmlsldavaq_p_s16): Likewise.
25368         (vmlsldavaxq_p_s32): Likewise.
25369         (vmlsldavaxq_p_s16): Likewise.
25370         (vmullbq_poly_m_p8): Likewise.
25371         (vmullbq_poly_m_p16): Likewise.
25372         (vmulltq_poly_m_p8): Likewise.
25373         (vmulltq_poly_m_p16): Likewise.
25374         (vqdmullbq_m_n_s32): Likewise.
25375         (vqdmullbq_m_n_s16): Likewise.
25376         (vqdmullbq_m_s32): Likewise.
25377         (vqdmullbq_m_s16): Likewise.
25378         (vqdmulltq_m_n_s32): Likewise.
25379         (vqdmulltq_m_n_s16): Likewise.
25380         (vqdmulltq_m_s32): Likewise.
25381         (vqdmulltq_m_s16): Likewise.
25382         (vqrshrnbq_m_n_s32): Likewise.
25383         (vqrshrnbq_m_n_s16): Likewise.
25384         (vqrshrnbq_m_n_u32): Likewise.
25385         (vqrshrnbq_m_n_u16): Likewise.
25386         (vqrshrntq_m_n_s32): Likewise.
25387         (vqrshrntq_m_n_s16): Likewise.
25388         (vqrshrntq_m_n_u32): Likewise.
25389         (vqrshrntq_m_n_u16): Likewise.
25390         (vqrshrunbq_m_n_s32): Likewise.
25391         (vqrshrunbq_m_n_s16): Likewise.
25392         (vqrshruntq_m_n_s32): Likewise.
25393         (vqrshruntq_m_n_s16): Likewise.
25394         (vqshrnbq_m_n_s32): Likewise.
25395         (vqshrnbq_m_n_s16): Likewise.
25396         (vqshrnbq_m_n_u32): Likewise.
25397         (vqshrnbq_m_n_u16): Likewise.
25398         (vqshrntq_m_n_s32): Likewise.
25399         (vqshrntq_m_n_s16): Likewise.
25400         (vqshrntq_m_n_u32): Likewise.
25401         (vqshrntq_m_n_u16): Likewise.
25402         (vqshrunbq_m_n_s32): Likewise.
25403         (vqshrunbq_m_n_s16): Likewise.
25404         (vqshruntq_m_n_s32): Likewise.
25405         (vqshruntq_m_n_s16): Likewise.
25406         (vrmlaldavhaq_p_s32): Likewise.
25407         (vrmlaldavhaq_p_u32): Likewise.
25408         (vrmlaldavhaxq_p_s32): Likewise.
25409         (vrmlsldavhaq_p_s32): Likewise.
25410         (vrmlsldavhaxq_p_s32): Likewise.
25411         (vrshrnbq_m_n_s32): Likewise.
25412         (vrshrnbq_m_n_s16): Likewise.
25413         (vrshrnbq_m_n_u32): Likewise.
25414         (vrshrnbq_m_n_u16): Likewise.
25415         (vrshrntq_m_n_s32): Likewise.
25416         (vrshrntq_m_n_s16): Likewise.
25417         (vrshrntq_m_n_u32): Likewise.
25418         (vrshrntq_m_n_u16): Likewise.
25419         (vshllbq_m_n_s8): Likewise.
25420         (vshllbq_m_n_s16): Likewise.
25421         (vshllbq_m_n_u8): Likewise.
25422         (vshllbq_m_n_u16): Likewise.
25423         (vshlltq_m_n_s8): Likewise.
25424         (vshlltq_m_n_s16): Likewise.
25425         (vshlltq_m_n_u8): Likewise.
25426         (vshlltq_m_n_u16): Likewise.
25427         (vshrnbq_m_n_s32): Likewise.
25428         (vshrnbq_m_n_s16): Likewise.
25429         (vshrnbq_m_n_u32): Likewise.
25430         (vshrnbq_m_n_u16): Likewise.
25431         (vshrntq_m_n_s32): Likewise.
25432         (vshrntq_m_n_s16): Likewise.
25433         (vshrntq_m_n_u32): Likewise.
25434         (vshrntq_m_n_u16): Likewise.
25435         (__arm_vmlaldavaq_p_s32): Define intrinsic.
25436         (__arm_vmlaldavaq_p_s16): Likewise.
25437         (__arm_vmlaldavaq_p_u32): Likewise.
25438         (__arm_vmlaldavaq_p_u16): Likewise.
25439         (__arm_vmlaldavaxq_p_s32): Likewise.
25440         (__arm_vmlaldavaxq_p_s16): Likewise.
25441         (__arm_vmlaldavaxq_p_u32): Likewise.
25442         (__arm_vmlaldavaxq_p_u16): Likewise.
25443         (__arm_vmlsldavaq_p_s32): Likewise.
25444         (__arm_vmlsldavaq_p_s16): Likewise.
25445         (__arm_vmlsldavaxq_p_s32): Likewise.
25446         (__arm_vmlsldavaxq_p_s16): Likewise.
25447         (__arm_vmullbq_poly_m_p8): Likewise.
25448         (__arm_vmullbq_poly_m_p16): Likewise.
25449         (__arm_vmulltq_poly_m_p8): Likewise.
25450         (__arm_vmulltq_poly_m_p16): Likewise.
25451         (__arm_vqdmullbq_m_n_s32): Likewise.
25452         (__arm_vqdmullbq_m_n_s16): Likewise.
25453         (__arm_vqdmullbq_m_s32): Likewise.
25454         (__arm_vqdmullbq_m_s16): Likewise.
25455         (__arm_vqdmulltq_m_n_s32): Likewise.
25456         (__arm_vqdmulltq_m_n_s16): Likewise.
25457         (__arm_vqdmulltq_m_s32): Likewise.
25458         (__arm_vqdmulltq_m_s16): Likewise.
25459         (__arm_vqrshrnbq_m_n_s32): Likewise.
25460         (__arm_vqrshrnbq_m_n_s16): Likewise.
25461         (__arm_vqrshrnbq_m_n_u32): Likewise.
25462         (__arm_vqrshrnbq_m_n_u16): Likewise.
25463         (__arm_vqrshrntq_m_n_s32): Likewise.
25464         (__arm_vqrshrntq_m_n_s16): Likewise.
25465         (__arm_vqrshrntq_m_n_u32): Likewise.
25466         (__arm_vqrshrntq_m_n_u16): Likewise.
25467         (__arm_vqrshrunbq_m_n_s32): Likewise.
25468         (__arm_vqrshrunbq_m_n_s16): Likewise.
25469         (__arm_vqrshruntq_m_n_s32): Likewise.
25470         (__arm_vqrshruntq_m_n_s16): Likewise.
25471         (__arm_vqshrnbq_m_n_s32): Likewise.
25472         (__arm_vqshrnbq_m_n_s16): Likewise.
25473         (__arm_vqshrnbq_m_n_u32): Likewise.
25474         (__arm_vqshrnbq_m_n_u16): Likewise.
25475         (__arm_vqshrntq_m_n_s32): Likewise.
25476         (__arm_vqshrntq_m_n_s16): Likewise.
25477         (__arm_vqshrntq_m_n_u32): Likewise.
25478         (__arm_vqshrntq_m_n_u16): Likewise.
25479         (__arm_vqshrunbq_m_n_s32): Likewise.
25480         (__arm_vqshrunbq_m_n_s16): Likewise.
25481         (__arm_vqshruntq_m_n_s32): Likewise.
25482         (__arm_vqshruntq_m_n_s16): Likewise.
25483         (__arm_vrmlaldavhaq_p_s32): Likewise.
25484         (__arm_vrmlaldavhaq_p_u32): Likewise.
25485         (__arm_vrmlaldavhaxq_p_s32): Likewise.
25486         (__arm_vrmlsldavhaq_p_s32): Likewise.
25487         (__arm_vrmlsldavhaxq_p_s32): Likewise.
25488         (__arm_vrshrnbq_m_n_s32): Likewise.
25489         (__arm_vrshrnbq_m_n_s16): Likewise.
25490         (__arm_vrshrnbq_m_n_u32): Likewise.
25491         (__arm_vrshrnbq_m_n_u16): Likewise.
25492         (__arm_vrshrntq_m_n_s32): Likewise.
25493         (__arm_vrshrntq_m_n_s16): Likewise.
25494         (__arm_vrshrntq_m_n_u32): Likewise.
25495         (__arm_vrshrntq_m_n_u16): Likewise.
25496         (__arm_vshllbq_m_n_s8): Likewise.
25497         (__arm_vshllbq_m_n_s16): Likewise.
25498         (__arm_vshllbq_m_n_u8): Likewise.
25499         (__arm_vshllbq_m_n_u16): Likewise.
25500         (__arm_vshlltq_m_n_s8): Likewise.
25501         (__arm_vshlltq_m_n_s16): Likewise.
25502         (__arm_vshlltq_m_n_u8): Likewise.
25503         (__arm_vshlltq_m_n_u16): Likewise.
25504         (__arm_vshrnbq_m_n_s32): Likewise.
25505         (__arm_vshrnbq_m_n_s16): Likewise.
25506         (__arm_vshrnbq_m_n_u32): Likewise.
25507         (__arm_vshrnbq_m_n_u16): Likewise.
25508         (__arm_vshrntq_m_n_s32): Likewise.
25509         (__arm_vshrntq_m_n_s16): Likewise.
25510         (__arm_vshrntq_m_n_u32): Likewise.
25511         (__arm_vshrntq_m_n_u16): Likewise.
25512         (vmullbq_poly_m): Define polymorphic variant.
25513         (vmulltq_poly_m): Likewise.
25514         (vshllbq_m): Likewise.
25515         (vshrntq_m_n): Likewise.
25516         (vshrnbq_m_n): Likewise.
25517         (vshlltq_m_n): Likewise.
25518         (vshllbq_m_n): Likewise.
25519         (vrshrntq_m_n): Likewise.
25520         (vrshrnbq_m_n): Likewise.
25521         (vqshruntq_m_n): Likewise.
25522         (vqshrunbq_m_n): Likewise.
25523         (vqdmullbq_m_n): Likewise.
25524         (vqdmullbq_m): Likewise.
25525         (vqdmulltq_m_n): Likewise.
25526         (vqdmulltq_m): Likewise.
25527         (vqrshrnbq_m_n): Likewise.
25528         (vqrshrntq_m_n): Likewise.
25529         (vqrshrunbq_m_n): Likewise.
25530         (vqrshruntq_m_n): Likewise.
25531         (vqshrnbq_m_n): Likewise.
25532         (vqshrntq_m_n): Likewise.
25533         * config/arm/arm_mve_builtins.def (QUADOP_NONE_NONE_NONE_IMM_UNONE): Use
25534         builtin qualifiers.
25535         (QUADOP_NONE_NONE_NONE_NONE_UNONE): Likewise.
25536         (QUADOP_UNONE_UNONE_NONE_IMM_UNONE): Likewise.
25537         (QUADOP_UNONE_UNONE_UNONE_IMM_UNONE): Likewise.
25538         (QUADOP_UNONE_UNONE_UNONE_UNONE_UNONE): Likewise.
25539         * config/arm/mve.md (VMLALDAVAQ_P): Define iterator.
25540         (VMLALDAVAXQ_P): Likewise.
25541         (VQRSHRNBQ_M_N): Likewise.
25542         (VQRSHRNTQ_M_N): Likewise.
25543         (VQSHRNBQ_M_N): Likewise.
25544         (VQSHRNTQ_M_N): Likewise.
25545         (VRSHRNBQ_M_N): Likewise.
25546         (VRSHRNTQ_M_N): Likewise.
25547         (VSHLLBQ_M_N): Likewise.
25548         (VSHLLTQ_M_N): Likewise.
25549         (VSHRNBQ_M_N): Likewise.
25550         (VSHRNTQ_M_N): Likewise.
25551         (mve_vmlaldavaq_p_<supf><mode>): Define RTL pattern.
25552         (mve_vmlaldavaxq_p_<supf><mode>): Likewise.
25553         (mve_vqrshrnbq_m_n_<supf><mode>): Likewise.
25554         (mve_vqrshrntq_m_n_<supf><mode>): Likewise.
25555         (mve_vqshrnbq_m_n_<supf><mode>): Likewise.
25556         (mve_vqshrntq_m_n_<supf><mode>): Likewise.
25557         (mve_vrmlaldavhaq_p_sv4si): Likewise.
25558         (mve_vrshrnbq_m_n_<supf><mode>): Likewise.
25559         (mve_vrshrntq_m_n_<supf><mode>): Likewise.
25560         (mve_vshllbq_m_n_<supf><mode>): Likewise.
25561         (mve_vshlltq_m_n_<supf><mode>): Likewise.
25562         (mve_vshrnbq_m_n_<supf><mode>): Likewise.
25563         (mve_vshrntq_m_n_<supf><mode>): Likewise.
25564         (mve_vmlsldavaq_p_s<mode>): Likewise.
25565         (mve_vmlsldavaxq_p_s<mode>): Likewise.
25566         (mve_vmullbq_poly_m_p<mode>): Likewise.
25567         (mve_vmulltq_poly_m_p<mode>): Likewise.
25568         (mve_vqdmullbq_m_n_s<mode>): Likewise.
25569         (mve_vqdmullbq_m_s<mode>): Likewise.
25570         (mve_vqdmulltq_m_n_s<mode>): Likewise.
25571         (mve_vqdmulltq_m_s<mode>): Likewise.
25572         (mve_vqrshrunbq_m_n_s<mode>): Likewise.
25573         (mve_vqrshruntq_m_n_s<mode>): Likewise.
25574         (mve_vqshrunbq_m_n_s<mode>): Likewise.
25575         (mve_vqshruntq_m_n_s<mode>): Likewise.
25576         (mve_vrmlaldavhaq_p_uv4si): Likewise.
25577         (mve_vrmlaldavhaxq_p_sv4si): Likewise.
25578         (mve_vrmlsldavhaq_p_sv4si): Likewise.
25579         (mve_vrmlsldavhaxq_p_sv4si): Likewise.
25581 2020-03-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
25582             Mihail Ionescu  <mihail.ionescu@arm.com>
25583             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
25584         
25585         * config/arm/arm_mve.h (vabdq_m_s8): Define macro.
25586         (vabdq_m_s32): Likewise.
25587         (vabdq_m_s16): Likewise.
25588         (vabdq_m_u8): Likewise.
25589         (vabdq_m_u32): Likewise.
25590         (vabdq_m_u16): Likewise.
25591         (vaddq_m_n_s8): Likewise.
25592         (vaddq_m_n_s32): Likewise.
25593         (vaddq_m_n_s16): Likewise.
25594         (vaddq_m_n_u8): Likewise.
25595         (vaddq_m_n_u32): Likewise.
25596         (vaddq_m_n_u16): Likewise.
25597         (vaddq_m_s8): Likewise.
25598         (vaddq_m_s32): Likewise.
25599         (vaddq_m_s16): Likewise.
25600         (vaddq_m_u8): Likewise.
25601         (vaddq_m_u32): Likewise.
25602         (vaddq_m_u16): Likewise.
25603         (vandq_m_s8): Likewise.
25604         (vandq_m_s32): Likewise.
25605         (vandq_m_s16): Likewise.
25606         (vandq_m_u8): Likewise.
25607         (vandq_m_u32): Likewise.
25608         (vandq_m_u16): Likewise.
25609         (vbicq_m_s8): Likewise.
25610         (vbicq_m_s32): Likewise.
25611         (vbicq_m_s16): Likewise.
25612         (vbicq_m_u8): Likewise.
25613         (vbicq_m_u32): Likewise.
25614         (vbicq_m_u16): Likewise.
25615         (vbrsrq_m_n_s8): Likewise.
25616         (vbrsrq_m_n_s32): Likewise.
25617         (vbrsrq_m_n_s16): Likewise.
25618         (vbrsrq_m_n_u8): Likewise.
25619         (vbrsrq_m_n_u32): Likewise.
25620         (vbrsrq_m_n_u16): Likewise.
25621         (vcaddq_rot270_m_s8): Likewise.
25622         (vcaddq_rot270_m_s32): Likewise.
25623         (vcaddq_rot270_m_s16): Likewise.
25624         (vcaddq_rot270_m_u8): Likewise.
25625         (vcaddq_rot270_m_u32): Likewise.
25626         (vcaddq_rot270_m_u16): Likewise.
25627         (vcaddq_rot90_m_s8): Likewise.
25628         (vcaddq_rot90_m_s32): Likewise.
25629         (vcaddq_rot90_m_s16): Likewise.
25630         (vcaddq_rot90_m_u8): Likewise.
25631         (vcaddq_rot90_m_u32): Likewise.
25632         (vcaddq_rot90_m_u16): Likewise.
25633         (veorq_m_s8): Likewise.
25634         (veorq_m_s32): Likewise.
25635         (veorq_m_s16): Likewise.
25636         (veorq_m_u8): Likewise.
25637         (veorq_m_u32): Likewise.
25638         (veorq_m_u16): Likewise.
25639         (vhaddq_m_n_s8): Likewise.
25640         (vhaddq_m_n_s32): Likewise.
25641         (vhaddq_m_n_s16): Likewise.
25642         (vhaddq_m_n_u8): Likewise.
25643         (vhaddq_m_n_u32): Likewise.
25644         (vhaddq_m_n_u16): Likewise.
25645         (vhaddq_m_s8): Likewise.
25646         (vhaddq_m_s32): Likewise.
25647         (vhaddq_m_s16): Likewise.
25648         (vhaddq_m_u8): Likewise.
25649         (vhaddq_m_u32): Likewise.
25650         (vhaddq_m_u16): Likewise.
25651         (vhcaddq_rot270_m_s8): Likewise.
25652         (vhcaddq_rot270_m_s32): Likewise.
25653         (vhcaddq_rot270_m_s16): Likewise.
25654         (vhcaddq_rot90_m_s8): Likewise.
25655         (vhcaddq_rot90_m_s32): Likewise.
25656         (vhcaddq_rot90_m_s16): Likewise.
25657         (vhsubq_m_n_s8): Likewise.
25658         (vhsubq_m_n_s32): Likewise.
25659         (vhsubq_m_n_s16): Likewise.
25660         (vhsubq_m_n_u8): Likewise.
25661         (vhsubq_m_n_u32): Likewise.
25662         (vhsubq_m_n_u16): Likewise.
25663         (vhsubq_m_s8): Likewise.
25664         (vhsubq_m_s32): Likewise.
25665         (vhsubq_m_s16): Likewise.
25666         (vhsubq_m_u8): Likewise.
25667         (vhsubq_m_u32): Likewise.
25668         (vhsubq_m_u16): Likewise.
25669         (vmaxq_m_s8): Likewise.
25670         (vmaxq_m_s32): Likewise.
25671         (vmaxq_m_s16): Likewise.
25672         (vmaxq_m_u8): Likewise.
25673         (vmaxq_m_u32): Likewise.
25674         (vmaxq_m_u16): Likewise.
25675         (vminq_m_s8): Likewise.
25676         (vminq_m_s32): Likewise.
25677         (vminq_m_s16): Likewise.
25678         (vminq_m_u8): Likewise.
25679         (vminq_m_u32): Likewise.
25680         (vminq_m_u16): Likewise.
25681         (vmladavaq_p_s8): Likewise.
25682         (vmladavaq_p_s32): Likewise.
25683         (vmladavaq_p_s16): Likewise.
25684         (vmladavaq_p_u8): Likewise.
25685         (vmladavaq_p_u32): Likewise.
25686         (vmladavaq_p_u16): Likewise.
25687         (vmladavaxq_p_s8): Likewise.
25688         (vmladavaxq_p_s32): Likewise.
25689         (vmladavaxq_p_s16): Likewise.
25690         (vmlaq_m_n_s8): Likewise.
25691         (vmlaq_m_n_s32): Likewise.
25692         (vmlaq_m_n_s16): Likewise.
25693         (vmlaq_m_n_u8): Likewise.
25694         (vmlaq_m_n_u32): Likewise.
25695         (vmlaq_m_n_u16): Likewise.
25696         (vmlasq_m_n_s8): Likewise.
25697         (vmlasq_m_n_s32): Likewise.
25698         (vmlasq_m_n_s16): Likewise.
25699         (vmlasq_m_n_u8): Likewise.
25700         (vmlasq_m_n_u32): Likewise.
25701         (vmlasq_m_n_u16): Likewise.
25702         (vmlsdavaq_p_s8): Likewise.
25703         (vmlsdavaq_p_s32): Likewise.
25704         (vmlsdavaq_p_s16): Likewise.
25705         (vmlsdavaxq_p_s8): Likewise.
25706         (vmlsdavaxq_p_s32): Likewise.
25707         (vmlsdavaxq_p_s16): Likewise.
25708         (vmulhq_m_s8): Likewise.
25709         (vmulhq_m_s32): Likewise.
25710         (vmulhq_m_s16): Likewise.
25711         (vmulhq_m_u8): Likewise.
25712         (vmulhq_m_u32): Likewise.
25713         (vmulhq_m_u16): Likewise.
25714         (vmullbq_int_m_s8): Likewise.
25715         (vmullbq_int_m_s32): Likewise.
25716         (vmullbq_int_m_s16): Likewise.
25717         (vmullbq_int_m_u8): Likewise.
25718         (vmullbq_int_m_u32): Likewise.
25719         (vmullbq_int_m_u16): Likewise.
25720         (vmulltq_int_m_s8): Likewise.
25721         (vmulltq_int_m_s32): Likewise.
25722         (vmulltq_int_m_s16): Likewise.
25723         (vmulltq_int_m_u8): Likewise.
25724         (vmulltq_int_m_u32): Likewise.
25725         (vmulltq_int_m_u16): Likewise.
25726         (vmulq_m_n_s8): Likewise.
25727         (vmulq_m_n_s32): Likewise.
25728         (vmulq_m_n_s16): Likewise.
25729         (vmulq_m_n_u8): Likewise.
25730         (vmulq_m_n_u32): Likewise.
25731         (vmulq_m_n_u16): Likewise.
25732         (vmulq_m_s8): Likewise.
25733         (vmulq_m_s32): Likewise.
25734         (vmulq_m_s16): Likewise.
25735         (vmulq_m_u8): Likewise.
25736         (vmulq_m_u32): Likewise.
25737         (vmulq_m_u16): Likewise.
25738         (vornq_m_s8): Likewise.
25739         (vornq_m_s32): Likewise.
25740         (vornq_m_s16): Likewise.
25741         (vornq_m_u8): Likewise.
25742         (vornq_m_u32): Likewise.
25743         (vornq_m_u16): Likewise.
25744         (vorrq_m_s8): Likewise.
25745         (vorrq_m_s32): Likewise.
25746         (vorrq_m_s16): Likewise.
25747         (vorrq_m_u8): Likewise.
25748         (vorrq_m_u32): Likewise.
25749         (vorrq_m_u16): Likewise.
25750         (vqaddq_m_n_s8): Likewise.
25751         (vqaddq_m_n_s32): Likewise.
25752         (vqaddq_m_n_s16): Likewise.
25753         (vqaddq_m_n_u8): Likewise.
25754         (vqaddq_m_n_u32): Likewise.
25755         (vqaddq_m_n_u16): Likewise.
25756         (vqaddq_m_s8): Likewise.
25757         (vqaddq_m_s32): Likewise.
25758         (vqaddq_m_s16): Likewise.
25759         (vqaddq_m_u8): Likewise.
25760         (vqaddq_m_u32): Likewise.
25761         (vqaddq_m_u16): Likewise.
25762         (vqdmladhq_m_s8): Likewise.
25763         (vqdmladhq_m_s32): Likewise.
25764         (vqdmladhq_m_s16): Likewise.
25765         (vqdmladhxq_m_s8): Likewise.
25766         (vqdmladhxq_m_s32): Likewise.
25767         (vqdmladhxq_m_s16): Likewise.
25768         (vqdmlahq_m_n_s8): Likewise.
25769         (vqdmlahq_m_n_s32): Likewise.
25770         (vqdmlahq_m_n_s16): Likewise.
25771         (vqdmlahq_m_n_u8): Likewise.
25772         (vqdmlahq_m_n_u32): Likewise.
25773         (vqdmlahq_m_n_u16): Likewise.
25774         (vqdmlsdhq_m_s8): Likewise.
25775         (vqdmlsdhq_m_s32): Likewise.
25776         (vqdmlsdhq_m_s16): Likewise.
25777         (vqdmlsdhxq_m_s8): Likewise.
25778         (vqdmlsdhxq_m_s32): Likewise.
25779         (vqdmlsdhxq_m_s16): Likewise.
25780         (vqdmulhq_m_n_s8): Likewise.
25781         (vqdmulhq_m_n_s32): Likewise.
25782         (vqdmulhq_m_n_s16): Likewise.
25783         (vqdmulhq_m_s8): Likewise.
25784         (vqdmulhq_m_s32): Likewise.
25785         (vqdmulhq_m_s16): Likewise.
25786         (vqrdmladhq_m_s8): Likewise.
25787         (vqrdmladhq_m_s32): Likewise.
25788         (vqrdmladhq_m_s16): Likewise.
25789         (vqrdmladhxq_m_s8): Likewise.
25790         (vqrdmladhxq_m_s32): Likewise.
25791         (vqrdmladhxq_m_s16): Likewise.
25792         (vqrdmlahq_m_n_s8): Likewise.
25793         (vqrdmlahq_m_n_s32): Likewise.
25794         (vqrdmlahq_m_n_s16): Likewise.
25795         (vqrdmlahq_m_n_u8): Likewise.
25796         (vqrdmlahq_m_n_u32): Likewise.
25797         (vqrdmlahq_m_n_u16): Likewise.
25798         (vqrdmlashq_m_n_s8): Likewise.
25799         (vqrdmlashq_m_n_s32): Likewise.
25800         (vqrdmlashq_m_n_s16): Likewise.
25801         (vqrdmlashq_m_n_u8): Likewise.
25802         (vqrdmlashq_m_n_u32): Likewise.
25803         (vqrdmlashq_m_n_u16): Likewise.
25804         (vqrdmlsdhq_m_s8): Likewise.
25805         (vqrdmlsdhq_m_s32): Likewise.
25806         (vqrdmlsdhq_m_s16): Likewise.
25807         (vqrdmlsdhxq_m_s8): Likewise.
25808         (vqrdmlsdhxq_m_s32): Likewise.
25809         (vqrdmlsdhxq_m_s16): Likewise.
25810         (vqrdmulhq_m_n_s8): Likewise.
25811         (vqrdmulhq_m_n_s32): Likewise.
25812         (vqrdmulhq_m_n_s16): Likewise.
25813         (vqrdmulhq_m_s8): Likewise.
25814         (vqrdmulhq_m_s32): Likewise.
25815         (vqrdmulhq_m_s16): Likewise.
25816         (vqrshlq_m_s8): Likewise.
25817         (vqrshlq_m_s32): Likewise.
25818         (vqrshlq_m_s16): Likewise.
25819         (vqrshlq_m_u8): Likewise.
25820         (vqrshlq_m_u32): Likewise.
25821         (vqrshlq_m_u16): Likewise.
25822         (vqshlq_m_n_s8): Likewise.
25823         (vqshlq_m_n_s32): Likewise.
25824         (vqshlq_m_n_s16): Likewise.
25825         (vqshlq_m_n_u8): Likewise.
25826         (vqshlq_m_n_u32): Likewise.
25827         (vqshlq_m_n_u16): Likewise.
25828         (vqshlq_m_s8): Likewise.
25829         (vqshlq_m_s32): Likewise.
25830         (vqshlq_m_s16): Likewise.
25831         (vqshlq_m_u8): Likewise.
25832         (vqshlq_m_u32): Likewise.
25833         (vqshlq_m_u16): Likewise.
25834         (vqsubq_m_n_s8): Likewise.
25835         (vqsubq_m_n_s32): Likewise.
25836         (vqsubq_m_n_s16): Likewise.
25837         (vqsubq_m_n_u8): Likewise.
25838         (vqsubq_m_n_u32): Likewise.
25839         (vqsubq_m_n_u16): Likewise.
25840         (vqsubq_m_s8): Likewise.
25841         (vqsubq_m_s32): Likewise.
25842         (vqsubq_m_s16): Likewise.
25843         (vqsubq_m_u8): Likewise.
25844         (vqsubq_m_u32): Likewise.
25845         (vqsubq_m_u16): Likewise.
25846         (vrhaddq_m_s8): Likewise.
25847         (vrhaddq_m_s32): Likewise.
25848         (vrhaddq_m_s16): Likewise.
25849         (vrhaddq_m_u8): Likewise.
25850         (vrhaddq_m_u32): Likewise.
25851         (vrhaddq_m_u16): Likewise.
25852         (vrmulhq_m_s8): Likewise.
25853         (vrmulhq_m_s32): Likewise.
25854         (vrmulhq_m_s16): Likewise.
25855         (vrmulhq_m_u8): Likewise.
25856         (vrmulhq_m_u32): Likewise.
25857         (vrmulhq_m_u16): Likewise.
25858         (vrshlq_m_s8): Likewise.
25859         (vrshlq_m_s32): Likewise.
25860         (vrshlq_m_s16): Likewise.
25861         (vrshlq_m_u8): Likewise.
25862         (vrshlq_m_u32): Likewise.
25863         (vrshlq_m_u16): Likewise.
25864         (vrshrq_m_n_s8): Likewise.
25865         (vrshrq_m_n_s32): Likewise.
25866         (vrshrq_m_n_s16): Likewise.
25867         (vrshrq_m_n_u8): Likewise.
25868         (vrshrq_m_n_u32): Likewise.
25869         (vrshrq_m_n_u16): Likewise.
25870         (vshlq_m_n_s8): Likewise.
25871         (vshlq_m_n_s32): Likewise.
25872         (vshlq_m_n_s16): Likewise.
25873         (vshlq_m_n_u8): Likewise.
25874         (vshlq_m_n_u32): Likewise.
25875         (vshlq_m_n_u16): Likewise.
25876         (vshrq_m_n_s8): Likewise.
25877         (vshrq_m_n_s32): Likewise.
25878         (vshrq_m_n_s16): Likewise.
25879         (vshrq_m_n_u8): Likewise.
25880         (vshrq_m_n_u32): Likewise.
25881         (vshrq_m_n_u16): Likewise.
25882         (vsliq_m_n_s8): Likewise.
25883         (vsliq_m_n_s32): Likewise.
25884         (vsliq_m_n_s16): Likewise.
25885         (vsliq_m_n_u8): Likewise.
25886         (vsliq_m_n_u32): Likewise.
25887         (vsliq_m_n_u16): Likewise.
25888         (vsubq_m_n_s8): Likewise.
25889         (vsubq_m_n_s32): Likewise.
25890         (vsubq_m_n_s16): Likewise.
25891         (vsubq_m_n_u8): Likewise.
25892         (vsubq_m_n_u32): Likewise.
25893         (vsubq_m_n_u16): Likewise.
25894         (__arm_vabdq_m_s8): Define intrinsic.
25895         (__arm_vabdq_m_s32): Likewise.
25896         (__arm_vabdq_m_s16): Likewise.
25897         (__arm_vabdq_m_u8): Likewise.
25898         (__arm_vabdq_m_u32): Likewise.
25899         (__arm_vabdq_m_u16): Likewise.
25900         (__arm_vaddq_m_n_s8): Likewise.
25901         (__arm_vaddq_m_n_s32): Likewise.
25902         (__arm_vaddq_m_n_s16): Likewise.
25903         (__arm_vaddq_m_n_u8): Likewise.
25904         (__arm_vaddq_m_n_u32): Likewise.
25905         (__arm_vaddq_m_n_u16): Likewise.
25906         (__arm_vaddq_m_s8): Likewise.
25907         (__arm_vaddq_m_s32): Likewise.
25908         (__arm_vaddq_m_s16): Likewise.
25909         (__arm_vaddq_m_u8): Likewise.
25910         (__arm_vaddq_m_u32): Likewise.
25911         (__arm_vaddq_m_u16): Likewise.
25912         (__arm_vandq_m_s8): Likewise.
25913         (__arm_vandq_m_s32): Likewise.
25914         (__arm_vandq_m_s16): Likewise.
25915         (__arm_vandq_m_u8): Likewise.
25916         (__arm_vandq_m_u32): Likewise.
25917         (__arm_vandq_m_u16): Likewise.
25918         (__arm_vbicq_m_s8): Likewise.
25919         (__arm_vbicq_m_s32): Likewise.
25920         (__arm_vbicq_m_s16): Likewise.
25921         (__arm_vbicq_m_u8): Likewise.
25922         (__arm_vbicq_m_u32): Likewise.
25923         (__arm_vbicq_m_u16): Likewise.
25924         (__arm_vbrsrq_m_n_s8): Likewise.
25925         (__arm_vbrsrq_m_n_s32): Likewise.
25926         (__arm_vbrsrq_m_n_s16): Likewise.
25927         (__arm_vbrsrq_m_n_u8): Likewise.
25928         (__arm_vbrsrq_m_n_u32): Likewise.
25929         (__arm_vbrsrq_m_n_u16): Likewise.
25930         (__arm_vcaddq_rot270_m_s8): Likewise.
25931         (__arm_vcaddq_rot270_m_s32): Likewise.
25932         (__arm_vcaddq_rot270_m_s16): Likewise.
25933         (__arm_vcaddq_rot270_m_u8): Likewise.
25934         (__arm_vcaddq_rot270_m_u32): Likewise.
25935         (__arm_vcaddq_rot270_m_u16): Likewise.
25936         (__arm_vcaddq_rot90_m_s8): Likewise.
25937         (__arm_vcaddq_rot90_m_s32): Likewise.
25938         (__arm_vcaddq_rot90_m_s16): Likewise.
25939         (__arm_vcaddq_rot90_m_u8): Likewise.
25940         (__arm_vcaddq_rot90_m_u32): Likewise.
25941         (__arm_vcaddq_rot90_m_u16): Likewise.
25942         (__arm_veorq_m_s8): Likewise.
25943         (__arm_veorq_m_s32): Likewise.
25944         (__arm_veorq_m_s16): Likewise.
25945         (__arm_veorq_m_u8): Likewise.
25946         (__arm_veorq_m_u32): Likewise.
25947         (__arm_veorq_m_u16): Likewise.
25948         (__arm_vhaddq_m_n_s8): Likewise.
25949         (__arm_vhaddq_m_n_s32): Likewise.
25950         (__arm_vhaddq_m_n_s16): Likewise.
25951         (__arm_vhaddq_m_n_u8): Likewise.
25952         (__arm_vhaddq_m_n_u32): Likewise.
25953         (__arm_vhaddq_m_n_u16): Likewise.
25954         (__arm_vhaddq_m_s8): Likewise.
25955         (__arm_vhaddq_m_s32): Likewise.
25956         (__arm_vhaddq_m_s16): Likewise.
25957         (__arm_vhaddq_m_u8): Likewise.
25958         (__arm_vhaddq_m_u32): Likewise.
25959         (__arm_vhaddq_m_u16): Likewise.
25960         (__arm_vhcaddq_rot270_m_s8): Likewise.
25961         (__arm_vhcaddq_rot270_m_s32): Likewise.
25962         (__arm_vhcaddq_rot270_m_s16): Likewise.
25963         (__arm_vhcaddq_rot90_m_s8): Likewise.
25964         (__arm_vhcaddq_rot90_m_s32): Likewise.
25965         (__arm_vhcaddq_rot90_m_s16): Likewise.
25966         (__arm_vhsubq_m_n_s8): Likewise.
25967         (__arm_vhsubq_m_n_s32): Likewise.
25968         (__arm_vhsubq_m_n_s16): Likewise.
25969         (__arm_vhsubq_m_n_u8): Likewise.
25970         (__arm_vhsubq_m_n_u32): Likewise.
25971         (__arm_vhsubq_m_n_u16): Likewise.
25972         (__arm_vhsubq_m_s8): Likewise.
25973         (__arm_vhsubq_m_s32): Likewise.
25974         (__arm_vhsubq_m_s16): Likewise.
25975         (__arm_vhsubq_m_u8): Likewise.
25976         (__arm_vhsubq_m_u32): Likewise.
25977         (__arm_vhsubq_m_u16): Likewise.
25978         (__arm_vmaxq_m_s8): Likewise.
25979         (__arm_vmaxq_m_s32): Likewise.
25980         (__arm_vmaxq_m_s16): Likewise.
25981         (__arm_vmaxq_m_u8): Likewise.
25982         (__arm_vmaxq_m_u32): Likewise.
25983         (__arm_vmaxq_m_u16): Likewise.
25984         (__arm_vminq_m_s8): Likewise.
25985         (__arm_vminq_m_s32): Likewise.
25986         (__arm_vminq_m_s16): Likewise.
25987         (__arm_vminq_m_u8): Likewise.
25988         (__arm_vminq_m_u32): Likewise.
25989         (__arm_vminq_m_u16): Likewise.
25990         (__arm_vmladavaq_p_s8): Likewise.
25991         (__arm_vmladavaq_p_s32): Likewise.
25992         (__arm_vmladavaq_p_s16): Likewise.
25993         (__arm_vmladavaq_p_u8): Likewise.
25994         (__arm_vmladavaq_p_u32): Likewise.
25995         (__arm_vmladavaq_p_u16): Likewise.
25996         (__arm_vmladavaxq_p_s8): Likewise.
25997         (__arm_vmladavaxq_p_s32): Likewise.
25998         (__arm_vmladavaxq_p_s16): Likewise.
25999         (__arm_vmlaq_m_n_s8): Likewise.
26000         (__arm_vmlaq_m_n_s32): Likewise.
26001         (__arm_vmlaq_m_n_s16): Likewise.
26002         (__arm_vmlaq_m_n_u8): Likewise.
26003         (__arm_vmlaq_m_n_u32): Likewise.
26004         (__arm_vmlaq_m_n_u16): Likewise.
26005         (__arm_vmlasq_m_n_s8): Likewise.
26006         (__arm_vmlasq_m_n_s32): Likewise.
26007         (__arm_vmlasq_m_n_s16): Likewise.
26008         (__arm_vmlasq_m_n_u8): Likewise.
26009         (__arm_vmlasq_m_n_u32): Likewise.
26010         (__arm_vmlasq_m_n_u16): Likewise.
26011         (__arm_vmlsdavaq_p_s8): Likewise.
26012         (__arm_vmlsdavaq_p_s32): Likewise.
26013         (__arm_vmlsdavaq_p_s16): Likewise.
26014         (__arm_vmlsdavaxq_p_s8): Likewise.
26015         (__arm_vmlsdavaxq_p_s32): Likewise.
26016         (__arm_vmlsdavaxq_p_s16): Likewise.
26017         (__arm_vmulhq_m_s8): Likewise.
26018         (__arm_vmulhq_m_s32): Likewise.
26019         (__arm_vmulhq_m_s16): Likewise.
26020         (__arm_vmulhq_m_u8): Likewise.
26021         (__arm_vmulhq_m_u32): Likewise.
26022         (__arm_vmulhq_m_u16): Likewise.
26023         (__arm_vmullbq_int_m_s8): Likewise.
26024         (__arm_vmullbq_int_m_s32): Likewise.
26025         (__arm_vmullbq_int_m_s16): Likewise.
26026         (__arm_vmullbq_int_m_u8): Likewise.
26027         (__arm_vmullbq_int_m_u32): Likewise.
26028         (__arm_vmullbq_int_m_u16): Likewise.
26029         (__arm_vmulltq_int_m_s8): Likewise.
26030         (__arm_vmulltq_int_m_s32): Likewise.
26031         (__arm_vmulltq_int_m_s16): Likewise.
26032         (__arm_vmulltq_int_m_u8): Likewise.
26033         (__arm_vmulltq_int_m_u32): Likewise.
26034         (__arm_vmulltq_int_m_u16): Likewise.
26035         (__arm_vmulq_m_n_s8): Likewise.
26036         (__arm_vmulq_m_n_s32): Likewise.
26037         (__arm_vmulq_m_n_s16): Likewise.
26038         (__arm_vmulq_m_n_u8): Likewise.
26039         (__arm_vmulq_m_n_u32): Likewise.
26040         (__arm_vmulq_m_n_u16): Likewise.
26041         (__arm_vmulq_m_s8): Likewise.
26042         (__arm_vmulq_m_s32): Likewise.
26043         (__arm_vmulq_m_s16): Likewise.
26044         (__arm_vmulq_m_u8): Likewise.
26045         (__arm_vmulq_m_u32): Likewise.
26046         (__arm_vmulq_m_u16): Likewise.
26047         (__arm_vornq_m_s8): Likewise.
26048         (__arm_vornq_m_s32): Likewise.
26049         (__arm_vornq_m_s16): Likewise.
26050         (__arm_vornq_m_u8): Likewise.
26051         (__arm_vornq_m_u32): Likewise.
26052         (__arm_vornq_m_u16): Likewise.
26053         (__arm_vorrq_m_s8): Likewise.
26054         (__arm_vorrq_m_s32): Likewise.
26055         (__arm_vorrq_m_s16): Likewise.
26056         (__arm_vorrq_m_u8): Likewise.
26057         (__arm_vorrq_m_u32): Likewise.
26058         (__arm_vorrq_m_u16): Likewise.
26059         (__arm_vqaddq_m_n_s8): Likewise.
26060         (__arm_vqaddq_m_n_s32): Likewise.
26061         (__arm_vqaddq_m_n_s16): Likewise.
26062         (__arm_vqaddq_m_n_u8): Likewise.
26063         (__arm_vqaddq_m_n_u32): Likewise.
26064         (__arm_vqaddq_m_n_u16): Likewise.
26065         (__arm_vqaddq_m_s8): Likewise.
26066         (__arm_vqaddq_m_s32): Likewise.
26067         (__arm_vqaddq_m_s16): Likewise.
26068         (__arm_vqaddq_m_u8): Likewise.
26069         (__arm_vqaddq_m_u32): Likewise.
26070         (__arm_vqaddq_m_u16): Likewise.
26071         (__arm_vqdmladhq_m_s8): Likewise.
26072         (__arm_vqdmladhq_m_s32): Likewise.
26073         (__arm_vqdmladhq_m_s16): Likewise.
26074         (__arm_vqdmladhxq_m_s8): Likewise.
26075         (__arm_vqdmladhxq_m_s32): Likewise.
26076         (__arm_vqdmladhxq_m_s16): Likewise.
26077         (__arm_vqdmlahq_m_n_s8): Likewise.
26078         (__arm_vqdmlahq_m_n_s32): Likewise.
26079         (__arm_vqdmlahq_m_n_s16): Likewise.
26080         (__arm_vqdmlahq_m_n_u8): Likewise.
26081         (__arm_vqdmlahq_m_n_u32): Likewise.
26082         (__arm_vqdmlahq_m_n_u16): Likewise.
26083         (__arm_vqdmlsdhq_m_s8): Likewise.
26084         (__arm_vqdmlsdhq_m_s32): Likewise.
26085         (__arm_vqdmlsdhq_m_s16): Likewise.
26086         (__arm_vqdmlsdhxq_m_s8): Likewise.
26087         (__arm_vqdmlsdhxq_m_s32): Likewise.
26088         (__arm_vqdmlsdhxq_m_s16): Likewise.
26089         (__arm_vqdmulhq_m_n_s8): Likewise.
26090         (__arm_vqdmulhq_m_n_s32): Likewise.
26091         (__arm_vqdmulhq_m_n_s16): Likewise.
26092         (__arm_vqdmulhq_m_s8): Likewise.
26093         (__arm_vqdmulhq_m_s32): Likewise.
26094         (__arm_vqdmulhq_m_s16): Likewise.
26095         (__arm_vqrdmladhq_m_s8): Likewise.
26096         (__arm_vqrdmladhq_m_s32): Likewise.
26097         (__arm_vqrdmladhq_m_s16): Likewise.
26098         (__arm_vqrdmladhxq_m_s8): Likewise.
26099         (__arm_vqrdmladhxq_m_s32): Likewise.
26100         (__arm_vqrdmladhxq_m_s16): Likewise.
26101         (__arm_vqrdmlahq_m_n_s8): Likewise.
26102         (__arm_vqrdmlahq_m_n_s32): Likewise.
26103         (__arm_vqrdmlahq_m_n_s16): Likewise.
26104         (__arm_vqrdmlahq_m_n_u8): Likewise.
26105         (__arm_vqrdmlahq_m_n_u32): Likewise.
26106         (__arm_vqrdmlahq_m_n_u16): Likewise.
26107         (__arm_vqrdmlashq_m_n_s8): Likewise.
26108         (__arm_vqrdmlashq_m_n_s32): Likewise.
26109         (__arm_vqrdmlashq_m_n_s16): Likewise.
26110         (__arm_vqrdmlashq_m_n_u8): Likewise.
26111         (__arm_vqrdmlashq_m_n_u32): Likewise.
26112         (__arm_vqrdmlashq_m_n_u16): Likewise.
26113         (__arm_vqrdmlsdhq_m_s8): Likewise.
26114         (__arm_vqrdmlsdhq_m_s32): Likewise.
26115         (__arm_vqrdmlsdhq_m_s16): Likewise.
26116         (__arm_vqrdmlsdhxq_m_s8): Likewise.
26117         (__arm_vqrdmlsdhxq_m_s32): Likewise.
26118         (__arm_vqrdmlsdhxq_m_s16): Likewise.
26119         (__arm_vqrdmulhq_m_n_s8): Likewise.
26120         (__arm_vqrdmulhq_m_n_s32): Likewise.
26121         (__arm_vqrdmulhq_m_n_s16): Likewise.
26122         (__arm_vqrdmulhq_m_s8): Likewise.
26123         (__arm_vqrdmulhq_m_s32): Likewise.
26124         (__arm_vqrdmulhq_m_s16): Likewise.
26125         (__arm_vqrshlq_m_s8): Likewise.
26126         (__arm_vqrshlq_m_s32): Likewise.
26127         (__arm_vqrshlq_m_s16): Likewise.
26128         (__arm_vqrshlq_m_u8): Likewise.
26129         (__arm_vqrshlq_m_u32): Likewise.
26130         (__arm_vqrshlq_m_u16): Likewise.
26131         (__arm_vqshlq_m_n_s8): Likewise.
26132         (__arm_vqshlq_m_n_s32): Likewise.
26133         (__arm_vqshlq_m_n_s16): Likewise.
26134         (__arm_vqshlq_m_n_u8): Likewise.
26135         (__arm_vqshlq_m_n_u32): Likewise.
26136         (__arm_vqshlq_m_n_u16): Likewise.
26137         (__arm_vqshlq_m_s8): Likewise.
26138         (__arm_vqshlq_m_s32): Likewise.
26139         (__arm_vqshlq_m_s16): Likewise.
26140         (__arm_vqshlq_m_u8): Likewise.
26141         (__arm_vqshlq_m_u32): Likewise.
26142         (__arm_vqshlq_m_u16): Likewise.
26143         (__arm_vqsubq_m_n_s8): Likewise.
26144         (__arm_vqsubq_m_n_s32): Likewise.
26145         (__arm_vqsubq_m_n_s16): Likewise.
26146         (__arm_vqsubq_m_n_u8): Likewise.
26147         (__arm_vqsubq_m_n_u32): Likewise.
26148         (__arm_vqsubq_m_n_u16): Likewise.
26149         (__arm_vqsubq_m_s8): Likewise.
26150         (__arm_vqsubq_m_s32): Likewise.
26151         (__arm_vqsubq_m_s16): Likewise.
26152         (__arm_vqsubq_m_u8): Likewise.
26153         (__arm_vqsubq_m_u32): Likewise.
26154         (__arm_vqsubq_m_u16): Likewise.
26155         (__arm_vrhaddq_m_s8): Likewise.
26156         (__arm_vrhaddq_m_s32): Likewise.
26157         (__arm_vrhaddq_m_s16): Likewise.
26158         (__arm_vrhaddq_m_u8): Likewise.
26159         (__arm_vrhaddq_m_u32): Likewise.
26160         (__arm_vrhaddq_m_u16): Likewise.
26161         (__arm_vrmulhq_m_s8): Likewise.
26162         (__arm_vrmulhq_m_s32): Likewise.
26163         (__arm_vrmulhq_m_s16): Likewise.
26164         (__arm_vrmulhq_m_u8): Likewise.
26165         (__arm_vrmulhq_m_u32): Likewise.
26166         (__arm_vrmulhq_m_u16): Likewise.
26167         (__arm_vrshlq_m_s8): Likewise.
26168         (__arm_vrshlq_m_s32): Likewise.
26169         (__arm_vrshlq_m_s16): Likewise.
26170         (__arm_vrshlq_m_u8): Likewise.
26171         (__arm_vrshlq_m_u32): Likewise.
26172         (__arm_vrshlq_m_u16): Likewise.
26173         (__arm_vrshrq_m_n_s8): Likewise.
26174         (__arm_vrshrq_m_n_s32): Likewise.
26175         (__arm_vrshrq_m_n_s16): Likewise.
26176         (__arm_vrshrq_m_n_u8): Likewise.
26177         (__arm_vrshrq_m_n_u32): Likewise.
26178         (__arm_vrshrq_m_n_u16): Likewise.
26179         (__arm_vshlq_m_n_s8): Likewise.
26180         (__arm_vshlq_m_n_s32): Likewise.
26181         (__arm_vshlq_m_n_s16): Likewise.
26182         (__arm_vshlq_m_n_u8): Likewise.
26183         (__arm_vshlq_m_n_u32): Likewise.
26184         (__arm_vshlq_m_n_u16): Likewise.
26185         (__arm_vshrq_m_n_s8): Likewise.
26186         (__arm_vshrq_m_n_s32): Likewise.
26187         (__arm_vshrq_m_n_s16): Likewise.
26188         (__arm_vshrq_m_n_u8): Likewise.
26189         (__arm_vshrq_m_n_u32): Likewise.
26190         (__arm_vshrq_m_n_u16): Likewise.
26191         (__arm_vsliq_m_n_s8): Likewise.
26192         (__arm_vsliq_m_n_s32): Likewise.
26193         (__arm_vsliq_m_n_s16): Likewise.
26194         (__arm_vsliq_m_n_u8): Likewise.
26195         (__arm_vsliq_m_n_u32): Likewise.
26196         (__arm_vsliq_m_n_u16): Likewise.
26197         (__arm_vsubq_m_n_s8): Likewise.
26198         (__arm_vsubq_m_n_s32): Likewise.
26199         (__arm_vsubq_m_n_s16): Likewise.
26200         (__arm_vsubq_m_n_u8): Likewise.
26201         (__arm_vsubq_m_n_u32): Likewise.
26202         (__arm_vsubq_m_n_u16): Likewise.
26203         (vqdmladhq_m): Define polymorphic variant.
26204         (vqdmladhxq_m): Likewise.
26205         (vqdmlsdhq_m): Likewise.
26206         (vqdmlsdhxq_m): Likewise.
26207         (vabdq_m): Likewise.
26208         (vandq_m): Likewise.
26209         (vbicq_m): Likewise.
26210         (vbrsrq_m_n): Likewise.
26211         (vcaddq_rot270_m): Likewise.
26212         (vcaddq_rot90_m): Likewise.
26213         (veorq_m): Likewise.
26214         (vmaxq_m): Likewise.
26215         (vminq_m): Likewise.
26216         (vmladavaq_p): Likewise.
26217         (vmlaq_m_n): Likewise.
26218         (vmlasq_m_n): Likewise.
26219         (vmulhq_m): Likewise.
26220         (vmullbq_int_m): Likewise.
26221         (vmulltq_int_m): Likewise.
26222         (vornq_m): Likewise.
26223         (vorrq_m): Likewise.
26224         (vqdmlahq_m_n): Likewise.
26225         (vqrdmlahq_m_n): Likewise.
26226         (vqrdmlashq_m_n): Likewise.
26227         (vqrshlq_m): Likewise.
26228         (vqshlq_m_n): Likewise.
26229         (vqshlq_m): Likewise.
26230         (vrhaddq_m): Likewise.
26231         (vrmulhq_m): Likewise.
26232         (vrshlq_m): Likewise.
26233         (vrshrq_m_n): Likewise.
26234         (vshlq_m_n): Likewise.
26235         (vshrq_m_n): Likewise.
26236         (vsliq_m): Likewise.
26237         (vaddq_m_n): Likewise.
26238         (vaddq_m): Likewise.
26239         (vhaddq_m_n): Likewise.
26240         (vhaddq_m): Likewise.
26241         (vhcaddq_rot270_m): Likewise.
26242         (vhcaddq_rot90_m): Likewise.
26243         (vhsubq_m): Likewise.
26244         (vhsubq_m_n): Likewise.
26245         (vmulq_m_n): Likewise.
26246         (vmulq_m): Likewise.
26247         (vqaddq_m_n): Likewise.
26248         (vqaddq_m): Likewise.
26249         (vqdmulhq_m_n): Likewise.
26250         (vqdmulhq_m): Likewise.
26251         (vsubq_m_n): Likewise.
26252         (vsliq_m_n): Likewise.
26253         (vqsubq_m_n): Likewise.
26254         (vqsubq_m): Likewise.
26255         (vqrdmulhq_m): Likewise.
26256         (vqrdmulhq_m_n): Likewise.
26257         (vqrdmlsdhxq_m): Likewise.
26258         (vqrdmlsdhq_m): Likewise.
26259         (vqrdmladhq_m): Likewise.
26260         (vqrdmladhxq_m): Likewise.
26261         (vmlsdavaxq_p): Likewise.
26262         (vmlsdavaq_p): Likewise.
26263         (vmladavaxq_p): Likewise.
26264         * config/arm/arm_mve_builtins.def (QUADOP_NONE_NONE_NONE_IMM_UNONE): Use
26265         builtin qualifier.
26266         (QUADOP_NONE_NONE_NONE_NONE_UNONE): Likewise.
26267         (QUADOP_UNONE_UNONE_UNONE_IMM_UNONE): Likewise.
26268         (QUADOP_UNONE_UNONE_UNONE_NONE_UNONE): Likewise.
26269         (QUADOP_UNONE_UNONE_UNONE_UNONE_UNONE): Likewise.
26270         * config/arm/mve.md (VHSUBQ_M): Define iterators.
26271         (VSLIQ_M_N): Likewise.
26272         (VQRDMLAHQ_M_N): Likewise.
26273         (VRSHLQ_M): Likewise.
26274         (VMINQ_M): Likewise.
26275         (VMULLBQ_INT_M): Likewise.
26276         (VMULHQ_M): Likewise.
26277         (VMULQ_M): Likewise.
26278         (VHSUBQ_M_N): Likewise.
26279         (VHADDQ_M_N): Likewise.
26280         (VORRQ_M): Likewise.
26281         (VRMULHQ_M): Likewise.
26282         (VQADDQ_M): Likewise.
26283         (VRSHRQ_M_N): Likewise.
26284         (VQSUBQ_M_N): Likewise.
26285         (VADDQ_M): Likewise.
26286         (VORNQ_M): Likewise.
26287         (VQDMLAHQ_M_N): Likewise.
26288         (VRHADDQ_M): Likewise.
26289         (VQSHLQ_M): Likewise.
26290         (VANDQ_M): Likewise.
26291         (VBICQ_M): Likewise.
26292         (VSHLQ_M_N): Likewise.
26293         (VCADDQ_ROT270_M): Likewise.
26294         (VQRSHLQ_M): Likewise.
26295         (VQADDQ_M_N): Likewise.
26296         (VADDQ_M_N): Likewise.
26297         (VMAXQ_M): Likewise.
26298         (VQSUBQ_M): Likewise.
26299         (VMLASQ_M_N): Likewise.
26300         (VMLADAVAQ_P): Likewise.
26301         (VBRSRQ_M_N): Likewise.
26302         (VMULQ_M_N): Likewise.
26303         (VCADDQ_ROT90_M): Likewise.
26304         (VMULLTQ_INT_M): Likewise.
26305         (VEORQ_M): Likewise.
26306         (VSHRQ_M_N): Likewise.
26307         (VSUBQ_M_N): Likewise.
26308         (VHADDQ_M): Likewise.
26309         (VABDQ_M): Likewise.
26310         (VQRDMLASHQ_M_N): Likewise.
26311         (VMLAQ_M_N): Likewise.
26312         (VQSHLQ_M_N): Likewise.
26313         (mve_vabdq_m_<supf><mode>): Define RTL pattern.
26314         (mve_vaddq_m_n_<supf><mode>): Likewise.
26315         (mve_vaddq_m_<supf><mode>): Likewise.
26316         (mve_vandq_m_<supf><mode>): Likewise.
26317         (mve_vbicq_m_<supf><mode>): Likewise.
26318         (mve_vbrsrq_m_n_<supf><mode>): Likewise.
26319         (mve_vcaddq_rot270_m_<supf><mode>): Likewise.
26320         (mve_vcaddq_rot90_m_<supf><mode>): Likewise.
26321         (mve_veorq_m_<supf><mode>): Likewise.
26322         (mve_vhaddq_m_n_<supf><mode>): Likewise.
26323         (mve_vhaddq_m_<supf><mode>): Likewise.
26324         (mve_vhsubq_m_n_<supf><mode>): Likewise.
26325         (mve_vhsubq_m_<supf><mode>): Likewise.
26326         (mve_vmaxq_m_<supf><mode>): Likewise.
26327         (mve_vminq_m_<supf><mode>): Likewise.
26328         (mve_vmladavaq_p_<supf><mode>): Likewise.
26329         (mve_vmlaq_m_n_<supf><mode>): Likewise.
26330         (mve_vmlasq_m_n_<supf><mode>): Likewise.
26331         (mve_vmulhq_m_<supf><mode>): Likewise.
26332         (mve_vmullbq_int_m_<supf><mode>): Likewise.
26333         (mve_vmulltq_int_m_<supf><mode>): Likewise.
26334         (mve_vmulq_m_n_<supf><mode>): Likewise.
26335         (mve_vmulq_m_<supf><mode>): Likewise.
26336         (mve_vornq_m_<supf><mode>): Likewise.
26337         (mve_vorrq_m_<supf><mode>): Likewise.
26338         (mve_vqaddq_m_n_<supf><mode>): Likewise.
26339         (mve_vqaddq_m_<supf><mode>): Likewise.
26340         (mve_vqdmlahq_m_n_<supf><mode>): Likewise.
26341         (mve_vqrdmlahq_m_n_<supf><mode>): Likewise.
26342         (mve_vqrdmlashq_m_n_<supf><mode>): Likewise.
26343         (mve_vqrshlq_m_<supf><mode>): Likewise.
26344         (mve_vqshlq_m_n_<supf><mode>): Likewise.
26345         (mve_vqshlq_m_<supf><mode>): Likewise.
26346         (mve_vqsubq_m_n_<supf><mode>): Likewise.
26347         (mve_vqsubq_m_<supf><mode>): Likewise.
26348         (mve_vrhaddq_m_<supf><mode>): Likewise.
26349         (mve_vrmulhq_m_<supf><mode>): Likewise.
26350         (mve_vrshlq_m_<supf><mode>): Likewise.
26351         (mve_vrshrq_m_n_<supf><mode>): Likewise.
26352         (mve_vshlq_m_n_<supf><mode>): Likewise.
26353         (mve_vshrq_m_n_<supf><mode>): Likewise.
26354         (mve_vsliq_m_n_<supf><mode>): Likewise.
26355         (mve_vsubq_m_n_<supf><mode>): Likewise.
26356         (mve_vhcaddq_rot270_m_s<mode>): Likewise.
26357         (mve_vhcaddq_rot90_m_s<mode>): Likewise.
26358         (mve_vmladavaxq_p_s<mode>): Likewise.
26359         (mve_vmlsdavaq_p_s<mode>): Likewise.
26360         (mve_vmlsdavaxq_p_s<mode>): Likewise.
26361         (mve_vqdmladhq_m_s<mode>): Likewise.
26362         (mve_vqdmladhxq_m_s<mode>): Likewise.
26363         (mve_vqdmlsdhq_m_s<mode>): Likewise.
26364         (mve_vqdmlsdhxq_m_s<mode>): Likewise.
26365         (mve_vqdmulhq_m_n_s<mode>): Likewise.
26366         (mve_vqdmulhq_m_s<mode>): Likewise.
26367         (mve_vqrdmladhq_m_s<mode>): Likewise.
26368         (mve_vqrdmladhxq_m_s<mode>): Likewise.
26369         (mve_vqrdmlsdhq_m_s<mode>): Likewise.
26370         (mve_vqrdmlsdhxq_m_s<mode>): Likewise.
26371         (mve_vqrdmulhq_m_n_s<mode>): Likewise.
26372         (mve_vqrdmulhq_m_s<mode>): Likewise.
26374 2020-03-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
26375             Mihail Ionescu  <mihail.ionescu@arm.com>
26376             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
26378         * config/arm/arm-builtins.c (QUADOP_UNONE_UNONE_NONE_NONE_UNONE_QUALIFIERS):
26379         Define builtin qualifier.
26380         (QUADOP_NONE_NONE_NONE_NONE_UNONE_QUALIFIERS): Likewise.
26381         (QUADOP_NONE_NONE_NONE_IMM_UNONE_QUALIFIERS): Likewise.
26382         (QUADOP_UNONE_UNONE_UNONE_UNONE_UNONE_QUALIFIERS): Likewise.
26383         (QUADOP_UNONE_UNONE_NONE_IMM_UNONE_QUALIFIERS): Likewise.
26384         (QUADOP_NONE_NONE_UNONE_IMM_UNONE_QUALIFIERS): Likewise.
26385         (QUADOP_UNONE_UNONE_UNONE_IMM_UNONE_QUALIFIERS): Likewise.
26386         (QUADOP_UNONE_UNONE_UNONE_NONE_UNONE_QUALIFIERS): Likewise.
26387         * config/arm/arm_mve.h (vsriq_m_n_s8): Define macro.
26388         (vsubq_m_s8): Likewise.
26389         (vcvtq_m_n_f16_u16): Likewise.
26390         (vqshluq_m_n_s8): Likewise.
26391         (vabavq_p_s8): Likewise.
26392         (vsriq_m_n_u8): Likewise.
26393         (vshlq_m_u8): Likewise.
26394         (vsubq_m_u8): Likewise.
26395         (vabavq_p_u8): Likewise.
26396         (vshlq_m_s8): Likewise.
26397         (vcvtq_m_n_f16_s16): Likewise.
26398         (vsriq_m_n_s16): Likewise.
26399         (vsubq_m_s16): Likewise.
26400         (vcvtq_m_n_f32_u32): Likewise.
26401         (vqshluq_m_n_s16): Likewise.
26402         (vabavq_p_s16): Likewise.
26403         (vsriq_m_n_u16): Likewise.
26404         (vshlq_m_u16): Likewise.
26405         (vsubq_m_u16): Likewise.
26406         (vabavq_p_u16): Likewise.
26407         (vshlq_m_s16): Likewise.
26408         (vcvtq_m_n_f32_s32): Likewise.
26409         (vsriq_m_n_s32): Likewise.
26410         (vsubq_m_s32): Likewise.
26411         (vqshluq_m_n_s32): Likewise.
26412         (vabavq_p_s32): Likewise.
26413         (vsriq_m_n_u32): Likewise.
26414         (vshlq_m_u32): Likewise.
26415         (vsubq_m_u32): Likewise.
26416         (vabavq_p_u32): Likewise.
26417         (vshlq_m_s32): Likewise.
26418         (__arm_vsriq_m_n_s8): Define intrinsic.
26419         (__arm_vsubq_m_s8): Likewise.
26420         (__arm_vqshluq_m_n_s8): Likewise.
26421         (__arm_vabavq_p_s8): Likewise.
26422         (__arm_vsriq_m_n_u8): Likewise.
26423         (__arm_vshlq_m_u8): Likewise.
26424         (__arm_vsubq_m_u8): Likewise.
26425         (__arm_vabavq_p_u8): Likewise.
26426         (__arm_vshlq_m_s8): Likewise.
26427         (__arm_vsriq_m_n_s16): Likewise.
26428         (__arm_vsubq_m_s16): Likewise.
26429         (__arm_vqshluq_m_n_s16): Likewise.
26430         (__arm_vabavq_p_s16): Likewise.
26431         (__arm_vsriq_m_n_u16): Likewise.
26432         (__arm_vshlq_m_u16): Likewise.
26433         (__arm_vsubq_m_u16): Likewise.
26434         (__arm_vabavq_p_u16): Likewise.
26435         (__arm_vshlq_m_s16): Likewise.
26436         (__arm_vsriq_m_n_s32): Likewise.
26437         (__arm_vsubq_m_s32): Likewise.
26438         (__arm_vqshluq_m_n_s32): Likewise.
26439         (__arm_vabavq_p_s32): Likewise.
26440         (__arm_vsriq_m_n_u32): Likewise.
26441         (__arm_vshlq_m_u32): Likewise.
26442         (__arm_vsubq_m_u32): Likewise.
26443         (__arm_vabavq_p_u32): Likewise.
26444         (__arm_vshlq_m_s32): Likewise.
26445         (__arm_vcvtq_m_n_f16_u16): Likewise.
26446         (__arm_vcvtq_m_n_f16_s16): Likewise.
26447         (__arm_vcvtq_m_n_f32_u32): Likewise.
26448         (__arm_vcvtq_m_n_f32_s32): Likewise.
26449         (vcvtq_m_n): Define polymorphic variant.
26450         (vqshluq_m_n): Likewise.
26451         (vshlq_m): Likewise.
26452         (vsriq_m_n): Likewise.
26453         (vsubq_m): Likewise.
26454         (vabavq_p): Likewise.
26455         * config/arm/arm_mve_builtins.def
26456         (QUADOP_UNONE_UNONE_NONE_NONE_UNONE_QUALIFIERS): Use builtin qualifier.
26457         (QUADOP_NONE_NONE_NONE_NONE_UNONE_QUALIFIERS): Likewise.
26458         (QUADOP_NONE_NONE_NONE_IMM_UNONE_QUALIFIERS): Likewise.
26459         (QUADOP_UNONE_UNONE_UNONE_UNONE_UNONE_QUALIFIERS): Likewise.
26460         (QUADOP_UNONE_UNONE_NONE_IMM_UNONE_QUALIFIERS): Likewise.
26461         (QUADOP_NONE_NONE_UNONE_IMM_UNONE_QUALIFIERS): Likewise.
26462         (QUADOP_UNONE_UNONE_UNONE_IMM_UNONE_QUALIFIERS): Likewise.
26463         (QUADOP_UNONE_UNONE_UNONE_NONE_UNONE_QUALIFIERS): Likewise.
26464         * config/arm/mve.md (VABAVQ_P): Define iterator.
26465         (VSHLQ_M): Likewise.
26466         (VSRIQ_M_N): Likewise.
26467         (VSUBQ_M): Likewise.
26468         (VCVTQ_M_N_TO_F): Likewise.
26469         (mve_vabavq_p_<supf><mode>): Define RTL pattern.
26470         (mve_vqshluq_m_n_s<mode>): Likewise.
26471         (mve_vshlq_m_<supf><mode>): Likewise.
26472         (mve_vsriq_m_n_<supf><mode>): Likewise.
26473         (mve_vsubq_m_<supf><mode>): Likewise.
26474         (mve_vcvtq_m_n_to_f_<supf><mode>): Likewise.
26476 2020-03-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
26477             Mihail Ionescu  <mihail.ionescu@arm.com>
26478             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
26480         * config/arm/arm_mve.h (vrmlaldavhaxq_s32): Define macro.
26481         (vrmlsldavhaq_s32): Likewise.
26482         (vrmlsldavhaxq_s32): Likewise.
26483         (vaddlvaq_p_s32): Likewise.
26484         (vcvtbq_m_f16_f32): Likewise.
26485         (vcvtbq_m_f32_f16): Likewise.
26486         (vcvttq_m_f16_f32): Likewise.
26487         (vcvttq_m_f32_f16): Likewise.
26488         (vrev16q_m_s8): Likewise.
26489         (vrev32q_m_f16): Likewise.
26490         (vrmlaldavhq_p_s32): Likewise.
26491         (vrmlaldavhxq_p_s32): Likewise.
26492         (vrmlsldavhq_p_s32): Likewise.
26493         (vrmlsldavhxq_p_s32): Likewise.
26494         (vaddlvaq_p_u32): Likewise.
26495         (vrev16q_m_u8): Likewise.
26496         (vrmlaldavhq_p_u32): Likewise.
26497         (vmvnq_m_n_s16): Likewise.
26498         (vorrq_m_n_s16): Likewise.
26499         (vqrshrntq_n_s16): Likewise.
26500         (vqshrnbq_n_s16): Likewise.
26501         (vqshrntq_n_s16): Likewise.
26502         (vrshrnbq_n_s16): Likewise.
26503         (vrshrntq_n_s16): Likewise.
26504         (vshrnbq_n_s16): Likewise.
26505         (vshrntq_n_s16): Likewise.
26506         (vcmlaq_f16): Likewise.
26507         (vcmlaq_rot180_f16): Likewise.
26508         (vcmlaq_rot270_f16): Likewise.
26509         (vcmlaq_rot90_f16): Likewise.
26510         (vfmaq_f16): Likewise.
26511         (vfmaq_n_f16): Likewise.
26512         (vfmasq_n_f16): Likewise.
26513         (vfmsq_f16): Likewise.
26514         (vmlaldavaq_s16): Likewise.
26515         (vmlaldavaxq_s16): Likewise.
26516         (vmlsldavaq_s16): Likewise.
26517         (vmlsldavaxq_s16): Likewise.
26518         (vabsq_m_f16): Likewise.
26519         (vcvtmq_m_s16_f16): Likewise.
26520         (vcvtnq_m_s16_f16): Likewise.
26521         (vcvtpq_m_s16_f16): Likewise.
26522         (vcvtq_m_s16_f16): Likewise.
26523         (vdupq_m_n_f16): Likewise.
26524         (vmaxnmaq_m_f16): Likewise.
26525         (vmaxnmavq_p_f16): Likewise.
26526         (vmaxnmvq_p_f16): Likewise.
26527         (vminnmaq_m_f16): Likewise.
26528         (vminnmavq_p_f16): Likewise.
26529         (vminnmvq_p_f16): Likewise.
26530         (vmlaldavq_p_s16): Likewise.
26531         (vmlaldavxq_p_s16): Likewise.
26532         (vmlsldavq_p_s16): Likewise.
26533         (vmlsldavxq_p_s16): Likewise.
26534         (vmovlbq_m_s8): Likewise.
26535         (vmovltq_m_s8): Likewise.
26536         (vmovnbq_m_s16): Likewise.
26537         (vmovntq_m_s16): Likewise.
26538         (vnegq_m_f16): Likewise.
26539         (vpselq_f16): Likewise.
26540         (vqmovnbq_m_s16): Likewise.
26541         (vqmovntq_m_s16): Likewise.
26542         (vrev32q_m_s8): Likewise.
26543         (vrev64q_m_f16): Likewise.
26544         (vrndaq_m_f16): Likewise.
26545         (vrndmq_m_f16): Likewise.
26546         (vrndnq_m_f16): Likewise.
26547         (vrndpq_m_f16): Likewise.
26548         (vrndq_m_f16): Likewise.
26549         (vrndxq_m_f16): Likewise.
26550         (vcmpeqq_m_n_f16): Likewise.
26551         (vcmpgeq_m_f16): Likewise.
26552         (vcmpgeq_m_n_f16): Likewise.
26553         (vcmpgtq_m_f16): Likewise.
26554         (vcmpgtq_m_n_f16): Likewise.
26555         (vcmpleq_m_f16): Likewise.
26556         (vcmpleq_m_n_f16): Likewise.
26557         (vcmpltq_m_f16): Likewise.
26558         (vcmpltq_m_n_f16): Likewise.
26559         (vcmpneq_m_f16): Likewise.
26560         (vcmpneq_m_n_f16): Likewise.
26561         (vmvnq_m_n_u16): Likewise.
26562         (vorrq_m_n_u16): Likewise.
26563         (vqrshruntq_n_s16): Likewise.
26564         (vqshrunbq_n_s16): Likewise.
26565         (vqshruntq_n_s16): Likewise.
26566         (vcvtmq_m_u16_f16): Likewise.
26567         (vcvtnq_m_u16_f16): Likewise.
26568         (vcvtpq_m_u16_f16): Likewise.
26569         (vcvtq_m_u16_f16): Likewise.
26570         (vqmovunbq_m_s16): Likewise.
26571         (vqmovuntq_m_s16): Likewise.
26572         (vqrshrntq_n_u16): Likewise.
26573         (vqshrnbq_n_u16): Likewise.
26574         (vqshrntq_n_u16): Likewise.
26575         (vrshrnbq_n_u16): Likewise.
26576         (vrshrntq_n_u16): Likewise.
26577         (vshrnbq_n_u16): Likewise.
26578         (vshrntq_n_u16): Likewise.
26579         (vmlaldavaq_u16): Likewise.
26580         (vmlaldavaxq_u16): Likewise.
26581         (vmlaldavq_p_u16): Likewise.
26582         (vmlaldavxq_p_u16): Likewise.
26583         (vmovlbq_m_u8): Likewise.
26584         (vmovltq_m_u8): Likewise.
26585         (vmovnbq_m_u16): Likewise.
26586         (vmovntq_m_u16): Likewise.
26587         (vqmovnbq_m_u16): Likewise.
26588         (vqmovntq_m_u16): Likewise.
26589         (vrev32q_m_u8): Likewise.
26590         (vmvnq_m_n_s32): Likewise.
26591         (vorrq_m_n_s32): Likewise.
26592         (vqrshrntq_n_s32): Likewise.
26593         (vqshrnbq_n_s32): Likewise.
26594         (vqshrntq_n_s32): Likewise.
26595         (vrshrnbq_n_s32): Likewise.
26596         (vrshrntq_n_s32): Likewise.
26597         (vshrnbq_n_s32): Likewise.
26598         (vshrntq_n_s32): Likewise.
26599         (vcmlaq_f32): Likewise.
26600         (vcmlaq_rot180_f32): Likewise.
26601         (vcmlaq_rot270_f32): Likewise.
26602         (vcmlaq_rot90_f32): Likewise.
26603         (vfmaq_f32): Likewise.
26604         (vfmaq_n_f32): Likewise.
26605         (vfmasq_n_f32): Likewise.
26606         (vfmsq_f32): Likewise.
26607         (vmlaldavaq_s32): Likewise.
26608         (vmlaldavaxq_s32): Likewise.
26609         (vmlsldavaq_s32): Likewise.
26610         (vmlsldavaxq_s32): Likewise.
26611         (vabsq_m_f32): Likewise.
26612         (vcvtmq_m_s32_f32): Likewise.
26613         (vcvtnq_m_s32_f32): Likewise.
26614         (vcvtpq_m_s32_f32): Likewise.
26615         (vcvtq_m_s32_f32): Likewise.
26616         (vdupq_m_n_f32): Likewise.
26617         (vmaxnmaq_m_f32): Likewise.
26618         (vmaxnmavq_p_f32): Likewise.
26619         (vmaxnmvq_p_f32): Likewise.
26620         (vminnmaq_m_f32): Likewise.
26621         (vminnmavq_p_f32): Likewise.
26622         (vminnmvq_p_f32): Likewise.
26623         (vmlaldavq_p_s32): Likewise.
26624         (vmlaldavxq_p_s32): Likewise.
26625         (vmlsldavq_p_s32): Likewise.
26626         (vmlsldavxq_p_s32): Likewise.
26627         (vmovlbq_m_s16): Likewise.
26628         (vmovltq_m_s16): Likewise.
26629         (vmovnbq_m_s32): Likewise.
26630         (vmovntq_m_s32): Likewise.
26631         (vnegq_m_f32): Likewise.
26632         (vpselq_f32): Likewise.
26633         (vqmovnbq_m_s32): Likewise.
26634         (vqmovntq_m_s32): Likewise.
26635         (vrev32q_m_s16): Likewise.
26636         (vrev64q_m_f32): Likewise.
26637         (vrndaq_m_f32): Likewise.
26638         (vrndmq_m_f32): Likewise.
26639         (vrndnq_m_f32): Likewise.
26640         (vrndpq_m_f32): Likewise.
26641         (vrndq_m_f32): Likewise.
26642         (vrndxq_m_f32): Likewise.
26643         (vcmpeqq_m_n_f32): Likewise.
26644         (vcmpgeq_m_f32): Likewise.
26645         (vcmpgeq_m_n_f32): Likewise.
26646         (vcmpgtq_m_f32): Likewise.
26647         (vcmpgtq_m_n_f32): Likewise.
26648         (vcmpleq_m_f32): Likewise.
26649         (vcmpleq_m_n_f32): Likewise.
26650         (vcmpltq_m_f32): Likewise.
26651         (vcmpltq_m_n_f32): Likewise.
26652         (vcmpneq_m_f32): Likewise.
26653         (vcmpneq_m_n_f32): Likewise.
26654         (vmvnq_m_n_u32): Likewise.
26655         (vorrq_m_n_u32): Likewise.
26656         (vqrshruntq_n_s32): Likewise.
26657         (vqshrunbq_n_s32): Likewise.
26658         (vqshruntq_n_s32): Likewise.
26659         (vcvtmq_m_u32_f32): Likewise.
26660         (vcvtnq_m_u32_f32): Likewise.
26661         (vcvtpq_m_u32_f32): Likewise.
26662         (vcvtq_m_u32_f32): Likewise.
26663         (vqmovunbq_m_s32): Likewise.
26664         (vqmovuntq_m_s32): Likewise.
26665         (vqrshrntq_n_u32): Likewise.
26666         (vqshrnbq_n_u32): Likewise.
26667         (vqshrntq_n_u32): Likewise.
26668         (vrshrnbq_n_u32): Likewise.
26669         (vrshrntq_n_u32): Likewise.
26670         (vshrnbq_n_u32): Likewise.
26671         (vshrntq_n_u32): Likewise.
26672         (vmlaldavaq_u32): Likewise.
26673         (vmlaldavaxq_u32): Likewise.
26674         (vmlaldavq_p_u32): Likewise.
26675         (vmlaldavxq_p_u32): Likewise.
26676         (vmovlbq_m_u16): Likewise.
26677         (vmovltq_m_u16): Likewise.
26678         (vmovnbq_m_u32): Likewise.
26679         (vmovntq_m_u32): Likewise.
26680         (vqmovnbq_m_u32): Likewise.
26681         (vqmovntq_m_u32): Likewise.
26682         (vrev32q_m_u16): Likewise.
26683         (__arm_vrmlaldavhaxq_s32): Define intrinsic.
26684         (__arm_vrmlsldavhaq_s32): Likewise.
26685         (__arm_vrmlsldavhaxq_s32): Likewise.
26686         (__arm_vaddlvaq_p_s32): Likewise.
26687         (__arm_vrev16q_m_s8): Likewise.
26688         (__arm_vrmlaldavhq_p_s32): Likewise.
26689         (__arm_vrmlaldavhxq_p_s32): Likewise.
26690         (__arm_vrmlsldavhq_p_s32): Likewise.
26691         (__arm_vrmlsldavhxq_p_s32): Likewise.
26692         (__arm_vaddlvaq_p_u32): Likewise.
26693         (__arm_vrev16q_m_u8): Likewise.
26694         (__arm_vrmlaldavhq_p_u32): Likewise.
26695         (__arm_vmvnq_m_n_s16): Likewise.
26696         (__arm_vorrq_m_n_s16): Likewise.
26697         (__arm_vqrshrntq_n_s16): Likewise.
26698         (__arm_vqshrnbq_n_s16): Likewise.
26699         (__arm_vqshrntq_n_s16): Likewise.
26700         (__arm_vrshrnbq_n_s16): Likewise.
26701         (__arm_vrshrntq_n_s16): Likewise.
26702         (__arm_vshrnbq_n_s16): Likewise.
26703         (__arm_vshrntq_n_s16): Likewise.
26704         (__arm_vmlaldavaq_s16): Likewise.
26705         (__arm_vmlaldavaxq_s16): Likewise.
26706         (__arm_vmlsldavaq_s16): Likewise.
26707         (__arm_vmlsldavaxq_s16): Likewise.
26708         (__arm_vmlaldavq_p_s16): Likewise.
26709         (__arm_vmlaldavxq_p_s16): Likewise.
26710         (__arm_vmlsldavq_p_s16): Likewise.
26711         (__arm_vmlsldavxq_p_s16): Likewise.
26712         (__arm_vmovlbq_m_s8): Likewise.
26713         (__arm_vmovltq_m_s8): Likewise.
26714         (__arm_vmovnbq_m_s16): Likewise.
26715         (__arm_vmovntq_m_s16): Likewise.
26716         (__arm_vqmovnbq_m_s16): Likewise.
26717         (__arm_vqmovntq_m_s16): Likewise.
26718         (__arm_vrev32q_m_s8): Likewise.
26719         (__arm_vmvnq_m_n_u16): Likewise.
26720         (__arm_vorrq_m_n_u16): Likewise.
26721         (__arm_vqrshruntq_n_s16): Likewise.
26722         (__arm_vqshrunbq_n_s16): Likewise.
26723         (__arm_vqshruntq_n_s16): Likewise.
26724         (__arm_vqmovunbq_m_s16): Likewise.
26725         (__arm_vqmovuntq_m_s16): Likewise.
26726         (__arm_vqrshrntq_n_u16): Likewise.
26727         (__arm_vqshrnbq_n_u16): Likewise.
26728         (__arm_vqshrntq_n_u16): Likewise.
26729         (__arm_vrshrnbq_n_u16): Likewise.
26730         (__arm_vrshrntq_n_u16): Likewise.
26731         (__arm_vshrnbq_n_u16): Likewise.
26732         (__arm_vshrntq_n_u16): Likewise.
26733         (__arm_vmlaldavaq_u16): Likewise.
26734         (__arm_vmlaldavaxq_u16): Likewise.
26735         (__arm_vmlaldavq_p_u16): Likewise.
26736         (__arm_vmlaldavxq_p_u16): Likewise.
26737         (__arm_vmovlbq_m_u8): Likewise.
26738         (__arm_vmovltq_m_u8): Likewise.
26739         (__arm_vmovnbq_m_u16): Likewise.
26740         (__arm_vmovntq_m_u16): Likewise.
26741         (__arm_vqmovnbq_m_u16): Likewise.
26742         (__arm_vqmovntq_m_u16): Likewise.
26743         (__arm_vrev32q_m_u8): Likewise.
26744         (__arm_vmvnq_m_n_s32): Likewise.
26745         (__arm_vorrq_m_n_s32): Likewise.
26746         (__arm_vqrshrntq_n_s32): Likewise.
26747         (__arm_vqshrnbq_n_s32): Likewise.
26748         (__arm_vqshrntq_n_s32): Likewise.
26749         (__arm_vrshrnbq_n_s32): Likewise.
26750         (__arm_vrshrntq_n_s32): Likewise.
26751         (__arm_vshrnbq_n_s32): Likewise.
26752         (__arm_vshrntq_n_s32): Likewise.
26753         (__arm_vmlaldavaq_s32): Likewise.
26754         (__arm_vmlaldavaxq_s32): Likewise.
26755         (__arm_vmlsldavaq_s32): Likewise.
26756         (__arm_vmlsldavaxq_s32): Likewise.
26757         (__arm_vmlaldavq_p_s32): Likewise.
26758         (__arm_vmlaldavxq_p_s32): Likewise.
26759         (__arm_vmlsldavq_p_s32): Likewise.
26760         (__arm_vmlsldavxq_p_s32): Likewise.
26761         (__arm_vmovlbq_m_s16): Likewise.
26762         (__arm_vmovltq_m_s16): Likewise.
26763         (__arm_vmovnbq_m_s32): Likewise.
26764         (__arm_vmovntq_m_s32): Likewise.
26765         (__arm_vqmovnbq_m_s32): Likewise.
26766         (__arm_vqmovntq_m_s32): Likewise.
26767         (__arm_vrev32q_m_s16): Likewise.
26768         (__arm_vmvnq_m_n_u32): Likewise.
26769         (__arm_vorrq_m_n_u32): Likewise.
26770         (__arm_vqrshruntq_n_s32): Likewise.
26771         (__arm_vqshrunbq_n_s32): Likewise.
26772         (__arm_vqshruntq_n_s32): Likewise.
26773         (__arm_vqmovunbq_m_s32): Likewise.
26774         (__arm_vqmovuntq_m_s32): Likewise.
26775         (__arm_vqrshrntq_n_u32): Likewise.
26776         (__arm_vqshrnbq_n_u32): Likewise.
26777         (__arm_vqshrntq_n_u32): Likewise.
26778         (__arm_vrshrnbq_n_u32): Likewise.
26779         (__arm_vrshrntq_n_u32): Likewise.
26780         (__arm_vshrnbq_n_u32): Likewise.
26781         (__arm_vshrntq_n_u32): Likewise.
26782         (__arm_vmlaldavaq_u32): Likewise.
26783         (__arm_vmlaldavaxq_u32): Likewise.
26784         (__arm_vmlaldavq_p_u32): Likewise.
26785         (__arm_vmlaldavxq_p_u32): Likewise.
26786         (__arm_vmovlbq_m_u16): Likewise.
26787         (__arm_vmovltq_m_u16): Likewise.
26788         (__arm_vmovnbq_m_u32): Likewise.
26789         (__arm_vmovntq_m_u32): Likewise.
26790         (__arm_vqmovnbq_m_u32): Likewise.
26791         (__arm_vqmovntq_m_u32): Likewise.
26792         (__arm_vrev32q_m_u16): Likewise.
26793         (__arm_vcvtbq_m_f16_f32): Likewise.
26794         (__arm_vcvtbq_m_f32_f16): Likewise.
26795         (__arm_vcvttq_m_f16_f32): Likewise.
26796         (__arm_vcvttq_m_f32_f16): Likewise.
26797         (__arm_vrev32q_m_f16): Likewise.
26798         (__arm_vcmlaq_f16): Likewise.
26799         (__arm_vcmlaq_rot180_f16): Likewise.
26800         (__arm_vcmlaq_rot270_f16): Likewise.
26801         (__arm_vcmlaq_rot90_f16): Likewise.
26802         (__arm_vfmaq_f16): Likewise.
26803         (__arm_vfmaq_n_f16): Likewise.
26804         (__arm_vfmasq_n_f16): Likewise.
26805         (__arm_vfmsq_f16): Likewise.
26806         (__arm_vabsq_m_f16): Likewise.
26807         (__arm_vcvtmq_m_s16_f16): Likewise.
26808         (__arm_vcvtnq_m_s16_f16): Likewise.
26809         (__arm_vcvtpq_m_s16_f16): Likewise.
26810         (__arm_vcvtq_m_s16_f16): Likewise.
26811         (__arm_vdupq_m_n_f16): Likewise.
26812         (__arm_vmaxnmaq_m_f16): Likewise.
26813         (__arm_vmaxnmavq_p_f16): Likewise.
26814         (__arm_vmaxnmvq_p_f16): Likewise.
26815         (__arm_vminnmaq_m_f16): Likewise.
26816         (__arm_vminnmavq_p_f16): Likewise.
26817         (__arm_vminnmvq_p_f16): Likewise.
26818         (__arm_vnegq_m_f16): Likewise.
26819         (__arm_vpselq_f16): Likewise.
26820         (__arm_vrev64q_m_f16): Likewise.
26821         (__arm_vrndaq_m_f16): Likewise.
26822         (__arm_vrndmq_m_f16): Likewise.
26823         (__arm_vrndnq_m_f16): Likewise.
26824         (__arm_vrndpq_m_f16): Likewise.
26825         (__arm_vrndq_m_f16): Likewise.
26826         (__arm_vrndxq_m_f16): Likewise.
26827         (__arm_vcmpeqq_m_n_f16): Likewise.
26828         (__arm_vcmpgeq_m_f16): Likewise.
26829         (__arm_vcmpgeq_m_n_f16): Likewise.
26830         (__arm_vcmpgtq_m_f16): Likewise.
26831         (__arm_vcmpgtq_m_n_f16): Likewise.
26832         (__arm_vcmpleq_m_f16): Likewise.
26833         (__arm_vcmpleq_m_n_f16): Likewise.
26834         (__arm_vcmpltq_m_f16): Likewise.
26835         (__arm_vcmpltq_m_n_f16): Likewise.
26836         (__arm_vcmpneq_m_f16): Likewise.
26837         (__arm_vcmpneq_m_n_f16): Likewise.
26838         (__arm_vcvtmq_m_u16_f16): Likewise.
26839         (__arm_vcvtnq_m_u16_f16): Likewise.
26840         (__arm_vcvtpq_m_u16_f16): Likewise.
26841         (__arm_vcvtq_m_u16_f16): Likewise.
26842         (__arm_vcmlaq_f32): Likewise.
26843         (__arm_vcmlaq_rot180_f32): Likewise.
26844         (__arm_vcmlaq_rot270_f32): Likewise.
26845         (__arm_vcmlaq_rot90_f32): Likewise.
26846         (__arm_vfmaq_f32): Likewise.
26847         (__arm_vfmaq_n_f32): Likewise.
26848         (__arm_vfmasq_n_f32): Likewise.
26849         (__arm_vfmsq_f32): Likewise.
26850         (__arm_vabsq_m_f32): Likewise.
26851         (__arm_vcvtmq_m_s32_f32): Likewise.
26852         (__arm_vcvtnq_m_s32_f32): Likewise.
26853         (__arm_vcvtpq_m_s32_f32): Likewise.
26854         (__arm_vcvtq_m_s32_f32): Likewise.
26855         (__arm_vdupq_m_n_f32): Likewise.
26856         (__arm_vmaxnmaq_m_f32): Likewise.
26857         (__arm_vmaxnmavq_p_f32): Likewise.
26858         (__arm_vmaxnmvq_p_f32): Likewise.
26859         (__arm_vminnmaq_m_f32): Likewise.
26860         (__arm_vminnmavq_p_f32): Likewise.
26861         (__arm_vminnmvq_p_f32): Likewise.
26862         (__arm_vnegq_m_f32): Likewise.
26863         (__arm_vpselq_f32): Likewise.
26864         (__arm_vrev64q_m_f32): Likewise.
26865         (__arm_vrndaq_m_f32): Likewise.
26866         (__arm_vrndmq_m_f32): Likewise.
26867         (__arm_vrndnq_m_f32): Likewise.
26868         (__arm_vrndpq_m_f32): Likewise.
26869         (__arm_vrndq_m_f32): Likewise.
26870         (__arm_vrndxq_m_f32): Likewise.
26871         (__arm_vcmpeqq_m_n_f32): Likewise.
26872         (__arm_vcmpgeq_m_f32): Likewise.
26873         (__arm_vcmpgeq_m_n_f32): Likewise.
26874         (__arm_vcmpgtq_m_f32): Likewise.
26875         (__arm_vcmpgtq_m_n_f32): Likewise.
26876         (__arm_vcmpleq_m_f32): Likewise.
26877         (__arm_vcmpleq_m_n_f32): Likewise.
26878         (__arm_vcmpltq_m_f32): Likewise.
26879         (__arm_vcmpltq_m_n_f32): Likewise.
26880         (__arm_vcmpneq_m_f32): Likewise.
26881         (__arm_vcmpneq_m_n_f32): Likewise.
26882         (__arm_vcvtmq_m_u32_f32): Likewise.
26883         (__arm_vcvtnq_m_u32_f32): Likewise.
26884         (__arm_vcvtpq_m_u32_f32): Likewise.
26885         (__arm_vcvtq_m_u32_f32): Likewise.
26886         (vcvtq_m): Define polymorphic variant.
26887         (vabsq_m): Likewise.
26888         (vcmlaq): Likewise.
26889         (vcmlaq_rot180): Likewise.
26890         (vcmlaq_rot270): Likewise.
26891         (vcmlaq_rot90): Likewise.
26892         (vcmpeqq_m_n): Likewise.
26893         (vcmpgeq_m_n): Likewise.
26894         (vrndxq_m): Likewise.
26895         (vrndq_m): Likewise.
26896         (vrndpq_m): Likewise.
26897         (vcmpgtq_m_n): Likewise.
26898         (vcmpgtq_m): Likewise.
26899         (vcmpleq_m): Likewise.
26900         (vcmpleq_m_n): Likewise.
26901         (vcmpltq_m_n): Likewise.
26902         (vcmpltq_m): Likewise.
26903         (vcmpneq_m): Likewise.
26904         (vcmpneq_m_n): Likewise.
26905         (vcvtbq_m): Likewise.
26906         (vcvttq_m): Likewise.
26907         (vcvtmq_m): Likewise.
26908         (vcvtnq_m): Likewise.
26909         (vcvtpq_m): Likewise.
26910         (vdupq_m_n): Likewise.
26911         (vfmaq_n): Likewise.
26912         (vfmaq): Likewise.
26913         (vfmasq_n): Likewise.
26914         (vfmsq): Likewise.
26915         (vmaxnmaq_m): Likewise.
26916         (vmaxnmavq_m): Likewise.
26917         (vmaxnmvq_m): Likewise.
26918         (vmaxnmavq_p): Likewise.
26919         (vmaxnmvq_p): Likewise.
26920         (vminnmaq_m): Likewise.
26921         (vminnmavq_p): Likewise.
26922         (vminnmvq_p): Likewise.
26923         (vrndnq_m): Likewise.
26924         (vrndaq_m): Likewise.
26925         (vrndmq_m): Likewise.
26926         (vrev64q_m): Likewise.
26927         (vrev32q_m): Likewise.
26928         (vpselq): Likewise.
26929         (vnegq_m): Likewise.
26930         (vcmpgeq_m): Likewise.
26931         (vshrntq_n): Likewise.
26932         (vrshrntq_n): Likewise.
26933         (vmovlbq_m): Likewise.
26934         (vmovnbq_m): Likewise.
26935         (vmovntq_m): Likewise.
26936         (vmvnq_m_n): Likewise.
26937         (vmvnq_m): Likewise.
26938         (vshrnbq_n): Likewise.
26939         (vrshrnbq_n): Likewise.
26940         (vqshruntq_n): Likewise.
26941         (vrev16q_m): Likewise.
26942         (vqshrunbq_n): Likewise.
26943         (vqshrntq_n): Likewise.
26944         (vqrshruntq_n): Likewise.
26945         (vqrshrntq_n): Likewise.
26946         (vqshrnbq_n): Likewise.
26947         (vqmovuntq_m): Likewise.
26948         (vqmovntq_m): Likewise.
26949         (vqmovnbq_m): Likewise.
26950         (vorrq_m_n): Likewise.
26951         (vmovltq_m): Likewise.
26952         (vqmovunbq_m): Likewise.
26953         (vaddlvaq_p): Likewise.
26954         (vmlaldavaq): Likewise.
26955         (vmlaldavaxq): Likewise.
26956         (vmlaldavq_p): Likewise.
26957         (vmlaldavxq_p): Likewise.
26958         (vmlsldavaq): Likewise.
26959         (vmlsldavaxq): Likewise.
26960         (vmlsldavq_p): Likewise.
26961         (vmlsldavxq_p): Likewise.
26962         (vrmlaldavhaxq): Likewise.
26963         (vrmlaldavhq_p): Likewise.
26964         (vrmlaldavhxq_p): Likewise.
26965         (vrmlsldavhaq): Likewise.
26966         (vrmlsldavhaxq): Likewise.
26967         (vrmlsldavhq_p): Likewise.
26968         (vrmlsldavhxq_p): Likewise.
26969         * config/arm/arm_mve_builtins.def (TERNOP_NONE_NONE_IMM_UNONE): Use
26970         builtin qualifier.
26971         (TERNOP_NONE_NONE_NONE_IMM): Likewise.
26972         (TERNOP_NONE_NONE_NONE_NONE): Likewise.
26973         (TERNOP_NONE_NONE_NONE_UNONE): Likewise.
26974         (TERNOP_UNONE_NONE_NONE_UNONE): Likewise.
26975         (TERNOP_UNONE_UNONE_IMM_UNONE): Likewise.
26976         (TERNOP_UNONE_UNONE_NONE_IMM): Likewise.
26977         (TERNOP_UNONE_UNONE_NONE_UNONE): Likewise.
26978         (TERNOP_UNONE_UNONE_UNONE_IMM): Likewise.
26979         (TERNOP_UNONE_UNONE_UNONE_UNONE): Likewise.
26980         * config/arm/mve.md (MVE_constraint3): Define mode attribute iterator.
26981         (MVE_pred3): Likewise.
26982         (MVE_constraint1): Likewise.
26983         (MVE_pred1): Likewise.
26984         (VMLALDAVQ_P): Define iterator.
26985         (VQMOVNBQ_M): Likewise.
26986         (VMOVLTQ_M): Likewise.
26987         (VMOVNBQ_M): Likewise.
26988         (VRSHRNTQ_N): Likewise.
26989         (VORRQ_M_N): Likewise.
26990         (VREV32Q_M): Likewise.
26991         (VREV16Q_M): Likewise.
26992         (VQRSHRNTQ_N): Likewise.
26993         (VMOVNTQ_M): Likewise.
26994         (VMOVLBQ_M): Likewise.
26995         (VMLALDAVAQ): Likewise.
26996         (VQSHRNBQ_N): Likewise.
26997         (VSHRNBQ_N): Likewise.
26998         (VRSHRNBQ_N): Likewise.
26999         (VMLALDAVXQ_P): Likewise.
27000         (VQMOVNTQ_M): Likewise.
27001         (VMVNQ_M_N): Likewise.
27002         (VQSHRNTQ_N): Likewise.
27003         (VMLALDAVAXQ): Likewise.
27004         (VSHRNTQ_N): Likewise.
27005         (VCVTMQ_M): Likewise.
27006         (VCVTNQ_M): Likewise.
27007         (VCVTPQ_M): Likewise.
27008         (VCVTQ_M_N_FROM_F): Likewise.
27009         (VCVTQ_M_FROM_F): Likewise.
27010         (VRMLALDAVHQ_P): Likewise.
27011         (VADDLVAQ_P): Likewise.
27012         (mve_vrndq_m_f<mode>): Define RTL pattern.
27013         (mve_vabsq_m_f<mode>): Likewise.
27014         (mve_vaddlvaq_p_<supf>v4si): Likewise.
27015         (mve_vcmlaq_f<mode>): Likewise.
27016         (mve_vcmlaq_rot180_f<mode>): Likewise.
27017         (mve_vcmlaq_rot270_f<mode>): Likewise.
27018         (mve_vcmlaq_rot90_f<mode>): Likewise.
27019         (mve_vcmpeqq_m_n_f<mode>): Likewise.
27020         (mve_vcmpgeq_m_f<mode>): Likewise.
27021         (mve_vcmpgeq_m_n_f<mode>): Likewise.
27022         (mve_vcmpgtq_m_f<mode>): Likewise.
27023         (mve_vcmpgtq_m_n_f<mode>): Likewise.
27024         (mve_vcmpleq_m_f<mode>): Likewise.
27025         (mve_vcmpleq_m_n_f<mode>): Likewise.
27026         (mve_vcmpltq_m_f<mode>): Likewise.
27027         (mve_vcmpltq_m_n_f<mode>): Likewise.
27028         (mve_vcmpneq_m_f<mode>): Likewise.
27029         (mve_vcmpneq_m_n_f<mode>): Likewise.
27030         (mve_vcvtbq_m_f16_f32v8hf): Likewise.
27031         (mve_vcvtbq_m_f32_f16v4sf): Likewise.
27032         (mve_vcvttq_m_f16_f32v8hf): Likewise.
27033         (mve_vcvttq_m_f32_f16v4sf): Likewise.
27034         (mve_vdupq_m_n_f<mode>): Likewise.
27035         (mve_vfmaq_f<mode>): Likewise.
27036         (mve_vfmaq_n_f<mode>): Likewise.
27037         (mve_vfmasq_n_f<mode>): Likewise.
27038         (mve_vfmsq_f<mode>): Likewise.
27039         (mve_vmaxnmaq_m_f<mode>): Likewise.
27040         (mve_vmaxnmavq_p_f<mode>): Likewise.
27041         (mve_vmaxnmvq_p_f<mode>): Likewise.
27042         (mve_vminnmaq_m_f<mode>): Likewise.
27043         (mve_vminnmavq_p_f<mode>): Likewise.
27044         (mve_vminnmvq_p_f<mode>): Likewise.
27045         (mve_vmlaldavaq_<supf><mode>): Likewise.
27046         (mve_vmlaldavaxq_<supf><mode>): Likewise.
27047         (mve_vmlaldavq_p_<supf><mode>): Likewise.
27048         (mve_vmlaldavxq_p_<supf><mode>): Likewise.
27049         (mve_vmlsldavaq_s<mode>): Likewise.
27050         (mve_vmlsldavaxq_s<mode>): Likewise.
27051         (mve_vmlsldavq_p_s<mode>): Likewise.
27052         (mve_vmlsldavxq_p_s<mode>): Likewise.
27053         (mve_vmovlbq_m_<supf><mode>): Likewise.
27054         (mve_vmovltq_m_<supf><mode>): Likewise.
27055         (mve_vmovnbq_m_<supf><mode>): Likewise.
27056         (mve_vmovntq_m_<supf><mode>): Likewise.
27057         (mve_vmvnq_m_n_<supf><mode>): Likewise.
27058         (mve_vnegq_m_f<mode>): Likewise.
27059         (mve_vorrq_m_n_<supf><mode>): Likewise.
27060         (mve_vpselq_f<mode>): Likewise.
27061         (mve_vqmovnbq_m_<supf><mode>): Likewise.
27062         (mve_vqmovntq_m_<supf><mode>): Likewise.
27063         (mve_vqmovunbq_m_s<mode>): Likewise.
27064         (mve_vqmovuntq_m_s<mode>): Likewise.
27065         (mve_vqrshrntq_n_<supf><mode>): Likewise.
27066         (mve_vqrshruntq_n_s<mode>): Likewise.
27067         (mve_vqshrnbq_n_<supf><mode>): Likewise.
27068         (mve_vqshrntq_n_<supf><mode>): Likewise.
27069         (mve_vqshrunbq_n_s<mode>): Likewise.
27070         (mve_vqshruntq_n_s<mode>): Likewise.
27071         (mve_vrev32q_m_fv8hf): Likewise.
27072         (mve_vrev32q_m_<supf><mode>): Likewise.
27073         (mve_vrev64q_m_f<mode>): Likewise.
27074         (mve_vrmlaldavhaxq_sv4si): Likewise.
27075         (mve_vrmlaldavhxq_p_sv4si): Likewise.
27076         (mve_vrmlsldavhaxq_sv4si): Likewise.
27077         (mve_vrmlsldavhq_p_sv4si): Likewise.
27078         (mve_vrmlsldavhxq_p_sv4si): Likewise.
27079         (mve_vrndaq_m_f<mode>): Likewise.
27080         (mve_vrndmq_m_f<mode>): Likewise.
27081         (mve_vrndnq_m_f<mode>): Likewise.
27082         (mve_vrndpq_m_f<mode>): Likewise.
27083         (mve_vrndxq_m_f<mode>): Likewise.
27084         (mve_vrshrnbq_n_<supf><mode>): Likewise.
27085         (mve_vrshrntq_n_<supf><mode>): Likewise.
27086         (mve_vshrnbq_n_<supf><mode>): Likewise.
27087         (mve_vshrntq_n_<supf><mode>): Likewise.
27088         (mve_vcvtmq_m_<supf><mode>): Likewise.
27089         (mve_vcvtpq_m_<supf><mode>): Likewise.
27090         (mve_vcvtnq_m_<supf><mode>): Likewise.
27091         (mve_vcvtq_m_n_from_f_<supf><mode>): Likewise.
27092         (mve_vrev16q_m_<supf>v16qi): Likewise.
27093         (mve_vcvtq_m_from_f_<supf><mode>): Likewise.
27094         (mve_vrmlaldavhq_p_<supf>v4si): Likewise.
27095         (mve_vrmlsldavhaq_sv4si): Likewise.
27097 2020-03-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
27098             Mihail Ionescu  <mihail.ionescu@arm.com>
27099             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
27101         * config/arm/arm_mve.h (vpselq_u8): Define macro.
27102         (vpselq_s8): Likewise.
27103         (vrev64q_m_u8): Likewise.
27104         (vqrdmlashq_n_u8): Likewise.
27105         (vqrdmlahq_n_u8): Likewise.
27106         (vqdmlahq_n_u8): Likewise.
27107         (vmvnq_m_u8): Likewise.
27108         (vmlasq_n_u8): Likewise.
27109         (vmlaq_n_u8): Likewise.
27110         (vmladavq_p_u8): Likewise.
27111         (vmladavaq_u8): Likewise.
27112         (vminvq_p_u8): Likewise.
27113         (vmaxvq_p_u8): Likewise.
27114         (vdupq_m_n_u8): Likewise.
27115         (vcmpneq_m_u8): Likewise.
27116         (vcmpneq_m_n_u8): Likewise.
27117         (vcmphiq_m_u8): Likewise.
27118         (vcmphiq_m_n_u8): Likewise.
27119         (vcmpeqq_m_u8): Likewise.
27120         (vcmpeqq_m_n_u8): Likewise.
27121         (vcmpcsq_m_u8): Likewise.
27122         (vcmpcsq_m_n_u8): Likewise.
27123         (vclzq_m_u8): Likewise.
27124         (vaddvaq_p_u8): Likewise.
27125         (vsriq_n_u8): Likewise.
27126         (vsliq_n_u8): Likewise.
27127         (vshlq_m_r_u8): Likewise.
27128         (vrshlq_m_n_u8): Likewise.
27129         (vqshlq_m_r_u8): Likewise.
27130         (vqrshlq_m_n_u8): Likewise.
27131         (vminavq_p_s8): Likewise.
27132         (vminaq_m_s8): Likewise.
27133         (vmaxavq_p_s8): Likewise.
27134         (vmaxaq_m_s8): Likewise.
27135         (vcmpneq_m_s8): Likewise.
27136         (vcmpneq_m_n_s8): Likewise.
27137         (vcmpltq_m_s8): Likewise.
27138         (vcmpltq_m_n_s8): Likewise.
27139         (vcmpleq_m_s8): Likewise.
27140         (vcmpleq_m_n_s8): Likewise.
27141         (vcmpgtq_m_s8): Likewise.
27142         (vcmpgtq_m_n_s8): Likewise.
27143         (vcmpgeq_m_s8): Likewise.
27144         (vcmpgeq_m_n_s8): Likewise.
27145         (vcmpeqq_m_s8): Likewise.
27146         (vcmpeqq_m_n_s8): Likewise.
27147         (vshlq_m_r_s8): Likewise.
27148         (vrshlq_m_n_s8): Likewise.
27149         (vrev64q_m_s8): Likewise.
27150         (vqshlq_m_r_s8): Likewise.
27151         (vqrshlq_m_n_s8): Likewise.
27152         (vqnegq_m_s8): Likewise.
27153         (vqabsq_m_s8): Likewise.
27154         (vnegq_m_s8): Likewise.
27155         (vmvnq_m_s8): Likewise.
27156         (vmlsdavxq_p_s8): Likewise.
27157         (vmlsdavq_p_s8): Likewise.
27158         (vmladavxq_p_s8): Likewise.
27159         (vmladavq_p_s8): Likewise.
27160         (vminvq_p_s8): Likewise.
27161         (vmaxvq_p_s8): Likewise.
27162         (vdupq_m_n_s8): Likewise.
27163         (vclzq_m_s8): Likewise.
27164         (vclsq_m_s8): Likewise.
27165         (vaddvaq_p_s8): Likewise.
27166         (vabsq_m_s8): Likewise.
27167         (vqrdmlsdhxq_s8): Likewise.
27168         (vqrdmlsdhq_s8): Likewise.
27169         (vqrdmlashq_n_s8): Likewise.
27170         (vqrdmlahq_n_s8): Likewise.
27171         (vqrdmladhxq_s8): Likewise.
27172         (vqrdmladhq_s8): Likewise.
27173         (vqdmlsdhxq_s8): Likewise.
27174         (vqdmlsdhq_s8): Likewise.
27175         (vqdmlahq_n_s8): Likewise.
27176         (vqdmladhxq_s8): Likewise.
27177         (vqdmladhq_s8): Likewise.
27178         (vmlsdavaxq_s8): Likewise.
27179         (vmlsdavaq_s8): Likewise.
27180         (vmlasq_n_s8): Likewise.
27181         (vmlaq_n_s8): Likewise.
27182         (vmladavaxq_s8): Likewise.
27183         (vmladavaq_s8): Likewise.
27184         (vsriq_n_s8): Likewise.
27185         (vsliq_n_s8): Likewise.
27186         (vpselq_u16): Likewise.
27187         (vpselq_s16): Likewise.
27188         (vrev64q_m_u16): Likewise.
27189         (vqrdmlashq_n_u16): Likewise.
27190         (vqrdmlahq_n_u16): Likewise.
27191         (vqdmlahq_n_u16): Likewise.
27192         (vmvnq_m_u16): Likewise.
27193         (vmlasq_n_u16): Likewise.
27194         (vmlaq_n_u16): Likewise.
27195         (vmladavq_p_u16): Likewise.
27196         (vmladavaq_u16): Likewise.
27197         (vminvq_p_u16): Likewise.
27198         (vmaxvq_p_u16): Likewise.
27199         (vdupq_m_n_u16): Likewise.
27200         (vcmpneq_m_u16): Likewise.
27201         (vcmpneq_m_n_u16): Likewise.
27202         (vcmphiq_m_u16): Likewise.
27203         (vcmphiq_m_n_u16): Likewise.
27204         (vcmpeqq_m_u16): Likewise.
27205         (vcmpeqq_m_n_u16): Likewise.
27206         (vcmpcsq_m_u16): Likewise.
27207         (vcmpcsq_m_n_u16): Likewise.
27208         (vclzq_m_u16): Likewise.
27209         (vaddvaq_p_u16): Likewise.
27210         (vsriq_n_u16): Likewise.
27211         (vsliq_n_u16): Likewise.
27212         (vshlq_m_r_u16): Likewise.
27213         (vrshlq_m_n_u16): Likewise.
27214         (vqshlq_m_r_u16): Likewise.
27215         (vqrshlq_m_n_u16): Likewise.
27216         (vminavq_p_s16): Likewise.
27217         (vminaq_m_s16): Likewise.
27218         (vmaxavq_p_s16): Likewise.
27219         (vmaxaq_m_s16): Likewise.
27220         (vcmpneq_m_s16): Likewise.
27221         (vcmpneq_m_n_s16): Likewise.
27222         (vcmpltq_m_s16): Likewise.
27223         (vcmpltq_m_n_s16): Likewise.
27224         (vcmpleq_m_s16): Likewise.
27225         (vcmpleq_m_n_s16): Likewise.
27226         (vcmpgtq_m_s16): Likewise.
27227         (vcmpgtq_m_n_s16): Likewise.
27228         (vcmpgeq_m_s16): Likewise.
27229         (vcmpgeq_m_n_s16): Likewise.
27230         (vcmpeqq_m_s16): Likewise.
27231         (vcmpeqq_m_n_s16): Likewise.
27232         (vshlq_m_r_s16): Likewise.
27233         (vrshlq_m_n_s16): Likewise.
27234         (vrev64q_m_s16): Likewise.
27235         (vqshlq_m_r_s16): Likewise.
27236         (vqrshlq_m_n_s16): Likewise.
27237         (vqnegq_m_s16): Likewise.
27238         (vqabsq_m_s16): Likewise.
27239         (vnegq_m_s16): Likewise.
27240         (vmvnq_m_s16): Likewise.
27241         (vmlsdavxq_p_s16): Likewise.
27242         (vmlsdavq_p_s16): Likewise.
27243         (vmladavxq_p_s16): Likewise.
27244         (vmladavq_p_s16): Likewise.
27245         (vminvq_p_s16): Likewise.
27246         (vmaxvq_p_s16): Likewise.
27247         (vdupq_m_n_s16): Likewise.
27248         (vclzq_m_s16): Likewise.
27249         (vclsq_m_s16): Likewise.
27250         (vaddvaq_p_s16): Likewise.
27251         (vabsq_m_s16): Likewise.
27252         (vqrdmlsdhxq_s16): Likewise.
27253         (vqrdmlsdhq_s16): Likewise.
27254         (vqrdmlashq_n_s16): Likewise.
27255         (vqrdmlahq_n_s16): Likewise.
27256         (vqrdmladhxq_s16): Likewise.
27257         (vqrdmladhq_s16): Likewise.
27258         (vqdmlsdhxq_s16): Likewise.
27259         (vqdmlsdhq_s16): Likewise.
27260         (vqdmlahq_n_s16): Likewise.
27261         (vqdmladhxq_s16): Likewise.
27262         (vqdmladhq_s16): Likewise.
27263         (vmlsdavaxq_s16): Likewise.
27264         (vmlsdavaq_s16): Likewise.
27265         (vmlasq_n_s16): Likewise.
27266         (vmlaq_n_s16): Likewise.
27267         (vmladavaxq_s16): Likewise.
27268         (vmladavaq_s16): Likewise.
27269         (vsriq_n_s16): Likewise.
27270         (vsliq_n_s16): Likewise.
27271         (vpselq_u32): Likewise.
27272         (vpselq_s32): Likewise.
27273         (vrev64q_m_u32): Likewise.
27274         (vqrdmlashq_n_u32): Likewise.
27275         (vqrdmlahq_n_u32): Likewise.
27276         (vqdmlahq_n_u32): Likewise.
27277         (vmvnq_m_u32): Likewise.
27278         (vmlasq_n_u32): Likewise.
27279         (vmlaq_n_u32): Likewise.
27280         (vmladavq_p_u32): Likewise.
27281         (vmladavaq_u32): Likewise.
27282         (vminvq_p_u32): Likewise.
27283         (vmaxvq_p_u32): Likewise.
27284         (vdupq_m_n_u32): Likewise.
27285         (vcmpneq_m_u32): Likewise.
27286         (vcmpneq_m_n_u32): Likewise.
27287         (vcmphiq_m_u32): Likewise.
27288         (vcmphiq_m_n_u32): Likewise.
27289         (vcmpeqq_m_u32): Likewise.
27290         (vcmpeqq_m_n_u32): Likewise.
27291         (vcmpcsq_m_u32): Likewise.
27292         (vcmpcsq_m_n_u32): Likewise.
27293         (vclzq_m_u32): Likewise.
27294         (vaddvaq_p_u32): Likewise.
27295         (vsriq_n_u32): Likewise.
27296         (vsliq_n_u32): Likewise.
27297         (vshlq_m_r_u32): Likewise.
27298         (vrshlq_m_n_u32): Likewise.
27299         (vqshlq_m_r_u32): Likewise.
27300         (vqrshlq_m_n_u32): Likewise.
27301         (vminavq_p_s32): Likewise.
27302         (vminaq_m_s32): Likewise.
27303         (vmaxavq_p_s32): Likewise.
27304         (vmaxaq_m_s32): Likewise.
27305         (vcmpneq_m_s32): Likewise.
27306         (vcmpneq_m_n_s32): Likewise.
27307         (vcmpltq_m_s32): Likewise.
27308         (vcmpltq_m_n_s32): Likewise.
27309         (vcmpleq_m_s32): Likewise.
27310         (vcmpleq_m_n_s32): Likewise.
27311         (vcmpgtq_m_s32): Likewise.
27312         (vcmpgtq_m_n_s32): Likewise.
27313         (vcmpgeq_m_s32): Likewise.
27314         (vcmpgeq_m_n_s32): Likewise.
27315         (vcmpeqq_m_s32): Likewise.
27316         (vcmpeqq_m_n_s32): Likewise.
27317         (vshlq_m_r_s32): Likewise.
27318         (vrshlq_m_n_s32): Likewise.
27319         (vrev64q_m_s32): Likewise.
27320         (vqshlq_m_r_s32): Likewise.
27321         (vqrshlq_m_n_s32): Likewise.
27322         (vqnegq_m_s32): Likewise.
27323         (vqabsq_m_s32): Likewise.
27324         (vnegq_m_s32): Likewise.
27325         (vmvnq_m_s32): Likewise.
27326         (vmlsdavxq_p_s32): Likewise.
27327         (vmlsdavq_p_s32): Likewise.
27328         (vmladavxq_p_s32): Likewise.
27329         (vmladavq_p_s32): Likewise.
27330         (vminvq_p_s32): Likewise.
27331         (vmaxvq_p_s32): Likewise.
27332         (vdupq_m_n_s32): Likewise.
27333         (vclzq_m_s32): Likewise.
27334         (vclsq_m_s32): Likewise.
27335         (vaddvaq_p_s32): Likewise.
27336         (vabsq_m_s32): Likewise.
27337         (vqrdmlsdhxq_s32): Likewise.
27338         (vqrdmlsdhq_s32): Likewise.
27339         (vqrdmlashq_n_s32): Likewise.
27340         (vqrdmlahq_n_s32): Likewise.
27341         (vqrdmladhxq_s32): Likewise.
27342         (vqrdmladhq_s32): Likewise.
27343         (vqdmlsdhxq_s32): Likewise.
27344         (vqdmlsdhq_s32): Likewise.
27345         (vqdmlahq_n_s32): Likewise.
27346         (vqdmladhxq_s32): Likewise.
27347         (vqdmladhq_s32): Likewise.
27348         (vmlsdavaxq_s32): Likewise.
27349         (vmlsdavaq_s32): Likewise.
27350         (vmlasq_n_s32): Likewise.
27351         (vmlaq_n_s32): Likewise.
27352         (vmladavaxq_s32): Likewise.
27353         (vmladavaq_s32): Likewise.
27354         (vsriq_n_s32): Likewise.
27355         (vsliq_n_s32): Likewise.
27356         (vpselq_u64): Likewise.
27357         (vpselq_s64): Likewise.
27358         (__arm_vpselq_u8): Define intrinsic.
27359         (__arm_vpselq_s8): Likewise.
27360         (__arm_vrev64q_m_u8): Likewise.
27361         (__arm_vqrdmlashq_n_u8): Likewise.
27362         (__arm_vqrdmlahq_n_u8): Likewise.
27363         (__arm_vqdmlahq_n_u8): Likewise.
27364         (__arm_vmvnq_m_u8): Likewise.
27365         (__arm_vmlasq_n_u8): Likewise.
27366         (__arm_vmlaq_n_u8): Likewise.
27367         (__arm_vmladavq_p_u8): Likewise.
27368         (__arm_vmladavaq_u8): Likewise.
27369         (__arm_vminvq_p_u8): Likewise.
27370         (__arm_vmaxvq_p_u8): Likewise.
27371         (__arm_vdupq_m_n_u8): Likewise.
27372         (__arm_vcmpneq_m_u8): Likewise.
27373         (__arm_vcmpneq_m_n_u8): Likewise.
27374         (__arm_vcmphiq_m_u8): Likewise.
27375         (__arm_vcmphiq_m_n_u8): Likewise.
27376         (__arm_vcmpeqq_m_u8): Likewise.
27377         (__arm_vcmpeqq_m_n_u8): Likewise.
27378         (__arm_vcmpcsq_m_u8): Likewise.
27379         (__arm_vcmpcsq_m_n_u8): Likewise.
27380         (__arm_vclzq_m_u8): Likewise.
27381         (__arm_vaddvaq_p_u8): Likewise.
27382         (__arm_vsriq_n_u8): Likewise.
27383         (__arm_vsliq_n_u8): Likewise.
27384         (__arm_vshlq_m_r_u8): Likewise.
27385         (__arm_vrshlq_m_n_u8): Likewise.
27386         (__arm_vqshlq_m_r_u8): Likewise.
27387         (__arm_vqrshlq_m_n_u8): Likewise.
27388         (__arm_vminavq_p_s8): Likewise.
27389         (__arm_vminaq_m_s8): Likewise.
27390         (__arm_vmaxavq_p_s8): Likewise.
27391         (__arm_vmaxaq_m_s8): Likewise.
27392         (__arm_vcmpneq_m_s8): Likewise.
27393         (__arm_vcmpneq_m_n_s8): Likewise.
27394         (__arm_vcmpltq_m_s8): Likewise.
27395         (__arm_vcmpltq_m_n_s8): Likewise.
27396         (__arm_vcmpleq_m_s8): Likewise.
27397         (__arm_vcmpleq_m_n_s8): Likewise.
27398         (__arm_vcmpgtq_m_s8): Likewise.
27399         (__arm_vcmpgtq_m_n_s8): Likewise.
27400         (__arm_vcmpgeq_m_s8): Likewise.
27401         (__arm_vcmpgeq_m_n_s8): Likewise.
27402         (__arm_vcmpeqq_m_s8): Likewise.
27403         (__arm_vcmpeqq_m_n_s8): Likewise.
27404         (__arm_vshlq_m_r_s8): Likewise.
27405         (__arm_vrshlq_m_n_s8): Likewise.
27406         (__arm_vrev64q_m_s8): Likewise.
27407         (__arm_vqshlq_m_r_s8): Likewise.
27408         (__arm_vqrshlq_m_n_s8): Likewise.
27409         (__arm_vqnegq_m_s8): Likewise.
27410         (__arm_vqabsq_m_s8): Likewise.
27411         (__arm_vnegq_m_s8): Likewise.
27412         (__arm_vmvnq_m_s8): Likewise.
27413         (__arm_vmlsdavxq_p_s8): Likewise.
27414         (__arm_vmlsdavq_p_s8): Likewise.
27415         (__arm_vmladavxq_p_s8): Likewise.
27416         (__arm_vmladavq_p_s8): Likewise.
27417         (__arm_vminvq_p_s8): Likewise.
27418         (__arm_vmaxvq_p_s8): Likewise.
27419         (__arm_vdupq_m_n_s8): Likewise.
27420         (__arm_vclzq_m_s8): Likewise.
27421         (__arm_vclsq_m_s8): Likewise.
27422         (__arm_vaddvaq_p_s8): Likewise.
27423         (__arm_vabsq_m_s8): Likewise.
27424         (__arm_vqrdmlsdhxq_s8): Likewise.
27425         (__arm_vqrdmlsdhq_s8): Likewise.
27426         (__arm_vqrdmlashq_n_s8): Likewise.
27427         (__arm_vqrdmlahq_n_s8): Likewise.
27428         (__arm_vqrdmladhxq_s8): Likewise.
27429         (__arm_vqrdmladhq_s8): Likewise.
27430         (__arm_vqdmlsdhxq_s8): Likewise.
27431         (__arm_vqdmlsdhq_s8): Likewise.
27432         (__arm_vqdmlahq_n_s8): Likewise.
27433         (__arm_vqdmladhxq_s8): Likewise.
27434         (__arm_vqdmladhq_s8): Likewise.
27435         (__arm_vmlsdavaxq_s8): Likewise.
27436         (__arm_vmlsdavaq_s8): Likewise.
27437         (__arm_vmlasq_n_s8): Likewise.
27438         (__arm_vmlaq_n_s8): Likewise.
27439         (__arm_vmladavaxq_s8): Likewise.
27440         (__arm_vmladavaq_s8): Likewise.
27441         (__arm_vsriq_n_s8): Likewise.
27442         (__arm_vsliq_n_s8): Likewise.
27443         (__arm_vpselq_u16): Likewise.
27444         (__arm_vpselq_s16): Likewise.
27445         (__arm_vrev64q_m_u16): Likewise.
27446         (__arm_vqrdmlashq_n_u16): Likewise.
27447         (__arm_vqrdmlahq_n_u16): Likewise.
27448         (__arm_vqdmlahq_n_u16): Likewise.
27449         (__arm_vmvnq_m_u16): Likewise.
27450         (__arm_vmlasq_n_u16): Likewise.
27451         (__arm_vmlaq_n_u16): Likewise.
27452         (__arm_vmladavq_p_u16): Likewise.
27453         (__arm_vmladavaq_u16): Likewise.
27454         (__arm_vminvq_p_u16): Likewise.
27455         (__arm_vmaxvq_p_u16): Likewise.
27456         (__arm_vdupq_m_n_u16): Likewise.
27457         (__arm_vcmpneq_m_u16): Likewise.
27458         (__arm_vcmpneq_m_n_u16): Likewise.
27459         (__arm_vcmphiq_m_u16): Likewise.
27460         (__arm_vcmphiq_m_n_u16): Likewise.
27461         (__arm_vcmpeqq_m_u16): Likewise.
27462         (__arm_vcmpeqq_m_n_u16): Likewise.
27463         (__arm_vcmpcsq_m_u16): Likewise.
27464         (__arm_vcmpcsq_m_n_u16): Likewise.
27465         (__arm_vclzq_m_u16): Likewise.
27466         (__arm_vaddvaq_p_u16): Likewise.
27467         (__arm_vsriq_n_u16): Likewise.
27468         (__arm_vsliq_n_u16): Likewise.
27469         (__arm_vshlq_m_r_u16): Likewise.
27470         (__arm_vrshlq_m_n_u16): Likewise.
27471         (__arm_vqshlq_m_r_u16): Likewise.
27472         (__arm_vqrshlq_m_n_u16): Likewise.
27473         (__arm_vminavq_p_s16): Likewise.
27474         (__arm_vminaq_m_s16): Likewise.
27475         (__arm_vmaxavq_p_s16): Likewise.
27476         (__arm_vmaxaq_m_s16): Likewise.
27477         (__arm_vcmpneq_m_s16): Likewise.
27478         (__arm_vcmpneq_m_n_s16): Likewise.
27479         (__arm_vcmpltq_m_s16): Likewise.
27480         (__arm_vcmpltq_m_n_s16): Likewise.
27481         (__arm_vcmpleq_m_s16): Likewise.
27482         (__arm_vcmpleq_m_n_s16): Likewise.
27483         (__arm_vcmpgtq_m_s16): Likewise.
27484         (__arm_vcmpgtq_m_n_s16): Likewise.
27485         (__arm_vcmpgeq_m_s16): Likewise.
27486         (__arm_vcmpgeq_m_n_s16): Likewise.
27487         (__arm_vcmpeqq_m_s16): Likewise.
27488         (__arm_vcmpeqq_m_n_s16): Likewise.
27489         (__arm_vshlq_m_r_s16): Likewise.
27490         (__arm_vrshlq_m_n_s16): Likewise.
27491         (__arm_vrev64q_m_s16): Likewise.
27492         (__arm_vqshlq_m_r_s16): Likewise.
27493         (__arm_vqrshlq_m_n_s16): Likewise.
27494         (__arm_vqnegq_m_s16): Likewise.
27495         (__arm_vqabsq_m_s16): Likewise.
27496         (__arm_vnegq_m_s16): Likewise.
27497         (__arm_vmvnq_m_s16): Likewise.
27498         (__arm_vmlsdavxq_p_s16): Likewise.
27499         (__arm_vmlsdavq_p_s16): Likewise.
27500         (__arm_vmladavxq_p_s16): Likewise.
27501         (__arm_vmladavq_p_s16): Likewise.
27502         (__arm_vminvq_p_s16): Likewise.
27503         (__arm_vmaxvq_p_s16): Likewise.
27504         (__arm_vdupq_m_n_s16): Likewise.
27505         (__arm_vclzq_m_s16): Likewise.
27506         (__arm_vclsq_m_s16): Likewise.
27507         (__arm_vaddvaq_p_s16): Likewise.
27508         (__arm_vabsq_m_s16): Likewise.
27509         (__arm_vqrdmlsdhxq_s16): Likewise.
27510         (__arm_vqrdmlsdhq_s16): Likewise.
27511         (__arm_vqrdmlashq_n_s16): Likewise.
27512         (__arm_vqrdmlahq_n_s16): Likewise.
27513         (__arm_vqrdmladhxq_s16): Likewise.
27514         (__arm_vqrdmladhq_s16): Likewise.
27515         (__arm_vqdmlsdhxq_s16): Likewise.
27516         (__arm_vqdmlsdhq_s16): Likewise.
27517         (__arm_vqdmlahq_n_s16): Likewise.
27518         (__arm_vqdmladhxq_s16): Likewise.
27519         (__arm_vqdmladhq_s16): Likewise.
27520         (__arm_vmlsdavaxq_s16): Likewise.
27521         (__arm_vmlsdavaq_s16): Likewise.
27522         (__arm_vmlasq_n_s16): Likewise.
27523         (__arm_vmlaq_n_s16): Likewise.
27524         (__arm_vmladavaxq_s16): Likewise.
27525         (__arm_vmladavaq_s16): Likewise.
27526         (__arm_vsriq_n_s16): Likewise.
27527         (__arm_vsliq_n_s16): Likewise.
27528         (__arm_vpselq_u32): Likewise.
27529         (__arm_vpselq_s32): Likewise.
27530         (__arm_vrev64q_m_u32): Likewise.
27531         (__arm_vqrdmlashq_n_u32): Likewise.
27532         (__arm_vqrdmlahq_n_u32): Likewise.
27533         (__arm_vqdmlahq_n_u32): Likewise.
27534         (__arm_vmvnq_m_u32): Likewise.
27535         (__arm_vmlasq_n_u32): Likewise.
27536         (__arm_vmlaq_n_u32): Likewise.
27537         (__arm_vmladavq_p_u32): Likewise.
27538         (__arm_vmladavaq_u32): Likewise.
27539         (__arm_vminvq_p_u32): Likewise.
27540         (__arm_vmaxvq_p_u32): Likewise.
27541         (__arm_vdupq_m_n_u32): Likewise.
27542         (__arm_vcmpneq_m_u32): Likewise.
27543         (__arm_vcmpneq_m_n_u32): Likewise.
27544         (__arm_vcmphiq_m_u32): Likewise.
27545         (__arm_vcmphiq_m_n_u32): Likewise.
27546         (__arm_vcmpeqq_m_u32): Likewise.
27547         (__arm_vcmpeqq_m_n_u32): Likewise.
27548         (__arm_vcmpcsq_m_u32): Likewise.
27549         (__arm_vcmpcsq_m_n_u32): Likewise.
27550         (__arm_vclzq_m_u32): Likewise.
27551         (__arm_vaddvaq_p_u32): Likewise.
27552         (__arm_vsriq_n_u32): Likewise.
27553         (__arm_vsliq_n_u32): Likewise.
27554         (__arm_vshlq_m_r_u32): Likewise.
27555         (__arm_vrshlq_m_n_u32): Likewise.
27556         (__arm_vqshlq_m_r_u32): Likewise.
27557         (__arm_vqrshlq_m_n_u32): Likewise.
27558         (__arm_vminavq_p_s32): Likewise.
27559         (__arm_vminaq_m_s32): Likewise.
27560         (__arm_vmaxavq_p_s32): Likewise.
27561         (__arm_vmaxaq_m_s32): Likewise.
27562         (__arm_vcmpneq_m_s32): Likewise.
27563         (__arm_vcmpneq_m_n_s32): Likewise.
27564         (__arm_vcmpltq_m_s32): Likewise.
27565         (__arm_vcmpltq_m_n_s32): Likewise.
27566         (__arm_vcmpleq_m_s32): Likewise.
27567         (__arm_vcmpleq_m_n_s32): Likewise.
27568         (__arm_vcmpgtq_m_s32): Likewise.
27569         (__arm_vcmpgtq_m_n_s32): Likewise.
27570         (__arm_vcmpgeq_m_s32): Likewise.
27571         (__arm_vcmpgeq_m_n_s32): Likewise.
27572         (__arm_vcmpeqq_m_s32): Likewise.
27573         (__arm_vcmpeqq_m_n_s32): Likewise.
27574         (__arm_vshlq_m_r_s32): Likewise.
27575         (__arm_vrshlq_m_n_s32): Likewise.
27576         (__arm_vrev64q_m_s32): Likewise.
27577         (__arm_vqshlq_m_r_s32): Likewise.
27578         (__arm_vqrshlq_m_n_s32): Likewise.
27579         (__arm_vqnegq_m_s32): Likewise.
27580         (__arm_vqabsq_m_s32): Likewise.
27581         (__arm_vnegq_m_s32): Likewise.
27582         (__arm_vmvnq_m_s32): Likewise.
27583         (__arm_vmlsdavxq_p_s32): Likewise.
27584         (__arm_vmlsdavq_p_s32): Likewise.
27585         (__arm_vmladavxq_p_s32): Likewise.
27586         (__arm_vmladavq_p_s32): Likewise.
27587         (__arm_vminvq_p_s32): Likewise.
27588         (__arm_vmaxvq_p_s32): Likewise.
27589         (__arm_vdupq_m_n_s32): Likewise.
27590         (__arm_vclzq_m_s32): Likewise.
27591         (__arm_vclsq_m_s32): Likewise.
27592         (__arm_vaddvaq_p_s32): Likewise.
27593         (__arm_vabsq_m_s32): Likewise.
27594         (__arm_vqrdmlsdhxq_s32): Likewise.
27595         (__arm_vqrdmlsdhq_s32): Likewise.
27596         (__arm_vqrdmlashq_n_s32): Likewise.
27597         (__arm_vqrdmlahq_n_s32): Likewise.
27598         (__arm_vqrdmladhxq_s32): Likewise.
27599         (__arm_vqrdmladhq_s32): Likewise.
27600         (__arm_vqdmlsdhxq_s32): Likewise.
27601         (__arm_vqdmlsdhq_s32): Likewise.
27602         (__arm_vqdmlahq_n_s32): Likewise.
27603         (__arm_vqdmladhxq_s32): Likewise.
27604         (__arm_vqdmladhq_s32): Likewise.
27605         (__arm_vmlsdavaxq_s32): Likewise.
27606         (__arm_vmlsdavaq_s32): Likewise.
27607         (__arm_vmlasq_n_s32): Likewise.
27608         (__arm_vmlaq_n_s32): Likewise.
27609         (__arm_vmladavaxq_s32): Likewise.
27610         (__arm_vmladavaq_s32): Likewise.
27611         (__arm_vsriq_n_s32): Likewise.
27612         (__arm_vsliq_n_s32): Likewise.
27613         (__arm_vpselq_u64): Likewise.
27614         (__arm_vpselq_s64): Likewise.
27615         (vcmpneq_m_n): Define polymorphic variant.
27616         (vcmpneq_m): Likewise.
27617         (vqrdmlsdhq): Likewise.
27618         (vqrdmlsdhxq): Likewise.
27619         (vqrshlq_m_n): Likewise.
27620         (vqshlq_m_r): Likewise.
27621         (vrev64q_m): Likewise.
27622         (vrshlq_m_n): Likewise.
27623         (vshlq_m_r): Likewise.
27624         (vsliq_n): Likewise.
27625         (vsriq_n): Likewise.
27626         (vqrdmlashq_n): Likewise.
27627         (vqrdmlahq): Likewise.
27628         (vqrdmladhxq): Likewise.
27629         (vqrdmladhq): Likewise.
27630         (vqnegq_m): Likewise.
27631         (vqdmlsdhxq): Likewise.
27632         (vabsq_m): Likewise.
27633         (vclsq_m): Likewise.
27634         (vclzq_m): Likewise.
27635         (vcmpgeq_m): Likewise.
27636         (vcmpgeq_m_n): Likewise.
27637         (vdupq_m_n): Likewise.
27638         (vmaxaq_m): Likewise.
27639         (vmlaq_n): Likewise.
27640         (vmlasq_n): Likewise.
27641         (vmvnq_m): Likewise.
27642         (vnegq_m): Likewise.
27643         (vpselq): Likewise.
27644         (vqdmlahq_n): Likewise.
27645         (vqrdmlahq_n): Likewise.
27646         (vqdmlsdhq): Likewise.
27647         (vqdmladhq): Likewise.
27648         (vqabsq_m): Likewise.
27649         (vminaq_m): Likewise.
27650         (vrmlaldavhaq): Likewise.
27651         (vmlsdavxq_p): Likewise.
27652         (vmlsdavq_p): Likewise. 
27653         (vmlsdavaxq): Likewise. 
27654         (vmlsdavaq): Likewise.  
27655         (vaddvaq_p): Likewise.  
27656         (vcmpcsq_m_n): Likewise.        
27657         (vcmpcsq_m): Likewise.  
27658         (vcmpeqq_m_n): Likewise.        
27659         (vcmpeqq_m): Likewise.  
27660         (vmladavxq_p): Likewise.        
27661         (vmladavq_p): Likewise. 
27662         (vmladavaxq): Likewise. 
27663         (vmladavaq): Likewise.  
27664         (vminvq_p): Likewise.   
27665         (vminavq_p): Likewise.  
27666         (vmaxvq_p): Likewise.   
27667         (vmaxavq_p): Likewise.  
27668         (vcmpltq_m_n): Likewise.        
27669         (vcmpltq_m): Likewise.  
27670         (vcmpleq_m): Likewise.  
27671         (vcmpleq_m_n): Likewise.        
27672         (vcmphiq_m_n): Likewise.        
27673         (vcmphiq_m): Likewise.  
27674         (vcmpgtq_m_n): Likewise.        
27675         (vcmpgtq_m): Likewise.  
27676         * config/arm/arm_mve_builtins.def (TERNOP_NONE_NONE_NONE_IMM): Use
27677         builtin qualifier.
27678         (TERNOP_NONE_NONE_NONE_NONE): Likewise.
27679         (TERNOP_NONE_NONE_NONE_UNONE): Likewise.
27680         (TERNOP_UNONE_NONE_NONE_UNONE): Likewise.
27681         (TERNOP_UNONE_UNONE_NONE_UNONE): Likewise.
27682         (TERNOP_UNONE_UNONE_UNONE_IMM): Likewise.
27683         (TERNOP_UNONE_UNONE_UNONE_UNONE): Likewise.
27684         * config/arm/constraints.md (Rc): Define constraint to check constant is
27685         in the range of 0 to 15.
27686         (Re): Define constraint to check constant is in the range of 0 to 31.
27687         * config/arm/mve.md (VADDVAQ_P): Define iterator.
27688         (VCLZQ_M): Likewise.
27689         (VCMPEQQ_M_N): Likewise.
27690         (VCMPEQQ_M): Likewise.
27691         (VCMPNEQ_M_N): Likewise.
27692         (VCMPNEQ_M): Likewise.
27693         (VDUPQ_M_N): Likewise.
27694         (VMAXVQ_P): Likewise.
27695         (VMINVQ_P): Likewise.
27696         (VMLADAVAQ): Likewise.
27697         (VMLADAVQ_P): Likewise.
27698         (VMLAQ_N): Likewise.
27699         (VMLASQ_N): Likewise.
27700         (VMVNQ_M): Likewise.
27701         (VPSELQ): Likewise.
27702         (VQDMLAHQ_N): Likewise.
27703         (VQRDMLAHQ_N): Likewise.
27704         (VQRDMLASHQ_N): Likewise.
27705         (VQRSHLQ_M_N): Likewise.
27706         (VQSHLQ_M_R): Likewise.
27707         (VREV64Q_M): Likewise.
27708         (VRSHLQ_M_N): Likewise.
27709         (VSHLQ_M_R): Likewise.
27710         (VSLIQ_N): Likewise.
27711         (VSRIQ_N): Likewise.
27712         (mve_vabsq_m_s<mode>): Define RTL pattern.
27713         (mve_vaddvaq_p_<supf><mode>): Likewise.
27714         (mve_vclsq_m_s<mode>): Likewise.
27715         (mve_vclzq_m_<supf><mode>): Likewise.
27716         (mve_vcmpcsq_m_n_u<mode>): Likewise.
27717         (mve_vcmpcsq_m_u<mode>): Likewise.
27718         (mve_vcmpeqq_m_n_<supf><mode>): Likewise.
27719         (mve_vcmpeqq_m_<supf><mode>): Likewise.
27720         (mve_vcmpgeq_m_n_s<mode>): Likewise.
27721         (mve_vcmpgeq_m_s<mode>): Likewise.
27722         (mve_vcmpgtq_m_n_s<mode>): Likewise.
27723         (mve_vcmpgtq_m_s<mode>): Likewise.
27724         (mve_vcmphiq_m_n_u<mode>): Likewise.
27725         (mve_vcmphiq_m_u<mode>): Likewise.
27726         (mve_vcmpleq_m_n_s<mode>): Likewise.
27727         (mve_vcmpleq_m_s<mode>): Likewise.
27728         (mve_vcmpltq_m_n_s<mode>): Likewise.
27729         (mve_vcmpltq_m_s<mode>): Likewise.
27730         (mve_vcmpneq_m_n_<supf><mode>): Likewise.
27731         (mve_vcmpneq_m_<supf><mode>): Likewise.
27732         (mve_vdupq_m_n_<supf><mode>): Likewise.
27733         (mve_vmaxaq_m_s<mode>): Likewise.
27734         (mve_vmaxavq_p_s<mode>): Likewise.
27735         (mve_vmaxvq_p_<supf><mode>): Likewise.
27736         (mve_vminaq_m_s<mode>): Likewise.
27737         (mve_vminavq_p_s<mode>): Likewise.
27738         (mve_vminvq_p_<supf><mode>): Likewise.
27739         (mve_vmladavaq_<supf><mode>): Likewise.
27740         (mve_vmladavq_p_<supf><mode>): Likewise.
27741         (mve_vmladavxq_p_s<mode>): Likewise.
27742         (mve_vmlaq_n_<supf><mode>): Likewise.
27743         (mve_vmlasq_n_<supf><mode>): Likewise.
27744         (mve_vmlsdavq_p_s<mode>): Likewise.
27745         (mve_vmlsdavxq_p_s<mode>): Likewise.
27746         (mve_vmvnq_m_<supf><mode>): Likewise.
27747         (mve_vnegq_m_s<mode>): Likewise.
27748         (mve_vpselq_<supf><mode>): Likewise.
27749         (mve_vqabsq_m_s<mode>): Likewise.
27750         (mve_vqdmlahq_n_<supf><mode>): Likewise.
27751         (mve_vqnegq_m_s<mode>): Likewise.
27752         (mve_vqrdmladhq_s<mode>): Likewise.
27753         (mve_vqrdmladhxq_s<mode>): Likewise.
27754         (mve_vqrdmlahq_n_<supf><mode>): Likewise.
27755         (mve_vqrdmlashq_n_<supf><mode>): Likewise.
27756         (mve_vqrdmlsdhq_s<mode>): Likewise.
27757         (mve_vqrdmlsdhxq_s<mode>): Likewise.
27758         (mve_vqrshlq_m_n_<supf><mode>): Likewise.
27759         (mve_vqshlq_m_r_<supf><mode>): Likewise.
27760         (mve_vrev64q_m_<supf><mode>): Likewise.
27761         (mve_vrshlq_m_n_<supf><mode>): Likewise.
27762         (mve_vshlq_m_r_<supf><mode>): Likewise.
27763         (mve_vsliq_n_<supf><mode>): Likewise.
27764         (mve_vsriq_n_<supf><mode>): Likewise.
27765         (mve_vqdmlsdhxq_s<mode>): Likewise.
27766         (mve_vqdmlsdhq_s<mode>): Likewise.
27767         (mve_vqdmladhxq_s<mode>): Likewise.
27768         (mve_vqdmladhq_s<mode>): Likewise.
27769         (mve_vmlsdavaxq_s<mode>): Likewise.
27770         (mve_vmlsdavaq_s<mode>): Likewise.
27771         (mve_vmladavaxq_s<mode>): Likewise.
27772         * config/arm/predicates.md (mve_imm_15):Define predicate to check the
27773         matching constraint Rc.
27774         (mve_imm_31): Define predicate to check the matching constraint Re.
27776 2020-03-18  Andrew Stubbs  <ams@codesourcery.com>
27778         * config/gcn/gcn-valu.md (vec_cmp<mode>di): Set operand 1 to DImode.
27779         (vec_cmp<mode>di_dup): Likewise.
27780         * config/gcn/gcn.h (STORE_FLAG_VALUE): Set to -1.
27782 2020-03-18  Andrew Stubbs  <ams@codesourcery.com>
27784         * config/gcn/gcn-valu.md (COND_MODE): Delete.
27785         (COND_INT_MODE): Delete.
27786         (cond_op): Add "mult".
27787         (cond_<expander><mode>): Use VEC_ALLREG_MODE.
27788         (cond_<expander><mode>): Use VEC_ALLREG_INT_MODE.
27790 2020-03-18   Richard Biener  <rguenther@suse.de>
27792         PR middle-end/94206
27793         * gimple-fold.c (gimple_fold_builtin_memset): Avoid using
27794         partial int modes or not mode-precision integer types for
27795         the store.
27797 2020-03-18  Jakub Jelinek  <jakub@redhat.com>
27799         * asan.c (get_mem_refs_of_builtin_call): Fix up duplicated word issue
27800         in a comment.
27801         * config/arc/arc.c (frame_stack_add): Likewise.
27802         * gimple-loop-versioning.cc (loop_versioning::analyze_arbitrary_term):
27803         Likewise.
27804         * ipa-predicate.c (predicate::remap_after_inlining): Likewise.
27805         * tree-ssa-strlen.h (handle_printf_call): Likewise.
27806         * tree-ssa-strlen.c (is_strlen_related_p): Likewise.
27807         * optinfo-emit-json.cc (optrecord_json_writer::add_record): Likewise.
27809 2020-03-18  Duan bo  <duanbo3@huawei.com>
27811         PR target/94201
27812         * config/aarch64/aarch64.md (ldr_got_tiny): Delete.
27813         (@ldr_got_tiny_<mode>): New pattern.
27814         (ldr_got_tiny_sidi): Likewise.
27815         * config/aarch64/aarch64.c (aarch64_load_symref_appropriately): Use
27816         them to handle SYMBOL_TINY_GOT for ILP32.
27818 2020-03-18  Richard Sandiford  <richard.sandiford@arm.com>
27820         * config/aarch64/aarch64.c (aarch64_sve_abi): Treat p12-p15 as
27821         call-preserved for SVE PCS functions.
27822         (aarch64_layout_frame): Cope with up to 12 predicate save slots.
27823         Optimize the case in which there are no following vector save slots.
27825 2020-03-18  Richard Biener  <rguenther@suse.de>
27827         PR middle-end/94188
27828         * fold-const.c (build_fold_addr_expr): Convert address to
27829         correct type.
27830         * asan.c (maybe_create_ssa_name): Strip useless type conversions.
27831         * gimple-fold.c (gimple_fold_stmt_to_constant_1): Use build1
27832         to build the ADDR_EXPR which we don't really want to simplify.
27833         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
27834         * tree-ssa-loop-im.c (gather_mem_refs_stmt): Likewise.
27835         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
27836         (simplify_builtin_call): Strip useless type conversions.
27837         * tree-ssa-strlen.c (new_strinfo): Likewise.
27839 2020-03-17  Alexey Neyman  <stilor@att.net>
27841         PR debug/93751
27842         * dwarf2out.c (gen_decl_die): Proceed to generating the DIE if
27843         the debug level is terse and the declaration is public. Do not
27844         generate type info.
27845         (dwarf2out_decl): Same.
27846         (add_type_attribute): Return immediately if debug level is
27847         terse.
27849 2020-03-17  Richard Sandiford  <richard.sandiford@arm.com>
27851         * config/aarch64/iterators.md (Vmtype): Handle V4BF and V8BF.
27853 2020-03-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
27854             Mihail Ionescu  <mihail.ionescu@arm.com>
27855             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
27857         * config/arm/arm-builtins.c (TERNOP_UNONE_UNONE_UNONE_IMM_QUALIFIERS):
27858         Define qualifier for ternary operands.
27859         (TERNOP_UNONE_UNONE_NONE_NONE_QUALIFIERS): Likewise.
27860         (TERNOP_UNONE_NONE_UNONE_IMM_QUALIFIERS): Likewise.
27861         (TERNOP_NONE_NONE_UNONE_IMM_QUALIFIERS): Likewise.
27862         (TERNOP_UNONE_UNONE_NONE_IMM_QUALIFIERS): Likewise.
27863         (TERNOP_UNONE_UNONE_NONE_UNONE_QUALIFIERS): Likewise.
27864         (TERNOP_UNONE_UNONE_IMM_UNONE_QUALIFIERS): Likewise.
27865         (TERNOP_UNONE_NONE_NONE_UNONE_QUALIFIERS): Likewise.
27866         (TERNOP_NONE_NONE_NONE_IMM_QUALIFIERS): Likewise.
27867         (TERNOP_NONE_NONE_NONE_UNONE_QUALIFIERS): Likewise.
27868         (TERNOP_NONE_NONE_IMM_UNONE_QUALIFIERS): Likewise.
27869         (TERNOP_NONE_NONE_UNONE_UNONE_QUALIFIERS): Likewise.
27870         (TERNOP_UNONE_UNONE_UNONE_UNONE_QUALIFIERS): Likewise.
27871         (TERNOP_NONE_NONE_NONE_NONE_QUALIFIERS): Likewise.
27872         * config/arm/arm_mve.h (vabavq_s8): Define macro.
27873         (vabavq_s16): Likewise.
27874         (vabavq_s32): Likewise.
27875         (vbicq_m_n_s16): Likewise.
27876         (vbicq_m_n_s32): Likewise.
27877         (vbicq_m_n_u16): Likewise.
27878         (vbicq_m_n_u32): Likewise.
27879         (vcmpeqq_m_f16): Likewise.
27880         (vcmpeqq_m_f32): Likewise.
27881         (vcvtaq_m_s16_f16): Likewise.
27882         (vcvtaq_m_u16_f16): Likewise.
27883         (vcvtaq_m_s32_f32): Likewise.
27884         (vcvtaq_m_u32_f32): Likewise.
27885         (vcvtq_m_f16_s16): Likewise.
27886         (vcvtq_m_f16_u16): Likewise.
27887         (vcvtq_m_f32_s32): Likewise.
27888         (vcvtq_m_f32_u32): Likewise.
27889         (vqrshrnbq_n_s16): Likewise.
27890         (vqrshrnbq_n_u16): Likewise.
27891         (vqrshrnbq_n_s32): Likewise.
27892         (vqrshrnbq_n_u32): Likewise.
27893         (vqrshrunbq_n_s16): Likewise.
27894         (vqrshrunbq_n_s32): Likewise.
27895         (vrmlaldavhaq_s32): Likewise.
27896         (vrmlaldavhaq_u32): Likewise.
27897         (vshlcq_s8): Likewise.
27898         (vshlcq_u8): Likewise.
27899         (vshlcq_s16): Likewise.
27900         (vshlcq_u16): Likewise.
27901         (vshlcq_s32): Likewise.
27902         (vshlcq_u32): Likewise.
27903         (vabavq_u8): Likewise.
27904         (vabavq_u16): Likewise.
27905         (vabavq_u32): Likewise.
27906         (__arm_vabavq_s8): Define intrinsic.
27907         (__arm_vabavq_s16): Likewise.
27908         (__arm_vabavq_s32): Likewise.
27909         (__arm_vabavq_u8): Likewise.
27910         (__arm_vabavq_u16): Likewise.
27911         (__arm_vabavq_u32): Likewise.
27912         (__arm_vbicq_m_n_s16): Likewise.
27913         (__arm_vbicq_m_n_s32): Likewise.
27914         (__arm_vbicq_m_n_u16): Likewise.
27915         (__arm_vbicq_m_n_u32): Likewise.
27916         (__arm_vqrshrnbq_n_s16): Likewise.
27917         (__arm_vqrshrnbq_n_u16): Likewise.
27918         (__arm_vqrshrnbq_n_s32): Likewise.
27919         (__arm_vqrshrnbq_n_u32): Likewise.
27920         (__arm_vqrshrunbq_n_s16): Likewise.
27921         (__arm_vqrshrunbq_n_s32): Likewise.
27922         (__arm_vrmlaldavhaq_s32): Likewise.
27923         (__arm_vrmlaldavhaq_u32): Likewise.
27924         (__arm_vshlcq_s8): Likewise.
27925         (__arm_vshlcq_u8): Likewise.
27926         (__arm_vshlcq_s16): Likewise.
27927         (__arm_vshlcq_u16): Likewise.
27928         (__arm_vshlcq_s32): Likewise.
27929         (__arm_vshlcq_u32): Likewise.
27930         (__arm_vcmpeqq_m_f16): Likewise.
27931         (__arm_vcmpeqq_m_f32): Likewise.
27932         (__arm_vcvtaq_m_s16_f16): Likewise.
27933         (__arm_vcvtaq_m_u16_f16): Likewise.
27934         (__arm_vcvtaq_m_s32_f32): Likewise.
27935         (__arm_vcvtaq_m_u32_f32): Likewise.
27936         (__arm_vcvtq_m_f16_s16): Likewise.
27937         (__arm_vcvtq_m_f16_u16): Likewise.
27938         (__arm_vcvtq_m_f32_s32): Likewise.
27939         (__arm_vcvtq_m_f32_u32): Likewise.
27940         (vcvtaq_m): Define polymorphic variant.
27941         (vcvtq_m): Likewise.
27942         (vabavq): Likewise.
27943         (vshlcq): Likewise.
27944         (vbicq_m_n): Likewise.
27945         (vqrshrnbq_n): Likewise.
27946         (vqrshrunbq_n): Likewise.
27947         * config/arm/arm_mve_builtins.def
27948         (TERNOP_UNONE_UNONE_UNONE_IMM_QUALIFIERS): Use the builtin qualifer.
27949         (TERNOP_UNONE_UNONE_NONE_NONE_QUALIFIERS): Likewise.
27950         (TERNOP_UNONE_NONE_UNONE_IMM_QUALIFIERS): Likewise.
27951         (TERNOP_NONE_NONE_UNONE_IMM_QUALIFIERS): Likewise.
27952         (TERNOP_UNONE_UNONE_NONE_IMM_QUALIFIERS): Likewise.
27953         (TERNOP_UNONE_UNONE_NONE_UNONE_QUALIFIERS): Likewise.
27954         (TERNOP_UNONE_UNONE_IMM_UNONE_QUALIFIERS): Likewise.
27955         (TERNOP_UNONE_NONE_NONE_UNONE_QUALIFIERS): Likewise.
27956         (TERNOP_NONE_NONE_NONE_IMM_QUALIFIERS): Likewise.
27957         (TERNOP_NONE_NONE_NONE_UNONE_QUALIFIERS): Likewise.
27958         (TERNOP_NONE_NONE_IMM_UNONE_QUALIFIERS): Likewise.
27959         (TERNOP_NONE_NONE_UNONE_UNONE_QUALIFIERS): Likewise.
27960         (TERNOP_UNONE_UNONE_UNONE_UNONE_QUALIFIERS): Likewise.
27961         (TERNOP_NONE_NONE_NONE_NONE_QUALIFIERS): Likewise.
27962         * config/arm/mve.md (VBICQ_M_N): Define iterator.
27963         (VCVTAQ_M): Likewise.
27964         (VCVTQ_M_TO_F): Likewise.
27965         (VQRSHRNBQ_N): Likewise.
27966         (VABAVQ): Likewise.
27967         (VSHLCQ): Likewise.
27968         (VRMLALDAVHAQ): Likewise.
27969         (mve_vbicq_m_n_<supf><mode>): Define RTL pattern.
27970         (mve_vcmpeqq_m_f<mode>): Likewise.
27971         (mve_vcvtaq_m_<supf><mode>): Likewise.
27972         (mve_vcvtq_m_to_f_<supf><mode>): Likewise.
27973         (mve_vqrshrnbq_n_<supf><mode>): Likewise.
27974         (mve_vqrshrunbq_n_s<mode>): Likewise.
27975         (mve_vrmlaldavhaq_<supf>v4si): Likewise.
27976         (mve_vabavq_<supf><mode>): Likewise.
27977         (mve_vshlcq_<supf><mode>): Likewise.
27978         (mve_vshlcq_<supf><mode>): Likewise.
27979         (mve_vshlcq_vec_<supf><mode>): Define RTL expand.
27980         (mve_vshlcq_carry_<supf><mode>): Likewise.
27982 2020-03-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
27983             Mihail Ionescu  <mihail.ionescu@arm.com>
27984             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
27986         * config/arm/arm_mve.h (vqmovntq_u16): Define macro.
27987         (vqmovnbq_u16): Likewise.
27988         (vmulltq_poly_p8): Likewise.
27989         (vmullbq_poly_p8): Likewise.
27990         (vmovntq_u16): Likewise.
27991         (vmovnbq_u16): Likewise.
27992         (vmlaldavxq_u16): Likewise.
27993         (vmlaldavq_u16): Likewise.
27994         (vqmovuntq_s16): Likewise.
27995         (vqmovunbq_s16): Likewise.
27996         (vshlltq_n_u8): Likewise.
27997         (vshllbq_n_u8): Likewise.
27998         (vorrq_n_u16): Likewise.
27999         (vbicq_n_u16): Likewise.
28000         (vcmpneq_n_f16): Likewise.
28001         (vcmpneq_f16): Likewise.
28002         (vcmpltq_n_f16): Likewise.
28003         (vcmpltq_f16): Likewise.
28004         (vcmpleq_n_f16): Likewise.
28005         (vcmpleq_f16): Likewise.
28006         (vcmpgtq_n_f16): Likewise.
28007         (vcmpgtq_f16): Likewise.
28008         (vcmpgeq_n_f16): Likewise.
28009         (vcmpgeq_f16): Likewise.
28010         (vcmpeqq_n_f16): Likewise.
28011         (vcmpeqq_f16): Likewise.
28012         (vsubq_f16): Likewise.
28013         (vqmovntq_s16): Likewise.
28014         (vqmovnbq_s16): Likewise.
28015         (vqdmulltq_s16): Likewise.
28016         (vqdmulltq_n_s16): Likewise.
28017         (vqdmullbq_s16): Likewise.
28018         (vqdmullbq_n_s16): Likewise.
28019         (vorrq_f16): Likewise.
28020         (vornq_f16): Likewise.
28021         (vmulq_n_f16): Likewise.
28022         (vmulq_f16): Likewise.
28023         (vmovntq_s16): Likewise.
28024         (vmovnbq_s16): Likewise.
28025         (vmlsldavxq_s16): Likewise.
28026         (vmlsldavq_s16): Likewise.
28027         (vmlaldavxq_s16): Likewise.
28028         (vmlaldavq_s16): Likewise.
28029         (vminnmvq_f16): Likewise.
28030         (vminnmq_f16): Likewise.
28031         (vminnmavq_f16): Likewise.
28032         (vminnmaq_f16): Likewise.
28033         (vmaxnmvq_f16): Likewise.
28034         (vmaxnmq_f16): Likewise.
28035         (vmaxnmavq_f16): Likewise.
28036         (vmaxnmaq_f16): Likewise.
28037         (veorq_f16): Likewise.
28038         (vcmulq_rot90_f16): Likewise.
28039         (vcmulq_rot270_f16): Likewise.
28040         (vcmulq_rot180_f16): Likewise.
28041         (vcmulq_f16): Likewise.
28042         (vcaddq_rot90_f16): Likewise.
28043         (vcaddq_rot270_f16): Likewise.
28044         (vbicq_f16): Likewise.
28045         (vandq_f16): Likewise.
28046         (vaddq_n_f16): Likewise.
28047         (vabdq_f16): Likewise.
28048         (vshlltq_n_s8): Likewise.
28049         (vshllbq_n_s8): Likewise.
28050         (vorrq_n_s16): Likewise.
28051         (vbicq_n_s16): Likewise.
28052         (vqmovntq_u32): Likewise.
28053         (vqmovnbq_u32): Likewise.
28054         (vmulltq_poly_p16): Likewise.
28055         (vmullbq_poly_p16): Likewise.
28056         (vmovntq_u32): Likewise.
28057         (vmovnbq_u32): Likewise.
28058         (vmlaldavxq_u32): Likewise.
28059         (vmlaldavq_u32): Likewise.
28060         (vqmovuntq_s32): Likewise.
28061         (vqmovunbq_s32): Likewise.
28062         (vshlltq_n_u16): Likewise.
28063         (vshllbq_n_u16): Likewise.
28064         (vorrq_n_u32): Likewise.
28065         (vbicq_n_u32): Likewise.
28066         (vcmpneq_n_f32): Likewise.
28067         (vcmpneq_f32): Likewise.
28068         (vcmpltq_n_f32): Likewise.
28069         (vcmpltq_f32): Likewise.
28070         (vcmpleq_n_f32): Likewise.
28071         (vcmpleq_f32): Likewise.
28072         (vcmpgtq_n_f32): Likewise.
28073         (vcmpgtq_f32): Likewise.
28074         (vcmpgeq_n_f32): Likewise.
28075         (vcmpgeq_f32): Likewise.
28076         (vcmpeqq_n_f32): Likewise.
28077         (vcmpeqq_f32): Likewise.
28078         (vsubq_f32): Likewise.
28079         (vqmovntq_s32): Likewise.
28080         (vqmovnbq_s32): Likewise.
28081         (vqdmulltq_s32): Likewise.
28082         (vqdmulltq_n_s32): Likewise.
28083         (vqdmullbq_s32): Likewise.
28084         (vqdmullbq_n_s32): Likewise.
28085         (vorrq_f32): Likewise.
28086         (vornq_f32): Likewise.
28087         (vmulq_n_f32): Likewise.
28088         (vmulq_f32): Likewise.
28089         (vmovntq_s32): Likewise.
28090         (vmovnbq_s32): Likewise.
28091         (vmlsldavxq_s32): Likewise.
28092         (vmlsldavq_s32): Likewise.
28093         (vmlaldavxq_s32): Likewise.
28094         (vmlaldavq_s32): Likewise.
28095         (vminnmvq_f32): Likewise.
28096         (vminnmq_f32): Likewise.
28097         (vminnmavq_f32): Likewise.
28098         (vminnmaq_f32): Likewise.
28099         (vmaxnmvq_f32): Likewise.
28100         (vmaxnmq_f32): Likewise.
28101         (vmaxnmavq_f32): Likewise.
28102         (vmaxnmaq_f32): Likewise.
28103         (veorq_f32): Likewise.
28104         (vcmulq_rot90_f32): Likewise.
28105         (vcmulq_rot270_f32): Likewise.
28106         (vcmulq_rot180_f32): Likewise.
28107         (vcmulq_f32): Likewise.
28108         (vcaddq_rot90_f32): Likewise.
28109         (vcaddq_rot270_f32): Likewise.
28110         (vbicq_f32): Likewise.
28111         (vandq_f32): Likewise.
28112         (vaddq_n_f32): Likewise.
28113         (vabdq_f32): Likewise.
28114         (vshlltq_n_s16): Likewise.
28115         (vshllbq_n_s16): Likewise.
28116         (vorrq_n_s32): Likewise.
28117         (vbicq_n_s32): Likewise.
28118         (vrmlaldavhq_u32): Likewise.
28119         (vctp8q_m): Likewise.
28120         (vctp64q_m): Likewise.
28121         (vctp32q_m): Likewise.
28122         (vctp16q_m): Likewise.
28123         (vaddlvaq_u32): Likewise.
28124         (vrmlsldavhxq_s32): Likewise.
28125         (vrmlsldavhq_s32): Likewise.
28126         (vrmlaldavhxq_s32): Likewise.
28127         (vrmlaldavhq_s32): Likewise.
28128         (vcvttq_f16_f32): Likewise.
28129         (vcvtbq_f16_f32): Likewise.
28130         (vaddlvaq_s32): Likewise.
28131         (__arm_vqmovntq_u16): Define intrinsic.
28132         (__arm_vqmovnbq_u16): Likewise.
28133         (__arm_vmulltq_poly_p8): Likewise.
28134         (__arm_vmullbq_poly_p8): Likewise.
28135         (__arm_vmovntq_u16): Likewise.
28136         (__arm_vmovnbq_u16): Likewise.
28137         (__arm_vmlaldavxq_u16): Likewise.
28138         (__arm_vmlaldavq_u16): Likewise.
28139         (__arm_vqmovuntq_s16): Likewise.
28140         (__arm_vqmovunbq_s16): Likewise.
28141         (__arm_vshlltq_n_u8): Likewise.
28142         (__arm_vshllbq_n_u8): Likewise.
28143         (__arm_vorrq_n_u16): Likewise.
28144         (__arm_vbicq_n_u16): Likewise.
28145         (__arm_vcmpneq_n_f16): Likewise.
28146         (__arm_vcmpneq_f16): Likewise.
28147         (__arm_vcmpltq_n_f16): Likewise.
28148         (__arm_vcmpltq_f16): Likewise.
28149         (__arm_vcmpleq_n_f16): Likewise.
28150         (__arm_vcmpleq_f16): Likewise.
28151         (__arm_vcmpgtq_n_f16): Likewise.
28152         (__arm_vcmpgtq_f16): Likewise.
28153         (__arm_vcmpgeq_n_f16): Likewise.
28154         (__arm_vcmpgeq_f16): Likewise.
28155         (__arm_vcmpeqq_n_f16): Likewise.
28156         (__arm_vcmpeqq_f16): Likewise.
28157         (__arm_vsubq_f16): Likewise.
28158         (__arm_vqmovntq_s16): Likewise.
28159         (__arm_vqmovnbq_s16): Likewise.
28160         (__arm_vqdmulltq_s16): Likewise.
28161         (__arm_vqdmulltq_n_s16): Likewise.
28162         (__arm_vqdmullbq_s16): Likewise.
28163         (__arm_vqdmullbq_n_s16): Likewise.
28164         (__arm_vorrq_f16): Likewise.
28165         (__arm_vornq_f16): Likewise.
28166         (__arm_vmulq_n_f16): Likewise.
28167         (__arm_vmulq_f16): Likewise.
28168         (__arm_vmovntq_s16): Likewise.
28169         (__arm_vmovnbq_s16): Likewise.
28170         (__arm_vmlsldavxq_s16): Likewise.
28171         (__arm_vmlsldavq_s16): Likewise.
28172         (__arm_vmlaldavxq_s16): Likewise.
28173         (__arm_vmlaldavq_s16): Likewise.
28174         (__arm_vminnmvq_f16): Likewise.
28175         (__arm_vminnmq_f16): Likewise.
28176         (__arm_vminnmavq_f16): Likewise.
28177         (__arm_vminnmaq_f16): Likewise.
28178         (__arm_vmaxnmvq_f16): Likewise.
28179         (__arm_vmaxnmq_f16): Likewise.
28180         (__arm_vmaxnmavq_f16): Likewise.
28181         (__arm_vmaxnmaq_f16): Likewise.
28182         (__arm_veorq_f16): Likewise.
28183         (__arm_vcmulq_rot90_f16): Likewise.
28184         (__arm_vcmulq_rot270_f16): Likewise.
28185         (__arm_vcmulq_rot180_f16): Likewise.
28186         (__arm_vcmulq_f16): Likewise.
28187         (__arm_vcaddq_rot90_f16): Likewise.
28188         (__arm_vcaddq_rot270_f16): Likewise.
28189         (__arm_vbicq_f16): Likewise.
28190         (__arm_vandq_f16): Likewise.
28191         (__arm_vaddq_n_f16): Likewise.
28192         (__arm_vabdq_f16): Likewise.
28193         (__arm_vshlltq_n_s8): Likewise.
28194         (__arm_vshllbq_n_s8): Likewise.
28195         (__arm_vorrq_n_s16): Likewise.
28196         (__arm_vbicq_n_s16): Likewise.
28197         (__arm_vqmovntq_u32): Likewise.
28198         (__arm_vqmovnbq_u32): Likewise.
28199         (__arm_vmulltq_poly_p16): Likewise.
28200         (__arm_vmullbq_poly_p16): Likewise.
28201         (__arm_vmovntq_u32): Likewise.
28202         (__arm_vmovnbq_u32): Likewise.
28203         (__arm_vmlaldavxq_u32): Likewise.
28204         (__arm_vmlaldavq_u32): Likewise.
28205         (__arm_vqmovuntq_s32): Likewise.
28206         (__arm_vqmovunbq_s32): Likewise.
28207         (__arm_vshlltq_n_u16): Likewise.
28208         (__arm_vshllbq_n_u16): Likewise.
28209         (__arm_vorrq_n_u32): Likewise.
28210         (__arm_vbicq_n_u32): Likewise.
28211         (__arm_vcmpneq_n_f32): Likewise.
28212         (__arm_vcmpneq_f32): Likewise.
28213         (__arm_vcmpltq_n_f32): Likewise.
28214         (__arm_vcmpltq_f32): Likewise.
28215         (__arm_vcmpleq_n_f32): Likewise.
28216         (__arm_vcmpleq_f32): Likewise.
28217         (__arm_vcmpgtq_n_f32): Likewise.
28218         (__arm_vcmpgtq_f32): Likewise.
28219         (__arm_vcmpgeq_n_f32): Likewise.
28220         (__arm_vcmpgeq_f32): Likewise.
28221         (__arm_vcmpeqq_n_f32): Likewise.
28222         (__arm_vcmpeqq_f32): Likewise.
28223         (__arm_vsubq_f32): Likewise.
28224         (__arm_vqmovntq_s32): Likewise.
28225         (__arm_vqmovnbq_s32): Likewise.
28226         (__arm_vqdmulltq_s32): Likewise.
28227         (__arm_vqdmulltq_n_s32): Likewise.
28228         (__arm_vqdmullbq_s32): Likewise.
28229         (__arm_vqdmullbq_n_s32): Likewise.
28230         (__arm_vorrq_f32): Likewise.
28231         (__arm_vornq_f32): Likewise.
28232         (__arm_vmulq_n_f32): Likewise.
28233         (__arm_vmulq_f32): Likewise.
28234         (__arm_vmovntq_s32): Likewise.
28235         (__arm_vmovnbq_s32): Likewise.
28236         (__arm_vmlsldavxq_s32): Likewise.
28237         (__arm_vmlsldavq_s32): Likewise.
28238         (__arm_vmlaldavxq_s32): Likewise.
28239         (__arm_vmlaldavq_s32): Likewise.
28240         (__arm_vminnmvq_f32): Likewise.
28241         (__arm_vminnmq_f32): Likewise.
28242         (__arm_vminnmavq_f32): Likewise.
28243         (__arm_vminnmaq_f32): Likewise.
28244         (__arm_vmaxnmvq_f32): Likewise.
28245         (__arm_vmaxnmq_f32): Likewise.
28246         (__arm_vmaxnmavq_f32): Likewise.
28247         (__arm_vmaxnmaq_f32): Likewise.
28248         (__arm_veorq_f32): Likewise.
28249         (__arm_vcmulq_rot90_f32): Likewise.
28250         (__arm_vcmulq_rot270_f32): Likewise.
28251         (__arm_vcmulq_rot180_f32): Likewise.
28252         (__arm_vcmulq_f32): Likewise.
28253         (__arm_vcaddq_rot90_f32): Likewise.
28254         (__arm_vcaddq_rot270_f32): Likewise.
28255         (__arm_vbicq_f32): Likewise.
28256         (__arm_vandq_f32): Likewise.
28257         (__arm_vaddq_n_f32): Likewise.
28258         (__arm_vabdq_f32): Likewise.
28259         (__arm_vshlltq_n_s16): Likewise.
28260         (__arm_vshllbq_n_s16): Likewise.
28261         (__arm_vorrq_n_s32): Likewise.
28262         (__arm_vbicq_n_s32): Likewise.
28263         (__arm_vrmlaldavhq_u32): Likewise.
28264         (__arm_vctp8q_m): Likewise.
28265         (__arm_vctp64q_m): Likewise.
28266         (__arm_vctp32q_m): Likewise.
28267         (__arm_vctp16q_m): Likewise.
28268         (__arm_vaddlvaq_u32): Likewise.
28269         (__arm_vrmlsldavhxq_s32): Likewise.
28270         (__arm_vrmlsldavhq_s32): Likewise.
28271         (__arm_vrmlaldavhxq_s32): Likewise.
28272         (__arm_vrmlaldavhq_s32): Likewise.
28273         (__arm_vcvttq_f16_f32): Likewise.
28274         (__arm_vcvtbq_f16_f32): Likewise.
28275         (__arm_vaddlvaq_s32): Likewise.
28276         (vst4q): Define polymorphic variant.
28277         (vrndxq): Likewise.
28278         (vrndq): Likewise.
28279         (vrndpq): Likewise.
28280         (vrndnq): Likewise.
28281         (vrndmq): Likewise.
28282         (vrndaq): Likewise.
28283         (vrev64q): Likewise.
28284         (vnegq): Likewise.
28285         (vdupq_n): Likewise.
28286         (vabsq): Likewise.
28287         (vrev32q): Likewise.
28288         (vcvtbq_f32): Likewise.
28289         (vcvttq_f32): Likewise.
28290         (vcvtq): Likewise.
28291         (vsubq_n): Likewise.
28292         (vbrsrq_n): Likewise.
28293         (vcvtq_n): Likewise.
28294         (vsubq): Likewise.
28295         (vorrq): Likewise.
28296         (vabdq): Likewise.
28297         (vaddq_n): Likewise.
28298         (vandq): Likewise.
28299         (vbicq): Likewise.
28300         (vornq): Likewise.
28301         (vmulq_n): Likewise.
28302         (vmulq): Likewise.
28303         (vcaddq_rot270): Likewise.
28304         (vcmpeqq_n): Likewise.
28305         (vcmpeqq): Likewise.
28306         (vcaddq_rot90): Likewise.
28307         (vcmpgeq_n): Likewise.
28308         (vcmpgeq): Likewise.
28309         (vcmpgtq_n): Likewise.
28310         (vcmpgtq): Likewise.
28311         (vcmpgtq): Likewise.
28312         (vcmpleq_n): Likewise.
28313         (vcmpleq_n): Likewise.
28314         (vcmpleq): Likewise.
28315         (vcmpleq): Likewise.
28316         (vcmpltq_n): Likewise.
28317         (vcmpltq_n): Likewise.
28318         (vcmpltq): Likewise.
28319         (vcmpltq): Likewise.
28320         (vcmpneq_n): Likewise.
28321         (vcmpneq_n): Likewise.
28322         (vcmpneq): Likewise.
28323         (vcmpneq): Likewise.
28324         (vcmulq): Likewise.
28325         (vcmulq): Likewise.
28326         (vcmulq_rot180): Likewise.
28327         (vcmulq_rot180): Likewise.
28328         (vcmulq_rot270): Likewise.
28329         (vcmulq_rot270): Likewise.
28330         (vcmulq_rot90): Likewise.
28331         (vcmulq_rot90): Likewise.
28332         (veorq): Likewise.
28333         (veorq): Likewise.
28334         (vmaxnmaq): Likewise.
28335         (vmaxnmaq): Likewise.
28336         (vmaxnmavq): Likewise.
28337         (vmaxnmavq): Likewise.
28338         (vmaxnmq): Likewise.
28339         (vmaxnmq): Likewise.
28340         (vmaxnmvq): Likewise.
28341         (vmaxnmvq): Likewise.
28342         (vminnmaq): Likewise.
28343         (vminnmaq): Likewise.
28344         (vminnmavq): Likewise.
28345         (vminnmavq): Likewise.
28346         (vminnmq): Likewise.
28347         (vminnmq): Likewise.
28348         (vminnmvq): Likewise.
28349         (vminnmvq): Likewise.
28350         (vbicq_n): Likewise.
28351         (vqmovntq): Likewise.
28352         (vqmovntq): Likewise.
28353         (vqmovnbq): Likewise.
28354         (vqmovnbq): Likewise.
28355         (vmulltq_poly): Likewise.
28356         (vmulltq_poly): Likewise.
28357         (vmullbq_poly): Likewise.
28358         (vmullbq_poly): Likewise.
28359         (vmovntq): Likewise.
28360         (vmovntq): Likewise.
28361         (vmovnbq): Likewise.
28362         (vmovnbq): Likewise.
28363         (vmlaldavxq): Likewise.
28364         (vmlaldavxq): Likewise.
28365         (vqmovuntq): Likewise.
28366         (vqmovuntq): Likewise.
28367         (vshlltq_n): Likewise.
28368         (vshlltq_n): Likewise.
28369         (vshllbq_n): Likewise.
28370         (vshllbq_n): Likewise.
28371         (vorrq_n): Likewise.
28372         (vorrq_n): Likewise.
28373         (vmlaldavq): Likewise.
28374         (vmlaldavq): Likewise.
28375         (vqmovunbq): Likewise.
28376         (vqmovunbq): Likewise.
28377         (vqdmulltq_n): Likewise.
28378         (vqdmulltq_n): Likewise.
28379         (vqdmulltq): Likewise.
28380         (vqdmulltq): Likewise.
28381         (vqdmullbq_n): Likewise.
28382         (vqdmullbq_n): Likewise.
28383         (vqdmullbq): Likewise.
28384         (vqdmullbq): Likewise.
28385         (vaddlvaq): Likewise.
28386         (vaddlvaq): Likewise.
28387         (vrmlaldavhq): Likewise.
28388         (vrmlaldavhq): Likewise.
28389         (vrmlaldavhxq): Likewise.
28390         (vrmlaldavhxq): Likewise.
28391         (vrmlsldavhq): Likewise.
28392         (vrmlsldavhq): Likewise.
28393         (vrmlsldavhxq): Likewise.
28394         (vrmlsldavhxq): Likewise.
28395         (vmlsldavxq): Likewise.
28396         (vmlsldavxq): Likewise.
28397         (vmlsldavq): Likewise.
28398         (vmlsldavq): Likewise.
28399         * config/arm/arm_mve_builtins.def (BINOP_NONE_NONE_IMM): Use it.
28400         (BINOP_NONE_NONE_NONE): Likewise.
28401         (BINOP_UNONE_NONE_NONE): Likewise.
28402         (BINOP_UNONE_UNONE_IMM): Likewise.
28403         (BINOP_UNONE_UNONE_NONE): Likewise.
28404         (BINOP_UNONE_UNONE_UNONE): Likewise.
28405         * config/arm/mve.md (mve_vabdq_f<mode>): Define RTL pattern.
28406         (mve_vaddlvaq_<supf>v4si): Likewise.
28407         (mve_vaddq_n_f<mode>): Likewise.
28408         (mve_vandq_f<mode>): Likewise.
28409         (mve_vbicq_f<mode>): Likewise.
28410         (mve_vbicq_n_<supf><mode>): Likewise.
28411         (mve_vcaddq_rot270_f<mode>): Likewise.
28412         (mve_vcaddq_rot90_f<mode>): Likewise.
28413         (mve_vcmpeqq_f<mode>): Likewise.
28414         (mve_vcmpeqq_n_f<mode>): Likewise.
28415         (mve_vcmpgeq_f<mode>): Likewise.
28416         (mve_vcmpgeq_n_f<mode>): Likewise.
28417         (mve_vcmpgtq_f<mode>): Likewise.
28418         (mve_vcmpgtq_n_f<mode>): Likewise.
28419         (mve_vcmpleq_f<mode>): Likewise.
28420         (mve_vcmpleq_n_f<mode>): Likewise.
28421         (mve_vcmpltq_f<mode>): Likewise.
28422         (mve_vcmpltq_n_f<mode>): Likewise.
28423         (mve_vcmpneq_f<mode>): Likewise.
28424         (mve_vcmpneq_n_f<mode>): Likewise.
28425         (mve_vcmulq_f<mode>): Likewise.
28426         (mve_vcmulq_rot180_f<mode>): Likewise.
28427         (mve_vcmulq_rot270_f<mode>): Likewise.
28428         (mve_vcmulq_rot90_f<mode>): Likewise.
28429         (mve_vctp<mode1>q_mhi): Likewise.
28430         (mve_vcvtbq_f16_f32v8hf): Likewise.
28431         (mve_vcvttq_f16_f32v8hf): Likewise.
28432         (mve_veorq_f<mode>): Likewise.
28433         (mve_vmaxnmaq_f<mode>): Likewise.
28434         (mve_vmaxnmavq_f<mode>): Likewise.
28435         (mve_vmaxnmq_f<mode>): Likewise.
28436         (mve_vmaxnmvq_f<mode>): Likewise.
28437         (mve_vminnmaq_f<mode>): Likewise.
28438         (mve_vminnmavq_f<mode>): Likewise.
28439         (mve_vminnmq_f<mode>): Likewise.
28440         (mve_vminnmvq_f<mode>): Likewise.
28441         (mve_vmlaldavq_<supf><mode>): Likewise.
28442         (mve_vmlaldavxq_<supf><mode>): Likewise.
28443         (mve_vmlsldavq_s<mode>): Likewise.
28444         (mve_vmlsldavxq_s<mode>): Likewise.
28445         (mve_vmovnbq_<supf><mode>): Likewise.
28446         (mve_vmovntq_<supf><mode>): Likewise.
28447         (mve_vmulq_f<mode>): Likewise.
28448         (mve_vmulq_n_f<mode>): Likewise.
28449         (mve_vornq_f<mode>): Likewise.
28450         (mve_vorrq_f<mode>): Likewise.
28451         (mve_vorrq_n_<supf><mode>): Likewise.
28452         (mve_vqdmullbq_n_s<mode>): Likewise.
28453         (mve_vqdmullbq_s<mode>): Likewise.
28454         (mve_vqdmulltq_n_s<mode>): Likewise.
28455         (mve_vqdmulltq_s<mode>): Likewise.
28456         (mve_vqmovnbq_<supf><mode>): Likewise.
28457         (mve_vqmovntq_<supf><mode>): Likewise.
28458         (mve_vqmovunbq_s<mode>): Likewise.
28459         (mve_vqmovuntq_s<mode>): Likewise.
28460         (mve_vrmlaldavhxq_sv4si): Likewise.
28461         (mve_vrmlsldavhq_sv4si): Likewise.
28462         (mve_vrmlsldavhxq_sv4si): Likewise.
28463         (mve_vshllbq_n_<supf><mode>): Likewise.
28464         (mve_vshlltq_n_<supf><mode>): Likewise.
28465         (mve_vsubq_f<mode>): Likewise.
28466         (mve_vmulltq_poly_p<mode>): Likewise.
28467         (mve_vmullbq_poly_p<mode>): Likewise.
28468         (mve_vrmlaldavhq_<supf>v4si): Likewise.
28470 2020-03-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
28471             Mihail Ionescu  <mihail.ionescu@arm.com>
28472             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
28474         * config/arm/arm_mve.h (vsubq_u8): Define macro.
28475         (vsubq_n_u8): Likewise.
28476         (vrmulhq_u8): Likewise.
28477         (vrhaddq_u8): Likewise.
28478         (vqsubq_u8): Likewise.
28479         (vqsubq_n_u8): Likewise.
28480         (vqaddq_u8): Likewise.
28481         (vqaddq_n_u8): Likewise.
28482         (vorrq_u8): Likewise.
28483         (vornq_u8): Likewise.
28484         (vmulq_u8): Likewise.
28485         (vmulq_n_u8): Likewise.
28486         (vmulltq_int_u8): Likewise.
28487         (vmullbq_int_u8): Likewise.
28488         (vmulhq_u8): Likewise.
28489         (vmladavq_u8): Likewise.
28490         (vminvq_u8): Likewise.
28491         (vminq_u8): Likewise.
28492         (vmaxvq_u8): Likewise.
28493         (vmaxq_u8): Likewise.
28494         (vhsubq_u8): Likewise.
28495         (vhsubq_n_u8): Likewise.
28496         (vhaddq_u8): Likewise.
28497         (vhaddq_n_u8): Likewise.
28498         (veorq_u8): Likewise.
28499         (vcmpneq_n_u8): Likewise.
28500         (vcmphiq_u8): Likewise.
28501         (vcmphiq_n_u8): Likewise.
28502         (vcmpeqq_u8): Likewise.
28503         (vcmpeqq_n_u8): Likewise.
28504         (vcmpcsq_u8): Likewise.
28505         (vcmpcsq_n_u8): Likewise.
28506         (vcaddq_rot90_u8): Likewise.
28507         (vcaddq_rot270_u8): Likewise.
28508         (vbicq_u8): Likewise.
28509         (vandq_u8): Likewise.
28510         (vaddvq_p_u8): Likewise.
28511         (vaddvaq_u8): Likewise.
28512         (vaddq_n_u8): Likewise.
28513         (vabdq_u8): Likewise.
28514         (vshlq_r_u8): Likewise.
28515         (vrshlq_u8): Likewise.
28516         (vrshlq_n_u8): Likewise.
28517         (vqshlq_u8): Likewise.
28518         (vqshlq_r_u8): Likewise.
28519         (vqrshlq_u8): Likewise.
28520         (vqrshlq_n_u8): Likewise.
28521         (vminavq_s8): Likewise.
28522         (vminaq_s8): Likewise.
28523         (vmaxavq_s8): Likewise.
28524         (vmaxaq_s8): Likewise.
28525         (vbrsrq_n_u8): Likewise.
28526         (vshlq_n_u8): Likewise.
28527         (vrshrq_n_u8): Likewise.
28528         (vqshlq_n_u8): Likewise.
28529         (vcmpneq_n_s8): Likewise.
28530         (vcmpltq_s8): Likewise.
28531         (vcmpltq_n_s8): Likewise.
28532         (vcmpleq_s8): Likewise.
28533         (vcmpleq_n_s8): Likewise.
28534         (vcmpgtq_s8): Likewise.
28535         (vcmpgtq_n_s8): Likewise.
28536         (vcmpgeq_s8): Likewise.
28537         (vcmpgeq_n_s8): Likewise.
28538         (vcmpeqq_s8): Likewise.
28539         (vcmpeqq_n_s8): Likewise.
28540         (vqshluq_n_s8): Likewise.
28541         (vaddvq_p_s8): Likewise.
28542         (vsubq_s8): Likewise.
28543         (vsubq_n_s8): Likewise.
28544         (vshlq_r_s8): Likewise.
28545         (vrshlq_s8): Likewise.
28546         (vrshlq_n_s8): Likewise.
28547         (vrmulhq_s8): Likewise.
28548         (vrhaddq_s8): Likewise.
28549         (vqsubq_s8): Likewise.
28550         (vqsubq_n_s8): Likewise.
28551         (vqshlq_s8): Likewise.
28552         (vqshlq_r_s8): Likewise.
28553         (vqrshlq_s8): Likewise.
28554         (vqrshlq_n_s8): Likewise.
28555         (vqrdmulhq_s8): Likewise.
28556         (vqrdmulhq_n_s8): Likewise.
28557         (vqdmulhq_s8): Likewise.
28558         (vqdmulhq_n_s8): Likewise.
28559         (vqaddq_s8): Likewise.
28560         (vqaddq_n_s8): Likewise.
28561         (vorrq_s8): Likewise.
28562         (vornq_s8): Likewise.
28563         (vmulq_s8): Likewise.
28564         (vmulq_n_s8): Likewise.
28565         (vmulltq_int_s8): Likewise.
28566         (vmullbq_int_s8): Likewise.
28567         (vmulhq_s8): Likewise.
28568         (vmlsdavxq_s8): Likewise.
28569         (vmlsdavq_s8): Likewise.
28570         (vmladavxq_s8): Likewise.
28571         (vmladavq_s8): Likewise.
28572         (vminvq_s8): Likewise.
28573         (vminq_s8): Likewise.
28574         (vmaxvq_s8): Likewise.
28575         (vmaxq_s8): Likewise.
28576         (vhsubq_s8): Likewise.
28577         (vhsubq_n_s8): Likewise.
28578         (vhcaddq_rot90_s8): Likewise.
28579         (vhcaddq_rot270_s8): Likewise.
28580         (vhaddq_s8): Likewise.
28581         (vhaddq_n_s8): Likewise.
28582         (veorq_s8): Likewise.
28583         (vcaddq_rot90_s8): Likewise.
28584         (vcaddq_rot270_s8): Likewise.
28585         (vbrsrq_n_s8): Likewise.
28586         (vbicq_s8): Likewise.
28587         (vandq_s8): Likewise.
28588         (vaddvaq_s8): Likewise.
28589         (vaddq_n_s8): Likewise.
28590         (vabdq_s8): Likewise.
28591         (vshlq_n_s8): Likewise.
28592         (vrshrq_n_s8): Likewise.
28593         (vqshlq_n_s8): Likewise.
28594         (vsubq_u16): Likewise.
28595         (vsubq_n_u16): Likewise.
28596         (vrmulhq_u16): Likewise.
28597         (vrhaddq_u16): Likewise.
28598         (vqsubq_u16): Likewise.
28599         (vqsubq_n_u16): Likewise.
28600         (vqaddq_u16): Likewise.
28601         (vqaddq_n_u16): Likewise.
28602         (vorrq_u16): Likewise.
28603         (vornq_u16): Likewise.
28604         (vmulq_u16): Likewise.
28605         (vmulq_n_u16): Likewise.
28606         (vmulltq_int_u16): Likewise.
28607         (vmullbq_int_u16): Likewise.
28608         (vmulhq_u16): Likewise.
28609         (vmladavq_u16): Likewise.
28610         (vminvq_u16): Likewise.
28611         (vminq_u16): Likewise.
28612         (vmaxvq_u16): Likewise.
28613         (vmaxq_u16): Likewise.
28614         (vhsubq_u16): Likewise.
28615         (vhsubq_n_u16): Likewise.
28616         (vhaddq_u16): Likewise.
28617         (vhaddq_n_u16): Likewise.
28618         (veorq_u16): Likewise.
28619         (vcmpneq_n_u16): Likewise.
28620         (vcmphiq_u16): Likewise.
28621         (vcmphiq_n_u16): Likewise.
28622         (vcmpeqq_u16): Likewise.
28623         (vcmpeqq_n_u16): Likewise.
28624         (vcmpcsq_u16): Likewise.
28625         (vcmpcsq_n_u16): Likewise.
28626         (vcaddq_rot90_u16): Likewise.
28627         (vcaddq_rot270_u16): Likewise.
28628         (vbicq_u16): Likewise.
28629         (vandq_u16): Likewise.
28630         (vaddvq_p_u16): Likewise.
28631         (vaddvaq_u16): Likewise.
28632         (vaddq_n_u16): Likewise.
28633         (vabdq_u16): Likewise.
28634         (vshlq_r_u16): Likewise.
28635         (vrshlq_u16): Likewise.
28636         (vrshlq_n_u16): Likewise.
28637         (vqshlq_u16): Likewise.
28638         (vqshlq_r_u16): Likewise.
28639         (vqrshlq_u16): Likewise.
28640         (vqrshlq_n_u16): Likewise.
28641         (vminavq_s16): Likewise.
28642         (vminaq_s16): Likewise.
28643         (vmaxavq_s16): Likewise.
28644         (vmaxaq_s16): Likewise.
28645         (vbrsrq_n_u16): Likewise.
28646         (vshlq_n_u16): Likewise.
28647         (vrshrq_n_u16): Likewise.
28648         (vqshlq_n_u16): Likewise.
28649         (vcmpneq_n_s16): Likewise.
28650         (vcmpltq_s16): Likewise.
28651         (vcmpltq_n_s16): Likewise.
28652         (vcmpleq_s16): Likewise.
28653         (vcmpleq_n_s16): Likewise.
28654         (vcmpgtq_s16): Likewise.
28655         (vcmpgtq_n_s16): Likewise.
28656         (vcmpgeq_s16): Likewise.
28657         (vcmpgeq_n_s16): Likewise.
28658         (vcmpeqq_s16): Likewise.
28659         (vcmpeqq_n_s16): Likewise.
28660         (vqshluq_n_s16): Likewise.
28661         (vaddvq_p_s16): Likewise.
28662         (vsubq_s16): Likewise.
28663         (vsubq_n_s16): Likewise.
28664         (vshlq_r_s16): Likewise.
28665         (vrshlq_s16): Likewise.
28666         (vrshlq_n_s16): Likewise.
28667         (vrmulhq_s16): Likewise.
28668         (vrhaddq_s16): Likewise.
28669         (vqsubq_s16): Likewise.
28670         (vqsubq_n_s16): Likewise.
28671         (vqshlq_s16): Likewise.
28672         (vqshlq_r_s16): Likewise.
28673         (vqrshlq_s16): Likewise.
28674         (vqrshlq_n_s16): Likewise.
28675         (vqrdmulhq_s16): Likewise.
28676         (vqrdmulhq_n_s16): Likewise.
28677         (vqdmulhq_s16): Likewise.
28678         (vqdmulhq_n_s16): Likewise.
28679         (vqaddq_s16): Likewise.
28680         (vqaddq_n_s16): Likewise.
28681         (vorrq_s16): Likewise.
28682         (vornq_s16): Likewise.
28683         (vmulq_s16): Likewise.
28684         (vmulq_n_s16): Likewise.
28685         (vmulltq_int_s16): Likewise.
28686         (vmullbq_int_s16): Likewise.
28687         (vmulhq_s16): Likewise.
28688         (vmlsdavxq_s16): Likewise.
28689         (vmlsdavq_s16): Likewise.
28690         (vmladavxq_s16): Likewise.
28691         (vmladavq_s16): Likewise.
28692         (vminvq_s16): Likewise.
28693         (vminq_s16): Likewise.
28694         (vmaxvq_s16): Likewise.
28695         (vmaxq_s16): Likewise.
28696         (vhsubq_s16): Likewise.
28697         (vhsubq_n_s16): Likewise.
28698         (vhcaddq_rot90_s16): Likewise.
28699         (vhcaddq_rot270_s16): Likewise.
28700         (vhaddq_s16): Likewise.
28701         (vhaddq_n_s16): Likewise.
28702         (veorq_s16): Likewise.
28703         (vcaddq_rot90_s16): Likewise.
28704         (vcaddq_rot270_s16): Likewise.
28705         (vbrsrq_n_s16): Likewise.
28706         (vbicq_s16): Likewise.
28707         (vandq_s16): Likewise.
28708         (vaddvaq_s16): Likewise.
28709         (vaddq_n_s16): Likewise.
28710         (vabdq_s16): Likewise.
28711         (vshlq_n_s16): Likewise.
28712         (vrshrq_n_s16): Likewise.
28713         (vqshlq_n_s16): Likewise.
28714         (vsubq_u32): Likewise.
28715         (vsubq_n_u32): Likewise.
28716         (vrmulhq_u32): Likewise.
28717         (vrhaddq_u32): Likewise.
28718         (vqsubq_u32): Likewise.
28719         (vqsubq_n_u32): Likewise.
28720         (vqaddq_u32): Likewise.
28721         (vqaddq_n_u32): Likewise.
28722         (vorrq_u32): Likewise.
28723         (vornq_u32): Likewise.
28724         (vmulq_u32): Likewise.
28725         (vmulq_n_u32): Likewise.
28726         (vmulltq_int_u32): Likewise.
28727         (vmullbq_int_u32): Likewise.
28728         (vmulhq_u32): Likewise.
28729         (vmladavq_u32): Likewise.
28730         (vminvq_u32): Likewise.
28731         (vminq_u32): Likewise.
28732         (vmaxvq_u32): Likewise.
28733         (vmaxq_u32): Likewise.
28734         (vhsubq_u32): Likewise.
28735         (vhsubq_n_u32): Likewise.
28736         (vhaddq_u32): Likewise.
28737         (vhaddq_n_u32): Likewise.
28738         (veorq_u32): Likewise.
28739         (vcmpneq_n_u32): Likewise.
28740         (vcmphiq_u32): Likewise.
28741         (vcmphiq_n_u32): Likewise.
28742         (vcmpeqq_u32): Likewise.
28743         (vcmpeqq_n_u32): Likewise.
28744         (vcmpcsq_u32): Likewise.
28745         (vcmpcsq_n_u32): Likewise.
28746         (vcaddq_rot90_u32): Likewise.
28747         (vcaddq_rot270_u32): Likewise.
28748         (vbicq_u32): Likewise.
28749         (vandq_u32): Likewise.
28750         (vaddvq_p_u32): Likewise.
28751         (vaddvaq_u32): Likewise.
28752         (vaddq_n_u32): Likewise.
28753         (vabdq_u32): Likewise.
28754         (vshlq_r_u32): Likewise.
28755         (vrshlq_u32): Likewise.
28756         (vrshlq_n_u32): Likewise.
28757         (vqshlq_u32): Likewise.
28758         (vqshlq_r_u32): Likewise.
28759         (vqrshlq_u32): Likewise.
28760         (vqrshlq_n_u32): Likewise.
28761         (vminavq_s32): Likewise.
28762         (vminaq_s32): Likewise.
28763         (vmaxavq_s32): Likewise.
28764         (vmaxaq_s32): Likewise.
28765         (vbrsrq_n_u32): Likewise.
28766         (vshlq_n_u32): Likewise.
28767         (vrshrq_n_u32): Likewise.
28768         (vqshlq_n_u32): Likewise.
28769         (vcmpneq_n_s32): Likewise.
28770         (vcmpltq_s32): Likewise.
28771         (vcmpltq_n_s32): Likewise.
28772         (vcmpleq_s32): Likewise.
28773         (vcmpleq_n_s32): Likewise.
28774         (vcmpgtq_s32): Likewise.
28775         (vcmpgtq_n_s32): Likewise.
28776         (vcmpgeq_s32): Likewise.
28777         (vcmpgeq_n_s32): Likewise.
28778         (vcmpeqq_s32): Likewise.
28779         (vcmpeqq_n_s32): Likewise.
28780         (vqshluq_n_s32): Likewise.
28781         (vaddvq_p_s32): Likewise.
28782         (vsubq_s32): Likewise.
28783         (vsubq_n_s32): Likewise.
28784         (vshlq_r_s32): Likewise.
28785         (vrshlq_s32): Likewise.
28786         (vrshlq_n_s32): Likewise.
28787         (vrmulhq_s32): Likewise.
28788         (vrhaddq_s32): Likewise.
28789         (vqsubq_s32): Likewise.
28790         (vqsubq_n_s32): Likewise.
28791         (vqshlq_s32): Likewise.
28792         (vqshlq_r_s32): Likewise.
28793         (vqrshlq_s32): Likewise.
28794         (vqrshlq_n_s32): Likewise.
28795         (vqrdmulhq_s32): Likewise.
28796         (vqrdmulhq_n_s32): Likewise.
28797         (vqdmulhq_s32): Likewise.
28798         (vqdmulhq_n_s32): Likewise.
28799         (vqaddq_s32): Likewise.
28800         (vqaddq_n_s32): Likewise.
28801         (vorrq_s32): Likewise.
28802         (vornq_s32): Likewise.
28803         (vmulq_s32): Likewise.
28804         (vmulq_n_s32): Likewise.
28805         (vmulltq_int_s32): Likewise.
28806         (vmullbq_int_s32): Likewise.
28807         (vmulhq_s32): Likewise.
28808         (vmlsdavxq_s32): Likewise.
28809         (vmlsdavq_s32): Likewise.
28810         (vmladavxq_s32): Likewise.
28811         (vmladavq_s32): Likewise.
28812         (vminvq_s32): Likewise.
28813         (vminq_s32): Likewise.
28814         (vmaxvq_s32): Likewise.
28815         (vmaxq_s32): Likewise.
28816         (vhsubq_s32): Likewise.
28817         (vhsubq_n_s32): Likewise.
28818         (vhcaddq_rot90_s32): Likewise.
28819         (vhcaddq_rot270_s32): Likewise.
28820         (vhaddq_s32): Likewise.
28821         (vhaddq_n_s32): Likewise.
28822         (veorq_s32): Likewise.
28823         (vcaddq_rot90_s32): Likewise.
28824         (vcaddq_rot270_s32): Likewise.
28825         (vbrsrq_n_s32): Likewise.
28826         (vbicq_s32): Likewise.
28827         (vandq_s32): Likewise.
28828         (vaddvaq_s32): Likewise.
28829         (vaddq_n_s32): Likewise.
28830         (vabdq_s32): Likewise.
28831         (vshlq_n_s32): Likewise.
28832         (vrshrq_n_s32): Likewise.
28833         (vqshlq_n_s32): Likewise.
28834         (__arm_vsubq_u8): Define intrinsic.
28835         (__arm_vsubq_n_u8): Likewise.
28836         (__arm_vrmulhq_u8): Likewise.
28837         (__arm_vrhaddq_u8): Likewise.
28838         (__arm_vqsubq_u8): Likewise.
28839         (__arm_vqsubq_n_u8): Likewise.
28840         (__arm_vqaddq_u8): Likewise.
28841         (__arm_vqaddq_n_u8): Likewise.
28842         (__arm_vorrq_u8): Likewise.
28843         (__arm_vornq_u8): Likewise.
28844         (__arm_vmulq_u8): Likewise.
28845         (__arm_vmulq_n_u8): Likewise.
28846         (__arm_vmulltq_int_u8): Likewise.
28847         (__arm_vmullbq_int_u8): Likewise.
28848         (__arm_vmulhq_u8): Likewise.
28849         (__arm_vmladavq_u8): Likewise.
28850         (__arm_vminvq_u8): Likewise.
28851         (__arm_vminq_u8): Likewise.
28852         (__arm_vmaxvq_u8): Likewise.
28853         (__arm_vmaxq_u8): Likewise.
28854         (__arm_vhsubq_u8): Likewise.
28855         (__arm_vhsubq_n_u8): Likewise.
28856         (__arm_vhaddq_u8): Likewise.
28857         (__arm_vhaddq_n_u8): Likewise.
28858         (__arm_veorq_u8): Likewise.
28859         (__arm_vcmpneq_n_u8): Likewise.
28860         (__arm_vcmphiq_u8): Likewise.
28861         (__arm_vcmphiq_n_u8): Likewise.
28862         (__arm_vcmpeqq_u8): Likewise.
28863         (__arm_vcmpeqq_n_u8): Likewise.
28864         (__arm_vcmpcsq_u8): Likewise.
28865         (__arm_vcmpcsq_n_u8): Likewise.
28866         (__arm_vcaddq_rot90_u8): Likewise.
28867         (__arm_vcaddq_rot270_u8): Likewise.
28868         (__arm_vbicq_u8): Likewise.
28869         (__arm_vandq_u8): Likewise.
28870         (__arm_vaddvq_p_u8): Likewise.
28871         (__arm_vaddvaq_u8): Likewise.
28872         (__arm_vaddq_n_u8): Likewise.
28873         (__arm_vabdq_u8): Likewise.
28874         (__arm_vshlq_r_u8): Likewise.
28875         (__arm_vrshlq_u8): Likewise.
28876         (__arm_vrshlq_n_u8): Likewise.
28877         (__arm_vqshlq_u8): Likewise.
28878         (__arm_vqshlq_r_u8): Likewise.
28879         (__arm_vqrshlq_u8): Likewise.
28880         (__arm_vqrshlq_n_u8): Likewise.
28881         (__arm_vminavq_s8): Likewise.
28882         (__arm_vminaq_s8): Likewise.
28883         (__arm_vmaxavq_s8): Likewise.
28884         (__arm_vmaxaq_s8): Likewise.
28885         (__arm_vbrsrq_n_u8): Likewise.
28886         (__arm_vshlq_n_u8): Likewise.
28887         (__arm_vrshrq_n_u8): Likewise.
28888         (__arm_vqshlq_n_u8): Likewise.
28889         (__arm_vcmpneq_n_s8): Likewise.
28890         (__arm_vcmpltq_s8): Likewise.
28891         (__arm_vcmpltq_n_s8): Likewise.
28892         (__arm_vcmpleq_s8): Likewise.
28893         (__arm_vcmpleq_n_s8): Likewise.
28894         (__arm_vcmpgtq_s8): Likewise.
28895         (__arm_vcmpgtq_n_s8): Likewise.
28896         (__arm_vcmpgeq_s8): Likewise.
28897         (__arm_vcmpgeq_n_s8): Likewise.
28898         (__arm_vcmpeqq_s8): Likewise.
28899         (__arm_vcmpeqq_n_s8): Likewise.
28900         (__arm_vqshluq_n_s8): Likewise.
28901         (__arm_vaddvq_p_s8): Likewise.
28902         (__arm_vsubq_s8): Likewise.
28903         (__arm_vsubq_n_s8): Likewise.
28904         (__arm_vshlq_r_s8): Likewise.
28905         (__arm_vrshlq_s8): Likewise.
28906         (__arm_vrshlq_n_s8): Likewise.
28907         (__arm_vrmulhq_s8): Likewise.
28908         (__arm_vrhaddq_s8): Likewise.
28909         (__arm_vqsubq_s8): Likewise.
28910         (__arm_vqsubq_n_s8): Likewise.
28911         (__arm_vqshlq_s8): Likewise.
28912         (__arm_vqshlq_r_s8): Likewise.
28913         (__arm_vqrshlq_s8): Likewise.
28914         (__arm_vqrshlq_n_s8): Likewise.
28915         (__arm_vqrdmulhq_s8): Likewise.
28916         (__arm_vqrdmulhq_n_s8): Likewise.
28917         (__arm_vqdmulhq_s8): Likewise.
28918         (__arm_vqdmulhq_n_s8): Likewise.
28919         (__arm_vqaddq_s8): Likewise.
28920         (__arm_vqaddq_n_s8): Likewise.
28921         (__arm_vorrq_s8): Likewise.
28922         (__arm_vornq_s8): Likewise.
28923         (__arm_vmulq_s8): Likewise.
28924         (__arm_vmulq_n_s8): Likewise.
28925         (__arm_vmulltq_int_s8): Likewise.
28926         (__arm_vmullbq_int_s8): Likewise.
28927         (__arm_vmulhq_s8): Likewise.
28928         (__arm_vmlsdavxq_s8): Likewise.
28929         (__arm_vmlsdavq_s8): Likewise.
28930         (__arm_vmladavxq_s8): Likewise.
28931         (__arm_vmladavq_s8): Likewise.
28932         (__arm_vminvq_s8): Likewise.
28933         (__arm_vminq_s8): Likewise.
28934         (__arm_vmaxvq_s8): Likewise.
28935         (__arm_vmaxq_s8): Likewise.
28936         (__arm_vhsubq_s8): Likewise.
28937         (__arm_vhsubq_n_s8): Likewise.
28938         (__arm_vhcaddq_rot90_s8): Likewise.
28939         (__arm_vhcaddq_rot270_s8): Likewise.
28940         (__arm_vhaddq_s8): Likewise.
28941         (__arm_vhaddq_n_s8): Likewise.
28942         (__arm_veorq_s8): Likewise.
28943         (__arm_vcaddq_rot90_s8): Likewise.
28944         (__arm_vcaddq_rot270_s8): Likewise.
28945         (__arm_vbrsrq_n_s8): Likewise.
28946         (__arm_vbicq_s8): Likewise.
28947         (__arm_vandq_s8): Likewise.
28948         (__arm_vaddvaq_s8): Likewise.
28949         (__arm_vaddq_n_s8): Likewise.
28950         (__arm_vabdq_s8): Likewise.
28951         (__arm_vshlq_n_s8): Likewise.
28952         (__arm_vrshrq_n_s8): Likewise.
28953         (__arm_vqshlq_n_s8): Likewise.
28954         (__arm_vsubq_u16): Likewise.
28955         (__arm_vsubq_n_u16): Likewise.
28956         (__arm_vrmulhq_u16): Likewise.
28957         (__arm_vrhaddq_u16): Likewise.
28958         (__arm_vqsubq_u16): Likewise.
28959         (__arm_vqsubq_n_u16): Likewise.
28960         (__arm_vqaddq_u16): Likewise.
28961         (__arm_vqaddq_n_u16): Likewise.
28962         (__arm_vorrq_u16): Likewise.
28963         (__arm_vornq_u16): Likewise.
28964         (__arm_vmulq_u16): Likewise.
28965         (__arm_vmulq_n_u16): Likewise.
28966         (__arm_vmulltq_int_u16): Likewise.
28967         (__arm_vmullbq_int_u16): Likewise.
28968         (__arm_vmulhq_u16): Likewise.
28969         (__arm_vmladavq_u16): Likewise.
28970         (__arm_vminvq_u16): Likewise.
28971         (__arm_vminq_u16): Likewise.
28972         (__arm_vmaxvq_u16): Likewise.
28973         (__arm_vmaxq_u16): Likewise.
28974         (__arm_vhsubq_u16): Likewise.
28975         (__arm_vhsubq_n_u16): Likewise.
28976         (__arm_vhaddq_u16): Likewise.
28977         (__arm_vhaddq_n_u16): Likewise.
28978         (__arm_veorq_u16): Likewise.
28979         (__arm_vcmpneq_n_u16): Likewise.
28980         (__arm_vcmphiq_u16): Likewise.
28981         (__arm_vcmphiq_n_u16): Likewise.
28982         (__arm_vcmpeqq_u16): Likewise.
28983         (__arm_vcmpeqq_n_u16): Likewise.
28984         (__arm_vcmpcsq_u16): Likewise.
28985         (__arm_vcmpcsq_n_u16): Likewise.
28986         (__arm_vcaddq_rot90_u16): Likewise.
28987         (__arm_vcaddq_rot270_u16): Likewise.
28988         (__arm_vbicq_u16): Likewise.
28989         (__arm_vandq_u16): Likewise.
28990         (__arm_vaddvq_p_u16): Likewise.
28991         (__arm_vaddvaq_u16): Likewise.
28992         (__arm_vaddq_n_u16): Likewise.
28993         (__arm_vabdq_u16): Likewise.
28994         (__arm_vshlq_r_u16): Likewise.
28995         (__arm_vrshlq_u16): Likewise.
28996         (__arm_vrshlq_n_u16): Likewise.
28997         (__arm_vqshlq_u16): Likewise.
28998         (__arm_vqshlq_r_u16): Likewise.
28999         (__arm_vqrshlq_u16): Likewise.
29000         (__arm_vqrshlq_n_u16): Likewise.
29001         (__arm_vminavq_s16): Likewise.
29002         (__arm_vminaq_s16): Likewise.
29003         (__arm_vmaxavq_s16): Likewise.
29004         (__arm_vmaxaq_s16): Likewise.
29005         (__arm_vbrsrq_n_u16): Likewise.
29006         (__arm_vshlq_n_u16): Likewise.
29007         (__arm_vrshrq_n_u16): Likewise.
29008         (__arm_vqshlq_n_u16): Likewise.
29009         (__arm_vcmpneq_n_s16): Likewise.
29010         (__arm_vcmpltq_s16): Likewise.
29011         (__arm_vcmpltq_n_s16): Likewise.
29012         (__arm_vcmpleq_s16): Likewise.
29013         (__arm_vcmpleq_n_s16): Likewise.
29014         (__arm_vcmpgtq_s16): Likewise.
29015         (__arm_vcmpgtq_n_s16): Likewise.
29016         (__arm_vcmpgeq_s16): Likewise.
29017         (__arm_vcmpgeq_n_s16): Likewise.
29018         (__arm_vcmpeqq_s16): Likewise.
29019         (__arm_vcmpeqq_n_s16): Likewise.
29020         (__arm_vqshluq_n_s16): Likewise.
29021         (__arm_vaddvq_p_s16): Likewise.
29022         (__arm_vsubq_s16): Likewise.
29023         (__arm_vsubq_n_s16): Likewise.
29024         (__arm_vshlq_r_s16): Likewise.
29025         (__arm_vrshlq_s16): Likewise.
29026         (__arm_vrshlq_n_s16): Likewise.
29027         (__arm_vrmulhq_s16): Likewise.
29028         (__arm_vrhaddq_s16): Likewise.
29029         (__arm_vqsubq_s16): Likewise.
29030         (__arm_vqsubq_n_s16): Likewise.
29031         (__arm_vqshlq_s16): Likewise.
29032         (__arm_vqshlq_r_s16): Likewise.
29033         (__arm_vqrshlq_s16): Likewise.
29034         (__arm_vqrshlq_n_s16): Likewise.
29035         (__arm_vqrdmulhq_s16): Likewise.
29036         (__arm_vqrdmulhq_n_s16): Likewise.
29037         (__arm_vqdmulhq_s16): Likewise.
29038         (__arm_vqdmulhq_n_s16): Likewise.
29039         (__arm_vqaddq_s16): Likewise.
29040         (__arm_vqaddq_n_s16): Likewise.
29041         (__arm_vorrq_s16): Likewise.
29042         (__arm_vornq_s16): Likewise.
29043         (__arm_vmulq_s16): Likewise.
29044         (__arm_vmulq_n_s16): Likewise.
29045         (__arm_vmulltq_int_s16): Likewise.
29046         (__arm_vmullbq_int_s16): Likewise.
29047         (__arm_vmulhq_s16): Likewise.
29048         (__arm_vmlsdavxq_s16): Likewise.
29049         (__arm_vmlsdavq_s16): Likewise.
29050         (__arm_vmladavxq_s16): Likewise.
29051         (__arm_vmladavq_s16): Likewise.
29052         (__arm_vminvq_s16): Likewise.
29053         (__arm_vminq_s16): Likewise.
29054         (__arm_vmaxvq_s16): Likewise.
29055         (__arm_vmaxq_s16): Likewise.
29056         (__arm_vhsubq_s16): Likewise.
29057         (__arm_vhsubq_n_s16): Likewise.
29058         (__arm_vhcaddq_rot90_s16): Likewise.
29059         (__arm_vhcaddq_rot270_s16): Likewise.
29060         (__arm_vhaddq_s16): Likewise.
29061         (__arm_vhaddq_n_s16): Likewise.
29062         (__arm_veorq_s16): Likewise.
29063         (__arm_vcaddq_rot90_s16): Likewise.
29064         (__arm_vcaddq_rot270_s16): Likewise.
29065         (__arm_vbrsrq_n_s16): Likewise.
29066         (__arm_vbicq_s16): Likewise.
29067         (__arm_vandq_s16): Likewise.
29068         (__arm_vaddvaq_s16): Likewise.
29069         (__arm_vaddq_n_s16): Likewise.
29070         (__arm_vabdq_s16): Likewise.
29071         (__arm_vshlq_n_s16): Likewise.
29072         (__arm_vrshrq_n_s16): Likewise.
29073         (__arm_vqshlq_n_s16): Likewise.
29074         (__arm_vsubq_u32): Likewise.
29075         (__arm_vsubq_n_u32): Likewise.
29076         (__arm_vrmulhq_u32): Likewise.
29077         (__arm_vrhaddq_u32): Likewise.
29078         (__arm_vqsubq_u32): Likewise.
29079         (__arm_vqsubq_n_u32): Likewise.
29080         (__arm_vqaddq_u32): Likewise.
29081         (__arm_vqaddq_n_u32): Likewise.
29082         (__arm_vorrq_u32): Likewise.
29083         (__arm_vornq_u32): Likewise.
29084         (__arm_vmulq_u32): Likewise.
29085         (__arm_vmulq_n_u32): Likewise.
29086         (__arm_vmulltq_int_u32): Likewise.
29087         (__arm_vmullbq_int_u32): Likewise.
29088         (__arm_vmulhq_u32): Likewise.
29089         (__arm_vmladavq_u32): Likewise.
29090         (__arm_vminvq_u32): Likewise.
29091         (__arm_vminq_u32): Likewise.
29092         (__arm_vmaxvq_u32): Likewise.
29093         (__arm_vmaxq_u32): Likewise.
29094         (__arm_vhsubq_u32): Likewise.
29095         (__arm_vhsubq_n_u32): Likewise.
29096         (__arm_vhaddq_u32): Likewise.
29097         (__arm_vhaddq_n_u32): Likewise.
29098         (__arm_veorq_u32): Likewise.
29099         (__arm_vcmpneq_n_u32): Likewise.
29100         (__arm_vcmphiq_u32): Likewise.
29101         (__arm_vcmphiq_n_u32): Likewise.
29102         (__arm_vcmpeqq_u32): Likewise.
29103         (__arm_vcmpeqq_n_u32): Likewise.
29104         (__arm_vcmpcsq_u32): Likewise.
29105         (__arm_vcmpcsq_n_u32): Likewise.
29106         (__arm_vcaddq_rot90_u32): Likewise.
29107         (__arm_vcaddq_rot270_u32): Likewise.
29108         (__arm_vbicq_u32): Likewise.
29109         (__arm_vandq_u32): Likewise.
29110         (__arm_vaddvq_p_u32): Likewise.
29111         (__arm_vaddvaq_u32): Likewise.
29112         (__arm_vaddq_n_u32): Likewise.
29113         (__arm_vabdq_u32): Likewise.
29114         (__arm_vshlq_r_u32): Likewise.
29115         (__arm_vrshlq_u32): Likewise.
29116         (__arm_vrshlq_n_u32): Likewise.
29117         (__arm_vqshlq_u32): Likewise.
29118         (__arm_vqshlq_r_u32): Likewise.
29119         (__arm_vqrshlq_u32): Likewise.
29120         (__arm_vqrshlq_n_u32): Likewise.
29121         (__arm_vminavq_s32): Likewise.
29122         (__arm_vminaq_s32): Likewise.
29123         (__arm_vmaxavq_s32): Likewise.
29124         (__arm_vmaxaq_s32): Likewise.
29125         (__arm_vbrsrq_n_u32): Likewise.
29126         (__arm_vshlq_n_u32): Likewise.
29127         (__arm_vrshrq_n_u32): Likewise.
29128         (__arm_vqshlq_n_u32): Likewise.
29129         (__arm_vcmpneq_n_s32): Likewise.
29130         (__arm_vcmpltq_s32): Likewise.
29131         (__arm_vcmpltq_n_s32): Likewise.
29132         (__arm_vcmpleq_s32): Likewise.
29133         (__arm_vcmpleq_n_s32): Likewise.
29134         (__arm_vcmpgtq_s32): Likewise.
29135         (__arm_vcmpgtq_n_s32): Likewise.
29136         (__arm_vcmpgeq_s32): Likewise.
29137         (__arm_vcmpgeq_n_s32): Likewise.
29138         (__arm_vcmpeqq_s32): Likewise.
29139         (__arm_vcmpeqq_n_s32): Likewise.
29140         (__arm_vqshluq_n_s32): Likewise.
29141         (__arm_vaddvq_p_s32): Likewise.
29142         (__arm_vsubq_s32): Likewise.
29143         (__arm_vsubq_n_s32): Likewise.
29144         (__arm_vshlq_r_s32): Likewise.
29145         (__arm_vrshlq_s32): Likewise.
29146         (__arm_vrshlq_n_s32): Likewise.
29147         (__arm_vrmulhq_s32): Likewise.
29148         (__arm_vrhaddq_s32): Likewise.
29149         (__arm_vqsubq_s32): Likewise.
29150         (__arm_vqsubq_n_s32): Likewise.
29151         (__arm_vqshlq_s32): Likewise.
29152         (__arm_vqshlq_r_s32): Likewise.
29153         (__arm_vqrshlq_s32): Likewise.
29154         (__arm_vqrshlq_n_s32): Likewise.
29155         (__arm_vqrdmulhq_s32): Likewise.
29156         (__arm_vqrdmulhq_n_s32): Likewise.
29157         (__arm_vqdmulhq_s32): Likewise.
29158         (__arm_vqdmulhq_n_s32): Likewise.
29159         (__arm_vqaddq_s32): Likewise.
29160         (__arm_vqaddq_n_s32): Likewise.
29161         (__arm_vorrq_s32): Likewise.
29162         (__arm_vornq_s32): Likewise.
29163         (__arm_vmulq_s32): Likewise.
29164         (__arm_vmulq_n_s32): Likewise.
29165         (__arm_vmulltq_int_s32): Likewise.
29166         (__arm_vmullbq_int_s32): Likewise.
29167         (__arm_vmulhq_s32): Likewise.
29168         (__arm_vmlsdavxq_s32): Likewise.
29169         (__arm_vmlsdavq_s32): Likewise.
29170         (__arm_vmladavxq_s32): Likewise.
29171         (__arm_vmladavq_s32): Likewise.
29172         (__arm_vminvq_s32): Likewise.
29173         (__arm_vminq_s32): Likewise.
29174         (__arm_vmaxvq_s32): Likewise.
29175         (__arm_vmaxq_s32): Likewise.
29176         (__arm_vhsubq_s32): Likewise.
29177         (__arm_vhsubq_n_s32): Likewise.
29178         (__arm_vhcaddq_rot90_s32): Likewise.
29179         (__arm_vhcaddq_rot270_s32): Likewise.
29180         (__arm_vhaddq_s32): Likewise.
29181         (__arm_vhaddq_n_s32): Likewise.
29182         (__arm_veorq_s32): Likewise.
29183         (__arm_vcaddq_rot90_s32): Likewise.
29184         (__arm_vcaddq_rot270_s32): Likewise.
29185         (__arm_vbrsrq_n_s32): Likewise.
29186         (__arm_vbicq_s32): Likewise.
29187         (__arm_vandq_s32): Likewise.
29188         (__arm_vaddvaq_s32): Likewise.
29189         (__arm_vaddq_n_s32): Likewise.
29190         (__arm_vabdq_s32): Likewise.
29191         (__arm_vshlq_n_s32): Likewise.
29192         (__arm_vrshrq_n_s32): Likewise.
29193         (__arm_vqshlq_n_s32): Likewise.
29194         (vsubq): Define polymorphic variant.
29195         (vsubq_n): Likewise.
29196         (vshlq_r): Likewise.
29197         (vrshlq_n): Likewise.
29198         (vrshlq): Likewise.
29199         (vrmulhq): Likewise.
29200         (vrhaddq): Likewise.
29201         (vqsubq_n): Likewise.
29202         (vqsubq): Likewise.
29203         (vqshlq): Likewise.
29204         (vqshlq_r): Likewise.
29205         (vqshluq): Likewise.
29206         (vrshrq_n): Likewise.
29207         (vshlq_n): Likewise.
29208         (vqshluq_n): Likewise.
29209         (vqshlq_n): Likewise.
29210         (vqrshlq_n): Likewise.
29211         (vqrshlq): Likewise.
29212         (vqrdmulhq_n): Likewise.
29213         (vqrdmulhq): Likewise.
29214         (vqdmulhq_n): Likewise.
29215         (vqdmulhq): Likewise.
29216         (vqaddq_n): Likewise.
29217         (vqaddq): Likewise.
29218         (vorrq_n): Likewise.
29219         (vorrq): Likewise.
29220         (vornq): Likewise.
29221         (vmulq_n): Likewise.
29222         (vmulq): Likewise.
29223         (vmulltq_int): Likewise.
29224         (vmullbq_int): Likewise.
29225         (vmulhq): Likewise.
29226         (vminq): Likewise.
29227         (vminaq): Likewise.
29228         (vmaxq): Likewise.
29229         (vmaxaq): Likewise.
29230         (vhsubq_n): Likewise.
29231         (vhsubq): Likewise.
29232         (vhcaddq_rot90): Likewise.
29233         (vhcaddq_rot270): Likewise.
29234         (vhaddq_n): Likewise.
29235         (vhaddq): Likewise.
29236         (veorq): Likewise.
29237         (vcaddq_rot90): Likewise.
29238         (vcaddq_rot270): Likewise.
29239         (vbrsrq_n): Likewise.
29240         (vbicq_n): Likewise.
29241         (vbicq): Likewise.
29242         (vaddq): Likewise.
29243         (vaddq_n): Likewise.
29244         (vandq): Likewise.
29245         (vabdq): Likewise.
29246         * config/arm/arm_mve_builtins.def (BINOP_NONE_NONE_IMM): Use it.
29247         (BINOP_NONE_NONE_NONE): Likewise.
29248         (BINOP_NONE_NONE_UNONE): Likewise.
29249         (BINOP_UNONE_NONE_IMM): Likewise.
29250         (BINOP_UNONE_NONE_NONE): Likewise.
29251         (BINOP_UNONE_UNONE_IMM): Likewise.
29252         (BINOP_UNONE_UNONE_NONE): Likewise.
29253         (BINOP_UNONE_UNONE_UNONE): Likewise.
29254         * config/arm/constraints.md (Ra): Define constraint to check constant is
29255         in the range of 0 to 7.
29256         (Rg): Define constriant to check the constant is one among 1, 2, 4
29257         and 8.
29258         * config/arm/mve.md (mve_vabdq_<supf>): Define RTL pattern.
29259         (mve_vaddq_n_<supf>): Likewise.
29260         (mve_vaddvaq_<supf>): Likewise.
29261         (mve_vaddvq_p_<supf>): Likewise.
29262         (mve_vandq_<supf>): Likewise.
29263         (mve_vbicq_<supf>): Likewise.
29264         (mve_vbrsrq_n_<supf>): Likewise.
29265         (mve_vcaddq_rot270_<supf>): Likewise.
29266         (mve_vcaddq_rot90_<supf>): Likewise.
29267         (mve_vcmpcsq_n_u): Likewise.
29268         (mve_vcmpcsq_u): Likewise.
29269         (mve_vcmpeqq_n_<supf>): Likewise.
29270         (mve_vcmpeqq_<supf>): Likewise.
29271         (mve_vcmpgeq_n_s): Likewise.
29272         (mve_vcmpgeq_s): Likewise.
29273         (mve_vcmpgtq_n_s): Likewise.
29274         (mve_vcmpgtq_s): Likewise.
29275         (mve_vcmphiq_n_u): Likewise.
29276         (mve_vcmphiq_u): Likewise.
29277         (mve_vcmpleq_n_s): Likewise.
29278         (mve_vcmpleq_s): Likewise.
29279         (mve_vcmpltq_n_s): Likewise.
29280         (mve_vcmpltq_s): Likewise.
29281         (mve_vcmpneq_n_<supf>): Likewise.
29282         (mve_vddupq_n_u): Likewise.
29283         (mve_veorq_<supf>): Likewise.
29284         (mve_vhaddq_n_<supf>): Likewise.
29285         (mve_vhaddq_<supf>): Likewise.
29286         (mve_vhcaddq_rot270_s): Likewise.
29287         (mve_vhcaddq_rot90_s): Likewise.
29288         (mve_vhsubq_n_<supf>): Likewise.
29289         (mve_vhsubq_<supf>): Likewise.
29290         (mve_vidupq_n_u): Likewise.
29291         (mve_vmaxaq_s): Likewise.
29292         (mve_vmaxavq_s): Likewise.
29293         (mve_vmaxq_<supf>): Likewise.
29294         (mve_vmaxvq_<supf>): Likewise.
29295         (mve_vminaq_s): Likewise.
29296         (mve_vminavq_s): Likewise.
29297         (mve_vminq_<supf>): Likewise.
29298         (mve_vminvq_<supf>): Likewise.
29299         (mve_vmladavq_<supf>): Likewise.
29300         (mve_vmladavxq_s): Likewise.
29301         (mve_vmlsdavq_s): Likewise.
29302         (mve_vmlsdavxq_s): Likewise.
29303         (mve_vmulhq_<supf>): Likewise.
29304         (mve_vmullbq_int_<supf>): Likewise.
29305         (mve_vmulltq_int_<supf>): Likewise.
29306         (mve_vmulq_n_<supf>): Likewise.
29307         (mve_vmulq_<supf>): Likewise.
29308         (mve_vornq_<supf>): Likewise.
29309         (mve_vorrq_<supf>): Likewise.
29310         (mve_vqaddq_n_<supf>): Likewise.
29311         (mve_vqaddq_<supf>): Likewise.
29312         (mve_vqdmulhq_n_s): Likewise.
29313         (mve_vqdmulhq_s): Likewise.
29314         (mve_vqrdmulhq_n_s): Likewise.
29315         (mve_vqrdmulhq_s): Likewise.
29316         (mve_vqrshlq_n_<supf>): Likewise.
29317         (mve_vqrshlq_<supf>): Likewise.
29318         (mve_vqshlq_n_<supf>): Likewise.
29319         (mve_vqshlq_r_<supf>): Likewise.
29320         (mve_vqshlq_<supf>): Likewise.
29321         (mve_vqshluq_n_s): Likewise.
29322         (mve_vqsubq_n_<supf>): Likewise.
29323         (mve_vqsubq_<supf>): Likewise.
29324         (mve_vrhaddq_<supf>): Likewise.
29325         (mve_vrmulhq_<supf>): Likewise.
29326         (mve_vrshlq_n_<supf>): Likewise.
29327         (mve_vrshlq_<supf>): Likewise.
29328         (mve_vrshrq_n_<supf>): Likewise.
29329         (mve_vshlq_n_<supf>): Likewise.
29330         (mve_vshlq_r_<supf>): Likewise.
29331         (mve_vsubq_n_<supf>): Likewise.
29332         (mve_vsubq_<supf>): Likewise.
29333         * config/arm/predicates.md (mve_imm_7): Define predicate to check
29334         the matching constraint Ra.
29335         (mve_imm_selective_upto_8): Define predicate to check the matching
29336         constraint Rg.
29338 2020-03-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
29339             Mihail Ionescu  <mihail.ionescu@arm.com>
29340             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
29342         * config/arm/arm-builtins.c (BINOP_NONE_NONE_UNONE_QUALIFIERS): Define
29343         qualifier for binary operands.
29344         (BINOP_UNONE_NONE_NONE_QUALIFIERS): Likewise.
29345         (BINOP_UNONE_UNONE_NONE_QUALIFIERS): Likewise.
29346         * config/arm/arm_mve.h (vaddlvq_p_s32): Define macro.
29347         (vaddlvq_p_u32): Likewise.
29348         (vcmpneq_s8): Likewise.
29349         (vcmpneq_s16): Likewise.
29350         (vcmpneq_s32): Likewise.
29351         (vcmpneq_u8): Likewise.
29352         (vcmpneq_u16): Likewise.
29353         (vcmpneq_u32): Likewise.
29354         (vshlq_s8): Likewise.
29355         (vshlq_s16): Likewise.
29356         (vshlq_s32): Likewise.
29357         (vshlq_u8): Likewise.
29358         (vshlq_u16): Likewise.
29359         (vshlq_u32): Likewise.
29360         (__arm_vaddlvq_p_s32): Define intrinsic.
29361         (__arm_vaddlvq_p_u32): Likewise.
29362         (__arm_vcmpneq_s8): Likewise.
29363         (__arm_vcmpneq_s16): Likewise.
29364         (__arm_vcmpneq_s32): Likewise.
29365         (__arm_vcmpneq_u8): Likewise.
29366         (__arm_vcmpneq_u16): Likewise.
29367         (__arm_vcmpneq_u32): Likewise.
29368         (__arm_vshlq_s8): Likewise.
29369         (__arm_vshlq_s16): Likewise.
29370         (__arm_vshlq_s32): Likewise.
29371         (__arm_vshlq_u8): Likewise.
29372         (__arm_vshlq_u16): Likewise.
29373         (__arm_vshlq_u32): Likewise.
29374         (vaddlvq_p): Define polymorphic variant.
29375         (vcmpneq): Likewise.
29376         (vshlq): Likewise.
29377         * config/arm/arm_mve_builtins.def (BINOP_NONE_NONE_UNONE_QUALIFIERS):
29378         Use it.
29379         (BINOP_UNONE_NONE_NONE_QUALIFIERS): Likewise.
29380         (BINOP_UNONE_UNONE_NONE_QUALIFIERS): Likewise.
29381         * config/arm/mve.md (mve_vaddlvq_p_<supf>v4si): Define RTL pattern.
29382         (mve_vcmpneq_<supf><mode>): Likewise.
29383         (mve_vshlq_<supf><mode>): Likewise.
29385 2020-03-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
29386             Mihail Ionescu  <mihail.ionescu@arm.com>
29387             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
29389         * config/arm/arm-builtins.c (BINOP_UNONE_UNONE_IMM_QUALIFIERS): Define
29390         qualifier for binary operands.
29391         (BINOP_UNONE_UNONE_UNONE_QUALIFIERS): Likewise.
29392         (BINOP_UNONE_NONE_IMM_QUALIFIERS): Likewise.
29393         * config/arm/arm_mve.h (vcvtq_n_s16_f16): Define macro.
29394         (vcvtq_n_s32_f32): Likewise.
29395         (vcvtq_n_u16_f16): Likewise.
29396         (vcvtq_n_u32_f32): Likewise.
29397         (vcreateq_u8): Likewise.
29398         (vcreateq_u16): Likewise.
29399         (vcreateq_u32): Likewise.
29400         (vcreateq_u64): Likewise.
29401         (vcreateq_s8): Likewise.
29402         (vcreateq_s16): Likewise.
29403         (vcreateq_s32): Likewise.
29404         (vcreateq_s64): Likewise.
29405         (vshrq_n_s8): Likewise.
29406         (vshrq_n_s16): Likewise.
29407         (vshrq_n_s32): Likewise.
29408         (vshrq_n_u8): Likewise.
29409         (vshrq_n_u16): Likewise.
29410         (vshrq_n_u32): Likewise.
29411         (__arm_vcreateq_u8): Define intrinsic.
29412         (__arm_vcreateq_u16): Likewise.
29413         (__arm_vcreateq_u32): Likewise.
29414         (__arm_vcreateq_u64): Likewise.
29415         (__arm_vcreateq_s8): Likewise.
29416         (__arm_vcreateq_s16): Likewise.
29417         (__arm_vcreateq_s32): Likewise.
29418         (__arm_vcreateq_s64): Likewise.
29419         (__arm_vshrq_n_s8): Likewise.
29420         (__arm_vshrq_n_s16): Likewise.
29421         (__arm_vshrq_n_s32): Likewise.
29422         (__arm_vshrq_n_u8): Likewise.
29423         (__arm_vshrq_n_u16): Likewise.
29424         (__arm_vshrq_n_u32): Likewise.
29425         (__arm_vcvtq_n_s16_f16): Likewise.
29426         (__arm_vcvtq_n_s32_f32): Likewise.
29427         (__arm_vcvtq_n_u16_f16): Likewise.
29428         (__arm_vcvtq_n_u32_f32): Likewise.
29429         (vshrq_n): Define polymorphic variant.
29430         * config/arm/arm_mve_builtins.def (BINOP_UNONE_UNONE_IMM_QUALIFIERS):
29431         Use it.
29432         (BINOP_UNONE_UNONE_UNONE_QUALIFIERS): Likewise.
29433         (BINOP_UNONE_NONE_IMM_QUALIFIERS): Likewise.
29434         * config/arm/constraints.md (Rb): Define constraint to check constant is
29435         in the range of 1 to 8.
29436         (Rf): Define constraint to check constant is in the range of 1 to 32.
29437         * config/arm/mve.md (mve_vcreateq_<supf><mode>): Define RTL pattern.
29438         (mve_vshrq_n_<supf><mode>): Likewise.
29439         (mve_vcvtq_n_from_f_<supf><mode>): Likewise.
29440         * config/arm/predicates.md (mve_imm_8): Define predicate to check
29441         the matching constraint Rb.
29442         (mve_imm_32): Define predicate to check the matching constraint Rf.
29444 2020-03-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
29445             Mihail Ionescu  <mihail.ionescu@arm.com>
29446             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
29448         * config/arm/arm-builtins.c (BINOP_NONE_NONE_NONE_QUALIFIERS): Define
29449         qualifier for binary operands.
29450         (BINOP_NONE_NONE_IMM_QUALIFIERS): Likewise.
29451         (BINOP_NONE_UNONE_IMM_QUALIFIERS): Likewise.
29452         (BINOP_NONE_UNONE_UNONE_QUALIFIERS): Likewise.
29453         * config/arm/arm_mve.h (vsubq_n_f16): Define macro.
29454         (vsubq_n_f32): Likewise.
29455         (vbrsrq_n_f16): Likewise.
29456         (vbrsrq_n_f32): Likewise.
29457         (vcvtq_n_f16_s16): Likewise.
29458         (vcvtq_n_f32_s32): Likewise.
29459         (vcvtq_n_f16_u16): Likewise.
29460         (vcvtq_n_f32_u32): Likewise.
29461         (vcreateq_f16): Likewise.
29462         (vcreateq_f32): Likewise.
29463         (__arm_vsubq_n_f16): Define intrinsic.
29464         (__arm_vsubq_n_f32): Likewise.
29465         (__arm_vbrsrq_n_f16): Likewise.
29466         (__arm_vbrsrq_n_f32): Likewise.
29467         (__arm_vcvtq_n_f16_s16): Likewise.
29468         (__arm_vcvtq_n_f32_s32): Likewise.
29469         (__arm_vcvtq_n_f16_u16): Likewise.
29470         (__arm_vcvtq_n_f32_u32): Likewise.
29471         (__arm_vcreateq_f16): Likewise.
29472         (__arm_vcreateq_f32): Likewise.
29473         (vsubq): Define polymorphic variant.
29474         (vbrsrq): Likewise.
29475         (vcvtq_n): Likewise.
29476         * config/arm/arm_mve_builtins.def (BINOP_NONE_NONE_NONE_QUALIFIERS): Use
29477         it.
29478         (BINOP_NONE_NONE_IMM_QUALIFIERS): Likewise.
29479         (BINOP_NONE_UNONE_IMM_QUALIFIERS): Likewise.
29480         (BINOP_NONE_UNONE_UNONE_QUALIFIERS): Likewise.
29481         * config/arm/constraints.md (Rd): Define constraint to check constant is
29482         in the range of 1 to 16.
29483         * config/arm/mve.md (mve_vsubq_n_f<mode>): Define RTL pattern.
29484         mve_vbrsrq_n_f<mode>: Likewise.
29485         mve_vcvtq_n_to_f_<supf><mode>: Likewise.
29486         mve_vcreateq_f<mode>: Likewise.
29487         * config/arm/predicates.md (mve_imm_16): Define predicate to check
29488         the matching constraint Rd.
29490 2020-03-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
29491             Mihail Ionescu  <mihail.ionescu@arm.com>
29492             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
29494         * config/arm/arm-builtins.c (hi_UP): Define mode.
29495         * config/arm/arm.h (IS_VPR_REGNUM): Move.
29496         * config/arm/arm.md (VPR_REGNUM): Define before APSRQ_REGNUM.
29497         (APSRQ_REGNUM): Modify.
29498         (APSRGE_REGNUM): Modify.
29499         * config/arm/arm_mve.h (vctp16q): Define macro.
29500         (vctp32q): Likewise.
29501         (vctp64q): Likewise.
29502         (vctp8q): Likewise.
29503         (vpnot): Likewise.
29504         (__arm_vctp16q): Define intrinsic.
29505         (__arm_vctp32q): Likewise.
29506         (__arm_vctp64q): Likewise.
29507         (__arm_vctp8q): Likewise.
29508         (__arm_vpnot): Likewise.
29509         * config/arm/arm_mve_builtins.def (UNOP_UNONE_UNONE): Use builtin
29510         qualifier.
29511         * config/arm/mve.md (mve_vctp<mode1>qhi): Define RTL pattern.
29512         (mve_vpnothi): Likewise.
29514 2020-03-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
29515             Mihail Ionescu  <mihail.ionescu@arm.com>
29516             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
29518         * config/arm/arm.h (enum reg_class): Define new class EVEN_REGS.
29519         * config/arm/arm_mve.h (vdupq_n_s8): Define macro.
29520         (vdupq_n_s16): Likewise.
29521         (vdupq_n_s32): Likewise.
29522         (vabsq_s8): Likewise.
29523         (vabsq_s16): Likewise.
29524         (vabsq_s32): Likewise.
29525         (vclsq_s8): Likewise.
29526         (vclsq_s16): Likewise.
29527         (vclsq_s32): Likewise.
29528         (vclzq_s8): Likewise.
29529         (vclzq_s16): Likewise.
29530         (vclzq_s32): Likewise.
29531         (vnegq_s8): Likewise.
29532         (vnegq_s16): Likewise.
29533         (vnegq_s32): Likewise.
29534         (vaddlvq_s32): Likewise.
29535         (vaddvq_s8): Likewise.
29536         (vaddvq_s16): Likewise.
29537         (vaddvq_s32): Likewise.
29538         (vmovlbq_s8): Likewise.
29539         (vmovlbq_s16): Likewise.
29540         (vmovltq_s8): Likewise.
29541         (vmovltq_s16): Likewise.
29542         (vmvnq_s8): Likewise.
29543         (vmvnq_s16): Likewise.
29544         (vmvnq_s32): Likewise.
29545         (vrev16q_s8): Likewise.
29546         (vrev32q_s8): Likewise.
29547         (vrev32q_s16): Likewise.
29548         (vqabsq_s8): Likewise.
29549         (vqabsq_s16): Likewise.
29550         (vqabsq_s32): Likewise.
29551         (vqnegq_s8): Likewise.
29552         (vqnegq_s16): Likewise.
29553         (vqnegq_s32): Likewise.
29554         (vcvtaq_s16_f16): Likewise.
29555         (vcvtaq_s32_f32): Likewise.
29556         (vcvtnq_s16_f16): Likewise.
29557         (vcvtnq_s32_f32): Likewise.
29558         (vcvtpq_s16_f16): Likewise.
29559         (vcvtpq_s32_f32): Likewise.
29560         (vcvtmq_s16_f16): Likewise.
29561         (vcvtmq_s32_f32): Likewise.
29562         (vmvnq_u8): Likewise.
29563         (vmvnq_u16): Likewise.
29564         (vmvnq_u32): Likewise.
29565         (vdupq_n_u8): Likewise.
29566         (vdupq_n_u16): Likewise.
29567         (vdupq_n_u32): Likewise.
29568         (vclzq_u8): Likewise.
29569         (vclzq_u16): Likewise.
29570         (vclzq_u32): Likewise.
29571         (vaddvq_u8): Likewise.
29572         (vaddvq_u16): Likewise.
29573         (vaddvq_u32): Likewise.
29574         (vrev32q_u8): Likewise.
29575         (vrev32q_u16): Likewise.
29576         (vmovltq_u8): Likewise.
29577         (vmovltq_u16): Likewise.
29578         (vmovlbq_u8): Likewise.
29579         (vmovlbq_u16): Likewise.
29580         (vrev16q_u8): Likewise.
29581         (vaddlvq_u32): Likewise.
29582         (vcvtpq_u16_f16): Likewise.
29583         (vcvtpq_u32_f32): Likewise.
29584         (vcvtnq_u16_f16): Likewise.
29585         (vcvtmq_u16_f16): Likewise.
29586         (vcvtmq_u32_f32): Likewise.
29587         (vcvtaq_u16_f16): Likewise.
29588         (vcvtaq_u32_f32): Likewise.
29589         (__arm_vdupq_n_s8): Define intrinsic.
29590         (__arm_vdupq_n_s16): Likewise.
29591         (__arm_vdupq_n_s32): Likewise.
29592         (__arm_vabsq_s8): Likewise.
29593         (__arm_vabsq_s16): Likewise.
29594         (__arm_vabsq_s32): Likewise.
29595         (__arm_vclsq_s8): Likewise.
29596         (__arm_vclsq_s16): Likewise.
29597         (__arm_vclsq_s32): Likewise.
29598         (__arm_vclzq_s8): Likewise.
29599         (__arm_vclzq_s16): Likewise.
29600         (__arm_vclzq_s32): Likewise.
29601         (__arm_vnegq_s8): Likewise.
29602         (__arm_vnegq_s16): Likewise.
29603         (__arm_vnegq_s32): Likewise.
29604         (__arm_vaddlvq_s32): Likewise.
29605         (__arm_vaddvq_s8): Likewise.
29606         (__arm_vaddvq_s16): Likewise.
29607         (__arm_vaddvq_s32): Likewise.
29608         (__arm_vmovlbq_s8): Likewise.
29609         (__arm_vmovlbq_s16): Likewise.
29610         (__arm_vmovltq_s8): Likewise.
29611         (__arm_vmovltq_s16): Likewise.
29612         (__arm_vmvnq_s8): Likewise.
29613         (__arm_vmvnq_s16): Likewise.
29614         (__arm_vmvnq_s32): Likewise.
29615         (__arm_vrev16q_s8): Likewise.
29616         (__arm_vrev32q_s8): Likewise.
29617         (__arm_vrev32q_s16): Likewise.
29618         (__arm_vqabsq_s8): Likewise.
29619         (__arm_vqabsq_s16): Likewise.
29620         (__arm_vqabsq_s32): Likewise.
29621         (__arm_vqnegq_s8): Likewise.
29622         (__arm_vqnegq_s16): Likewise.
29623         (__arm_vqnegq_s32): Likewise.
29624         (__arm_vmvnq_u8): Likewise.
29625         (__arm_vmvnq_u16): Likewise.
29626         (__arm_vmvnq_u32): Likewise.
29627         (__arm_vdupq_n_u8): Likewise.
29628         (__arm_vdupq_n_u16): Likewise.
29629         (__arm_vdupq_n_u32): Likewise.
29630         (__arm_vclzq_u8): Likewise.
29631         (__arm_vclzq_u16): Likewise.
29632         (__arm_vclzq_u32): Likewise.
29633         (__arm_vaddvq_u8): Likewise.
29634         (__arm_vaddvq_u16): Likewise.
29635         (__arm_vaddvq_u32): Likewise.
29636         (__arm_vrev32q_u8): Likewise.
29637         (__arm_vrev32q_u16): Likewise.
29638         (__arm_vmovltq_u8): Likewise.
29639         (__arm_vmovltq_u16): Likewise.
29640         (__arm_vmovlbq_u8): Likewise.
29641         (__arm_vmovlbq_u16): Likewise.
29642         (__arm_vrev16q_u8): Likewise.
29643         (__arm_vaddlvq_u32): Likewise.
29644         (__arm_vcvtpq_u16_f16): Likewise.
29645         (__arm_vcvtpq_u32_f32): Likewise.
29646         (__arm_vcvtnq_u16_f16): Likewise.
29647         (__arm_vcvtmq_u16_f16): Likewise.
29648         (__arm_vcvtmq_u32_f32): Likewise.
29649         (__arm_vcvtaq_u16_f16): Likewise.
29650         (__arm_vcvtaq_u32_f32): Likewise.
29651         (__arm_vcvtaq_s16_f16): Likewise.
29652         (__arm_vcvtaq_s32_f32): Likewise.
29653         (__arm_vcvtnq_s16_f16): Likewise.
29654         (__arm_vcvtnq_s32_f32): Likewise.
29655         (__arm_vcvtpq_s16_f16): Likewise.
29656         (__arm_vcvtpq_s32_f32): Likewise.
29657         (__arm_vcvtmq_s16_f16): Likewise.
29658         (__arm_vcvtmq_s32_f32): Likewise.
29659         (vdupq_n): Define polymorphic variant.
29660         (vabsq): Likewise.
29661         (vclsq): Likewise.
29662         (vclzq): Likewise.
29663         (vnegq): Likewise.
29664         (vaddlvq): Likewise.
29665         (vaddvq): Likewise.
29666         (vmovlbq): Likewise.
29667         (vmovltq): Likewise.
29668         (vmvnq): Likewise.
29669         (vrev16q): Likewise.
29670         (vrev32q): Likewise.
29671         (vqabsq): Likewise.
29672         (vqnegq): Likewise.
29673         * config/arm/arm_mve_builtins.def (UNOP_SNONE_SNONE): Use it.
29674         (UNOP_SNONE_NONE): Likewise.
29675         (UNOP_UNONE_UNONE): Likewise.
29676         (UNOP_UNONE_NONE): Likewise.
29677         * config/arm/constraints.md (e): Define new constriant to allow only
29678         even registers.
29679         * config/arm/mve.md (mve_vqabsq_s<mode>): Define RTL pattern.
29680         (mve_vnegq_s<mode>): Likewise.
29681         (mve_vmvnq_<supf><mode>): Likewise.
29682         (mve_vdupq_n_<supf><mode>): Likewise.
29683         (mve_vclzq_<supf><mode>): Likewise.
29684         (mve_vclsq_s<mode>): Likewise.
29685         (mve_vaddvq_<supf><mode>): Likewise.
29686         (mve_vabsq_s<mode>): Likewise.
29687         (mve_vrev32q_<supf><mode>): Likewise.
29688         (mve_vmovltq_<supf><mode>): Likewise.
29689         (mve_vmovlbq_<supf><mode>): Likewise.
29690         (mve_vcvtpq_<supf><mode>): Likewise.
29691         (mve_vcvtnq_<supf><mode>): Likewise.
29692         (mve_vcvtmq_<supf><mode>): Likewise.
29693         (mve_vcvtaq_<supf><mode>): Likewise.
29694         (mve_vrev16q_<supf>v16qi): Likewise.
29695         (mve_vaddlvq_<supf>v4si): Likewise.
29697 2020-03-17  Jakub Jelinek  <jakub@redhat.com>
29699         * lra-spills.c (remove_pseudos): Fix up duplicated word issue in
29700         a dump message.
29701         * tree-sra.c (create_access_replacement): Fix up duplicated word issue
29702         in a comment.
29703         * read-rtl-function.c (find_param_by_name,
29704         function_reader::parse_enum_value, function_reader::get_insn_by_uid):
29705         Likewise.
29706         * spellcheck.c (get_edit_distance_cutoff): Likewise.
29707         * tree-data-ref.c (create_ifn_alias_checks): Likewise.
29708         * tree.def (SWITCH_EXPR): Likewise.
29709         * selftest.c (assert_str_contains): Likewise.
29710         * ipa-param-manipulation.h (class ipa_param_body_adjustments):
29711         Likewise.
29712         * tree-ssa-math-opts.c (convert_expand_mult_copysign): Likewise.
29713         * tree-ssa-loop-split.c (find_vdef_in_loop): Likewise.
29714         * langhooks.h (struct lang_hooks_for_decls): Likewise.
29715         * ipa-prop.h (struct ipa_param_descriptor): Likewise.
29716         * tree-ssa-strlen.c (handle_builtin_string_cmp, handle_store):
29717         Likewise.
29718         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Likewise.
29719         * tree-ssa-reassoc.c (reassociate_bb): Likewise.
29720         * tree.c (component_ref_size): Likewise.
29721         * hsa-common.c (hsa_init_compilation_unit_data): Likewise.
29722         * gimple-ssa-sprintf.c (get_string_length, format_string,
29723         format_directive): Likewise.
29724         * omp-grid.c (grid_process_kernel_body_copy): Likewise.
29725         * input.c (string_concat_db::get_string_concatenation,
29726         test_lexer_string_locations_ucn4): Likewise.
29727         * cfgexpand.c (pass_expand::execute): Likewise.
29728         * gimple-ssa-warn-restrict.c (builtin_memref::offset_out_of_bounds,
29729         maybe_diag_overlap): Likewise.
29730         * rtl.c (RTX_CODE_HWINT_P_1): Likewise.
29731         * shrink-wrap.c (spread_components): Likewise.
29732         * tree-ssa-dse.c (initialize_ao_ref_for_dse, valid_ao_ref_for_dse):
29733         Likewise.
29734         * tree-call-cdce.c (shrink_wrap_one_built_in_call_with_conds):
29735         Likewise.
29736         * dwarf2out.c (dwarf2out_early_finish): Likewise.
29737         * gimple-ssa-store-merging.c: Likewise.
29738         * ira-costs.c (record_operand_costs): Likewise.
29739         * tree-vect-loop.c (vectorizable_reduction): Likewise.
29740         * target.def (dispatch): Likewise.
29741         (validate_dims, gen_ccmp_first): Fix up duplicated word issue
29742         in documentation text.
29743         * doc/tm.texi: Regenerated.
29744         * config/i386/x86-tune.def (X86_TUNE_PARTIAL_FLAG_REG_STALL): Fix up
29745         duplicated word issue in a comment.
29746         * config/i386/i386.c (ix86_test_loading_unspec): Likewise.
29747         * config/i386/i386-features.c (remove_partial_avx_dependency):
29748         Likewise.
29749         * config/msp430/msp430.c (msp430_select_section): Likewise.
29750         * config/gcn/gcn-run.c (load_image): Likewise.
29751         * config/aarch64/aarch64-sve.md (sve_ld1r<mode>): Likewise.
29752         * config/aarch64/aarch64.c (aarch64_gen_adjusted_ldpstp): Likewise.
29753         * config/aarch64/falkor-tag-collision-avoidance.c
29754         (single_dest_per_chain): Likewise.
29755         * config/nvptx/nvptx.c (nvptx_record_fndecl): Likewise.
29756         * config/fr30/fr30.c (fr30_arg_partial_bytes): Likewise.
29757         * config/rs6000/rs6000-string.c (expand_cmp_vec_sequence): Likewise.
29758         * config/rs6000/rs6000-p8swap.c (replace_swapped_load_constant):
29759         Likewise.
29760         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Likewise.
29761         * config/rs6000/rs6000.c (rs6000_option_override_internal): Likewise.
29762         * config/rs6000/rs6000-logue.c
29763         (rs6000_emit_probe_stack_range_stack_clash): Likewise.
29764         * config/nds32/nds32-md-auxiliary.c (nds32_split_ashiftdi3): Likewise.
29765         Fix various other issues in the comment.
29767 2020-03-17  Mihail Ionescu  <mihail.ionescu@arm.com>
29769         * config/arm/t-rmprofile: create new multilib for
29770         armv8.1-m.main+mve hard float and reuse v8-m.main ones for
29771         v8.1-m.main+mve.
29773 2020-03-17  Jakub Jelinek  <jakub@redhat.com>
29775         PR tree-optimization/94015
29776         * tree-ssa-strlen.c (count_nonzero_bytes): Split portions of the
29777         function where EXP is address of the bytes being stored rather than
29778         the bytes themselves into count_nonzero_bytes_addr.  Punt on zero
29779         sized MEM_REF.  Use VAR_P macro and handle CONST_DECL like VAR_DECLs.
29780         Use ctor_for_folding instead of looking at DECL_INITIAL.  Punt before
29781         calling native_encode_expr if host or target doesn't have 8-bit
29782         chars.  Formatting fixes.
29783         (count_nonzero_bytes_addr): New function.
29785 2020-03-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
29786             Mihail Ionescu  <mihail.ionescu@arm.com>
29787             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
29789         * config/arm/arm-builtins.c (UNOP_SNONE_SNONE_QUALIFIERS): Define.
29790         (UNOP_SNONE_NONE_QUALIFIERS): Likewise.
29791         (UNOP_SNONE_IMM_QUALIFIERS): Likewise.
29792         (UNOP_UNONE_NONE_QUALIFIERS): Likewise.
29793         (UNOP_UNONE_UNONE_QUALIFIERS): Likewise.
29794         (UNOP_UNONE_IMM_QUALIFIERS): Likewise.
29795         * config/arm/arm_mve.h (vmvnq_n_s16): Define macro.
29796         (vmvnq_n_s32): Likewise.
29797         (vrev64q_s8): Likewise.
29798         (vrev64q_s16): Likewise.
29799         (vrev64q_s32): Likewise.
29800         (vcvtq_s16_f16): Likewise.
29801         (vcvtq_s32_f32): Likewise.
29802         (vrev64q_u8): Likewise.
29803         (vrev64q_u16): Likewise.
29804         (vrev64q_u32): Likewise.
29805         (vmvnq_n_u16): Likewise.
29806         (vmvnq_n_u32): Likewise.
29807         (vcvtq_u16_f16): Likewise.
29808         (vcvtq_u32_f32): Likewise.
29809         (__arm_vmvnq_n_s16): Define intrinsic.
29810         (__arm_vmvnq_n_s32): Likewise.
29811         (__arm_vrev64q_s8): Likewise.
29812         (__arm_vrev64q_s16): Likewise.
29813         (__arm_vrev64q_s32): Likewise.
29814         (__arm_vrev64q_u8): Likewise.
29815         (__arm_vrev64q_u16): Likewise.
29816         (__arm_vrev64q_u32): Likewise.
29817         (__arm_vmvnq_n_u16): Likewise.
29818         (__arm_vmvnq_n_u32): Likewise.
29819         (__arm_vcvtq_s16_f16): Likewise.
29820         (__arm_vcvtq_s32_f32): Likewise.
29821         (__arm_vcvtq_u16_f16): Likewise.
29822         (__arm_vcvtq_u32_f32): Likewise.
29823         (vrev64q): Define polymorphic variant.
29824         * config/arm/arm_mve_builtins.def (UNOP_SNONE_SNONE): Use it.
29825         (UNOP_SNONE_NONE): Likewise.
29826         (UNOP_SNONE_IMM): Likewise.
29827         (UNOP_UNONE_UNONE): Likewise.
29828         (UNOP_UNONE_NONE): Likewise.
29829         (UNOP_UNONE_IMM): Likewise.
29830         * config/arm/mve.md (mve_vrev64q_<supf><mode>): Define RTL pattern.
29831         (mve_vcvtq_from_f_<supf><mode>): Likewise.
29832         (mve_vmvnq_n_<supf><mode>): Likewise.
29834 2020-03-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
29835             Mihail Ionescu  <mihail.ionescu@arm.com>
29836             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
29838         * config/arm/arm-builtins.c (UNOP_NONE_NONE_QUALIFIERS): Define macro.
29839         (UNOP_NONE_SNONE_QUALIFIERS): Likewise.
29840         (UNOP_NONE_UNONE_QUALIFIERS): Likewise.
29841         * config/arm/arm_mve.h (vrndxq_f16): Define macro.
29842         (vrndxq_f32): Likewise.
29843         (vrndq_f16) Likewise.
29844         (vrndq_f32): Likewise.
29845         (vrndpq_f16): Likewise.
29846         (vrndpq_f32): Likewise.
29847         (vrndnq_f16): Likewise.
29848         (vrndnq_f32): Likewise.
29849         (vrndmq_f16): Likewise.
29850         (vrndmq_f32): Likewise. 
29851         (vrndaq_f16): Likewise.
29852         (vrndaq_f32): Likewise.
29853         (vrev64q_f16): Likewise.
29854         (vrev64q_f32): Likewise.
29855         (vnegq_f16): Likewise.
29856         (vnegq_f32): Likewise.
29857         (vdupq_n_f16): Likewise.
29858         (vdupq_n_f32): Likewise.
29859         (vabsq_f16): Likewise.
29860         (vabsq_f32): Likewise.
29861         (vrev32q_f16): Likewise.
29862         (vcvttq_f32_f16): Likewise.
29863         (vcvtbq_f32_f16): Likewise.
29864         (vcvtq_f16_s16): Likewise.
29865         (vcvtq_f32_s32): Likewise.
29866         (vcvtq_f16_u16): Likewise.
29867         (vcvtq_f32_u32): Likewise.
29868         (__arm_vrndxq_f16): Define intrinsic.
29869         (__arm_vrndxq_f32): Likewise.
29870         (__arm_vrndq_f16): Likewise.
29871         (__arm_vrndq_f32): Likewise.
29872         (__arm_vrndpq_f16): Likewise.
29873         (__arm_vrndpq_f32): Likewise.
29874         (__arm_vrndnq_f16): Likewise.
29875         (__arm_vrndnq_f32): Likewise.
29876         (__arm_vrndmq_f16): Likewise.
29877         (__arm_vrndmq_f32): Likewise.
29878         (__arm_vrndaq_f16): Likewise.
29879         (__arm_vrndaq_f32): Likewise.
29880         (__arm_vrev64q_f16): Likewise.
29881         (__arm_vrev64q_f32): Likewise.
29882         (__arm_vnegq_f16): Likewise.
29883         (__arm_vnegq_f32): Likewise.
29884         (__arm_vdupq_n_f16): Likewise.
29885         (__arm_vdupq_n_f32): Likewise.
29886         (__arm_vabsq_f16): Likewise.
29887         (__arm_vabsq_f32): Likewise.
29888         (__arm_vrev32q_f16): Likewise.
29889         (__arm_vcvttq_f32_f16): Likewise.
29890         (__arm_vcvtbq_f32_f16): Likewise.
29891         (__arm_vcvtq_f16_s16): Likewise.
29892         (__arm_vcvtq_f32_s32): Likewise.
29893         (__arm_vcvtq_f16_u16): Likewise.
29894         (__arm_vcvtq_f32_u32): Likewise.
29895         (vrndxq): Define polymorphic variants.
29896         (vrndq): Likewise.
29897         (vrndpq): Likewise.
29898         (vrndnq): Likewise.
29899         (vrndmq): Likewise.
29900         (vrndaq): Likewise.
29901         (vrev64q): Likewise.
29902         (vnegq): Likewise.
29903         (vabsq): Likewise.
29904         (vrev32q): Likewise.
29905         (vcvtbq_f32): Likewise.
29906         (vcvttq_f32): Likewise.
29907         (vcvtq): Likewise.
29908         * config/arm/arm_mve_builtins.def (VAR2): Define.
29909         (VAR1): Define.
29910         * config/arm/mve.md (mve_vrndxq_f<mode>): Add RTL pattern.
29911         (mve_vrndq_f<mode>): Likewise.
29912         (mve_vrndpq_f<mode>): Likewise.
29913         (mve_vrndnq_f<mode>): Likewise.
29914         (mve_vrndmq_f<mode>): Likewise.
29915         (mve_vrndaq_f<mode>): Likewise.
29916         (mve_vrev64q_f<mode>): Likewise.
29917         (mve_vnegq_f<mode>): Likewise.
29918         (mve_vdupq_n_f<mode>): Likewise.
29919         (mve_vabsq_f<mode>): Likewise.
29920         (mve_vrev32q_fv8hf): Likewise.
29921         (mve_vcvttq_f32_f16v4sf): Likewise.
29922         (mve_vcvtbq_f32_f16v4sf): Likewise.
29923         (mve_vcvtq_to_f_<supf><mode>): Likewise.
29925 2020-03-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>
29926             Mihail Ionescu  <mihail.ionescu@arm.com>
29927             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
29929         * config/arm/arm-builtins.c (CF): Define mve_builtin_data.
29930         (VAR1): Define.
29931         (ARM_BUILTIN_MVE_PATTERN_START): Define.
29932         (arm_init_mve_builtins): Define function.
29933         (arm_init_builtins): Add TARGET_HAVE_MVE check.
29934         (arm_expand_builtin_1): Check the range of fcode.
29935         (arm_expand_mve_builtin): Define function to expand MVE builtins.
29936         (arm_expand_builtin): Check the range of fcode.
29937         * config/arm/arm_mve.h (__ARM_FEATURE_MVE): Define MVE floating point
29938         types.
29939         (__ARM_MVE_PRESERVE_USER_NAMESPACE): Define to protect user namespace.
29940         (vst4q_s8): Define macro.
29941         (vst4q_s16): Likewise.
29942         (vst4q_s32): Likewise.
29943         (vst4q_u8): Likewise.
29944         (vst4q_u16): Likewise.
29945         (vst4q_u32): Likewise.
29946         (vst4q_f16): Likewise.
29947         (vst4q_f32): Likewise.
29948         (__arm_vst4q_s8): Define inline builtin.
29949         (__arm_vst4q_s16): Likewise.
29950         (__arm_vst4q_s32): Likewise.
29951         (__arm_vst4q_u8): Likewise.
29952         (__arm_vst4q_u16): Likewise.
29953         (__arm_vst4q_u32): Likewise.
29954         (__arm_vst4q_f16): Likewise.
29955         (__arm_vst4q_f32): Likewise.
29956         (__ARM_mve_typeid): Define macro with MVE types.
29957         (__ARM_mve_coerce): Define macro with _Generic feature.
29958         (vst4q): Define polymorphic variant for different vst4q builtins.
29959         * config/arm/arm_mve_builtins.def: New file.
29960         * config/arm/iterators.md (VSTRUCT): Modify to allow XI and OI
29961         modes in MVE.
29962         * config/arm/mve.md (MVE_VLD_ST): Define iterator.
29963         (unspec): Define unspec.
29964         (mve_vst4q<mode>): Define RTL pattern.
29965         * config/arm/neon.md (mov<mode>): Modify expand to allow XI and OI
29966         modes in MVE.
29967         (neon_mov<mode>): Modify RTL define_insn to allow XI and OI modes
29968         in MVE.
29969         (define_split): Allow OI mode split for MVE after reload.
29970         (define_split): Allow XI mode split for MVE after reload.
29971         * config/arm/t-arm (arm.o): Add entry for arm_mve_builtins.def.
29972         (arm-builtins.o): Likewise.
29974 2020-03-17  Christophe Lyon  <christophe.lyon@linaro.org>
29976         * c-typeck.c (process_init_element): Handle constructor_type with
29977         type size represented by POLY_INT_CST.
29979 2020-03-17  Jakub Jelinek  <jakub@redhat.com>
29981         PR tree-optimization/94187
29982         * tree-ssa-strlen.c (count_nonzero_bytes): Punt if
29983         nchars - offset < nbytes.
29985         PR middle-end/94189
29986         * builtins.c (expand_builtin_strnlen): Do return NULL_RTX if we would
29987         emit a warning if it was enabled and don't depend on TREE_NO_WARNING
29988         for code-generation.
29990 2020-03-16  Vladimir Makarov  <vmakarov@redhat.com>
29992         PR target/94185
29993         * lra-spills.c (remove_pseudos): Do not reuse insn alternative
29994         after changing memory subreg.
29996 2020-03-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>
29997             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
29999         * config/arm/arm.c (arm_libcall_uses_aapcs_base): Modify function to add
30000         emulator calls for dobule precision arithmetic operations for MVE.
30002 2020-03-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>
30003             Mihail Ionescu  <mihail.ionescu@arm.com>
30004             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
30006         * common/config/arm/arm-common.c (arm_asm_auto_mfpu): When vfp_base
30007         feature bit is on and -mfpu=auto is passed as compiler option, do not
30008         generate error on not finding any matching fpu. Because in this case
30009         fpu is not required.
30010         * config/arm/arm-cpus.in (vfp_base): Define feature bit, this bit is
30011         enabled for MVE and also for all VFP extensions.
30012         (VFPv2): Modify fgroup to enable vfp_base feature bit when ever VFPv2
30013         is enabled.
30014         (MVE): Define fgroup to enable feature bits mve, vfp_base and armv7em.
30015         (MVE_FP): Define fgroup to enable feature bits is fgroup MVE and FPv5
30016         along with feature bits mve_float.
30017         (mve): Modify add options in armv8.1-m.main arch for MVE.
30018         (mve.fp): Modify add options in armv8.1-m.main arch for MVE with
30019         floating point.
30020         * config/arm/arm.c (use_return_insn): Replace the
30021         check with TARGET_VFP_BASE.
30022         (thumb2_legitimate_index_p): Replace TARGET_HARD_FLOAT with
30023         TARGET_VFP_BASE.
30024         (arm_rtx_costs_internal): Replace "TARGET_HARD_FLOAT || TARGET_HAVE_MVE"
30025         with TARGET_VFP_BASE, to allow cost calculations for copies in MVE as
30026         well.
30027         (arm_get_vfp_saved_size): Replace TARGET_HARD_FLOAT with
30028         TARGET_VFP_BASE, to allow space calculation for VFP registers in MVE
30029         as well.
30030         (arm_compute_frame_layout): Likewise.
30031         (arm_save_coproc_regs): Likewise.
30032         (arm_fixed_condition_code_regs): Modify to enable using VFPCC_REGNUM
30033         in MVE as well.
30034         (arm_hard_regno_mode_ok): Replace "TARGET_HARD_FLOAT || TARGET_HAVE_MVE"
30035         with equivalent macro TARGET_VFP_BASE.
30036         (arm_expand_epilogue_apcs_frame): Likewise.
30037         (arm_expand_epilogue): Likewise.
30038         (arm_conditional_register_usage): Likewise.
30039         (arm_declare_function_name): Add check to skip printing .fpu directive
30040         in assembly file when TARGET_VFP_BASE is enabled and fpu_to_print is
30041         "softvfp".
30042         * config/arm/arm.h (TARGET_VFP_BASE): Define.
30043         * config/arm/arm.md (arch): Add "mve" to arch.
30044         (eq_attr "arch" "mve"): Enable on TARGET_HAVE_MVE is true.
30045         (vfp_pop_multiple_with_writeback): Replace "TARGET_HARD_FLOAT
30046         || TARGET_HAVE_MVE" with equivalent macro TARGET_VFP_BASE.
30047         * config/arm/constraints.md (Uf): Define to allow modification to FPCCR
30048         in MVE.
30049         * config/arm/thumb2.md (thumb2_movsfcc_soft_insn): Modify target guard
30050         to not allow for MVE.
30051         * config/arm/unspecs.md (UNSPEC_GET_FPSCR): Move to volatile unspecs
30052         enum.
30053         (VUNSPEC_GET_FPSCR): Define.
30054         * config/arm/vfp.md (thumb2_movhi_vfp): Add support for VMSR and VMRS
30055         instructions which move to general-purpose Register from Floating-point
30056         Special register and vice-versa.
30057         (thumb2_movhi_fp16): Likewise.
30058         (thumb2_movsi_vfp): Add support for VMSR and VMRS instructions along
30059         with MCR and MRC instructions which set and get Floating-point Status
30060         and Control Register (FPSCR).
30061         (movdi_vfp): Modify pattern to enable Single-precision scalar float move
30062         in MVE.
30063         (thumb2_movdf_vfp): Modify pattern to enable Double-precision scalar
30064         float move patterns in MVE.
30065         (thumb2_movsfcc_vfp): Modify pattern to enable single float conditional
30066         code move patterns of VFP also in MVE by adding TARGET_VFP_BASE check.
30067         (thumb2_movdfcc_vfp): Modify pattern to enable double float conditional
30068         code move patterns of VFP also in MVE by adding TARGET_VFP_BASE check.
30069         (push_multi_vfp): Add support to use VFP VPUSH pattern for MVE by adding
30070         TARGET_VFP_BASE check.
30071         (set_fpscr): Add support to set FPSCR register for MVE. Modify pattern
30072         using VFPCC_REGNUM as few MVE intrinsics use carry bit of FPSCR
30073         register.
30074         (get_fpscr): Add support to get FPSCR register for MVE. Modify pattern
30075         using VFPCC_REGNUM as few MVE intrinsics use carry bit of FPSCR
30076         register.
30079 2020-03-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>
30080             Mihail Ionescu  <mihail.ionescu@arm.com>
30081             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
30083         * config.gcc (arm_mve.h): Include mve intrinsics header file.
30084         * config/arm/aout.h (p0): Add new register name for MVE predicated
30085         cases.
30086         * config/arm-builtins.c (ARM_BUILTIN_SIMD_LANE_CHECK): Define macro
30087         common to Neon and MVE.
30088         (ARM_BUILTIN_NEON_LANE_CHECK): Renamed to ARM_BUILTIN_SIMD_LANE_CHECK.
30089         (arm_init_simd_builtin_types): Disable poly types for MVE.
30090         (arm_init_neon_builtins): Move a check to arm_init_builtins function.
30091         (arm_init_builtins): Use ARM_BUILTIN_SIMD_LANE_CHECK instead of
30092         ARM_BUILTIN_NEON_LANE_CHECK.
30093         (mve_dereference_pointer): Add function.
30094         (arm_expand_builtin_args): Call to mve_dereference_pointer when MVE is
30095         enabled.
30096         (arm_expand_neon_builtin): Moved to arm_expand_builtin function.
30097         (arm_expand_builtin): Moved from arm_expand_neon_builtin function.
30098         * config/arm/arm-c.c (__ARM_FEATURE_MVE): Define macro for MVE and MVE
30099         with floating point enabled.
30100         * config/arm/arm-protos.h (neon_immediate_valid_for_move): Renamed to
30101         simd_immediate_valid_for_move.
30102         (simd_immediate_valid_for_move): Renamed from
30103         neon_immediate_valid_for_move function.
30104         * config/arm/arm.c (arm_options_perform_arch_sanity_checks): Generate
30105         error if vfpv2 feature bit is disabled and mve feature bit is also
30106         disabled for HARD_FLOAT_ABI.
30107         (use_return_insn): Check to not push VFP regs for MVE.
30108         (aapcs_vfp_allocate): Add MVE check to have same Procedure Call Standard
30109         as Neon.
30110         (aapcs_vfp_allocate_return_reg): Likewise.
30111         (thumb2_legitimate_address_p): Check to return 0 on valid Thumb-2
30112         address operand for MVE.
30113         (arm_rtx_costs_internal): MVE check to determine cost of rtx.
30114         (neon_valid_immediate): Rename to simd_valid_immediate.
30115         (simd_valid_immediate): Rename from neon_valid_immediate.
30116         (simd_valid_immediate): MVE check on size of vector is 128 bits.
30117         (neon_immediate_valid_for_move): Rename to
30118         simd_immediate_valid_for_move.
30119         (simd_immediate_valid_for_move): Rename from
30120         neon_immediate_valid_for_move.
30121         (neon_immediate_valid_for_logic): Modify call to neon_valid_immediate
30122         function.
30123         (neon_make_constant): Modify call to neon_valid_immediate function.
30124         (neon_vector_mem_operand): Return VFP register for POST_INC or PRE_DEC
30125         for MVE.
30126         (output_move_neon): Add MVE check to generate vldm/vstm instrcutions.
30127         (arm_compute_frame_layout): Calculate space for saved VFP registers for
30128         MVE.
30129         (arm_save_coproc_regs): Save coproc registers for MVE.
30130         (arm_print_operand): Add case 'E' to print memory operands for MVE.
30131         (arm_print_operand_address): Check to print register number for MVE.
30132         (arm_hard_regno_mode_ok): Check for arm hard regno mode ok for MVE.
30133         (arm_modes_tieable_p): Check to allow structure mode for MVE.
30134         (arm_regno_class): Add VPR_REGNUM check.
30135         (arm_expand_epilogue_apcs_frame): MVE check to calculate epilogue code
30136         for APCS frame.
30137         (arm_expand_epilogue): MVE check for enabling pop instructions in
30138         epilogue.
30139         (arm_print_asm_arch_directives): Modify function to disable print of
30140         .arch_extension "mve" and "fp" for cases where MVE is enabled with
30141         "SOFT FLOAT ABI".
30142         (arm_vector_mode_supported_p): Check for modes available in MVE interger
30143         and MVE floating point.
30144         (arm_array_mode_supported_p): Add TARGET_HAVE_MVE check for array mode
30145         pointer support.
30146         (arm_conditional_register_usage): Enable usage of conditional regsiter
30147         for MVE.
30148         (fixed_regs[VPR_REGNUM]): Enable VPR_REG for MVE.
30149         (arm_declare_function_name): Modify function to disable print of
30150         .arch_extension "mve" and "fp" for cases where MVE is enabled with
30151         "SOFT FLOAT ABI".
30152         * config/arm/arm.h (TARGET_HAVE_MVE): Disable for soft float abi and
30153         when target general registers are required.
30154         (TARGET_HAVE_MVE_FLOAT): Likewise.
30155         (FIXED_REGISTERS): Add bit for VFP_REG class which is enabled in arm.c
30156         for MVE.
30157         (CALL_USED_REGISTERS): Set bit for VFP_REG class in CALL_USED_REGISTERS
30158         which indicate this is not available for across function calls.
30159         (FIRST_PSEUDO_REGISTER): Modify.
30160         (VALID_MVE_MODE): Define valid MVE mode.
30161         (VALID_MVE_SI_MODE): Define valid MVE SI mode.
30162         (VALID_MVE_SF_MODE): Define valid MVE SF mode.
30163         (VALID_MVE_STRUCT_MODE): Define valid MVE struct mode.
30164         (VPR_REGNUM): Add Vector Predication Register in arm_regs_in_sequence
30165         for MVE.
30166         (IS_VPR_REGNUM): Macro to check for VPR_REG register.
30167         (REG_ALLOC_ORDER): Add VPR_REGNUM entry.
30168         (enum reg_class): Add VPR_REG entry.
30169         (REG_CLASS_NAMES): Add VPR_REG entry.
30170         * config/arm/arm.md (VPR_REGNUM): Define.
30171         (conds): Check is_mve_type attrbiute to differentiate "conditional" and
30172         "unconditional" instructions.
30173         (arm_movsf_soft_insn): Modify RTL to not allow for MVE.
30174         (movdf_soft_insn): Modify RTL to not allow for MVE.
30175         (vfp_pop_multiple_with_writeback): Enable for MVE.
30176         (include "mve.md"): Include mve.md file.
30177         * config/arm/arm_mve.h: Add MVE intrinsics head file.
30178         * config/arm/constraints.md (Up): Constraint to enable "p0" register in MVE
30179         for vector predicated operands.
30180         * config/arm/iterators.md (VNIM1): Define.
30181         (VNINOTM1): Define.
30182         (VHFBF_split): Define
30183         * config/arm/mve.md: New file.
30184         (mve_mov<mode>): Define RTL for move, store and load in MVE.
30185         (mve_mov<mode>): Define move RTL pattern with vec_duplicate operator for
30186         second operand.
30187         * config/arm/neon.md (neon_immediate_valid_for_move): Rename with
30188         simd_immediate_valid_for_move.
30189         (neon_mov<mode>): Split pattern and move expand pattern "movv8hf" which
30190         is common to MVE and  NEON to vec-common.md file.
30191         (vec_init<mode><V_elem_l>): Add TARGET_HAVE_MVE check.
30192         * config/arm/predicates.md (vpr_register_operand): Define.
30193         * config/arm/t-arm: Add mve.md file.
30194         * config/arm/types.md (mve_move): Add MVE instructions mve_move to
30195         attribute "type".
30196         (mve_store): Add MVE instructions mve_store to attribute "type".
30197         (mve_load): Add MVE instructions mve_load to attribute "type".
30198         (is_mve_type): Define attribute.
30199         * config/arm/vec-common.md (mov<mode>): Modify RTL expand to support
30200         standard move patterns in MVE along with NEON and IWMMXT with mode
30201         iterator VNIM1.
30202         (mov<mode>): Modify RTL expand to support standard move patterns in NEON
30203         and IWMMXT with mode iterator V8HF.
30204         (movv8hf): Define RTL expand to support standard "movv8hf" pattern in
30205         NEON and MVE.
30206         * config/arm/vfp.md (neon_immediate_valid_for_move): Rename to
30207         simd_immediate_valid_for_move.
30210 2020-03-16  H.J. Lu  <hongjiu.lu@intel.com>
30212         PR target/89229
30213         * config/i386/i386.md (*movsi_internal): Call ix86_output_ssemov
30214         for TYPE_SSEMOV.  Remove ext_sse_reg_operand and TARGET_AVX512VL
30215         check.
30216         * config/i386/predicates.md (ext_sse_reg_operand): Removed.
30218 2020-03-16  Jakub Jelinek  <jakub@redhat.com>
30220         PR debug/94167
30221         * tree-inline.c (insert_init_stmt): Don't gimple_regimplify_operands
30222         DEBUG_STMTs.
30224         PR tree-optimization/94166
30225         * tree-ssa-reassoc.c (sort_by_mach_mode): Use SSA_NAME_VERSION
30226         as secondary comparison key.
30228 2020-03-16  Bin Cheng  <bin.cheng@linux.alibaba.com>
30230         PR tree-optimization/94125
30231         * tree-loop-distribution.c
30232         (loop_distribution::break_alias_scc_partitions): Update post order
30233         number for merged scc.
30235 2020-03-15  H.J. Lu  <hongjiu.lu@intel.com>
30237         PR target/89229
30238         * config/i386/i386.c (ix86_output_ssemov): Handle MODE_SI and
30239         MODE_SF.
30240         * config/i386/i386.md (*movsf_internal): Call ix86_output_ssemov
30241         for TYPE_SSEMOV.  Remove TARGET_PREFER_AVX256, TARGET_AVX512VL
30242         and ext_sse_reg_operand check.
30244 2020-03-15  Lewis Hyatt  <lhyatt@gmail.com>
30246         * common.opt: Avoid redundancy in the help text.
30247         * config/arc/arc.opt: Likewise.
30248         * config/cr16/cr16.opt: Likewise.
30250 2020-03-14  Jakub Jelinek  <jakub@redhat.com>
30252         PR middle-end/93566
30253         * tree-nested.c (convert_nonlocal_omp_clauses,
30254         convert_local_omp_clauses): Handle {,in_,task_}reduction clauses
30255         with C/C++ array sections.
30257 2020-03-14  H.J. Lu  <hongjiu.lu@intel.com>
30259         PR target/89229
30260         * config/i386/i386.md (*movdi_internal): Call ix86_output_ssemov
30261         for TYPE_SSEMOV.  Remove ext_sse_reg_operand and TARGET_AVX512VL
30262         check.
30264 2020-03-14  Jakub Jelinek  <jakub@redhat.com>
30266         * gimple-fold.c (gimple_fold_builtin_strncpy): Change
30267         "a an" to "an" in a comment.
30268         * hsa-common.h (is_a_helper): Likewise.
30269         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Likewise.
30270         * config/arc/arc.c (arc600_corereg_hazard): Likewise.
30271         * config/s390/s390.c (s390_indirect_branch_via_thunk): Likewise.
30273 2020-03-13  Aaron Sawdey  <acsawdey@linux.ibm.com>
30275         PR target/92379
30276         * config/rs6000/rs6000.c (num_insns_constant_multi): Don't shift a
30277         64-bit value by 64 bits (UB).
30279 2020-03-13  Vladimir Makarov  <vmakarov@redhat.com>
30281         PR rtl-optimization/92303
30282         * lra-spills.c (remove_pseudos): Try to simplify memory subreg.
30284 2020-03-13  Segher Boessenkool  <segher@kernel.crashing.org>
30286         PR rtl-optimization/94148
30287         PR rtl-optimization/94042
30288         * df-core.c (BB_LAST_CHANGE_AGE): Delete.
30289         (df_worklist_propagate_forward): New parameter last_change_age, use
30290         that instead of bb->aux.
30291         (df_worklist_propagate_backward): Ditto.
30292         (df_worklist_dataflow_doublequeue): Use a local array last_change_age.
30294 2020-03-13  Richard Biener  <rguenther@suse.de>
30296         PR tree-optimization/94163
30297         * tree-ssa-pre.c (create_expression_by_pieces): Check
30298         whether alignment would be zero.
30300 2020-03-13  Martin Liska  <mliska@suse.cz>
30302         PR lto/94157
30303         * lto-wrapper.c (run_gcc): Use concat for appending
30304         to collect_gcc_options.
30306 2020-03-13  Jakub Jelinek  <jakub@redhat.com>
30308         PR target/94121
30309         * config/aarch64/aarch64.c (aarch64_add_offset_1): Use gen_int_mode
30310         instead of GEN_INT.
30312 2020-03-13  H.J. Lu  <hongjiu.lu@intel.com>
30314         PR target/89229
30315         * config/i386/i386.c (ix86_output_ssemov): Handle MODE_DF.
30316         * config/i386/i386.md (*movdf_internal): Call ix86_output_ssemov
30317         for TYPE_SSEMOV.  Remove TARGET_AVX512F, TARGET_PREFER_AVX256,
30318         TARGET_AVX512VL and ext_sse_reg_operand check.
30320 2020-03-13  Bu Le  <bule1@huawei.com>
30322         PR target/94154
30323         * config/aarch64/aarch64.opt (-param=aarch64-float-recp-precision=)
30324         (-param=aarch64-double-recp-precision=): New options.
30325         * doc/invoke.texi: Document them.
30326         * config/aarch64/aarch64.c (aarch64_emit_approx_div): Use them
30327         instead of hard-coding the choice of 1 for float and 2 for double.
30329 2020-03-13  Eric Botcazou  <ebotcazou@adacore.com>
30331         PR rtl-optimization/94119
30332         * resource.h (clear_hashed_info_until_next_barrier): Declare.
30333         * resource.c (clear_hashed_info_until_next_barrier): New function.
30334         * reorg.c (add_to_delay_list): Fix formatting.
30335         (relax_delay_slots): Call clear_hashed_info_until_next_barrier on
30336         the next instruction after removing a BARRIER.
30338 2020-03-13  Eric Botcazou  <ebotcazou@adacore.com>
30340         PR middle-end/92071
30341         * expmed.c (store_integral_bit_field): For fields larger than a word,
30342         call extract_bit_field on the value if the mode is BLKmode.  Remove
30343         specific path for big-endian targets and tidy things up a little bit.
30345 2020-03-12  Richard Sandiford  <richard.sandiford@arm.com>
30347         PR rtl-optimization/90275
30348         * cse.c (cse_insn): Delete no-op register moves too.
30350 2020-03-12  Darius Galis  <darius.galis@cyberthorstudios.com>
30352         * config/rx/rx.md (CTRLREG_CPEN): Remove.
30353         * config/rx/rx.c (rx_print_operand): Remove CTRLREG_CPEN support.
30355 2020-03-12  Richard Biener  <rguenther@suse.de>
30357         PR tree-optimization/94103
30358         * tree-ssa-sccvn.c (visit_reference_op_load): Avoid type
30359         punning when the mode precision is not sufficient.
30361 2020-03-12  H.J. Lu  <hongjiu.lu@intel.com>
30363         PR target/89229
30364         * config/i386/i386.c (ix86_output_ssemov): Handle MODE_DI,
30365         MODE_V1DF and MODE_V2SF.
30366         * config/i386/mmx.md (MMXMODE:*mov<mode>_internal): Call
30367         ix86_output_ssemov for TYPE_SSEMOV.  Remove ext_sse_reg_operand
30368         check.
30370 2020-03-12  Jakub Jelinek  <jakub@redhat.com>
30372         * doc/tm.texi.in (ASM_OUTPUT_ALIGNED_DECL_LOCAL): Change
30373         ASM_OUTPUT_ALIGNED_DECL in description to ASM_OUTPUT_ALIGNED_LOCAL
30374         and ASM_OUTPUT_DECL to ASM_OUTPUT_LOCAL.
30375         * doc/tm.texi: Regenerated.
30377         PR tree-optimization/94130
30378         * tree-ssa-dse.c: Include gimplify.h.
30379         (increment_start_addr): If stmt has lhs, drop the lhs from call and
30380         set it after the call to the original value of the first argument.
30381         Formatting fixes.
30382         (decrement_count): Formatting fix.
30384 2020-03-11  Delia Burduv  <delia.burduv@arm.com>
30386         * config/arm/arm-builtins.c
30387         (arm_init_simd_builtin_scalar_types): New.
30388         * config/arm/arm_neon.h (vld2_bf16): Used new builtin type.
30389         (vld2q_bf16): Used new builtin type.
30390         (vld3_bf16): Used new builtin type.
30391         (vld3q_bf16): Used new builtin type.
30392         (vld4_bf16): Used new builtin type.
30393         (vld4q_bf16): Used new builtin type.
30394         (vld2_dup_bf16): Used new builtin type.
30395         (vld2q_dup_bf16): Used new builtin type.
30396         (vld3_dup_bf16): Used new builtin type.
30397         (vld3q_dup_bf16): Used new builtin type.
30398         (vld4_dup_bf16): Used new builtin type.
30399         (vld4q_dup_bf16): Used new builtin type.
30401 2020-03-11  Jakub Jelinek  <jakub@redhat.com>
30403         PR target/94134
30404         * config/pdp11/pdp11.c (pdp11_asm_output_var): Call switch_to_section
30405         at the start to switch to data section.  Don't print extra newline if
30406         .globl directive has not been emitted.
30408 2020-03-11  Richard Biener  <rguenther@suse.de>
30410         * match.pd ((T *)(ptr - ptr-cst) -> &MEM[ptr + -ptr-cst]):
30411         New pattern.
30413 2020-03-11  Eric Botcazou  <ebotcazou@adacore.com>
30415         PR middle-end/93961
30416         * tree.c (variably_modified_type_p) <RECORD_TYPE>: Recurse into fields
30417         whose type is a qualified union.
30419 2020-03-11  Jakub Jelinek  <jakub@redhat.com>
30421         PR target/94121
30422         * config/aarch64/aarch64.c (aarch64_add_offset_1): Use absu_hwi
30423         instead of abs_hwi, change moffset type to unsigned HOST_WIDE_INT.
30425         PR bootstrap/93962
30426         * value-prof.c (dump_histogram_value): Use abs_hwi instead of
30427         std::abs.
30428         (get_nth_most_common_value): Use abs_hwi instead of abs.
30430         PR middle-end/94111
30431         * dfp.c (decimal_to_binary): Only use decimal128ToString if from->cl
30432         is rvc_normal, otherwise use real_to_decimal to print the number to
30433         string.
30435         PR tree-optimization/94114
30436         * tree-loop-distribution.c (generate_memset_builtin): Call
30437         rewrite_to_non_trapping_overflow even on mem.
30438         (generate_memcpy_builtin): Call rewrite_to_non_trapping_overflow even
30439         on dest and src.
30441 2020-03-10  Jeff Law  <law@redhat.com>
30443         * config/bfin/bfin.md (movsi_insv): Add length attribute.
30445 2020-03-10  Jiufu Guo  <guojiufu@linux.ibm.com>
30447         PR target/93709
30448         * config/rs6000/rs6000.c (rs6000_emit_p9_fp_minmax): Check
30449         NAN and SIGNED_ZEROR for smax/smin.
30451 2020-03-10  Will Schmidt  <will_schmidt@vnet.ibm.com>
30453         PR target/90763
30454         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Add
30455         clause to handle P9V_BUILTIN_VEC_LXVL with const arguments.
30457 2020-03-10  Roman Zhuykov  <zhroma@ispras.ru>
30459         * loop-iv.c (find_simple_exit): Make it static.
30460         * cfgloop.h: Remove the corresponding prototype.
30462 2020-03-10  Roman Zhuykov  <zhroma@ispras.ru>
30464         * ddg.c (create_ddg): Fix intendation.
30465         (set_recurrence_length): Likewise.
30466         (create_ddg_all_sccs): Likewise.
30468 2020-03-10  Jakub Jelinek  <jakub@redhat.com>
30470         PR target/94088
30471         * config/i386/i386.md (*testqi_ext_3): Call ix86_match_ccmode with
30472         CCZmode instead of CCNOmode if operands[2] has DImode and pos + len
30473         is 32.
30475 2020-03-09  Jason Merrill  <jason@redhat.com>
30477         * gdbinit.in (pgs): Fix typo in documentation.
30479 2020-03-09  Vladimir Makarov  <vmakarov@redhat.com>
30481         Revert:
30483         2020-02-28  Vladimir Makarov  <vmakarov@redhat.com>
30485         PR rtl-optimization/93564
30486         * ira-color.c (assign_hard_reg): Prefer smaller hard regno when we
30487         do not honor reg alloc order.
30489 2020-03-09  Andrew Pinski  <apinski@marvell.com>
30491         PR inline-asm/94095
30492         * doc/extend.texi (x86 Operand Modifiers): Fix column
30493         for 'A' modifier.
30495 2020-03-09  Martin Liska  <mliska@suse.cz>
30497         PR target/93800
30498         * config/rs6000/rs6000.c (rs6000_option_override_internal):
30499         Remove set of str_align_loops and str_align_jumps as these
30500         should be set in previous 2 conditions in the function.
30502 2020-03-09  Jakub Jelinek  <jakub@redhat.com>
30504         PR rtl-optimization/94045
30505         * params.opt (-param=max-find-base-term-values=): New option.
30506         * alias.c (find_base_term): Add cut-off for number of visited VALUEs
30507         in a single toplevel find_base_term call.
30509 2020-03-06  Wilco Dijkstra  <wdijkstr@arm.com>
30511         PR target/91598
30512         * config/aarch64/aarch64-builtins.c (TYPES_TERNOPU_LANE): Add define.
30513         * config/aarch64/aarch64-simd.md
30514         (aarch64_vec_<su>mult_lane<Qlane>): Add new insn for widening lane mul.
30515         (aarch64_vec_<su>mlal_lane<Qlane>): Likewise.
30516         * config/aarch64/aarch64-simd-builtins.def: Add intrinsics.
30517         * config/aarch64/arm_neon.h:
30518         (vmlal_lane_s16): Expand using intrinsics rather than inline asm.
30519         (vmlal_lane_u16): Likewise.
30520         (vmlal_lane_s32): Likewise.
30521         (vmlal_lane_u32): Likewise.
30522         (vmlal_laneq_s16): Likewise.
30523         (vmlal_laneq_u16): Likewise.
30524         (vmlal_laneq_s32): Likewise.
30525         (vmlal_laneq_u32): Likewise.
30526         (vmull_lane_s16): Likewise.
30527         (vmull_lane_u16): Likewise.
30528         (vmull_lane_s32): Likewise.
30529         (vmull_lane_u32): Likewise.
30530         (vmull_laneq_s16): Likewise.
30531         (vmull_laneq_u16): Likewise.
30532         (vmull_laneq_s32): Likewise.
30533         (vmull_laneq_u32): Likewise.
30534         * config/aarch64/iterators.md (Vcondtype): New iterator for lane mul.
30535         (Qlane): Likewise.
30537 2020-03-06  Wilco Dijkstra  <wdijkstr@arm.com>
30539         * aarch64/aarch64-simd.md (aarch64_mla_elt<mode>): Correct lane syntax.
30540         (aarch64_mla_elt_<vswap_width_name><mode>): Likewise.
30541         (aarch64_mls_elt<mode>): Likewise.
30542         (aarch64_mls_elt_<vswap_width_name><mode>): Likewise.
30543         (aarch64_fma4_elt<mode>): Likewise.
30544         (aarch64_fma4_elt_<vswap_width_name><mode>): Likewise.
30545         (aarch64_fma4_elt_to_64v2df): Likewise.
30546         (aarch64_fnma4_elt<mode>): Likewise.
30547         (aarch64_fnma4_elt_<vswap_width_name><mode>): Likewise.
30548         (aarch64_fnma4_elt_to_64v2df): Likewise.
30550 2020-03-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
30552         * config/aarch64/aarch64-sve2.md (@aarch64_sve_<sve_int_op><mode>:
30553         Specify movprfx attribute.
30554         (@aarch64_sve_<sve_int_op>_lane_<mode>): Likewise.
30556 2020-03-06  David Edelsohn  <dje.gcc@gmail.com>
30558         PR target/94065
30559         * config/rs6000/aix61.h (TARGET_NO_SUM_IN_TOC): Set to 1 for
30560         cmodel=large.
30561         (TARGET_NO_FP_IN_TOC): Same.
30562         * config/rs6000/aix71.h: Same.
30563         * config/rs6000/aix72.h: Same.
30565 2020-03-06  Andrew Pinski  <apinski@marvell.com>
30566             Jeff Law  <law@redhat.com>
30568         PR rtl-optimization/93996
30569         * haifa-sched.c (remove_notes): Be more careful when adding
30570         REG_SAVE_NOTE.
30572 2020-03-06  Delia Burduv  <delia.burduv@arm.com>
30574         * config/arm/arm_neon.h (vld2_bf16): New.
30575         (vld2q_bf16): New.
30576         (vld3_bf16): New.
30577         (vld3q_bf16): New.
30578         (vld4_bf16): New.
30579         (vld4q_bf16): New.
30580         (vld2_dup_bf16): New.
30581         (vld2q_dup_bf16): New.
30582         (vld3_dup_bf16): New.
30583         (vld3q_dup_bf16): New.
30584         (vld4_dup_bf16): New.
30585         (vld4q_dup_bf16): New.
30586         * config/arm/arm_neon_builtins.def
30587         (vld2): Changed to VAR13 and added v4bf, v8bf
30588         (vld2_dup): Changed to VAR8 and added v4bf, v8bf
30589         (vld3): Changed to VAR13 and added v4bf, v8bf
30590         (vld3_dup): Changed to VAR8 and added v4bf, v8bf
30591         (vld4): Changed to VAR13 and added v4bf, v8bf
30592         (vld4_dup): Changed to VAR8 and added v4bf, v8bf
30593         * config/arm/iterators.md (VDXBF2): New iterator.
30594         *config/arm/neon.md (neon_vld2): Use new iterators.
30595         (neon_vld2_dup<mode): Use new iterators.
30596         (neon_vld3<mode>): Likewise.
30597         (neon_vld3qa<mode>): Likewise.
30598         (neon_vld3qb<mode>): Likewise.
30599         (neon_vld3_dup<mode>): Likewise.
30600         (neon_vld4<mode>): Likewise.
30601         (neon_vld4qa<mode>): Likewise.
30602         (neon_vld4qb<mode>): Likewise.
30603         (neon_vld4_dup<mode>): Likewise.
30604         (neon_vld2_dupv8bf): New.
30605         (neon_vld3_dupv8bf): Likewise.
30606         (neon_vld4_dupv8bf): Likewise.
30608 2020-03-06  Delia Burduv  <delia.burduv@arm.com>
30610         * config/arm/arm_neon.h (bfloat16x4x2_t): New typedef.
30611         (bfloat16x8x2_t): New typedef.
30612         (bfloat16x4x3_t): New typedef.
30613         (bfloat16x8x3_t): New typedef.
30614         (bfloat16x4x4_t): New typedef.
30615         (bfloat16x8x4_t): New typedef.
30616         (vst2_bf16): New.
30617         (vst2q_bf16): New.
30618         (vst3_bf16): New.
30619         (vst3q_bf16): New.
30620         (vst4_bf16): New.
30621         (vst4q_bf16): New.
30622         * config/arm/arm-builtins.c (v2bf_UP): Define.
30623         (VAR13): New.
30624         (arm_init_simd_builtin_types): Init Bfloat16x2_t eltype.
30625         * config/arm/arm-modes.def (V2BF): New mode.
30626         * config/arm/arm-simd-builtin-types.def
30627         (Bfloat16x2_t): New entry.
30628         * config/arm/arm_neon_builtins.def
30629         (vst2): Changed to VAR13 and added v4bf, v8bf
30630         (vst3): Changed to VAR13 and added v4bf, v8bf
30631         (vst4): Changed to VAR13 and added v4bf, v8bf
30632         * config/arm/iterators.md (VDXBF): New iterator.
30633         (VQ2BF): New iterator.
30634         *config/arm/neon.md (neon_vst2<mode>): Used new iterators.
30635         (neon_vst2<mode>): Used new iterators.
30636         (neon_vst3<mode>): Used new iterators.
30637         (neon_vst3<mode>): Used new iterators.
30638         (neon_vst3qa<mode>): Used new iterators.
30639         (neon_vst3qb<mode>): Used new iterators.
30640         (neon_vst4<mode>): Used new iterators.
30641         (neon_vst4<mode>): Used new iterators.
30642         (neon_vst4qa<mode>): Used new iterators.
30643         (neon_vst4qb<mode>): Used new iterators.
30645 2020-03-06  Delia Burduv  <delia.burduv@arm.com>
30647         * config/aarch64/aarch64-simd-builtins.def
30648         (bfcvtn): New built-in function.
30649         (bfcvtn_q): New built-in function.
30650         (bfcvtn2): New built-in function.
30651         (bfcvt): New built-in function.
30652         * config/aarch64/aarch64-simd.md
30653         (aarch64_bfcvtn<q><mode>): New pattern.
30654         (aarch64_bfcvtn2v8bf): New pattern.
30655         (aarch64_bfcvtbf): New pattern.
30656         * config/aarch64/arm_bf16.h (float32_t): New typedef.
30657         (vcvth_bf16_f32): New intrinsic.
30658         * config/aarch64/arm_bf16.h (vcvt_bf16_f32): New intrinsic.
30659         (vcvtq_low_bf16_f32): New intrinsic.
30660         (vcvtq_high_bf16_f32): New intrinsic.
30661         * config/aarch64/iterators.md (V4SF_TO_BF): New mode iterator.
30662         (UNSPEC_BFCVTN): New UNSPEC.
30663         (UNSPEC_BFCVTN2): New UNSPEC.
30664         (UNSPEC_BFCVT): New UNSPEC.
30665         * config/arm/types.md (bf_cvt): New type.
30667 2020-03-06  Andreas Krebbel  <krebbel@linux.ibm.com>
30669         * config/s390/s390.md ("tabort"): Get rid of two consecutive
30670         blanks in format string.
30672 2020-03-05  H.J. Lu  <hongjiu.lu@intel.com>
30674         PR target/89229
30675         PR target/89346
30676         * config/i386/i386-protos.h (ix86_output_ssemov): New prototype.
30677         * config/i386/i386.c (ix86_get_ssemov): New function.
30678         (ix86_output_ssemov): Likewise.
30679         * config/i386/sse.md (VMOVE:mov<mode>_internal): Call
30680         ix86_output_ssemov for TYPE_SSEMOV.  Remove TARGET_AVX512VL
30681         check.
30682         (*movxi_internal_avx512f): Call ix86_output_ssemov for TYPE_SSEMOV.
30683         (*movoi_internal_avx): Call ix86_output_ssemov for TYPE_SSEMOV.
30684         Remove ext_sse_reg_operand and TARGET_AVX512VL check.
30685         (*movti_internal): Likewise.
30686         (*movtf_internal): Call ix86_output_ssemov for TYPE_SSEMOV.
30688 2020-03-05  Jeff Law  <law@redhat.com>
30690         PR tree-optimization/91890
30691         * gimple-ssa-warn-restrict.c (maybe_diag_overlap): Remove LOC argument.
30692         Use gimple_or_expr_nonartificial_location.
30693         (check_bounds_overlap): Drop LOC argument to maybe_diag_access_bounds.
30694         Use gimple_or_expr_nonartificial_location.
30695         * gimple.c (gimple_or_expr_nonartificial_location): New function.
30696         * gimple.h (gimple_or_expr_nonartificial_location): Declare it.
30697         * tree-ssa-strlen.c (maybe_warn_overflow): Use
30698         gimple_or_expr_nonartificial_location.
30699         (maybe_diag_stxncpy_trunc, handle_builtin_stxncpy_strncat): Likewise.
30700         (maybe_warn_pointless_strcmp): Likewise.
30702 2020-03-05  Jakub Jelinek  <jakub@redhat.com>
30704         PR target/94046
30705         * config/i386/avx2intrin.h (_mm_mask_i32gather_ps): Fix first cast of
30706         SRC and MASK arguments to __m128 from __m128d.
30707         (_mm256_mask_i32gather_ps): Fix first cast of MASK argument to __m256
30708         from __m256d.
30709         (_mm_mask_i64gather_ps): Fix first cast of MASK argument to __m128
30710         from __m128d.
30711         * config/i386/xopintrin.h (_mm_permute2_pd): Fix first cast of C
30712         argument to __m128i from __m128d.
30713         (_mm256_permute2_pd): Fix first cast of C argument to __m256i from
30714         __m256d.
30715         (_mm_permute2_ps): Fix first cast of C argument to __m128i from __m128.
30716         (_mm256_permute2_ps): Fix first cast of C argument to __m256i from
30717         __m256.
30719 2020-03-05  Delia Burduv  <delia.burduv@arm.com>
30721         * config/arm/arm_neon.h (vbfmmlaq_f32): New.
30722         (vbfmlalbq_f32): New.
30723         (vbfmlaltq_f32): New.
30724         (vbfmlalbq_lane_f32): New.
30725         (vbfmlaltq_lane_f32): New.
30726         (vbfmlalbq_laneq_f32): New.
30727         (vbfmlaltq_laneq_f32): New.
30728         * config/arm/arm_neon_builtins.def (vmmla): New.
30729         (vfmab): New.
30730         (vfmat): New.
30731         (vfmab_lane): New.
30732         (vfmat_lane): New.
30733         (vfmab_laneq): New.
30734         (vfmat_laneq): New.
30735         * config/arm/iterators.md (BF_MA): New int iterator.
30736         (bt): New int attribute.
30737         (VQXBF): Copy of VQX with V8BF.
30738         * config/arm/neon.md (neon_vmmlav8bf): New insn.
30739         (neon_vfma<bt>v8bf): New insn.
30740         (neon_vfma<bt>_lanev8bf): New insn.
30741         (neon_vfma<bt>_laneqv8bf): New expand.
30742         (neon_vget_high<mode>): Changed iterator to VQXBF.
30743         * config/arm/unspecs.md (UNSPEC_BFMMLA): New UNSPEC.
30744         (UNSPEC_BFMAB): New UNSPEC.
30745         (UNSPEC_BFMAT): New UNSPEC.
30747 2020-03-05  Jakub Jelinek  <jakub@redhat.com>
30749         PR middle-end/93399
30750         * tree-pretty-print.h (pretty_print_string): Declare.
30751         * tree-pretty-print.c (pretty_print_string): Remove forward
30752         declaration, no longer static.  Change nbytes parameter type
30753         from unsigned to size_t.
30754         * print-rtl.c (print_value) <case CONST_STRING>: Use
30755         pretty_print_string and for shrink way too long strings.
30757 2020-03-05  Richard Biener  <rguenther@suse.de>
30758             Jakub Jelinek  <jakub@redhat.com>
30760         PR tree-optimization/93582
30761         * tree-ssa-sccvn.c (vn_reference_lookup_3): Treat POINTER_PLUS_EXPR
30762         last operand as signed when looking for memset offset.  Formatting
30763         fix.
30765 2020-03-04  Andrew Pinski  <apinski@marvell.com>
30767         PR bootstrap/93962
30768         * value-prof.c (dump_histogram_value): Use std::abs.
30770 2020-03-04  Martin Sebor  <msebor@redhat.com>
30772         PR tree-optimization/93986
30773         * tree-ssa-strlen.c (maybe_warn_overflow): Convert all wide_int
30774         operands to the same precision widest_int to avoid ICEs.
30776 2020-03-04  Bill Schmidt  <wschmidt@linux.ibm.com>
30778         PR target/87560
30779         * rs6000-cpus.def (OTHER_ALTIVEC_MASKS): New #define.
30780         * rs6000.c (rs6000_disable_incompatible_switches): Add table entry
30781         for OPTION_MASK_ALTIVEC.
30783 2020-03-04  Andreas Krebbel  <krebbel@linux.ibm.com>
30785         * config.gcc: Include the glibc-stdint.h header for zTPF.
30787 2020-03-04  Andreas Krebbel  <krebbel@linux.ibm.com>
30789         * config/s390/s390.c (s390_secondary_memory_needed): Disallow
30790         direct FPR-GPR copies.
30791         (s390_register_info_gprtofpr): Disallow GPR content to be saved in
30792         FPRs.
30794 2020-03-04  Andreas Krebbel  <krebbel@linux.ibm.com>
30796         * config/s390/s390.c (s390_emit_prologue): Specify the 2 new
30797         operands to the prologue_tpf expander.
30798         (s390_emit_epilogue): Likewise.
30799         (s390_option_override_internal): Do error checking and setup for
30800         the new options.
30801         * config/s390/tpf.h (TPF_TRACE_PROLOGUE_CHECK)
30802         (TPF_TRACE_EPILOGUE_CHECK, TPF_TRACE_PROLOGUE_TARGET)
30803         (TPF_TRACE_EPILOGUE_TARGET, TPF_TRACE_PROLOGUE_SKIP_TARGET)
30804         (TPF_TRACE_EPILOGUE_SKIP_TARGET): New macro definitions.
30805         * config/s390/tpf.md ("prologue_tpf", "epilogue_tpf"): Add two new
30806         operands for the check flag and the branch target.
30807         * config/s390/tpf.opt ("mtpf-trace-hook-prologue-check")
30808         ("mtpf-trace-hook-prologue-target")
30809         ("mtpf-trace-hook-epilogue-check")
30810         ("mtpf-trace-hook-epilogue-target", "mtpf-trace-skip"): New
30811         options.
30812         * doc/invoke.texi: Document -mtpf-trace-skip option. The other
30813         options are for debugging purposes and will not be documented
30814         here.
30816 2020-03-04  Jakub Jelinek  <jakub@redhat.com>
30818         PR debug/93888
30819         * tree-inline.c (copy_decl_to_var): Copy DECL_BY_REFERENCE flag.
30821         * tree-ssa-sccvn.c (vn_walk_cb_data::push_partial_def): Add offseti
30822         argument.  Change pd argument so that it can be modified.  Turn
30823         constant non-CONSTRUCTOR store into non-constant if it is too large.
30824         Adjust offset and size of CONSTRUCTOR or non-constant store to avoid
30825         overflows.
30826         (vn_walk_cb_data::vn_walk_cb_data, vn_reference_lookup_3): Adjust
30827         callers.
30829 2020-02-04  Richard Biener  <rguenther@suse.de>
30831         PR tree-optimization/93964
30832         * graphite-isl-ast-to-gimple.c
30833         (gcc_expression_from_isl_ast_expr_id): Add intermediate
30834         conversion for pointer to integer converts.
30835         * graphite-scop-detection.c (assign_parameter_index_in_region):
30836         Relax assert.
30838 2020-03-04  Martin Liska  <mliska@suse.cz>
30840         PR c/93886
30841         PR c/93887
30842         * doc/invoke.texi: Clarify --help=language and --help=common
30843         interaction.
30845 2020-03-04  Jakub Jelinek  <jakub@redhat.com>
30847         PR tree-optimization/94001
30848         * tree-tailcall.c (process_assignment): Before comparing op1 to
30849         *ass_var, verify *ass_var is non-NULL.
30851 2020-03-04  Kito Cheng  <kito.cheng@sifive.com>
30853         PR target/93995
30854         * config/riscv/riscv.c (riscv_emit_float_compare): Using NE to compare
30855         the result of IOR.
30857 2020-03-03  Dennis Zhang  <dennis.zhang@arm.com>
30859         * config/arm/arm_bf16.h (vcvtah_f32_bf16, vcvth_bf16_f32): New.
30860         * config/arm/arm_neon.h (vcvt_f32_bf16, vcvtq_low_f32_bf16): New.
30861         (vcvtq_high_f32_bf16, vcvt_bf16_f32): New.
30862         (vcvtq_low_bf16_f32, vcvtq_high_bf16_f32): New.
30863         * config/arm/arm_neon_builtins.def (vbfcvt, vbfcvt_high): New entries.
30864         (vbfcvtv4sf, vbfcvtv4sf_high): Likewise.
30865         * config/arm/iterators.md (VBFCVT, VBFCVTM): New mode iterators.
30866         (V_bf_low, V_bf_cvt_m): New mode attributes.
30867         * config/arm/neon.md (neon_vbfcvtv4sf<VBFCVT:mode>): New.
30868         (neon_vbfcvtv4sf_highv8bf, neon_vbfcvtsf): New.
30869         (neon_vbfcvt<VBFCVT:mode>, neon_vbfcvt_highv8bf): New.
30870         (neon_vbfcvtbf_cvtmode<mode>, neon_vbfcvtbf): New
30871         * config/arm/unspecs.md (UNSPEC_BFCVT, UNSPEC_BFCVT_HIG): New.
30873 2020-03-03  Jakub Jelinek  <jakub@redhat.com>
30875         PR tree-optimization/93582
30876         * tree-ssa-sccvn.h (vn_reference_lookup): Add mask argument.
30877         * tree-ssa-sccvn.c (struct vn_walk_cb_data): Add mask and masked_result
30878         members, initialize them in the constructor and if mask is non-NULL,
30879         artificially push_partial_def {} for the portions of the mask that
30880         contain zeros.
30881         (vn_walk_cb_data::finish): If mask is non-NULL, set masked_result to
30882         val and return (void *)-1.  Formatting fix.
30883         (vn_reference_lookup_pieces): Adjust vn_walk_cb_data initialization.
30884         Formatting fix.
30885         (vn_reference_lookup): Add mask argument.  If non-NULL, don't call
30886         fully_constant_vn_reference_p nor vn_reference_lookup_1 and return
30887         data.mask_result.
30888         (visit_nary_op): Handle BIT_AND_EXPR of a memory load and INTEGER_CST
30889         mask.
30890         (visit_stmt): Formatting fix.
30892 2020-03-03  Richard Biener  <rguenther@suse.de>
30894         PR tree-optimization/93946
30895         * alias.h (refs_same_for_tbaa_p): Declare.
30896         * alias.c (refs_same_for_tbaa_p): New function.
30897         * tree-ssa-alias.c (ao_ref_alias_set): For a NULL ref return
30898         zero.
30899         * tree-ssa-scopedtables.h
30900         (avail_exprs_stack::lookup_avail_expr): Add output argument
30901         giving access to the hashtable entry.
30902         * tree-ssa-scopedtables.c (avail_exprs_stack::lookup_avail_expr):
30903         Likewise.
30904         * tree-ssa-dom.c: Include alias.h.
30905         (dom_opt_dom_walker::optimize_stmt): Validate TBAA state before
30906         removing redundant store.
30907         * tree-ssa-sccvn.h (vn_reference_s::base_set): New member.
30908         (ao_ref_init_from_vn_reference): Adjust prototype.
30909         (vn_reference_lookup_pieces): Likewise.
30910         (vn_reference_insert_pieces): Likewise.
30911         * tree-ssa-sccvn.c: Track base alias set in addition to alias
30912         set everywhere.
30913         (eliminate_dom_walker::eliminate_stmt): Also check base alias
30914         set when removing redundant stores.
30915         (visit_reference_op_store): Likewise.
30916         * dse.c (record_store): Adjust valdity check for redundant
30917         store removal.
30919 2020-03-03  Jakub Jelinek  <jakub@redhat.com>
30921         PR target/26877
30922         * config/s390/s390.h (OPTION_DEFAULT_SPECS): Reorder.
30924         PR rtl-optimization/94002
30925         * explow.c (plus_constant): Punt if cst has VOIDmode and
30926         get_pool_mode is different from mode.
30928 2020-03-03  Claudiu Zissulescu  <claziss@synopsys.com>
30930         * config/arc/arc.c (leigitimate_small_data_address_p): Check if an
30931         address has an offset which fits the scalling constraint for a
30932         load/store operation.
30933         (legitimate_scaled_address_p): Update use
30934         leigitimate_small_data_address_p.
30935         (arc_print_operand): Likewise.
30936         (arc_legitimate_address_p): Likewise.
30937         (legitimate_small_data_address_p): Likewise.
30939 2020-03-03  Claudiu Zissulescu  <claziss@synopsys.com>
30941         * config/arc/arc.md (fmasf4_fpu): Use accl_operand predicate.
30942         (fnmasf4_fpu): Likewise.
30944 2020-03-03  Claudiu Zissulescu  <claziss@synopsys.com>
30946         * config/arc/arc.md (adddi3): Early expand the 64bit operation into
30947         32bit ops.
30948         (subdi3): Likewise.
30949         (adddi3_i): Remove pattern.
30950         (subdi3_i): Likewise.
30952 2020-03-03  Claudiu Zissulescu  <claziss@synopsys.com>
30954         * config/arc/arc.md (eh_return): Add length info.
30956 2020-03-02  David Malcolm  <dmalcolm@redhat.com>
30958         * doc/invoke.texi (-fanalyzer-show-duplicate-count): New.
30960 2020-03-02  David Malcolm  <dmalcolm@redhat.com>
30962         * doc/invoke.texi (Static Analyzer Options): Add
30963         -Wanalyzer-stale-setjmp-buffer to the list of options enabled
30964         by -fanalyzer.
30966 2020-03-02  Uroš Bizjak  <ubizjak@gmail.com>
30968         PR target/93997
30969         * config/i386/i386.md (movstrict<mode>): Allow only
30970         registers with VALID_INT_MODE_P modes.
30972 2020-03-02  Andrew Stubbs  <ams@codesourcery.com>
30974         * config/gcn/gcn-valu.md (dpp_move<mode>): New.
30975         (reduc_insn): Use 'U' and 'B' operand codes.
30976         (reduc_<reduc_op>_scal_<mode>): Allow all types.
30977         (reduc_<reduc_op>_scal_v64di): Delete.
30978         (*<reduc_op>_dpp_shr_<mode>): Allow all 1reg types.
30979         (*plus_carry_dpp_shr_v64si): Change to ...
30980         (*plus_carry_dpp_shr_<mode>): ... this and allow all 1reg int types.
30981         (mov_from_lane63_v64di): Change to ...
30982         (mov_from_lane63_<mode>): ... this, and allow all 64-bit modes.
30983         * config/gcn/gcn.c (gcn_expand_dpp_shr_insn): Increase buffer size.
30984         Support UNSPEC_MOV_DPP_SHR output formats.
30985         (gcn_expand_reduc_scalar): Add "use_moves" reductions.
30986         Add "use_extends" reductions.
30987         (print_operand_address): Add 'I' and 'U' codes.
30988         * config/gcn/gcn.md (unspec): Add UNSPEC_MOV_DPP_SHR.
30990 2020-03-02  Martin Liska  <mliska@suse.cz>
30992         * lto-wrapper.c: Fix typo in comment about
30993         C++ standard version.
30995 2020-03-01  Martin Sebor  <msebor@redhat.com>
30997         PR c++/92721
30998         * calls.c (init_attr_rdwr_indices): Correctly handle attribute.
31000 2020-03-01  Martin Sebor  <msebor@redhat.com>
31002         PR middle-end/93829
31003         * tree-ssa-strlen.c (count_nonzero_bytes): Set the size to that
31004           of a pointer in the outermost ADDR_EXPRs.
31006 2020-02-28  Jeff Law  <law@redhat.com>
31008         * config/v850/v850.h (STATIC_CHAIN_REGNUM): Change to r19.
31009         * config/v850/v850.c (v850_asm_trampoline_template): Update
31010         accordingly.
31012 2020-02-28  Michael Meissner  <meissner@linux.ibm.com>
31014         PR target/93937
31015         * config/rs6000/vsx.md (vsx_extract_<mode>_<VS_scalar>mode_var):
31016         Delete insn.
31018 2020-02-28  Martin Liska  <mliska@suse.cz>
31020         PR other/93965
31021         * configure.ac: Improve detection of ld_date by requiring
31022         either two dashes or none.
31023         * configure: Regenerate.
31025 2020-02-28  Vladimir Makarov  <vmakarov@redhat.com>
31027         PR rtl-optimization/93564
31028         * ira-color.c (assign_hard_reg): Prefer smaller hard regno when we
31029         do not honor reg alloc order.
31031 2020-02-27  Joel Hutton  <Joel.Hutton@arm.com>
31033         PR target/87612
31034         * config/aarch64/aarch64.c (aarch64_override_options): Fix
31035         misleading warning string.
31037 2020-02-27  Martin Sebor  <msebor@redhat.com>
31039         * doc/invoke.texi (-Wbuiltin-declaration-mismatch): Fix a typo.
31041 2020-02-27  Michael Meissner  <meissner@linux.ibm.com>
31043         PR target/93932
31044         * config/rs6000/vsx.md (vsx_extract_<mode>_var, VSX_D iterator):
31045         Split the insn into two parts.  This insn only does variable
31046         extract from a register.
31047         (vsx_extract_<mode>_var_load, VSX_D iterator): New insn, do
31048         variable extract from memory.
31049         (vsx_extract_v4sf_var): Split the insn into two parts.  This insn
31050         only does variable extract from a register.
31051         (vsx_extract_v4sf_var_load): New insn, do variable extract from
31052         memory.
31053         (vsx_extract_<mode>_var, VSX_EXTRACT_I iterator): Split the insn
31054         into two parts.  This insn only does variable extract from a
31055         register.
31056         (vsx_extract_<mode>_var_load, VSX_EXTRACT_I iterator): New insn,
31057         do variable extract from memory.
31059 2020-02-27  Martin Jambor  <mjambor@suse.cz>
31060             Feng Xue  <fxue@os.amperecomputing.com>
31062         PR ipa/93707
31063         * ipa-cp.c (same_node_or_its_all_contexts_clone_p): Replaced with
31064         new function calls_same_node_or_its_all_contexts_clone_p.
31065         (cgraph_edge_brings_value_p): Use it.
31066         (cgraph_edge_brings_value_p): Likewise.
31067         (self_recursive_pass_through_p): Return false if caller is a clone.
31068         (self_recursive_agg_pass_through_p): Likewise.
31070 2020-02-27  Jan Hubicka  <hubicka@ucw.cz>
31072         PR middle-end/92152
31073         * alias.c (ends_tbaa_access_path_p): Break out from ...
31074         (component_uses_parent_alias_set_from): ... here.
31075         * alias.h (ends_tbaa_access_path_p): Declare.
31076         * tree-ssa-alias.c (access_path_may_continue_p): Break out from ...;
31077         handle trailing arrays past end of tbaa access path.
31078         (aliasing_component_refs_p): ... here; likewise.
31079         (nonoverlapping_refs_since_match_p): Track TBAA segment of the access
31080         path; disambiguate also past end of it.
31081         (nonoverlapping_component_refs_p): Use only TBAA segment of the access
31082         path.
31084 2020-02-27  Mihail Ionescu  <mihail.ionescu@arm.com>
31086         * (__ARM_NUM_LANES, __arm_lane, __arm_lane_q): Move to the
31087         beginning of the file.
31088         (vcreate_bf16, vcombine_bf16): New.
31089         (vdup_n_bf16, vdupq_n_bf16): New.
31090         (vdup_lane_bf16, vdup_laneq_bf16): New.
31091         (vdupq_lane_bf16, vdupq_laneq_bf16): New.
31092         (vduph_lane_bf16, vduph_laneq_bf16): New.
31093         (vset_lane_bf16, vsetq_lane_bf16): New.
31094         (vget_lane_bf16, vgetq_lane_bf16): New.
31095         (vget_high_bf16, vget_low_bf16): New.
31096         (vreinterpret_bf16_u8, vreinterpretq_bf16_u8): New.
31097         (vreinterpret_bf16_u16, vreinterpretq_bf16_u16): New.
31098         (vreinterpret_bf16_u32, vreinterpretq_bf16_u32): New.
31099         (vreinterpret_bf16_u64, vreinterpretq_bf16_u64): New.
31100         (vreinterpret_bf16_s8, vreinterpretq_bf16_s8): New.
31101         (vreinterpret_bf16_s16, vreinterpretq_bf16_s16): New.
31102         (vreinterpret_bf16_s32, vreinterpretq_bf16_s32): New.
31103         (vreinterpret_bf16_s64, vreinterpretq_bf16_s64): New.
31104         (vreinterpret_bf16_p8, vreinterpretq_bf16_p8): New.
31105         (vreinterpret_bf16_p16, vreinterpretq_bf16_p16): New.
31106         (vreinterpret_bf16_p64, vreinterpretq_bf16_p64): New.
31107         (vreinterpret_bf16_f32, vreinterpretq_bf16_f32): New.
31108         (vreinterpret_bf16_f64, vreinterpretq_bf16_f64): New.
31109         (vreinterpretq_bf16_p128): New.
31110         (vreinterpret_s8_bf16, vreinterpretq_s8_bf16): New.
31111         (vreinterpret_s16_bf16, vreinterpretq_s16_bf16): New.
31112         (vreinterpret_s32_bf16, vreinterpretq_s32_bf16): New.
31113         (vreinterpret_s64_bf16, vreinterpretq_s64_bf16): New.
31114         (vreinterpret_u8_bf16, vreinterpretq_u8_bf16): New.
31115         (vreinterpret_u16_bf16, vreinterpretq_u16_bf16): New.
31116         (vreinterpret_u32_bf16, vreinterpretq_u32_bf16): New.
31117         (vreinterpret_u64_bf16, vreinterpretq_u64_bf16): New.
31118         (vreinterpret_p8_bf16, vreinterpretq_p8_bf16): New.
31119         (vreinterpret_p16_bf16, vreinterpretq_p16_bf16): New.
31120         (vreinterpret_p64_bf16, vreinterpretq_p64_bf16): New.
31121         (vreinterpret_f32_bf16, vreinterpretq_f32_bf16): New.
31122         (vreinterpretq_p128_bf16): New.
31123         * config/arm/arm_neon_builtins.def (VDX): Add V4BF.
31124         (V_elem): Likewise.
31125         (V_elem_l): Likewise.
31126         (VD_LANE): Likewise.
31127         (VQX) Add V8BF.
31128         (V_DOUBLE): Likewise.
31129         (VDQX): Add V4BF and V8BF.
31130         (V_two_elem, V_three_elem, V_four_elem): Likewise.
31131         (V_reg): Likewise.
31132         (V_HALF): Likewise.
31133         (V_double_vector_mode): Likewise.
31134         (V_cmp_result): Likewise.
31135         (V_uf_sclr): Likewise.
31136         (V_sz_elem): Likewise.
31137         (Is_d_reg): Likewise.
31138         (V_mode_nunits): Likewise.
31139         * config/arm/neon.md (neon_vdup_lane): Enable for BFloat16.
31141 2020-02-27  Andrew Stubbs  <ams@codesourcery.com>
31143         * config/gcn/gcn-valu.md (VEC_SUBDWORD_MODE): New mode iterator.
31144         (<expander><mode>2<exec>): Change modes to VEC_ALL1REG_INT_MODE.
31145         (<expander><mode>3<exec>): Likewise.
31146         (<expander><mode>3): New.
31147         (v<expander><mode>3): New.
31148         (<expander><mode>3): New.
31149         (<expander><mode>3<exec>): Rename to ...
31150         (<expander>v64si3<exec>): ... this, and change modes to V64SI.
31151         * config/gcn/gcn.md (mnemonic): Use '%B' for not.
31153 2020-02-27  Alexandre Oliva <oliva@adacore.com>
31155         * config/vx-common.h (NO_DOLLAR_IN_LABEL, NO_DOT_IN_LABEL): Leave
31156         them alone on vx7.
31158 2020-02-27  Richard Biener  <rguenther@suse.de>
31160         PR tree-optimization/93508
31161         * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle _CHK like
31162         non-_CHK variants.  Valueize their length arguments.
31164 2020-02-27  Richard Biener  <rguenther@suse.de>
31166         PR tree-optimization/93953
31167         * tree-vect-slp.c (slp_copy_subtree): Avoid keeping a reference
31168         to the hash-map entry.
31170 2020-02-27  Andrew Stubbs  <ams@codesourcery.com>
31172         * config/gcn/gcn.md (mov<mode>): Add transformations for BI subregs.
31174 2020-02-27  Mark Williams  <mwilliams@fb.com>
31176         * dwarf2out.c (file_name_acquire): Call remap_debug_filename.
31177         * lto-opts.c (lto_write_options): Drop -fdebug-prefix-map,
31178         -ffile-prefix-map and -fmacro-prefix-map.
31179         * lto-streamer-out.c: Include file-prefix-map.h.
31180         (lto_output_location): Remap the file part of locations.
31182 2020-02-27  Jakub Jelinek  <jakub@redhat.com>
31184         PR c/93949
31185         * gimplify.c (gimplify_init_constructor): Don't promote readonly
31186         DECL_REGISTER variables to TREE_STATIC.
31188         PR tree-optimization/93582
31189         PR tree-optimization/93945
31190         * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle memset with
31191         non-zero INTEGER_CST second argument and ref->offset or ref->size
31192         not a multiple of BITS_PER_UNIT.
31194 2020-02-27  Jonathan Wakely  <jwakely@redhat.com>
31196         * doc/install.texi (Binaries): Update description of BullFreeware.
31198 2020-02-26  Sandra Loosemore  <sandra@codesourcery.com>
31200         PR c++/90467
31202         * doc/invoke.texi (Option Summary): Re-alphabetize warnings in
31203         C++ Language Options, Warning Options, and Static Analyzer
31204         Options lists.  Document negative form of options enabled by
31205         default.  Move some things around to more accurately sort
31206         warnings by category.
31207         (C++ Dialect Options, Warning Options, Static Analyzer
31208         Options): Document negative form of options when enabled by
31209         default.  Move some things around to more accurately sort
31210         warnings by category.  Add some missing index entries.
31211         Light copy-editing.
31213 2020-02-26  Carl Love  <cel@us.ibm.com>
31215         PR target/91276
31216         * doc/extend.texi (PowerPC AltiVec Built-in Functions available on
31217         ISA 2.07): The builtin-function name __builtin_crypto_vpmsumb is only
31218         for the vector unsigned short arguments.  It is also listed as the
31219         name of the built-in for arguments vector unsigned short,
31220         vector unsigned int and vector unsigned long long built-ins.  The
31221         name of the builtins for these arguments should be:
31222         __builtin_crypto_vpmsumh, __builtin_crypto_vpmsumw and
31223         __builtin_crypto_vpmsumd respectively.
31225 2020-02-26  Richard Biener  <rguenther@suse.de>
31227         * tree-vect-slp.c (vect_print_slp_tree): Also dump ref count
31228         and load permutation.
31230 2020-02-26  Richard Sandiford  <richard.sandiford@arm.com>
31232         PR middle-end/93843
31233         * optabs-tree.c (supportable_convert_operation): Reject types with
31234         scalar modes.
31236 2020-02-26  David Malcolm  <dmalcolm@redhat.com>
31238         * Makefile.in (ANALYZER_OBJS): Add analyzer/bar-chart.o.
31240 2020-02-26  Jakub Jelinek  <jakub@redhat.com>
31242         PR tree-optimization/93820
31243         * gimple-ssa-store-merging.c (check_no_overlap): Change RHS_CODE
31244         argument to ALL_INTEGER_CST_P boolean.
31245         (imm_store_chain_info::try_coalesce_bswap): Adjust caller.
31246         (imm_store_chain_info::coalesce_immediate_stores): Likewise.  Handle
31247         adjacent INTEGER_CST store into merged_store->only_constants like
31248         overlapping one.
31250 2020-02-25  Jakub Jelinek  <jakub@redhat.com>
31252         PR other/93912
31253         * config/sh/sh.c (expand_cbranchdi4): Fix comment typo, probablity
31254         -> probability.
31255         * cfghooks.c (verify_flow_info): Likewise.
31256         * predict.c (combine_predictions_for_bb): Likewise.
31257         * bb-reorder.c (connect_better_edge_p): Likewise.  Fix comment typo,
31258         sucessor -> successor.
31259         (find_traces_1_round): Fix comment typo, destinarion -> destination.
31260         * omp-expand.c (expand_oacc_for): Fix comment typo, sucessors ->
31261         successors.
31262         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Fix dump
31263         message typo, sucessors -> successors.
31265 2020-02-25  Martin Sebor  <msebor@redhat.com>
31267         * doc/extend.texi (attribute access): Correct an example.
31269 2020-02-25  Mihail Ionescu  <mihail.ionescu@arm.com>
31271         * config/aarch64/aarch64-builtins.c (aarch64_scalar_builtin_types):
31272         Add simd_bf.
31273         (aarch64_init_simd_builtin_scalar_types): Register simd_bf.
31274         (VAR15, VAR16): New.
31275         * config/aarch64/iterators.md (VALLDIF): Enable for V4BF and V8BF.
31276         (VD): Enable for V4BF.
31277         (VDC): Likewise.
31278         (VQ): Enable for V8BF.
31279         (VQ2): Likewise.
31280         (VQ_NO2E): Likewise.
31281         (VDBL, Vdbl): Add V4BF.
31282         (V_INT_EQUIV, v_int_equiv): Add V4BF and V8BF.
31283         * config/aarch64/arm_neon.h (bfloat16x4x2_t): New typedef.
31284         (bfloat16x8x2_t): Likewise.
31285         (bfloat16x4x3_t): Likewise.
31286         (bfloat16x8x3_t): Likewise.
31287         (bfloat16x4x4_t): Likewise.
31288         (bfloat16x8x4_t): Likewise.
31289         (vcombine_bf16): New.
31290         (vld1_bf16, vld1_bf16_x2): New.
31291         (vld1_bf16_x3, vld1_bf16_x4): New.
31292         (vld1q_bf16, vld1q_bf16_x2): New.
31293         (vld1q_bf16_x3, vld1q_bf16_x4): New.
31294         (vld1_lane_bf16): New.
31295         (vld1q_lane_bf16): New.
31296         (vld1_dup_bf16): New.
31297         (vld1q_dup_bf16): New.
31298         (vld2_bf16): New.
31299         (vld2q_bf16): New.
31300         (vld2_dup_bf16): New.
31301         (vld2q_dup_bf16): New.
31302         (vld3_bf16): New.
31303         (vld3q_bf16): New.
31304         (vld3_dup_bf16): New.
31305         (vld3q_dup_bf16): New.
31306         (vld4_bf16): New.
31307         (vld4q_bf16): New.
31308         (vld4_dup_bf16): New.
31309         (vld4q_dup_bf16): New.
31310         (vst1_bf16, vst1_bf16_x2): New.
31311         (vst1_bf16_x3, vst1_bf16_x4): New.
31312         (vst1q_bf16, vst1q_bf16_x2): New.
31313         (vst1q_bf16_x3, vst1q_bf16_x4): New.
31314         (vst1_lane_bf16): New.
31315         (vst1q_lane_bf16): New.
31316         (vst2_bf16): New.
31317         (vst2q_bf16): New.
31318         (vst3_bf16): New.
31319         (vst3q_bf16): New.
31320         (vst4_bf16): New.
31321         (vst4q_bf16): New.
31323 2020-02-25  Mihail Ionescu  <mihail.ionescu@arm.com>
31325         * config/aarch64/iterators.md (VDQF_F16) Add V4BF and V8BF.
31326         (VALL_F16): Likewise.
31327         (VALLDI_F16): Likewise.
31328         (Vtype): Likewise.
31329         (Vetype): Likewise.
31330         (vswap_width_name): Likewise.
31331         (VSWAP_WIDTH): Likewise.
31332         (Vel): Likewise.
31333         (VEL): Likewise.
31334         (q): Likewise.
31335         * config/aarch64/arm_neon.h (vset_lane_bf16, vsetq_lane_bf16): New.
31336         (vget_lane_bf16, vgetq_lane_bf16): New.
31337         (vcreate_bf16): New.
31338         (vdup_n_bf16, vdupq_n_bf16): New.
31339         (vdup_lane_bf16, vdup_laneq_bf16): New.
31340         (vdupq_lane_bf16, vdupq_laneq_bf16): New.
31341         (vduph_lane_bf16, vduph_laneq_bf16): New.
31342         (vreinterpret_bf16_u8, vreinterpretq_bf16_u8): New.
31343         (vreinterpret_bf16_u16, vreinterpretq_bf16_u16): New.
31344         (vreinterpret_bf16_u32, vreinterpretq_bf16_u32): New.
31345         (vreinterpret_bf16_u64, vreinterpretq_bf16_u64): New.
31346         (vreinterpret_bf16_s8, vreinterpretq_bf16_s8): New.
31347         (vreinterpret_bf16_s16, vreinterpretq_bf16_s16): New.
31348         (vreinterpret_bf16_s32, vreinterpretq_bf16_s32): New.
31349         (vreinterpret_bf16_s64, vreinterpretq_bf16_s64): New.
31350         (vreinterpret_bf16_p8, vreinterpretq_bf16_p8): New.
31351         (vreinterpret_bf16_p16, vreinterpretq_bf16_p16): New.
31352         (vreinterpret_bf16_p64, vreinterpretq_bf16_p64): New
31353         (vreinterpret_bf16_f16, vreinterpretq_bf16_f16): New
31354         (vreinterpret_bf16_f32, vreinterpretq_bf16_f32): New.
31355         (vreinterpret_bf16_f64, vreinterpretq_bf16_f64): New.
31356         (vreinterpretq_bf16_p128): New.
31357         (vreinterpret_s8_bf16, vreinterpretq_s8_bf16): New.
31358         (vreinterpret_s16_bf16, vreinterpretq_s16_bf16): New.
31359         (vreinterpret_s32_bf16, vreinterpretq_s32_bf16): New.
31360         (vreinterpret_s64_bf16, vreinterpretq_s64_bf16): New.
31361         (vreinterpret_u8_bf16, vreinterpretq_u8_bf16): New.
31362         (vreinterpret_u16_bf16, vreinterpretq_u16_bf16): New.
31363         (vreinterpret_u32_bf16, vreinterpretq_u32_bf16): New.
31364         (vreinterpret_u64_bf16, vreinterpretq_u64_bf16): New.
31365         (vreinterpret_p8_bf16, vreinterpretq_p8_bf16): New.
31366         (vreinterpret_p16_bf16, vreinterpretq_p16_bf16): New.
31367         (vreinterpret_p64_bf16, vreinterpretq_p64_bf16): New.
31368         (vreinterpret_f32_bf16, vreinterpretq_f32_bf16): New.
31369         (vreinterpret_f64_bf16,vreinterpretq_f64_bf16): New.
31370         (vreinterpret_f16_bf16,vreinterpretq_f16_bf16): New.
31371         (vreinterpretq_p128_bf16): New.
31373 2020-02-25  Dennis Zhang  <dennis.zhang@arm.com>
31375         * config/arm/arm_neon.h (vbfdot_f32, vbfdotq_f32): New
31376         (vbfdot_lane_f32, vbfdotq_laneq_f32): New.
31377         (vbfdot_laneq_f32, vbfdotq_lane_f32): New.
31378         * config/arm/arm_neon_builtins.def (vbfdot): New entry.
31379         (vbfdot_lanev4bf, vbfdot_lanev8bf): Likewise.
31380         * config/arm/iterators.md (VSF2BF): New attribute.
31381         * config/arm/neon.md (neon_vbfdot<VCVTF:mode>): New entry.
31382         (neon_vbfdot_lanev4bf<VCVTF:mode>): Likewise.
31383         (neon_vbfdot_lanev8bf<VCVTF:mode>): Likewise.
31385 2020-02-25  Christophe Lyon  <christophe.lyon@linaro.org>
31387         * config/arm/arm.md (required_for_purecode): New attribute.
31388         (enabled): Handle required_for_purecode.
31389         * config/arm/thumb1.md (thumb1_movsi_insn): Add alternative to
31390         work with -mpure-code.
31392 2020-02-25  Jakub Jelinek  <jakub@redhat.com>
31394         PR rtl-optimization/93908
31395         * combine.c (find_split_point): For store into ZERO_EXTRACT, and src
31396         with mask.
31398 2019-02-25  Eric Botcazou  <ebotcazou@adacore.com>
31400         * dwarf2out.c (dwarf2out_size_function): Run in early-DWARF mode.
31402 2020-02-25  Roman Zhuykov  <zhroma@ispras.ru>
31404         * doc/install.texi (--enable-checking): Adjust wording.
31406 2020-02-25  Richard Biener  <rguenther@suse.de>
31408         PR tree-optimization/93868
31409         * tree-vect-slp.c (slp_copy_subtree): New function.
31410         (vect_attempt_slp_rearrange_stmts): Copy the SLP tree before
31411         re-arranging stmts in it.
31413 2020-02-25  Jakub Jelinek  <jakub@redhat.com>
31415         PR middle-end/93874
31416         * passes.c (pass_manager::dump_passes): Create a cgraph node for the
31417         dummy function and remove it at the end.
31419         PR translation/93864
31420         * config/lm32/lm32.c (lm32_setup_incoming_varargs): Fix comment typo
31421         paramter -> parameter.
31422         * config/aarch64/aarch64.c (aarch64_is_extend_from_extract): Likewise.
31423         * ipa-prop.h (struct ipa_agg_replacement_value): Likewise.
31425 2020-02-24  Roman Zhuykov  <zhroma@ispras.ru>
31427         * doc/install.texi (--enable-checking): Properly document current
31428         behavior.
31429         (--enable-stage1-checking): Minor clarification about bootstrap.
31431 2020-02-24  David Malcolm  <dmalcolm@redhat.com>
31433         PR analyzer/93032
31434         * doc/invoke.texi (-Wnanalyzer-tainted-array-index): Note that
31435         -fanalyzer-checker=taint is also required.
31436         (-fanalyzer-checker=): Note that providing this option enables the
31437         given checker, and doing so may be required for checkers that are
31438         disabled by default.
31440 2020-02-24  David Malcolm  <dmalcolm@redhat.com>
31442         * doc/invoke.texi (-fanalyzer-verbosity=): "2" only shows
31443         significant control flow events; add a "3" which shows all
31444         control flow events; the old "3" becomes "4".
31446 2020-02-24  Jakub Jelinek  <jakub@redhat.com>
31448         PR tree-optimization/93582
31449         * tree-ssa-sccvn.c (vn_walk_cb_data::push_partial_def): Consider
31450         pd.offset and pd.size to be counted in bits rather than bytes, add
31451         support for maxsizei that is not a multiple of BITS_PER_UNIT and
31452         handle bitfield stores and loads.
31453         (vn_reference_lookup_3): Don't call ranges_known_overlap_p with
31454         uncomparable quantities - bytes vs. bits.  Allow push_partial_def
31455         on offsets/sizes that aren't multiple of BITS_PER_UNIT and adjust
31456         pd.offset/pd.size to be counted in bits rather than bytes.
31457         Formatting fix.  Rename shadowed len variable to buflen.
31459 2020-02-24  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
31460             Kugan Vivekandarajah  <kugan.vivekanandarajah@linaro.org>
31462         PR driver/47785
31463         * gcc.c (putenv_COLLECT_AS_OPTIONS): New function.
31464         (driver::main): Call putenv_COLLECT_AS_OPTIONS.
31465         * opts-common.c (parse_options_from_collect_gcc_options): New function.
31466         (prepend_xassembler_to_collect_as_options): Likewise.
31467         * opts.h (parse_options_from_collect_gcc_options): Declare prototype.
31468         (prepend_xassembler_to_collect_as_options): Likewise.
31469         * lto-opts.c (lto_write_options): Stream assembler options
31470         in COLLECT_AS_OPTIONS.
31471         * lto-wrapper.c (xassembler_options_error): New static variable.
31472         (get_options_from_collect_gcc_options): Move parsing options code to
31473         parse_options_from_collect_gcc_options and call it.
31474         (merge_and_complain): Validate -Xassembler options.
31475         (append_compiler_options): Handle OPT_Xassembler.
31476         (run_gcc): Append command line -Xassembler options to
31477         collect_gcc_options.
31478         * doc/invoke.texi: Add documentation about using Xassembler
31479         options with LTO.
31481 2020-02-24  Kito Cheng  <kito.cheng@sifive.com>
31483         * config/riscv/riscv.c (riscv_emit_float_compare): Change the code gen
31484         for LTGT.
31485         (riscv_rtx_costs): Update cost model for LTGT.
31487 2020-02-23  Vladimir Makarov  <vmakarov@redhat.com>
31489         PR rtl-optimization/93564
31490         * ira-color.c (struct update_cost_queue_elem): New member start.
31491         (queue_update_cost, get_next_update_cost): Add new arg start.
31492         (allocnos_conflict_p): New function.
31493         (update_costs_from_allocno): Add new arg conflict_cost_update_p.
31494         Add checking conflicts with allocnos_conflict_p.
31495         (update_costs_from_prefs, restore_costs_from_copies): Adjust
31496         update_costs_from_allocno calls.
31497         (update_conflict_hard_regno_costs): Add checking conflicts with
31498         allocnos_conflict_p.  Adjust calls of queue_update_cost and
31499         get_next_update_cost.
31500         (assign_hard_reg): Adjust calls of queue_update_cost.  Add
31501         debugging print.
31502         (bucket_allocno_compare_func): Restore previous version.
31504 2020-02-21  John David Anglin  <danglin@gcc.gnu.org>
31506         * config/pa/pa.c (pa_function_value): Fix check for word and
31507         double-word size when handling aggregate return values.
31508         * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Fix to indicate
31509         that homogeneous SFmode and DFmode aggregates are passed and returned
31510         in general registers.
31512 2020-02-21  Jakub Jelinek  <jakub@redhat.com>
31514         PR translation/93759
31515         * opts.c (print_filtered_help): Translate help before appending
31516         messages to it rather than after that.
31518 2020-02-19  Richard Sandiford  <richard.sandiford@arm.com>
31520         PR rtl-optimization/PR92989
31521         * lra-lives.c (process_bb_lives): Restore the original order
31522         of the bb liveness update.  Call make_hard_regno_dead for each
31523         register clobbered at the start of an EH receiver.
31525 2020-02-18  Feng Xue  <fxue@os.amperecomputing.com>
31527         PR ipa/93763
31528         * ipa-cp.c (self_recursively_generated_p): Mark self-dependent value as
31529         self-recursively generated.
31531 2020-02-21  Iain Sandoe  <iain@sandoe.co.uk>
31533         PR target/93860
31534         * config/darwin-c.c (pop_field_alignment): Adjust quoting of
31535         error string.
31537 2020-02-21  Mihail Ionescu  <mihail.ionescu@arm.com>
31539         * doc/sourcebuild.texi (arm_v8_1m_mve_ok):
31540         Document new target supports option.
31542 2020-02-21  Dennis Zhang  <dennis.zhang@arm.com>
31544         * config/arm/arm_neon.h (vmmlaq_s32, vmmlaq_u32, vusmmlaq_s32): New.
31545         * config/arm/arm_neon_builtins.def (smmla, ummla, usmmla): New.
31546         * config/arm/iterators.md (MATMUL): New iterator.
31547         (sup): Add UNSPEC_MATMUL_S, UNSPEC_MATMUL_U, and UNSPEC_MATMUL_US.
31548         (mmla_sfx): New attribute.
31549         * config/arm/neon.md (neon_<sup>mmlav16qi): New.
31550         * config/arm/unspecs.md (UNSPEC_MATMUL_S, UNSPEC_MATMUL_U): New.
31551         (UNSPEC_MATMUL_US): New.
31553 2020-02-21  Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
31555         * config/arm/arm.md: Prevent scalar shifts from being used when big
31556         endian is enabled.
31558 2020-02-21  Jan Hubicka  <hubicka@ucw.cz>
31559             Richard Biener  <rguenther@suse.de>
31561         PR tree-optimization/93586
31562         * tree-ssa-alias.c (nonoverlapping_array_refs_p): Finish array walk
31563         after mismatched array refs; do not sure type size information to
31564         recover from unmatched referneces with !flag_strict_aliasing_p.
31566 2020-02-21  Andrew Stubbs  <ams@codesourcery.com>
31568         * config/gcn/gcn-valu.md (gather_load<mode>): Rename to ...
31569         (gather_load<mode>v64si): ... this and set operand 2 to V64SI.
31570         (scatter_store<mode>): Rename to ...
31571         (scatter_store<mode>v64si): ... this and set operand 1 to V64SI.
31572         (scatter<mode>_exec): Delete. Move contents ...
31573         (mask_scatter_store<mode>): ... here, and rename that to ...
31574         (mask_gather_load<mode>v64si): ... this. Set operand 2 to V64SI.
31575         Remove mode conversion.
31576         (mask_gather_load<mode>): Rename to ...
31577         (mask_scatter_store<mode>v64si): ... this. Set operand 1 to V64SI.
31578         Remove mode conversion.
31579         * config/gcn/gcn.c (gcn_expand_scaled_offsets): Remove mode conversion.
31581 2020-02-21  Martin Jambor  <mjambor@suse.cz>
31583         PR tree-optimization/93845
31584         * tree-sra.c (verify_sra_access_forest): Only test access size of
31585         scalar types.
31587 2020-02-21  Andrew Stubbs  <ams@codesourcery.com>
31589         * config/gcn/gcn.c (gcn_hard_regno_mode_ok): Align VGPR pairs.
31590         * config/gcn/gcn-valu.md (addv64di3): Remove early-clobber.
31591         (addv64di3_exec): Likewise.
31592         (subv64di3): Likewise.
31593         (subv64di3_exec): Likewise.
31594         (addv64di3_zext): Likewise.
31595         (addv64di3_zext_exec): Likewise.
31596         (addv64di3_zext_dup): Likewise.
31597         (addv64di3_zext_dup_exec): Likewise.
31598         (addv64di3_zext_dup2): Likewise.
31599         (addv64di3_zext_dup2_exec): Likewise.
31600         (addv64di3_sext_dup2): Likewise.
31601         (addv64di3_sext_dup2_exec): Likewise.
31602         (<expander>v64di3): Likewise.
31603         (<expander>v64di3_exec): Likewise.
31604         (*<reduc_op>_dpp_shr_v64di): Likewise.
31605         (*plus_carry_dpp_shr_v64di): Likewise.
31606         * config/gcn/gcn.md (adddi3): Likewise.
31607         (addptrdi3): Likewise.
31608         (<expander>di3): Likewise.
31610 2020-02-21  Andrew Stubbs  <ams@codesourcery.com>
31612         * config/gcn/gcn-valu.md (vec_seriesv64di): Use gen_vec_duplicatev64di.
31614 2020-02-21  Richard Sandiford  <richard.sandiford@arm.com>
31616         * config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Add SVE
31617         support.  Use aarch64_emit_mult instead of emitting multiplication
31618         instructions directly.
31619         * config/aarch64/aarch64-sve.md (sqrt<mode>2, rsqrt<mode>2)
31620         (@aarch64_rsqrte<mode>, @aarch64_rsqrts<mode>): New expanders.
31622 2020-02-21  Richard Sandiford  <richard.sandiford@arm.com>
31624         * config/aarch64/aarch64.c (aarch64_emit_mult): New function.
31625         (aarch64_emit_approx_div): Add SVE support.  Use aarch64_emit_mult
31626         instead of emitting multiplication instructions directly.
31627         * config/aarch64/iterators.md (SVE_COND_FP_BINARY_OPTAB): New iterator.
31628         * config/aarch64/aarch64-sve.md (div<mode>3, @aarch64_frecpe<mode>)
31629         (@aarch64_frecps<mode>): New expanders.
31631 2020-02-21  Richard Sandiford  <richard.sandiford@arm.com>
31633         * config/aarch64/aarch64-protos.h (AARCH64_APPROX_MODE): Operate
31634         on and produce uint64_ts rather than ints.
31635         (AARCH64_APPROX_NONE, AARCH64_APPROX_ALL): Change to uint64_ts.
31636         (cpu_approx_modes): Change the fields from unsigned int to uint64_t.
31638 2020-02-21  Richard Sandiford  <richard.sandiford@arm.com>
31640         * config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Don't create
31641         an unused xmsk register when handling approximate rsqrt.
31643 2020-02-21  Richard Sandiford  <richard.sandiford@arm.com>
31645         * config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Fix inverted
31646         flag_finite_math_only condition.
31648 2020-02-20  Uroš Bizjak  <ubizjak@gmail.com>
31650         PR target/93828
31651         * config/i386/mmx.md (*vec_extractv2sf_1): Match source operand
31652         to destination operand for shufps alternative.
31653         (*vec_extractv2si_1): Ditto.
31655 2020-02-20  Peter Bergner  <bergner@linux.ibm.com>
31657         PR target/93658
31658         * config/rs6000/rs6000.c (rs6000_legitimate_address_p): Handle VSX
31659         vector modes.
31661 2020-02-20  Martin Liska  <mliska@suse.cz>
31663         PR translation/93831
31664         * config/darwin.c (darwin_override_options): Change 64b to 64-bit mode.
31666 2020-02-20  Martin Liska  <mliska@suse.cz>
31668         PR translation/93830
31669         * common/config/avr/avr-common.c: Remote trailing "|".
31671 2020-02-19  Bernd Edlinger  <bernd.edlinger@hotmail.de>
31673         * collect2.c (maybe_run_lto_and_relink): Fix typo in
31674         comment.
31676 2020-02-19  Richard Sandiford  <richard.sandiford@arm.com>
31678         PR tree-optimization/93767
31679         * tree-vect-data-refs.c (vect_compile_time_alias): Remove the
31680         access-size bias from the offset calculations for negative strides.
31682 2020-02-19  Bernd Edlinger  <bernd.edlinger@hotmail.de>
31684         * collect2.c (c_file, o_file): Make const again.
31685         (ldout,lderrout, dump_ld_file): Remove.
31686         (tool_cleanup): Avoid calling not signal-safe functions.
31687         (maybe_run_lto_and_relink): Avoid possible signal handler
31688         access to unintialzed memory (lto_o_files).
31689         (main): Avoid leaking temp files in $TMPDIR.
31690         Initialize c_file/o_file with concat, which avoids exposing
31691         uninitialized memory to signal handler, which calls unlink(!).
31692         Avoid calling maybe_unlink when the main function returns,
31693         since the atexit handler is already doing this.
31694         * collect2.h (dump_ld_file, ldout, lderrout): Remove.
31696 2020-02-19  Martin Jambor  <mjambor@suse.cz>
31698         PR tree-optimization/93776
31699         * tree-sra.c (create_access): Do not create zero size accesses.
31700         (get_access_for_expr): Do not search for zero sized accesses.
31702 2020-02-19  Martin Jambor  <mjambor@suse.cz>
31704         PR tree-optimization/93667
31705         * tree-sra.c (scalarizable_type_p): Return false if record fields
31706         do not follow wach other.
31708 2020-01-21  Kito Cheng  <kito.cheng@sifive.com>
31710         * config/riscv/riscv.c (riscv_output_move) Using fmv.x.w/fmv.w.x
31711         rather than fmv.x.s/fmv.s.x.
31713 2020-02-18  James Greenhalgh  <james.greenhalgh@arm.com>
31715         * config/aarch64/aarch64-simd-builtins.def
31716         (intrinsic_vec_smult_lo_): New.
31717         (intrinsic_vec_umult_lo_): Likewise.
31718         (vec_widen_smult_hi_): Likewise.
31719         (vec_widen_umult_hi_): Likewise.
31720         * config/aarch64/aarch64-simd.md
31721         (aarch64_intrinsic_vec_<su>mult_lo_<mode>): New.
31722         * config/aarch64/arm_neon.h (vmull_high_s8): Use intrinsics.
31723         (vmull_high_s16): Likewise.
31724         (vmull_high_s32): Likewise.
31725         (vmull_high_u8): Likewise.
31726         (vmull_high_u16): Likewise.
31727         (vmull_high_u32): Likewise.
31728         (vmull_s8): Likewise.
31729         (vmull_s16): Likewise.
31730         (vmull_s32): Likewise.
31731         (vmull_u8): Likewise.
31732         (vmull_u16): Likewise.
31733         (vmull_u32): Likewise.
31735 2020-02-18  Martin Liska  <mliska@suse.cz>
31737         * value-prof.c (stream_out_histogram_value): Restore LTO PGO
31738         bootstrap by missing removal of invalid sanity check.
31740 2020-02-18  Martin Liska  <mliska@suse.cz>
31742         PR ipa/92518
31743         * ipa-icf-gimple.c (func_checker::compare_gimple_assign):
31744         Always compare LHS of gimple_assign.
31746 2020-02-18  Martin Liska  <mliska@suse.cz>
31748         PR ipa/93583
31749         * cgraph.c (cgraph_node::verify_node): Verify MALLOC attribute
31750         and return type of functions.
31751         * ipa-param-manipulation.c (ipa_param_adjustments::adjust_decl):
31752         Drop MALLOC attribute for void functions.
31753         * ipa-pure-const.c (funct_state_summary_t::duplicate): Drop
31754         malloc_state for a new VOID clone.
31756 2020-02-18  Martin Liska  <mliska@suse.cz>
31758         PR ipa/92924
31759         * common.opt: Add -fprofile-reproducibility.
31760         * doc/invoke.texi: Document it.
31761         * value-prof.c (dump_histogram_value):
31762         Document and support behavior for counters[0]
31763         being a negative value.
31764         (get_nth_most_common_value): Handle negative
31765         counters[0] in respect to flag_profile_reproducible.
31767 2020-02-18  Jakub Jelinek  <jakub@redhat.com>
31769         PR ipa/93797
31770         * cgraph.c (verify_speculative_call): Use speculative_id instead of
31771         speculative_uid in messages.  Remove trailing whitespace from error
31772         message.  Use num_speculative_call_targets instead of
31773         num_speculative_targets in a message.
31774         (cgraph_node::verify_node): Use call_stmt instead of cal_stmt in
31775         edge messages and stmt instead of cal_stmt in reference message.
31777         PR tree-optimization/93780
31778         * tree-ssa.c (non_rewritable_lvalue_p): Check valid_vector_subparts_p
31779         before calling build_vector_type.
31780         (execute_update_addresses_taken): Likewise.
31782         PR driver/93796
31783         * params.opt (-param=ipa-max-switch-predicate-bounds=): Fix help
31784         typo, functoin -> function.
31785         * tree.c (free_lang_data_in_decl): Fix comment typo,
31786         functoin -> function.
31787         * ipa-visibility.c (cgraph_externally_visible_p): Likewise.
31789 2020-02-17  David Malcolm  <dmalcolm@redhat.com>
31791         * diagnostic.c (print_any_cwe): Don't call get_cwe_url if URLs
31792         won't be printed.
31793         (print_option_information): Don't call get_option_url if URLs
31794         won't be printed.
31796 2020-02-17  Alexandre Oliva  <oliva@adacore.com>
31798         * tree-emutls.c (new_emutls_decl, emutls_common_1): Complete
31799         handling of register_common-less targets.
31801 2020-02-17  Martin Liska  <mliska@suse.cz>
31803         PR ipa/93760
31804         * ipa-devirt.c (odr_types_equivalent_p): Fix grammar.
31806 2020-02-17  Martin Liska  <mliska@suse.cz>
31808         PR translation/93755
31809         * config/rs6000/rs6000.c (rs6000_option_override_internal):
31810         Fix double quotes.
31812 2020-02-17  Martin Liska  <mliska@suse.cz>
31814         PR other/93756
31815         * config/rx/elf.opt: Fix typo.
31817 2020-02-17  Richard Biener  <rguenther@suse.de>
31819         PR c/86134
31820         * opts-global.c (print_ignored_options): Use inform and
31821         amend message.
31823 2020-02-17  Jiufu Guo  <guojiufu@linux.ibm.com>
31825         PR target/93047
31826         * config/rs6000/rs6000.md (untyped_call): Add emit_clobber.
31828 2020-02-16  Uroš Bizjak  <ubizjak@gmail.com>
31830         PR target/93743
31831         * config/i386/i386.md (atan2xf3): Swap operands 1 and 2.
31832         (atan2<mode>3): Update operand order in the call to gen_atan2xf3.
31834 2020-02-15  Jason Merrill  <jason@redhat.com>
31836         * doc/invoke.texi (C Dialect Options): Add -std=c++20.
31838 2020-02-15  Jakub Jelinek  <jakub@redhat.com>
31840         PR tree-optimization/93744
31841         * match.pd (((m1 >/</>=/<= m2) * d -> (m1 >/</>=/<= m2) ? d : 0,
31842         A - ((A - B) & -(C cmp D)) -> (C cmp D) ? B : A,
31843         A + ((B - A) & -(C cmp D)) -> (C cmp D) ? B : A): For GENERIC, make
31844         sure @2 in the first and @1 in the other patterns has no side-effects.
31846 2020-02-15  David Malcolm  <dmalcolm@redhat.com>
31847             Bernd Edlinger  <bernd.edlinger@hotmail.de>
31849         PR 87488
31850         PR other/93168
31851         * config.in (DIAGNOSTICS_URLS_DEFAULT): New define.
31852         * configure.ac (--with-diagnostics-urls): New configuration
31853         option, based on --with-diagnostics-color.
31854         (DIAGNOSTICS_URLS_DEFAULT): New define.
31855         * config.h: Regenerate.
31856         * configure: Regenerate.
31857         * diagnostic.c (diagnostic_urls_init): Handle -1 for
31858         DIAGNOSTICS_URLS_DEFAULT from configure-time
31859         --with-diagnostics-urls=auto-if-env by querying for a GCC_URLS
31860         and TERM_URLS environment variable.
31861         * diagnostic-url.h (diagnostic_url_format): New enum type.
31862         (diagnostic_urls_enabled_p): rename to...
31863         (determine_url_format): ... this, and change return type.
31864         * diagnostic-color.c (parse_env_vars_for_urls): New helper function.
31865         (auto_enable_urls): Disable URLs on xfce4-terminal, gnome-terminal,
31866         the linux console, and mingw.
31867         (diagnostic_urls_enabled_p): rename to...
31868         (determine_url_format): ... this, and adjust.
31869         * pretty-print.h (pretty_printer::show_urls): rename to...
31870         (pretty_printer::url_format): ... this, and change to enum.
31871         * pretty-print.c (pretty_printer::pretty_printer,
31872         pp_begin_url, pp_end_url, test_urls): Adjust.
31873         * doc/install.texi (--with-diagnostics-urls): Document the new
31874         configuration option.
31875         (--with-diagnostics-color): Document the existing interaction
31876         with GCC_COLORS better.
31877         * doc/invoke.texi (-fdiagnostics-urls): Add GCC_URLS and TERM_URLS
31878         vindex reference.  Update description of defaults based on the above.
31879         (-fdiagnostics-color): Update description of how -fdiagnostics-color
31880         interacts with GCC_COLORS.
31882 2020-02-14  Eric Botcazou  <ebotcazou@adacore.com>
31884         PR target/93704
31885         * config/sparc/sparc.c (eligible_for_call_delay): Test HAVE_GNU_LD in
31886         conjunction with TARGET_GNU_TLS in early return.
31888 2020-02-14  Alexander Monakov  <amonakov@ispras.ru>
31890         * rtlanal.c (rtx_cost): Handle a SET up front. Avoid division if
31891         the mode is not wider than UNITS_PER_WORD.
31893 2020-02-14  Martin Jambor  <mjambor@suse.cz>
31895         PR tree-optimization/93516
31896         * tree-sra.c (propagate_subaccesses_from_rhs): Do not create
31897         access of the same type as the parent.
31898         (propagate_subaccesses_from_lhs): Likewise.
31900 2020-02-14 Hongtao Liu  <hongtao.liu@intel.com>
31902         PR target/93724
31903         * config/i386/avx512vbmi2intrin.h
31904         (_mm512_shrdi_epi16, _mm512_mask_shrdi_epi16,
31905         _mm512_maskz_shrdi_epi16, _mm512_shrdi_epi32,
31906         _mm512_mask_shrdi_epi32, _mm512_maskz_shrdi_epi32,
31907         _m512_shrdi_epi64, _m512_mask_shrdi_epi64,
31908         _m512_maskz_shrdi_epi64, _mm512_shldi_epi16,
31909         _mm512_mask_shldi_epi16, _mm512_maskz_shldi_epi16,
31910         _mm512_shldi_epi32, _mm512_mask_shldi_epi32,
31911         _mm512_maskz_shldi_epi32, _mm512_shldi_epi64,
31912         _mm512_mask_shldi_epi64, _mm512_maskz_shldi_epi64): Fix typo
31913         of lacking a closing parenthesis.
31914         * config/i386/avx512vbmi2vlintrin.h
31915         (_mm256_shrdi_epi16, _mm256_mask_shrdi_epi16,
31916         _mm256_maskz_shrdi_epi16, _mm256_shrdi_epi32,
31917         _mm256_mask_shrdi_epi32, _mm256_maskz_shrdi_epi32,
31918         _m256_shrdi_epi64, _m256_mask_shrdi_epi64,
31919         _m256_maskz_shrdi_epi64, _mm256_shldi_epi16,
31920         _mm256_mask_shldi_epi16, _mm256_maskz_shldi_epi16,
31921         _mm256_shldi_epi32, _mm256_mask_shldi_epi32,
31922         _mm256_maskz_shldi_epi32, _mm256_shldi_epi64,
31923         _mm256_mask_shldi_epi64, _mm256_maskz_shldi_epi64,
31924         _mm_shrdi_epi16, _mm_mask_shrdi_epi16,
31925         _mm_maskz_shrdi_epi16, _mm_shrdi_epi32,
31926         _mm_mask_shrdi_epi32, _mm_maskz_shrdi_epi32,
31927         _mm_shrdi_epi64, _mm_mask_shrdi_epi64,
31928         _m_maskz_shrdi_epi64, _mm_shldi_epi16,
31929         _mm_mask_shldi_epi16, _mm_maskz_shldi_epi16,
31930         _mm_shldi_epi32, _mm_mask_shldi_epi32,
31931         _mm_maskz_shldi_epi32, _mm_shldi_epi64,
31932         _mm_mask_shldi_epi64, _mm_maskz_shldi_epi64): Ditto.
31934 2020-02-13  H.J. Lu  <hongjiu.lu@intel.com>
31936         PR target/93656
31937         * config/i386/i386.c (ix86_trampoline_init): Skip ENDBR32 at
31938         the target function entry.
31940 2020-02-13  Claudiu Zissulescu  <claziss@synopsys.com>
31942         * common/config/arc/arc-common.c (arc_option_optimization_table):
31943         Disable if-conversion step when optimized for size.
31945 2020-02-13  Claudiu Zissulescu  <claziss@synopsys.com>
31947         * config/arc/arc.c (arc_conditional_register_usage): R0-R3 and
31948         R12-R15 are always in ARCOMPACT16_REGS register class.
31949         * config/arc/arc.opt (mq-class): Deprecate.
31950         * config/arc/constraint.md ("q"): Remove dependency on mq-class
31951         option.
31952         * doc/invoke.texi (mq-class): Update text.
31953         * common/config/arc/arc-common.c (arc_option_optimization_table):
31954         Update list.
31956 2020-02-13  Claudiu Zissulescu  <claziss@synopsys.com>
31958         * config/arc/arc.c (arc_insn_cost): New function.
31959         (TARGET_INSN_COST): Define.
31960         * config/arc/arc.md (cost): New attribute.
31961         (add_n): Use arc_nonmemory_operand.
31962         (ashlsi3_insn): Likewise, also update constraints.
31963         (ashrsi3_insn): Likewise.
31964         (rotrsi3): Likewise.
31965         (add_shift): Likewise.
31966         * config/arc/predicates.md (arc_nonmemory_operand): New predicate.
31968 2020-02-13  Claudiu Zissulescu  <claziss@synopsys.com>
31970         * config/arc/arc.md (mulsidi_600): Correctly select mlo/mhi
31971         registers.
31972         (umulsidi_600): Likewise.
31974 2020-02-13  Jakub Jelinek  <jakub@redhat.com>
31976         PR target/93696
31977         * config/i386/avx512bitalgintrin.h (_mm512_mask_popcnt_epi8,
31978         _mm512_mask_popcnt_epi16, _mm256_mask_popcnt_epi8,
31979         _mm256_mask_popcnt_epi16, _mm_mask_popcnt_epi8,
31980         _mm_mask_popcnt_epi16): Rename __B argument to __A and __A to __W,
31981         pass __A to the builtin followed by __W instead of __A followed by
31982         __B.
31983         * config/i386/avx512vpopcntdqintrin.h (_mm512_mask_popcnt_epi32,
31984         _mm512_mask_popcnt_epi64): Likewise.
31985         * config/i386/avx512vpopcntdqvlintrin.h (_mm_mask_popcnt_epi32,
31986         _mm256_mask_popcnt_epi32, _mm_mask_popcnt_epi64,
31987         _mm256_mask_popcnt_epi64): Likewise.
31989         PR tree-optimization/93582
31990         * fold-const.h (shift_bytes_in_array_left,
31991         shift_bytes_in_array_right): Declare.
31992         * fold-const.c (shift_bytes_in_array_left,
31993         shift_bytes_in_array_right): New function, moved from
31994         gimple-ssa-store-merging.c, no longer static.
31995         * gimple-ssa-store-merging.c (shift_bytes_in_array): Move
31996         to gimple-ssa-store-merging.c and rename to shift_bytes_in_array_left.
31997         (shift_bytes_in_array_right): Move to gimple-ssa-store-merging.c.
31998         (encode_tree_to_bitpos): Use shift_bytes_in_array_left instead of
31999         shift_bytes_in_array.
32000         (verify_shift_bytes_in_array): Rename to ...
32001         (verify_shift_bytes_in_array_left): ... this.  Use
32002         shift_bytes_in_array_left instead of shift_bytes_in_array.
32003         (store_merging_c_tests): Call verify_shift_bytes_in_array_left
32004         instead of verify_shift_bytes_in_array.
32005         * tree-ssa-sccvn.c (vn_reference_lookup_3): For native_encode_expr
32006         / native_interpret_expr where the store covers all needed bits,
32007         punt on PDP-endian, otherwise allow all involved offsets and sizes
32008         not to be byte-aligned.
32010         PR target/93673
32011         * config/i386/sse.md (k<code><mode>): Drop mode from last operand and
32012         use const_0_to_255_operand predicate instead of immediate_operand.
32013         (avx512dq_fpclass<mode><mask_scalar_merge_name>,
32014         avx512dq_vmfpclass<mode><mask_scalar_merge_name>,
32015         vgf2p8affineinvqb_<mode><mask_name>,
32016         vgf2p8affineqb_<mode><mask_name>): Drop mode from
32017         const_0_to_255_operand predicated operands.
32019 2020-02-12  Jeff Law  <law@redhat.com>
32021         * config/h8300/h8300.md (comparison shortening peepholes): Use
32022         a mode iterator to merge the HImode and SImode peepholes.
32024 2020-02-12  Jakub Jelinek  <jakub@redhat.com>
32026         PR middle-end/93663
32027         * real.c (is_even): Make static.  Function comment fix.
32028         (is_halfway_below): Make static, don't assert R is not inf/nan,
32029         instead return false for those.  Small formatting fixes.
32031 2020-02-12  Martin Sebor  <msebor@redhat.com>
32033         PR middle-end/93646
32034         * tree-ssa-strlen.c (handle_builtin_stxncpy): Rename...
32035         (handle_builtin_stxncpy_strncat): ...to this.  Change first argument.
32036         Issue only -Wstringop-overflow strncat, never -Wstringop-truncation.
32037         (strlen_check_and_optimize_call): Adjust callee name.
32039 2020-02-12  Jeff Law  <law@redhat.com>
32041         * config/h8300/h8300.md (comparison shortening peepholes): Drop
32042         (and (xor)) variant.  Combine other two into single peephole.
32044 2020-02-12  Wilco Dijkstra  <wdijkstr@arm.com>
32046         PR rtl-optimization/93565
32047         * config/aarch64/aarch64.c (aarch64_rtx_costs): Add CTZ costs.
32049 2020-02-12  Wilco Dijkstra  <wdijkstr@arm.com>
32051         * config/aarch64/aarch64-simd.md
32052         (aarch64_zero_extend<GPI:mode>_reduc_plus_<VDQV_E:mode>): New pattern.
32053         * config/aarch64/aarch64.md (popcount<mode>2): Use it instead of
32054         generating separate ADDV and zero_extend patterns.
32055         * config/aarch64/iterators.md (VDQV_E): New iterator.
32057 2020-02-12  Jeff Law  <law@redhat.com>
32059         * config/h8300/h8300.md (cpymemsi, movmd): Remove dead patterns,
32060         expanders, splits, etc.
32061         (movmd_internal_<mode>, movmd splitter, movstr, movsd): Likewise.
32062         (stpcpy_internal_<mode>, stpcpy splitter): Likewise.
32063         (peepholes to convert QI/HI mode pushes to SI mode pushes): Likewise.
32064         * config/h8300/h8300.c (h8300_swap_into_er6): Remove unused function.
32065         (h8300_swap_out_of_er6, h8sx_emit_movmd): Likewise
32066         * config/h8300/h8300-protos.h (h8300_swap_into_er6): Remove unused
32067         function prototype.
32068         (h8300_swap_out_of_er6, h8sx_emit_movmd): Likewise.
32070 2020-02-12  Jakub Jelinek  <jakub@redhat.com>
32072         PR target/93670
32073         * config/i386/sse.md (VI48F_256_DQ): New mode iterator.
32074         (avx512vl_vextractf128<mode>): Use it instead of VI48F_256.  Remove
32075         TARGET_AVX512DQ from condition.
32076         (vec_extract_lo_<mode><mask_name>): Use <mask_avx512dq_condition>
32077         instead of <mask_mode512bit_condition> in condition.  If
32078         TARGET_AVX512DQ is false, emit vextract*64x4 instead of
32079         vextract*32x8.
32080         (vec_extract_lo_<mode><mask_name>): Drop <mask_avx512dq_condition>
32081         from condition.
32083 2020-02-12  Kewen Lin  <linkw@gcc.gnu.org>
32085         PR target/91052
32086         * ira.c (combine_and_move_insns): Skip multiple_sets def_insn.
32088 2020-02-12  Segher Boessenkool  <segher@kernel.crashing.org>
32090         * config/rs6000/rs6000.c (rs6000_debug_print_mode): Don't use sizeof
32091         where strlen is more legible.
32092         (rs6000_builtin_vectorized_libmass): Ditto.
32093         (rs6000_print_options_internal): Ditto.
32095 2020-02-11  Martin Sebor  <msebor@redhat.com>
32097         PR tree-optimization/93683
32098         * tree-ssa-alias.c (stmt_kills_ref_p): Avoid using LHS when not set.
32100 2020-02-11  Michael Meissner  <meissner@linux.ibm.com>
32102         * config/rs6000/predicates.md (cint34_operand): Rename the
32103         -mprefixed-addr option to be -mprefixed.
32104         * config/rs6000/rs6000-cpus.def (ISA_FUTURE_MASKS_SERVER): Rename
32105         the -mprefixed-addr option to be -mprefixed.
32106         (OTHER_FUTURE_MASKS): Likewise.
32107         (POWERPC_MASKS): Likewise.
32108         * config/rs6000/rs6000.c (rs6000_option_override_internal): Rename
32109         the -mprefixed-addr option to be -mprefixed.  Change error
32110         messages to refer to -mprefixed.
32111         (num_insns_constant_gpr): Rename the -mprefixed-addr option to be
32112         -mprefixed.
32113         (rs6000_legitimate_offset_address_p): Likewise.
32114         (rs6000_mode_dependent_address): Likewise.
32115         (rs6000_opt_masks): Change the spelling of "-mprefixed-addr" to be
32116         "-mprefixed" for target attributes and pragmas.
32117         (address_to_insn_form): Rename the -mprefixed-addr option to be
32118         -mprefixed.
32119         (rs6000_adjust_insn_length): Likewise.
32120         * config/rs6000/rs6000.h (FINAL_PRESCAN_INSN): Rename the
32121         -mprefixed-addr option to be -mprefixed.
32122         (ASM_OUTPUT_OPCODE): Likewise.
32123         * config/rs6000/rs6000.md (prefixed insn attribute): Rename the
32124         -mprefixed-addr option to be -mprefixed.
32125         * config/rs6000/rs6000.opt (-mprefixed): Rename the
32126         -mprefixed-addr option to be prefixed.  Change the option from
32127         being undocumented to being documented.
32128         * doc/invoke.texi (RS/6000 and PowerPC Options): Document the
32129         -mprefixed option.  Update the -mpcrel documentation to mention
32130         -mprefixed.
32132 2020-02-11  Hans-Peter Nilsson  <hp@axis.com>
32134         * ira-conflicts.c (print_hard_reg_set): Correct output for sets
32135         including FIRST_PSEUDO_REGISTER - 1.
32136         * ira-color.c (print_hard_reg_set): Ditto.
32138 2020-02-11  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
32140         * config/arm/arm-builtins.c (enum arm_type_qualifiers): 
32141         (USTERNOP_QUALIFIERS): New define.
32142         (USMAC_LANE_QUADTUP_QUALIFIERS): New define.
32143         (SUMAC_LANE_QUADTUP_QUALIFIERS): New define.
32144         (arm_expand_builtin_args): Add case ARG_BUILTIN_LANE_QUADTUP_INDEX.
32145         (arm_expand_builtin_1): Add qualifier_lane_quadtup_index.
32146         * config/arm/arm_neon.h (vusdot_s32): New.
32147         (vusdot_lane_s32): New.
32148         (vusdotq_lane_s32): New.
32149         (vsudot_lane_s32): New.
32150         (vsudotq_lane_s32): New.
32151         * config/arm/arm_neon_builtins.def (usdot, usdot_lane,sudot_lane): New.
32152         * config/arm/iterators.md (DOTPROD_I8MM): New.
32153         (sup, opsuffix): Add <us/su>.
32154         * config/arm/neon.md (neon_usdot, <us/su>dot_lane: New.
32155         * config/arm/unspecs.md (UNSPEC_DOT_US, UNSPEC_DOT_SU): New.
32157 2020-02-11  Richard Biener  <rguenther@suse.de>
32159         PR tree-optimization/93661
32160         PR tree-optimization/93662
32161         * tree-ssa-sccvn.c (vn_reference_lookup_3): Properly guard
32162         tree_to_poly_int64.
32163         * tree-sra.c (get_access_for_expr): Likewise.
32165 2020-02-10  Jakub Jelinek  <jakub@redhat.com>
32167         PR target/93637
32168         * config/i386/sse.md (VI_256_AVX2): New mode iterator.
32169         (vcond_mask_<mode><sseintvecmodelower>): Use it instead of VI_256.
32170         Change condition from TARGET_AVX2 to TARGET_AVX.
32172 2020-02-10  Iain Sandoe  <iain@sandoe.co.uk>
32174         PR other/93641
32175         * config/darwin-c.c (darwin_cfstring_ref_p): Fix up last
32176         argument of strncmp.
32178 2020-02-10  Hans-Peter Nilsson  <hp@axis.com>
32180         Try to generate zero-based comparisons.
32181         * config/cris/cris.c (cris_reduce_compare): New function.
32182         * config/cris/cris-protos.h  (cris_reduce_compare): Add prototype.
32183         * config/cris/cris.md ("cbranch<mode>4", "cbranchdi4", "cstoredi4")
32184         (cstore<mode>4"): Apply cris_reduce_compare in expanders.
32186 2020-02-10  Richard Earnshaw  <rearnsha@arm.com>
32188         PR target/91913
32189         * config/arm/arm.md (movsi_compare0): Allow SP as a source register
32190         in Thumb state and also as a destination in Arm state.  Add T16
32191         variants.
32193 2020-02-10  Hans-Peter Nilsson  <hp@axis.com>
32195         * md.texi (Define Subst): Match closing paren in example.
32197 2020-02-10  Jakub Jelinek  <jakub@redhat.com>
32199         PR target/58218
32200         PR other/93641
32201         * config/i386/i386.c (x86_64_elf_section_type_flags): Fix up last
32202         arguments of strncmp.
32204 2020-02-10  Feng Xue  <fxue@os.amperecomputing.com>
32206         PR ipa/93203
32207         * ipa-cp.c (ipcp_lattice::add_value): Add source with same call edge
32208         but different source value.
32209         (adjust_callers_for_value_intersection): New function.
32210         (gather_edges_for_value): Adjust order of callers to let a
32211         non-self-recursive caller be the first element.
32212         (self_recursive_pass_through_p): Add a new parameter "simple", and
32213         check generalized self-recursive pass-through jump function.
32214         (self_recursive_agg_pass_through_p): Likewise.
32215         (find_more_scalar_values_for_callers_subset): Compute value from
32216         pass-through jump function for self-recursive.
32217         (intersect_with_plats): Cleanup previous implementation code for value
32218         itersection with self-recursive call edge.
32219         (intersect_with_agg_replacements): Likewise.
32220         (intersect_aggregates_with_edge): Deduce value from pass-through jump
32221         function for self-recursive call edge.  Cleanup previous implementation
32222         code for value intersection with self-recursive call edge.
32223         (decide_whether_version_node): Remove dead callers and adjust order
32224         to let a non-self-recursive caller be the first element.
32226 2020-02-09  Uroš Bizjak  <ubizjak@gmail.com>
32228         * recog.c: Move pass_split_before_sched2 code in front of
32229         pass_split_before_regstack.
32230         (pass_data_split_before_sched2): Rename pass to split3 from split4.
32231         (pass_data_split_before_regstack): Rename pass to split4 from split3.
32232         (rest_of_handle_split_before_sched2): Remove.
32233         (pass_split_before_sched2::execute): Unconditionally call
32234         split_all_insns.
32235         (enable_split_before_sched2): New function.
32236         (pass_split_before_sched2::gate): Use enable_split_before_sched2.
32237         (pass_split_before_regstack::gate): Ditto.
32238         * config/nds32/nds32.c (nds32_split_double_word_load_store_p):
32239         Update name check for renamed split4 pass.
32240         * config/sh/sh.c (register_sh_passes): Update pass insertion
32241         point for renamed split4 pass.
32243 2020-02-09  Jakub Jelinek  <jakub@redhat.com>
32245         * gimplify.c (gimplify_adjust_omp_clauses_1): Promote
32246         DECL_IN_CONSTANT_POOL variables into "omp declare target" to avoid
32247         copying them around between host and target.
32249 2020-02-08  Andrew Pinski  <apinski@marvell.com>
32251         PR target/91927
32252         * config/aarch64/aarch64-simd.md (movmisalign<mode>): Check
32253         STRICT_ALIGNMENT also.
32255 2020-02-08  Jim Wilson  <jimw@sifive.com>
32257         PR target/93532
32258         * config/riscv/riscv.h (HARD_REGNO_CALLER_SAVE_MODE): Define.
32260 2020-02-08  Uroš Bizjak  <ubizjak@gmail.com>
32261             Jakub Jelinek  <jakub@redhat.com>
32263         PR target/65782
32264         * config/i386/i386.h (CALL_USED_REGISTERS): Make
32265         xmm16-xmm31 call-used even in 64-bit ms-abi.
32267 2020-02-07  Dennis Zhang  <dennis.zhang@arm.com>
32269         * config/aarch64/aarch64-simd-builtins.def (simd_smmla): New entry.
32270         (simd_ummla, simd_usmmla): Likewise.
32271         * config/aarch64/aarch64-simd.md (aarch64_simd_<sur>mmlav16qi): New.
32272         * config/aarch64/arm_neon.h (vmmlaq_s32, vmmlaq_u32): New.
32273         (vusmmlaq_s32): New.
32275 2020-02-07  Richard Biener  <rguenther@suse.de>
32277         PR middle-end/93519
32278         * tree-inline.c (fold_marked_statements): Do a PRE walk,
32279         skipping unreachable regions.
32280         (optimize_inline_calls): Skip folding stmts when we didn't
32281         inline.
32283 2020-02-07  H.J. Lu  <hongjiu.lu@intel.com>
32285         PR target/85667
32286         * config/i386/i386.c (function_arg_ms_64): Add a type argument.
32287         Don't return aggregates with only SFmode and DFmode in SSE
32288         register.
32289         (ix86_function_arg): Pass arg.type to function_arg_ms_64.
32291 2020-02-07  Jakub Jelinek  <jakub@redhat.com>
32293         PR target/93122
32294         * config/rs6000/rs6000-logue.c
32295         (rs6000_emit_probe_stack_range_stack_clash): Always use gen_add3_insn,
32296         if it fails, move rs into end_addr and retry.  Add
32297         REG_FRAME_RELATED_EXPR note whenever it returns more than one insn or
32298         the insn pattern doesn't describe well what exactly happens to
32299         dwarf2cfi.c.
32301         PR target/93594
32302         * config/i386/predicates.md (avx_identity_operand): Remove.
32303         * config/i386/sse.md (*avx_vec_concat<mode>_1): Remove.
32304         (avx_<castmode><avxsizesuffix>_<castmode>,
32305         avx512f_<castmode><avxsizesuffix>_256<castmode>): Change patterns to
32306         a VEC_CONCAT of the operand and UNSPEC_CAST.
32307         (avx512f_<castmode><avxsizesuffix>_<castmode>): Change pattern to
32308         a VEC_CONCAT of VEC_CONCAT of the operand and UNSPEC_CAST with
32309         UNSPEC_CAST.
32311         PR target/93611
32312         * config/i386/i386.c (ix86_lea_outperforms): Make sure to clear
32313         recog_data.insn if distance_non_agu_define changed it.
32315 2020-02-06  Michael Meissner  <meissner@linux.ibm.com>
32317         PR target/93569
32318         * config/rs6000/rs6000.c (reg_to_non_prefixed): Before ISA 3.0
32319         we only had X-FORM (reg+reg) addressing for vectors.  Also before
32320         ISA 3.0, we only had X-FORM addressing for scalars in the
32321         traditional Altivec registers.
32323 2020-02-06  <zhongyunde@huawei.com>
32324             Vladimir Makarov  <vmakarov@redhat.com>
32326         PR rtl-optimization/93561
32327         * lra-assigns.c (spill_for): Check that tested hard regno is not out of
32328         hard register range.
32330 2020-02-06  Richard Sandiford  <richard.sandiford@arm.com>
32332         * config/aarch64/aarch64.md (aarch64_movk<mode>): Add a type
32333         attribute.
32335 2020-02-06  Segher Boessenkool  <segher@kernel.crashing.org>
32337         * config/rs6000/rs6000.c (rs6000_emit_set_long_const): Handle the case
32338         where the low and the high 32 bits are equal to each other specially,
32339         with an rldimi instruction.
32341 2020-02-06  Mihail Ionescu  <mihail.ionescu@arm.com>
32343         * config/arm/arm-cpus.in: Set profile M for armv8.1-m.main.
32345 2020-02-06  Mihail Ionescu  <mihail.ionescu@arm.com>
32347         * config/arm/arm-tables.opt: Regenerate.
32349 2020-02-06  Richard Sandiford  <richard.sandiford@arm.com>
32351         PR target/87763
32352         * config/aarch64/aarch64-protos.h (aarch64_movk_shift): Declare.
32353         * config/aarch64/aarch64.c (aarch64_movk_shift): New function.
32354         * config/aarch64/aarch64.md (aarch64_movk<mode>): New pattern.
32356 2020-02-06  Richard Sandiford  <richard.sandiford@arm.com>
32358         PR rtl-optimization/87763
32359         * config/aarch64/aarch64.md (*ashiftsi_extvdi_bfiz): New pattern.
32361 2020-02-06  Delia Burduv  <delia.burduv@arm.com>
32363         * config/aarch64/aarch64-simd-builtins.def
32364         (bfmlaq): New built-in function.
32365         (bfmlalb): New built-in function.
32366         (bfmlalt): New built-in function.
32367         (bfmlalb_lane): New built-in function.
32368         (bfmlalt_lane): New built-in function.
32369         * config/aarch64/aarch64-simd.md
32370         (aarch64_bfmmlaqv4sf): New pattern.
32371         (aarch64_bfmlal<bt>v4sf): New pattern.
32372         (aarch64_bfmlal<bt>_lane<q>v4sf): New pattern.
32373         * config/aarch64/arm_neon.h (vbfmmlaq_f32): New intrinsic.
32374         (vbfmlalbq_f32): New intrinsic.
32375         (vbfmlaltq_f32): New intrinsic.
32376         (vbfmlalbq_lane_f32): New intrinsic.
32377         (vbfmlaltq_lane_f32): New intrinsic.
32378         (vbfmlalbq_laneq_f32): New intrinsic.
32379         (vbfmlaltq_laneq_f32): New intrinsic.
32380         * config/aarch64/iterators.md (BF_MLA): New int iterator.
32381         (bt): New int attribute.
32383 2020-02-06  Uroš Bizjak  <ubizjak@gmail.com>
32385         * config/i386/i386.md (*pushtf): Emit "#" instead of
32386         calling gcc_unreachable in insn output.
32387         (*pushxf): Ditto.
32388         (*pushdf): Ditto.
32389         (*pushsf_rex64): Ditto for alternatives other than 1.
32390         (*pushsf): Ditto for alternatives other than 1.
32392 2020-02-06  Martin Liska  <mliska@suse.cz>
32394         PR gcov-profile/91971
32395         PR gcov-profile/93466
32396         * coverage.c (coverage_init): Revert mangling of
32397         path into filename.  It can lead to huge filename length.
32398         Creation of subfolders seem more natural.
32400 2020-02-06  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
32402         PR target/93300
32403         * config/arm/arm.c (arm_block_arith_comp_libfuncs_for_mode): New.
32404         (arm_init_libfuncs): Add BFmode support to block spurious BF libfuncs.
32405         Use arm_block_arith_comp_libfuncs_for_mode for HFmode.
32407 2020-02-06  Jakub Jelinek  <jakub@redhat.com>
32409         PR target/93594
32410         * config/i386/predicates.md (avx_identity_operand): New predicate.
32411         * config/i386/sse.md (*avx_vec_concat<mode>_1): New
32412         define_insn_and_split.
32414         PR libgomp/93515
32415         * omp-low.c (use_pointer_for_field): For nested constructs, also
32416         look for map clauses on target construct.
32417         (scan_omp_1_stmt) <case GIMPLE_OMP_TARGET>: Bump temporarily
32418         taskreg_nesting_level.
32420         PR libgomp/93515
32421         * gimplify.c (gimplify_scan_omp_clauses) <do_notice>: If adding
32422         shared clause, call omp_notice_variable on outer context if any.
32424 2020-02-05  Jason Merrill  <jason@redhat.com>
32426         PR c++/92003
32427         * symtab.c (symtab_node::nonzero_address): A DECL_COMDAT decl has
32428         non-zero address even if weak and not yet defined.
32430 2020-02-05  Martin Sebor  <msebor@redhat.com>
32432         PR tree-optimization/92765
32433         * gimple-fold.c (get_range_strlen_tree): Handle MEM_REF and PARM_DECL.
32434         * tree-ssa-strlen.c (compute_string_length): Remove.
32435         (determine_min_objsize): Remove.
32436         (get_len_or_size): Add an argument.  Call get_range_strlen_dynamic.
32437         Avoid using type size as the upper bound on string length.
32438         (handle_builtin_string_cmp): Add an argument.  Adjust.
32439         (strlen_check_and_optimize_call): Pass additional argument to
32440         handle_builtin_string_cmp.
32442 2020-02-05  Uroš Bizjak  <ubizjak@gmail.com>
32444         * config/i386/i386.md (*pushdi2_rex64 peephole2): Remove.
32445         (*pushdi2_rex64 peephole2): Unconditionally split after
32446         epilogue_completed.
32447         (*ashl<mode>3_doubleword): Ditto.
32448         (*<shift_insn><mode>3_doubleword): Ditto.
32450 2020-02-05  Michael Meissner  <meissner@linux.ibm.com>
32452         PR target/93568
32453         * config/rs6000/rs6000.c (get_vector_offset): Fix
32455 2020-02-05  Andrew Stubbs  <ams@codesourcery.com>
32457         * config/gcn/t-gcn-hsa (MULTILIB_OPTIONS): Use / not space.
32459 2020-02-05  David Malcolm  <dmalcolm@redhat.com>
32461         * doc/analyzer.texi
32462         (Special Functions for Debugging the Analyzer): Update description
32463         of __analyzer_dump_exploded_nodes.
32465 2020-02-05  Jakub Jelinek  <jakub@redhat.com>
32467         PR target/92190
32468         * config/i386/i386-features.c (ix86_add_reg_usage_to_vzeroupper): Only
32469         include sets and not clobbers in the vzeroupper pattern.
32470         * config/i386/sse.md (*avx_vzeroupper): Require in insn condition that
32471         the parallel has 17 (64-bit) or 9 (32-bit) elts.
32472         (*avx_vzeroupper_1): New define_insn_and_split.
32474         PR target/92190
32475         * recog.c (pass_split_after_reload::gate): For STACK_REGS targets,
32476         don't run when !optimize.
32477         (pass_split_before_regstack::gate): For STACK_REGS targets, run even
32478         when !optimize.
32480 2020-02-05  Richard Biener  <rguenther@suse.de>
32482         PR middle-end/90648
32483         * genmatch.c (dt_node::gen_kids_1): Emit number of argument
32484         checks before matching calls.
32486 2020-02-05  Jakub Jelinek  <jakub@redhat.com>
32488         * tree-ssa-alias.c (aliasing_matching_component_refs_p): Fix up
32489         function comment typo.
32491         PR middle-end/93555
32492         * omp-simd-clone.c (expand_simd_clones): If simd_clone_mangle or
32493         simd_clone_create failed when i == 0, adjust clone->nargs by
32494         clone->inbranch.
32496 2020-02-05  Martin Liska  <mliska@suse.cz>
32498         PR c++/92717
32499         * doc/invoke.texi: Document that one should
32500         not combine ASLR and -fpch.
32502 2020-02-04  Richard Biener  <rguenther@suse.de>
32504         PR tree-optimization/93538
32505         * match.pd (addr EQ/NE ptr): Amend to handle &ptr->x EQ/NE ptr.
32507 2020-02-04  Richard Biener  <rguenther@suse.de>
32509         PR tree-optimization/91123
32510         * tree-ssa-sccvn.c (vn_walk_cb_data::finish): New method.
32511         (vn_walk_cb_data::last_vuse): New member.
32512         (vn_walk_cb_data::saved_operands): Likewsie.
32513         (vn_walk_cb_data::~vn_walk_cb_data): Release saved_operands.
32514         (vn_walk_cb_data::push_partial_def): Use finish.
32515         (vn_reference_lookup_2): Update last_vuse and use finish if
32516         we've saved operands.
32517         (vn_reference_lookup_3): Use finish and update calls to
32518         push_partial_defs everywhere.  When translating through
32519         memcpy or aggregate copies save off operands and alias-set.
32520         (eliminate_dom_walker::eliminate_stmt): Restore VN_WALKREWRITE
32521         operation for redundant store removal.
32523 2020-02-04  Richard Biener  <rguenther@suse.de>
32525         PR tree-optimization/92819
32526         * tree-ssa-forwprop.c (simplify_vector_constructor): Avoid
32527         generating more stmts than before.
32529 2020-02-04  Martin Liska  <mliska@suse.cz>
32531         * config/arm/arm.c (arm_gen_far_branch): Move the function
32532         outside of selftests.
32534 2020-02-03  Michael Meissner  <meissner@linux.ibm.com>
32536         * config/rs6000/rs6000.c (adjust_vec_address_pcrel): New helper
32537         function to adjust PC-relative vector addresses.
32538         (rs6000_adjust_vec_address): Call adjust_vec_address_pcrel to
32539         handle vectors with PC-relative addresses.
32541 2020-02-03  Michael Meissner  <meissner@linux.ibm.com>
32543         * config/rs6000/rs6000.c (reg_to_non_prefixed): Add forward
32544         reference.
32545         (hard_reg_and_mode_to_addr_mask): Delete.
32546         (rs6000_adjust_vec_address): If the original vector address
32547         was REG+REG or REG+OFFSET and the element is not zero, do the add
32548         of the elements in the original address before adding the offset
32549         for the vector element.  Use address_to_insn_form to validate the
32550         address using the register being loaded, rather than guessing
32551         whether the address is a DS-FORM or DQ-FORM address.
32553 2020-02-03  Michael Meissner  <meissner@linux.ibm.com>
32555         * config/rs6000/rs6000.c (get_vector_offset): New helper function
32556         to calculate the offset in memory from the start of a vector of a
32557         particular element.  Add code to keep the element number in
32558         bounds if the element number is variable.
32559         (rs6000_adjust_vec_address): Move calculation of offset of the
32560         vector element to get_vector_offset.
32561         (rs6000_split_vec_extract_var): Do not do the initial AND of
32562         element here, move the code to get_vector_offset.
32564 2020-02-03  Michael Meissner  <meissner@linux.ibm.com>
32566         * config/rs6000/rs6000.c (rs6000_adjust_vec_address): Add some
32567         gcc_asserts.
32569 2020-02-03  Segher Boessenkool  <segher@kernel.crashing.org>
32571         * config/rs6000/constraints.md: Improve documentation.
32573 2020-02-03  Richard Earnshaw  <rearnsha@arm.com>
32575         PR target/93548
32576         * config/arm/t-arm: ($(srcdir)/config/arm/arm-tune.md)
32577         ($(srcdir)/config/arm/arm-tables.opt): Use move-if-change.
32579 2020-02-03  Andrew Stubbs  <ams@codesourcery.com>
32581         * config.gcc: Remove "carrizo" support.
32582         * config/gcn/gcn-opts.h (processor_type): Likewise.
32583         * config/gcn/gcn.c (gcn_omp_device_kind_arch_isa): Likewise.
32584         * config/gcn/gcn.opt (gpu_type): Likewise.
32585         * config/gcn/t-omp-device: Likewise.
32587 2020-02-03  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
32589         PR target/91816
32590         * config/arm/arm-protos.h: New function arm_gen_far_branch prototype.
32591         * config/arm/arm.c (arm_gen_far_branch): New function
32592         arm_gen_far_branch.
32593         * config/arm/arm.md: Update b<cond> for Thumb2 range checks.
32595 2020-02-03  Julian Brown  <julian@codesourcery.com>
32596             Tobias Burnus  <tobias@codesourcery.com>
32598         * doc/invoke.texi: Update mention of OpenACC version to 2.6.
32600 2020-02-03  Jakub Jelinek  <jakub@redhat.com>
32602         PR target/93533
32603         * config/s390/s390.md (popcounthi2_z196): Fix up expander to emit
32604         valid RTL to sum up the lowest and second lowest bytes of the popcnt
32605         result.
32607 2020-02-02  Vladimir Makarov  <vmakarov@redhat.com>
32609         PR rtl-optimization/91333
32610         * ira-color.c (struct allocno_color_data): Add member
32611         hard_reg_prefs.
32612         (init_allocno_threads): Set the member up.
32613         (bucket_allocno_compare_func): Add compare hard reg
32614         prefs.
32616 2020-01-31  Sandra Loosemore  <sandra@codesourcery.com>
32618         nios2: Support for GOT-relative DW_EH_PE_datarel encoding.
32620         * configure.ac [nios2-*-*]: Check HAVE_AS_NIOS2_GOTOFF_RELOCATION.
32621         * config.in: Regenerated.
32622         * configure: Regenerated.
32623         * config/nios2/nios2.h (ASM_PREFERRED_EH_DATA_FORMAT): Fix handling
32624         for PIC when HAVE_AS_NIOS2_GOTOFF_RELOCATION.
32625         (ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX): New.
32627 2020-02-01  Andrew Burgess  <andrew.burgess@embecosm.com>
32629         * configure: Regenerate.
32631 2020-01-31  Vladimir Makarov  <vmakarov@redhat.com>
32633         PR rtl-optimization/91333
32634         * ira-color.c (bucket_allocno_compare_func): Move conflict hard
32635         reg preferences comparison up.
32637 2020-01-31  Richard Sandiford  <richard.sandiford@arm.com>
32639         * config/aarch64/aarch64.h (TARGET_SVE_BF16): New macro.
32640         * config/aarch64/aarch64-sve-builtins-sve2.h (svcvtnt): Move to
32641         aarch64-sve-builtins-base.h.
32642         * config/aarch64/aarch64-sve-builtins-sve2.cc (svcvtnt): Move to
32643         aarch64-sve-builtins-base.cc.
32644         * config/aarch64/aarch64-sve-builtins-base.h (svbfdot, svbfdot_lane)
32645         (svbfmlalb, svbfmlalb_lane, svbfmlalt, svbfmlalt_lane, svbfmmla)
32646         (svcvtnt): Declare.
32647         * config/aarch64/aarch64-sve-builtins-base.cc (svbfdot, svbfdot_lane)
32648         (svbfmlalb, svbfmlalb_lane, svbfmlalt, svbfmlalt_lane, svbfmmla)
32649         (svcvtnt): New functions.
32650         * config/aarch64/aarch64-sve-builtins-base.def (svbfdot, svbfdot_lane)
32651         (svbfmlalb, svbfmlalb_lane, svbfmlalt, svbfmlalt_lane, svbfmmla)
32652         (svcvtnt): New functions.
32653         (svcvt): Add a form that converts f32 to bf16.
32654         * config/aarch64/aarch64-sve-builtins-shapes.h (ternary_bfloat)
32655         (ternary_bfloat_lane, ternary_bfloat_lanex2, ternary_bfloat_opt_n):
32656         Declare.
32657         * config/aarch64/aarch64-sve-builtins-shapes.cc (parse_element_type):
32658         Treat B as bfloat16_t.
32659         (ternary_bfloat_lane_base): New class.
32660         (ternary_bfloat_def): Likewise.
32661         (ternary_bfloat): New shape.
32662         (ternary_bfloat_lane_def): New class.
32663         (ternary_bfloat_lane): New shape.
32664         (ternary_bfloat_lanex2_def): New class.
32665         (ternary_bfloat_lanex2): New shape.
32666         (ternary_bfloat_opt_n_def): New class.
32667         (ternary_bfloat_opt_n): New shape.
32668         * config/aarch64/aarch64-sve-builtins.cc (TYPES_cvt_bfloat): New macro.
32669         * config/aarch64/aarch64-sve.md (@aarch64_sve_<sve_fp_op>vnx4sf)
32670         (@aarch64_sve_<sve_fp_op>_lanevnx4sf): New patterns.
32671         (@aarch64_sve_<optab>_trunc<VNx4SF_ONLY:mode><VNx8BF_ONLY:mode>)
32672         (@cond_<optab>_trunc<VNx4SF_ONLY:mode><VNx8BF_ONLY:mode>): Likewise.
32673         (*cond_<optab>_trunc<VNx4SF_ONLY:mode><VNx8BF_ONLY:mode>): Likewise.
32674         (@aarch64_sve_cvtnt<VNx8BF_ONLY:mode>): Likewise.
32675         * config/aarch64/aarch64-sve2.md (@aarch64_sve2_cvtnt<mode>): Key
32676         the pattern off the narrow mode instead of the wider one.
32677         * config/aarch64/iterators.md (VNx8BF_ONLY): New mode iterator.
32678         (UNSPEC_BFMLALB, UNSPEC_BFMLALT, UNSPEC_BFMMLA): New unspecs.
32679         (sve_fp_op): Handle them.
32680         (SVE_BFLOAT_TERNARY_LONG): New int itertor.
32681         (SVE_BFLOAT_TERNARY_LONG_LANE): Likewise.
32683 2020-01-31  Richard Sandiford  <richard.sandiford@arm.com>
32685         * config/aarch64/arm_sve.h: Include arm_bf16.h.
32686         * config/aarch64/aarch64-modes.def (BF): Move definition before
32687         VECTOR_MODES.  Remove separate VECTOR_MODES for V4BF and V8BF.
32688         (SVE_MODES): Handle BF modes.
32689         * config/aarch64/aarch64.c (aarch64_classify_vector_mode): Handle
32690         BF modes.
32691         (aarch64_full_sve_mode): Likewise.
32692         * config/aarch64/iterators.md (SVE_STRUCT): Add VNx16BF, VNx24BF
32693         and VNx32BF.
32694         (SVE_FULL, SVE_FULL_HSD, SVE_ALL): Add VNx8BF.
32695         (Vetype, Vesize, Vctype, VEL, Vel, VEL_INT, V128, v128, vwcore)
32696         (V_INT_EQUIV, v_int_equiv, V_FP_EQUIV, v_fp_equiv, vector_count)
32697         (insn_length, VSINGLE, vsingle, VPRED, vpred, VDOUBLE): Handle the
32698         new SVE BF modes.
32699         * config/aarch64/aarch64-sve-builtins.h (TYPE_bfloat): New
32700         type_class_index.
32701         * config/aarch64/aarch64-sve-builtins.cc (TYPES_all_arith): New macro.
32702         (TYPES_all_data): Add bf16.
32703         (TYPES_reinterpret1, TYPES_reinterpret): Likewise.
32704         (register_tuple_type): Increase buffer size.
32705         * config/aarch64/aarch64-sve-builtins.def (svbfloat16_t): New type.
32706         (bf16): New type suffix.
32707         * config/aarch64/aarch64-sve-builtins-base.def (svabd, svadd, svaddv)
32708         (svcmpeq, svcmpge, svcmpgt, svcmple, svcmplt, svcmpne, svmad, svmax)
32709         (svmaxv, svmin, svminv, svmla, svmls, svmsb, svmul, svsub, svsubr):
32710         Change type from all_data to all_arith.
32711         * config/aarch64/aarch64-sve-builtins-sve2.def (svaddp, svmaxp)
32712         (svminp): Likewise.
32714 2020-01-31  Dennis Zhang  <dennis.zhang@arm.com>
32715             Matthew Malcomson  <matthew.malcomson@arm.com>
32716             Richard Sandiford  <richard.sandiford@arm.com>
32718         * doc/invoke.texi (f32mm): Document new AArch64 -march= extension.
32719         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Define
32720         __ARM_FEATURE_SVE_MATMUL_INT8, __ARM_FEATURE_SVE_MATMUL_FP32 and
32721         __ARM_FEATURE_SVE_MATMUL_FP64 as appropriate.  Don't define
32722         __ARM_FEATURE_MATMUL_FP64.
32723         * config/aarch64/aarch64-option-extensions.def (fp, simd, fp16)
32724         (sve): Add AARCH64_FL_F32MM to the list of extensions that should
32725         be disabled at the same time.
32726         (f32mm): New extension.
32727         * config/aarch64/aarch64.h (AARCH64_FL_F32MM): New macro.
32728         (AARCH64_FL_F64MM): Bump to the next bit up.
32729         (AARCH64_ISA_F32MM, TARGET_SVE_I8MM, TARGET_F32MM, TARGET_SVE_F32MM)
32730         (TARGET_SVE_F64MM): New macros.
32731         * config/aarch64/iterators.md (SVE_MATMULF): New mode iterator.
32732         (UNSPEC_FMMLA, UNSPEC_SMATMUL, UNSPEC_UMATMUL, UNSPEC_USMATMUL)
32733         (UNSPEC_TRN1Q, UNSPEC_TRN2Q, UNSPEC_UZP1Q, UNSPEC_UZP2Q, UNSPEC_ZIP1Q)
32734         (UNSPEC_ZIP2Q): New unspeccs.
32735         (DOTPROD_US_ONLY, PERMUTEQ, MATMUL, FMMLA): New int iterators.
32736         (optab, sur, perm_insn): Handle the new unspecs.
32737         (sve_fp_op): Handle UNSPEC_FMMLA.  Resort.
32738         * config/aarch64/aarch64-sve.md (@aarch64_sve_ld1ro<mode>): Use
32739         TARGET_SVE_F64MM instead of separate tests.
32740         (@aarch64_<DOTPROD_US_ONLY:sur>dot_prod<vsi2qi>): New pattern.
32741         (@aarch64_<DOTPROD_US_ONLY:sur>dot_prod_lane<vsi2qi>): Likewise.
32742         (@aarch64_sve_add_<MATMUL:optab><vsi2qi>): Likewise.
32743         (@aarch64_sve_<FMMLA:sve_fp_op><mode>): Likewise.
32744         (@aarch64_sve_<PERMUTEQ:optab><mode>): Likewise.
32745         * config/aarch64/aarch64-sve-builtins.cc (TYPES_s_float): New macro.
32746         (TYPES_s_float_hsd_integer, TYPES_s_float_sd_integer): Use it.
32747         (TYPES_s_signed): New macro.
32748         (TYPES_s_integer): Use it.
32749         (TYPES_d_float): New macro.
32750         (TYPES_d_data): Use it.
32751         * config/aarch64/aarch64-sve-builtins-shapes.h (mmla): Declare.
32752         (ternary_intq_uintq_lane, ternary_intq_uintq_opt_n, ternary_uintq_intq)
32753         (ternary_uintq_intq_lane, ternary_uintq_intq_opt_n): Likewise.
32754         * config/aarch64/aarch64-sve-builtins-shapes.cc (mmla_def): New class.
32755         (svmmla): New shape.
32756         (ternary_resize2_opt_n_base): Add TYPE_CLASS2 and TYPE_CLASS3
32757         template parameters.
32758         (ternary_resize2_lane_base): Likewise.
32759         (ternary_resize2_base): New class.
32760         (ternary_qq_lane_base): Likewise.
32761         (ternary_intq_uintq_lane_def): Likewise.
32762         (ternary_intq_uintq_lane): New shape.
32763         (ternary_intq_uintq_opt_n_def): New class
32764         (ternary_intq_uintq_opt_n): New shape.
32765         (ternary_qq_lane_def): Inherit from ternary_qq_lane_base.
32766         (ternary_uintq_intq_def): New class.
32767         (ternary_uintq_intq): New shape.
32768         (ternary_uintq_intq_lane_def): New class.
32769         (ternary_uintq_intq_lane): New shape.
32770         (ternary_uintq_intq_opt_n_def): New class.
32771         (ternary_uintq_intq_opt_n): New shape.
32772         * config/aarch64/aarch64-sve-builtins-base.h (svmmla, svsudot)
32773         (svsudot_lane, svtrn1q, svtrn2q, svusdot, svusdot_lane, svusmmla)
32774         (svuzp1q, svuzp2q, svzip1q, svzip2q): Declare.
32775         * config/aarch64/aarch64-sve-builtins-base.cc (svdot_lane_impl):
32776         Generalize to...
32777         (svdotprod_lane_impl): ...this new class.
32778         (svmmla_impl, svusdot_impl): New classes.
32779         (svdot_lane): Update to use svdotprod_lane_impl.
32780         (svmmla, svsudot, svsudot_lane, svtrn1q, svtrn2q, svusdot)
32781         (svusdot_lane, svusmmla, svuzp1q, svuzp2q, svzip1q, svzip2q): New
32782         functions.
32783         * config/aarch64/aarch64-sve-builtins-base.def (svmmla): New base
32784         function, with no types defined.
32785         (svmmla, svusmmla, svsudot, svsudot_lane, svusdot, svusdot_lane): New
32786         AARCH64_FL_I8MM functions.
32787         (svmmla): New AARCH64_FL_F32MM function.
32788         (svld1ro): Depend only on AARCH64_FL_F64MM, not on AARCH64_FL_V8_6.
32789         (svmmla, svtrn1q, svtrn2q, svuz1q, svuz2q, svzip1q, svzip2q): New
32790         AARCH64_FL_F64MM function.
32791         (REQUIRED_EXTENSIONS):
32793 2020-01-31  Andrew Stubbs  <ams@codesourcery.com>
32795         * config/gcn/gcn-valu.md (addv64di3_exec): Allow one '0' in each
32796         alternative only.
32798 2020-01-31  Uroš Bizjak  <ubizjak@gmail.com>
32800         * config/i386/i386.md (*movoi_internal_avx): Do not check for
32801         TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL.  Remove MODE_V8SF handling.
32802         (*movti_internal): Do not check for
32803         TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL.
32804         (*movtf_internal): Move check for TARGET_SSE2 and size optimization
32805         just after check for TARGET_AVX.
32806         (*movdf_internal): Ditto.
32807         * config/i386/mmx.md (*mov<mode>_internal): Do not check for
32808         TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL.
32809         * config/i386/sse.md (mov<mode>_internal): Only check
32810         TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL with V2DFmode.  Move check
32811         for TARGET_SSE2 and size optimization just after check for TARGET_AVX.
32812         (<sse>_andnot<mode>3<mask_name>): Move check for
32813         TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL after check for TARGET_AVX.
32814         (<code><mode>3<mask_name>): Ditto.
32815         (*andnot<mode>3): Ditto.
32816         (*andnottf3): Ditto.
32817         (*<code><mode>3): Ditto.
32818         (*<code>tf3): Ditto.
32819         (*andnot<VI:mode>3): Remove
32820         TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL handling.
32821         (<mask_codefor><code><VI48_AVX_AVX512F:mode>3<mask_name>): Ditto.
32822         (*<code><VI12_AVX_AVX512F:mode>3): Ditto.
32823         (sse4_1_blendv<ssemodesuffix>): Ditto.
32824         * config/i386/x86-tune.def (X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL):
32825         Explain that tune applies to 128bit instructions only.
32827 2020-01-31  Kwok Cheung Yeung  <kcy@codesourcery.com>
32829         * config/gcn/mkoffload.c (process_asm): Add sgpr_count and vgpr_count
32830         to definition of hsa_kernel_description.  Parse assembly to find SGPR
32831         and VGPR count of kernel and store in hsa_kernel_description.
32833 2020-01-31  Tamar Christina  <tamar.christina@arm.com>
32835         PR rtl-optimization/91838
32836         * simplify-rtx.c (simplify_binary_operation_1): Update LSHIFTRT case
32837         to truncate if allowed or reject combination.
32839 2020-01-31  Andrew Stubbs  <ams@codesourcery.com>
32841         * tree-ssa-loop-ivopts.c (get_iv): Use sizetype for zero-step.
32842         (find_inv_vars_cb): Likewise.
32844 2020-01-31  David Malcolm  <dmalcolm@redhat.com>
32846         * calls.c (special_function_p): Split out the check for DECL_NAME
32847         being non-NULL and fndecl being extern at file scope into a
32848         new maybe_special_function_p and call it.  Drop check for fndecl
32849         being non-NULL that was after a usage of DECL_NAME (fndecl).
32850         * tree.h (maybe_special_function_p): New inline function.
32852 2020-01-30  Andrew Stubbs  <ams@codesourcery.com>
32854         * config/gcn/gcn-valu.md (gather<mode>_exec): Move contents ...
32855         (mask_gather_load<mode>): ... here, and zero-initialize the
32856         destination.
32857         (maskload<mode>di): Zero-initialize the destination.
32858         * config/gcn/gcn.c:
32860 2020-01-30  David Malcolm  <dmalcolm@redhat.com>
32862         PR analyzer/93356
32863         * doc/analyzer.texi (Limitations): Note that constraints on
32864         floating-point values are currently ignored.
32866 2020-01-30  Jakub Jelinek  <jakub@redhat.com>
32868         PR lto/93384
32869         * symtab.c (symtab_node::noninterposable_alias): If localalias
32870         already exists, but is not usable, append numbers after it until
32871         a unique name is found.  Formatting fix.
32873         PR middle-end/93505
32874         * combine.c (simplify_comparison) <case ROTATE>: Punt on out of range
32875         rotate counts.
32877 2020-01-30  Andrew Stubbs  <ams@codesourcery.com>
32879         * config/gcn/gcn.c (print_operand): Handle LTGT.
32880         * config/gcn/predicates.md (gcn_fp_compare_operator): Allow ltgt.
32882 2020-01-30  Richard Biener  <rguenther@suse.de>
32884         * tree-pretty-print.c (dump_generic_node): Wrap VECTOR_CST
32885         and CONSTRUCTOR in _Literal (type) with TDF_GIMPLE.
32887 2020-01-30  John David Anglin  <danglin@gcc.gnu.org>
32889         * config/pa/pa.c (pa_elf_select_rtx_section): Place function pointers
32890         without a DECL in .data.rel.ro.local.
32892 2020-01-30  Jakub Jelinek  <jakub@redhat.com>
32894         PR target/93494
32895         * config/arm/arm.md (uaddvdi4): Actually emit what gen_uaddvsi4
32896         returned.
32898         PR target/91824
32899         * config/i386/sse.md
32900         (*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_zext): Renamed to ...
32901         (*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_<u>ext): ... this.  Use
32902         any_extend code iterator instead of always zero_extend.
32903         (*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_zext_lt): Renamed to ...
32904         (*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_<u>ext_lt): ... this.
32905         Use any_extend code iterator instead of always zero_extend.
32906         (*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_zext_shift): Renamed to ...
32907         (*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_<u>ext_shift): ... this.
32908         Use any_extend code iterator instead of always zero_extend.
32909         (*sse2_pmovmskb_ext): New define_insn.
32910         (*sse2_pmovmskb_ext_lt): New define_insn_and_split.
32912         PR target/91824
32913         * config/i386/i386.md (*popcountsi2_zext): New define_insn_and_split.
32914         (*popcountsi2_zext_falsedep): New define_insn.
32916 2020-01-30  Dragan Mladjenovic  <dmladjenovic@wavecomp.com>
32918         * config.in: Regenerated.
32919         * configure: Regenerated.
32921 2020-01-29  Tobias Burnus  <tobias@codesourcery.com>
32923         PR bootstrap/93409
32924         * config/gcn/gcn-hsa.h (ASM_SPEC): Add -mattr=-code-object-v3 as
32925         LLVM's assembler changed the default in version 9.
32927 2020-01-24  Jeff Law  <law@redhat.com>
32929         PR tree-optimization/89689
32930         * builtins.def (BUILT_IN_OBJECT_SIZE): Make it const rather than pure.
32932 2020-01-29  Richard Sandiford  <richard.sandiford@arm.com>
32934         Revert:
32936         2020-01-28  Richard Sandiford  <richard.sandiford@arm.com>
32938         PR rtl-optimization/87763
32939         * simplify-rtx.c (simplify_truncation): Extend sign/zero_extract
32940         simplification to handle subregs as well as bare regs.
32941         * config/i386/i386.md (*testqi_ext_3): Match QI extracts too.
32943 2020-01-29  Joel Hutton  <Joel.Hutton@arm.com>
32945         PR target/93221
32946         * ira.c (ira): Revert use of simplified LRA algorithm.
32948 2020-01-29  Martin Jambor  <mjambor@suse.cz>
32950         PR tree-optimization/92706
32951         * tree-sra.c (struct access): Fields first_link, last_link,
32952         next_queued and grp_queued renamed to first_rhs_link, last_rhs_link,
32953         next_rhs_queued and grp_rhs_queued respectively, new fields
32954         first_lhs_link, last_lhs_link, next_lhs_queued and grp_lhs_queued.
32955         (struct assign_link): Field next renamed to next_rhs, new field
32956         next_lhs.  Updated comment.
32957         (work_queue_head): Renamed to rhs_work_queue_head.
32958         (lhs_work_queue_head): New variable.
32959         (add_link_to_lhs): New function.
32960         (relink_to_new_repr): Also relink LHS lists.
32961         (add_access_to_work_queue): Renamed to add_access_to_rhs_work_queue.
32962         (add_access_to_lhs_work_queue): New function.
32963         (pop_access_from_work_queue): Renamed to
32964         pop_access_from_rhs_work_queue.
32965         (pop_access_from_lhs_work_queue): New function.
32966         (build_accesses_from_assign): Also add links to LHS lists and to LHS
32967         work_queue.
32968         (child_would_conflict_in_lacc): Renamed to
32969         child_would_conflict_in_acc.  Adjusted parameter names.
32970         (create_artificial_child_access): New parameter set_grp_read, use it.
32971         (subtree_mark_written_and_enqueue): Renamed to
32972         subtree_mark_written_and_rhs_enqueue.
32973         (propagate_subaccesses_across_link): Renamed to
32974         propagate_subaccesses_from_rhs.
32975         (propagate_subaccesses_from_lhs): New function.
32976         (propagate_all_subaccesses): Also propagate subaccesses from LHSs to
32977         RHSs.
32979 2020-01-29  Martin Jambor  <mjambor@suse.cz>
32981         PR tree-optimization/92706
32982         * tree-sra.c (struct access): Adjust comment of
32983         grp_total_scalarization.
32984         (find_access_in_subtree): Look for single children spanning an entire
32985         access.
32986         (scalarizable_type_p): Allow register accesses, adjust callers.
32987         (completely_scalarize): Remove function.
32988         (scalarize_elem): Likewise.
32989         (create_total_scalarization_access): Likewise.
32990         (sort_and_splice_var_accesses): Do not track total scalarization
32991         flags.
32992         (analyze_access_subtree): New parameter totally, adjust to new meaning
32993         of grp_total_scalarization.
32994         (analyze_access_trees): Pass new parameter to analyze_access_subtree.
32995         (can_totally_scalarize_forest_p): New function.
32996         (create_total_scalarization_access): Likewise.
32997         (create_total_access_and_reshape): Likewise.
32998         (total_should_skip_creating_access): Likewise.
32999         (totally_scalarize_subtree): Likewise.
33000         (analyze_all_variable_accesses): Perform total scalarization after
33001         subaccess propagation using the new functions above.
33002         (initialize_constant_pool_replacements): Output initializers by
33003         traversing the access tree.
33005 2020-01-29  Martin Jambor  <mjambor@suse.cz>
33007         * tree-sra.c (verify_sra_access_forest): New function.
33008         (verify_all_sra_access_forests): Likewise.
33009         (create_artificial_child_access): Set parent.
33010         (analyze_all_variable_accesses): Call the verifier.
33012 2020-01-28  Jan Hubicka  <hubicka@ucw.cz>
33014         * cgraph.c (cgraph_edge::resolve_speculation): Only lookup direct edge
33015         if called on indirect edge.
33016         (cgraph_edge::redirect_call_stmt_to_callee): Lookup indirect edge of
33017         speculative call if needed.
33019 2020-01-29  Richard Biener  <rguenther@suse.de>
33021         PR tree-optimization/93428
33022         * tree-vect-slp.c (vect_build_slp_tree_2): Compute the load
33023         permutation when the load node is created.
33024         (vect_analyze_slp_instance): Re-use it here.
33026 2020-01-28  Jan Hubicka  <hubicka@ucw.cz>
33028         * ipa-prop.c (update_indirect_edges_after_inlining): Fix warning.
33030 2020-01-28  Vladimir Makarov  <vmakarov@redhat.com>
33032         PR rtl-optimization/93272
33033         * ira-lives.c (process_out_of_region_eh_regs): New function.
33034         (process_bb_node_lives): Call it.
33036 2020-01-28  Jan Hubicka  <hubicka@ucw.cz>
33038         * coverage.c (read_counts_file): Make error message lowercase.
33040 2020-01-28  Jan Hubicka  <hubicka@ucw.cz>
33042         * profile-count.c (profile_quality_display_names): Fix ordering.
33044 2020-01-28  Jan Hubicka  <hubicka@ucw.cz>
33046         PR lto/93318    
33047         * cgraph.c (cgraph_add_edge_to_call_site_hash): Update call site
33048         hash only when edge is first within the sequence.
33049         (cgraph_edge::set_call_stmt): Update handling of speculative calls.
33050         (symbol_table::create_edge): Do not set target_prob.
33051         (cgraph_edge::remove_caller): Watch for speculative calls when updating
33052         the call site hash.
33053         (cgraph_edge::make_speculative): Drop target_prob parameter.
33054         (cgraph_edge::speculative_call_info): Remove.
33055         (cgraph_edge::first_speculative_call_target): New member function.
33056         (update_call_stmt_hash_for_removing_direct_edge): New function.
33057         (cgraph_edge::resolve_speculation): Rewrite to new API.
33058         (cgraph_edge::speculative_call_for_target): New member function.
33059         (cgraph_edge::make_direct): Rewrite to new API; fix handling of
33060         multiple speculation targets.
33061         (cgraph_edge::redirect_call_stmt_to_callee): Likewise; fix updating
33062         of profile.
33063         (verify_speculative_call): Verify that targets form an interval.
33064         * cgraph.h (cgraph_edge::speculative_call_info): Remove.
33065         (cgraph_edge::first_speculative_call_target): New member function.
33066         (cgraph_edge::next_speculative_call_target): New member function.
33067         (cgraph_edge::speculative_call_target_ref): New member function.
33068         (cgraph_edge;:speculative_call_indirect_edge): New member funtion.
33069         (cgraph_edge): Remove target_prob.
33070         * cgraphclones.c (cgraph_node::set_call_stmt_including_clones):
33071         Fix handling of speculative calls.
33072         * ipa-devirt.c (ipa_devirt): Fix handling of speculative cals.
33073         * ipa-fnsummary.c (analyze_function_body): Likewise.
33074         * ipa-inline.c (speculation_useful_p): Use new speculative call API.
33075         * ipa-profile.c (dump_histogram): Fix formating.
33076         (ipa_profile_generate_summary): Watch for overflows.
33077         (ipa_profile): Do not require probablity to be 1/2; update to new API.
33078         * ipa-prop.c (ipa_make_edge_direct_to_target): Update to new API.
33079         (update_indirect_edges_after_inlining): Update to new API.
33080         * ipa-utils.c (ipa_merge_profiles): Rewrite merging of speculative call
33081         profiles.
33082         * profile-count.h: (profile_probability::adjusted): New.
33083         * tree-inline.c (copy_bb): Update to new speculative call API; fix
33084         updating of profile.
33085         * value-prof.c (gimple_ic_transform): Rename to ...
33086         (dump_ic_profile): ... this one; update dumping.
33087         (stream_in_histogram_value): Fix formating.
33088         (gimple_value_profile_transformations): Update.
33090 2020-01-28  H.J. Lu  <hongjiu.lu@intel.com>
33092         PR target/91461
33093         * config/i386/i386.md (*movoi_internal_avx): Remove
33094         TARGET_SSE_TYPELESS_STORES check.
33095         (*movti_internal): Prefer TARGET_AVX over
33096         TARGET_SSE_TYPELESS_STORES.
33097         (*movtf_internal): Likewise.
33098         * config/i386/sse.md (mov<mode>_internal): Prefer TARGET_AVX over
33099         TARGET_SSE_TYPELESS_STORES.  Remove "<MODE_SIZE> == 16" check
33100         from TARGET_SSE_TYPELESS_STORES.
33102 2020-01-28  David Malcolm  <dmalcolm@redhat.com>
33104         * diagnostic-core.h (warning_at): Rename overload to...
33105         (warning_meta): ...this.
33106         (emit_diagnostic_valist): Delete decl of overload taking
33107         diagnostic_metadata.
33108         * diagnostic.c (emit_diagnostic_valist): Likewise for defn.
33109         (warning_at): Rename overload taking diagnostic_metadata to...
33110         (warning_meta): ...this.
33112 2020-01-28  Richard Biener  <rguenther@suse.de>
33114         PR tree-optimization/93439
33115         * tree-parloops.c (create_loop_fn): Move clique bookkeeping...
33116         * tree-cfg.c (move_sese_region_to_fn): ... here.
33117         (verify_types_in_gimple_reference): Verify used cliques are
33118         tracked.
33120 2020-01-28  H.J. Lu  <hongjiu.lu@intel.com>
33122         PR target/91399
33123         * config/i386/i386-options.c (set_ix86_tune_features): Add an
33124         argument of a pointer to struct gcc_options and pass it to
33125         parse_mtune_ctrl_str.
33126         (ix86_function_specific_restore): Pass opts to
33127         set_ix86_tune_features.
33128         (ix86_option_override_internal): Likewise.
33129         (parse_mtune_ctrl_str): Add an argument of a pointer to struct
33130         gcc_options and use it for x_ix86_tune_ctrl_string.
33132 2020-01-28  Richard Sandiford  <richard.sandiford@arm.com>
33134         PR rtl-optimization/87763
33135         * simplify-rtx.c (simplify_truncation): Extend sign/zero_extract
33136         simplification to handle subregs as well as bare regs.
33137         * config/i386/i386.md (*testqi_ext_3): Match QI extracts too.
33139 2020-01-28  Richard Sandiford  <richard.sandiford@arm.com>
33141         * tree-vect-loop.c (vectorizable_reduction): Fail gracefully
33142         for reduction chains that (now) include a call.
33144 2020-01-28  Richard Sandiford  <richard.sandiford@arm.com>
33146         PR tree-optimization/92822
33147         * tree-ssa-forwprop.c (simplify_vector_constructor): When filling
33148         out the don't-care elements of a vector whose significant elements
33149         are duplicates, make the don't-care elements duplicates too.
33151 2020-01-28  Richard Sandiford  <richard.sandiford@arm.com>
33153         PR tree-optimization/93434
33154         * tree-predcom.c (split_data_refs_to_components): Record which
33155         components have had aliasing loads removed.  Prevent store-store
33156         commoning for all such components.
33158 2020-01-28  Jakub Jelinek  <jakub@redhat.com>
33160         PR target/93418
33161         * config/i386/i386.c (ix86_fold_builtin) <do_shift>: If mask is not
33162         -1 or is_vshift is true, use new_vector with number of elts npatterns
33163         rather than new_unary_operation.
33165         PR tree-optimization/93454
33166         * gimple-fold.c (fold_array_ctor_reference): Perform
33167         elt_size.to_uhwi () just once, instead of calling it in every
33168         iteration.  Punt if that value is above size of the temporary
33169         buffer.  Decrease third native_encode_expr argument when
33170         bufoff + elt_sz is above size of buf.
33172 2020-01-27  Joseph Myers  <joseph@codesourcery.com>
33174         * config/mips/mips.c (mips_declare_object_name)
33175         [USE_GNU_UNIQUE_OBJECT]: Support use of gnu_unique_object.
33177 2020-01-27  Martin Liska  <mliska@suse.cz>
33179         PR gcov-profile/93403
33180         * tree-profile.c (gimple_init_gcov_profiler): Generate
33181         both __gcov_indirect_call_profiler_v4 and
33182         __gcov_indirect_call_profiler_v4_atomic.
33184 2020-01-27  Richard Sandiford  <richard.sandiford@arm.com>
33186         PR target/92822
33187         * config/aarch64/aarch64-simd.md (aarch64_get_half<mode>): New
33188         expander.
33189         (@aarch64_split_simd_mov<mode>): Use it.
33190         (aarch64_simd_mov_from_<mode>low): Add a GPR alternative.
33191         Leave the vec_extract patterns to handle 2-element vectors.
33192         (aarch64_simd_mov_from_<mode>high): Likewise.
33193         (vec_extract<VQMOV_NO2E:mode><Vhalf>): New expander.
33194         (vec_extractv2dfv1df): Likewise.
33196 2020-01-27  Richard Sandiford  <richard.sandiford@arm.com>
33198         * config/aarch64/aarch64.c (aarch64_if_then_else_costs): Match
33199         jump conditions for *compare_condjump<GPI:mode>.
33201 2020-01-27  David Malcolm  <dmalcolm@redhat.com>
33203         PR analyzer/93276
33204         * digraph.cc (test_edge::test_edge): Specify template for base
33205         class initializer.
33207 2020-01-27  Claudiu Zissulescu  <claziss@synopsys.com>
33209         * config/arc/arc.c (arc_rtx_costs): Update mul64 cost.
33211 2020-01-27  Claudiu Zissulescu  <claziss@synopsys.com>
33213         * config/arc/arc-protos.h (gen_mlo): Remove.
33214         (gen_mhi): Likewise.
33215         * config/arc/arc.c (AUX_MULHI): Define.
33216         (arc_must_save_reister): Special handling for r58/59.
33217         (arc_compute_frame_size): Consider mlo/mhi registers.
33218         (arc_save_callee_saves): Emit fp/sp move only when emit_move
33219         paramter is true.
33220         (arc_conditional_register_usage): Remove TARGET_BIG_ENDIAN from
33221         mlo/mhi name selection.
33222         (arc_restore_callee_saves): Don't early restore blink when ISR.
33223         (arc_expand_prologue): Add mlo/mhi saving.
33224         (arc_expand_epilogue): Add mlo/mhi restoring.
33225         (gen_mlo): Remove.
33226         (gen_mhi): Remove.
33227         * config/arc/arc.h (DBX_REGISTER_NUMBER): Correct register
33228         numbering when MUL64 option is used.
33229         (DWARF2_FRAME_REG_OUT): Define.
33230         * config/arc/arc.md (arc600_stall): New pattern.
33231         (VUNSPEC_ARC_ARC600_STALL): Define.
33232         (mulsi64): Use correct mlo/mhi registers.
33233         (mulsi_600): Clean it up.
33234         * config/arc/predicates.md (mlo_operand): Remove any dependency on
33235         TARGET_BIG_ENDIAN.
33236         (mhi_operand): Likewise.
33238 2020-01-27  Claudiu Zissulescu  <claziss@synopsys.com>
33239             Petro Karashchenko  <petro.karashchenko@ring.com>
33241         * config/arc/arc.c (arc_is_uncached_mem_p): Check struct
33242         attributes if needed.
33243         (prepare_move_operands): Generate special unspec instruction for
33244         direct access.
33245         (arc_isuncached_mem_p): Propagate uncached attribute to each
33246         structure member.
33247         * config/arc/arc.md (VUNSPEC_ARC_LDDI): Define.
33248         (VUNSPEC_ARC_STDI): Likewise.
33249         (ALLI): New mode iterator.
33250         (mALLI): New mode attribute.
33251         (lddi): New instruction pattern.
33252         (stdi): Likewise.
33253         (stdidi_split): Split instruction for architectures which are not
33254         supporting ll64 option.
33255         (lddidi_split): Likewise.
33257 2020-01-27  Richard Sandiford  <richard.sandiford@arm.com>
33259         PR rtl-optimization/92989
33260         * lra-lives.c (process_bb_lives): Update the live-in set before
33261         processing additional clobbers.
33263 2020-01-27  Richard Sandiford  <richard.sandiford@arm.com>
33265         PR rtl-optimization/93170
33266         * cselib.c (cselib_invalidate_regno_val): New function, split out
33267         from...
33268         (cselib_invalidate_regno): ...here.
33269         (cselib_invalidated_by_call_p): New function.
33270         (cselib_process_insn): Iterate over all the hard-register entries in
33271         REG_VALUES and invalidate any that cross call-clobbered registers.
33273 2020-01-27  Richard Sandiford  <richard.sandiford@arm.com>
33275         * dojump.c (split_comparison): Use HONOR_NANS rather than
33276         HONOR_SNANS when splitting LTGT.
33278 2020-01-27  Martin Liska  <mliska@suse.cz>
33280         PR driver/91220
33281         * opts.c (print_filtered_help): Exclude language-specific
33282         options from --help=common unless enabled in all FEs.
33284 2020-01-27  Martin Liska  <mliska@suse.cz>
33286         * opts.c (print_help): Exclude params from
33287         all except --help=param.
33289 2020-01-27  Martin Liska  <mliska@suse.cz>
33291         PR target/93274
33292         * config/i386/i386-features.c (make_resolver_func):
33293         Align the code with ppc64 target implementation.
33294         Do not generate a unique name for resolver function.
33296 2020-01-27  Richard Biener  <rguenther@suse.de>
33298         PR tree-optimization/93397
33299         * tree-vect-slp.c (vect_analyze_slp_instance): Delay
33300         converted reduction chain SLP graph adjustment.
33302 2020-01-26  Marek Polacek  <polacek@redhat.com>
33304         PR sanitizer/93436
33305         * sanopt.c (sanitize_rewrite_addressable_params): Avoid crash on
33306         null DECL_NAME.
33308 2020-01-26  Jason Merrill  <jason@redhat.com>
33310         PR c++/92601
33311         * tree.c (verify_type_variant): Only verify TYPE_NEEDS_CONSTRUCTING
33312         of complete types.
33314 2020-01-26  Darius Galis  <darius.galis@cyberthorstudios.com>
33316         * config/rx/rx.md (setmemsi): Added rx_allow_string_insns constraint
33317         (rx_setmem): Likewise.
33319 2020-01-26  Jakub Jelinek  <jakub@redhat.com>
33321         PR target/93412
33322         * config/i386/i386.md (*addv<dwi>4_doubleword, *subv<dwi>4_doubleword):
33323         Use nonimmediate_operand instead of x86_64_hilo_general_operand and
33324         drop <di> from constraint of last operand.
33326         PR target/93430
33327         * config/i386/sse.md (*avx_vperm_broadcast_<mode>): Disallow for
33328         TARGET_AVX2 and V4DFmode not in the split condition, but in the
33329         pattern condition, though allow { 0, 0, 0, 0 } broadcast always.
33331 2020-01-25  Feng Xue  <fxue@os.amperecomputing.com>
33333         PR ipa/93166
33334         * ipa-cp.c (get_info_about_necessary_edges): Remove value
33335         check assertion.
33337 2020-01-24  Jeff Law  <law@redhat.com>
33339         PR tree-optimization/92788
33340         * tree-ssa-threadedge.c (thread_across_edge): Check EDGE_COMPLEX
33341         not EDGE_ABNORMAL.
33343 2020-01-24  Jakub Jelinek  <jakub@redhat.com>
33345         PR target/93395
33346         * config/i386/sse.md (*avx_vperm_broadcast_v4sf,
33347         *avx_vperm_broadcast_<mode>,
33348         <sse2_avx_avx512f>_vpermil<mode><mask_name>,
33349         *<sse2_avx_avx512f>_vpermilp<mode><mask_name>):
33350         Move before avx2_perm<mode>/avx512f_perm<mode>.
33352         PR target/93376
33353         * simplify-rtx.c (simplify_const_unary_operation,
33354         simplify_const_binary_operation): Punt for mode precision above
33355         MAX_BITSIZE_MODE_ANY_INT.
33357 2020-01-24  Andrew Pinski  <apinski@marvell.com>
33359         * config/arm/aarch-cost-tables.h (cortexa57_extra_costs): Change
33360         alu.shift_reg to 0.
33362 2020-01-24  Jeff Law  <law@redhat.com>
33364         PR target/13721
33365         * config/h8300/h8300.c (h8300_print_operand): Only call byte_reg
33366         for REGs.  Call output_operand_lossage to get more reasonable
33367         diagnostics.
33369 2020-01-24  Andrew Stubbs  <ams@codesourcery.com>
33371         * config/gcn/gcn-valu.md (vec_cmp<mode>di): Use
33372         gcn_fp_compare_operator.
33373         (vec_cmpu<mode>di): Use gcn_compare_operator.
33374         (vec_cmp<u>v64qidi): Use gcn_compare_operator.
33375         (vec_cmp<mode>di_exec): Use gcn_fp_compare_operator.
33376         (vec_cmpu<mode>di_exec): Use gcn_compare_operator.
33377         (vec_cmp<u>v64qidi_exec): Use gcn_compare_operator.
33378         (vec_cmp<mode>di_dup): Use gcn_fp_compare_operator.
33379         (vec_cmp<mode>di_dup_exec): Use gcn_fp_compare_operator.
33380         (vcond<VEC_ALLREG_MODE:mode><VEC_ALLREG_ALT:mode>): Use
33381         gcn_fp_compare_operator.
33382         (vcond<VEC_ALLREG_MODE:mode><VEC_ALLREG_ALT:mode>_exec): Use
33383         gcn_fp_compare_operator.
33384         (vcondu<VEC_ALLREG_MODE:mode><VEC_ALLREG_INT_MODE:mode>): Use
33385         gcn_fp_compare_operator.
33386         (vcondu<VEC_ALLREG_MODE:mode><VEC_ALLREG_INT_MODE:mode>_exec): Use
33387         gcn_fp_compare_operator.
33389 2020-01-24  Maciej W. Rozycki  <macro@wdc.com>
33391         * doc/install.texi (Cross-Compiler-Specific Options): Document
33392         `--with-toolexeclibdir' option.
33394 2020-01-24  Hans-Peter Nilsson  <hp@axis.com>
33396         * target.def (flags_regnum): Also mention effect on delay slot filling.
33397         * doc/tm.texi: Regenerate.
33399 2020-01-23  Jeff Law  <law@redhat.com>
33401         PR translation/90162
33402         * config/h8300/h8300.c (h8300_option_override): Fix diagnostic text.
33404 2020-01-23  Mikael Tillenius  <mti-1@tillenius.com>
33406         PR target/92269
33407         * config/h8300/h8300.h (FUNCTION_PROFILER): Fix emission of
33408         profiling label
33410 2020-01-23  Jakub Jelinek  <jakub@redhat.com>
33412         PR rtl-optimization/93402
33413         * postreload.c (reload_combine_recognize_pattern): Don't try to adjust
33414         USE insns.
33416 2020-01-23  Dragan Mladjenovic  <dmladjenovic@wavecomp.com>
33418         * config.in: Regenerated.
33419         * config/mips/linux.h (NEED_INDICATE_EXEC_STACK): Define to 1
33420         for TARGET_LIBC_GNUSTACK.
33421         * configure: Regenerated.
33422         * configure.ac: Define TARGET_LIBC_GNUSTACK if glibc version is
33423         found to be 2.31 or greater.
33425 2020-01-23  Dragan Mladjenovic  <dmladjenovic@wavecomp.com>
33427         * config/mips/linux.h (NEED_INDICATE_EXEC_STACK): Define to
33428         TARGET_SOFT_FLOAT.
33429         * config/mips/mips.c (TARGET_ASM_FILE_END): Define to ...
33430         (mips_asm_file_end): New function. Delegate to
33431         file_end_indicate_exec_stack if NEED_INDICATE_EXEC_STACK is true.
33432         * config/mips/mips.h (NEED_INDICATE_EXEC_STACK): Define to 0.
33434 2020-01-23  Jakub Jelinek  <jakub@redhat.com>
33436         PR target/93376
33437         * config/i386/i386-modes.def (POImode): New mode.
33438         (MAX_BITSIZE_MODE_ANY_INT): Change from 128 to 160.
33439         * config/i386/i386.md (DPWI): New mode attribute.
33440         (addv<mode>4, subv<mode>4): Use <DPWI> instead of <DWI>.
33441         (QWI): Rename to...
33442         (QPWI): ... this.  Use POI instead of OI for TImode.
33443         (*addv<dwi>4_doubleword, *addv<dwi>4_doubleword_1,
33444         *subv<dwi>4_doubleword, *subv<dwi>4_doubleword_1): Use <QPWI>
33445         instead of <QWI>.
33447 2020-01-23  Richard Sandiford  <richard.sandiford@arm.com>
33449         PR target/93341
33450         * config/aarch64/aarch64.md (UNSPEC_SPECULATION_TRACKER_REV): New
33451         unspec.
33452         (speculation_tracker_rev): New pattern.
33453         * config/aarch64/aarch64-speculation.cc (aarch64_do_track_speculation):
33454         Use speculation_tracker_rev to track the inverse condition.
33456 2020-01-23  Richard Biener  <rguenther@suse.de>
33458         PR tree-optimization/93381
33459         * tree-ssa-sccvn.c (vn_walk_cb_data::push_partial_def): Take
33460         alias-set of the def as argument and record the first one.
33461         (vn_walk_cb_data::first_set): New member.
33462         (vn_reference_lookup_3): Pass the alias-set of the current def
33463         to push_partial_def.  Fix alias-set used in the aggregate copy
33464         case.
33465         (vn_reference_lookup): Consistently set *last_vuse_ptr.
33466         * real.c (clear_significand_below): Fix out-of-bound access.
33468 2020-01-23  Jakub Jelinek  <jakub@redhat.com>
33470         PR target/93346
33471         * config/i386/i386.md (*bmi2_bzhi_<mode>3_2, *bmi2_bzhi_<mode>3_3):
33472         New define_insn patterns.
33474 2020-01-23  Richard Sandiford  <richard.sandiford@arm.com>
33476         * doc/sourcebuild.texi (check-function-bodies): Add an
33477         optional target/xfail selector.
33479 2020-01-23  Richard Sandiford  <richard.sandiford@arm.com>
33481         PR rtl-optimization/93124
33482         * auto-inc-dec.c (merge_in_block): Don't add auto inc/decs to
33483         bare USE and CLOBBER insns.
33485 2020-01-22  Andrew Pinski  <apinski@marvell.com>
33487         * config/arc/arc.c (output_short_suffix): Check insn for nullness.
33489 2020-01-22  David Malcolm  <dmalcolm@redhat.com>
33491         PR analyzer/93307
33492         * gdbinit.in (break-on-saved-diagnostic): Update for move of
33493         diagnostic_manager into "ana" namespace.
33494         * selftest-run-tests.c (selftest::run_tests): Update for move of
33495         selftest::run_analyzer_selftests to
33496         ana::selftest::run_analyzer_selftests.
33498 2020-01-22  Richard Sandiford  <richard.sandiford@arm.com>
33500         * cfgexpand.c (union_stack_vars): Update the size.
33502 2020-01-22  Richard Biener  <rguenther@suse.de>
33504         PR tree-optimization/93381
33505         * tree-ssa-structalias.c (find_func_aliases): Assume offsetting
33506         throughout, handle all conversions the same.
33508 2020-01-22  Jakub Jelinek  <jakub@redhat.com>
33510         PR target/93335
33511         * config/aarch64/aarch64.c (aarch64_expand_subvti): Only use
33512         gen_subdi3_compare1_imm if low_in2 satisfies aarch64_plus_immediate
33513         predicate, not whenever it is CONST_INT.  Otherwise, force_reg it.
33514         Call force_reg on high_in2 unconditionally.
33516 2020-01-22  Martin Liska  <mliska@suse.cz>
33518         PR tree-optimization/92924
33519         * profile.c (compute_value_histograms): Divide
33520         all counter values.
33522 2020-01-22  Jakub Jelinek  <jakub@redhat.com>
33524         PR target/91298
33525         * output.h (assemble_name_resolve): Declare.
33526         * varasm.c (assemble_name_resolve): New function.
33527         (assemble_name): Use it.
33528         * config/i386/i386.h (ASM_OUTPUT_SYMBOL_REF): Define.
33530 2020-01-22  Joseph Myers  <joseph@codesourcery.com>
33532         * doc/sourcebuild.texi (Texinfo Manuals, Front End): Refer to
33533         update_web_docs_git instead of update_web_docs_svn.
33535 2020-01-21  Andrew Pinski  <apinski@marvell.com>
33537         PR target/9311
33538         * config/aarch64/aarch64.md (tlsgd_small_<mode>): Have operand 0
33539         as PTR mode. Have operand 1 as being modeless, it can be P mode.
33540         (*tlsgd_small_<mode>): Likewise.
33541         * config/aarch64/aarch64.c (aarch64_load_symref_appropriately)
33542         <case SYMBOL_SMALL_TLSGD>: Call gen_tlsgd_small_* with a ptr_mode
33543         register.  Convert that register back to dest using convert_mode.
33545 2020-01-21  Jim Wilson  <jimw@sifive.com>
33547         * config/riscv/riscv-sr.c (riscv_sr_match_prologue): Use INTVAL
33548         instead of XINT.
33550 2020-01-21  H.J. Lu  <hongjiu.lu@intel.com>
33551             Uros Bizjak    <ubizjak@gmail.com>
33553         PR target/93319
33554         * config/i386/i386.c (ix86_tls_module_base): Replace Pmode
33555         with ptr_mode.
33556         (legitimize_tls_address): Do GNU2 TLS address computation in
33557         ptr_mode and zero-extend result to Pmode.
33558         *  config/i386/i386.md (@tls_dynamic_gnu2_64_<mode>): Replace
33559         :P with :PTR and Pmode with ptr_mode.
33560         (*tls_dynamic_gnu2_lea_64_<mode>): Likewise.
33561         (*tls_dynamic_gnu2_call_64_<mode>): Likewise.
33562         (*tls_dynamic_gnu2_combine_64_<mode>): Likewise.
33564 2020-01-21  Jakub Jelinek  <jakub@redhat.com>
33566         PR target/93333
33567         * config/riscv/riscv.c (riscv_rtx_costs) <case ZERO_EXTRACT>: Verify
33568         the last two operands are CONST_INT_P before using them as such.
33570 2020-01-21  Richard Sandiford  <richard.sandiford@arm.com>
33572         * config/aarch64/aarch64-sve-builtins.def: Use get_typenode_from_name
33573         to get the integer element types.
33575 2020-01-21  Richard Sandiford  <richard.sandiford@arm.com>
33577         * config/aarch64/aarch64-sve-builtins.h
33578         (function_expander::convert_to_pmode): Declare.
33579         * config/aarch64/aarch64-sve-builtins.cc
33580         (function_expander::convert_to_pmode): New function.
33581         (function_expander::get_contiguous_base): Use it.
33582         (function_expander::prepare_gather_address_operands): Likewise.
33583         * config/aarch64/aarch64-sve-builtins-sve2.cc
33584         (svwhilerw_svwhilewr_impl::expand): Likewise.
33586 2020-01-21  Szabolcs Nagy  <szabolcs.nagy@arm.com>
33588         PR target/92424
33589         * config/aarch64/aarch64.c (aarch64_declare_function_name): Set
33590         cfun->machine->label_is_assembled.
33591         (aarch64_print_patchable_function_entry): New.
33592         (TARGET_ASM_PRINT_PATCHABLE_FUNCTION_ENTRY): Define.
33593         * config/aarch64/aarch64.h (struct machine_function): New field,
33594         label_is_assembled.
33596 2020-01-21  David Malcolm  <dmalcolm@redhat.com>
33598         PR ipa/93315
33599         * ipa-profile.c (ipa_profile): Delete call_sums and set it to
33600         NULL on exit.
33602 2020-01-18  Jan Hubicka  <hubicka@ucw.cz>
33604         PR lto/93318    
33605         * cgraph.c (cgraph_edge::resolve_speculation,
33606         cgraph_edge::redirect_call_stmt_to_callee): Fix update of
33607         call_stmt_site_hash.
33609 2020-01-21  Martin Liska  <mliska@suse.cz>
33611         * config/rs6000/rs6000.c (common_mode_defined): Remove
33612         unused variable.
33614 2020-01-21  Richard Biener  <rguenther@suse.de>
33616         PR tree-optimization/92328
33617         * tree-ssa-sccvn.c (vn_reference_lookup_3): Preserve
33618         type when value-numbering same-sized store by inserting a
33619         VIEW_CONVERT_EXPR.
33620         (eliminate_dom_walker::eliminate_stmt): When eliminating
33621         a redundant store handle bit-reinterpretation of the same value.
33623 2020-01-21  Andrew Pinski  <apinski@marvel.com>
33625         PR tree-opt/93321
33626         * tree-into-ssa.c (prepare_block_for_update_1): Split out
33627         from ...
33628         (prepare_block_for_update): This.  Use a worklist instead of
33629         recursing.
33631 2020-01-21  Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
33633         * config/arm/arm.c (clear_operation_p):
33634         Initialise last_regno, skip first iteration
33635         based on the first_set value and use ints instead
33636         of the unnecessary HOST_WIDE_INTs.
33638 2020-01-21  Jakub Jelinek  <jakub@redhat.com>
33640         PR target/93073
33641         * config/rs6000/rs6000.c (rs6000_emit_cmove): If using fsel, punt for
33642         compare_mode other than SFmode or DFmode.
33644 2020-01-21  Kito Cheng  <kito.cheng@sifive.com>
33646         PR target/93304
33647         * config/riscv/riscv-protos.h (riscv_hard_regno_rename_ok): New.
33648         * config/riscv/riscv.c (riscv_hard_regno_rename_ok): New.
33649         * config/riscv/riscv.h (HARD_REGNO_RENAME_OK): Defined.
33651 2020-01-20  Wilco Dijkstra  <wdijkstr@arm.com>
33653         * config/aarch64/aarch64.c (neoversen1_tunings): Set jump_align to 4.
33655 2020-01-20  Andrew Pinski  <apinski@marvell.com>
33657         PR middle-end/93242
33658         * targhooks.c (default_print_patchable_function_entry): Use
33659         output_asm_insn to emit the nop instruction.
33661 2020-01-20  Fangrui Song  <maskray@google.com>
33663         PR middle-end/93194
33664         * targhooks.c (default_print_patchable_function_entry): Align to
33665         POINTER_SIZE.
33667 2020-01-20  H.J. Lu  <hongjiu.lu@intel.com>
33669         PR target/93319
33670         * config/i386/i386.c (legitimize_tls_address): Pass Pmode to
33671         gen_tls_dynamic_gnu2_64.  Compute GNU2 TLS address in ptr_mode.
33672         * config/i386/i386.md (tls_dynamic_gnu2_64): Renamed to ...
33673         (@tls_dynamic_gnu2_64_<mode>): This.  Replace DI with P.
33674         (*tls_dynamic_gnu2_lea_64): Renamed to ...
33675         (*tls_dynamic_gnu2_lea_64_<mode>): This.  Replace DI with P.
33676         Remove the {q} suffix from lea.
33677         (*tls_dynamic_gnu2_call_64): Renamed to ...
33678         (*tls_dynamic_gnu2_call_64_<mode>): This.  Replace DI with P.
33679         (*tls_dynamic_gnu2_combine_64): Renamed to ...
33680         (*tls_dynamic_gnu2_combine_64_<mode>): This.  Replace DI with P.
33681         Pass Pmode to gen_tls_dynamic_gnu2_64.
33683 2020-01-20  Wilco Dijkstra  <wdijkstr@arm.com>
33685         * config/aarch64/aarch64.h (SLOW_BYTE_ACCESS): Set to 1.
33687 2020-01-20  Richard Sandiford  <richard.sandiford@arm.com>
33689         * config/aarch64/aarch64-sve-builtins-base.cc
33690         (svld1ro_impl::memory_vector_mode): Remove parameter name.
33692 2020-01-20  Richard Biener  <rguenther@suse.de>
33694         PR debug/92763
33695         * dwarf2out.c (prune_unused_types): Unconditionally mark
33696         called function DIEs.
33698 2020-01-20  Martin Liska  <mliska@suse.cz>
33700         PR tree-optimization/93199
33701         * tree-eh.c (struct leh_state): Add
33702         new field outer_non_cleanup.
33703         (cleanup_is_dead_in): Pass leh_state instead
33704         of eh_region.  Add a checking that state->outer_non_cleanup
33705         points to outer non-clean up region.
33706         (lower_try_finally): Record outer_non_cleanup
33707         for this_state.
33708         (lower_catch): Likewise.
33709         (lower_eh_filter): Likewise.
33710         (lower_eh_must_not_throw): Likewise.
33711         (lower_cleanup): Likewise.
33713 2020-01-20  Richard Biener  <rguenther@suse.de>
33715         PR tree-optimization/93094
33716         * tree-vectorizer.h (vect_loop_versioning): Adjust.
33717         (vect_transform_loop): Likewise.
33718         * tree-vectorizer.c (try_vectorize_loop_1): Pass down
33719         loop_vectorized_call to vect_transform_loop.
33720         * tree-vect-loop.c (vect_transform_loop): Pass down
33721         loop_vectorized_call to vect_loop_versioning.
33722         * tree-vect-loop-manip.c (vect_loop_versioning): Use
33723         the earlier discovered loop_vectorized_call.
33725 2020-01-19  Eric S. Raymond <esr@thyrsus.com>
33727         * doc/contribute.texi: Update for SVN -> Git transition.
33728         * doc/install.texi: Likewise.
33730 2020-01-18  Jan Hubicka  <hubicka@ucw.cz>
33732         PR lto/93318
33733         * cgraph.c (cgraph_edge::make_speculative): Increase number of
33734         speculative targets.
33735         (verify_speculative_call): New function
33736         (cgraph_node::verify_node): Use it.
33737         * ipa-profile.c (ipa_profile): Fix formating; do not set number of
33738         speculations.
33740 2020-01-18  Jan Hubicka  <hubicka@ucw.cz>
33742         PR lto/93318
33743         * cgraph.c (cgraph_edge::resolve_speculation): Fix foramting.
33744         (cgraph_edge::make_direct): Remove all indirect targets.
33745         (cgraph_edge::redirect_call_stmt_to_callee): Use make_direct..
33746         (cgraph_node::verify_node): Verify that only one call_stmt or
33747         lto_stmt_uid is set.
33748         * cgraphclones.c (cgraph_edge::clone): Set only one call_stmt or
33749         lto_stmt_uid.
33750         * lto-cgraph.c (lto_output_edge): Simplify streaming of stmt.
33751         (lto_output_ref): Simplify streaming of stmt.
33752         * lto-streamer-in.c (fixup_call_stmt_edges_1): Clear lto_stmt_uid.
33754 2020-01-18  Tamar Christina  <tamar.christina@arm.com>
33756         * config/aarch64/aarch64-sve-builtins-base.cc (memory_vector_mode):
33757         Mark parameter unused.
33759 2020-01-18  Hans-Peter Nilsson  <hp@axis.com>
33761         * config.gcc <obsolete targets>: Add crisv32-*-* and cris-*-linux*
33763 2019-01-18  Gerald Pfeifer  <gerald@pfeifer.com>
33765         * varpool.c (ctor_useable_for_folding_p): Fix grammar.
33767 2020-01-18  Iain Sandoe  <iain@sandoe.co.uk>
33769         * Makefile.in: Add coroutine-passes.o.
33770         * builtin-types.def (BT_CONST_SIZE): New.
33771         (BT_FN_BOOL_PTR): New.
33772         (BT_FN_PTR_PTR_CONST_SIZE_BOOL): New.
33773         * builtins.def (DEF_COROUTINE_BUILTIN): New.
33774         * coroutine-builtins.def: New file.
33775         * coroutine-passes.cc: New file.
33776         * function.h (struct GTY function): Add a bit to indicate that the
33777         function is a coroutine component.
33778         * internal-fn.c (expand_CO_FRAME): New.
33779         (expand_CO_YIELD): New.
33780         (expand_CO_SUSPN): New.
33781         (expand_CO_ACTOR): New.
33782         * internal-fn.def (CO_ACTOR): New.
33783         (CO_YIELD): New.
33784         (CO_SUSPN): New.
33785         (CO_FRAME): New.
33786         * passes.def: Add pass_coroutine_lower_builtins,
33787         pass_coroutine_early_expand_ifns.
33788         * tree-pass.h (make_pass_coroutine_lower_builtins): New.
33789         (make_pass_coroutine_early_expand_ifns): New.
33790         * doc/invoke.texi: Document the fcoroutines command line
33791         switch.
33793 2020-01-18  Jakub Jelinek  <jakub@redhat.com>
33795         * config/arm/vfp.md (*clear_vfp_multiple): Remove unused variable.
33797         PR target/93312
33798         * config/arm/arm.c (clear_operation_p): Don't use REGNO until
33799         after checking the argument is a REG.  Don't use REGNO (reg)
33800         again to set last_regno, reuse regno variable instead.
33802 2020-01-17  David Malcolm  <dmalcolm@redhat.com>
33804         * doc/analyzer.texi (Limitations): Add note about NaN.
33806 2020-01-17  Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
33807             Sudakshina Das  <sudi.das@arm.com>
33809         * config/arm/arm.md (ashldi3): Generate thumb2_lsll for both reg
33810         and valid immediate.
33811         (ashrdi3): Generate thumb2_asrl for both reg and valid immediate.
33812         (lshrdi3): Generate thumb2_lsrl for valid immediates.
33813         * config/arm/constraints.md (Pg): New.
33814         * config/arm/predicates.md (long_shift_imm): New.
33815         (arm_reg_or_long_shift_imm): Likewise.
33816         * config/arm/thumb2.md (thumb2_asrl): New immediate alternative.
33817         (thumb2_lsll): Likewise.
33818         (thumb2_lsrl): New.
33820 2020-01-17  Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
33821             Sudakshina Das  <sudi.das@arm.com>
33823         * config/arm/arm.md (ashldi3): Generate thumb2_lsll for TARGET_HAVE_MVE.
33824         (ashrdi3): Generate thumb2_asrl for TARGET_HAVE_MVE.
33825         * config/arm/arm.c (arm_hard_regno_mode_ok): Allocate even odd
33826         register pairs for doubleword quantities for ARMv8.1M-Mainline.
33827         * config/arm/thumb2.md (thumb2_asrl): New.
33828         (thumb2_lsll): Likewise.
33830 2020-01-17  Jakub Jelinek  <jakub@redhat.com>
33832         * config/arm/arm.c (cmse_nonsecure_call_inline_register_clear): Remove
33833         unused variable.
33835 2020-01-17  Alexander Monakov  <amonakov@ispras.ru>
33837         * gdbinit.in (help-gcc-hooks): New command.
33838         (pp, pr, prl, pt, pct, pgg, pgq, pgs, pge, pmz, ptc, pdn, ptn, pdd, prc,
33839         pi, pbm, pel, trt): Take $arg0 instead of $ if supplied. Update
33840         documentation.
33842 2020-01-17  Matthew Malcomson  <matthew.malcomson@arm.com>
33844         * config/aarch64/aarch64-sve.md (@aarch64_sve_ld1ro<mode>): Use the
33845         correct target macro.
33847 2020-01-17  Matthew Malcomson  <matthew.malcomson@arm.com>
33849         * config/aarch64/aarch64-protos.h
33850         (aarch64_sve_ld1ro_operand_p): New.
33851         * config/aarch64/aarch64-sve-builtins-base.cc
33852         (class load_replicate): New.
33853         (class svld1ro_impl): New.
33854         (class svld1rq_impl): Change to inherit from load_replicate.
33855         (svld1ro): New sve intrinsic function base.
33856         * config/aarch64/aarch64-sve-builtins-base.def (svld1ro):
33857         New DEF_SVE_FUNCTION.
33858         * config/aarch64/aarch64-sve-builtins-base.h
33859         (svld1ro): New decl.
33860         * config/aarch64/aarch64-sve-builtins.cc
33861         (function_expander::add_mem_operand): Modify assert to allow
33862         OImode.
33863         * config/aarch64/aarch64-sve.md (@aarch64_sve_ld1ro<mode>): New
33864         pattern.
33865         * config/aarch64/aarch64.c
33866         (aarch64_sve_ld1rq_operand_p): Implement in terms of ...
33867         (aarch64_sve_ld1rq_ld1ro_operand_p): This.
33868         (aarch64_sve_ld1ro_operand_p): New.
33869         * config/aarch64/aarch64.md (UNSPEC_LD1RO): New unspec.
33870         * config/aarch64/constraints.md (UOb,UOh,UOw,UOd): New.
33871         * config/aarch64/predicates.md
33872         (aarch64_sve_ld1ro_operand_{b,h,w,d}): New.
33874 2020-01-17  Matthew Malcomson  <matthew.malcomson@arm.com>
33876         * config/aarch64/aarch64-c.c (_ARM_FEATURE_MATMUL_FLOAT64):
33877         Introduce this ACLE specified predefined macro.
33878         * config/aarch64/aarch64-option-extensions.def (f64mm): New.
33879         (fp): Disabling this disables f64mm.
33880         (simd): Disabling this disables f64mm.
33881         (fp16): Disabling this disables f64mm.
33882         (sve): Disabling this disables f64mm.
33883         * config/aarch64/aarch64.h (AARCH64_FL_F64MM): New.
33884         (AARCH64_ISA_F64MM): New.
33885         (TARGET_F64MM): New.
33886         * doc/invoke.texi (f64mm): Document new option.
33888 2020-01-17  Wilco Dijkstra  <wdijkstr@arm.com>
33890         * config/aarch64/aarch64.c (generic_tunings): Add branch fusion.
33891         (neoversen1_tunings): Likewise.
33893 2020-01-17  Wilco Dijkstra  <wdijkstr@arm.com>
33895         PR target/92692
33896         * config/aarch64/aarch64.c (aarch64_split_compare_and_swap)
33897         Add assert to ensure prolog has been emitted.
33898         (aarch64_split_atomic_op): Likewise.
33899         * config/aarch64/atomics.md (aarch64_compare_and_swap<mode>)
33900         Use epilogue_completed rather than reload_completed.
33901         (aarch64_atomic_exchange<mode>): Likewise.
33902         (aarch64_atomic_<atomic_optab><mode>): Likewise.
33903         (atomic_nand<mode>): Likewise.
33904         (aarch64_atomic_fetch_<atomic_optab><mode>): Likewise.
33905         (atomic_fetch_nand<mode>): Likewise.
33906         (aarch64_atomic_<atomic_optab>_fetch<mode>): Likewise.
33907         (atomic_nand_fetch<mode>): Likewise.
33909 2020-01-17  Richard Sandiford  <richard.sandiford@arm.com>
33911         PR target/93133
33912         * config/aarch64/aarch64.h (REVERSIBLE_CC_MODE): Return false
33913         for FP modes.
33914         (REVERSE_CONDITION): Delete.
33915         * config/aarch64/iterators.md (CC_ONLY): New mode iterator.
33916         (CCFP_CCFPE): Likewise.
33917         (e): New mode attribute.
33918         * config/aarch64/aarch64.md (ccmp<GPI:mode>): Rename to...
33919         (@ccmp<CC_ONLY:mode><GPI:mode>): ...this, using CC_ONLY instead of CC.
33920         (fccmp<GPF:mode>, fccmpe<GPF:mode>): Merge into...
33921         (@ccmp<CCFP_CCFPE:mode><GPF:mode>): ...this combined pattern.
33922         (@ccmp<CC_ONLY:mode><GPI:mode>_rev): New pattern.
33923         (@ccmp<CCFP_CCFPE:mode><GPF:mode>_rev): Likewise.
33924         * config/aarch64/aarch64.c (aarch64_gen_compare_reg): Update
33925         name of generator from gen_ccmpdi to gen_ccmpccdi.
33926         (aarch64_gen_ccmp_next): Use code_for_ccmp.  If we want to reverse
33927         the previous comparison but aren't able to, use the new ccmp_rev
33928         patterns instead.
33930 2020-01-17  Richard Sandiford  <richard.sandiford@arm.com>
33932         * gimplify.c (gimplify_return_expr): Use poly_int_tree_p rather
33933         than testing directly for INTEGER_CST.
33934         (gimplify_target_expr, gimplify_omp_depend): Likewise.
33936 2020-01-17  Jakub Jelinek  <jakub@redhat.com>
33938         PR tree-optimization/93292
33939         * tree-vect-stmts.c (vectorizable_comparison): Punt also if
33940         get_vectype_for_scalar_type returns NULL.
33942 2020-01-16  Jan Hubicka  <hubicka@ucw.cz>
33944         * params.opt (-param=max-predicted-iterations): Increase range from 0.
33945         * predict.c (estimate_loops): Add 1 to param_max_predicted_iterations.
33947 2020-01-16  Jan Hubicka  <hubicka@ucw.cz>
33949         * ipa-fnsummary.c (estimate_calls_size_and_time): Fix formating of
33950         dump.
33951         * params.opt: (max-predicted-iterations): Set bounds.
33952         * predict.c (real_almost_one, real_br_prob_base,
33953         real_inv_br_prob_base, real_one_half, real_bb_freq_max): Remove.
33954         (propagate_freq): Add max_cyclic_prob parameter; cap cyclic
33955         probabilities; do not truncate to reg_br_prob_bases.
33956         (estimate_loops_at_level): Pass max_cyclic_prob.
33957         (estimate_loops): Compute max_cyclic_prob.
33958         (estimate_bb_frequencies): Do not initialize real_*; update calculation
33959         of back edge prob.
33960         * profile-count.c (profile_probability::to_sreal): New.
33961         * profile-count.h (class sreal): Move up in file.
33962         (profile_probability::to_sreal): Declare.
33964 2020-01-16  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
33966         * config/arm/arm.c
33967         (arm_invalid_conversion): New function for target hook.
33968         (arm_invalid_unary_op): New function for target hook.
33969         (arm_invalid_binary_op): New function for target hook.
33971 2020-01-16  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
33973         * config.gcc: Add arm_bf16.h.
33974         * config/arm/arm-builtins.c (arm_mangle_builtin_type): Fix comment.
33975         (arm_simd_builtin_std_type): Add BFmode.
33976         (arm_init_simd_builtin_types): Define element types for vector types.
33977         (arm_init_bf16_types): New function.
33978         (arm_init_builtins): Add arm_init_bf16_types function call.
33979         * config/arm/arm-modes.def: Add BFmode and V4BF, V8BF vector modes.
33980         * config/arm/arm-simd-builtin-types.def: Add V4BF, V8BF.
33981         * config/arm/arm.c (aapcs_vfp_sub_candidate):  Add BFmode.
33982         (arm_hard_regno_mode_ok): Add BFmode and tidy up statements.
33983         (arm_vector_mode_supported_p): Add V4BF, V8BF.
33984         (arm_mangle_type):  Add __bf16.
33985         * config/arm/arm.h: Add V4BF, V8BF to VALID_NEON_DREG_MODE, 
33986         VALID_NEON_QREG_MODE respectively. Add export arm_bf16_type_node,
33987         arm_bf16_ptr_type_node.
33988         * config/arm/arm.md: Add BFmode to movhf expand, mov pattern and
33989         define_split between ARM registers.
33990         * config/arm/arm_bf16.h: New file.
33991         * config/arm/arm_neon.h: Add arm_bf16.h and Bfloat vector types.
33992         * config/arm/iterators.md: (ANY64_BF, VDXMOV, VHFBF, HFBF, fporbf): New.
33993         (VQXMOV): Add V8BF.
33994         * config/arm/neon.md: Add BF vector types to movhf NEON move patterns.
33995         * config/arm/vfp.md: Add BFmode to movhf patterns.
33997 2020-01-16  Mihail Ionescu  <mihail.ionescu@arm.com>
33998             Andre Vieira  <andre.simoesdiasvieira@arm.com>
34000         * config/arm/arm-cpus.in (mve, mve_float): New features.
34001         (dsp, mve, mve.fp): New options.
34002         * config/arm/arm.h (TARGET_HAVE_MVE, TARGET_HAVE_MVE_FLOAT): Define.
34003         * config/arm/t-rmprofile: Map v8.1-M multilibs to v8-M.
34004         * doc/invoke.texi: Document the armv8.1-m mve and dps options.
34006 2020-01-16  Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
34007             Thomas Preud'homme  <thomas.preudhomme@arm.com>
34009         * config/arm/arm-cpus.in (ARMv8_1m_main): Redefine as an extension to
34010         Armv8-M Mainline.
34011         * config/arm/arm.c (arm_options_perform_arch_sanity_checks): Remove
34012         error for using -mcmse when targeting Armv8.1-M Mainline.
34014 2020-01-16  Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
34015             Thomas Preud'homme  <thomas.preudhomme@arm.com>
34017         * config/arm/arm.md (nonsecure_call_internal): Do not force memory
34018         address in r4 when targeting Armv8.1-M Mainline.
34019         (nonsecure_call_value_internal): Likewise.
34020         * config/arm/thumb2.md (nonsecure_call_reg_thumb2): Make memory address
34021         a register match_operand again.  Emit BLXNS when targeting
34022         Armv8.1-M Mainline.
34023         (nonsecure_call_value_reg_thumb2): Likewise.
34025 2020-01-16  Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
34026             Thomas Preud'homme  <thomas.preudhomme@arm.com>
34028         * config/arm/arm.c (arm_add_cfa_adjust_cfa_note): Declare early.
34029         (cmse_nonsecure_call_inline_register_clear): Define new lazy_fpclear
34030         variable as true when floating-point ABI is not hard.  Replace
34031         check against TARGET_HARD_FLOAT_ABI by checks against lazy_fpclear.
34032         Generate VLSTM and VLLDM instruction respectively before and
34033         after a function call to cmse_nonsecure_call function.
34034         * config/arm/unspecs.md (VUNSPEC_VLSTM): Define unspec.
34035         (VUNSPEC_VLLDM): Likewise.
34036         * config/arm/vfp.md (lazy_store_multiple_insn): New define_insn.
34037         (lazy_load_multiple_insn): Likewise.
34039 2020-01-16  Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
34040             Thomas Preud'homme  <thomas.preudhomme@arm.com>
34042         * config/arm/arm.c (vfp_emit_fstmd): Declare early.
34043         (arm_emit_vfp_multi_reg_pop): Likewise.
34044         (cmse_nonsecure_call_inline_register_clear): Abstract number of VFP
34045         registers to clear in max_fp_regno.  Emit VPUSH and VPOP to save and
34046         restore callee-saved VFP registers.
34048 2020-01-16  Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
34049             Thomas Preud'homme  <thomas.preudhomme@arm.com>
34051         * config/arm/arm.c (arm_emit_multi_reg_pop): Declare early.
34052         (cmse_nonsecure_call_clear_caller_saved): Rename into ...
34053         (cmse_nonsecure_call_inline_register_clear): This.  Save and clear
34054         callee-saved GPRs as well as clear ip register before doing a nonsecure
34055         call then restore callee-saved GPRs after it when targeting
34056         Armv8.1-M Mainline.
34057         (arm_reorg): Adapt to function rename.
34059 2020-01-16  Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
34060             Thomas Preud'homme  <thomas.preudhomme@arm.com>
34062         * config/arm/arm-protos.h (clear_operation_p): Adapt prototype.
34063         * config/arm/arm.c (clear_operation_p): Extend to be able to check a
34064         clear_vfp_multiple pattern based on a new vfp parameter.
34065         (cmse_clear_registers): Generate VSCCLRM to clear VFP registers when
34066         targeting Armv8.1-M Mainline.
34067         (cmse_nonsecure_entry_clear_before_return): Clear VFP registers
34068         unconditionally when targeting Armv8.1-M Mainline architecture.  Check
34069         whether VFP registers are available before looking call_used_regs for a
34070         VFP register.
34071         * config/arm/predicates.md (clear_multiple_operation): Adapt to change
34072         of prototype of clear_operation_p.
34073         (clear_vfp_multiple_operation): New predicate.
34074         * config/arm/unspecs.md (VUNSPEC_VSCCLRM_VPR): New volatile unspec.
34075         * config/arm/vfp.md (clear_vfp_multiple): New define_insn.
34077 2020-01-16  Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
34078             Thomas Preud'homme  <thomas.preudhomme@arm.com>
34080         * config/arm/arm-protos.h (clear_operation_p): Declare.
34081         * config/arm/arm.c (clear_operation_p): New function.
34082         (cmse_clear_registers): Generate clear_multiple instruction pattern if
34083         targeting Armv8.1-M Mainline or successor.
34084         (output_return_instruction): Only output APSR register clearing if
34085         Armv8.1-M Mainline instructions not available.
34086         (thumb_exit): Likewise.
34087         * config/arm/predicates.md (clear_multiple_operation): New predicate.
34088         * config/arm/thumb2.md (clear_apsr): New define_insn.
34089         (clear_multiple): Likewise.
34090         * config/arm/unspecs.md (VUNSPEC_CLRM_APSR): New volatile unspec.
34092 2020-01-16  Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
34093             Thomas Preud'homme  <thomas.preudhomme@arm.com>
34095         * config/arm/arm.c (fp_sysreg_names): Declare and define.
34096         (use_return_insn): Also return false for Armv8.1-M Mainline.
34097         (output_return_instruction): Skip FPSCR clearing if Armv8.1-M
34098         Mainline instructions are available.
34099         (arm_compute_frame_layout): Allocate space in frame for FPCXTNS
34100         when targeting Armv8.1-M Mainline Security Extensions.
34101         (arm_expand_prologue): Save FPCXTNS if this is an Armv8.1-M
34102         Mainline entry function.
34103         (cmse_nonsecure_entry_clear_before_return): Clear IP and r4 if
34104         targeting Armv8.1-M Mainline or successor.
34105         (arm_expand_epilogue): Fix indentation of caller-saved register
34106         clearing.  Restore FPCXTNS if this is an Armv8.1-M Mainline
34107         entry function.
34108         * config/arm/arm.h (TARGET_HAVE_FP_CMSE): New macro.
34109         (FP_SYSREGS): Likewise.
34110         (enum vfp_sysregs_encoding): Define enum.
34111         (fp_sysreg_names): Declare.
34112         * config/arm/unspecs.md (VUNSPEC_VSTR_VLDR): New volatile unspec.
34113         * config/arm/vfp.md (push_fpsysreg_insn): New define_insn.
34114         (pop_fpsysreg_insn): Likewise.
34116 2020-01-16  Mihail-Calin Ionescu  <mihail.ionescu@arm.com>
34117             Thomas Preud'homme  <thomas.preudhomme@arm.com>
34119         * config/arm/arm-cpus.in (armv8_1m_main): New feature.
34120         (ARMv4, ARMv4t, ARMv5t, ARMv5te, ARMv5tej, ARMv6, ARMv6j, ARMv6k,
34121         ARMv6z, ARMv6kz, ARMv6zk, ARMv6t2, ARMv6m, ARMv7, ARMv7a, ARMv7ve,
34122         ARMv7r, ARMv7m, ARMv7em, ARMv8a, ARMv8_1a, ARMv8_2a, ARMv8_3a,
34123         ARMv8_4a, ARMv8_5a, ARMv8m_base, ARMv8m_main, ARMv8r): Reindent.
34124         (ARMv8_1m_main): New feature group.
34125         (armv8.1-m.main): New architecture.
34126         * config/arm/arm-tables.opt: Regenerate.
34127         * config/arm/arm.c (arm_arch8_1m_main): Define and default initialize.
34128         (arm_option_reconfigure_globals): Initialize arm_arch8_1m_main.
34129         (arm_options_perform_arch_sanity_checks): Error out when targeting
34130         Armv8.1-M Mainline Security Extensions.
34131         * config/arm/arm.h (arm_arch8_1m_main): Declare.
34133 2020-01-16  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
34135         * config/aarch64/aarch64-simd-builtins.def (aarch64_bfdot,
34136         aarch64_bfdot_lane, aarch64_bfdot_laneq): New.
34137         * config/aarch64/aarch64-simd.md (aarch64_bfdot, aarch64_bfdot_lane,
34138         aarch64_bfdot_laneq): New.
34139         * config/aarch64/arm_bf16.h (vbfdot_f32, vbfdotq_f32,
34140         vbfdot_lane_f32, vbfdotq_lane_f32, vbfdot_laneq_f32,
34141         vbfdotq_laneq_f32): New.
34142         * config/aarch64/iterators.md (UNSPEC_BFDOT, Vbfdottype,
34143         VBFMLA_W, VBF): New.
34144         (isquadop): Add V4BF, V8BF.
34146 2020-01-16  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
34148         * config/aarch64/aarch64-builtins.c: (enum aarch64_type_qualifiers):
34149         New qualifier_lane_quadtup_index, TYPES_TERNOP_SSUS,
34150         TYPES_QUADOPSSUS_LANE_QUADTUP, TYPES_QUADOPSSSU_LANE_QUADTUP.
34151         (aarch64_simd_expand_args): Add case SIMD_ARG_LANE_QUADTUP_INDEX.
34152         (aarch64_simd_expand_builtin): Add qualifier_lane_quadtup_index.
34153         * config/aarch64/aarch64-simd-builtins.def (usdot, usdot_lane,
34154         usdot_laneq, sudot_lane,sudot_laneq): New.
34155         * config/aarch64/aarch64-simd.md (aarch64_usdot): New.
34156         (aarch64_<sur>dot_lane): New.
34157         * config/aarch64/arm_neon.h (vusdot_s32): New.
34158         (vusdotq_s32): New.
34159         (vusdot_lane_s32): New.
34160         (vsudot_lane_s32): New.
34161         * config/aarch64/iterators.md (DOTPROD_I8MM): New iterator.
34162         (UNSPEC_USDOT, UNSPEC_SUDOT): New unspecs.
34164 2020-01-16  Martin Liska  <mliska@suse.cz>
34166         * value-prof.c (dump_histogram_value): Fix
34167         obvious spacing issue.
34169 2020-01-16  Andrew Pinski  <apinski@marvell.com>
34171         * tree-ssa-sccvn.c(vn_reference_lookup_3): Check lhs for
34172         !storage_order_barrier_p.
34174 2020-01-16  Andrew Pinski  <apinski@marvell.com>
34176         * sched-int.h (_dep): Add unused bit-field field for the padding.
34177         * sched-deps.c (init_dep_1): Init unused field.
34179 2020-01-16  Andrew Pinski  <apinski@marvell.com>
34181         * optabs.h (create_expand_operand): Initialize target field also.
34183 2020-01-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>
34185         PR tree-optimization/92429
34186         * tree-ssa-loop-niter.h (simplify_replace_tree): Add parameter.
34187         * tree-ssa-loop-niter.c (simplify_replace_tree): Add parameter to
34188         control folding.
34189         * tree-vect-loop.c (update_epilogue_vinfo): Do not fold when replacing
34190         tree.
34192 2020-01-16  Richard Sandiford  <richard.sandiford@arm.com>
34194         * config/aarch64/aarch64.c (aarch64_split_sve_subreg_move): Apply
34195         aarch64_sve_int_mode to each mode.
34197 2020-01-15  David Malcolm  <dmalcolm@redhat.com>
34199         * doc/analyzer.texi (Overview): Add note about
34200         -fdump-ipa-analyzer.
34202 2020-01-15  Wilco Dijkstra  <wdijkstr@arm.com>
34204         PR tree-optimization/93231
34205         * tree-ssa-forwprop.c (optimize_count_trailing_zeroes): Check
34206         input_type is unsigned.  Use tree_to_shwi for shift constant.
34207         Check CST_STRING element size is CHAR_TYPE_SIZE bits.
34208         (simplify_count_trailing_zeroes): Add test to handle known non-zero
34209         inputs more efficiently.
34211 2020-01-15  Uroš Bizjak  <ubizjak@gmail.com>
34213         * config/i386/i386.md (*movsf_internal): Do not require
34214         SSE2 ISA for alternatives 14 and 15.
34216 2020-01-15  Richard Biener  <rguenther@suse.de>
34218         PR middle-end/93273
34219         * tree-eh.c (sink_clobbers): If we already visited the destination
34220         block do not defer insertion.
34221         (pass_lower_eh_dispatch::execute): Maintain BB_VISITED for
34222         the purpose of defered insertion.
34224 2020-01-15  Jakub Jelinek  <jakub@redhat.com>
34226         * BASE-VER: Bump to 10.0.1.
34228 2020-01-15  Richard Sandiford  <richard.sandiford@arm.com>
34230         PR tree-optimization/93247
34231         * tree-vect-loop.c (update_epilogue_loop_vinfo): Check the access
34232         type of the stmt that we're going to vectorize.
34234 2020-01-15  Richard Sandiford  <richard.sandiford@arm.com>
34236         * tree-vect-slp.c (vectorize_slp_instance_root_stmt): Use a
34237         VIEW_CONVERT_EXPR if the vectorized constructor has a diffeent
34238         type from the lhs.
34240 2020-01-15  Martin Liska  <mliska@suse.cz>
34242         * ipa-profile.c (ipa_profile_read_edge_summary): Do not allow
34243         2 calls of streamer_read_hwi in a function call.
34245 2020-01-15  Richard Biener  <rguenther@suse.de>
34247         * alias.c (record_alias_subset): Avoid redundant work when
34248         subset is already recorded.
34250 2020-01-14  David Malcolm  <dmalcolm@redhat.com>
34252         * doc/invoke.texi (-fdiagnostics-show-cwe): Add note that some of
34253         the analyzer options provide CWE identifiers.
34255 2020-01-14  David Malcolm  <dmalcolm@redhat.com>
34257         * tree-diagnostic-path.cc (path_summary::event_range::print):
34258         When testing for UNKNOWN_LOCATION, look through ad-hoc wrappers
34259         using get_pure_location.
34261 2020-01-15  Jakub Jelinek  <jakub@redhat.com>
34263         PR tree-optimization/93262
34264         * tree-ssa-dse.c (maybe_trim_memstar_call): For *_chk builtins,
34265         perform head trimming only if the last argument is constant,
34266         either all ones, or larger or equal to head trim, in the latter
34267         case decrease the last argument by head_trim.
34269         PR tree-optimization/93249
34270         * tree-ssa-dse.c: Include builtins.h and gimple-fold.h.
34271         (maybe_trim_memstar_call): Move head_trim and tail_trim vars to
34272         function body scope, reindent.  For BUILTIN_IN_STRNCPY*, don't
34273         perform head trim unless we can prove there are no '\0' chars
34274         from the source among the first head_trim chars.
34276 2020-01-14  David Malcolm  <dmalcolm@redhat.com>
34278         * Makefile.in (ANALYZER_OBJS): Add analyzer/function-set.o.
34280 2020-01-15  Jakub Jelinek  <jakub@redhat.com>
34282         PR target/93009
34283         * config/i386/sse.md
34284         (*<sd_mask_codefor>fma_fmadd_<mode><sd_maskz_name>_bcst_1,
34285         *<sd_mask_codefor>fma_fmsub_<mode><sd_maskz_name>_bcst_1,
34286         *<sd_mask_codefor>fma_fnmadd_<mode><sd_maskz_name>_bcst_1,
34287         *<sd_mask_codefor>fma_fnmsub_<mode><sd_maskz_name>_bcst_1): Use
34288         just a single alternative instead of two, make operands 1 and 2
34289         commutative.
34291 2020-01-14  Jan Hubicka  <hubicka@ucw.cz>
34293         PR lto/91576
34294         * ipa-devirt.c (odr_types_equivalent_p): Compare TREE_ADDRESSABLE and
34295         TYPE_MODE.
34297 2020-01-14  David Malcolm  <dmalcolm@redhat.com>
34299         * Makefile.in (lang_opt_files): Add analyzer.opt.
34300         (ANALYZER_OBJS): New.
34301         (OBJS): Add digraph.o, graphviz.o, ordered-hash-map-tests.o,
34302         tristate.o and ANALYZER_OBJS.
34303         (TEXI_GCCINT_FILES): Add analyzer.texi.
34304         * common.opt (-fanalyzer): New driver option.
34305         * config.in: Regenerate.
34306         * configure: Regenerate.
34307         * configure.ac (--disable-analyzer, ENABLE_ANALYZER): New option.
34308         (gccdepdir): Also create depdir for "analyzer" subdir.
34309         * digraph.cc: New file.
34310         * digraph.h: New file.
34311         * doc/analyzer.texi: New file.
34312         * doc/gccint.texi ("Static Analyzer") New menu item.
34313         (analyzer.texi): Include it.
34314         * doc/invoke.texi ("Static Analyzer Options"): New list and new section.
34315         ("Warning Options"): Add static analysis warnings to the list.
34316         (-Wno-analyzer-double-fclose): New option.
34317         (-Wno-analyzer-double-free): New option.
34318         (-Wno-analyzer-exposure-through-output-file): New option.
34319         (-Wno-analyzer-file-leak): New option.
34320         (-Wno-analyzer-free-of-non-heap): New option.
34321         (-Wno-analyzer-malloc-leak): New option.
34322         (-Wno-analyzer-possible-null-argument): New option.
34323         (-Wno-analyzer-possible-null-dereference): New option.
34324         (-Wno-analyzer-null-argument): New option.
34325         (-Wno-analyzer-null-dereference): New option.
34326         (-Wno-analyzer-stale-setjmp-buffer): New option.
34327         (-Wno-analyzer-tainted-array-index): New option.
34328         (-Wno-analyzer-use-after-free): New option.
34329         (-Wno-analyzer-use-of-pointer-in-stale-stack-frame): New option.
34330         (-Wno-analyzer-use-of-uninitialized-value): New option.
34331         (-Wanalyzer-too-complex): New option.
34332         (-fanalyzer-call-summaries): New warning.
34333         (-fanalyzer-checker=): New warning.
34334         (-fanalyzer-fine-grained): New warning.
34335         (-fno-analyzer-state-merge): New warning.
34336         (-fno-analyzer-state-purge): New warning.
34337         (-fanalyzer-transitivity): New warning.
34338         (-fanalyzer-verbose-edges): New warning.
34339         (-fanalyzer-verbose-state-changes): New warning.
34340         (-fanalyzer-verbosity=): New warning.
34341         (-fdump-analyzer): New warning.
34342         (-fdump-analyzer-callgraph): New warning.
34343         (-fdump-analyzer-exploded-graph): New warning.
34344         (-fdump-analyzer-exploded-nodes): New warning.
34345         (-fdump-analyzer-exploded-nodes-2): New warning.
34346         (-fdump-analyzer-exploded-nodes-3): New warning.
34347         (-fdump-analyzer-supergraph): New warning.
34348         * doc/sourcebuild.texi (dg-require-dot): New.
34349         (dg-check-dot): New.
34350         * gdbinit.in (break-on-saved-diagnostic): New command.
34351         * graphviz.cc: New file.
34352         * graphviz.h: New file.
34353         * ordered-hash-map-tests.cc: New file.
34354         * ordered-hash-map.h: New file.
34355         * passes.def (pass_analyzer): Add before
34356         pass_ipa_whole_program_visibility.
34357         * selftest-run-tests.c (selftest::run_tests): Call
34358         selftest::ordered_hash_map_tests_cc_tests.
34359         * selftest.h (selftest::ordered_hash_map_tests_cc_tests): New
34360         decl.
34361         * shortest-paths.h: New file.
34362         * timevar.def (TV_ANALYZER): New timevar.
34363         (TV_ANALYZER_SUPERGRAPH): Likewise.
34364         (TV_ANALYZER_STATE_PURGE): Likewise.
34365         (TV_ANALYZER_PLAN): Likewise.
34366         (TV_ANALYZER_SCC): Likewise.
34367         (TV_ANALYZER_WORKLIST): Likewise.
34368         (TV_ANALYZER_DUMP): Likewise.
34369         (TV_ANALYZER_DIAGNOSTICS): Likewise.
34370         (TV_ANALYZER_SHORTEST_PATHS): Likewise.
34371         * tree-pass.h (make_pass_analyzer): New decl.
34372         * tristate.cc: New file.
34373         * tristate.h: New file.
34375 2020-01-14  Uroš Bizjak  <ubizjak@gmail.com>
34377         PR target/93254
34378         * config/i386/i386.md (*movsf_internal): Require SSE2 ISA for
34379         alternatives 9 and 10.
34381 2020-01-14  David Malcolm  <dmalcolm@redhat.com>
34383         * attribs.c (excl_hash_traits::empty_zero_p): New static constant.
34384         * gcov.c (function_start_pair_hash::empty_zero_p): Likewise.
34385         * graphite.c (struct sese_scev_hash::empty_zero_p): Likewise.
34386         * hash-map-tests.c (selftest::test_nonzero_empty_key): New selftest.
34387         (selftest::hash_map_tests_c_tests): Call it.
34388         * hash-map-traits.h (simple_hashmap_traits::empty_zero_p):
34389         New static constant, using the value of = H::empty_zero_p.
34390         (unbounded_hashmap_traits::empty_zero_p): Likewise, using the value
34391         from default_hash_traits <Value>.
34392         * hash-map.h (hash_map::empty_zero_p): Likewise, using the value
34393         from Traits.
34394         * hash-set-tests.c (value_hash_traits::empty_zero_p): Likewise.
34395         * hash-table.h (hash_table::alloc_entries): Guard the loop of
34396         calls to mark_empty with !Descriptor::empty_zero_p.
34397         (hash_table::empty_slow): Conditionalize the memset call with a
34398         check that Descriptor::empty_zero_p; otherwise, loop through the
34399         entries calling mark_empty on them.
34400         * hash-traits.h (int_hash::empty_zero_p): New static constant.
34401         (pointer_hash::empty_zero_p): Likewise.
34402         (pair_hash::empty_zero_p): Likewise.
34403         * ipa-devirt.c (default_hash_traits <type_pair>::empty_zero_p):
34404         Likewise.
34405         * ipa-prop.c (ipa_bit_ggc_hash_traits::empty_zero_p): Likewise.
34406         (ipa_vr_ggc_hash_traits::empty_zero_p): Likewise.
34407         * profile.c (location_triplet_hash::empty_zero_p): Likewise.
34408         * sanopt.c (sanopt_tree_triplet_hash::empty_zero_p): Likewise.
34409         (sanopt_tree_couple_hash::empty_zero_p): Likewise.
34410         * tree-hasher.h (int_tree_hasher::empty_zero_p): Likewise.
34411         * tree-ssa-sccvn.c (vn_ssa_aux_hasher::empty_zero_p): Likewise.
34412         * tree-vect-slp.c (bst_traits::empty_zero_p): Likewise.
34413         * tree-vectorizer.h
34414         (default_hash_traits<scalar_cond_masked_key>::empty_zero_p):
34415         Likewise.
34417 2020-01-14  Kewen Lin  <linkw@gcc.gnu.org>
34419         * cfgloopanal.c (average_num_loop_insns): Free bbs when early return,
34420         fix typo on return value.
34422 2020-01-14  Xiong Hu Luo  <luoxhu@linux.ibm.com>
34424         PR ipa/69678
34425         * cgraph.c (symbol_table::create_edge): Init speculative_id and
34426         target_prob.
34427         (cgraph_edge::make_speculative): Add param for setting speculative_id
34428         and target_prob.
34429         (cgraph_edge::speculative_call_info): Update comments and find reference
34430         by speculative_id for multiple indirect targets.
34431         (cgraph_edge::resolve_speculation): Decrease the speculations
34432         for indirect edge, drop it's speculative if not direct target
34433         left. Update comments.
34434         (cgraph_edge::redirect_call_stmt_to_callee): Likewise.
34435         (cgraph_node::dump): Print num_speculative_call_targets.
34436         (cgraph_node::verify_node): Don't report error if speculative
34437         edge not include statement.
34438         (cgraph_edge::num_speculative_call_targets_p): New function.
34439         * cgraph.h (int common_target_id): Remove.
34440         (int common_target_probability): Remove.
34441         (num_speculative_call_targets): New variable.
34442         (make_speculative): Add param for setting speculative_id.
34443         (cgraph_edge::num_speculative_call_targets_p): New declare.
34444         (target_prob): New variable.
34445         (speculative_id): New variable.
34446         * ipa-fnsummary.c (analyze_function_body): Create and duplicate
34447           call summaries for multiple speculative call targets.
34448         * cgraphclones.c (cgraph_node::create_clone): Clone speculative_id.
34449         * ipa-profile.c (struct speculative_call_target): New struct.
34450         (class speculative_call_summary): New class.
34451         (class speculative_call_summaries): New class.
34452         (call_sums): New variable.
34453         (ipa_profile_generate_summary): Generate indirect multiple targets summaries.
34454         (ipa_profile_write_edge_summary): New function.
34455         (ipa_profile_write_summary): Stream out indirect multiple targets summaries.
34456         (ipa_profile_dump_all_summaries): New function.
34457         (ipa_profile_read_edge_summary): New function.
34458         (ipa_profile_read_summary_section): New function.
34459         (ipa_profile_read_summary): Stream in indirect multiple targets summaries.
34460         (ipa_profile): Generate num_speculative_call_targets from
34461         profile summaries.
34462         * ipa-ref.h (speculative_id): New variable.
34463         * ipa-utils.c (ipa_merge_profiles): Update with target_prob.
34464         * lto-cgraph.c (lto_output_edge): Remove indirect common_target_id and
34465         common_target_probability.   Stream out speculative_id and
34466         num_speculative_call_targets.
34467         (input_edge): Likewise.
34468         * predict.c (dump_prediction): Remove edges count assert to be
34469         precise.
34470         * symtab.c (symtab_node::create_reference): Init speculative_id.
34471         (symtab_node::clone_references): Clone speculative_id.
34472         (symtab_node::clone_referring): Clone speculative_id.
34473         (symtab_node::clone_reference): Clone speculative_id.
34474         (symtab_node::clear_stmts_in_references): Clear speculative_id.
34475         * tree-inline.c (copy_bb): Duplicate all the speculative edges
34476         if indirect call contains multiple speculative targets.
34477         * value-prof.h  (check_ic_target): Remove.
34478         * value-prof.c  (gimple_value_profile_transformations):
34479         Use void function gimple_ic_transform.
34480         * value-prof.c  (gimple_ic_transform): Handle topn case.
34481         Fix comment typos.  Change it to a void function.
34483 2020-01-13  Andrew Pinski  <apinski@marvell.com>
34485         * config/aarch64/aarch64-cores.def (octeontx2): New define.
34486         (octeontx2t98): New define.
34487         (octeontx2t96): New define.
34488         (octeontx2t93): New define.
34489         (octeontx2f95): New define.
34490         (octeontx2f95n): New define.
34491         (octeontx2f95mm): New define.
34492         * config/aarch64/aarch64-tune.md: Regenerate.
34493         * doc/invoke.texi (-mcpu=): Document the new cpu types.
34495 2020-01-13  Jason Merrill  <jason@redhat.com>
34497         PR c++/33799 - destroy return value if local cleanup throws.
34498         * gimplify.c (gimplify_return_expr): Handle COMPOUND_EXPR.
34500 2020-01-13  Martin Liska  <mliska@suse.cz>
34502         * ipa-cp.c (get_max_overall_size): Use newly
34503         renamed param param_ipa_cp_unit_growth.
34504         * params.opt: Remove legacy param name.
34506 2020-01-13  Martin Sebor  <msebor@redhat.com>
34508         PR tree-optimization/93213
34509         * tree-ssa-strlen.c (handle_store): Only allow single-byte nul-over-nul
34510         stores to be eliminated.
34512 2020-01-13  Martin Liska  <mliska@suse.cz>
34514         * opts.c (print_help): Do not print CL_PARAM
34515         and CL_WARNING for CL_OPTIMIZATION.
34517 2020-01-13  Jonathan Wakely  <jwakely@redhat.com>
34519         PR driver/92757
34520         * doc/invoke.texi (Warning Options): Add caveat about some warnings
34521         depending on optimization settings.
34523 2020-01-13  Jakub Jelinek  <jakub@redhat.com>
34525         PR tree-optimization/90838
34526         * tree-ssa-forwprop.c (simplify_count_trailing_zeroes): Use
34527         SCALAR_INT_TYPE_MODE directly in CTZ_DEFINED_VALUE_AT_ZERO macro
34528         argument rather than to initialize temporary for targets that
34529         don't use the mode argument at all.  Initialize ctzval to avoid
34530         warning at -O0.
34532 2020-01-10  Thomas Schwinge  <thomas@codesourcery.com>
34534         * tree.h (OMP_CLAUSE_USE_DEVICE_PTR_IF_PRESENT): New definition.
34535         * tree-core.h: Document it.
34536         * gimplify.c (gimplify_omp_workshare): Set it.
34537         * omp-low.c (lower_omp_target): Use it.
34538         * tree-pretty-print.c (dump_omp_clause): Print it.
34540         * omp-low.c (lower_omp_target) <OMP_CLAUSE_USE_DEVICE_PTR etc.>:
34541         Assert that for OpenACC we always have 'GOMP_MAP_USE_DEVICE_PTR'.
34543 2020-01-10  David Malcolm  <dmalcolm@redhat.com>
34545         * Makefile.in (OBJS): Add tree-diagnostic-path.o.
34546         * common.opt (fdiagnostics-path-format=): New option.
34547         (diagnostic_path_format): New enum.
34548         (fdiagnostics-show-path-depths): New option.
34549         * coretypes.h (diagnostic_event_id_t): New forward decl.
34550         * diagnostic-color.c (color_dict): Add "path".
34551         * diagnostic-event-id.h: New file.
34552         * diagnostic-format-json.cc (json_from_expanded_location): Make
34553         non-static.
34554         (json_end_diagnostic): Call context->make_json_for_path if it
34555         exists and the diagnostic has a path.
34556         (diagnostic_output_format_init): Clear context->print_path.
34557         * diagnostic-path.h: New file.
34558         * diagnostic-show-locus.c (colorizer::set_range): Special-case
34559         when printing a run of events in a diagnostic_path so that they
34560         all get the same color.
34561         (layout::m_diagnostic_path_p): New field.
34562         (layout::layout): Initialize it.
34563         (layout::print_any_labels): Don't colorize the label text for an
34564         event in a diagnostic_path.
34565         (gcc_rich_location::add_location_if_nearby): Add
34566         "restrict_to_current_line_spans" and "label" params.  Pass the
34567         former to layout.maybe_add_location_range; pass the latter
34568         when calling add_range.
34569         * diagnostic.c: Include "diagnostic-path.h".
34570         (diagnostic_initialize): Initialize context->path_format and
34571         context->show_path_depths.
34572         (diagnostic_show_any_path): New function.
34573         (diagnostic_path::interprocedural_p): New function.
34574         (diagnostic_report_diagnostic): Call diagnostic_show_any_path.
34575         (simple_diagnostic_path::num_events): New function.
34576         (simple_diagnostic_path::get_event): New function.
34577         (simple_diagnostic_path::add_event): New function.
34578         (simple_diagnostic_event::simple_diagnostic_event): New ctor.
34579         (simple_diagnostic_event::~simple_diagnostic_event): New dtor.
34580         (debug): New overload taking a diagnostic_path *.
34581         * diagnostic.def (DK_DIAGNOSTIC_PATH): New.
34582         * diagnostic.h (enum diagnostic_path_format): New enum.
34583         (json::value): New forward decl.
34584         (diagnostic_context::path_format): New field.
34585         (diagnostic_context::show_path_depths): New field.
34586         (diagnostic_context::print_path): New callback field.
34587         (diagnostic_context::make_json_for_path): New callback field.
34588         (diagnostic_show_any_path): New decl.
34589         (json_from_expanded_location): New decl.
34590         * doc/invoke.texi (-fdiagnostics-path-format=): New option.
34591         (-fdiagnostics-show-path-depths): New option.
34592         (-fdiagnostics-color): Add "path" to description of default
34593         GCC_COLORS; describe it.
34594         (-fdiagnostics-format=json): Document how diagnostic paths are
34595         represented in the JSON output format.
34596         * gcc-rich-location.h (gcc_rich_location::add_location_if_nearby):
34597         Add optional params "restrict_to_current_line_spans" and "label".
34598         * opts.c (common_handle_option): Handle
34599         OPT_fdiagnostics_path_format_ and
34600         OPT_fdiagnostics_show_path_depths.
34601         * pretty-print.c: Include "diagnostic-event-id.h".
34602         (pp_format): Implement "%@" format code for printing
34603         diagnostic_event_id_t *.
34604         (selftest::test_pp_format): Add tests for "%@".
34605         * selftest-run-tests.c (selftest::run_tests): Call
34606         selftest::tree_diagnostic_path_cc_tests.
34607         * selftest.h (selftest::tree_diagnostic_path_cc_tests): New decl.
34608         * toplev.c (general_init): Initialize global_dc->path_format and
34609         global_dc->show_path_depths.
34610         * tree-diagnostic-path.cc: New file.
34611         * tree-diagnostic.c (maybe_unwind_expanded_macro_loc): Make
34612         non-static.  Drop "diagnostic" param in favor of storing the
34613         original value of "where" and re-using it.
34614         (virt_loc_aware_diagnostic_finalizer): Update for dropped param of
34615         maybe_unwind_expanded_macro_loc.
34616         (tree_diagnostics_defaults): Initialize context->print_path and
34617         context->make_json_for_path.
34618         * tree-diagnostic.h (default_tree_diagnostic_path_printer): New
34619         decl.
34620         (default_tree_make_json_for_path): New decl.
34621         (maybe_unwind_expanded_macro_loc): New decl.
34623 2020-01-10  Jakub Jelinek  <jakub@redhat.com>
34625         PR tree-optimization/93210
34626         * fold-const.h (native_encode_initializer,
34627         can_native_interpret_type_p): Declare.
34628         * fold-const.c (native_encode_string): Fix up handling with off != -1,
34629         simplify.
34630         (native_encode_initializer): New function, moved from dwarf2out.c.
34631         Adjust to native_encode_expr compatible arguments, including dry-run
34632         and partial extraction modes.  Don't handle STRING_CST.
34633         (can_native_interpret_type_p): No longer static.
34634         * gimple-fold.c (fold_ctor_reference): For native_encode_expr, verify
34635         offset / BITS_PER_UNIT fits into int and don't call it if
34636         can_native_interpret_type_p fails.  If suboff is NULL and for
34637         CONSTRUCTOR fold_{,non}array_ctor_reference returns NULL, retry with
34638         native_encode_initializer.
34639         (fold_const_aggregate_ref_1): Formatting fix.
34640         * dwarf2out.c (native_encode_initializer): Moved to fold-const.c.
34641         (tree_add_const_value_attribute): Adjust caller.
34643         PR tree-optimization/90838
34644         * tree-ssa-forwprop.c (simplify_count_trailing_zeroes): Use
34645         SCALAR_INT_TYPE_MODE instead of TYPE_MODE as operand of
34646         CTZ_DEFINED_VALUE_AT_ZERO.
34648 2020-01-10  Vladimir Makarov  <vmakarov@redhat.com>
34650         PR inline-asm/93027
34651         * lra-constraints.c (match_reload): Permit input operands have the
34652         same mode as output while other input operands have a different
34653         mode.
34655 2020-01-10  Wilco Dijkstra  <wdijkstr@arm.com>
34657         PR tree-optimization/90838
34658         * tree-ssa-forwprop.c (check_ctz_array): Add new function.
34659         (check_ctz_string): Likewise.
34660         (optimize_count_trailing_zeroes): Likewise.
34661         (simplify_count_trailing_zeroes): Likewise.
34662         (pass_forwprop::execute): Try ctz simplification.
34663         * match.pd: Add matching for ctz idioms.
34665 2020-01-10  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
34667         * config/aarch64/aarch64.c (aarch64_invalid_conversion): New function
34668         for target hook.
34669         (aarch64_invalid_unary_op): New function for target hook.
34670         (aarch64_invalid_binary_op): New function for target hook.
34672 2020-01-10  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
34674         * config.gcc: Add arm_bf16.h.
34675         * config/aarch64/aarch64-builtins.c
34676         (aarch64_simd_builtin_std_type): Add BFmode.
34677         (aarch64_init_simd_builtin_types): Define element types for vector
34678         types.
34679         (aarch64_init_bf16_types): New function.
34680         (aarch64_general_init_builtins): Add arm_init_bf16_types function call.
34681         * config/aarch64/aarch64-modes.def: Add BFmode and V4BF, V8BF vector
34682         modes.
34683         * config/aarch64/aarch64-simd-builtin-types.def: Add BF SIMD types.
34684         * config/aarch64/aarch64-simd.md: Add BF vector types to NEON move
34685         patterns.
34686         * config/aarch64/aarch64.h (AARCH64_VALID_SIMD_DREG_MODE): Add V4BF.
34687         (AARCH64_VALID_SIMD_QREG_MODE): Add V8BF.
34688         * config/aarch64/aarch64.c
34689         (aarch64_classify_vector_mode): Add support for BF types.
34690         (aarch64_gimplify_va_arg_expr): Add support for BF types.
34691         (aarch64_vq_mode): Add support for BF types.
34692         (aarch64_simd_container_mode): Add support for BF types.
34693         (aarch64_mangle_type): Add support for BF scalar type.
34694         * config/aarch64/aarch64.md: Add BFmode to movhf pattern.
34695         * config/aarch64/arm_bf16.h: New file.
34696         * config/aarch64/arm_neon.h: Add arm_bf16.h and Bfloat vector types.
34697         * config/aarch64/iterators.md: Add BF types to mode attributes.
34698         (HFBF, GPF_TF_F16_MOV, VDMOV, VQMOV, VQMOV_NO2Em VALL_F16MOV): New.
34700 2020-01-10  Jason Merrill  <jason@redhat.com>
34702         PR c++/93173 - incorrect tree sharing.
34703         * gimplify.c (copy_if_shared): No longer static.
34704         * gimplify.h: Declare it.
34706 2020-01-10  Richard Sandiford  <richard.sandiford@arm.com>
34708         * doc/invoke.texi (-msve-vector-bits=): Document that
34709         -msve-vector-bits=128 now generates VL-specific code for
34710         little-endian targets.
34711         * config/aarch64/aarch64-sve-builtins.cc (register_builtin_types): Use
34712         build_vector_type_for_mode to construct the data vector types.
34713         * config/aarch64/aarch64.c (aarch64_convert_sve_vector_bits): Generate
34714         VL-specific code for -msve-vector-bits=128 on little-endian targets.
34715         (aarch64_simd_container_mode): Always prefer Advanced SIMD modes
34716         for 128-bit vectors.
34718 2020-01-10  Richard Sandiford  <richard.sandiford@arm.com>
34720         * config/aarch64/aarch64.c (aarch64_evpc_sel): Fix gen_vcond_mask
34721         invocation.
34723 2020-01-10  Richard Sandiford  <richard.sandiford@arm.com>
34725         * config/aarch64/aarch64-builtins.c
34726         (aarch64_builtin_vectorized_function): Check for specific vector modes,
34727         rather than checking the number of elements and the element mode.
34729 2020-01-10  Richard Sandiford  <richard.sandiford@arm.com>
34731         * tree-vect-loop.c (vect_create_epilog_for_reduction): Use
34732         get_related_vectype_for_scalar_type rather than build_vector_type
34733         to create the index type for a conditional reduction.
34735 2020-01-10  Richard Sandiford  <richard.sandiford@arm.com>
34737         * tree-vect-loop.c (update_epilogue_loop_vinfo): Update DR_REF
34738         for any type of gather or scatter, including strided accesses.
34740 2020-01-10  Andre Vieira  <andre.simoesdiasvieira@arm.com>
34742         * tree-vectorizer.h (get_dr_vinfo_offset): Add missing function
34743          comment.
34745 2020-01-10  Andre Vieira  <andre.simoesdiasvieira@arm.com>
34747         * tree-vect-data-refs.c (vect_create_addr_base_for_vector_ref): Use
34748         get_dr_vinfo_offset
34749         * tree-vect-loop.c (update_epilogue_loop_vinfo):  Remove orig_drs_init
34750         parameter and its use to reset DR_OFFSET's.
34751         (vect_transform_loop): Remove orig_drs_init argument.
34752         * tree-vect-loop-manip.c (vect_update_init_of_dr): Update the offset
34753         member of dr_vec_info rather than the offset of the associated
34754         data_reference's innermost_loop_behavior.
34755         (vect_update_init_of_dr): Pass dr_vec_info instead of data_reference.
34756         (vect_do_peeling): Remove orig_drs_init parameter and its construction.
34757         * tree-vect-stmts.c (check_scan_store): Replace use of DR_OFFSET with
34758         get_dr_vinfo_offset.
34759         (vectorizable_store): Likewise.
34760         (vectorizable_load): Likewise.
34762 2020-01-10  Richard Biener  <rguenther@suse.de>
34764         * gimple-ssa-store-merging
34765         (pass_store_merging::terminate_all_aliasing_chains): Cache alias info.
34767 2020-01-10  Martin Liska  <mliska@suse.cz>
34769         PR ipa/93217
34770         * ipa-inline-analysis.c (offline_size): Make proper parenthesis
34771         encapsulation that was there before r280040.
34773 2020-01-10  Richard Biener  <rguenther@suse.de>
34775         PR middle-end/93199
34776         * tree-eh.c (sink_clobbers): Move clobbers to out-of-IL
34777         sequences to avoid walking them again for secondary opportunities.
34778         (pass_lower_eh_dispatch::execute): Instead actually insert
34779         them here.
34781 2020-01-10  Richard Biener  <rguenther@suse.de>
34783         PR middle-end/93199
34784         * tree-eh.c (redirect_eh_edge_1): Avoid some work if possible.
34785         (cleanup_all_empty_eh): Walk landing pads in reverse order to
34786         avoid quadraticness.
34788 2020-01-10  Martin Jambor  <mjambor@suse.cz>
34790         * params.opt (param_ipa_sra_max_replacements): Mark as Optimization.
34791         * ipa-sra.c (pull_accesses_from_callee): New parameter caller, use it
34792         to get param_ipa_sra_max_replacements.
34793         (param_splitting_across_edge): Pass the caller to
34794         pull_accesses_from_callee.
34796 2020-01-10  Martin Jambor  <mjambor@suse.cz>
34798         * params.opt (param_ipcp_unit_growth): Mark as Optimization.
34799         * ipa-cp.c (max_new_size): Removed.
34800         (orig_overall_size): New variable.
34801         (get_max_overall_size): New function.
34802         (estimate_local_effects): Use it.  Adjust dump.
34803         (decide_about_value): Likewise.
34804         (ipcp_propagate_stage): Do not calculate max_new_size, just store
34805         orig_overall_size.  Adjust dump.
34806         (ipa_cp_c_finalize): Clear orig_overall_size instead of max_new_size.
34808 2020-01-10  Martin Jambor  <mjambor@suse.cz>
34810         * params.opt (param_ipa_max_agg_items): Mark as Optimization
34811         * ipa-cp.c (merge_agg_lats_step): New parameter max_agg_items, use
34812         instead of param_ipa_max_agg_items.
34813         (merge_aggregate_lattices): Extract param_ipa_max_agg_items from
34814         optimization info for the callee.
34816 2020-01-09  Kwok Cheung Yeung  <kcy@codesourcery.com>
34818         * lto-streamer-in.c (input_function): Remove streamed-in inline debug
34819         markers if debug_inline_points is false.
34821 2020-01-09  Richard Sandiford  <richard.sandiford@arm.com>
34823         * config.gcc (aarch64*-*-*): Add aarch64-sve-builtins-sve2.o to
34824         extra_objs.
34825         * config/aarch64/t-aarch64 (aarch64-sve-builtins.o): Depend on
34826         aarch64-sve-builtins-base.def, aarch64-sve-builtins-sve2.def and
34827         aarch64-sve-builtins-sve2.h.
34828         (aarch64-sve-builtins-sve2.o): New rule.
34829         * config/aarch64/aarch64.h (AARCH64_ISA_SVE2_AES): New macro.
34830         (AARCH64_ISA_SVE2_BITPERM, AARCH64_ISA_SVE2_SHA3): Likewise.
34831         (AARCH64_ISA_SVE2_SM4, TARGET_SVE2_AES, TARGET_SVE2_BITPERM): Likewise.
34832         (TARGET_SVE2_SHA, TARGET_SVE2_SM4): Likewise.
34833         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Handle
34834         TARGET_SVE2_AES, TARGET_SVE2_BITPERM, TARGET_SVE2_SHA3 and
34835         TARGET_SVE2_SM4.
34836         * config/aarch64/aarch64-sve.md: Update comments with SVE2
34837         instructions that are handled here.
34838         (@cond_asrd<mode>): Generalize to...
34839         (@cond_<SVE_INT_SHIFT_IMM:sve_int_op><mode>): ...this.
34840         (*cond_asrd<mode>_2): Generalize to...
34841         (*cond_<SVE_INT_SHIFT_IMM:sve_int_op><mode>_2): ...this.
34842         (*cond_asrd<mode>_z): Generalize to...
34843         (*cond_<SVE_INT_SHIFT_IMM:sve_int_op><mode>_z): ...this.
34844         * config/aarch64/aarch64.md (UNSPEC_LDNT1_GATHER): New unspec.
34845         (UNSPEC_STNT1_SCATTER, UNSPEC_WHILEGE, UNSPEC_WHILEGT): Likewise.
34846         (UNSPEC_WHILEHI, UNSPEC_WHILEHS): Likewise.
34847         * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): New
34848         pattern.
34849         (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode><SVE_PARTIAL_I:mode>)
34850         (@aarch64_scatter_stnt<mode>): Likewise.
34851         (@aarch64_scatter_stnt_<SVE_FULL_SDI:mode><SVE_PARTIAL_I:mode>)
34852         (@aarch64_mul_lane_<mode>): Likewise.
34853         (@aarch64_sve_suqadd<mode>_const): Likewise.
34854         (*<sur>h<addsub><mode>): Generalize to...
34855         (@aarch64_pred_<SVE2_COND_INT_BINARY_REV:sve_int_op><mode>): ...this
34856         new pattern.
34857         (@cond_<SVE2_COND_INT_BINARY:sve_int_op><mode>): New expander.
34858         (*cond_<SVE2_COND_INT_BINARY:sve_int_op><mode>_2): New pattern.
34859         (*cond_<SVE2_COND_INT_BINARY:sve_int_op><mode>_3): Likewise.
34860         (*cond_<SVE2_COND_INT_BINARY:sve_int_op><mode>_any): Likewise.
34861         (*cond_<SVE2_COND_INT_BINARY_NOREV:sve_int_op><mode>_z): Likewise.
34862         (@aarch64_sve_<SVE2_INT_BINARY:sve_int_op><mode>):: Likewise.
34863         (@aarch64_sve_<SVE2_INT_BINARY:sve_int_op>_lane_<mode>): Likewise.
34864         (@aarch64_pred_<SVE2_COND_INT_SHIFT:sve_int_op><mode>): Likewise.
34865         (@cond_<SVE2_COND_INT_SHIFT:sve_int_op><mode>): New expander.
34866         (*cond_<SVE2_COND_INT_SHIFT:sve_int_op><mode>_2): New pattern.
34867         (*cond_<SVE2_COND_INT_SHIFT:sve_int_op><mode>_3): Likewise.
34868         (*cond_<SVE2_COND_INT_SHIFT:sve_int_op><mode>_any): Likewise.
34869         (@aarch64_sve_<SVE2_INT_TERNARY:sve_int_op><mode>): Likewise.
34870         (@aarch64_sve_<SVE2_INT_TERNARY_LANE:sve_int_op>_lane_<mode>)
34871         (@aarch64_sve_add_mul_lane_<mode>): Likewise.
34872         (@aarch64_sve_sub_mul_lane_<mode>): Likewise.
34873         (@aarch64_sve2_xar<mode>): Likewise.
34874         (@aarch64_sve2_bcax<mode>): Likewise.
34875         (*aarch64_sve2_eor3<mode>): Rename to...
34876         (@aarch64_sve2_eor3<mode>): ...this.
34877         (@aarch64_sve2_bsl<mode>): New expander.
34878         (@aarch64_sve2_nbsl<mode>): Likewise.
34879         (@aarch64_sve2_bsl1n<mode>): Likewise.
34880         (@aarch64_sve2_bsl2n<mode>): Likewise.
34881         (@aarch64_sve_add_<SHIFTRT:sve_int_op><mode>): Likewise.
34882         (*aarch64_sve2_sra<mode>): Add MOVPRFX support.
34883         (@aarch64_sve_add_<VRSHR_N:sve_int_op><mode>): New pattern.
34884         (@aarch64_sve_<SVE2_INT_SHIFT_INSERT:sve_int_op><mode>): Likewise.
34885         (@aarch64_sve2_<USMAX:su>aba<mode>): New expander.
34886         (*aarch64_sve2_<USMAX:su>aba<mode>): New pattern.
34887         (@aarch64_sve_<SVE2_INT_BINARY_WIDE:sve_int_op><mode>): Likewise.
34888         (<su>mull<bt><Vwide>): Generalize to...
34889         (@aarch64_sve_<SVE2_INT_BINARY_LONG:sve_int_op><mode>): ...this new
34890         pattern.
34891         (@aarch64_sve_<SVE2_INT_BINARY_LONG_lANE:sve_int_op>_lane_<mode>)
34892         (@aarch64_sve_<SVE2_INT_SHIFT_IMM_LONG:sve_int_op><mode>)
34893         (@aarch64_sve_add_<SVE2_INT_ADD_BINARY_LONG:sve_int_op><mode>)
34894         (@aarch64_sve_add_<SVE2_INT_ADD_BINARY_LONG_LANE:sve_int_op>_lane_<mode>)
34895         (@aarch64_sve_qadd_<SVE2_INT_QADD_BINARY_LONG:sve_int_op><mode>)
34896         (@aarch64_sve_qadd_<SVE2_INT_QADD_BINARY_LONG_LANE:sve_int_op>_lane_<mode>)
34897         (@aarch64_sve_sub_<SVE2_INT_SUB_BINARY_LONG:sve_int_op><mode>)
34898         (@aarch64_sve_sub_<SVE2_INT_SUB_BINARY_LONG_LANE:sve_int_op>_lane_<mode>)
34899         (@aarch64_sve_qsub_<SVE2_INT_QSUB_BINARY_LONG:sve_int_op><mode>)
34900         (@aarch64_sve_qsub_<SVE2_INT_QSUB_BINARY_LONG_LANE:sve_int_op>_lane_<mode>)
34901         (@aarch64_sve_<SVE2_FP_TERNARY_LONG:sve_fp_op><mode>): New patterns.
34902         (@aarch64_<SVE2_FP_TERNARY_LONG_LANE:sve_fp_op>_lane_<mode>)
34903         (@aarch64_sve_<SVE2_INT_UNARY_NARROWB:sve_int_op><mode>): Likewise.
34904         (@aarch64_sve_<SVE2_INT_UNARY_NARROWT:sve_int_op><mode>): Likewise.
34905         (@aarch64_sve_<SVE2_INT_BINARY_NARROWB:sve_int_op><mode>): Likewise.
34906         (@aarch64_sve_<SVE2_INT_BINARY_NARROWT:sve_int_op><mode>): Likewise.
34907         (<SHRNB:r>shrnb<mode>): Generalize to...
34908         (@aarch64_sve_<SVE2_INT_SHIFT_IMM_NARROWB:sve_int_op><mode>): ...this
34909         new pattern.
34910         (<SHRNT:r>shrnt<mode>): Generalize to...
34911         (@aarch64_sve_<SVE2_INT_SHIFT_IMM_NARROWT:sve_int_op><mode>): ...this
34912         new pattern.
34913         (@aarch64_pred_<SVE2_INT_BINARY_PAIR:sve_int_op><mode>): New pattern.
34914         (@aarch64_pred_<SVE2_FP_BINARY_PAIR:sve_fp_op><mode>): Likewise.
34915         (@cond_<SVE2_INT_BINARY_PAIR_LONG:sve_int_op><mode>): New expander.
34916         (*cond_<SVE2_INT_BINARY_PAIR_LONG:sve_int_op><mode>_2): New pattern.
34917         (*cond_<SVE2_INT_BINARY_PAIR_LONG:sve_int_op><mode>_z): Likewise.
34918         (@aarch64_sve_<SVE2_INT_CADD:optab><mode>): Likewise.
34919         (@aarch64_sve_<SVE2_INT_CMLA:optab><mode>): Likewise.
34920         (@aarch64_<SVE2_INT_CMLA:optab>_lane_<mode>): Likewise.
34921         (@aarch64_sve_<SVE2_INT_CDOT:optab><mode>): Likewise.
34922         (@aarch64_<SVE2_INT_CDOT:optab>_lane_<mode>): Likewise.
34923         (@aarch64_pred_<SVE2_COND_FP_UNARY_LONG:sve_fp_op><mode>): Likewise.
34924         (@cond_<SVE2_COND_FP_UNARY_LONG:sve_fp_op><mode>): New expander.
34925         (*cond_<SVE2_COND_FP_UNARY_LONG:sve_fp_op><mode>): New pattern.
34926         (@aarch64_sve2_cvtnt<mode>): Likewise.
34927         (@aarch64_pred_<SVE2_COND_FP_UNARY_NARROWB:sve_fp_op><mode>): Likewise.
34928         (@cond_<SVE2_COND_FP_UNARY_NARROWB:sve_fp_op><mode>): New expander.
34929         (*cond_<SVE2_COND_FP_UNARY_NARROWB:sve_fp_op><mode>_any): New pattern.
34930         (@aarch64_sve2_cvtxnt<mode>): Likewise.
34931         (@aarch64_pred_<SVE2_U32_UNARY:sve_int_op><mode>): Likewise.
34932         (@cond_<SVE2_U32_UNARY:sve_int_op><mode>): New expander.
34933         (*cond_<SVE2_U32_UNARY:sve_int_op><mode>): New pattern.
34934         (@aarch64_pred_<SVE2_COND_INT_UNARY_FP:sve_fp_op><mode>): Likewise.
34935         (@cond_<SVE2_COND_INT_UNARY_FP:sve_fp_op><mode>): New expander.
34936         (*cond_<SVE2_COND_INT_UNARY_FP:sve_fp_op><mode>): New pattern.
34937         (@aarch64_sve2_pmul<mode>): Likewise.
34938         (@aarch64_sve_<SVE2_PMULL:optab><mode>): Likewise.
34939         (@aarch64_sve_<SVE2_PMULL_PAIR:optab><mode>): Likewise.
34940         (@aarch64_sve2_tbl2<mode>): Likewise.
34941         (@aarch64_sve2_tbx<mode>): Likewise.
34942         (@aarch64_sve_<SVE2_INT_BITPERM:sve_int_op><mode>): Likewise.
34943         (@aarch64_sve2_histcnt<mode>): Likewise.
34944         (@aarch64_sve2_histseg<mode>): Likewise.
34945         (@aarch64_pred_<SVE2_MATCH:sve_int_op><mode>): Likewise.
34946         (*aarch64_pred_<SVE2_MATCH:sve_int_op><mode>_cc): Likewise.
34947         (*aarch64_pred_<SVE2_MATCH:sve_int_op><mode>_ptest): Likewise.
34948         (aarch64_sve2_aes<CRYPTO_AES:aes_op>): Likewise.
34949         (aarch64_sve2_aes<CRYPTO_AESMC:aesmc_op>): Likewise.
34950         (*aarch64_sve2_aese_fused, *aarch64_sve2_aesd_fused): Likewise.
34951         (aarch64_sve2_rax1, aarch64_sve2_sm4e, aarch64_sve2_sm4ekey): Likewise.
34952         (<su>mulh<r>s<mode>3): Update after above pattern name changes.
34953         * config/aarch64/iterators.md (VNx16QI_ONLY, VNx4SF_ONLY)
34954         (SVE_STRUCT2, SVE_FULL_BHI, SVE_FULL_HSI, SVE_FULL_HDI)
34955         (SVE2_PMULL_PAIR_I): New mode iterators.
34956         (UNSPEC_ADCLB, UNSPEC_ADCLT, UNSPEC_ADDHNB, UNSPEC_ADDHNT, UNSPEC_BDEP)
34957         (UNSPEC_BEXT, UNSPEC_BGRP, UNSPEC_CADD90, UNSPEC_CADD270, UNSPEC_CDOT)
34958         (UNSPEC_CDOT90, UNSPEC_CDOT180, UNSPEC_CDOT270, UNSPEC_CMLA)
34959         (UNSPEC_CMLA90, UNSPEC_CMLA180, UNSPEC_CMLA270, UNSPEC_COND_FCVTLT)
34960         (UNSPEC_COND_FCVTNT, UNSPEC_COND_FCVTX, UNSPEC_COND_FCVTXNT)
34961         (UNSPEC_COND_FLOGB, UNSPEC_EORBT, UNSPEC_EORTB, UNSPEC_FADDP)
34962         (UNSPEC_FMAXP, UNSPEC_FMAXNMP, UNSPEC_FMLALB, UNSPEC_FMLALT)
34963         (UNSPEC_FMLSLB, UNSPEC_FMLSLT, UNSPEC_FMINP, UNSPEC_FMINNMP)
34964         (UNSPEC_HISTCNT, UNSPEC_HISTSEG, UNSPEC_MATCH, UNSPEC_NMATCH)
34965         (UNSPEC_PMULLB, UNSPEC_PMULLB_PAIR, UNSPEC_PMULLT, UNSPEC_PMULLT_PAIR)
34966         (UNSPEC_RADDHNB, UNSPEC_RADDHNT, UNSPEC_RSUBHNB, UNSPEC_RSUBHNT)
34967         (UNSPEC_SLI, UNSPEC_SRI, UNSPEC_SABDLB, UNSPEC_SABDLT, UNSPEC_SADDLB)
34968         (UNSPEC_SADDLBT, UNSPEC_SADDLT, UNSPEC_SADDWB, UNSPEC_SADDWT)
34969         (UNSPEC_SBCLB, UNSPEC_SBCLT, UNSPEC_SMAXP, UNSPEC_SMINP)
34970         (UNSPEC_SQCADD90, UNSPEC_SQCADD270, UNSPEC_SQDMULLB, UNSPEC_SQDMULLBT)
34971         (UNSPEC_SQDMULLT, UNSPEC_SQRDCMLAH, UNSPEC_SQRDCMLAH90)
34972         (UNSPEC_SQRDCMLAH180, UNSPEC_SQRDCMLAH270, UNSPEC_SQRSHRNB)
34973         (UNSPEC_SQRSHRNT, UNSPEC_SQRSHRUNB, UNSPEC_SQRSHRUNT, UNSPEC_SQSHRNB)
34974         (UNSPEC_SQSHRNT, UNSPEC_SQSHRUNB, UNSPEC_SQSHRUNT, UNSPEC_SQXTNB)
34975         (UNSPEC_SQXTNT, UNSPEC_SQXTUNB, UNSPEC_SQXTUNT, UNSPEC_SSHLLB)
34976         (UNSPEC_SSHLLT, UNSPEC_SSUBLB, UNSPEC_SSUBLBT, UNSPEC_SSUBLT)
34977         (UNSPEC_SSUBLTB, UNSPEC_SSUBWB, UNSPEC_SSUBWT, UNSPEC_SUBHNB)
34978         (UNSPEC_SUBHNT, UNSPEC_TBL2, UNSPEC_UABDLB, UNSPEC_UABDLT)
34979         (UNSPEC_UADDLB, UNSPEC_UADDLT, UNSPEC_UADDWB, UNSPEC_UADDWT)
34980         (UNSPEC_UMAXP, UNSPEC_UMINP, UNSPEC_UQRSHRNB, UNSPEC_UQRSHRNT)
34981         (UNSPEC_UQSHRNB, UNSPEC_UQSHRNT, UNSPEC_UQXTNB, UNSPEC_UQXTNT)
34982         (UNSPEC_USHLLB, UNSPEC_USHLLT, UNSPEC_USUBLB, UNSPEC_USUBLT)
34983         (UNSPEC_USUBWB, UNSPEC_USUBWT): New unspecs.
34984         (UNSPEC_SMULLB, UNSPEC_SMULLT, UNSPEC_UMULLB, UNSPEC_UMULLT)
34985         (UNSPEC_SMULHS, UNSPEC_SMULHRS, UNSPEC_UMULHS, UNSPEC_UMULHRS)
34986         (UNSPEC_RSHRNB, UNSPEC_RSHRNT, UNSPEC_SHRNB, UNSPEC_SHRNT): Move
34987         further down file.
34988         (VNARROW, Ventype): New mode attributes.
34989         (Vewtype): Handle VNx2DI.  Fix typo in comment.
34990         (VDOUBLE): New mode attribute.
34991         (sve_lane_con): Handle VNx8HI.
34992         (SVE_INT_UNARY): Include ss_abs and ss_neg for TARGET_SVE2.
34993         (SVE_INT_BINARY): Likewise ss_plus, us_plus, ss_minus and us_minus.
34994         (sve_int_op, sve_int_op_rev): Handle the above codes.
34995         (sve_pred_int_rhs2_operand): Likewise.
34996         (MULLBT, SHRNB, SHRNT): Delete.
34997         (SVE_INT_SHIFT_IMM): New int iterator.
34998         (SVE_WHILE): Add UNSPEC_WHILEGE, UNSPEC_WHILEGT, UNSPEC_WHILEHI
34999         and UNSPEC_WHILEHS for TARGET_SVE2.
35000         (SVE2_U32_UNARY, SVE2_INT_UNARY_NARROWB, SVE2_INT_UNARY_NARROWT)
35001         (SVE2_INT_BINARY, SVE2_INT_BINARY_LANE, SVE2_INT_BINARY_LONG)
35002         (SVE2_INT_BINARY_LONG_LANE, SVE2_INT_BINARY_NARROWB)
35003         (SVE2_INT_BINARY_NARROWT, SVE2_INT_BINARY_PAIR, SVE2_FP_BINARY_PAIR)
35004         (SVE2_INT_BINARY_PAIR_LONG, SVE2_INT_BINARY_WIDE): New int iterators.
35005         (SVE2_INT_SHIFT_IMM_LONG, SVE2_INT_SHIFT_IMM_NARROWB): Likewise.
35006         (SVE2_INT_SHIFT_IMM_NARROWT, SVE2_INT_SHIFT_INSERT, SVE2_INT_CADD)
35007         (SVE2_INT_BITPERM, SVE2_INT_TERNARY, SVE2_INT_TERNARY_LANE): Likewise.
35008         (SVE2_FP_TERNARY_LONG, SVE2_FP_TERNARY_LONG_LANE, SVE2_INT_CMLA)
35009         (SVE2_INT_CDOT, SVE2_INT_ADD_BINARY_LONG, SVE2_INT_QADD_BINARY_LONG)
35010         (SVE2_INT_SUB_BINARY_LONG, SVE2_INT_QSUB_BINARY_LONG): Likewise.
35011         (SVE2_INT_ADD_BINARY_LONG_LANE, SVE2_INT_QADD_BINARY_LONG_LANE)
35012         (SVE2_INT_SUB_BINARY_LONG_LANE, SVE2_INT_QSUB_BINARY_LONG_LANE)
35013         (SVE2_COND_INT_UNARY_FP, SVE2_COND_FP_UNARY_LONG): Likewise.
35014         (SVE2_COND_FP_UNARY_NARROWB, SVE2_COND_INT_BINARY): Likewise.
35015         (SVE2_COND_INT_BINARY_NOREV, SVE2_COND_INT_BINARY_REV): Likewise.
35016         (SVE2_COND_INT_SHIFT, SVE2_MATCH, SVE2_PMULL): Likewise.
35017         (optab): Handle the new unspecs.
35018         (su, r): Remove entries for UNSPEC_SHRNB, UNSPEC_SHRNT, UNSPEC_RSHRNB
35019         and UNSPEC_RSHRNT.
35020         (lr): Handle the new unspecs.
35021         (bt): Delete.
35022         (cmp_op, while_optab_cmp, sve_int_op): Handle the new unspecs.
35023         (sve_int_op_rev, sve_int_add_op, sve_int_qadd_op, sve_int_sub_op)
35024         (sve_int_qsub_op): New int attributes.
35025         (sve_fp_op, rot): Handle the new unspecs.
35026         * config/aarch64/aarch64-sve-builtins.h
35027         (function_resolver::require_matching_pointer_type): Declare.
35028         (function_resolver::resolve_unary): Add an optional boolean argument.
35029         (function_resolver::finish_opt_n_resolution): Add an optional
35030         type_suffix_index argument.
35031         (gimple_folder::redirect_call): Declare.
35032         (gimple_expander::prepare_gather_address_operands): Add an optional
35033         bool parameter.
35034         * config/aarch64/aarch64-sve-builtins.cc: Include
35035         aarch64-sve-builtins-sve2.h.
35036         (TYPES_b_unsigned, TYPES_b_integer, TYPES_bh_integer): New macros.
35037         (TYPES_bs_unsigned, TYPES_hs_signed, TYPES_hs_integer): Likewise.
35038         (TYPES_hd_unsigned, TYPES_hsd_signed): Likewise.
35039         (TYPES_hsd_integer): Use TYPES_hsd_signed.
35040         (TYPES_s_float_hsd_integer, TYPES_s_float_sd_integer): New macros.
35041         (TYPES_s_unsigned): Likewise.
35042         (TYPES_s_integer): Use TYPES_s_unsigned.
35043         (TYPES_sd_signed, TYPES_sd_unsigned): New macros.
35044         (TYPES_sd_integer): Use them.
35045         (TYPES_d_unsigned): New macro.
35046         (TYPES_d_integer): Use it.
35047         (TYPES_d_data, TYPES_cvt_long, TYPES_cvt_narrow_s): New macros.
35048         (TYPES_cvt_narrow): Likewise.
35049         (DEF_SVE_TYPES_ARRAY): Include the new types macros above.
35050         (preds_mx): New variable.
35051         (function_builder::add_overloaded_function): Allow the new feature
35052         set to be more restrictive than the original one.
35053         (function_resolver::infer_pointer_type): Remove qualifiers from
35054         the pointer type before printing it.
35055         (function_resolver::require_matching_pointer_type): New function.
35056         (function_resolver::resolve_sv_displacement): Handle functions
35057         that don't support 32-bit vector indices or svint32_t vector offsets.
35058         (function_resolver::finish_opt_n_resolution): Take the inferred type
35059         as a separate argument.
35060         (function_resolver::resolve_unary): Optionally treat all forms in
35061         the same way as normal merging functions.
35062         (gimple_folder::redirect_call): New function.
35063         (function_expander::prepare_gather_address_operands): Add an argument
35064         that says whether scaled forms are available.  If they aren't,
35065         handle scaling of vector indices and don't add the extension and
35066         scaling operands.
35067         (function_expander::map_to_unspecs): If aarch64_sve isn't available,
35068         fall back to using cond_* instead.
35069         * config/aarch64/aarch64-sve-builtins-functions.h (rtx_code_function):
35070         Split out the member variables into...
35071         (rtx_code_function_base): ...this new base class.
35072         (rtx_code_function_rotated): Inherit rtx_code_function_base.
35073         (unspec_based_function): Split out the member variables into...
35074         (unspec_based_function_base): ...this new base class.
35075         (unspec_based_function_rotated): Inherit unspec_based_function_base.
35076         (unspec_based_function_exact_insn): New class.
35077         (unspec_based_add_function, unspec_based_add_lane_function)
35078         (unspec_based_lane_function, unspec_based_pred_function)
35079         (unspec_based_qadd_function, unspec_based_qadd_lane_function)
35080         (unspec_based_qsub_function, unspec_based_qsub_lane_function)
35081         (unspec_based_sub_function, unspec_based_sub_lane_function): New
35082         typedefs.
35083         (unspec_based_fused_function): New class.
35084         (unspec_based_mla_function, unspec_based_mls_function): New typedefs.
35085         (unspec_based_fused_lane_function): New class.
35086         (unspec_based_mla_lane_function, unspec_based_mls_lane_function): New
35087         typedefs.
35088         (CODE_FOR_MODE1): New macro.
35089         (fixed_insn_function): New class.
35090         (while_comparison): Likewise.
35091         * config/aarch64/aarch64-sve-builtins-shapes.h (binary_long_lane)
35092         (binary_long_opt_n, binary_narrowb_opt_n, binary_narrowt_opt_n)
35093         (binary_to_uint, binary_wide, binary_wide_opt_n, compare, compare_ptr)
35094         (load_ext_gather_index_restricted, load_ext_gather_offset_restricted)
35095         (load_gather_sv_restricted, shift_left_imm_long): Declare.
35096         (shift_left_imm_to_uint, shift_right_imm_narrowb): Likewise.
35097         (shift_right_imm_narrowt, shift_right_imm_narrowb_to_uint): Likewise.
35098         (shift_right_imm_narrowt_to_uint, store_scatter_index_restricted)
35099         (store_scatter_offset_restricted, tbl_tuple, ternary_long_lane)
35100         (ternary_long_opt_n, ternary_qq_lane_rotate, ternary_qq_rotate)
35101         (ternary_shift_left_imm, ternary_shift_right_imm, ternary_uint)
35102         (unary_convert_narrowt, unary_long, unary_narrowb, unary_narrowt)
35103         (unary_narrowb_to_uint, unary_narrowt_to_uint, unary_to_int): Likewise.
35104         * config/aarch64/aarch64-sve-builtins-shapes.cc (apply_predication):
35105         Also add an initial argument for unary_convert_narrowt, regardless
35106         of the predication type.
35107         (build_32_64): Allow loads and stores to specify MODE_none.
35108         (build_sv_index64, build_sv_uint_offset): New functions.
35109         (long_type_suffix): New function.
35110         (binary_imm_narrowb_base, binary_imm_narrowt_base): New classes.
35111         (binary_imm_long_base, load_gather_sv_base): Likewise.
35112         (shift_right_imm_narrow_wrapper, ternary_shift_imm_base): Likewise.
35113         (ternary_resize2_opt_n_base, ternary_resize2_lane_base): Likewise.
35114         (unary_narrowb_base, unary_narrowt_base): Likewise.
35115         (binary_long_lane_def, binary_long_lane): New shape.
35116         (binary_long_opt_n_def, binary_long_opt_n): Likewise.
35117         (binary_narrowb_opt_n_def, binary_narrowb_opt_n): Likewise.
35118         (binary_narrowt_opt_n_def, binary_narrowt_opt_n): Likewise.
35119         (binary_to_uint_def, binary_to_uint): Likewise.
35120         (binary_wide_def, binary_wide): Likewise.
35121         (binary_wide_opt_n_def, binary_wide_opt_n): Likewise.
35122         (compare_def, compare): Likewise.
35123         (compare_ptr_def, compare_ptr): Likewise.
35124         (load_ext_gather_index_restricted_def,
35125         load_ext_gather_index_restricted): Likewise.
35126         (load_ext_gather_offset_restricted_def,
35127         load_ext_gather_offset_restricted): Likewise.
35128         (load_gather_sv_def): Inherit from load_gather_sv_base.
35129         (load_gather_sv_restricted_def, load_gather_sv_restricted): New shape.
35130         (shift_left_imm_def, shift_left_imm): Likewise.
35131         (shift_left_imm_long_def, shift_left_imm_long): Likewise.
35132         (shift_left_imm_to_uint_def, shift_left_imm_to_uint): Likewise.
35133         (store_scatter_index_restricted_def,
35134         store_scatter_index_restricted): Likewise.
35135         (store_scatter_offset_restricted_def,
35136         store_scatter_offset_restricted): Likewise.
35137         (tbl_tuple_def, tbl_tuple): Likewise.
35138         (ternary_long_lane_def, ternary_long_lane): Likewise.
35139         (ternary_long_opt_n_def, ternary_long_opt_n): Likewise.
35140         (ternary_qq_lane_def): Inherit from ternary_resize2_lane_base.
35141         (ternary_qq_lane_rotate_def, ternary_qq_lane_rotate): New shape
35142         (ternary_qq_opt_n_def): Inherit from ternary_resize2_opt_n_base.
35143         (ternary_qq_rotate_def, ternary_qq_rotate): New shape.
35144         (ternary_shift_left_imm_def, ternary_shift_left_imm): Likewise.
35145         (ternary_shift_right_imm_def, ternary_shift_right_imm): Likewise.
35146         (ternary_uint_def, ternary_uint): Likewise.
35147         (unary_convert): Fix typo in comment.
35148         (unary_convert_narrowt_def, unary_convert_narrowt): New shape.
35149         (unary_long_def, unary_long): Likewise.
35150         (unary_narrowb_def, unary_narrowb): Likewise.
35151         (unary_narrowt_def, unary_narrowt): Likewise.
35152         (unary_narrowb_to_uint_def, unary_narrowb_to_uint): Likewise.
35153         (unary_narrowt_to_uint_def, unary_narrowt_to_uint): Likewise.
35154         (unary_to_int_def, unary_to_int): Likewise.
35155         * config/aarch64/aarch64-sve-builtins-base.cc (unspec_cmla)
35156         (unspec_fcmla, unspec_cond_fcmla, expand_mla_mls_lane): New functions.
35157         (svasrd_impl): Delete.
35158         (svcadd_impl::expand): Handle integer operations too.
35159         (svcmla_impl::expand, svcmla_lane::expand): Likewise, using the
35160         new functions to derive the unspec numbers.
35161         (svmla_svmls_lane_impl): Replace with...
35162         (svmla_lane_impl, svmls_lane_impl): ...these new classes.  Handle
35163         integer operations too.
35164         (svwhile_impl): Rename to...
35165         (svwhilelx_impl): ...this and inherit from while_comparison.
35166         (svasrd): Use unspec_based_function.
35167         (svmla_lane): Use svmla_lane_impl.
35168         (svmls_lane): Use svmls_lane_impl.
35169         (svrecpe, svrsqrte): Handle unsigned integer operations too.
35170         (svwhilele, svwhilelt): Use svwhilelx_impl.
35171         * config/aarch64/aarch64-sve-builtins-sve2.h: New file.
35172         * config/aarch64/aarch64-sve-builtins-sve2.cc: Likewise.
35173         * config/aarch64/aarch64-sve-builtins-sve2.def: Likewise.
35174         * config/aarch64/aarch64-sve-builtins.def: Include
35175         aarch64-sve-builtins-sve2.def.
35177 2020-01-09  Richard Sandiford  <richard.sandiford@arm.com>
35179         * config/aarch64/aarch64-protos.h (aarch64_sve_arith_immediate_p)
35180         (aarch64_sve_sqadd_sqsub_immediate_p): Add a machine_mode argument.
35181         * config/aarch64/aarch64.c (aarch64_sve_arith_immediate_p)
35182         (aarch64_sve_sqadd_sqsub_immediate_p): Likewise.  Handle scalar
35183         immediates as well as vector ones.
35184         * config/aarch64/predicates.md (aarch64_sve_arith_immediate)
35185         (aarch64_sve_sub_arith_immediate, aarch64_sve_qadd_immediate)
35186         (aarch64_sve_qsub_immediate): Update calls accordingly.
35188 2020-01-09  Richard Sandiford  <richard.sandiford@arm.com>
35190         * config/aarch64/aarch64-sve2.md: Add banner comments.
35191         (<su>mulh<r>s<mode>3): Move further up file.
35192         (<su>mull<bt><Vwide>, <r>shrnb<mode>, <r>shrnt<mode>)
35193         (*aarch64_sve2_sra<mode>): Move further down file.
35194         * config/aarch64/t-aarch64 (s-check-sve-md): Check aarch64-sve2.md too.
35196 2020-01-09  Richard Sandiford  <richard.sandiford@arm.com>
35198         * config/aarch64/iterators.md (SVE_WHILE): Add UNSPEC_WHILERW
35199         and UNSPEC_WHILEWR.
35200         (while_optab_cmp): Handle them.
35201         * config/aarch64/aarch64-sve.md
35202         (*while_<while_optab_cmp><GPI:mode><PRED_ALL:mode>_ptest): Make public
35203         and add a "@" marker.
35204         * config/aarch64/aarch64-sve2.md (check_<raw_war>_ptrs<mode>): Use it
35205         instead of gen_aarch64_sve2_while_ptest.
35206         (@aarch64_sve2_while<cmp_op><GPI:mode><PRED_ALL:mode>_ptest): Delete.
35208 2020-01-09  Richard Sandiford  <richard.sandiford@arm.com>
35210         * config/aarch64/aarch64.md (UNSPEC_WHILE_LE): Rename to...
35211         (UNSPEC_WHILELE): ...this.
35212         (UNSPEC_WHILE_LO): Rename to...
35213         (UNSPEC_WHILELO): ...this.
35214         (UNSPEC_WHILE_LS): Rename to...
35215         (UNSPEC_WHILELS): ...this.
35216         (UNSPEC_WHILE_LT): Rename to...
35217         (UNSPEC_WHILELT): ...this.
35218         * config/aarch64/iterators.md (SVE_WHILE): Update accordingly.
35219         (cmp_op, while_optab_cmp): Likewise.
35220         * config/aarch64/aarch64.c (aarch64_sve_move_pred_via_while): Likewise.
35221         * config/aarch64/aarch64-sve-builtins-base.cc (svwhilele): Likewise.
35222         (svwhilelt): Likewise.
35224 2020-01-09  Richard Sandiford  <richard.sandiford@arm.com>
35226         * config/aarch64/aarch64-sve-builtins-shapes.h (unary_count): Delete.
35227         (unary_to_uint): Define.
35228         * config/aarch64/aarch64-sve-builtins-shapes.cc (unary_count_def)
35229         (unary_count): Rename to...
35230         (unary_to_uint_def, unary_to_uint): ...this.
35231         * config/aarch64/aarch64-sve-builtins-base.def: Update accordingly.
35233 2020-01-09  Richard Sandiford  <richard.sandiford@arm.com>
35235         * config/aarch64/aarch64-sve-builtins-functions.h
35236         (code_for_mode_function): New class.
35237         (CODE_FOR_MODE0, QUIET_CODE_FOR_MODE0): New macros.
35238         * config/aarch64/aarch64-sve-builtins-base.cc (svcompact_impl)
35239         (svext_impl, svmul_lane_impl, svsplice_impl, svtmad_impl): Delete.
35240         (svcompact, svext, svsplice): Use QUIET_CODE_FOR_MODE0.
35241         (svmul_lane, svtmad): Use CODE_FOR_MODE0.
35243 2020-01-09  Richard Sandiford  <richard.sandiford@arm.com>
35245         * config/aarch64/iterators.md (addsub): New code attribute.
35246         * config/aarch64/aarch64-simd.md (aarch64_<su_optab><optab><mode>):
35247         Re-express as...
35248         (aarch64_<su_optab>q<addsub><mode>): ...this, making the same change
35249         in the asm string and attributes.  Fix indentation.
35250         * config/aarch64/aarch64-sve.md (@aarch64_<su_optab><optab><mode>):
35251         Re-express as...
35252         (@aarch64_sve_<optab><mode>): ...this.
35253         * config/aarch64/aarch64-sve-builtins.h
35254         (function_expander::expand_signed_unpred_op): Delete.
35255         * config/aarch64/aarch64-sve-builtins.cc
35256         (function_expander::expand_signed_unpred_op): Likewise.
35257         (function_expander::map_to_rtx_codes): If the optab isn't defined,
35258         try using code_for_aarch64_sve instead.
35259         * config/aarch64/aarch64-sve-builtins-base.cc (svqadd_impl): Delete.
35260         (svqsub_impl): Likewise.
35261         (svqadd, svqsub): Use rtx_code_function instead.
35263 2020-01-09  Richard Sandiford  <richard.sandiford@arm.com>
35265         * config/aarch64/iterators.md (SRHSUB, URHSUB): Delete.
35266         (HADDSUB, sur, addsub): Remove them.
35268 2020-01-09  Richard Sandiford  <richard.sandiford@arm.com>
35270         * tree-nrv.c (pass_return_slot::execute): Handle all internal
35271         functions the same way, rather than singling out those that
35272         aren't mapped directly to optabs.
35274 2020-01-09  Richard Sandiford  <richard.sandiford@arm.com>
35276         * target.def (compatible_vector_types_p): New target hook.
35277         * hooks.h (hook_bool_const_tree_const_tree_true): Declare.
35278         * hooks.c (hook_bool_const_tree_const_tree_true): New function.
35279         * doc/tm.texi.in (TARGET_COMPATIBLE_VECTOR_TYPES_P): New hook.
35280         * doc/tm.texi: Regenerate.
35281         * gimple-expr.c: Include target.h.
35282         (useless_type_conversion_p): Use targetm.compatible_vector_types_p.
35283         * config/aarch64/aarch64.c (aarch64_compatible_vector_types_p): New
35284         function.
35285         (TARGET_COMPATIBLE_VECTOR_TYPES_P): Define.
35286         * config/aarch64/aarch64-sve-builtins.cc (gimple_folder::convert_pred):
35287         Use the original predicate if it already has a suitable type.
35289 2020-01-09  Martin Jambor  <mjambor@suse.cz>
35291         * cgraph.h (cgraph_edge): Make remove, set_call_stmt, make_direct,
35292         resolve_speculation and redirect_call_stmt_to_callee static.  Change
35293         return type of set_call_stmt to cgraph_edge *.
35294         * auto-profile.c (afdo_indirect_call): Adjust call to
35295         redirect_call_stmt_to_callee.
35296         * cgraph.c (cgraph_edge::set_call_stmt): Make return cgraph-edge *,
35297         make the this pointer explicit, adjust self-recursive calls and the
35298         call top make_direct.  Return the resulting edge.
35299         (cgraph_edge::remove): Make this pointer explicit.
35300         (cgraph_edge::resolve_speculation): Likewise, adjust call to remove.
35301         (cgraph_edge::make_direct): Likewise, adjust call to
35302         resolve_speculation.
35303         (cgraph_edge::redirect_call_stmt_to_callee): Likewise, also adjust
35304         call to set_call_stmt.
35305         (cgraph_update_edges_for_call_stmt_node): Update call to
35306         set_call_stmt and remove.
35307         * cgraphclones.c (cgraph_node::set_call_stmt_including_clones):
35308         Renamed edge to master_edge.  Adjusted calls to set_call_stmt.
35309         (cgraph_node::create_edge_including_clones): Moved "first" definition
35310         of edge to the block where it was used.  Adjusted calls to
35311         set_call_stmt.
35312         (cgraph_node::remove_symbol_and_inline_clones): Adjust call to
35313         cgraph_edge::remove.
35314         * cgraphunit.c (walk_polymorphic_call_targets): Adjusted calls to
35315         make_direct and redirect_call_stmt_to_callee.
35316         * ipa-fnsummary.c (redirect_to_unreachable): Adjust calls to
35317         resolve_speculation and make_direct.
35318         * ipa-inline-transform.c (inline_transform): Adjust call to
35319         redirect_call_stmt_to_callee.
35320         (check_speculations_1):: Adjust call to resolve_speculation.
35321         * ipa-inline.c (resolve_noninline_speculation): Adjust call to
35322         resolve-speculation.
35323         (inline_small_functions): Adjust call to resolve_speculation.
35324         (ipa_inline): Likewise.
35325         * ipa-prop.c (ipa_make_edge_direct_to_target): Adjust call to
35326         make_direct.
35327         * ipa-visibility.c (function_and_variable_visibility): Make iteration
35328         safe with regards to edge removal, adjust calls to
35329         redirect_call_stmt_to_callee.
35330         * ipa.c (walk_polymorphic_call_targets): Adjust calls to make_direct
35331         and redirect_call_stmt_to_callee.
35332         * multiple_target.c (create_dispatcher_calls): Adjust call to
35333         redirect_call_stmt_to_callee
35334         (redirect_to_specific_clone): Likewise.
35335         * tree-cfgcleanup.c (delete_unreachable_blocks_update_callgraph):
35336         Adjust calls to cgraph_edge::remove.
35337         * tree-inline.c (copy_bb): Adjust call to set_call_stmt.
35338         (redirect_all_calls): Adjust call to redirect_call_stmt_to_callee.
35339         (expand_call_inline): Adjust call to cgraph_edge::remove.
35341 2020-01-09  Martin Liska  <mliska@suse.cz>
35343         * params.opt: Set Optimization for
35344         param_max_speculative_devirt_maydefs.
35346 2020-01-09  Martin Sebor  <msebor@redhat.com>
35348         PR middle-end/93200
35349         PR fortran/92956
35350         * builtins.c (compute_objsize): Avoid handling MEM_REFs of vector type.
35352 2020-01-09  Martin Liska  <mliska@suse.cz>
35354         * auto-profile.c (auto_profile): Use opt_for_fn
35355         for a parameter.
35356         * ipa-cp.c (ipcp_lattice::add_value): Likewise.
35357         (propagate_vals_across_arith_jfunc): Likewise.
35358         (hint_time_bonus): Likewise.
35359         (incorporate_penalties): Likewise.
35360         (good_cloning_opportunity_p): Likewise.
35361         (perform_estimation_of_a_value): Likewise.
35362         (estimate_local_effects): Likewise.
35363         (ipcp_propagate_stage): Likewise.
35364         * ipa-fnsummary.c (decompose_param_expr): Likewise.
35365         (set_switch_stmt_execution_predicate): Likewise.
35366         (analyze_function_body): Likewise.
35367         * ipa-inline-analysis.c (offline_size): Likewise.
35368         * ipa-inline.c (early_inliner): Likewise.
35369         * ipa-prop.c (ipa_analyze_node): Likewise.
35370         (ipcp_transform_function): Likewise.
35371         * ipa-sra.c (process_scan_results): Likewise.
35372         (ipa_sra_summarize_function): Likewise.
35373         * params.opt: Rename ipcp-unit-growth to
35374         ipa-cp-unit-growth.  Add Optimization for various
35375         IPA-related parameters.
35377 2020-01-09  Richard Biener  <rguenther@suse.de>
35379         PR middle-end/93054
35380         * gimplify.c (gimplify_expr): Deal with NOP definitions.
35382 2020-01-09  Richard Biener  <rguenther@suse.de>
35384         PR tree-optimization/93040
35385         * gimple-ssa-store-merging.c (find_bswap_or_nop): Raise search limit.
35387 2020-01-09  Georg-Johann Lay  <avr@gjlay.de>
35389         * common/config/avr/avr-common.c (avr_option_optimization_table)
35390         [OPT_LEVELS_1_PLUS]: Set -fsplit-wide-types-early.
35392 2020-01-09  Martin Liska  <mliska@suse.cz>
35394         * cgraphclones.c (symbol_table::materialize_all_clones):
35395         Use cgraph_node::dump_name.
35397 2020-01-09  Jakub Jelinek  <jakub@redhat.com>
35399         PR inline-asm/93202
35400         * config/riscv/riscv.c (riscv_print_operand_reloc): Use
35401         output_operand_lossage instead of gcc_unreachable.
35402         * doc/md.texi (riscv f constraint): Fix typo.
35404         PR target/93141
35405         * config/i386/i386.md (subv<mode>4): Use SWIDWI iterator instead of
35406         SWI.  Use <general_hilo_operand> instead of <general_operand>.  Use
35407         CONST_SCALAR_INT_P instead of CONST_INT_P.
35408         (*subv<mode>4_1): Rename to ...
35409         (subv<mode>4_1): ... this.
35410         (*subv<dwi>4_doubleword, *addv<dwi>4_doubleword_1): New
35411         define_insn_and_split patterns.
35412         (*subv<mode>4_overflow_1, *addv<mode>4_overflow_2): New define_insn
35413         patterns.
35415 2020-01-08  David Malcolm  <dmalcolm@redhat.com>
35417         * vec.c (class selftest::count_dtor): New class.
35418         (selftest::test_auto_delete_vec): New test.
35419         (selftest::vec_c_tests): Call it.
35420         * vec.h (class auto_delete_vec): New class template.
35421         (auto_delete_vec<T>::~auto_delete_vec): New dtor.
35423 2020-01-08  David Malcolm  <dmalcolm@redhat.com>
35425         * sbitmap.h (auto_sbitmap): Add operator const_sbitmap.
35427 2020-01-08  Jim Wilson  <jimw@sifive.com>
35429         * config/riscv/riscv.c (riscv_legitimize_tls_address): Ifdef out
35430         use of TLS_MODEL_LOCAL_EXEC when not pic.
35432 2020-01-08  David Malcolm  <dmalcolm@redhat.com>
35434         * hash-map-tests.c (selftest::test_map_of_strings_to_int): Fix
35435         memory leak.
35437 2020-01-08  Jakub Jelinek  <jakub@redhat.com>
35439         PR target/93187
35440         * config/i386/i386.md (*stack_protect_set_2_<mode> peephole2,
35441         *stack_protect_set_3 peephole2): Also check that the second
35442         insns source is general_operand.
35444         PR target/93174
35445         * config/i386/i386.md (addcarry<mode>_0): Use nonimmediate_operand
35446         predicate for output operand instead of register_operand.
35447         (addcarry<mode>, addcarry<mode>_1): Likewise.  Add alternative with
35448         memory destination and non-memory operands[2].
35450 2020-01-08  Martin Liska  <mliska@suse.cz>
35452         * cgraph.c (cgraph_node::dump): Use ::dump_name or
35453         ::dump_asm_name instead of (::name or ::asm_name).
35454         * cgraphclones.c (symbol_table::materialize_all_clones): Likewise.
35455         * cgraphunit.c (walk_polymorphic_call_targets): Likewise.
35456         (analyze_functions): Likewise.
35457         (expand_all_functions): Likewise.
35458         * ipa-cp.c (ipcp_cloning_candidate_p): Likewise.
35459         (propagate_bits_across_jump_function): Likewise.
35460         (dump_profile_updates): Likewise.
35461         (ipcp_store_bits_results): Likewise.
35462         (ipcp_store_vr_results): Likewise.
35463         * ipa-devirt.c (dump_targets): Likewise.
35464         * ipa-fnsummary.c (analyze_function_body): Likewise.
35465         * ipa-hsa.c (check_warn_node_versionable): Likewise.
35466         (process_hsa_functions): Likewise.
35467         * ipa-icf.c (sem_item_optimizer::merge_classes): Likewise.
35468         (set_alias_uids): Likewise.
35469         * ipa-inline-transform.c (save_inline_function_body): Likewise.
35470         * ipa-inline.c (recursive_inlining): Likewise.
35471         (inline_to_all_callers_1): Likewise.
35472         (ipa_inline): Likewise.
35473         * ipa-profile.c (ipa_propagate_frequency_1): Likewise.
35474         (ipa_propagate_frequency): Likewise.
35475         * ipa-prop.c (ipa_make_edge_direct_to_target): Likewise.
35476         (remove_described_reference): Likewise.
35477         * ipa-pure-const.c (worse_state): Likewise.
35478         (check_retval_uses): Likewise.
35479         (analyze_function): Likewise.
35480         (propagate_pure_const): Likewise.
35481         (propagate_nothrow): Likewise.
35482         (dump_malloc_lattice): Likewise.
35483         (propagate_malloc): Likewise.
35484         (pass_local_pure_const::execute): Likewise.
35485         * ipa-visibility.c (optimize_weakref): Likewise.
35486         (function_and_variable_visibility): Likewise.
35487         * ipa.c (symbol_table::remove_unreachable_nodes): Likewise.
35488         (ipa_discover_variable_flags): Likewise.
35489         * lto-streamer-out.c (output_function): Likewise.
35490         (output_constructor): Likewise.
35491         * tree-inline.c (copy_bb): Likewise.
35492         * tree-ssa-structalias.c (ipa_pta_execute): Likewise.
35493         * varpool.c (symbol_table::remove_unreferenced_decls): Likewise.
35495 2020-01-08  Richard Biener  <rguenther@suse.de>
35497         PR middle-end/93199
35498         * tree-eh.c (sink_clobbers): Update virtual operands for
35499         the first and last stmt only.  Add a dry-run capability.
35500         (pass_lower_eh_dispatch::execute): Perform clobber sinking
35501         after CFG manipulations and in RPO order to catch all
35502         secondary opportunities reliably.
35504 2020-01-08  Georg-Johann Lay  <avr@gjlay.de>
35506         PR target/93182
35507         * doc/invoke.texi (AVR Options) <-nodevicespecs>: Document.
35509 2019-01-08  Richard Biener  <rguenther@suse.de>
35511         PR middle-end/93199
35512         * gimple-fold.c (rewrite_to_defined_overflow): Mark stmt modified.
35513         * tree-ssa-loop-im.c (move_computations_worker): Properly adjust
35514         virtual operand, also updating SSA use.
35515         * gimple-loop-interchange.cc (loop_cand::undo_simple_reduction):
35516         Update stmt after resetting virtual operand.
35517         (tree_loop_interchange::move_code_to_inner_loop): Likewise.
35518         * gimple-iterator.c (gsi_remove): When not removing the stmt
35519         permanently do not delink immediate uses or mark the stmt modified.
35521 2020-01-08  Martin Liska  <mliska@suse.cz>
35523         * ipa-fnsummary.c (dump_ipa_call_summary): Use symtab_node::dump_name.
35524         (ipa_call_context::estimate_size_and_time): Likewise.
35525         (inline_analyze_function): Likewise.
35527 2020-01-08  Martin Liska  <mliska@suse.cz>
35529         * cgraph.c (cgraph_node::dump): Use systematically
35530         dump_asm_name.
35532 2020-01-08  Georg-Johann Lay  <avr@gjlay.de>
35534         Add -nodevicespecs option for avr.
35536         PR target/93182
35537         * config/avr/avr.opt (-nodevicespecs): New driver option.
35538         * config/avr/driver-avr.c (avr_devicespecs_file): Only issue
35539         "-specs=device-specs/..." if that option is not set.
35540         * doc/invoke.texi (AVR Options) <-nodevicespecs>: Document.
35542 2020-01-08  Georg-Johann Lay  <avr@gjlay.de>
35544         Implement 64-bit double functions for avr.
35546         PR target/92055
35547         * config.gcc (tm_defines) [target=avr]: Support --with-libf7,
35548         --with-double-comparison.
35549         * doc/install.texi: Document them.
35550         * config/avr/avr-c.c (avr_cpu_cpp_builtins)
35551         <WITH_LIBF7_LIBGCC, WITH_LIBF7_MATH, WITH_LIBF7_MATH_SYMBOLS>
35552         <WITH_DOUBLE_COMPARISON>: New built-in defines.
35553         * doc/invoke.texi (AVR Built-in Macros): Document them.
35554         * config/avr/avr-protos.h (avr_float_lib_compare_returns_bool): New.
35555         * config/avr/avr.c (avr_float_lib_compare_returns_bool): New function.
35556         * config/avr/avr.h (FLOAT_LIB_COMPARE_RETURNS_BOOL): New macro.
35558 2020-01-08  Richard Earnshaw  <rearnsha@arm.com>
35560         PR target/93188
35561         * config/arm/t-multilib (MULTILIB_MATCHES): Add rules to match
35562         armv7-a{+mp,+sec,+mp+sec} to appropriate armv7 multilib variants
35563         when only building rm-profile multilibs.
35565 2020-01-08  Feng Xue  <fxue@os.amperecomputing.com>
35567         PR ipa/93084
35568         * ipa-cp.c (self_recursively_generated_p): Find matched aggregate
35569         lattice for a value to check.
35570         (propagate_vals_across_arith_jfunc): Add an assertion to ensure
35571         finite propagation in self-recursive scc.
35573 2020-01-08  Luo Xiong Hu  <luoxhu@linux.ibm.com>
35575         * ipa-inline.c (caller_growth_limits): Restore the AND.
35577 2020-01-07  Andrew Stubbs  <ams@codesourcery.com>
35579         * config/gcn/gcn-valu.md (VEC_1REG_INT_ALT): Delete iterator.
35580         (VEC_ALLREG_ALT): New iterator.
35581         (VEC_ALLREG_INT_MODE): New iterator.
35582         (VCMP_MODE): New iterator.
35583         (VCMP_MODE_INT): New iterator.
35584         (vec_cmpu<mode>di): Use VCMP_MODE_INT.
35585         (vec_cmp<u>v64qidi): New define_expand.
35586         (vec_cmp<mode>di_exec): Use VCMP_MODE.
35587         (vec_cmpu<mode>di_exec): New define_expand.
35588         (vec_cmp<u>v64qidi_exec): New define_expand.
35589         (vec_cmp<mode>di_dup): Use VCMP_MODE.
35590         (vec_cmp<mode>di_dup_exec): Use VCMP_MODE.
35591         (vcond<VEC_ALL1REG_MODE:mode><VEC_1REG_ALT:mode>): Rename ...
35592         (vcond<VEC_ALLREG_MODE:mode><VEC_ALLREG_ALT:mode>): ... to this.
35593         (vcond<VEC_ALL1REG_MODE:mode><VEC_1REG_ALT:mode>_exec): Rename ...
35594         (vcond<VEC_ALLREG_MODE:mode><VEC_ALLREG_ALT:mode>_exec): ... to this.
35595         (vcondu<VEC_ALL1REG_MODE:mode><VEC_1REG_INT_ALT:mode>): Rename ...
35596         (vcondu<VEC_ALLREG_MODE:mode><VEC_ALLREG_INT_MODE:mode>): ... to this.
35597         (vcondu<VEC_ALL1REG_MODE:mode><VEC_1REG_INT_ALT:mode>_exec): Rename ...
35598         (vcondu<VEC_ALLREG_MODE:mode><VEC_ALLREG_INT_MODE:mode>_exec): ... to
35599         this.
35600         * config/gcn/gcn.c (print_operand): Fix 8 and 16 bit suffixes.
35601         * config/gcn/gcn.md (expander): Add sign_extend and zero_extend.
35603 2020-01-07  Andrew Stubbs  <ams@codesourcery.com>
35605         * config/gcn/constraints.md (DA): Update description and match.
35606         (DB): Likewise.
35607         (Db): New constraint.
35608         * config/gcn/gcn-protos.h (gcn_inline_constant64_p): Add second
35609         parameter.
35610         * config/gcn/gcn.c (gcn_inline_constant64_p): Add 'mixed' parameter.
35611         Implement 'Db' mixed immediate type.
35612         * config/gcn/gcn-valu.md (addcv64si3<exec_vcc>): Rework constraints.
35613         (addcv64si3_dup<exec_vcc>): Delete.
35614         (subcv64si3<exec_vcc>): Rework constraints.
35615         (addv64di3): Rework constraints.
35616         (addv64di3_exec): Rework constraints.
35617         (subv64di3): Rework constraints.
35618         (addv64di3_dup): Delete.
35619         (addv64di3_dup_exec): Delete.
35620         (addv64di3_zext): Rework constraints.
35621         (addv64di3_zext_exec): Rework constraints.
35622         (addv64di3_zext_dup): Rework constraints.
35623         (addv64di3_zext_dup_exec): Rework constraints.
35624         (addv64di3_zext_dup2): Rework constraints.
35625         (addv64di3_zext_dup2_exec): Rework constraints.
35626         (addv64di3_sext_dup2): Rework constraints.
35627         (addv64di3_sext_dup2_exec): Rework constraints.
35629 2020-01-07  Andre Vieira  <andre.simoesdiasvieira@arm.com>
35631         * doc/sourcebuild.texi (arm_little_endian, arm_nothumb): Documented
35632         existing target checks.
35634 2020-01-07  Richard Biener  <rguenther@suse.de>
35636         * doc/install.texi: Bump minimal supported MPC version.
35638 2020-01-07  Richard Sandiford  <richard.sandiford@arm.com>
35640         * langhooks-def.h (lhd_simulate_enum_decl): Declare.
35641         (LANG_HOOKS_SIMULATE_ENUM_DECL): Use it.
35642         * langhooks.c: Include stor-layout.h.
35643         (lhd_simulate_enum_decl): New function.
35644         * config/aarch64/aarch64-sve-builtins.cc (init_builtins): Call
35645         handle_arm_sve_h for the LTO frontend.
35646         (register_vector_type): Cope with null returns from pushdecl.
35648 2020-01-07  Richard Sandiford  <richard.sandiford@arm.com>
35650         * config/aarch64/aarch64-protos.h (aarch64_sve::svbool_type_p)
35651         (aarch64_sve::nvectors_if_data_type): Replace with...
35652         (aarch64_sve::builtin_type_p): ...this.
35653         * config/aarch64/aarch64-sve-builtins.cc: Include attribs.h.
35654         (find_vector_type): Delete.
35655         (add_sve_type_attribute): New function.
35656         (lookup_sve_type_attribute): Likewise.
35657         (register_builtin_types): Add an "SVE type" attribute to each type.
35658         (register_tuple_type): Likewise.
35659         (svbool_type_p, nvectors_if_data_type): Delete.
35660         (mangle_builtin_type): Use lookup_sve_type_attribute.
35661         (builtin_type_p): Likewise.  Add an overload that returns the
35662         number of constituent vector and predicate registers.
35663         * config/aarch64/aarch64.c (aarch64_sve_argument_p): Delete.
35664         (aarch64_returns_value_in_sve_regs_p): Use aarch64_sve::builtin_type_p
35665         instead of aarch64_sve_argument_p.
35666         (aarch64_takes_arguments_in_sve_regs_p): Likewise.
35667         (aarch64_pass_by_reference): Likewise.
35668         (aarch64_function_value_1): Likewise.
35669         (aarch64_return_in_memory): Likewise.
35670         (aarch64_layout_arg): Likewise.
35672 2020-01-07  Jakub Jelinek  <jakub@redhat.com>
35674         PR tree-optimization/93156
35675         * tree-ssa-ccp.c (bit_value_binop): For x * x note that the second
35676         least significant bit is always clear.
35678         PR tree-optimization/93118
35679         * match.pd ((x >> c) << c -> x & (-1<<c)): Add nop_convert?.  Add new
35680         simplifier with two intermediate conversions.
35682 2020-01-07  Martin Liska  <mliska@suse.cz>
35684         * params.opt: Add Optimization for various parameters.
35686 2020-01-07  Martin Liska  <mliska@suse.cz>
35688         PR ipa/83411
35689         * doc/extend.texi: Explain cloning for target_clone
35690         attribute.
35692 2020-01-07  Martin Liska  <mliska@suse.cz>
35694         PR tree-optimization/92860
35695         * common.opt: Make in Optimization option
35696         as it is affected by -O0, which is an Optimization
35697         option.
35698         * tree-inline.c (tree_inlinable_function_p):
35699         Use opt_for_fn for warn_inline.
35700         (expand_call_inline): Likewise.
35702 2020-01-07  Martin Liska  <mliska@suse.cz>
35704         PR tree-optimization/92860
35705         * common.opt: Make flag_ree as optimization
35706         attribute. 
35708 2020-01-07  Martin Liska  <mliska@suse.cz>
35710         PR optimization/92860
35711         * params.opt: Mark param_min_crossjump_insns with Optimization
35712         keyword.
35714 2020-01-07  Luo Xiong Hu  <luoxhu@linux.ibm.com>
35716         * ipa-inline-analysis.c (estimate_growth): Fix typo.
35717         * ipa-inline.c (caller_growth_limits): Use OR instead of AND.
35719 2020-01-06  Michael Meissner  <meissner@linux.ibm.com>
35721         * config/rs6000/rs6000.c (hard_reg_and_mode_to_addr_mask): New
35722         helper function to return the valid addressing formats for a given
35723         hard register and mode.
35724         (rs6000_adjust_vec_address): Call hard_reg_and_mode_to_addr_mask.
35726         * config/rs6000/constraints.md (Q constraint): Update
35727         documentation.
35728         * doc/md.texi (RS/6000 constraints): Update 'Q' cosntraint
35729         documentation.
35731         * config/rs6000/vsx.md (vsx_extract_<mode>_var, VSX_D iterator):
35732         Use 'Q' for doing vector extract from memory.
35733         (vsx_extract_v4sf_var): Use 'Q' for doing vector extract from
35734         memory.
35735         (vsx_extract_<mode>_var, VSX_EXTRACT_I iterator): Use 'Q' for
35736         doing vector extract from memory.
35737         (vsx_extract_<mode>_<VS_scalar>mode_var): Use 'Q' for doing vector
35738         extract from memory.
35740         * config/rs6000/rs6000.c (rs6000_adjust_vec_address): Add support
35741         for the offset being 34-bits when -mcpu=future is used.
35743 2020-01-06  John David Anglin  <danglin@gcc.gnu.org>
35745         * config/pa/pa.md: Revert change to use ordered_comparison_operator
35746         instead of cmpib_comparison_operator in cmpib patterns.
35747         * config/pa/predicates.md (cmpib_comparison_operator): Revert removal
35748         of cmpib_comparison_operator.  Revise comment.
35750 2020-01-06  Richard Sandiford  <richard.sandiford@arm.com>
35752         * tree-vect-slp.c (vect_build_slp_tree_1): Require all shifts
35753         in an IFN_DIV_POW2 node to be equal.
35755 2020-01-06  Richard Sandiford  <richard.sandiford@arm.com>
35757         * tree-vect-stmts.c (vect_check_load_store_mask): Rename to...
35758         (vect_check_scalar_mask): ...this.
35759         (vectorizable_store, vectorizable_load): Update call accordingly.
35760         (vectorizable_call): Use vect_check_scalar_mask to check the mask
35761         argument in calls to conditional internal functions.
35763 2020-01-06  Andrew Stubbs  <ams@codesourcery.com>
35765         * config/gcn/gcn-valu.md (subv64di3): Use separate alternatives for
35766         '0' matching inputs.
35767         (subv64di3_exec): Likewise.
35769 2020-01-06  Bryan Stenson  <bryan@siliconvortex.com>
35771         * config/mips/mips.c (vr4130_align_insns): Fix typo.
35772         * doc/md.texi (movstr): Likewise.
35774 2020-01-06  Andrew Stubbs  <ams@codesourcery.com>
35776         * config/gcn/gcn-valu.md (vec_extract<mode><scalar_mode>): Add early
35777         clobber.
35779 2020-01-06  Richard Sandiford  <richard.sandiford@arm.com>
35781         * config/aarch64/t-aarch64 ($(srcdir)/config/aarch64/aarch64-tune.md):
35782         Depend on...
35783         (s-aarch64-tune-md): ...this new stamp file.  Pipe the new contents
35784         to a temporary file and use move-if-change to update the real
35785         file where necessary.
35787 2020-01-06  Richard Sandiford  <richard.sandiford@arm.com>
35789         * config/aarch64/aarch64-sve.md (@aarch64_sel_dup<mode>): Use Upl
35790         rather than Upa for CPY /M.
35792 2020-01-06  Andrew Stubbs  <ams@codesourcery.com>
35794         * config/gcn/gcn.c (gcn_inline_constant_p): Allow 64 as an inline
35795         immediate.
35797 2020-01-06  Martin Liska  <mliska@suse.cz>
35799     PR tree-optimization/92860
35800     * params.opt: Mark param_max_combine_insns with Optimization
35801     keyword. 
35803 2020-01-05  Jakub Jelinek  <jakub@redhat.com>
35805         PR target/93141
35806         * config/i386/i386.md (SWIDWI): New mode iterator.
35807         (DWI, dwi): Add TImode variants.
35808         (addv<mode>4): Use SWIDWI iterator instead of SWI.  Use
35809         <general_hilo_operand> instead of <general_operand>.  Use
35810         CONST_SCALAR_INT_P instead of CONST_INT_P.
35811         (*addv<mode>4_1): Rename to ...
35812         (addv<mode>4_1): ... this.
35813         (QWI): New mode attribute.
35814         (*addv<dwi>4_doubleword, *addv<dwi>4_doubleword_1): New
35815         define_insn_and_split patterns.
35816         (*addv<mode>4_overflow_1, *addv<mode>4_overflow_2): New define_insn
35817         patterns.
35818         (uaddv<mode>4): Use SWIDWI iterator instead of SWI.  Use
35819         <general_hilo_operand> instead of <general_operand>.
35820         (*addcarry<mode>_1): New define_insn.
35821         (*add<dwi>3_doubleword_cc_overflow_1): New define_insn_and_split.
35823 2020-01-03  Konstantin Kharlamov  <Hi-Angel@yandex.ru>
35825         * gdbinit.in (pr, prl, pt, pct, pgg, pgq, pgs, pge, pmz, pdd, pbs, pbm):
35826         Use "call" instead of "set".
35828 2020-01-03  Martin Jambor  <mjambor@suse.cz>
35830         PR ipa/92917
35831         * ipa-cp.c (print_all_lattices): Skip functions without info.
35833 2020-01-03  Jakub Jelinek  <jakub@redhat.com>
35835         PR target/93089
35836         * config/i386/i386-options.c (ix86_simd_clone_adjust): If
35837         TARGET_PREFER_AVX128, use prefer-vector-width=256 for 'c' and 'd'
35838         simd clones.  If TARGET_PREFER_AVX256, use prefer-vector-width=512
35839         for 'e' simd clones.
35841         PR target/93089
35842         * config/i386/i386.opt (x_prefer_vector_width_type): Remove TargetSave
35843         entry.
35844         (mprefer-vector-width=): Add Save.
35845         * config/i386/i386-options.c (ix86_target_string): Add PVW argument, print
35846         -mprefer-vector-width= if non-zero.  Fix up -mfpmath= comment.
35847         (ix86_debug_options, ix86_function_specific_print): Adjust
35848         ix86_target_string callers.
35849         (ix86_valid_target_attribute_inner_p): Handle prefer-vector-width=.
35850         (ix86_valid_target_attribute_tree): Likewise.
35851         * config/i386/i386-options.h (ix86_target_string): Add PVW argument.
35852         * config/i386/i386-expand.c (ix86_expand_builtin): Adjust
35853         ix86_target_string caller.
35855         PR target/93110
35856         * config/i386/i386.md (abs<mode>2): Use expand_simple_binop instead of
35857         emitting ASHIFTRT, XOR and MINUS by hand.  Use gen_int_mode with QImode
35858         instead of gen_int_shift_amount + convert_modes.
35860         PR rtl-optimization/93088
35861         * loop-iv.c (find_single_def_src): Punt after looking through
35862         128 reg copies for regs with single definitions.  Move definitions
35863         to first uses.
35865 2020-01-02  Dennis Zhang  <dennis.zhang@arm.com>
35867         * config/arm/arm-c.c (arm_cpu_builtins): Define
35868         __ARM_FEATURE_MATMUL_INT8, __ARM_FEATURE_BF16_VECTOR_ARITHMETIC,
35869         __ARM_FEATURE_BF16_SCALAR_ARITHMETIC, and
35870         __ARM_BF16_FORMAT_ALTERNATIVE when enabled.
35871         * config/arm/arm-cpus.in (armv8_6, i8mm, bf16): New features.
35872         * config/arm/arm-tables.opt: Regenerated.
35873         * config/arm/arm.c (arm_option_reconfigure_globals): Initialize
35874         arm_arch_i8mm and arm_arch_bf16 when enabled.
35875         * config/arm/arm.h (TARGET_I8MM): New macro.
35876         (TARGET_BF16_FP, TARGET_BF16_SIMD): Likewise.
35877         * config/arm/t-aprofile: Add matching rules for -march=armv8.6-a.
35878         * config/arm/t-arm-elf (all_v8_archs): Add armv8.6-a.
35879         * config/arm/t-multilib: Add matching rules for -march=armv8.6-a.
35880         (v8_6_a_simd_variants): New.
35881         (v8_*_a_simd_variants): Add i8mm and bf16.
35882         * doc/invoke.texi (armv8.6-a, i8mm, bf16): Document new options.
35884 2020-01-02  Jakub Jelinek  <jakub@redhat.com>
35886         PR ipa/93087
35887         * predict.c (compute_function_frequency): Don't call
35888         warn_function_cold on functions that already have cold attribute.
35890 2020-01-01  John David Anglin  <danglin@gcc.gnu.org>
35892         PR target/67834
35893         * config/pa/pa.c (pa_elf_select_rtx_section): New.  Put references to
35894         COMDAT group function labels in .data.rel.ro.local section.
35895         * config/pa/pa32-linux.h (TARGET_ASM_SELECT_RTX_SECTION): Define.
35897         PR target/93111
35898         * config/pa/pa.md (scc): Use ordered_comparison_operator instead of
35899         comparison_operator in B and S integer comparisons.  Likewise, use
35900         ordered_comparison_operator instead of cmpib_comparison_operator in
35901         cmpib patterns.
35902         * config/pa/predicates.md (cmpib_comparison_operator): Remove.
35904 2020-01-01  Jakub Jelinek  <jakub@redhat.com>
35906         Update copyright years.
35908         * gcc.c (process_command): Update copyright notice dates.
35909         * gcov-dump.c (print_version): Ditto.
35910         * gcov.c (print_version): Ditto.
35911         * gcov-tool.c (print_version): Ditto.
35912         * gengtype.c (create_file): Ditto.
35913         * doc/cpp.texi: Bump @copying's copyright year.
35914         * doc/cppinternals.texi: Ditto.
35915         * doc/gcc.texi: Ditto.
35916         * doc/gccint.texi: Ditto.
35917         * doc/gcov.texi: Ditto.
35918         * doc/install.texi: Ditto.
35919         * doc/invoke.texi: Ditto.
35921 2020-01-01  Jan Hubicka  <hubicka@ucw.cz>
35923         * ipa.c (walk_polymorphic_call_targets): Fix updating of overall
35924         summary.
35926 2020-01-01  Jakub Jelinek  <jakub@redhat.com>
35928         PR tree-optimization/93098
35929         * match.pd (popcount): For shift amounts, use integer_onep
35930         or wi::to_widest () == cst instead of tree_to_uhwi () == cst
35931         tests.  Make sure that precision is power of two larger than or equal
35932         to 16.  Ensure shift is never negative.  Use HOST_WIDE_INT_UC macro
35933         instead of ULL suffixed constants.  Formatting fixes.
35935 Copyright (C) 2020 Free Software Foundation, Inc.
35937 Copying and distribution of this file, with or without modification,
35938 are permitted in any medium without royalty provided the copyright
35939 notice and this notice are preserved.