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