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