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