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