* ChangeLog: Add missing PR number.
[gcc.git] / gcc / ChangeLog
1 2018-09-26 Uros Bizjak <ubizjak@gmail.com>
2
3 PR target/87439
4 * config/i386/i386.h (NUM_MODES_FOR_MODE_SWITCHING): Update
5 for removed I387_MASK_PM entity.
6
7 2018-09-26 Jeff Law <law@redhat.com>
8
9 Revert
10 2018-09-26 Alexey Neyman <stilor@att.net>
11
12 * graphite.h: Include <isl/id.h> and <isl/space.h>; these
13 headers are no longer pulled in by <isl/val.h>.
14
15 2018-09-26 Richard Biener <rguenther@suse.de>
16
17 PR debug/87443
18 * dwarf2out.c (gen_lexical_block_die): Do not equate inline
19 or concrete instance DIE to the tree. Create abstract origin
20 attributes also for concrete instances.
21
22 2018-09-26 Alexey Neyman <stilor@att.net>
23
24 * graphite.h: Include <isl/id.h> and <isl/space.h>; these
25 headers are no longer pulled in by <isl/val.h>.
26
27 2018-09-26 Matthew Malcomson <matthew.malcomson@arm.com>
28
29 * config/arm/arm.c (arm_split_compare_and_swap, arm_split_atomic_op):
30 Use new helper functions.
31 * config/arm/sync.md (atomic_load<mode>, atomic_store<mode>):
32 Use new helper functions.
33 * config/arm/aarch-common-protos.h (aarch_mm_needs_acquire,
34 aarch_mm_needs_release): New declarations.
35 * config/arm/aarch-common.c (aarch_mm_needs_acquire,
36 aarch_mm_needs_release): New.
37
38 2018-09-26 Eric Botcazou <ebotcazou@adacore.com>
39
40 * config/arm/arm.c (arm_reorg): Skip Thumb reorg pass for thunks.
41 (arm32_output_mi_thunk): Deal with long calls.
42
43 2018-09-26 Richard Biener <rguenther@suse.de>
44
45 PR debug/87428
46 PR debug/87362
47 * tree-inline.c (expand_call_inline): When the location
48 of the call is UNKNOWN_LOCATION use DECL_SOURCE_LOCATION
49 or BUILTINS_LOCATION for the BLOCK_SOURCE_LOCATION of
50 the inserted BLOCK to make inlined_function_outer_scope_p
51 recognize it.
52 * dwarf2out.c (add_call_src_coords_attributes): Do not add
53 coords for reserved locations.
54
55 2018-09-25 Segher Boessenkool <segher@kernel.crashing.org>
56
57 * config/rs6000/rs6000.md (*movcc_internal1): Use set_attr_alternative.
58 (*call_indirect_nonlocal_sysv<mode>): Ditto.
59 (*call_value_indirect_nonlocal_sysv<mode>): Ditto.
60 (*sibcall_nonlocal_sysv<mode>): Ditto.
61 (*sibcall_value_nonlocal_sysv<mode>): Ditto.
62 (<bd>_<mode>): Ditto.
63 (<bd>tf_<mode>): Ditto.
64
65 2018-09-25 Segher Boessenkool <segher@kernel.crashing.org>
66
67 * config/rs6000/altivec.md (*altivec_mov<mode>): Write the output
68 control string as a list of templates instead of as C code.
69 (*altivec_movti): Ditto.
70 * config/rs6000/darwin.md (movdf_low_di): Ditto.
71
72 2018-09-25 Jim Wilson <jimw@sifive.com>
73
74 * config/riscv/riscv.c (riscv_split_symbol): Mark auipc label as weak
75 when target symbol is weak.
76
77 2018-09-25 Bernd Edlinger <bernd.edlinger@hotmail.de>
78
79 PR c/87387
80 * builtins.c (unterminated_array): Simplify.
81 * expr.c (string_constant): Handle SSA_NAME. Add more exceptions
82 where pointer arithmetic is safe.
83
84 2018-09-25 Segher Boessenkool <segher@kernel.crashing.org>
85
86 PR target/86987
87 * config/rs6000/altivec.md (altivec_vspltb): Use
88 const_0_to_15_operand instead of u5bit_cint_operand.
89 (*altivec_vspltb_internal): Ditto.
90 (altivec_vspltb_direct): Ditto.
91 (altivec_vsplth): Use const_0_to_7_operand instead of
92 u5bit_cint_operand.
93 (*altivec_vsplth_internal): Ditto.
94 (altivec_vsplth_direct): Ditto.
95 (altivec_vspltw): Use const_0_to_3_operand instead of
96 u5bit_cint_operand.
97 (*altivec_vspltw_internal): Ditto.
98 (altivec_vspltw_direct): Ditto.
99 (altivec_vspltsf): Ditto.
100 (*altivec_vspltsf_internal): Ditto.
101 * config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Handle the
102 various splats with the proper size immediate. Reorder the various
103 cases by ascending size of immediate, and put all such together.
104
105 2018-09-25 Richard Biener <rguenther@suse.de>
106
107 PR debug/83941
108 * dwarf2out.c (add_AT_external_die_ref): Remove now redundant
109 GC-ification.
110 (maybe_create_die_with_external_ref): Do not create
111 DW_TAG_imported_unit here.
112 (add_abstract_origin_attribute): Handle external BLOCK refs.
113 (dwarf2out_abstract_function): Simplify LTO case.
114 (dwarf2out_early_finish): Create DW_TAG_imported_unit explicitely
115 rather than using maybe_create_die_with_external_ref.
116
117 2018-09-25 Uros Bizjak <ubizjak@gmail.com>
118
119 PR target/71278
120 * config/i386/i386.md (frndintxf2_mask_pm): Remove.
121 (frndintxf2_mask_pm_i387): Ditto.
122 (nearbyintxf2): Rewrite expander pattern to match rintxf2.
123 Enable for !flag_trapping_math.
124 (nearbyint<mode>2): Enable x87 modes for !flag_trapping_math.
125 Enable SSE modes for TARGET_SSE4_1 and expand them with round insn.
126 Change operand 1 predicate to nonimmediate_operand.
127 (attr "i387_cw"): Remove mask_pm.
128 * config/i386/i386.h (enum ix86_stack_slot): Remove SLOT_CW_MASK_PM.
129 (enum ix86_entity): Remove I387_MASK_PM.
130 * config/i386/i386.c (ix86_i387_mode_needed): Do not
131 handle I387_MASK_PM.
132 (ix86_mode_needed): Ditto.
133 (ix86_mode_after): Ditto.
134 (ix86_mode_entry): Ditto.
135 (ix86_mode_exit): Ditto.
136 (emit_i387_cw_initialization): Do not handle I387_CW_MASK_PM.
137
138 2018-09-25 Jakub Jelinek <jakub@redhat.com>
139
140 * vr-values.c (vr_values::vr_values): Initialize to_remove_edges and
141 to_update_switch_stmts to vNULL instead of calling create on them
142 immediately.
143
144 2018-09-25 Richard Biener <rguenther@suse.de>
145
146 PR tree-optimization/87402
147 * tree-ssa-sccvn.c (SSA_VISITED): Remove unused function.
148 (visit_phi): Re-instantiate handling of supposed to be VARYING
149 but non-VARYING backedge value.
150
151 2018-09-25 Richard Biener <rguenther@suse.de>
152
153 PR debug/83941
154 * dwarf2out.c (struct sym_off_pair): New.
155 (external_die_map): New global.
156 (lookup_decl_die): When in LTO create DIEs lazily from the
157 external_die_map.
158 (lookup_block_die): New function, create DIEs lazily in LTO.
159 (equate_block_to_die): New function.
160 (dwarf2out_die_ref_for_decl): During WPA get the association
161 from the external DIE map.
162 (dwarf2out_register_external_die): Record mapping into the
163 external DIE map.
164 (maybe_create_die_with_external_ref): New function split out from
165 DIE generation part of old dwarf2out_register_external_die.
166 (add_abstract_origin_attribute): Do not return the DIE. When
167 in LTO reference externals directly.
168 (dwarf2out_abstract_function): When in LTO ignore calls for
169 decls with external DIEs (already present abstract instances).
170 (gen_call_site_die): Adjust.
171 (add_high_low_attributes): Likewise.
172 (gen_lexical_block_die): Likewise.
173 (gen_inlined_subroutine_die): Likewie.
174 (gen_block_die): Likewise.
175 (dwarf2out_inline_entry): Likewise.
176 (dwarf2out_early_finish): In LTRANS phase create DW_TAG_imported_unit
177 DIEs.
178
179 2018-09-25 Martin Liska <mliska@suse.cz>
180
181 * ipa-fnsummary.c (estimate_node_size_and_time): Scale by two
182 integers and not by a float value.
183
184 2018-09-25 Martin Liska <mliska@suse.cz>
185
186 PR fortran/87394
187 * dbgcnt.c (dbg_cnt_process_single_pair): Return false
188 instead of NULL.
189 * dumpfile.c (dump_enable_all): Remove extra parenthesis.
190 * gcov-tool.c: Declare the function with ATTRIBUTE_NORETURN.
191 * godump.c (go_format_type): Remove extra parenthesis.
192
193 2018-09-25 Martin Liska <mliska@suse.cz>
194
195 * alias.c (set_dest_equal_p): Remove unused function.
196 * config/i386/i386.c (def_builtin_pure2): Likewise.
197 * diagnostic-show-locus.c (class layout): Remove
198 unused field.
199 (layout::layout): Likewise here.
200 * dump-context.h (class temp_dump_context): Likewise.
201 * dwarf2out.c (add_AT_fde_ref): Remove unused function.
202 (add_AT_loclistsptr): Likewise.
203 (add_AT_offset): Likewise.
204 (get_AT_hi_pc): Likewise.
205 (is_comdat_die): Likewise.
206 (type_is_enum): Likewise.
207 (ceiling): Likewise.
208 (add_AT_vms_delta): Likewise.
209 (is_class_die): Likewise.
210 * edit-context.c (class line_event): Remove unused field.
211 * graphite-sese-to-poly.c (tree_int_to_gmp): Remove
212 unused function.
213 * ipa-cp.c (ipa_get_vr_lat): Likewise.
214 * lra-constraints.c (ok_for_index_p_nonstrict): Likewise.
215 (ok_for_base_p_nonstrict): Likewise.
216 * tree-chrec.c (is_not_constant_evolution): Likewise.
217 (chrec_fold_poly_cst): Likewise.
218 * tree-if-conv.c (has_pred_critical_p): Likewise.
219 * tree-ssa-coalesce.c (print_exprs): Likewise.
220 * tree-ssa-pre.c (bitmap_set_contains_expr): Likewise.
221 * tree-ssa-uninit.c (is_and_or_or_p): Likewise.
222 * tree-vrp.c (value_ranges_intersect_p): Likewise.
223 (value_range_nonnegative_p): Likewise.
224
225 2018-09-25 Martin Liska <mliska@suse.cz>
226
227 * config/powerpcspe/powerpcspe.c (rs6000_output_function_epilogue):
228 Do not handle "GNU Pascal".
229 * config/rs6000/rs6000.c (rs6000_output_function_epilogue):
230 Likewise.
231 * config/sparc/sparc.c (sparc_pass_by_reference): Remove Pascal
232 from documentation. Likewise.
233 * dbxout.c (dbxout_range_type): Likewise.
234 * doc/cpp.texi: Likewise.
235 * doc/extend.texi: Likewise.
236 * doc/frontends.texi: Likewise.
237 * doc/invoke.texi: Remove Pascal entry.
238 * tree.def (CLEANUP_POINT_EXPR): Likewise.
239 * doc/rtl.texi (MODE_FUNCTION): Remove not used entry.
240
241 2018-09-25 Martin Liska <mliska@suse.cz>
242
243 PR middle-end/86078
244 * doc/invoke.texi: Document all parameters and remove default
245 of the parameters.
246
247 2018-09-25 Ilya Leoshkevich <iii@linux.ibm.com>
248
249 PR bootstrap/87417
250 * rtl.c (rtx_code_size): Take into account that EQ_ATTR_ALT
251 contains HOST_WIDE_INTs when computing its size.
252
253 2018-09-24 Jim Wilson <jimw@sifive.com>
254
255 PR target/87391
256 * config/riscv/riscv.h (STACK_BOUNDARY): Test riscv_abi == ABI_ILP32E
257 not TARGET_RVE.
258 (ABI_STACK_BOUNDARY, MAX_ARGS_IN_REGISTERS): Likewise.
259
260 2018-09-24 Andrew Pinski <apinski@marvell.com>
261
262 * config/aarch64/aarch64.c (aarch_macro_fusion_pair_p): Don't
263 access prev before checking it for NULLness in the
264 AARCH64_FUSE_CMP_BRANCH case.
265
266 2018-09-24 H.J. Lu <hongjiu.lu@intel.com>
267
268 PR target/82699
269 * config/i386/i386.c (rest_of_insert_endbranch): Set
270 endbr_queued_at_entrance to true and don't insert ENDBR if
271 x86_function_profiler will be called.
272 (x86_function_profiler): Insert ENDBR if endbr_queued_at_entrance
273 is true.
274 * config/i386/i386.h (machine_function): Add
275 endbr_queued_at_entrance.
276
277 2018-09-24 Ilya Leoshkevich <iii@linux.ibm.com>
278
279 * genattrtab.c (mk_attr_alt): Use alternative_mask.
280 (attr_rtx_1): Adjust caching to match the new EQ_ATTR_ALT field
281 types.
282 (check_attr_test): Use alternative_mask.
283 (get_attr_value): Likewise.
284 (compute_alternative_mask): Use alternative_mask and XWINT.
285 (make_alternative_compare): Use alternative_mask.
286 (attr_alt_subset_p): Use XWINT.
287 (attr_alt_subset_of_compl_p): Likewise.
288 (attr_alt_intersection): Use alternative_mask and XWINT.
289 (attr_alt_union): Likewise.
290 (attr_alt_complement): Use HOST_WIDE_INT and XWINT.
291 (mk_attr_alt): Use alternative_mask and HOST_WIDE_INT.
292 (simplify_test_exp): Use alternative_mask and XWINT.
293 (write_test_expr): Use alternative_mask and XWINT, adjust bit
294 number calculation to support 64 bits. Generate code that
295 checks 64-bit masks.
296 (main): Use alternative_mask.
297 * rtl.def (EQ_ATTR_ALT): Change field types from ii to ww.
298
299 2018-09-24 Ilya Leoshkevich <iii@linux.ibm.com>
300
301 PR target/80080
302 * config/s390/s390.c (s390_emit_epilogue): Do not use PARALLEL
303 RETURN+USE when returning via %r14.
304
305 2018-09-24 Martin Liska <mliska@suse.cz>
306
307 * gcov.c (output_lines): Print colorization legend
308 for both flag_use_colors and flag_use_hotness_colors.
309 Reword the help.
310
311 2018-09-24 Martin Liska <mliska@suse.cz>
312
313 * coverage.c (get_coverage_counts): Use warning_at
314 with current_function_decl location. Use %qD in warning
315 message.
316
317 2018-09-24 Martin Liska <mliska@suse.cz>
318
319 * memory-block.h (memory_block_pool::release): Annotate with
320 valgrind that the memory is not accessible.
321
322 2018-09-24 Martin Liska <mliska@suse.cz>
323
324 PR sanitizer/85774
325 * asan.c: Make asan_handled_variables extern.
326 * asan.h: Likewise.
327 * cfgexpand.c (expand_stack_vars): Make sure
328 a representative is unpoison if another
329 variable in the partition is handled by
330 use-after-scope sanitization.
331
332 2018-09-24 Richard Biener <rguenther@suse.de>
333
334 PR tree-optimization/63155
335 * tree-ssa-propagate.c (add_ssa_edge): Avoid adding PHIs to
336 the worklist when the edge of the respective argument isn't
337 executable.
338
339 2018-09-23 Uros Bizjak <ubizjak@gmail.com>
340
341 * config/i386/i386.h (enum reg_class): Rename MASK_REGS to
342 ALL_MASK_REGS and MASK_EVEX_REGS to MASK_REGS.
343 (MASK_CLASS_P): Update for rename.
344 (MAYBE_MASK_CLASS_P): Ditto.
345 (REG_CLASS_NAMES): Update.
346 (REG_CLASS_CONTENT): Update.
347 * config/i386/i386.c (regclass_map): Update for MASK_REG
348 and ALL_MASK_REGS rename.
349 * config/i386/constraints.md (Yk): Update for rename.
350 (k): Ditto.
351
352 2018-09-23 Uros Bizjak <ubizjak@gmail.com>
353
354 * config/i386/i386.h (enum reg_class): Remove
355 EVEX_SSE_REGS and MOD4_SSE_REGS.
356 (REG_CLASS_NAMES): Update.
357 (REG_CLASS_CONTENT): Update.
358 * config/i386/i386.c (regclass_map): Declare AVX-512 SSE
359 registers as ALL_SSE_REGS.
360 (ix86_additional_allocno_class_p): Remove.
361 (TARGET_ADDITIONAL_ALLOCNO_CLASS_P): Remove.
362 (ix86_register_priority): Lower priority of EVEX SSE registers.
363 Use IN_RANGE macro where appropriate.
364 (ix86_hard_regno_mode_ok): Merge AVX-5124FMAPS and
365 AVX-5124VNNIW checks.
366 (ix86_modes_tieable_p): Tie 512-bit SSE modes.
367 * config/i386/sse.md (avx5124fmaddps_4fmaddps)
368 (avx5124fmaddps_4fmaddps_mask, avx5124fmaddps_4fmaddps_maskz)
369 (avx5124fmaddps_4fmaddss, avx5124fmaddps_4fmaddss_mask)
370 (avx5124fmaddps_4fmaddss_maskz, avx5124fmaddps_4fnmaddps)
371 (avx5124fmaddps_4fnmaddps_mask, avx5124fmaddps_4fnmaddps_maskz)
372 (avx5124fmaddps_4fnmaddss, avx5124fmaddps_4fnmaddss_mask)
373 (avx5124fmaddps_4fnmaddss_maskz, avx5124vnniw_vp4dpwssd)
374 (avx5124vnniw_vp4dpwssd_mask, avx5124vnniw_vp4dpwssd_maskz)
375 (avx5124vnniw_vp4dpwssds, avx5124vnniw_vp4dpwssds_mask)
376 (avx5124vnniw_vp4dpwssds_maskz): Use "v" instead of "Yh" constraint.
377 * config/i386/constraints.md (Yh): Remove.
378
379 2018-09-23 Uros Bizjak <ubizjak@gmail.com>
380
381 * config/i386/i386.c (regclass_map): Declare integer REX registers
382 as GENERAL_REGS.
383
384 2018-09-23 Gerald Pfeifer <gerald@pfeifer.com>
385
386 * doc/service.texi (Service): Switch the fsf.org link to https.
387
388 2018-09-22 Chung-Ju Wu <jasonwucj@gmail.com>
389
390 PR target/86798
391 * config/nds32/nds32.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
392 Define to speculation_safe_value_not_needed.
393
394 2018-09-21 Florian Weimer <fweimer@redhat.com>
395
396 PR middle-end/81035
397 * doc/extend.texi (Common Function Attributes): Mention that
398 noreturn suppresses tail call optimization.
399
400 2018-09-21 Jeff Law <law@redhat.com>
401
402 * gimple-ssa-evrp.c (evrp_dom_walker::cleanup): Call
403 vr_values::cleanup_edges_and_switches.
404 * tree-vrp.c (to_remove_edges, to_update_switch_stmts): Moved into
405 vr_values class.
406 (identify_jump_threads): Remove EDGE_IGNORE handling.
407 (execute_vrp): Move handling of to_remove_edges and
408 to_update_switch_stmts into vr_values class member functions.
409 * tree-vrp.h (switch_update, to_remove_edges): Remove declarations.
410 (to_update_switch_stmts): Likewise.
411 * vr-values.c: Include cfghooks.h.
412 (vr_values::vr_values): Initialize to_remove_edges and
413 to_update_switch_stmts.
414 (vr_values::~vr_values): Verify to_remove_edges and
415 to_update_switch_stmts are empty.
416 (vr_values::simplify_switch_using_ranges): Set EDGE_IGNORE as needed.
417 (vr_values::cleanup_edges_and_switches): New member function.
418 * vr-values.h (vr_values): Add cleanup_edges_and_switches member
419 function. Add new data members.
420
421 2018-09-21 David Malcolm <dmalcolm@redhat.com>
422
423 PR tree-optimization/87309
424 * dumpfile.c (dump_context::begin_scope): Filter the dump_loc
425 calls with pflags and alt_flags.
426 (selftest::test_capture_of_dump_calls): Add test of interaction of
427 MSG_OPTIMIZED_LOCATIONS with AUTO_DUMP_SCOPE.
428
429 2018-09-21 Olivier Hainque <hainque@adacore.com>
430
431 * config.gcc: Factorize and comment inclusion of vxworks-dummy.h.
432
433 2018-09-21 Olivier Hainque <hainque@adacore.com>
434
435 * config/vxworks.h (CLEAR_INSN_CACHE): #define to 1.
436
437 2018-09-21 Olivier Hainque <hainque@adacore.com>
438
439 * config/vxworks.h (VXWORKS_LIBGCC_SPEC): Remove -lc_internal.
440 Merge block comment with the one ahead of VXWORKS_LIBS_RTP. Then:
441 (VXWORKS_LIBS_RTP): Minor reordering.
442
443 2018-09-21 Olivier Hainque <hainque@adacore.com>
444
445 * config/vxworks.h (STARTFILE_PREFIX_SPEC): Define.
446 (VXWORKS_LIBS_DIR_RTP): Remove definition and use.
447
448 2018-09-21 Olivier Hainque <hainque@adacore.com>
449
450 * config/vxworks.h (SIZE_TYPE): Account for TARGET_VXWORKS64.
451 (PTRDIFF_TYPE): Likewise.
452
453 2018-09-21 Olivier Hainque <hainque@adacore.com>
454
455 * config.gcc: Enforce def of TARGET_VXWORKS64 to 1 from
456 triplet, similar to support for VxWorks7.
457 * config/vxworks-dummy.h: Provide a default definition
458 of TARGET_VXWORKS64 to 0.
459
460 2018-09-21 Olivier Hainque <hainque@adacore.com>
461
462 * config/vxworks.h (TARGET_VXWORKS7): Move default definition ...
463 * config/vxworks-dummy.h: here.
464
465 2018-09-21 Olivier Hainque <hainque@adacore.com>
466
467 * config.gcc: Prepend vxworks-dummy.h to tm_file for powerpc*
468
469 2018-09-21 Shaokun Zhang <zhangshaokun@hisilicon.com>
470 Bo Zhou <zbo.zhou@hisilicon.com>
471
472 * config/aarch64/aarch64-cores.def (tsv110): New CPU.
473 * config/aarch64/aarch64-tune.md: Regenerated.
474 * doc/invoke.texi (AArch64 Options/-mtune): Add "tsv110".
475 * config/aarch64/aarch64.c (tsv110_tunings): New tuning table.
476 * config/aarch64/aarch64-cost-tables.h: Add "tsv110" extra costs.
477
478 2018-09-21 Andrew Stubbs <ams@codesourcery.com>
479 Julian Brown <julian@codesourcery.com>
480
481 * builtins.c (get_builtin_sync_mem): Handle address spaces.
482
483 2018-09-21 Eric Botcazou <ebotcazou@adacore.com>
484
485 * config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Return false
486 if the call takes a static chain.
487
488 2018-09-21 Martin Liska <mliska@suse.cz>
489
490 * auto-profile.c (autofdo_source_profile::read): Do not
491 set sum_all.
492 (read_profile): Do not add working sets.
493 (read_autofdo_file): Remove sum_all.
494 (afdo_callsite_hot_enough_for_early_inline): Remove const
495 qualifier.
496 * coverage.c (struct counts_entry): Remove gcov_summary.
497 (read_counts_file): Read new GCOV_TAG_OBJECT_SUMMARY,
498 do not support GCOV_TAG_PROGRAM_SUMMARY.
499 (get_coverage_counts): Remove summary and expected
500 arguments.
501 * coverage.h (get_coverage_counts): Likewise.
502 * doc/gcov-dump.texi: Remove -w option.
503 * gcov-dump.c (dump_working_sets): Remove.
504 (main): Do not support '-w' option.
505 (print_usage): Likewise.
506 (tag_summary): Likewise.
507 * gcov-io.c (gcov_write_summary): Do not dump
508 histogram.
509 (gcov_read_summary): Likewise.
510 (gcov_histo_index): Remove.
511 (gcov_histogram_merge): Likewise.
512 (compute_working_sets): Likewise.
513 * gcov-io.h (GCOV_TAG_OBJECT_SUMMARY): Mark
514 it not obsolete.
515 (GCOV_TAG_PROGRAM_SUMMARY): Mark it obsolete.
516 (GCOV_TAG_SUMMARY_LENGTH): Adjust.
517 (GCOV_HISTOGRAM_SIZE): Remove.
518 (GCOV_HISTOGRAM_BITVECTOR_SIZE): Likewise.
519 (struct gcov_summary): Simplify rapidly just
520 to runs and sum_max fields.
521 (gcov_histo_index): Remove.
522 (NUM_GCOV_WORKING_SETS): Likewise.
523 (compute_working_sets): Likewise.
524 * gcov-tool.c (print_overlap_usage_message): Remove
525 trailing empty line.
526 * gcov.c (read_count_file): Read GCOV_TAG_OBJECT_SUMMARY.
527 (output_lines): Remove program related line.
528 * ipa-profile.c (ipa_profile): Do not consider GCOV histogram.
529 * lto-cgraph.c (output_profile_summary): Do not stream GCOV
530 histogram.
531 (input_profile_summary): Do not read it.
532 (merge_profile_summaries): And do not merge it.
533 (input_symtab): Do not call removed function.
534 * modulo-sched.c (sms_schedule): Do not print sum_max.
535 * params.def (HOT_BB_COUNT_FRACTION): Reincarnate param that was
536 removed when histogram method was invented.
537 (HOT_BB_COUNT_WS_PERMILLE): Mention that it's used only in LTO
538 mode.
539 * postreload-gcse.c (eliminate_partially_redundant_load): Fix
540 GCOV coding style.
541 * predict.c (get_hot_bb_threshold): Use HOT_BB_COUNT_FRACTION
542 and dump selected value.
543 * profile.c (add_working_set): Remove.
544 (get_working_sets): Likewise.
545 (find_working_set): Likewise.
546 (get_exec_counts): Do not work with working sets.
547 (read_profile_edge_counts): Do not inform as sum_max is removed.
548 (compute_branch_probabilities): Likewise.
549 (compute_value_histograms): Remove argument for call of
550 get_coverage_counts.
551 * profile.h: Do not make gcov_summary const.
552
553 2018-09-21 Monk Chiang <sh.chiang04@gmail.com>
554
555 * config.gcc (nds32*-*-*): Set TARGET_DEFAULT_TLSDESC_TRAMPOLINE=0.
556
557 2018-09-21 Eric Botcazou <ebotcazou@adacore.com>
558
559 PR tree-optimization/86990
560 * gimple-ssa-store-merging.c (imm_store_chain_info:coalesce_immediate):
561 Check that the entire merged store group is made of constants only for
562 overlapping stores.
563
564 2018-09-20 Allan Sandfeld Jensen <allan.jensen@qt.io>
565
566 * gcc.c (LINK_COMMAND_SPEC): Handle -r like -nostdlib.
567 (VTABLE_VERIFICATION_SPEC): Likewise.
568 (SANITIZER_EARLY_SPEC): Likewise.
569 (SANITIZER_SPEC): Likewise.
570 * config/darwin.h (LINK_COMMAND_SPEC): Likewise.
571 * doc/invoke.texi (Link Options): Document -r.
572
573 2018-09-20 Richard Biener <rguenther@suse.de>
574
575 PR middle-end/87054
576 * gimplify.c (gimplify_expr): Retain alignment of
577 addressable lvalue in dereference.
578
579 2018-09-20 Alexandre Oliva <aoliva@redhat.com>
580
581 PR bootstrap/87013
582 * configure.ac: Check for .loc is_stmt support.
583 * configure, config.in: Rebuilt.
584 * dwarf2out.c (dwarf2out_source_line): Skip is_stmt
585 if not supported.
586
587 2018-09-20 Segher Boessenkool <segher@kernel.crashing.org>
588
589 * config/rs6000/rs6000.opt (misel=no, misel=yes): Delete.
590 * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -misel=yes and
591 -misel=no.
592
593 2018-09-20 Segher Boessenkool <segher@kernel.crashing.org>
594
595 * config/rs6000/rs6000-opts.h (enum rs6000_vector): Delete
596 VECTOR_OTHER.
597 * config/rs6000/rs6000.c (rs6000_debug_vector_unit): Delete
598 case VECTOR_OTHER.
599
600 2018-09-20 Marek Polacek <polacek@redhat.com>
601
602 * doc/invoke.texi: Add -Wno-init-list-lifetime to C++ Language Options.
603
604 2018-09-20 Richard Sandiford <richard.sandiford@arm.com>
605
606 PR tree-optimization/87288
607 * tree-vect-loop.c (vect_analyze_loop_2): Take PEELING_FOR_GAPS
608 into account when determining PEELING_FOR_NITERS.
609
610 2018-09-20 Richard Sandiford <richard.sandiford@arm.com>
611
612 PR tree-optimization/86877
613 * tree-vect-loop.c (vect_analyze_loop_2): Call
614 vect_verify_datarefs_alignment.
615
616 2018-09-19 Marek Polacek <polacek@redhat.com>
617
618 * doc/invoke.texi: Document -Wclass-conversion.
619
620 2018-09-19 John David Anglin <danglin@gcc.gnu.org>
621
622 * config/pa/pa.c (pa_adjust_priority): Delete.
623 (TARGET_SCHED_ADJUST_PRIORITY): Delete define.
624
625 * config/pa/pa.md (atomic_storeqi): Restore deleted expander.
626 (atomic_storehi): Likewise.
627 (atomic_storesi): Likewise.
628 (atomic_loaddi): Restore compare and swap exchange loop code.
629
630 2018-09-19 Segher Boessenkool <segher@kernel.crashing.org>
631
632 PR rtl-optimization/86902
633 * combine.c (try_combine): When changing the CC mode used, don't change
634 an unrelated mode in other_insn to that new CC mode.
635
636 2018-09-19 David Malcolm <dmalcolm@redhat.com>
637
638 * tree-data-ref.c (runtime_alias_check_p): Use formatted printing
639 with %T in place of calls to dump_generic_expr.
640 (prune_runtime_alias_test_list): Likewise.
641 (create_runtime_alias_checks): Likewise.
642 * tree-vect-data-refs.c (vect_check_nonzero_value): Likewise.
643 (vect_analyze_data_ref_dependence): Likewise.
644 (vect_slp_analyze_data_ref_dependence): Likewise.
645 (vect_record_base_alignment): Likewise. Use %G in place of call
646 to dump_gimple_stmt.
647 (vect_compute_data_ref_alignment): Likewise.
648 (verify_data_ref_alignment): Likewise.
649 (vect_find_same_alignment_drs): Likewise.
650 (vect_analyze_group_access_1): Likewise.
651 (vect_analyze_data_ref_accesses): Likewise.
652 (dependence_distance_ge_vf): Likewise.
653 (dump_lower_bound): Likewise.
654 (vect_prune_runtime_alias_test_list): Likewise.
655 (vect_find_stmt_data_reference): Likewise.
656 (vect_analyze_data_refs): Likewise.
657 (vect_create_addr_base_for_vector_ref): Likewise.
658 (vect_create_data_ref_ptr): Likewise.
659 * tree-vect-loop-manip.c (vect_set_loop_condition): Likewise.
660 (vect_can_advance_ivs_p): Likewise.
661 (vect_update_ivs_after_vectorizer): Likewise.
662 (vect_gen_prolog_loop_niters): Likewise.
663 (vect_prepare_for_masked_peels): Likewise.
664 * tree-vect-loop.c (vect_determine_vf_for_stmt): Likewise.
665 (vect_determine_vectorization_factor): Likewise.
666 (vect_is_simple_iv_evolution): Likewise.
667 (vect_analyze_scalar_cycles_1): Likewise.
668 (vect_analyze_loop_operations): Likewise.
669 (report_vect_op): Likewise.
670 (vect_is_slp_reduction): Likewise.
671 (check_reduction_path): Likewise.
672 (vect_is_simple_reduction): Likewise.
673 (vect_create_epilog_for_reduction): Likewise.
674 (vect_finalize_reduction:): Likewise.
675 (vectorizable_induction): Likewise.
676 (vect_transform_loop_stmt): Likewise.
677 (vect_transform_loop): Likewise.
678 (optimize_mask_stores): Likewise.
679 * tree-vect-patterns.c (vect_pattern_detected): Likewise.
680 (vect_split_statement): Likewise.
681 (vect_recog_over_widening_pattern): Likewise.
682 (vect_recog_average_pattern): Likewise.
683 (vect_determine_min_output_precision_1): Likewise.
684 (vect_determine_precisions_from_range): Likewise.
685 (vect_determine_precisions_from_users): Likewise.
686 (vect_mark_pattern_stmts): Likewise.
687 (vect_pattern_recog_1): Likewise.
688 * tree-vect-slp.c (vect_get_and_check_slp_defs): Likewise.
689 (vect_record_max_nunits): Likewise.
690 (vect_build_slp_tree_1): Likewise.
691 (vect_build_slp_tree_2): Likewise.
692 (vect_print_slp_tree): Likewise.
693 (vect_analyze_slp_instance): Likewise.
694 (vect_detect_hybrid_slp_stmts): Likewise.
695 (vect_detect_hybrid_slp_1): Likewise.
696 (vect_slp_analyze_operations): Likewise.
697 (vect_slp_analyze_bb_1): Likewise.
698 (vect_transform_slp_perm_load): Likewise.
699 (vect_schedule_slp_instance): Likewise.
700 * tree-vect-stmts.c (vect_mark_relevant): Likewise.
701 (vect_mark_stmts_to_be_vectorized): Likewise.
702 (vect_init_vector_1): Likewise.
703 (vect_get_vec_def_for_operand): Likewise.
704 (vect_finish_stmt_generation_1): Likewise.
705 (vect_check_load_store_mask): Likewise.
706 (vectorizable_call): Likewise.
707 (vectorizable_conversion): Likewise.
708 (vectorizable_operation): Likewise.
709 (vectorizable_load): Likewise.
710 (vect_analyze_stmt): Likewise.
711 (vect_is_simple_use): Likewise.
712 (vect_get_vector_types_for_stmt): Likewise.
713 (vect_get_mask_type_for_stmt): Likewise.
714 * tree-vectorizer.c (increase_alignment): Likewise.
715
716 2018-09-19 Andrew Stubbs <ams@codesourcery.com>
717
718 * doc/rtl.texi: Adjust vec_select description.
719 * simplify-rtx.c (simplify_binary_operation_1): Allow VEC_SELECT to use
720 non-constant selectors.
721
722 2018-09-19 Matthew Malcomson <matthew.malcomson@arm.com>
723
724 * config/aarch64/aarch64-protos.h
725 (aarch64_offset_9bit_signed_unscaled_p): New declaration.
726 * config/aarch64/aarch64.md (arches): New "rcpc8_4" attribute value.
727 (arch_enabled): Add check for "rcpc8_4" attribute value of "arch".
728 * config/aarch64/aarch64.h (AARCH64_FL_RCPC8_4): New bitfield.
729 (AARCH64_FL_FOR_ARCH8_4): Include AARCH64_FL_RCPC8_4.
730 (AARCH64_FL_PROFILE): Move index so flags are ordered.
731 (AARCH64_ISA_RCPC8_4): New flag.
732 * config/aarch64/aarch64.c (offset_9bit_signed_unscaled_p): Renamed
733 to aarch64_offset_9bit_signed_unscaled_p.
734 * config/aarch64/atomics.md (atomic_store<mode>): Allow offset
735 and use stlur.
736 * config/aarch64/constraints.md (Ust): New constraint.
737 * config/aarch64/predicates.md.
738 (aarch64_9bit_offset_memory_operand): New predicate.
739 (aarch64_rcpc_memory_operand): New predicate.
740
741 2018-09-19 Eric Botcazou <ebotcazou@adacore.com>
742
743 PR rtl-optimization/87361
744 * rtlanal.c (nonzero_bits1): Revert accidental change.
745
746 2018-09-19 Richard Biener <rguenther@suse.de>
747
748 PR tree-optimization/87349
749 PR tree-optimization/87342
750 * tree-ssa-sccvn.c (do_rpo_vn): Iterate max_rpo computation.
751
752 2018-09-18 Marek Polacek <polacek@redhat.com>
753
754 P1064R0 - Allowing Virtual Function Calls in Constant Expressions
755 * gimple-fold.c (gimple_get_virt_method_for_vtable): Adjust assert.
756
757 2018-09-18 Segher Boessenkool <segher@kernel.crashing.org>
758
759 * config/rs6000/rs6000.md: Remove old "Cygnus sibcall" comment.
760
761 2018-09-18 Segher Boessenkool <segher@kernel.crashing.org>
762
763 PR rtl-optimization/86882
764 * rtlanal.c (reg_overlap_mentioned_p): Handle CLOBBER.
765
766 2018-09-18 Uros Bizjak <ubizjak@gmail.com>
767
768 * config/i386/i386.md (*<code>extend<mode>xf2): Macroize insn from
769 *<code>extendsfxf2 and *<code>extenddfxf2 using MODEF mode iterator.
770
771 2018-09-18 Jonathan Wakely <jwakely@redhat.com>
772
773 PR other/87353
774 * doc/invoke.texi (Link Options): Fix formatting and grammar.
775
776 2018-09-18 Richard Biener <rguenther@suse.de>
777
778 PR middle-end/63155
779 * tree-ssa-coalesce.c (tree_int_map_hasher): Remove.
780 (compute_samebase_partition_bases): Likewise.
781 (coalesce_ssa_name): Always use compute_optimized_partition_bases.
782 (gimple_can_coalesce_p): Simplify.
783
784 2018-09-18 Hans-Peter Nilsson <hp@bitrange.com>
785
786 Handle a library implementation of ffs calling __builtin_ffs.
787 * config/mmix/mmix.c (TARGET_INIT_LIBFUNCS): Override with...
788 (mmix_init_libfuncs): New function: make __builtin_ffs expand
789 to __ffsdi2.
790
791 2018-09-17 David Malcolm <dmalcolm@redhat.com>
792
793 * diagnostic-show-locus.c (class layout_range): Add field
794 "m_original_idx".
795 (layout_range::layout_range): Add "original_idx" param and use it
796 to initialize new field.
797 (make_range): Use 0 for original_idx.
798 (layout::layout): Pass in index to calls to
799 maybe_add_location_range.
800 (layout::maybe_add_location_range): Add param "original_idx" and
801 pass it on to layout_range.
802 (layout::print_any_labels): Pass on range->m_original_idx to
803 get_text call.
804 (gcc_rich_location::add_location_if_nearby): Use 0 for
805 original_idx.
806 * gcc-rich-location.h (text_range_label::get_text): Update for new
807 param.
808 (range_label_for_type_mismatch::get_text): Likewise.
809
810 2018-09-17 Uros Bizjak <ubizjak@gmail.com>
811
812 * config/i386/i386.c (ix86_emit_i387_log1p): Emit fldln2 earlier.
813
814 2018-09-17 David Malcolm <dmalcolm@redhat.com>
815
816 * gimple-ssa-sprintf.c (fmtwarn): Update for introduction of
817 format_string_diagnostic_t.
818 (fmtwarn_n): Likewise.
819 * substring-locations.c
820 (format_string_diagnostic_t::format_string_diagnostic_t) New ctor.
821 (format_warning_n_va): Convert to...
822 (format_string_diagnostic_t::emit_warning_n_va): ...this.
823 (format_warning_va): Convert to...
824 (format_string_diagnostic_t::emit_warning_va): ...this.
825 (format_warning_at_substring): Convert to...
826 (format_string_diagnostic_t::emit_warning): ...this.
827 (format_warning_at_substring_n): Convert to...
828 (format_string_diagnostic_t::emit_warning_n): ...this.
829 * substring-locations.h (class format_string_diagnostic_t): New
830 class.
831 (format_warning_va): Convert to
832 format_string_diagnostic_t::emit_warning_va.
833 (format_warning_n_va): Convert to
834 format_string_diagnostic_t::emit_warning_n_va.
835 (format_warning_at_substring): Convert to
836 format_string_diagnostic_t::emit_warning.
837 (format_warning_at_substring_n): Convert to
838 format_string_diagnostic_t::emit_warning_n.
839
840 2018-09-17 Cesar Philippidis <cesar@codesourcery.com>
841 Bernd Schmidt <bernds_cb1@t-online.de>
842
843 * config/nvptx/nvptx.md (atomic_fetch_<logic><mode>): Enable with
844 SImode args.
845
846 2018-09-17 Uros Bizjak <ubizjak@gmail.com>
847
848 * config/i386/i386.md (truncxf<mode>2_i387_noop_unspec): Change
849 operand 0 predicate to nonimmediate operand.
850 (rint<mode>2_frndint): Remove insn pattern.
851 (rint<mode>2): Change operand 1 predicate to general_operand.
852 Extend operand 1 to XFmode and generate rintxf2 insn.
853 (frndintxf2_<rounding>): Rename from frndint<mode>2_<rounding>.
854 Do not use X87MODEF mode macro.
855 (frndintxf2_<rounding>_i387): Rename from
856 frndint<mode>2_<rounding>_i387. Do not use X87MODEF mode macro.
857 (<rounding_insn><mode>2): For non-SSE modes, extend operand 1
858 to XFmode and generate significandxf3 insn.
859
860 2018-09-17 Richard Biener <rguenther@suse.de>
861
862 PR tree-optimization/87328
863 * tree-ssa-sccvn.c (process_bb): Remove assertion about not
864 visiting unexecutable backedges when not iterating.
865 (do_rpo_vn): Mark all edges not executable even when not
866 iterating.
867
868 2018-09-17 Martin Jambor <mjambor@suse.cz>
869
870 PR c/63886
871 * doc/invoke.texi (Warning Options): Likewise.
872
873 2018-09-17 Richard Biener <rguenther@suse.de>
874
875 PR tree-optimization/87301
876 * tree-ssa-sccvn.c (eliminate_dom_walker::eliminate_cleanup): Properly
877 clean EH info from leftover copy assignments.
878
879 2018-09-17 Martin Liska <mliska@suse.cz>
880
881 PR gcov-profile/85871
882 * gcov.c (output_intermediate_file): Fix out of bounds
883 access.
884
885 2018-09-17 Vineet Gupta <vgupta@synopsys.com>
886
887 * config/arc/arc.c: Object attributes for core4 not reflected
888 correctly.
889 * config/arc/arc.h: Don't restrict DBNZ to core3 (core4 includes
890 core3).
891
892 2018-09-17 Alexey Brodkin <abrodkin@synopsys.com>
893
894 * config/arc/linux.h (LINK_EH_SPEC): Add missing space.
895
896 2018-09-17 Martin Liska <mliska@suse.cz>
897
898 * doc/gcov.texi: Document new option --use-hotness-colors.
899 * gcov.c (struct source_info): Declare new field.
900 (source_info::source_info): Set default for maximum_count.
901 (print_usage): Add new -q option.
902 (process_args): Process it.
903 (accumulate_line_info): Save src->maximum_count.
904 (output_line_beginning): Make color line number if
905 flag_use_hotness_colors is set.
906 (output_line_details): Pass default argument value.
907 (output_lines): Pass src->maximum_count.
908
909 2018-09-17 Martin Liska <mliska@suse.cz>
910
911 * common/config/i386/i386-common.c (ix86_get_valid_option_values):
912 Use processor_names table.
913 * config/i386/i386.c (ix86_default_align): Use
914 processor_cost_table for alignment values.
915 (ix86_option_override_internal): Use processor_names.
916 (ix86_function_specific_print): Likewise.
917 * config/i386/i386.h (struct processor_costs):
918 Add alignment values.
919 (struct ptt): Remove and replace with const char *.
920 * config/i386/x86-tune-costs.h (struct processor_costs):
921 Declare default alignments for all costs.
922
923 2018-09-17 Aldy Hernandez <aldyh@redhat.com>
924
925 * tree-vrp.c (extract_range_from_unary_expr): Do not special case
926 symbolics or VR_VARYING ranges for ABS_EXPR.
927 * wide-int-range.cc (wide_int_range_abs): Return positive numbers
928 when range will wrap.
929
930 2018-09-15 Eric Botcazou <ebotcazou@adacore.com>
931
932 PR middle-end/86864
933 * cfgexpand.c (expand_gimple_basic_block): Be prepared for a BARRIER
934 before and after a JUMP_TABLE_DATA.
935
936 2018-09-14 John David Anglin <danglin@gcc.gnu.org>
937
938 PR middle-end/87188
939 * dojump.c (do_compare_and_jump): Canonicalize function pointers
940 when one operand is a function pointer. Use POINTER_TYPE_P and
941 FUNC_OR_METHOD_TYPE_P.
942 * expr.c (do_store_flag): Use POINTER_TYPE_P and FUNC_OR_METHOD_TYPE_P.
943 * fold-const.c (build_range_check): Likewise.
944 * match.pd (simple_comparison): Likewise.
945
946 2018-09-14 David Malcolm <dmalcolm@redhat.com>
947
948 PR c/82967
949 * spellcheck.c (get_edit_distance_cutoff): New function.
950 (selftest::test_edit_distance_unit_test_oneway): Rename to...
951 (selftest::test_get_edit_distance_one_way): ...this.
952 (selftest::test_get_edit_distance_unit): Rename to...
953 (selftest::test_get_edit_distance_both_ways): ...this.
954 (selftest::test_edit_distances): Move tests to this new function,
955 and test some more pairs of strings. Update for above renaming.
956 (selftest::get_old_cutoff): New function.
957 (selftest::test_get_edit_distance_cutoff): New function.
958 (selftest::assert_suggested_for): New function.
959 (ASSERT_SUGGESTED_FOR): New macro.
960 (selftest::assert_not_suggested_for): New function.
961 (ASSERT_NOT_SUGGESTED_FOR): New macro.
962 (selftest::test_suggestions): New function.
963 (selftest::spellcheck_c_tests): Move test_get_edit_distance_unit
964 tests to selftest::test_edit_distances and call it. Add calls to
965 selftest::test_get_edit_distance_cutoff and
966 selftest::test_suggestions.
967 * spellcheck.h (get_edit_distance_cutoff): New function declaration.
968 (best_match::consider): Replace hard-coded cutoff calculation with
969 a call to...
970 (best_match::get_cutoff): New declaration.
971 (best_match::get_best_meaningful_candidate): Likewise.
972
973 2018-09-14 Bernd Edlinger <bernd.edlinger@hotmail.de>
974
975 * builtins.c (fold_builtin_strlen): Remove TODO comment.
976
977 2018-09-14 Bernd Edlinger <bernd.edlinger@hotmail.de>
978
979 revert:
980 2018-07-30 Bernd Edlinger <bernd.edlinger@hotmail.de>
981
982 * tree-ssa-forwprop.c (simplify_builtin_call): Don't create a not NUL
983 terminated string literal.
984
985 2018-09-14 Martin Sebor <msebor@redhat.com>
986
987 * builtins.c (unterminated_array): Handle ARRAY_REF.
988 (expand_builtin_stpcpy_1): Detect unterminated char arrays.
989 * builtins.h (unterminated_array): Declare extern.
990 * gimple-fold.c (gimple_fold_builtin_stpcpy): Detect unterminated
991 arrays.
992 (gimple_fold_builtin_sprintf): Propagate NO_WARNING to transformed
993 calls.
994
995 2018-09-14 Martin Sebor <msebor@redhat.com>
996 Jeff Law <law@redhat.com>
997
998 * builtins.c (unterminated_array): New.
999 (expand_builtin_strcpy): Adjust.
1000 (expand_builtin_strcpy_args): Detect unterminated arrays.
1001 * gimple-fold.c (get_maxval_strlen): Add argument. Detect
1002 unterminated arrays.
1003 * gimple-fold.h (get_maxval_strlen): Add argument.
1004 (gimple_fold_builtin_strcpy): Detec unterminated arrays.
1005
1006 * gimple-fold.c (get_range_strlen): Add argument.
1007 (get_maxval_strlen): Adjust.
1008 * gimple-fold.h (get_range_strlen): Add argument.
1009
1010 2018-09-14 Wei Xiao <wei3.xiao@intel.com>
1011
1012 * config/i386/movdirintrin.h: Fix copyright year.
1013
1014 2018-09-14 Uros Bizjak <ubizjak@gmail.com>
1015
1016 * reg-stack.c: Include regs.h.
1017 (replace_reg): Assert that mode is MODE_FLOAT or MODE_COMPLEX_FLOAT.
1018 (emit_pop_insn): Default pop insn mode to the reg_raw_mode of
1019 FIRST_STACK_REG, not DFmode.
1020 (emit_swap_insn): Default swap insn mode to the reg_raw_mode of
1021 FIRST_STACK_REG, not XFmode. Explicitly construct swap RTX.
1022 (change stack): Default register mode to the reg_raw_mode of
1023 FIRST_STACK_REG, not DFmode.
1024 * config/i386/i386.md (*swap<mode>): Remove insn pattern.
1025 (*swapxf): Rename from swapxf.
1026
1027 2018-09-14 Carl Love <cel@us.ibm.com>
1028
1029 * config/rs6000/emmintrin.h: Add _MM_SHUFFLE2.
1030 * config/rs6000/xmmintrin.h: Add _MM_SHUFFLE.
1031
1032 2018-09-14 Segher Boessenkool <segher@kernel.crashing.org>
1033
1034 PR target/87224
1035 * config/rs6000/rs6000.md (*mov<mode>_hardfloat64): Add Z to the Y
1036 alternatives.
1037
1038 2018-09-14 Sam Tebbs <sam.tebbs@arm.com>
1039
1040 PR target/85628
1041 * config/aarch64/aarch64.md (*aarch64_bfxilsi_uxtw): Define.
1042
1043 2018-09-14 Jason Merrill <jason@redhat.com>
1044
1045 Fix --enable-gather-detailed-mem-stats.
1046 * hash-table.c (hash_table_usage): Change from variable to function.
1047 * hash-table.h: Adjust.
1048 * Makefile.in: Add missing dependencies on hash-table.h.
1049
1050 2018-09-14 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1051
1052 PR tree-optimization/87259
1053 PR lto/87283
1054 (pass_cse_reciprocals::execute): Run optimize_recip_sqrt after
1055 execute_cse_reciprocals_1 has tried transforming.
1056
1057 2018-09-14 Aldy Hernandez <aldyh@redhat.com>
1058
1059 * tree-vrp.c (extract_range_from_binary_expr_1): Normalize
1060 VR_VARYING for PLUS/MINUS_EXPR.
1061
1062 2018-09-14 Ilya Leoshkevich <iii@linux.ibm.com>
1063
1064 * config/s390/s390-passes.def (INSERT_PASS_BEFORE): Improve
1065 formatting.
1066
1067 2018-09-14 Richard Biener <rguenther@suse.de>
1068
1069 PR middle-end/63155
1070 * tree-ssa-coalesce.c (ssa_conflicts_merge): Remove conflict
1071 bits for the merged partition.
1072
1073 2018-09-13 Martin Sebor <msebor@redhat.com>
1074 Bernd Edlinger <bernd.edlinger@hotmail.de>
1075
1076 * builtins.h (c_srlen): Add argument.
1077 * builtins.c (warn_string_no_nul): New function.
1078 (c_strlen): Add argument and use it. Update recursive calls.
1079 Pass DECL argument to string_constant to get info on non
1080 terminated strings. Update *NONSTR as needed.
1081 (fold_builtin_strlen): Add argument to calls to c_strlen.
1082 Warn for unterminated arrays.
1083 (warn_string_no_null): Add prototype.
1084 * expr.c (string_constant): Update arguments. Update recursive
1085 calls appropriately. Detect missing NUL terminator and outermost
1086 declaration its missing in.
1087 Improve checks for arrays with nonzero lower bound or elements
1088 that are not a single byte. Simplify offset computation.
1089 Simplify checks for non-NUL terminated strings.
1090 * gimple-fold.c (get_range_strlen): Add argument to c_strlen call.
1091 * gimple-ssa-sprintf.c (get_string_length): Remove unnecessary code.
1092
1093 2018-09-13 Bernd Edlinger <bernd.edlinger@hotmail.de>
1094
1095 * builtins.c (c_strlen): Handle not zero terminated STRING_CSTs
1096 correctly.
1097 * fold-const.c (c_getstr): Fix function comment. Remove unused third
1098 argument. Fix range checks.
1099 * fold-const.h (c_getstr): Adjust protoype.
1100 * gimple-fold.c (gimple_fold_builtin_memory_op): Avoid folding when
1101 string is constant but contains no NUL byte.
1102
1103 * expr.c (string_constant): Adjust function comment.
1104 Remove bogus check for zero termination.
1105
1106 * fold-const.c (c_getstr): Clamp STRING_LENGTH to STRING_SIZE.
1107
1108 * varasm.c (compare_constant): Compare type size of STRING_CSTs.
1109 (get_constant_size): Don't make STRING_CSTs larger than they are.
1110 (check_string_literal): New check function for STRING_CSTs.
1111 (output_constant): Use it.
1112
1113 2018-09-13 Eric Botcazou <ebotcazou@adacore.com>
1114
1115 PR target/86812
1116 * config/visium/visium.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Define.
1117
1118 2018-09-13 Richard Biener <rguenther@suse.de>
1119
1120 PR tree-optimization/87263
1121 * tree-ssa-sccvn.c (visit_phi): Revert some earlier changes.
1122 (struct unwind_state): Add max_rpo field.
1123 (do_rpo_vn): Allow up-to-date loop state to be used when not iterating.
1124 Compute max_rpo, the max RPO number a block can be backwards reached
1125 from. Re-write non-iterating mode to a RPO ordered worklist approach,
1126 separating it from the iterating mode.
1127
1128 2018-09-13 Vlad Lazar <vlad.lazar@arm.com>
1129
1130 * haifa-sched.c (rank_for_schedule): Schedule by INSN_COST.
1131 (rfs_decision): New scheduling decision.
1132
1133 2018-09-13 Richard Biener <rguenther@suse.de>
1134
1135 PR bootstrap/87134
1136 * tree-ssa-sccvn.c (vn_nary_op_insert_into): Fix assert.
1137 (vn_nary_op_insert_pieces_predicated): Do not write useless
1138 valid_dominated_by_p entry outside of the allocated storage.
1139
1140 2018-09-13 Omar Sandoval <osandov@osandov.com>
1141 Tom de Vries <tdevries@suse.de>
1142
1143 PR debug/86985
1144 * dwarf2out.c (is_c): New function.
1145 (add_subscript_info): Add DW_AT_count of 0 for C zero-length arrays.
1146
1147 2018-09-13 Sam Tebbs <sam.tebbs@arm.com>
1148
1149 PR target/85628
1150 * config/aarch64/aarch64.md (*aarch64_bfxil):
1151 Define.
1152 * config/aarch64/constraints.md (Ulc): Define.
1153 * config/aarch64/aarch64-protos.h (aarch64_high_bits_all_ones_p):
1154 Define.
1155 * config/aarch64/aarch64.c (aarch64_high_bits_all_ones_p):
1156 New function.
1157
1158 2018-09-13 Vlad Lazar <vlad.lazar@arm.com>
1159
1160 * config/aarch64/aarch64.h (TARGET_COMPUTE_FRAME_LAYOUT): Define.
1161 * config/aarch64/aarch64.c (aarch64_expand_prologue): Remove
1162 aarch64_layout_frame call.
1163 (aarch64_expand_epilogue): Likewise.
1164 (aarch64_initial_elimination_offset): Likewise.
1165 (aarch64_get_separate_components): Likewise.
1166 (aarch64_use_return_insn_p): Likewise.
1167 (aarch64_layout_frame): Remove unneeded check.
1168
1169 2018-09-13 Jakub Jelinek <jakub@redhat.com>
1170
1171 * configure.ac: Only append
1172 " : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS" to
1173 gcc_config_arguments if it was never reconfigured or last reconfigure
1174 was with different arguments.
1175 * configure: Regenerated.
1176
1177 2018-09-13 Jakub Jelinek <jakub@redhat.com>
1178 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1179
1180 PR middle-end/87290
1181 * expr.c (maybe_optimize_pow2p_mod_cmp): New function.
1182 (maybe_optimize_mod_cmp): Use it if integer_pow2p treeop1.
1183
1184 2018-09-13 Jakub Jelinek <jakub@redhat.com>
1185
1186 PR tree-optimization/87287
1187 * fold-const.c (fold_binary_loc) <case EQ_EXPR>: Move signed modulo
1188 X % C == 0 to X % (unsigned) C == 0 optimization to ...
1189 * match.pd (X % C == 0): ... here. New optimization.
1190
1191 2018-09-12 Jakub Jelinek <jakub@redhat.com>
1192
1193 PR middle-end/82853
1194 * expr.h (maybe_optimize_mod_cmp): Declare.
1195 * expr.c (mod_inv): New function.
1196 (maybe_optimize_mod_cmp): New function.
1197 (do_store_flag): Use it.
1198 * cfgexpand.c (expand_gimple_cond): Likewise.
1199
1200 2018-09-09 Cesar Philippidis <cesar@codesourcery.com>
1201 Julian Brown <julian@codesourcery.com>
1202
1203 PR middle-end/86336
1204 * gimplify.c (gimplify_scan_omp_clauses): Set
1205 target_firstprivatize_array_bases in OpenACC parallel and kernels
1206 region contexts. Remove GOMP_MAP_FIRSTPRIVATE_REFERENCE clauses from
1207 OpenACC data regions.
1208
1209 2018-09-12 Uros Bizjak <ubizjak@gmail.com>
1210
1211 * config/i386/i386.md (sqrt_extend<mode>xf3_i387): Remove.
1212 (sqrt<mode>2): Extend operand 1 to XFmode and generate sqrtxf3 insn.
1213
1214 2018-09-12 Richard Biener <rguenther@suse.de>
1215
1216 PR tree-optimization/87280
1217 * tree-ssa-sccvn.c (process_bb): Handle the case of executable
1218 edge but unreachable target.
1219 (do_rpo_vn): For conservatively handling a PHI only mark
1220 the backedge executable but not the block reachable.
1221
1222 2018-09-12 Richard Biener <rguenther@suse.de>
1223
1224 PR tree-optimization/87266
1225 * tree-ssa-sccvn.c (do_rpo_vn): Always iterate to not yet
1226 visited blocks.
1227
1228 2018-09-12 Andreas Krebbel <krebbel@linux.ibm.com>
1229
1230 * config/s390/s390.md (PFPO_RND_MODE_DFP, PFPO_RND_MODE_BFP): New
1231 constants.
1232 ("trunc<BFP:mode><DFP_ALL:mode>2")
1233 ("trunc<DFP_ALL:mode><BFP:mode>2")
1234 ("extend<BFP:mode><DFP_ALL:mode>2")
1235 ("extend<DFP_ALL:mode><BFP:mode>2"): Set proper rounding mode
1236 according to the target operand type.
1237
1238 2018-09-12 Jakub Jelinek <jakub@redhat.com>
1239 Andreas Krebbel <krebbel@linux.ibm.com>
1240
1241 PR tree-optimization/86844
1242 * gimple-ssa-store-merging.c
1243 (imm_store_chain_info::coalesce_immediate): For overlapping stores, if
1244 there are any overlapping stores in between them, make sure they are
1245 also coalesced or we give up completely.
1246
1247 2018-09-12 Jakub Jelinek <jakub@redhat.com>
1248
1249 PR middle-end/87248
1250 * fold-const.c (fold_ternary_loc) <case COND_EXPR>: Verify also that
1251 BIT_AND_EXPR's second operand is a power of two. Formatting fix.
1252
1253 2018-09-12 Tom de Vries <tdevries@suse.de>
1254
1255 * common.opt (gdescribe-dies): Add option.
1256 * dwarf2out.c (add_name_and_src_coords_attributes): Add description
1257 attribute for artifical and nameless decls.
1258 (dwarf2out_register_external_die): Add description attribute to
1259 external reference die.
1260 (add_desc_attribute): New functions.
1261 (gen_subprogram_die): Add description attribute to
1262 DW_TAG_call_site_parameter.
1263 * tree-pretty-print.c (print_generic_expr_to_str): New function.
1264 * tree-pretty-print.h (print_generic_expr_to_str): Declare.
1265 * doc/invoke.texi (@item Debugging Options): Add -gdescribe-dies and
1266 -gno-describe-dies.
1267 (@item -gdescribe-dies): Add.
1268
1269 2018-09-12 Aldy Hernandez <aldyh@redhat.com>
1270
1271 * tree-vrp.c (vrp_shift_undefined_p): Remove.
1272 (extract_range_from_binary_expr_1: Call
1273 wide_int_range_shift_undefined_p instead of vrp_shift_undefined_p.
1274 * wide-int-range.h (wide_int_range_shift_undefined_p): Do not
1275 depend on sign.
1276
1277 2018-09-12 Aldy Hernandez <aldyh@redhat.com>
1278
1279 * gimple-ssa-warn-alloca.c
1280 (alloca_type_and_limit::alloca_type_and_limit): Initialize limit
1281 field for ALLOCA_BOUND_*_LARGE.
1282
1283 2018-09-11 Nathan Sidwell <nathan@acm.org>
1284
1285 * gcc.c (load_specs, execute, run_attempt): Use %qs not '%s'.
1286
1287 2018-09-11 Uros Bizjak <ubizjak@gmail.com>
1288
1289 * reg-stack.c (subst_asm_stack_regs): Call replace_reg also
1290 for clobbers. Remove obsolete comment.
1291
1292 2018-09-11 Uros Bizjak <ubizjak@gmail.com>
1293
1294 * config/i386/i386.md (define_attr "type"): Remove mpxmov, mpxmk,
1295 mpxchk, mpxld and mpxst types.
1296 (define_attr length_immediate): Remove all processing of mpx types.
1297 (define_attr prefix_0f): Ditto.
1298 (define_attr memory): Ditto.
1299
1300 2018-09-11 Uros Bizjak <ubizjak@gmail.com>
1301
1302 * config/i386/i386.md (fyl2x_extend<mode>xf3_i387): Remove.
1303 (log<mode>2): Change operand 1 predicate to general_operand.
1304 Extend operand 1 to XFmode and generate logxf3 insn.
1305 (log10<mode>2): Change operand 1 predicate to general_operand.
1306 Extend operand 1 to XFmode and generate log10xf3 insn.
1307 (log2<mode>2): Change operand 1 predicate to general_operand.
1308 Extend operand 1 to XFmode and generate log2xf3 insn.
1309 (fyl2xp1_extend<mode>xf3_i387): Remove.
1310 (log1p<mode>2): Change operand 1 predicate to general_operand.
1311 Extend operand 1 to XFmode and generate log1pxf3 insn.
1312 (fxtract_extend<mode>xf3_i387): Remove.
1313 (logb<mode>2): Change operand 1 predicate to general_operand.
1314 Extend operand 1 to XFmode and generate logbxf3 insn.
1315 (ilogb<mode>2): Change operand 1 predicate to general_operand.
1316 Extend operand 1 to XFmode and generate fxtractxf3_i387 insn.
1317 (significand<mode>2): Change operand 1 predicate to general_operand.
1318 Extend operand 1 to XFmode and generate significandxf3 insn.
1319
1320 2018-09-11 Nathan Sidwell <nathan@acm.org>
1321
1322 * gcc.c (perror_with_name, pfatal_with_name): Delete.
1323 (load_specs): Use fatal_error.
1324 (DELETE_IF_ORDINARY, process_command): Use error.
1325 (execute, run_attempt): Use fatal_error.
1326
1327 2018-09-11 Andrew Stubbs <ams@codesourcery.com>
1328
1329 * diagnostic-core.h (sorry_at): New prototype.
1330 * diagnostic.c (sorry_at): New function.
1331
1332 2018-09-11 Aldy Hernandez <aldyh@redhat.com>
1333
1334 * tree-vrp.c (extract_range_from_binary_expr_1): Treat all divisions
1335 by zero as VR_UNDEFINED.
1336
1337 2018-09-10 Uros Bizjak <ubizjak@gmail.com>
1338
1339 * config/i386/i386.md (<sincos>xf2): Rename from *<sincos>xf2_i387.
1340 (*<sincos>_extend<mode>xf2_i387): Remove insn pattern.
1341 (<sincos>mode2): New expander.
1342 (sincos_extend<mode>xf3_i387): Remove insn pattern.
1343 (sincos -> sin, cos splitters): Remove splitter patterns.
1344 (sincos<mode>3): Change operand 2 predicate to general_operand.
1345 Extend operand 2 to XFmode and generate sincosxf3 insn.
1346 (fptanxf4_i387): Change mode of operands 0 and 3 to SFmode.
1347 Change operand 3 predicate to const1_operand.
1348 (fptan_extend<mode>xf4_i387): Remove insn pattern.
1349 (tanxf2): Update operands in the call to fptanxf4_i387.
1350 (tan<mode>2): Change operand 1 predicate to general_operand.
1351 Extend operand 1 to XFmode and generate tanxf3 insn.
1352 (atan2xf3): Rename from *fpatanxf3_i387.
1353 (fpatan_extend<mode>xf3_i387): Remove insn pattern.
1354 (atan2xf3): Remove expander.
1355 (atan2<mode<3): Change operand 1 and 2 predicates to general_operand.
1356 Extend operands 1 and 2 to XFmode and generate atan2xf3 insn.
1357 (atan<mode>2): Change operand 1 predicate to general_operand.
1358 Extend operand 1 to XFmode and generate atanxf3 insn.
1359
1360 2018-09-10 Uros Bizjak <ubizjak@gmail.com>
1361
1362 * config/i386/i386.md (x87/SSE constant load splitter): Use
1363 memory_operand instead of nonimmediate_operand for input operand
1364 predicate.
1365
1366 2018-09-09 Uros Bizjak <ubizjak@gmail.com>
1367
1368 * config/i386/i386.md (float partial SSE register stall splitter): Move
1369 splitter near its instruction pattern.
1370 (float_extend partial SSE register stall splitter): Ditto.
1371 (float_truncate partial SSE register stall splitter): Ditto.
1372
1373 2018-09-09 Hans-Peter Nilsson <hp@bitrange.com>
1374
1375 PR target/86794
1376 * config/mmix/mmix.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Redefine
1377 to speculation_safe_value_not_needed.
1378
1379 PR target/85666
1380 * config/mmix/mmix.c (mmix_assemble_integer): Handle byte-size
1381 non-CONST_INT rtx:es using assemble_integer_with_op ".byte".
1382 (MMIX_CFUN_NEEDS_SAVED_EH_RETURN_ADDRESS): Don't call
1383 leaf_function_p, instead use has_hard_reg_initial_val.
1384
1385 2018-09-09 Nathan Sidwell <nathan@acm.org>
1386
1387 * gcc.h (pfatal_with_name): Don't declare here.
1388 * gcc.c (pfatal_with_name): Make static.
1389
1390 2018-09-09 Xianmiao Qu <xianmiao_qu@c-sky.com>
1391
1392 * config/csky/csky.md (*cskyv2_adddi3, *cskyv2_subdi3): Add
1393 earlyclobber.
1394
1395 2018-09-08 John David Anglin <danglin@gcc.gnu.org>
1396
1397 PR rtl-optimization/85458
1398 * sel-sched.c (sel_target_adjust_priority): Allow backend adjust
1399 priority hook to reduce the priority of EXPR.
1400
1401 2018-09-07 Uros Bizjak <ubizjak@gmail.com>
1402
1403 * config/i386/i386.md (float<SWI48x:mode><MODEF:mode>2) Enable
1404 DImode for x87 on 32bit targets. Conditionally disable x87 modes
1405 with X87_ENABLE_FLOAT. Remove preparation code.
1406 (*float<SWI48:mode><MODEF:mode>2): Rename from
1407 *float<SWI48:mode><MODEF:mode>2_mixed. Handle x87, SSE and mixed
1408 math using "enabled" attribute.
1409 (*floatdi<MODEF:mode>2_i387): Rename from
1410 *float<SWI48x:mode><MODEF:mode>2_i387. Handle only DImode and
1411 enable for 32bit targets only.
1412 (floatdi<X87MODEF:mode>2_i387_with_xmm pre-reload splitter): New
1413 splitter.
1414 (floatdi<X87MODEF:mode>2_i387_with_xmm): Use register_operand
1415 as operand 1 predicate. Rewrite as define_insn_and_split.
1416 (floatdi<X87MODEF:mode>2_i387_with_xmm memory input splitter): Remove.
1417
1418 2018-09-06 Uros Bizjak <ubizjak@gmail.com>
1419
1420 * reg-stack.c (get_true_reg) <case FLOAT_TRUNCATE>: Reorder
1421 to fallthru to FLOAT case.
1422
1423 2018-09-06 Will Schmidt <will_schmidt@vnet.ibm.com>
1424
1425 PR target/86731
1426 * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Update logic
1427 around folding of vec_sl to handle out of range shift values.
1428
1429 2018-09-06 Uros Bizjak <ubizjak@gmail.com>
1430
1431 * config/i386/i386.md (fix_trunc<mode>_fisttp_i387_1): Remove.
1432 Update callers to gen_fix_trunc<mode>_i387_fisttp
1433 (fix_trunc<mode>_i387_fisttp): Change operand 0 predicate to
1434 nonimmediate_operand.
1435 (fix_trunc<mode>_i387_fisttp_with_temp): Remove insn pattern
1436 and corresponding splitters.
1437 (*fix_trunc<mode>_i387_1): Always expand with fix_trunc<mode>_i387.
1438 (fix_truncdi_i387): Change operand 0 predicate to nonimmediate_operand.
1439 (fix_truncdi_i387_with_temp): Remove insn pattern
1440 and corresponding splitters.
1441 (fix_trunc<mode>_i387): Change operand 0 predicate to
1442 nonimmediate_operand.
1443 (fix_trunc<mode>_i387_with_temp): Remove insn pattern
1444 and corresponding splitters.
1445 (*fistdi2_1): Remove.
1446 (fistdi2): Ditto.
1447 (fistdi2_with_temp): Remove insn pattern and corresponding splitters.
1448 (lrintxfdi2): Remove expander. Reimplement as define_insn.
1449 (*fist<mode>2_1): Remove.
1450 (fist<mode>2): Ditto.
1451 (fist<mode>2_with_temp): Remove insn pattern and corresponding
1452 splitters.
1453 (lrintxf<mode>2): Remove expander. Reimplement as define_insn.
1454 (*fist<mode>2_<rounding>_1): Always expand with fist<mode>2_<rounding>.
1455 (fistdi2_<rounding>): Change operand 0 predicate to
1456 nonimmediate_operand.
1457 (fistdi2_<rounding>_with_temp): Remove insn pattern
1458 and corresponding splitters.
1459 (fist<mode>2_<rounding>): Change operand 0 predicate to
1460 nonimmediate_operand.
1461 (fist<mode>2_<rounding>_with_temp): Remove insn pattern
1462 and corresponding splitters.
1463
1464 (*fixuns_trunc<mode>si2_avx512f_zext): Depend on TARGET_SSE_MATH.
1465
1466 2018-09-06 Bernd Edlinger <bernd.edlinger@hotmail.de>
1467
1468 * varasm.c (output_constructor_regular_field): Check TYPE_SIZE_UNIT of
1469 the init value.
1470
1471 2018-09-06 Will Schmidt <will_schmidt@vnet.ibm.com>
1472
1473 * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add support for
1474 early gimple folding of vec_splat().
1475 * tree-vect-generic.c: Remove static from tree_vec_extract() definition.
1476 * gimple-fold.h: Add an extern define for tree_vec_extract().
1477
1478 2018-09-06 Will Schmidt <will_schmidt@vnet.ibm.com>
1479
1480 * config/rs6000/rs6000.c (fold_mergehl_helper): Add types_compatible_p
1481 wrappers around TREE_TYPE comparisons.
1482
1483 2018-09-06 Ilya Leoshkevich <iii@linux.ibm.com>
1484
1485 PR target/80080
1486 * config/s390/predicates.md: Add nonsym_memory_operand.
1487 * config/s390/s390.c (s390_legitimize_cs_operand): If operand
1488 contains a SYMBOL_REF, load it into an intermediate pseudo.
1489 (s390_emit_compare_and_swap): Legitimize operand.
1490 * config/s390/s390.md: Use the new nonsym_memory_operand
1491 with UNSPECV_CAS patterns.
1492
1493 2018-09-06 Ilya Leoshkevich <iii@linux.ibm.com>
1494
1495 PR target/80080
1496 * config/s390/s390-passes.def: New file.
1497 * config/s390/s390-protos.h (class rtl_opt_pass): Add forward
1498 declaration.
1499 (make_pass_s390_early_mach): Add declaration.
1500 * config/s390/s390.c (make_pass_s390_early_mach):
1501 (s390_option_override): Remove dynamic registration.
1502 * config/s390/t-s390: Add s390-passes.def.
1503
1504 2018-09-06 Ilya Leoshkevich <iii@linux.ibm.com>
1505
1506 * config/s390/s390.c (s390_decompose_constant_pool_ref):
1507 Remove UNSPEC_LTREL_BASE check.
1508 (annotate_constant_pool_refs): Likewise.
1509 (find_constant_pool_ref): Likewise.
1510 (find_ltrel_base): Removed.
1511 (replace_ltrel_base): Removed.
1512 (s390_mainpool_finish): Remove replace_ltrel_base call.
1513 (s390_chunkify_start): Remove pending LTREL_BASE logic.
1514 (s390_chunkify_finish): Remove replace_ltrel_base call.
1515 * config/s390/s390.md: Remove UNSPEC_LTREL_BASE.
1516
1517 2018-09-06 Hans-Peter Nilsson <hp@axis.com>
1518
1519 PR target/86779
1520 * config/cris/cris.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Redefine
1521 to speculation_safe_value_not_needed.
1522
1523 2018-09-05 Cesar Philippidis <cesar@codesourcery.com>
1524 Bernd Schmidt <bernds_cb1@t-online.de>
1525
1526 * config/nvptx/nvptx-opts.h: New file.
1527 * config/nvptx/nvptx.c (nvptx_file_start): Print the correct .target.
1528 * config/nvptx/nvptx.h: Include "nvptx-opts.h".
1529 (ASM_SPEC): Define.
1530 (TARGET_SM35): New macro.
1531 * config/nvptx/nvptx.md (atomic_fetch_<logic><mode>): Enable with the
1532 correct predicate.
1533 * config/nvptx/nvptx.opt (ptx_isa, sm_30, sm_35): New enum and its
1534 values.
1535 (misa=): New option.
1536 * doc/invoke.texi (Nvidia PTX Options): Document -misa.
1537
1538 2018-09-05 Uros Bizjak <ubizjak@gmail.com>
1539
1540 * config/i386/i386.md (truncdfsf2): Remove expander.
1541 (truncdfsf2_with_temp): Ditto.
1542 (truncxf<mode>2): Ditto.
1543 (*truncdfsf_fast_mixed): Remove insn pattern.
1544 (*truncdfsf_fast_i387): Ditto.
1545 (*truncdfsf_mixed): Ditto.
1546 (*truncdfsf_i387): Ditto.
1547 (*truncdfsf2_i387_1): Ditto.
1548 (*truncxfsf2_mixed): Ditto.
1549 (*truncxfdf2_mixed): Ditto.
1550 (*truncxf<mode>2_i387_noop): Ditto. Update callers
1551 to call gen_truncxf<mode>2 instead.
1552 (*truncxf<mode>2_i387): Remove.
1553 (reg->reg splitters): Remove splitter pattern.
1554 (reg->mem splitters): Ditto.
1555
1556 (truncdfsf2): New insn pattern.
1557 (truncxf<mode>2): Ditto.
1558
1559 2018-09-05 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1560
1561 * tree-ssa-math-opts.c (is_mult_by): New function.
1562 (is_square_of): Use the above.
1563 (optimize_recip_sqrt): New function.
1564 (pass_cse_reciprocals::execute): Use the above.
1565
1566 2018-09-05 Richard Biener <rguenther@suse.de>
1567
1568 PR bootstrap/87134
1569 * tree-ssa-sccvn.c (rpo_elim::eliminate_push_avail): Make sure
1570 to zero-init the emplaced vec.
1571
1572 2018-09-05 Martin Liska <mliska@suse.cz>
1573
1574 PR tree-optimization/87205
1575 * tree-switch-conversion.c (pass_lower_switch::execute):
1576 Group cases for switch statements.
1577
1578 2018-09-05 Richard Biener <rguenther@suse.de>
1579
1580 PR tree-optimization/87217
1581 * tree-ssa-sccvn.c (vuse_valueize): New.
1582 (vn_reference_lookup_pieces): Use it.
1583 (vn_reference_lookup): Likewise.
1584
1585 2018-09-05 Nathan Sidwell <nathan@acm.org>
1586
1587 PR c++/87137
1588 * stor-layout.c (place_field): Scan forwards to check last
1589 bitfield when ms_bitfield_placement is in effect.
1590
1591 2018-09-05 Richard Biener <rguenther@suse.de>
1592
1593 PR bootstrap/87225
1594 * tree-vect-stmts.c (vectorizable_simd_clone_call): Fix bogus
1595 return.
1596
1597 2018-09-05 Siddhesh Poyarekar <siddhesh@sourceware.org>
1598 Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org>
1599
1600 * config/aarch64/falkor-tag-collision-avoidance.c: New file.
1601 * config.gcc (extra_objs): Build it.
1602 * config/aarch64/t-aarch64 (falkor-tag-collision-avoidance.o):
1603 Likewise.
1604 * config/aarch64/aarch64-passes.def
1605 (pass_tag_collision_avoidance): New pass.
1606 * config/aarch64/aarch64.c (qdf24xx_tunings): Add
1607 AARCH64_EXTRA_TUNE_RENAME_LOAD_REGS to tuning_flags.
1608 (aarch64_classify_address): Remove static qualifier.
1609 (aarch64_address_info, aarch64_address_type): Move to...
1610 * config/aarch64/aarch64-protos.h: ... here.
1611 (make_pass_tag_collision_avoidance): New function.
1612 * config/aarch64/aarch64-tuning-flags.def (rename_load_regs):
1613 New tuning flag.
1614
1615 2018-09-05 Martin Liska <mliska@suse.cz>
1616
1617 * doc/gcov.texi: Update documentation of humar
1618 readable mode.
1619 * gcov.c (format_count): Print one decimal place, it provides
1620 more fine number of situations like '1G' vs. '1.4G'.
1621
1622 2018-09-05 Martin Liska <mliska@suse.cz>
1623
1624 PR target/87164
1625 * config/rs6000/rs6000.opt: Mark the option as Deprecated.
1626 * optc-gen.awk: Allow 'Var' for Deprecated options in order
1627 to generate a MASK value.
1628
1629 2018-09-04 H.J. Lu <hongjiu.lu@intel.com>
1630
1631 PR debug/86593
1632 * dwarf2out.c (based_loc_descr): Allow hard frame pointer even
1633 if frame pointer isn't used.
1634 (compute_frame_pointer_to_fb_displacement): Likewise.
1635
1636 2018-09-04 Jakub Jelinek <jakub@redhat.com>
1637
1638 PR target/87198
1639 * common/config/i386/i386-common.c (OPTION_MASK_ISA_XSAVEOPT_SET,
1640 OPTION_MASK_ISA_XSAVES_SET, OPTION_MASK_ISA_XSAVEC_SET): Use
1641 OPTION_MASK_ISA_XSAVE_SET instead of OPTION_MASK_ISA_XSAVE.
1642 (OPTION_MASK_ISA_XSAVE_UNSET): Add OPTION_MASK_ISA_XSAVES_UNSET
1643 and OPTION_MASK_ISA_XSAVEC_UNSET.
1644
1645 2018-09-04 Max Filippov <jcmvbkbc@gmail.com>
1646
1647 * config/xtensa/xtensa.c (xtensa_expand_atomic): Reorder AND and
1648 XOR operations in NAND case.
1649
1650 2018-09-04 Aldy Hernandez <aldyh@redhat.com>
1651
1652 * wide-int-range.cc (wide_int_range_convert): New.
1653 * wide-int-range.h (wide_int_range_convert): New.
1654 * tree-vrp.c (extract_range_from_unary_expr): Abstract wide int
1655 code into wide_int_range_convert.
1656 (extract_range_into_wide_ints): Do not munge anti range constants
1657 into the entire domain. Just return the range back.
1658
1659 2018-09-04 Martin Liska <mliska@suse.cz>
1660
1661 * genmatch.c (output_line_directive): Add new argument
1662 fnargs.
1663 (dt_simplify::gen_1): Encapsulate dump within __builtin_expect.
1664
1665 2018-09-04 Jonathan Wakely <jwakely@redhat.com>
1666
1667 * doc/invoke.texi (Option Summary): Add whitespace.
1668
1669 * doc/invoke.texi (Option Summary): Add -Waligned-new.
1670
1671 2018-09-04 Richard Biener <rguenther@suse.de>
1672
1673 PR tree-optimization/87211
1674 * tree-ssa-sccvn.c (visit_phi): When value-numbering to a
1675 backedge value we're supposed to treat as VARYING also number
1676 the PHI to VARYING in case it got a different value-number already.
1677
1678 2018-09-04 Aldy Hernandez <aldyh@redhat.com>
1679
1680 * tree-vrp.c (vrp_can_optimize_bit_op): Remove.
1681 (extract_range_from_binary_expr_1): Do not call
1682 vrp_can_optimize_bit_op.
1683 * wide-int-range.cc (wide_int_range_can_optimize_bit_op): Make
1684 static.
1685 (wide_int_range_get_mask_and_bounds): New.
1686 (wide_int_range_optimize_bit_op): New.
1687 (wide_int_range_bit_ior): Call wide_int_range_optimize_bit_op.
1688 (wide_int_range_bit_and): Same.
1689 * wide-int-range.h (wide_int_range_can_optimize_bit_op): Remove.
1690 (wide_int_range_optimize_bit_op): New.
1691 (wide_int_range_get_mask_and_bounds): New.
1692
1693 2018-09-04 Richard Biener <rguenther@suse.de>
1694
1695 PR tree-optimization/87176
1696 * tree-ssa-sccvn.c (visit_phi): Remove redundant allsame
1697 variable. When value-numbering a virtual PHI node make sure
1698 to not value-number to the backedge value.
1699
1700 2018-09-04 Jonathan Wakely <jwakely@redhat.com>
1701
1702 * doc/extend.texi (Long Long, Hex Floats): Document support for
1703 long long and hex floats in more recent versions of ISO C++.
1704
1705 2018-09-03 Richard Biener <rguenther@suse.de>
1706
1707 PR tree-optimization/87177
1708 * tree-ssa-sccvn.c (vuse_ssa_val): Revert previous change, keep
1709 cleanup.
1710
1711 2018-09-03 Alexander Monakov <amonakov@ispras.ru>
1712
1713 * bb-reorder.c (edge_order): Convert to C-qsort-style
1714 tri-state comparator.
1715 (reorder_basic_blocks_simple): Change std::stable_sort to
1716 gcc_stablesort.
1717
1718 2018-09-03 Alexander Monakov <amonakov@ispras.ru>
1719
1720 * tree-loop-distribution.c (offset_cmp): Convert to C-qsort-style
1721 tri-state comparator.
1722 (fuse_memset_builtins): Change std::stable_sort to gcc_stablesort.
1723
1724 2018-09-03 Alexander Monakov <amonakov@ispras.ru>
1725
1726 * sort.cc (struct sort_ctx): New field 'nlim'. Use it...
1727 (mergesort): ... here as maximum count for using netsort.
1728 (gcc_qsort): Set nlim to 3 if stable sort is requested.
1729 (gcc_stablesort): New.
1730 * system.h (gcc_stablesort): Declare.
1731
1732 2018-09-03 Alexander Monakov <amonakov@ispras.ru>
1733
1734 * sort.cc (gcc_qsort) [CHECKING_P]: Call qsort_chk.
1735 * system.h (qsort): Always redirect to gcc_qsort. Update comment.
1736 * vec.c (qsort_chk): Do not call gcc_qsort. Update comment.
1737
1738 2018-09-03 Segher Boessenkool <segher@kernel.crashing.org>
1739
1740 * config/rs6000/rs6000.md (*mov<mode>_hardfloat32): Remove %U from the
1741 lxsdx and stxsdx alternatives.
1742 (*mov<mode>_hardfloat64): Ditto.
1743 * config/rs6000/vsx.md (*vsx_extract_<mode>_store): Ditto.
1744
1745 2018-09-03 Richard Biener <rguenther@suse.de>
1746
1747 PR tree-optimization/87200
1748 * tree-ssa-sccvn.c (vn_nary_build_or_lookup_1): Valueize a
1749 simplify result.
1750
1751 2018-09-03 Martin Liska <mliska@suse.cz>
1752
1753 PR tree-optimization/87201
1754 * tree-switch-conversion.c (switch_decision_tree::balance_case_nodes):
1755 Fix parenthesis in an expression.
1756
1757 2018-09-03 Richard Biener <rguenther@suse.de>
1758
1759 PR tree-optimization/87197
1760 * tree-ssa-sccvn.c (vn_nary_build_or_lookup_1): Mark the new def
1761 visited. CSE the VN_INFO hashtable lookup.
1762
1763 PR tree-optimization/87169
1764 * tree-ssa-sccvn.c (do_rpo_vn): When marking loops for not
1765 iterating make sure there's no extra backedges from irreducible
1766 regions feeding the header. Mark the destination block
1767 executable.
1768
1769 2018-09-03 Martin Liska <mliska@suse.cz>
1770
1771 PR driver/83193
1772 * common/common-target.def: Add TARGET_GET_VALID_OPTION_VALUES.
1773 * common/common-targhooks.c (default_get_valid_option_values):
1774 New function.
1775 * common/common-targhooks.h (default_get_valid_option_values):
1776 Likewise.
1777 * common/config/i386/i386-common.c: Move processor_target_table
1778 from i386.c.
1779 (ix86_get_valid_option_values): New function.
1780 (TARGET_GET_VALID_OPTION_VALUES): New macro.
1781 * config/i386/i386.c (struct ptt): Move to i386-common.c.
1782 (PTA_*): Move all defined masks into i386-common.c.
1783 (ix86_function_specific_restore): Use new processor_cost_table.
1784 * config/i386/i386.h (struct ptt): Moved from i386.c.
1785 (struct pta): Likewise.
1786 * doc/tm.texi: Document new TARGET_GET_VALID_OPTION_VALUES.
1787 * doc/tm.texi.in: Likewise.
1788 * opt-suggestions.c (option_proposer::suggest_option):
1789 Pass prefix to build_option_suggestions.
1790 (option_proposer::get_completions): Likewise.
1791 (option_proposer::build_option_suggestions): Use the new target
1792 hook.
1793 * opts.c (struct option_help_tuple): New struct.
1794 (print_filtered_help): Use the new target hook.
1795
1796 2018-09-03 Martin Liska <mliska@suse.cz>
1797
1798 PR middle-end/59521
1799 * predict.c (set_even_probabilities): Add likely_edges
1800 argument and handle cases where we have precisely one
1801 likely edge.
1802 (combine_predictions_for_bb): Catch also likely_edges.
1803 (tree_predict_by_opcode): Handle gswitch statements.
1804 * tree-cfg.h (find_case_label_for_value): New declaration.
1805 (find_taken_edge_switch_expr): Likewise.
1806 * tree-switch-conversion.c (switch_decision_tree::balance_case_nodes):
1807 Find pivot in decision tree based on probabily, not by number of
1808 nodes.
1809
1810 2018-09-02 Gerald Pfeifer <gerald@pfeifer.com>
1811
1812 * doc/standards.texi (Standards): Update Objective-C reference.
1813
1814 2018-09-01 Gerald Pfeifer <gerald@pfeifer.com>
1815
1816 * doc/install.texi (Prerequisites): Update link for MPC.
1817
1818 2018-09-01 Michael Matz <matz@suse.de>
1819
1820 PR tree-optimization/87074
1821 * gimple-loop-jam.c (unroll_jam_possible_p): Check loop exit
1822 PHIs for outer-loop uses.
1823
1824 2018-09-01 Gerald Pfeifer <gerald@pfeifer.com>
1825
1826 * doc/generic.texi (OpenMP): Adjust link to openmp.org.
1827 * doc/invoke.texi (C Dialect Options): Ditto.
1828
1829 2018-09-01 Gerald Pfeifer <gerald@pfeifer.com>
1830
1831 * doc/install.texi (Prerequisites): Adjust link mpfr.org.
1832
1833 2018-08-31 Richard Biener <rguenther@suse.de>
1834
1835 PR tree-optimization/87168
1836 * tree-ssa-sccvn.c (SSA_VAL): Add visited output parameter.
1837 (rpo_elim::eliminate_avail): When OP was not visited it must
1838 be available.
1839
1840 2018-08-31 David Malcolm <dmalcolm@redhat.com>
1841
1842 * tree-vrp.c (copy_value_range): Convert param "from" from
1843 "value_range *" to "const value_range *".
1844 (range_is_null): Likewise for param "vr".
1845 (range_int_cst_p): Likewise.
1846 (range_int_cst_singleton_p): Likewise.
1847 (symbolic_range_p): Likewise.
1848 (value_ranges_intersect_p): Likewise for both params.
1849 (value_range_nonnegative_p): Likewise for param "vr".
1850 (value_range_constant_singleton): Likewise.
1851 (vrp_set_zero_nonzero_bits): Likewise for param "ar".
1852 (extract_range_into_wide_ints): Likewise for param "vr".
1853 (extract_range_from_multiplicative_op): Likewise for params "vr0"
1854 and "vr1".
1855 (vrp_can_optimize_bit_op): Likewise.
1856 (extract_range_from_binary_expr_1): Likewise for params "vr0_" and
1857 "vr1_".
1858 (extract_range_from_unary_expr): Likewise.
1859 (debug_value_range): Likewise for param "vr".
1860 (value_range::dump): Add "const" qualifier.
1861 (vrp_prop::check_array_ref): Convert local "vr" from
1862 "value_range *" to "const value_range *".
1863 (vrp_prop::check_mem_ref): Likewise.
1864 (vrp_prop::visit_stmt): Likewise for local "old_vr".
1865 (vrp_intersect_ranges_1): Likewise for param "vr_1".
1866 (vrp_intersect_ranges): Likewise.
1867 (simplify_stmt_for_jump_threading): Likewise for local "vr".
1868 (vrp_prop::vrp_finalize): Likewise.
1869 * tree-vrp.h (value_range::dump): Add "const" qualifier.
1870 (vrp_intersect_ranges): Add "const" qualifier to params as above.
1871 (extract_range_from_unary_expr): Likewise.
1872 (value_range_constant_singleton): Likewise.
1873 (symbolic_range_p): Likewise.
1874 (copy_value_range): Likewise.
1875 (extract_range_from_binary_expr_1): Likewise.
1876 (range_int_cst_p): Likewise.
1877 (vrp_set_zero_nonzero_bits): Likewise.
1878 (range_int_cst_singleton_p): Likewise.
1879
1880 2018-08-31 Vlad Lazar <vlad.lazar@arm.com>
1881
1882 * config/aarch64/arm_neon.h (vabsd_s64): New.
1883 (vnegd_s64): Likewise.
1884
1885 2018-08-31 Martin Jambor <mjambor@suse.cz>
1886
1887 * ipa-cp.c (estimate_local_effects): Replace wrong MAX with MIN.
1888
1889 2018-08-31 Martin Liska <mliska@suse.cz>
1890
1891 * ipa-icf.c (sem_item::add_type): Use
1892 sem_item::m_type_hash_cache.
1893 * ipa-icf.h: Move the cache from sem_item_optimizer
1894 to sem_item.
1895
1896 2018-08-31 Nathan Sidwell <nathan@acm.org>
1897
1898 * doc/extend.texi (Backwards Compatibility): Remove implicit
1899 extern C leeway of () being (...).
1900
1901 2018-08-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1902
1903 * ipa-inline.c (can_inline_edge_by_limits_p): Fix typos in comment.
1904
1905 2018-08-31 Segher Boessenkool <segher@kernel.crashing.org>
1906
1907 PR target/86684
1908 PR target/87149
1909 * config/rs6000/rs6000.md (lround<mode>di2): Gate on TARGET_FPRND.
1910
1911 2018-08-31 Jakub Jelinek <jakub@redhat.com>
1912
1913 PR middle-end/87138
1914 * expmed.c (expand_mult_const): Use immed_wide_int_const instead of
1915 gen_int_mode. Formatting fixes.
1916
1917 2018-08-30 Sandra Loosemore <sandra@codesourcery.com>
1918
1919 * target.def (custom_function_descriptors): Improve documentation.
1920 * doc/tm.texi.in (Trampolines): Expand discussion of function
1921 descriptors and move TARGET_CUSTOM_FUNCTION_DESCRIPTORS to the
1922 beginning of the section.
1923 * doc/tm.texi: Regenerated.
1924
1925 2018-08-30 Jose E. Marchesi <jose.marchesi@oracle.com>
1926
1927 * cfg.h (class auto_edge_flag): Spell out the template-id of the
1928 base class in the initializer list. This is a workaround for
1929 building with older GCC.
1930 (class auto_bb_flag): Likewise.
1931
1932 2018-08-30 Aaron Sawdey <acsawdey@linux.ibm.com>
1933
1934 * config/rs6000/altivec.md (altivec_eq<mode>): Remove star.
1935 (altivec_vcmpequ<VI_char>_p): Remove star.
1936 * config/rs6000/rs6000-string.c (do_load_for_compare): Support
1937 vector load modes.
1938 (expand_strncmp_vec_sequence): New function.
1939 (emit_final_str_compare_vec): New function.
1940 (expand_strn_compare): Add support for vector strncmp.
1941 * config/rs6000/rs6000.opt (-mstring-compare-inline-limit): Change
1942 length specification to bytes.
1943 * config/rs6000/vsx.md (vsx_ld_elemrev_v16qi_internal): Remove star.
1944 (vcmpnezb_p): New pattern.
1945 * doc/invoke.texi (RS/6000 and PowerPC Options): Update documentation
1946 for option -mstring-compare-inline-limit.
1947
1948 2018-08-30 Thiago Macieira <thiago.macieira@intel.com>
1949
1950 * config/i386/i386.c (PTA_WESTMERE): Remove PTA_AES.
1951 (PTA_SKYLAKE): Add PTA_AES.
1952 (PTA_GOLDMONT): Likewise.
1953
1954 2018-08-29 Jan Hubicka <jh@suse.cz>
1955
1956 PR lto/86517
1957 * lto-opts.c (lto_write_options): Always stream PIC/PIE mode.
1958 * lto-wrapper.c (merge_and_complain): Fix merging of PIC/PIE.
1959
1960 2018-08-29 Jan Hubicka <jh@suse.cz>
1961
1962 * lto-streamer-out.c (DFS::DFS_write_tree_body): Do not follow
1963 TYPE_STUB_DECL.
1964 (hash_tree): Do not visit TYPE_STUB_DECL.
1965 * tree-streamer-out.c (write_ts_type_common_tree_pointers): Do not
1966 stream TYPE_STUB_DECL.
1967 * tree-streamer-in.c (lto_input_ts_type_common_tree_pointers): Likewise.
1968 * ipa-utils.h (type_with_linkage_p): Do not rely on TYPE_STUB_DECL
1969 after free_lang_data.
1970 (type_in_anonymous_namespace_p): Likewise.
1971
1972 2018-08-29 Jan Hubicka <jh@suse.cz>
1973
1974 * sreal.h (SREAL_PART_BITS): Change to 31; remove seemingly unnecessary
1975 comment that it has to be even number.
1976 (class sreal): Change m_sig type to int32_t.
1977 * sreal.c (sreal::dump, sreal::to_int, opreator+, operator-): Use
1978 int64_t for temporary calculations.
1979 (sreal_verify_basics): Drop one bit from minimum and maximum.
1980
1981 2018-08-30 Richard Biener <rguenther@suse.de>
1982
1983 PR tree-optimization/87147
1984 * tree-ssa-sccvn.c (SSA_VISITED): New function.
1985 (visit_phi): When the degenerate result is from the backedge and
1986 we didn't visit its definition yet drop to VARYING.
1987 (do_rpo_vn): Properly mark blocks with incoming backedges as executable.
1988
1989 2018-08-29 Jan Hubicka <jh@suse.cz>
1990
1991 * lto-streamer-out.c (DFS::DFS_write_tree_body): Do not walk
1992 DECL_VINDEX.
1993 (hash_tree): Likewise.
1994
1995 2018-08-29 Jan Hubicka <jh@suse.cz>
1996
1997 * tree.c (find_decls_types_r): Walk also TYPE_NEXT_PTR_TO
1998 and TYPE_NEXT_REF_TO.
1999
2000 2018-08-29 Jan Hubicka <jh@suse.cz>
2001
2002 * sreal.h (SREAL_PART_BITS): Change to 31; remove seemingly unnecessary
2003 comment that it has to be even number.
2004 (class sreal): Change m_sig type to int32_t.
2005 * sreal.c (sreal::dump, sreal::to_int, opreator+, operator-): Use
2006 int64_t for temporary calculations.
2007 (sreal_verify_basics): Drop one bit from minimum and maximum.
2008
2009 2018-08-30 Tamar Christina <tamar.christina@arm.com>
2010
2011 * config/aarch64/aarch64.c (aarch64_expand_movmem): Set TImode max.
2012
2013 2018-08-30 Vlad Lazar <vlad.lazar@arm.com>
2014
2015 PR middle-end/86995
2016 * expmed.c (canonicalize_comparison): Use wi::sub instead of wi::add
2017 if to_add is negative.
2018
2019 2018-08-29 Bernd Edlinger <bernd.edlinger@hotmail.de>
2020
2021 PR middle-end/87053
2022 * builtins.c (c_strlen): Improve range checks.
2023
2024 2018-08-29 Martin Sebor <msebor@redhat.com>
2025 Jeff Law <law@redhat.com>
2026
2027 PR tree-optimization/86714
2028 PR tree-optimization/86711
2029 * builtins.c (c_strlen): Add arguments to call to string_constant.
2030 * expr.c (string_constant): Add argument. Detect missing nul
2031 terminator and outermost declaration it's missing in.
2032 * expr.h (string_constant): Add argument.
2033 * fold-const.c (read_from_constant_string): Add arguments to call to
2034 string_constant.
2035 (c_getstr): Likewise.
2036 * tree-ssa-forwprop.c (simplify_builtin_call): Likewise.
2037 to string_constant.
2038 * tree-ssa-strlen.c (get_stridx): Likewise.
2039
2040 2018-08-29 Jan Hubicka <jh@suse.cz>
2041
2042 * tree-streamer-in.c (lto_input_ts_function_decl_tree_pointers):
2043 Do not stream DECL_VINDEX.
2044 * tree-streamer-out.c (write_ts_function_decl_tree_pointers): Likewise.
2045 * tree.c (free_lang_data_in_decl): Clear DECL_VINDEX.
2046 (decl_function_context): Use DECL_VIRTUAL_P rather than DECL_VINDEX.
2047
2048 2018-08-29 Richard Biener <rguenther@suse.de>
2049
2050 * tree-ssa-sccvn.c (vuse_ssa_val): Return NULL for unvisited
2051 virtual operands that are not default defs to honor region
2052 boundaries.
2053 (rpo_vn_valueize): Remove ineffective code here.
2054
2055 2018-08-29 Richard Biener <rguenther@suse.de>
2056
2057 PR tree-optimization/87132
2058 * tree-ssa-alias.c (get_continuation_for_phi): Do not translate
2059 when skipping defs reachable over backedges.
2060
2061 2018-08-29 Richard Biener <rguenther@suse.de>
2062
2063 * tree-core.h: Document use of deprecated_flag in SSA_NAME.
2064 * tree.h (SSA_NAME_POINTS_TO_READONLY_MEMORY): Define.
2065 * tree-into-ssa.c (pass_build_ssa::execute): Initialize
2066 function parameters SSA_NAME_POINTS_TO_READONLY_MEMORY from fnspec.
2067 * tree-ssa-sccvn.c (const_parms, init_const_parms): Remove.
2068 (vn_reference_lookup_3): Remove use of const_parms.
2069 (free_rpo_vn): Do not free const_parms.
2070 (do_rpo_vn): Do not call init_const_parms.
2071 * tree-ssa-alias.c (refs_may_alias_p_1): Honor
2072 SSA_NAME_POINTS_TO_READONLY_MEMORY.
2073 (call_may_clobber_ref_p_1): Likewise.
2074
2075 2018-08-29 Alexander Monakov <amonakov@ispras.ru>
2076
2077 PR other/86726
2078 * invoke.texi (Optimization Options): List -ftree-scev-cprop.
2079 (-O): Ditto.
2080 (-ftree-scev-cprop): Document.
2081
2082 2018-08-29 Jan Hubicka <jh@suse.cz>
2083
2084 * sreal.h (normalize, normalize_up, normalize_down): Add new_sig/new_exp
2085 parameters.
2086 (sreal constructor): Update.
2087 * sreal.c (sreal:operator+, sreal:operator-, sreal:operator*,
2088 sreal:operator/): Update.
2089
2090 2018-08-29 Martin Liska <mliska@suse.cz>
2091
2092 * tree-switch-conversion.c (switch_conversion::expand):
2093 Strenghten assumption about gswitch statements.
2094
2095 2018-08-29 Richard Biener <rguenther@suse.de>
2096
2097 PR tree-optimization/87117
2098 * tree-ssa-sccvn.c (eliminate_dom_walker::eliminate_stmt): Only
2099 re-value-number released SSA VDEFs.
2100
2101 2018-08-29 Richard Biener <rguenther@suse.de>
2102
2103 PR tree-optimization/87126
2104 * tree-ssa-sccvn.c (vn_reference_insert): Remove assert.
2105
2106 2018-08-28 Jim Wilson <jimw@sifive.com>
2107
2108 * config/riscv/pic.md: Rewrite.
2109 * config/riscv/riscv.c (riscv_address_insns): Return cost of 3 for
2110 invalid address.
2111 * config/riscv/riscv.md (ZERO_EXTEND_LOAD): Delete.
2112 (SOFTF, default_load, softload, softstore): New.
2113
2114 2018-08-28 Jeff Law <law@redhat.com>
2115
2116 * fold-const.c (fold_binary_loc): Remove recently added assert.
2117
2118 2018-08-28 Joern Rennecke <joern.rennecke@riscy-ip.com>
2119
2120 * genpreds.c (write_predicate_subfunction): Also add ATTRIBUTE_UNUSED
2121 to OP parmeter of generated function.
2122
2123 2018-08-28 MCC CS <deswurstes@users.noreply.github.com>
2124
2125 PR tree-optimization/87009
2126 * match.pd: Add boolean optimizations.
2127
2128 2018-08-28 Martin Sebor <msebor@redhat.com>
2129
2130 PR middle-end/86631
2131 * calls.c (alloc_max_size): Treat HOST_WIDE_INT special.
2132 * gimple-ssa-warn-alloca.c (adjusted_warn_limit): New function.
2133 (pass_walloca::gate): Use it.
2134 (alloca_call_type): Same.
2135 (pass_walloca::execute): Same.
2136 * stor-layout.c (layout_decl): Treat HOST_WIDE_INT special.
2137
2138 2018-08-28 David Malcolm <dmalcolm@redhat.com>
2139
2140 * dumpfile.h (ATTRIBUTE_GCC_DUMP_PRINTF): Change version check on
2141 GCC_VERSION for usage of "__gcc_dump_printf__" format from
2142 >= 3005 to >= 9000.
2143
2144 2018-08-28 Richard Biener <rguenther@suse.de>
2145
2146 PR tree-optimization/87124
2147 * tree-ssa-sccvn.c (vn_lookup_simplify_result): Guard against
2148 constants before looking up avail.
2149
2150 2018-08-28 Jakub Jelinek <jakub@redhat.com>
2151
2152 PR middle-end/87099
2153 * calls.c (maybe_warn_nonstring_arg): Punt early if
2154 warn_stringop_overflow is zero. Don't call get_range_strlen
2155 on 3rd argument, keep iterating until lenrng[1] is INTEGER_CST.
2156 Swap comparison operands to have constants on rhs. Only use
2157 lenrng[1] if non-NULL and INTEGER_CST. Don't uselessly
2158 increment lenrng[0].
2159
2160 2018-08-28 Richard Sandiford <richard.sandiford@arm.com>
2161
2162 * tree-ssa-sccvn.c (fully_constant_vn_reference_p): Fix unguarded
2163 use of tree_to_shwi. Remove duplicated test for the size being
2164 a whole number of bytes.
2165
2166 2018-08-28 Richard Biener <rguenther@suse.de>
2167
2168 PR tree-optimization/87117
2169 * tree-ssa-sccvn.c (eliminate_dom_walker::eliminate_cleanup):
2170 Handle removed stmt without LHS (GIMPLE_NOP).
2171
2172 2018-08-28 Richard Biener <rguenther@suse.de>
2173
2174 PR tree-optimization/87117
2175 * tree-ssa-sccvn.c (fully_constant_vn_reference_p): Exclude
2176 void which is is_gimple_reg_type by checking for COMPLETE_TYPE_P.
2177
2178 2018-08-28 Richard Biener <rguenther@suse.de>
2179
2180 PR tree-optimization/87117
2181 * tree-ssa-pre.c (compute_avail): Do not make expressions
2182 with predicated values available.
2183 (get_expr_value_id): Assert we do not run into predicated value
2184 expressions.
2185
2186 2018-08-28 Richard Biener <rguenther@suse.de>
2187
2188 PR tree-optimization/87117
2189 * tree-ssa-operands.c (add_stmt_operand): STRING_CST may
2190 get virtual operands.
2191 (get_expr_operands): Handle STRING_CST like other decls.
2192
2193 2018-08-28 Martin Liska <mliska@suse.cz>
2194
2195 * tree.h: Update documentation of fndecl_built_in_p
2196 functions.
2197
2198
2199 2018-08-27 Jeff Law <law@redhat.com>
2200 PR tree-optimization/87110
2201 * tree-ssa-dse.c (compute_trims): Handle non-constant
2202 TYPE_SIZE_UNIT.
2203
2204 2018-08-27 Martin Sebor <msebor@redhat.com>
2205
2206 PR tree-optimization/86914
2207 * tree-ssa-strlen.c (maybe_set_strlen_range): Avoid MEM_REF.
2208
2209 2018-08-27 Martin Sebor <msebor@redhat.com>
2210
2211 PR tree-optimization/87112
2212 * builtins.c (expand_builtin_strnlen): Convert c_strlen result to
2213 the type of the bound argument.
2214
2215 2018-08-27 Jeff Law <law@redhat.com>
2216
2217 * tree-ssa-dse.c (compute_trims): Handle case where the reference's
2218 type does not have a TYPE_SIZE_UNIT.
2219
2220 2018-08-27 Steve Ellcey <sellcey@cavium.com>
2221
2222 * config/aarch64/aarch64-speculation.cc: Replace include of cfg.h
2223 with include of backend.h.
2224
2225 2018-08-27 Richard Biener <rguenther@suse.de>
2226
2227 PR tree-optimization/86927
2228 * tree-vect-loop.c (vect_create_epilog_for_reduction): Properly
2229 use const cond reduction code.
2230
2231 2018-08-27 Alexander Monakov <amonakov@ispras.ru>
2232
2233 PR tree-optimization/85758
2234 * match.pd ((X & Y) ^ Y): Add :s qualifier to inner expression.
2235
2236 2018-08-27 David Malcolm <dmalcolm@redhat.com>
2237
2238 PR c++/87091
2239 * diagnostic-show-locus.c (class layout_range): Update for
2240 conversion of show_caret_p to a tri-state.
2241 (layout_range::layout_range): Likewise.
2242 (make_range): Likewise.
2243 (layout::maybe_add_location_range): Likewise.
2244 (layout::should_print_annotation_line_p): Don't show annotation
2245 lines for ranges that are SHOW_LINES_WITHOUT_RANGE.
2246 (layout::get_state_at_point): Update for conversion of
2247 show_caret_p to a tri-state. Bail out early for
2248 SHOW_LINES_WITHOUT_RANGE, so that such ranges don't affect
2249 underlining or source colorization.
2250 (gcc_rich_location::add_location_if_nearby): Update for conversion
2251 of show_caret_p to a tri-state.
2252 (selftest::test_one_liner_multiple_carets_and_ranges): Likewise.
2253 (selftest::test_one_liner_fixit_replace_equal_secondary_range):
2254 Likewise.
2255 (selftest::test_one_liner_labels): Likewise.
2256 * gcc-rich-location.c (gcc_rich_location::add_expr): Update for
2257 conversion of show_caret_p to a tri-state.
2258 * pretty-print.c (text_info::set_location): Likewise.
2259 * pretty-print.h (text_info::set_location): Likewise.
2260 * substring-locations.c (format_warning_n_va): Likewise.
2261 * tree-diagnostic.c (default_tree_printer): Likewise.
2262 * tree-pretty-print.c (newline_and_indent): Likewise.
2263
2264 2018-08-27 David Malcolm <dmalcolm@redhat.com>
2265
2266 PR c++/87091
2267 * diagnostic-show-locus.c (get_line_span_for_fixit_hint): Show the
2268 line above for line-insertion fix-it hints.
2269 (selftest::test_fixit_insert_containing_newline): Update the
2270 expected results, and add a test with line-numbering enabled.
2271
2272 2018-08-27 Martin Liska <mliska@suse.cz>
2273
2274 PR sanitizer/86962
2275 * sanopt.c (sanitize_rewrite_addressable_params): Ignore
2276 params with DECL_HAS_VALUE_EXPR_P.
2277
2278 2018-08-27 Martin Liska <mliska@suse.cz>
2279
2280 * config/i386/i386.c (ix86_expand_set_or_movmem): Dump
2281 selected expansion strategy.
2282
2283 2018-08-27 Martin Liska <mliska@suse.cz>
2284
2285 * builtins.h (is_builtin_fn): Remove and fndecl_built_in_p.
2286 * builtins.c (is_builtin_fn): Likewise.
2287 * attribs.c (diag_attr_exclusions): Use new function
2288 fndecl_built_in_p and remove check for FUNCTION_DECL if
2289 possible.
2290 (builtin_mathfn_code): Likewise.
2291 (fold_builtin_expect): Likewise.
2292 (fold_call_expr): Likewise.
2293 (fold_builtin_call_array): Likewise.
2294 (fold_call_stmt): Likewise.
2295 (set_builtin_user_assembler_name): Likewise.
2296 (is_simple_builtin): Likewise.
2297 * calls.c (gimple_alloca_call_p): Likewise.
2298 (maybe_warn_nonstring_arg): Likewise.
2299 * cfgexpand.c (expand_call_stmt): Likewise.
2300 * cgraph.c (cgraph_update_edges_for_call_stmt_node): Likewise.
2301 (cgraph_edge::verify_corresponds_to_fndecl): Likewise.
2302 (cgraph_node::verify_node): Likewise.
2303 * cgraphclones.c (build_function_decl_skip_args): Likewise.
2304 (cgraph_node::create_clone): Likewise.
2305 * config/arm/arm.c (arm_insert_attributes): Likewise.
2306 * config/i386/i386.c (ix86_gimple_fold_builtin): Likewise.
2307 * dse.c (scan_insn): Likewise.
2308 * expr.c (expand_expr_real_1): Likewise.
2309 * fold-const.c (operand_equal_p): Likewise.
2310 (fold_binary_loc): Likewise.
2311 * gimple-fold.c (gimple_fold_stmt_to_constant_1): Likewise.
2312 * gimple-low.c (lower_stmt): Likewise.
2313 * gimple-pretty-print.c (dump_gimple_call): Likewise.
2314 * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call):
2315 Likewise.
2316 * gimple.c (gimple_build_call_from_tree): Likewise.
2317 (gimple_call_builtin_p): Likewise.
2318 (gimple_call_combined_fn): Likewise.
2319 * gimplify.c (gimplify_call_expr): Likewise.
2320 (gimple_boolify): Likewise.
2321 (gimplify_modify_expr): Likewise.
2322 (gimplify_addr_expr): Likewise.
2323 * hsa-gen.c (gen_hsa_insns_for_call): Likewise.
2324 * ipa-cp.c (determine_versionability): Likewise.
2325 * ipa-fnsummary.c (compute_fn_summary): Likewise.
2326 * ipa-param-manipulation.c (ipa_modify_formal_parameters): Likewise.
2327 * ipa-split.c (visit_bb): Likewise.
2328 (split_function): Likewise.
2329 * ipa-visibility.c (cgraph_externally_visible_p): Likewise.
2330 * lto-cgraph.c (input_node): Likewise.
2331 * lto-streamer-out.c (write_symbol): Likewise.
2332 * omp-low.c (setjmp_or_longjmp_p): Likewise.
2333 (lower_omp_1): Likewise.
2334 * predict.c (strip_predict_hints): Likewise.
2335 * print-tree.c (print_node): Likewise.
2336 * symtab.c (symtab_node::output_to_lto_symbol_table_p): Likewise.
2337 * trans-mem.c (is_tm_irrevocable): Likewise.
2338 (is_tm_load): Likewise.
2339 (is_tm_simple_load): Likewise.
2340 (is_tm_store): Likewise.
2341 (is_tm_simple_store): Likewise.
2342 (is_tm_abort): Likewise.
2343 (tm_region_init_1): Likewise.
2344 * tree-call-cdce.c (gen_shrink_wrap_conditions): Likewise.
2345 * tree-cfg.c (verify_gimple_call): Likewise.
2346 (move_stmt_r): Likewise.
2347 (stmt_can_terminate_bb_p): Likewise.
2348 * tree-eh.c (lower_eh_constructs_2): Likewise.
2349 * tree-if-conv.c (if_convertible_stmt_p): Likewise.
2350 * tree-inline.c (remap_gimple_stmt): Likewise.
2351 (copy_bb): Likewise.
2352 (estimate_num_insns): Likewise.
2353 (fold_marked_statements): Likewise.
2354 * tree-sra.c (scan_function): Likewise.
2355 * tree-ssa-ccp.c (surely_varying_stmt_p): Likewise.
2356 (optimize_stack_restore): Likewise.
2357 (pass_fold_builtins::execute): Likewise.
2358 * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
2359 (mark_all_reaching_defs_necessary_1): Likewise.
2360 * tree-ssa-dom.c (dom_opt_dom_walker::optimize_stmt): Likewise.
2361 * tree-ssa-forwprop.c (simplify_builtin_call): Likewise.
2362 (pass_forwprop::execute): Likewise.
2363 * tree-ssa-loop-im.c (stmt_cost): Likewise.
2364 * tree-ssa-math-opts.c (pass_cse_reciprocals::execute): Likewise.
2365 * tree-ssa-sccvn.c (fully_constant_vn_reference_p): Likewise.
2366 * tree-ssa-strlen.c (get_string_length): Likewise.
2367 * tree-ssa-structalias.c (handle_lhs_call): Likewise.
2368 (find_func_aliases_for_call): Likewise.
2369 * tree-ssa-ter.c (find_replaceable_in_bb): Likewise.
2370 * tree-stdarg.c (optimize_va_list_gpr_fpr_size): Likewise.
2371 * tree-tailcall.c (find_tail_calls): Likewise.
2372 * tree.c (need_assembler_name_p): Likewise.
2373 (free_lang_data_in_decl): Likewise.
2374 (get_call_combined_fn): Likewise.
2375 * ubsan.c (is_ubsan_builtin_p): Likewise.
2376 * varasm.c (incorporeal_function_p): Likewise.
2377 * tree.h (DECL_BUILT_IN): Remove and replace with
2378 fndecl_built_in_p.
2379 (DECL_BUILT_IN_P): Transfort to fndecl_built_in_p.
2380 (fndecl_built_in_p): New.
2381
2382 2018-08-27 Martin Liska <mliska@suse.cz>
2383
2384 PR tree-optimization/86847
2385 * tree-switch-conversion.c (switch_decision_tree::dump_case_nodes):
2386 Dump also subtree probability.
2387 (switch_decision_tree::do_jump_if_equal): New function.
2388 (switch_decision_tree::emit_case_nodes): Handle special
2389 situations in balanced tree that can be emitted much simpler.
2390 Fix calculation of probabilities that happen in tree expansion.
2391 * tree-switch-conversion.h (struct cluster): Add
2392 is_single_value_p.
2393 (struct simple_cluster): Likewise.
2394 (struct case_tree_node): Add new function has_child.
2395 (do_jump_if_equal): New.
2396
2397 2018-08-27 Martin Liska <mliska@suse.cz>
2398
2399 * tree-switch-conversion.c (bit_test_cluster::find_bit_tests):
2400 Add new argument to bit_test_cluster constructor.
2401 (bit_test_cluster::emit): Set bits really number of values
2402 handlel by a test.
2403 (bit_test_cluster::hoist_edge_and_branch_if_true): Add
2404 probability argument.
2405 * tree-switch-conversion.h (struct bit_test_cluster):
2406 Add m_handles_entire_switch.
2407
2408 2018-08-27 Martin Liska <mliska@suse.cz>
2409
2410 PR tree-optimization/86702
2411 * tree-switch-conversion.c (jump_table_cluster::emit):
2412 Make probabilities even for values in jump table
2413 according to number of cases handled.
2414 (switch_decision_tree::compute_cases_per_edge): Pass
2415 argument to reset_out_edges_aux function.
2416 (switch_decision_tree::analyze_switch_statement): Likewise.
2417 * tree-switch-conversion.h (switch_decision_tree::reset_out_edges_aux):
2418 Make it static.
2419
2420 2018-08-27 Martin Liska <mliska@suse.cz>
2421
2422 * cfgexpand.c (expand_asm_stmt): Use label_to_block and pass
2423 cfun argument explicitly.
2424 * gimple-pretty-print.c (dump_gimple_switch): Likewise.
2425 * hsa-gen.c (gen_hsa_insns_for_switch_stmt): Use new
2426 function gimple_switch_default_bb.
2427 (convert_switch_statements):
2428 (expand_builtins):
2429 * ipa-fnsummary.c (set_switch_stmt_execution_predicate):
2430 * stmt.c (label_to_block_fn): Use label_to_block and pass
2431 cfun argument explicitly and use gimple_switch_label_bb.
2432 (expand_case): Likewise.
2433 * tree-cfg.c (lower_phi_internal_fn): Use label_to_block and pass
2434 cfun argument explicitly. Likewise.
2435 (make_edges_bb): Likewise.
2436 (make_cond_expr_edges): Likewise.
2437 (get_cases_for_edge): Likewise.
2438 (make_gimple_switch_edges): Likewise.
2439 (label_to_block_fn): Likewise.
2440 (label_to_block): Likewise.
2441 (make_goto_expr_edges): Likewise.
2442 (make_gimple_asm_edges): Likewise.
2443 (main_block_label): Likewise.
2444 (group_case_labels_stmt): Likewise.
2445 (find_taken_edge_computed_goto): Likewise.
2446 (find_taken_edge_switch_expr): Likewise.
2447 (gimple_verify_flow_info): Likewise.
2448 (gimple_redirect_edge_and_branch): Likewise.
2449 (gimple_switch_label_bb): New function.
2450 (gimple_switch_default_bb): Likewise.
2451 (gimple_switch_edge): Likewise.
2452 (gimple_switch_default_edge): Likewise.
2453 * tree-cfg.h (label_to_block_fn): Remove and replace ...
2454 (label_to_block): ... with this.
2455 (gimple_switch_label_bb): New.
2456 (gimple_switch_default_bb): Likewise.
2457 (gimple_switch_edge): Likewise.
2458 (gimple_switch_default_edge): Likewise.
2459 * tree-cfgcleanup.c (convert_single_case_switch): Use
2460 new gimple functions and pass new argument to label_to_block.
2461 (cleanup_control_flow_bb):
2462 * tree-eh.c (make_eh_dispatch_edges): Use label_to_block and pass
2463 cfun argument explicitly.
2464 (make_eh_edges): Likewise.
2465 (redirect_eh_dispatch_edge): Likewise.
2466 (lower_resx): Likewise.
2467 (lower_eh_dispatch): Likewise.
2468 (maybe_remove_unreachable_handlers): Likewise.
2469 (unsplit_eh): Likewise.
2470 (cleanup_empty_eh): Likewise.
2471 (verify_eh_edges): Likewise.
2472 (verify_eh_dispatch_edge): Likewise.
2473 * tree-ssa-dom.c (record_edge_info): Likewise.
2474 * tree-ssa-forwprop.c (simplify_gimple_switch_label_vec): Likewise.
2475 * tree-ssa-threadedge.c (thread_around_empty_blocks): Likewise.
2476 (thread_through_normal_block): Likewise.
2477 * tree-ssa-uncprop.c (associate_equivalences_with_edges): Likewise.
2478 * tree-ssa-uninit.c (convert_control_dep_chain_into_preds):
2479 * tree-switch-conversion.c (switch_conversion::collect): Use new
2480 gimple functions.
2481 (switch_conversion::check_final_bb): Likewise.
2482 (switch_conversion::gather_default_values): Pass new argument
2483 to label_to_block.
2484 (switch_conversion::build_constructors): Likewise.
2485 (switch_decision_tree::compute_cases_per_edge): Use new
2486 gimple_switch_edge function.
2487 (switch_decision_tree::analyze_switch_statement): Pass new argument
2488 to label_to_block.
2489 (switch_decision_tree::try_switch_expansion): Use
2490 gimple_switch_default_edge.
2491 * tree-vrp.c (find_switch_asserts): Pass new argument
2492 to label_to_block.
2493 * vr-values.c (vr_values::vrp_visit_switch_stmt): Likewise.
2494 (vr_values::simplify_switch_using_ranges): Likewise.
2495
2496 2018-08-27 Richard Biener <rguenther@suse.de>
2497
2498 * cfganal.h (rev_post_order_and_mark_dfs_back_seme): Declare.
2499 * cfganal.c (rev_post_order_and_mark_dfs_back_seme): New function.
2500
2501 * tree-ssa-sccvn.h (struct vn_pval): New structure.
2502 (struct vn_nary_op_s): Add unwind_to member. Add
2503 predicated_values flag and put result into a union together
2504 with a linked list of vn_pval.
2505 (struct vn_ssa_aux): Add name member to make maintaining
2506 a map of SSA name to vn_ssa_aux possible. Remove no longer
2507 needed info, dfsnum, low, visited, on_sccstack, use_processed
2508 and range_info_anti_range_p members.
2509 (run_scc_vn, vn_eliminate, free_scc_vn, vn_valueize): Remove.
2510 (do_rpo_vn, run_rpo_vn, eliminate_with_rpo_vn, free_rpo_vn):
2511 New functions.
2512 (vn_valueize): New global.
2513 (vn_context_bb): Likewise.
2514 (VN_INFO_RANGE_INFO, VN_INFO_ANTI_RANGE_P, VN_INFO_RANGE_TYPE,
2515 VN_INFO_PTR_INFO): Remove.
2516 * tree-ssa-sccvn.c: ... (rewrite)
2517 (pass_fre::execute): For -O2+ initialize loops and run
2518 RPO VN in optimistic mode (iterating). For -O1 and -Og
2519 run RPO VN in non-optimistic mode.
2520 * params.def (PARAM_SCCVN_MAX_SCC_SIZE): Remove.
2521 (PARAM_RPO_VN_MAX_LOOP_DEPTH): Add.
2522 * doc/invoke.texi (sccvn-max-scc-size): Remove.
2523 (rpo-vn-max-loop-depth): Document.
2524 * tree-ssa-alias.c (walk_non_aliased_vuses): Stop walking
2525 when valuezing the VUSE signals we walked out of the region.
2526 * tree-ssa-pre.c (phi_translate_1): Ignore predicated values.
2527 (phi_translate): Set VN context block to use for availability
2528 lookup.
2529 (compute_avail): Likewise.
2530 (pre_valueize): New function.
2531 (pass_pre::execute): Adjust to the RPO VN API.
2532
2533 * tree-ssa-loop-ivcanon.c: Include tree-ssa-sccvn.h.
2534 (propagate_constants_for_unrolling): Remove.
2535 (tree_unroll_loops_completely): Perform value-numbering
2536 on the unrolled bodies loop parent.
2537
2538 2018-08-27 Richard Biener <rguenther@suse.de>
2539
2540 * tree-ssa-pre.c (compute_antic): Re-use inverted postorder
2541 for partial antic compute.
2542
2543 2018-08-27 Jakub Jelinek <jakub@redhat.com>
2544
2545 PR rtl-optimization/87065
2546 * combine.c (simplify_if_then_else): Formatting fix.
2547 (if_then_else_cond): Guard MULT optimization with SCALAR_INT_MODE_P
2548 check.
2549 (known_cond): Don't return const_true_rtx for vector modes. Use
2550 CONST0_RTX instead of const0_rtx. Formatting fixes.
2551
2552 2018-08-27 Martin Liska <mliska@suse.cz>
2553
2554 PR gcov-profile/87069
2555 * gcov.c (process_file): Record files already processed
2556 and warn about a file being processed multiple times.
2557
2558 2018-08-27 Martin Liska <mliska@suse.cz>
2559
2560 PR driver/83193
2561 * config/aarch64/aarch64.c (aarch64_override_options_internal):
2562 Set default values for x_aarch64_*_string strings.
2563 * config/aarch64/aarch64.opt: Remove --{march,mcpu,mtune}==
2564 prefix. For -mabi do not print '=ABI' in help and use
2565 <option_value> format for -msve-vector-bits and -moverride
2566 options.
2567
2568 2018-08-26 Jeff Law <law@redhat.com>
2569
2570 * config/mips/frame-header-opt.c: Include "backend.h" rather than
2571 "cfg.h"
2572
2573 2018-08-26 Marek Polacek <polacek@redhat.com>
2574
2575 PR c++/87029, Implement -Wredundant-move.
2576 * doc/invoke.texi: Document -Wredundant-move.
2577
2578 2018-08-25 Martin Sebor <msebor@redhat.com>
2579
2580 PR tree-optimization/87059
2581 * builtins.c (expand_builtin_strncmp): Convert MIN_EXPR operand
2582 to the same type as the other.
2583 * fold-const.c (fold_binary_loc): Assert expectation.
2584
2585 2018-08-25 Iain Sandoe <iain@sandoe.co.uk>
2586
2587 * config/darwin.c (machopic_legitimize_pic_address): Clean up
2588 extraneous parentheses, dead code section and formatting.
2589
2590 2018-08-24 David Malcolm <dmalcolm@redhat.com>
2591
2592 PR c++/87091
2593 * diagnostic-show-locus.c (layout::layout): Ensure the margin is
2594 wide enough for jumps in the line-numbering to be visible.
2595 (layout::print_gap_in_line_numbering): New member function.
2596 (layout::calculate_line_spans): When using line numbering, merge
2597 line spans that are only 1 line apart.
2598 (diagnostic_show_locus): When printing line numbers, show gaps in
2599 line numbering directly, rather than printing headers.
2600 (selftest::test_diagnostic_show_locus_fixit_lines): Add test of
2601 line-numbering with multiple line spans.
2602 (selftest::test_fixit_insert_containing_newline_2): Add test of
2603 line-numbering, in which the spans are close enough to be merged.
2604
2605 2018-08-24 Aldy Hernandez <aldyh@redhat.com>
2606
2607 * gimple-ssa-evrp-analyze.c (set_ssa_range_info): Pass value_range
2608 to range_includes_zero_p. Do not special case VR_ANTI_RANGE.
2609 * tree-vrp.c (range_is_nonnull): Remove.
2610 (range_includes_zero_p): Accept value_range instead of min/max.
2611 (extract_range_from_binary_expr_1): Do not early bail on
2612 POINTER_PLUS_EXPR.
2613 Use range_includes_zero_p instead of range_is_nonnull.
2614 (extract_range_from_unary_expr): Use range_includes_zero_p instead
2615 of range_is_nonnull.
2616 (vrp_meet_1): Pass value_range to range_includes_zero_p. Do not
2617 special case VR_ANTI_RANGE.
2618 (vrp_finalize): Same.
2619 * tree-vrp.h (range_includes_zero_p): Pass value_range as argument
2620 instead of min/max.
2621 (range_is_nonnull): Remove.
2622 * vr-values.c (vrp_stmt_computes_nonzero): Use
2623 range_includes_zero_p instead of range_is_nonnull.
2624 (extract_range_basic): Pass value_range to range_includes_zero_p
2625 instead of range_is_nonnull.
2626
2627 2018-08-24 Uros Bizjak <ubizjak@gmail.com>
2628
2629 * emit-rtl.c (init_emit_once): Do not emit MODE_POINTER_BOUNDS RTXes.
2630 * emit-rtl.h (rtl_data): Remove return_bnd.
2631 * explow.c (trunc_int_for_mode): Do not handle POINTER_BOUNDS_MODE_P.
2632 * function.c (diddle_return_value): Do not handle crtl->return_bnd.
2633 * genmodes.c (complete_mode): Do not handle MODE_POINTER_BOUNDS.
2634 (POINTER_BOUNDS_MODE): Remove definition.
2635 (make_pointer_bounds_mode): Remove.
2636 (get_mode_class): Do not handle MODE_POINTER_BOUNDS.
2637 * machmode.h (POINTER_BOUNDS_MODE_P): Remove definition.
2638 (scalare_mode::includes_p): Do not handle MODE_POINTER_BOUNDS.
2639 * mode-classes.def: Do not define MODE_POINTER_BOUNDS.
2640 * stor-layout.c (int_mode_for_mode): Do not handle MODE_POINTER_BOUNDS.
2641 * tree-core.h (enum tree_index): Remove TI_POINTER_BOUNDS_TYPE.
2642 * varasm.c (output_constant_pool_2): Do not handle MODE_POINTER_BOUNDS.
2643
2644 * config/i386/i386-modes.def (BND32, BND64): Remove.
2645 * config/i386/i386.c (dbx_register_map): Remove bound registers.
2646 (dbx64_register_map): Ditto.
2647 (svr4_dbx_register_map): Ditto.
2648 (indirect_thunk_bnd_needed): Remove.
2649 (indirect_thunks_bnd_used): Ditto.
2650 (indirect_return_bnd_needed): Ditto.
2651 (indirect_return_via_cx_bnd): Ditto.
2652 (enum indirect_thunk_prefix): Remove indirect_thunk_prefix_bnd.
2653 (indirect_thunk_name): Remove handling of indirect_thunk_prefix_bnd.
2654 (output_indirect_thunk): Ditto. Remove need_prefix argument.
2655 (output_indirect_thunk_function): Remove handling of
2656 indirect_return_bnd_needed, indirect_return_via_cx_bnd,
2657 indirect_thunk_bnd_needed and indirect_thunks_bnd_used variables.
2658 (ix86_save_reg): Remove handling of crtl->return_bnd.
2659 (ix86_legitimate_constant_p): Remove handling of POINTER_BOUNDS_MODE_P.
2660 (ix86_print_operand_address_as): Remove handling of UNSPEC_BNDMK_ADDR
2661 and UNSPEC_BNDLX_ADDR.
2662 (ix86_output_indirect_branch_via_reg): Remove handling of
2663 indirect_thunk_prefix_bnd.
2664 (ix86_output_indirect_branch_via_push): Ditto.
2665 (ix86_output_function_return): Ditto.
2666 (ix86_output_indirect_function_return): Ditto.
2667 (avoid_func_arg_motion): Do not handle UNSPEC_BNDSTX.
2668 * config/i386/i386.h (FIXED_REGISTERS): Remove bound registers.
2669 (CALL_USED_REGISTERS): Ditto.
2670 (REG_ALLOC_ORDER): Update for removal of bound registers.
2671 (HI_REGISTER_NAMES): Ditto.
2672 * config/i386/i386.md (UNSPEC_BNDMK, UNSPEC_BNDMK_ADDR, UNSPEC_BNDSTX)
2673 (UNSPEC_BNDLDX, UNSPEC_BNDLDX_ADDR, UNSPEC_BNDCL, UNSPEC_BNDCU)
2674 (UNSPEC_BNDCN, UNSPEC_MPX_FENCE): Remove.
2675 (BND0_REG, BND1_REG, BND2_REG, BND3_REG): Remove
2676 (FIRST_PSEUDO_REG): Update.
2677 (BND): Remove mode iterator.
2678 * config/i386/predicates.md (bnd_mem_operator): Remove.
2679
2680 2018-08-24 Richard Sandiford <richard.sandiford@arm.com>
2681
2682 * tree-vect-stmts.c (vectorizable_bswap): Handle variable-length
2683 vectors.
2684
2685 2018-08-24 Richard Sandiford <richard.sandiford@arm.com>
2686
2687 * tree-vect-slp.c (vect_transform_slp_perm_load): Separate out
2688 the case in which the permute needs only a single element and
2689 repeats for every vector of the result. Extend that case to
2690 handle variable-length vectors.
2691 * tree-vect-stmts.c (vectorizable_load): Update accordingly.
2692
2693 2018-08-24 H.J. Lu <hongjiu.lu@intel.com>
2694
2695 PR debug/79342
2696 * dwarf2out.c (save_macinfo_strings): Call set_indirect_string
2697 on DW_MACINFO_start_file for -gsplit-dwarf -g3.
2698
2699 2018-08-24 Richard Biener <rguenther@suse.de>
2700
2701 * cfg.h (struct control_flow_graph): Add edge_flags_allocated and
2702 bb_flags_allocated members.
2703 (auto_flag): New RAII class for allocating flags.
2704 (auto_edge_flag): New RAII class for allocating edge flags.
2705 (auto_bb_flag): New RAII class for allocating bb flags.
2706 * cfgloop.c (verify_loop_structure): Allocate temporary edge
2707 flag dynamically.
2708 * cfganal.c (dfs_enumerate_from): Remove use of visited sbitmap
2709 in favor of temporarily allocated BB flag.
2710 * hsa-brig.c: Re-order includes.
2711 * hsa-dump.c: Likewise.
2712 * hsa-regalloc.c: Likewise.
2713 * print-rtl.c: Likewise.
2714 * profile-count.c: Likewise.
2715
2716 2018-08-24 Segher Boessenkool <segher@kernel.crashing.org>
2717
2718 PR target/86989
2719 * config/rs6000/rs6000.c (toc_relative_expr_p): Check that the base is
2720 the TOC register.
2721
2722 2018-08-24 Aldy Hernandez <aldyh@redhat.com>
2723
2724 PR 87073/bootstrap
2725 * wide-int-range.cc (wide_int_range_div): Do not ignore result
2726 from wide_int_range_multiplicative_op.
2727
2728 2018-08-23 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
2729
2730 * tree-vect-data-refs.c (vect_grouped_store_supported): Fix typo
2731 "permutaion".
2732
2733 2018-08-23 Giuliano Belinassi <giuliano.belinassi@usp.br>
2734
2735 * genmatch.c (parser::parse_operation): Fix typo 'exapnded'
2736 to 'expanded'.
2737
2738 2018-08-23 Alexander Monakov <amonakov@ispras.ru>
2739
2740 * tree-scalar-evolution.c (final_value_replacement_loop): Dump
2741 full GENERIC expression used for replacement.
2742
2743 2018-08-23 Aldy Hernandez <aldyh@redhat.com>
2744
2745 * tree-vrp.c (abs_extent_range): Remove.
2746 (extract_range_into_wide_ints): Pass wide ints by reference.
2747 (extract_range_from_binary_expr_1): Rewrite the *DIV_EXPR code.
2748 Pass wide ints by reference in all calls to
2749 extract_range_into_wide_ints.
2750 * wide-int-range.cc (wide_int_range_div): New.
2751 * wide-int-range.h (wide_int_range_div): New.
2752 (wide_int_range_includes_zero_p): New.
2753 (wide_int_range_zero_p): New.
2754
2755 2018-08-23 Matthew Malcomson <matthew.malcomson@arm.com>
2756
2757 * config/aarch64/aarch64.md (arches): New enum.
2758 (arch): New enum attr.
2759 (arch_enabled): New attr.
2760 (enabled): Now uses arch_enabled only.
2761 (simd, sve, fp16): Removed attribute.
2762 (fp): Attr now defined in terms of 'arch'.
2763 (*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64, *movti_aarch64,
2764 *movhf_aarch64, <optab><fcvt_target><GPF:mode>2,
2765 <FCVT_F2FIXED:fcvt_fixed_insn><GPF:mode>3,
2766 <FCVT_FIXED2F:fcvt_fixed_insn><GPI:mode>3): Merge 'fp' and 'simd'
2767 attributes into 'arch'.
2768 (*movsf_aarch64, *movdf_aarch64, *movtf_aarch64, *add<mode>3_aarch64,
2769 subdi3, neg<mode>2, <optab><mode>3, one_cmpl<mode>2,
2770 *<NLOGICAL:optab>_one_cmpl<mode>3, *xor_one_cmpl<mode>3,
2771 *aarch64_ashl_sisd_or_int_<mode>3, *aarch64_lshr_sisd_or_int_<mode>3,
2772 *aarch64_ashr_sisd_or_int_<mode>3, *aarch64_sisd_ushl): Convert use of
2773 'simd' attribute into 'arch'.
2774 (load_pair_sw_<SX:mode><SX2:mode>, load_pair_dw_<DX:mode><DX2:mode>,
2775 store_pair_sw_<SX:mode><SX2:mode>, store_pair_dw_<DX:mode><DX2:mode>):
2776 Convert use of 'fp' attribute to 'arch'.
2777 * config/aarch64/aarch64-simd.md (move_lo_quad_internal_<mode>,
2778 move_lo_quad_internal_<mode>): (different modes) Merge 'fp' and 'simd'
2779 into 'arch'.
2780 (move_lo_quad_internal_be_<mode>, move_lo_quad_internal_be_<mode>):
2781 (different modes) Merge 'fp' and 'simd' into 'arch'.
2782 (*aarch64_combinez<mode>, *aarch64_combinez_be<mode>): Merge 'fp' and
2783 'simd' into 'arch'.
2784
2785 2018-08-23 Segher Boessenkool <segher@kernel.crashing.org>
2786
2787 PR rtl-optimization/87026
2788 * expmed.c (canonicalize_comparison): If we can no longer create
2789 pseudoregisters, don't.
2790
2791 2018-08-23 Richard Earnshaw <rearnsha@arm.com>
2792
2793 PR target/86951
2794 * config/arm/arm-protos.h (arm_emit_speculation_barrier): New
2795 prototype.
2796 * config/arm/arm.c (speculation_barrier_libfunc): New static
2797 variable.
2798 (arm_init_libfuncs): Initialize it.
2799 (arm_emit_speculation_barrier): New function.
2800 * config/arm/arm.md (speculation_barrier): Call
2801 arm_emit_speculation_barrier for architectures that do not have
2802 DSB or ISB.
2803 (speculation_barrier_insn): Only match on Armv7 or later.
2804
2805 2018-08-23 Richard Biener <rguenther@suse.de>
2806
2807 PR middle-end/87024
2808 * tree-inline.c (copy_bb): Drop unused __builtin_va_arg_pack_len
2809 calls.
2810
2811 2018-08-23 Richard Sandiford <richard.sandiford@arm.com>
2812
2813 * config/aarch64/aarch64.c (aarch64_evpc_sve_tbl): Fix handling
2814 of single-vector TBLs.
2815 (aarch64_vectorize_vec_perm_const): Set one_vector_p when only
2816 one input is given.
2817
2818 2018-08-23 Richard Sandiford <richard.sandiford@arm.com>
2819
2820 PR target/85910
2821 * config/aarch64/aarch64.c (aarch64_expand_vec_perm_const_1): Fix
2822 aarch64_evpc_tbl guard.
2823
2824 2018-08-22 Bernd Edlinger <bernd.edlinger@hotmail.de>
2825
2826 * tree-ssa-dse.c (compute_trims): Avoid folding away undefined
2827 behaviour.
2828
2829 2018-08-22 Martin Sebor <msebor@redhat.com>
2830
2831 PR middle-end/87052
2832 * tree-pretty-print.c (pretty_print_string): Add argument.
2833 (dump_generic_node): Call to pretty_print_string with string size.
2834
2835 2018-08-22 Segher Boessenkool <segher@kernel.crashing.org>
2836
2837 PR rtl-optimization/86771
2838 * combine.c (try_combine): Do not allow splitting a resulting PARALLEL
2839 of two SETs into those two SETs, one to be placed at i2, if that SETs
2840 destination is modified between i2 and i3.
2841
2842 2018-08-22 Richard Sandiford <richard.sandiford@arm.com>
2843
2844 PR tree-optimization/86725
2845 * tree-vect-loop.c (vect_inner_phi_in_double_reduction_p): New
2846 function.
2847 (vect_analyze_scalar_cycles_1): Check it.
2848
2849 2018-08-22 Richard Sandiford <richard.sandiford@arm.com>
2850
2851 PR tree-optimization/86725
2852 * tree-vect-loop.c (vect_is_simple_reduction): When treating
2853 an outer loop phi as a double reduction, make sure that the
2854 single user of the phi result is an inner loop phi.
2855
2856 2018-08-22 Richard Sandiford <richard.sandiford@arm.com>
2857
2858 * tree-vect-data-refs.c (vect_analyze_group_access_1): Convert
2859 grouped stores with gaps to a strided group.
2860
2861 2018-08-22 Richard Sandiford <richard.sandiford@arm.com>
2862
2863 * tree-vect-stmts.c (get_group_load_store_type)
2864 (get_load_store_type): Only test STMT_VINFO_STRIDED_P for the
2865 first statement in a group.
2866
2867 2018-08-22 Iain Sandoe <iain@sandoe.co.uk>
2868
2869 * config/darwin.h (LINK_COMMAND_SPEC_A): Sync LTO options with
2870 the sequence used in gcc/gcc.c.
2871
2872 2018-08-22 Iain Sandoe <iain@sandoe.co.uk>
2873
2874 PR other/704
2875 * gcc-ar.c (main): Don’t try to invoke the plug-in if we’re not
2876 building it.
2877
2878 2018-08-22 Iain Sandoe <iain@sandoe.co.uk>
2879
2880 * config/darwin10.h (LINK_GCC_C_SEQUENCE_SPEC): Adjust to use the
2881 Darwin10-specific unwinder-shim.
2882 * config/darwin12.h (LINK_GCC_C_SEQUENCE_SPEC): Remove.
2883 * config/rs6000/darwin.h (DARWIN_CRT1_SPEC, DARWIN_DYLIB1_SPEC):
2884 New to cater for Darwin10 Rosetta.
2885
2886 2018-08-22 Iain Sandoe <iain@sandoe.co.uk>
2887
2888 * config/i386/i386.c (ix86_output_addr_diff_elt): Move the MACH-O
2889 specific test before the one for HAVE_AS_GOTOFF_IN_DATA.
2890
2891 2018-08-22 Iain Sandoe <iain@sandoe.co.uk>
2892
2893 PR bootstrap/81033
2894 PR target/81733
2895 PR target/52795
2896 * gcc/dwarf2out.c (FUNC_SECOND_SECT_LABEL): New.
2897 (dwarf2out_switch_text_section): Generate a local label for the
2898 second function sub-section and apply it as the second FDE start
2899 label.
2900 * gcc/final.c (final_scan_insn_1): Emit second FDE label after the
2901 second sub-section start.
2902
2903 2018-08-22 Richard Biener <rguenther@suse.de>
2904
2905 PR tree-optimization/86988
2906 * tree-vrp.c (vrp_prop::check_mem_ref): Bail out on VLAs.
2907
2908 2018-08-22 Richard Biener <rguenther@suse.de>
2909
2910 PR tree-optimization/86945
2911 * tree-cfg.c (generate_range_test): Use unsigned arithmetic.
2912
2913 2018-08-22 Alexandre Oliva <oliva@adacore.com>
2914
2915 * config/rs6000/rs6000.c (SMALL_DATA_RELOC, SMALL_DATA_REG): Add
2916 a comment about how uses of r2 for .sdata2 come about.
2917
2918 2018-08-22 Alexandre Oliva <aoliva@redhat.com>
2919
2920 * tree-ssa-reassoc.c (is_reassociable_op): Fix cut&pasto.
2921
2922 2018-08-21 Marek Polacek <polacek@redhat.com>
2923
2924 PR c++/86981, Implement -Wpessimizing-move.
2925 * doc/invoke.texi: Document -Wpessimizing-move.
2926
2927 2018-08-21 Jan Hubicka <jh@suse.cz>
2928
2929 * tree.c (find_decls_types_r): Do not check for redundant typedefs.
2930 * tree.h (is_redundant_typedef): Remove.
2931 * dwarf2out.c (is_redundant_typedef): Turn into static function.
2932
2933 2018-08-21 Jan Hubicka <jh@suse.cz>
2934
2935 * tree.c (free_lang_data_in_decl): Remove types from DECL_CONTEXT
2936 when possible.
2937
2938 2018-08-21 Tamar Christina <tamar.christina@arm.com>
2939
2940 * expmed.c (extract_low_bits): Reject invalid subregs early.
2941
2942 2018-08-21 Bernd Edlinger <bernd.edlinger@hotmail.de>
2943
2944 PR middle-end/86121
2945 * tree-ssa-strlen.c (adjust_last_stmt): Avoid folding away undefined
2946 behaviour.
2947
2948 2018-08-21 Rasmus Villemoes <rv@rasmusvillemoes.dk>
2949
2950 * config/vxworks.h: Guard vxworks_asm_out_constructor and
2951 vxworks_asm_out_destructor by !HAVE_INITFINI_ARRAY_SUPPORT
2952 * config/vxworks.c: Likewise.
2953
2954 2018-08-21 Rasmus Villemoes <rv@rasmusvillemoes.dk>
2955
2956 * config/vxworks.c: Set targetm.have_ctors_dtors
2957 if HAVE_INITFINI_ARRAY_SUPPORT.
2958 * config/vxworks.h: Set SUPPORTS_INIT_PRIORITY
2959 if HAVE_INITFINI_ARRAY_SUPPORT.
2960
2961 2018-08-21 Rasmus Villemoes <rv@rasmusvillemoes.dk>
2962
2963 * config/vxworks.h: Add $(WIND_BASE)/target/h/wrn/coreip to
2964 default search path for VxWorks < 7.
2965
2966 2018-08-21 Bernd Edlinger <bernd.edlinger@hotmail.de>
2967
2968 * gimple-ssa-sprintf.c (decl_constant_value): Remove.
2969 (get_format_string): Refer to c_getstr.
2970
2971 2018-08-21 Tom de Vries <tdevries@suse.de>
2972
2973 * cgraph.h (debuginfo_early_init, debuginfo_init, debuginfo_fini)
2974 (debuginfo_start, debuginfo_stop, debuginfo_early_start)
2975 (debuginfo_early_stop): Declare.
2976 * cgraphunit.c (debuginfo_early_init, debuginfo_init, debuginfo_fini)
2977 (debuginfo_start, debuginfo_stop, debuginfo_early_start)
2978 (debuginfo_early_stop): New function.
2979 (symbol_table::finalize_compilation_unit): Call debuginfo_early_start
2980 and debuginfo_early_stop.
2981 * dwarf2out.c (dwarf2out_finish, dwarf2out_early_finish): Dump dwarf.
2982 * toplev.c (compile_file): Call debuginfo_start and debuginfo_stop.
2983 (general_init): Call debuginfo_early_init.
2984 (finalize): Call debuginfo_fini.
2985 (do_compile): Call debuginfo_init.
2986 * doc/invoke.texi (@gccoptlist): Add -fdump-debug and
2987 -fdump-early-debug.
2988 (@item -fdump-debug, @item -fdump-earlydebug): Add.
2989
2990 2018-08-21 Tom de Vries <tdevries@suse.de>
2991
2992 * dwarf2out.c (print_dw_val, print_loc_descr, print_die): Handle
2993 flag_dump_noaddr and flag_dump_unnumbered.
2994
2995 2018-08-21 Aldy Hernandez <aldyh@redhat.com>
2996
2997 * wide-int-range.cc (wide_int_range_abs): New.
2998 (wide_int_range_order_set): Rename from wide_int_range_min_max.
2999 * wide-int-range.h (wide_int_range_abs): New.
3000 (wide_int_range_min_max): New.
3001 * tree-vrp.c (extract_range_from_unary_expr): Rewrite ABS_EXPR
3002 case to call wide_int_range_abs.
3003 Rewrite MIN/MAX_EXPR to call wide_int_range_min_max.
3004 (extract_range_from_abs_expr): Delete.
3005
3006 2018-08-20 Michael Meissner <meissner@linux.ibm.com>
3007
3008 PR target/87033
3009 * config/rs6000/rs6000.md (extendsi<mode>2): Change constraints
3010 from 'Y' to 'YZ' to enable the LWAX instruction to be generated
3011 for indexed loads.
3012
3013 2018-08-20 Nathan Sidwell <nathan@acm.org>
3014 Jeff Law <law@redhat.com>
3015
3016 * config/s390/s390-c (s390_macro_to_expand): Use cpp_macro_p.
3017 * config/spu/spu-c.c (spu_macro_to_expand): Likewise.
3018
3019 2018-08-20 David Malcolm <dmalcolm@redhat.com>
3020
3021 PR other/84889
3022 * attribs.c (diag_attr_exclusions): Add auto_diagnostic_group instance.
3023 (decl_attributes): Likewise.
3024 * calls.c (maybe_warn_nonstring_arg): Add auto_diagnostic_group
3025 instance.
3026 * cgraphunit.c (maybe_diag_incompatible_alias): Likewise.
3027 * diagnostic-core.h (class auto_diagnostic_group): New class.
3028 * diagnostic.c (diagnostic_initialize): Initialize the new fields.
3029 (diagnostic_report_diagnostic): Handle the first diagnostics within
3030 a group.
3031 (emit_diagnostic): Add auto_diagnostic_group instance.
3032 (inform): Likewise.
3033 (inform_n): Likewise.
3034 (warning): Likewise.
3035 (warning_at): Likewise.
3036 (warning_n): Likewise.
3037 (pedwarn): Likewise.
3038 (permerror): Likewise.
3039 (error): Likewise.
3040 (error_n): Likewise.
3041 (error_at): Likewise.
3042 (sorry): Likewise.
3043 (fatal_error): Likewise.
3044 (internal_error): Likewise.
3045 (internal_error_no_backtrace): Likewise.
3046 (auto_diagnostic_group::auto_diagnostic_group): New ctor.
3047 (auto_diagnostic_group::~auto_diagnostic_group): New dtor.
3048 * diagnostic.h (struct diagnostic_context): Add fields
3049 "diagnostic_group_nesting_depth",
3050 "diagnostic_group_emission_count", "begin_group_cb",
3051 "end_group_cb".
3052 * gimple-ssa-isolate-paths.c (find_implicit_erroneous_behavior):
3053 Add auto_diagnostic_group instance(s).
3054 (find_explicit_erroneous_behavior): Likewise.
3055 * gimple-ssa-warn-alloca.c (pass_walloca::execute): Likewise.
3056 * gimple-ssa-warn-restrict.c (maybe_diag_offset_bounds): Likewise.
3057 * gimplify.c (warn_implicit_fallthrough_r): Likewise.
3058 (gimplify_va_arg_expr): Likewise.
3059 * hsa-gen.c (HSA_SORRY_ATV): Likewise.
3060 (HSA_SORRY_AT): Likewise.
3061 * ipa-devirt.c (compare_virtual_tables): Likewise.
3062 (warn_odr): Likewise.
3063 * multiple_target.c (expand_target_clones): Likewise.
3064 * opts-common.c (cmdline_handle_error): Likewise.
3065 * reginfo.c (globalize_reg): Likewise.
3066 * substring-locations.c (format_warning_n_va): Likewise.
3067 * tree-inline.c (expand_call_inline): Likewise.
3068 * tree-ssa-ccp.c (pass_post_ipa_warn::execute): Likewise.
3069 * tree-ssa-loop-niter.c
3070 (do_warn_aggressive_loop_optimizations): Likewise.
3071 * tree-ssa-uninit.c (warn_uninit): Likewise.
3072 * tree.c (warn_deprecated_use): Likewise.
3073
3074 2018-08-20 H.J. Lu <hongjiu.lu@intel.com>
3075
3076 PR target/87014
3077 * config/i386/i386.md (eh_return): Always update EH return
3078 address in word_mode.
3079
3080 2018-08-20 Chung-Lin Tang <cltang@codesourcery.com>
3081
3082 * targhooks.c (std_gimplify_va_arg_expr): Properly handle case of when
3083 TARGET_SPLIT_COMPLEX_ARG is defined.
3084
3085 2018-08-20 Bernd Edlinger <bernd.edlinger@hotmail.de>
3086
3087 * expr.c (store_field): Change gcc_assert to gcc_checking_assert.
3088
3089 2018-08-20 Bernd Edlinger <bernd.edlinger@hotmail.de>
3090
3091 PR target/86984
3092 * expr.c (expand_assignment): Assert that bitpos is positive.
3093 (store_field): Likewise
3094 (expand_expr_real_1): Make sure that bitpos is positive.
3095 * config/alpha/alpha.h (CONSTANT_ADDRESS_P): Avoid signed
3096 integer overflow.
3097
3098 2018-08-20 Nathan Sidwell <nathan@acm.org>
3099
3100 * Makefile.in (CPP_ID_DATA_H): Delete.
3101 (CPP_INTERNAL_H): Don't add it.
3102 (GTFILES): Replace CPP_ID_DATA_H with CPPLIB_H.
3103 * gengtype.c (open_base_files): Replace cpp-id-data.h with cpplib.h
3104
3105 2018-08-20 Richard Biener <rguenther@suse.de>
3106
3107 PR tree-optimization/78655
3108 * tree-vrp.c (extract_range_from_binary_expr_1): Make
3109 pointer + offset nonnull if either operand is nonnull work.
3110
3111 2018-08-20 Tom de Vries <tdevries@suse.de>
3112
3113 * dwarf2out.c (add_scalar_info): Don't add reference to existing die
3114 unless the referenced die describes the added property using
3115 DW_AT_location or DW_AT_const_value. Fall back to exprloc case.
3116 Otherwise, add a DW_AT_location to the referenced die.
3117
3118 2018-08-19 Uros Bizjak <ubizjak@gmail.com>
3119
3120 PR target/86994
3121 * config/i386/i386.c (ix86_rtx_costs) [case SET]: Check source for
3122 register_operand when calling ix86_set_reg_reg_cost.
3123 [case CONST_INT, case CONST, case LABEL_REF, case SYMBOL_REF]:
3124 Set *total to 0 for operands that satisfy x86_64_immediate_operand
3125 predicate and to 1 otherwise.
3126
3127 2018-08-18 Iain Sandoe <iain@sandoe.co.uk>
3128
3129 * config/darwin.c (darwin_override_options): If -gsplit-dwarf is set,
3130 emit a diagnostic that it is not supported and reset the option.
3131 * config/darwin.h (DRIVER_SELF_SPECS): Note that gsplit-dwarf is not
3132 supported and consume the option. (ASM_FINAL_SPEC): New.
3133
3134 2018-08-17 Segher Boessenkool <segher@kernel.crashing.org>
3135
3136 * doc/md.texi (Patterns): Use @ref instead of @xref in the middle of
3137 a sentence.
3138
3139 2018-08-17 Sandra Loosemore <sandra@codesourcery.com>
3140
3141 C-SKY port: Documentation
3142
3143 * doc/extend.texi (C-SKY Function Attributes): New section.
3144 * doc/invoke.texi (Option Summary): Add C-SKY options.
3145 (C-SKY Options): New section.
3146 * doc/md.texi (Machine Constraints): Document C-SKY constraints.
3147
3148 2018-08-17 Jojo <jijie_rong@c-sky.com>
3149 Huibin Wang <huibin_wang@c-sky.com>
3150 Sandra Loosemore <sandra@codesourcery.com>
3151 Chung-Lin Tang <cltang@codesourcery.com>
3152
3153 C-SKY port: Backend implementation
3154
3155 * config/csky/*: New.
3156 * common/config/csky/*: New.
3157
3158 2018-08-17 Jojo <jijie_rong@c-sky.com>
3159 Huibin Wang <huibin_wang@c-sky.com>
3160 Sandra Loosemore <sandra@codesourcery.com>
3161 Chung-Lin Tang <cltang@codesourcery.com>
3162 Andrew Jenner <andrew@codesourcery.com>
3163
3164 C-SKY port: Configury
3165
3166 * config.gcc (csky-*-*): New.
3167 * configure.ac: Add csky to targets for dwarf2 debug_line support.
3168 * configure: Regenerated.
3169
3170 2018-08-17 David Malcolm <dmalcolm@redhat.com>
3171
3172 * dump-context.h: Include "dumpfile.h".
3173 (dump_context::dump_printf_va): Convert final param from va_list
3174 to va_list *. Convert from ATTRIBUTE_PRINTF to
3175 ATTRIBUTE_GCC_DUMP_PRINTF.
3176 (dump_context::dump_printf_loc_va): Likewise.
3177 * dumpfile.c: Include "stringpool.h".
3178 (make_item_for_dump_printf_va): Delete.
3179 (make_item_for_dump_printf): Delete.
3180 (class dump_pretty_printer): New class.
3181 (dump_pretty_printer::dump_pretty_printer): New ctor.
3182 (dump_pretty_printer::emit_items): New member function.
3183 (dump_pretty_printer::emit_any_pending_textual_chunks): New member
3184 function.
3185 (dump_pretty_printer::emit_item): New member function.
3186 (dump_pretty_printer::stash_item): New member function.
3187 (dump_pretty_printer::format_decoder_cb): New member function.
3188 (dump_pretty_printer::decode_format): New member function.
3189 (dump_context::dump_printf_va): Reimplement in terms of
3190 dump_pretty_printer.
3191 (dump_context::dump_printf_loc_va): Convert final param from va_list
3192 to va_list *.
3193 (dump_context::begin_scope): Reimplement call to
3194 make_item_for_dump_printf.
3195 (dump_printf): Update for change to dump_printf_va.
3196 (dump_printf_loc): Likewise.
3197 (selftest::test_capture_of_dump_calls): Convert "stmt" from
3198 greturn * to gimple *. Add a test_decl. Add tests of dump_printf
3199 with %T, %E, and %G.
3200 * dumpfile.h (ATTRIBUTE_GCC_DUMP_PRINTF): New macro.
3201 (dump_printf): Replace ATTRIBUTE_PRINTF_2 with
3202 ATTRIBUTE_GCC_DUMP_PRINTF (2, 3).
3203 (dump_printf_loc): Replace ATTRIBUTE_PRINTF_3 with
3204 ATTRIBUTE_GCC_DUMP_PRINTF (3, 0).
3205 * tree-vect-data-refs.c (vect_lanes_optab_supported_p): Convert
3206 use of HOST_WIDE_INT_PRINT_DEC on unsigned HOST_WIDE_INT "count"
3207 within a dump_printf_loc call to "%wu".
3208 (vector_alignment_reachable_p): Merge two dump_printf[_loc] calls,
3209 converting a use of HOST_WIDE_INT_PRINT_DEC to "%wd". Add a
3210 missing space after "=".
3211 * tree-vect-loop.c (vect_analyze_loop_2) Within a dump_printf
3212 call, convert use of HOST_WIDE_INT_PRINT_DEC to "%wd".
3213 * tree-vect-slp.c (vect_slp_bb): Within a dump_printf_loc call,
3214 convert use of HOST_WIDE_INT_PRINT_UNSIGNED to "%wu".
3215 * tree-vectorizer.c (try_vectorize_loop_1): Likewise. Remove
3216 duplicate "vectorized" from message.
3217
3218 2018-08-17 Szabolcs Nagy <szabolcs.nagy@arm.com>
3219
3220 * config/arm/arm-builtins.c (arm_init_simd_builtin_types): Clear
3221 polyNxK_t element's TYPE_STRING_FLAG.
3222
3223 2018-08-17 Segher Boessenkool <segher@kernel.crashing.org>
3224
3225 * config/rs6000/rs6000.md (*cbranch, *creturn): Name these patterns
3226 (they were unnamed before). Fix comments.
3227
3228 2018-08-17 Nathan Sidwell <nathan@acm.org>
3229
3230 * cppbuiltin.c: Include "cpplib.h", not "cpp-id-data.h".
3231
3232 2018-08-17 Richard Biener <rguenther@suse.de>
3233
3234 PR tree-optimization/86841
3235 * wide-int-range.cc (wide_int_range_lshift): Use to_uhwi.
3236
3237 2018-08-17 Martin Liska <mliska@suse.cz>
3238
3239 * common.opt: Remove Warn, Init and Report for options with
3240 Ignore/Deprecated flag. Warning is done automatically for
3241 Deprecated flags.
3242 * config/i386/i386.opt: Likewise.
3243 * config/ia64/ia64.opt: Likewise.
3244 * config/rs6000/rs6000.opt: Likewise.
3245 * cppbuiltin.c (define_builtin_macros_for_compilation_flags):
3246 Remove usage of flag_check_pointer_bounds.
3247 * lto-wrapper.c (merge_and_complain): Do not handle
3248 OPT_fcheck_pointer_bounds.
3249 (append_compiler_options): Likewise.
3250 * opt-functions.awk: Do not handle Deprecated.
3251 * optc-gen.awk: Check that Var, Report and Init are not
3252 used for an option with Ignore/Deprecated flag.
3253 * opts-common.c (decode_cmdline_option): Do not report
3254 CL_ERR_DEPRECATED.
3255 (read_cmdline_option): Report warning for OPT_SPECIAL_deprecated
3256 options.
3257 * opts.h (struct cl_option): Remove cl_deprecated flag.
3258 (CL_ERR_DEPRECATED): Remove error enum value.
3259
3260 2018-08-17 Richard Biener <rguenther@suse.de>
3261
3262 PR middle-end/86505
3263 * tree-inline.c (copy_bb): When inlining __builtin_va_arg_pack_len ()
3264 across a va-arg-pack using call adjust its return value accordingly.
3265
3266 2018-08-16 Martin Sebor <msebor@redhat.com>
3267
3268 PR tree-optimization/86853
3269 * gimple-ssa-sprintf.c (struct format_result): Rename member.
3270 (struct fmtresult): Add member and initialize it in ctors.
3271 (format_character): Handle %C. Extend range to NUL. Set MAYFAIL.
3272 (format_string): Handle %S the same as %ls. Set MAYFAIL.
3273 (format_directive): Set POSUNDER4K when MAYFAIL is set.
3274 (parse_directive): Handle %C same as %c.
3275 (sprintf_dom_walker::compute_format_length): Adjust.
3276 (is_call_safe): Adjust.
3277
3278 2018-08-16 Bernd Edlinger <bernd.edlinger@hotmail.de>
3279
3280 * builtins.c (c_strlen): Add new parameter eltsize. Use it
3281 for determining how to count the elements.
3282 * builtins.h (c_strlen): Adjust prototype.
3283 * expr.c (string_constant): Add new parameter mem_size.
3284 Set *mem_size appropriately.
3285 * expr.h (string_constant): Adjust protoype.
3286 * gimple-fold.c (get_range_strlen): Add new parameter eltsize.
3287 * gimple-fold.h (get_range_strlen): Adjust prototype.
3288 * gimple-ssa-sprintf.c (get_string_length): Add new parameter eltsize.
3289 (format_string): Call get_string_length with eltsize.
3290
3291 2018-08-16 David Malcolm <dmalcolm@redhat.com>
3292
3293 * diagnostic.c (default_diagnostic_start_span_fn): Call pp_string
3294 to emit the span, rather than setting it as the prefix.
3295
3296 2018-08-16 David Malcolm <dmalcolm@redhat.com>
3297
3298 * diagnostic-show-locus.c (layout::start_annotation_line): Add
3299 "margin_char" parameter, defaulting to space. Use it in place
3300 of pp_space for the initial part of the margin.
3301 (layout::print_leading_fixits): Use '+' when filling the margin
3302 of line-insertion fix-it hints.
3303
3304 2018-08-16 Segher Boessenkool <segher@kernel.crashing.org>
3305
3306 * config/rs6000/rs6000.md (two unnamed define_insn and define_split):
3307 Delete.
3308
3309 2018-08-16 Segher Boessenkool <segher@kernel.crashing.org>
3310
3311 * config/rs6000/altivec.md: Don't set length attribute to the default
3312 value.
3313 * config/rs6000/darwin.md: Ditto.
3314 * config/rs6000/dfp.md: Ditto.
3315 * config/rs6000/htm.md: Ditto.
3316 * config/rs6000/rs6000.md: Ditto.
3317 * config/rs6000/sync.md: Ditto.
3318 * config/rs6000/vsx.md: Ditto.
3319
3320 2018-08-16 Segher Boessenkool <segher@kernel.crashing.org>
3321
3322 * config/rs6000/altivec.md: Don't set length attribute to the default
3323 value, for branch instructions.
3324 * config/rs6000/darwin.md: Ditto.
3325 * config/rs6000/rs6000.md: Ditto.
3326
3327 2018-08-16 Segher Boessenkool <segher@kernel.crashing.org>
3328
3329 * config/rs6000/rs6000.md (length): Always define as const_int 4.
3330 (unnamed conditional branch define_insn): Set length to 4 or 8
3331 depending on offset.
3332 (<bd>_<mode>): Similar, for alternative 0.
3333 (<bd>tf_<mode>): Ditto.
3334
3335 2018-08-16 Tamar Christina <tamar.christina@arm.com>
3336
3337 * expr.c (copy_blkmode_to_reg): Perform larger copies when safe.
3338
3339 2018-08-16 Matthew Malcomson <matthew.malcomson@arm.com>
3340
3341 * doc/rtl.texi: Replace old RTX class names with new names.
3342
3343
3344 2018-08-16 Vlad Lazar <vlad.lazar@arm.com>
3345
3346 * expmed.h (canonicalize_comparison): New declaration.
3347 * expmed.c (canonicalize_comparison, equivalent_cmp_code): New function.
3348 * expmed.c (emit_store_flag_1): Add call to canonicalize_comparison.
3349 * optabs.c (prepare_cmp_insn): Likewise.
3350 * rtl.h (unsigned_condition_p): New function which checks if a
3351 comparison operator is unsigned.
3352
3353 2018-08-16 Nathan Sidwell <nathan@acm.org>
3354
3355 * config/rs6000/rs6000-c.c (rs6000_macro_to_expend): Use cpp_macro_p.
3356 * config/powerpcspc/powerpcspe-c.c (rs6000_macro_to_expend): Likewise.
3357
3358 2018-08-16 Tamar Christina <tamar.christina@arm.com>
3359
3360 PR target/84711
3361 * config/arm/arm.c (arm_can_change_mode_class): Disallow subreg.
3362 * config/arm/neon.md (movv4hf, movv8hf): Refactored to..
3363 (mov<mov>): ..this and enable unconditionally.
3364
3365 2018-08-16 Tamar Christina <tamar.christina@arm.com>
3366
3367 * config/arm/neon.md (*neon_mov<mode>): Remove reg-to-reg alternative.
3368
3369 2018-08-16 Sam Tebbs <sam.tebbs@arm.com>
3370
3371 * config/aarch64/aarch64.opt (mlow-precision-recip-sqrt)
3372 (mlow-precision-sqrt, mlow-precision-div, mverbose-cost-dump): Replace
3373 "Common" with "Target".
3374
3375 2018-08-15 Uros Bizjak <ubizjak@gmail.com>
3376
3377 * config/i386/i386.opt (mmitigate-rop): Mark as deprecated.
3378 * doc/invoke.texi (mmitigate-rop): Remove.
3379 * config/i386/i386.c: Do not include "regrename.h".
3380 (ix86_rop_should_change_byte_p, reg_encoded_number)
3381 (ix86_get_modrm_for_rop, set_rop_modrm_reg_bits, ix86_mitigate_rop):
3382 Remove.
3383 (ix86_reorg): Remove call to ix86_mitigate_rop.
3384 * config/i386/i386.md (attr "modrm_class"): Remove.
3385 (cmp<mode>_ccno_1, mov<mode>_xor, movstrict<mode>_xor)
3386 (x86_mov<mode>cc_0_m1. x86_mov<mode>cc_0_m1_se)
3387 (x86_mov<mode>cc_0_m1_neg): Remove modrm_class attribute override.
3388
3389 2018-08-15 Will Schmidt <will_schmidt@vnet.ibm.com>
3390
3391 * config/rs6000/rs600.c (rs6000_gimple_fold_builtin): Add entries to
3392 allow folding of mergeh() and mergel() for the float and double types.
3393 (fold_mergehl_helper): Rework to handle building a permute tree
3394 for float vectors.
3395
3396 2018-08-15 Uros Bizjak <ubizjak@gmail.com>
3397
3398 * config/i386/i386.c (expand_vec_perm_movs): Enable V4SFmode
3399 for TARGET_SSE.
3400
3401 2018-08-15 David Malcolm <dmalcolm@redhat.com>
3402
3403 * common.opt (fdiagnostics-show-labels): New option.
3404 * diagnostic-show-locus.c (class layout_range): Add field
3405 "m_label".
3406 (class layout): Add field "m_show_labels_p".
3407 (layout_range::layout_range): Add param "label" and use it to
3408 initialize m_label.
3409 (make_range): Pass in NULL for new "label" param of layout_range's
3410 ctor.
3411 (layout::layout): Initialize m_show_labels_p.
3412 (layout::maybe_add_location_range): Pass in loc_range->m_label
3413 when constructing layout_range instances.
3414 (struct line_label): New struct.
3415 (layout::print_any_labels): New member function.
3416 (layout::print_line): Call it if label-printing is enabled.
3417 (selftest::test_one_liner_labels): New test.
3418 (selftest::test_diagnostic_show_locus_one_liner): Call it.
3419 * diagnostic.c (diagnostic_initialize): Initialize
3420 context->show_labels_p.
3421 * diagnostic.h (struct diagnostic_context): Add field
3422 "show_labels_p".
3423 * doc/invoke.texi (Diagnostic Message Formatting Options): Add
3424 -fno-diagnostics-show-labels.
3425 * dwarf2out.c (gen_producer_string): Add
3426 OPT_fdiagnostics_show_labels to the ignored options.
3427 * gcc-rich-location.c (gcc_rich_location::add_expr): Add "label"
3428 param.
3429 (gcc_rich_location::maybe_add_expr): Likewise.
3430 * gcc-rich-location.h (gcc_rich_location::gcc_rich_location): Add
3431 label" param, defaulting to NULL.
3432 (gcc_rich_location::add_expr): Add "label" param.
3433 (gcc_rich_location::maybe_add_expr): Likewise.
3434 (class text_range_label): New class.
3435 (class range_label_for_type_mismatch): New class.
3436 * gimple-ssa-sprintf.c (fmtwarn): Pass NULL for new label params
3437 of format_warning_va.
3438 (fmtwarn_n): Likewise for new params of format_warning_n_va.
3439 * lto-wrapper.c (merge_and_complain): Add
3440 OPT_fdiagnostics_show_labels to the "pick one setting" options.
3441 (append_compiler_options): Likewise to the dropped options.
3442 (append_diag_options): Likewise to the passed-on options.
3443 * opts.c (common_handle_option): Handle the new option.
3444 * selftest-diagnostic.c
3445 (test_diagnostic_context::test_diagnostic_context): Enable
3446 show_labels_p.
3447 * substring-locations.c: Include "gcc-rich-location.h".
3448 (format_warning_n_va): Add "fmt_label" and "param_label" params
3449 and use them as appropriate.
3450 (format_warning_va): Add "fmt_label" and "param_label" params,
3451 passing them on to format_warning_n_va.
3452 (format_warning_at_substring): Likewise.
3453 (format_warning_at_substring_n): Likewise.
3454 * substring-locations.h (format_warning_va): Add "fmt_label" and
3455 "param_label" params.
3456 (format_warning_n_va): Likewise.
3457 (format_warning_at_substring): Likewise.
3458 (format_warning_at_substring_n): Likewise.
3459 * toplev.c (general_init): Initialize global_dc->show_labels_p.
3460
3461 2018-08-15 Qing Zhao <qing.zhao@oracle.com>
3462
3463 PR testsuite/86519
3464 * builtins.c (expand_builtin_memcmp): Do not expand the call
3465 when overflow is detected.
3466
3467 2018-08-15 Martin Sebor <msebor@redhat.com>
3468
3469 PR tree-optimization/71625
3470 * config/aarch64/aarch64-builtins.c
3471 (aarch64_init_simd_builtin_types): Clear Poly8_t's TYPE_STRING_FLAG.
3472
3473 2018-08-15 Ilya Leoshkevich <iii@linux.ibm.com>
3474
3475 * config/s390/s390.c (s390_reorg): Remove loop.
3476
3477 2018-08-15 Iain Sandoe <iain@sandoe.co.uk>
3478
3479 * config/darwin.c
3480 (darwin_function_switched_text_sections): Delete.
3481 * gcc/config/darwin.h
3482 (TARGET_ASM_FUNCTION_SWITCHED_TEXT_SECTIONS): Likewise.
3483
3484 2018-08-15 Iain Sandoe <iain@sandoe.co.uk>
3485
3486 PR target/81685
3487 * config/darwin.h: (DEBUG_STR_OFFSETS_SECTION, DEBUG_LOCLISTS_SECTION,
3488 DEBUG_RNGLISTS_SECTION) new macros. (DEBUG_PUBNAMES_SECTION,
3489 DEBUG_PUBTYPES_SECTION) update to include GNU variant.
3490
3491 2018-08-15 Martin Liska <mliska@suse.cz>
3492
3493 PR tree-optimization/86925
3494 * predict.c (expr_expected_value_1): When taking
3495 later predictor, assign also probability.
3496 Use fold_build2_initializer_loc in order to fold
3497 the expression in -frounding-math.
3498
3499 2018-08-14 Allan Sandfeld Jensen <allan.jensen@qt.io>
3500
3501 * config/i386/i386.c (expand_vec_perm_movs): New method matching movs
3502 patterns.
3503 (expand_vec_perm_1): Try the new method.
3504
3505 2018-08-14 Ilya Leoshkevich <iii@linux.ibm.com>
3506
3507 PR target/86547
3508 * lra-lives.c (remove_some_program_points_and_update_live_ranges):
3509 Check whether lra_live_max_point is 0 before dividing.
3510
3511 2018-08-14 Martin Sebor <msebor@redhat.com>
3512
3513 PR tree-optimization/86650
3514 * tree-vrp.c (vrp_prop::check_array_ref): Print an inform message.
3515 (vrp_prop::check_mem_ref): Same.
3516
3517 2018-08-13 Liu Hao <lh_mouse@126.com>
3518
3519 * pretty-print.c (eat_esc_sequence): Swap the foreground and
3520 background colors if the COMMON_LVB_REVERSE_VIDEO flag is set,
3521 and clear it thereafter, as it only works for DBCS.
3522
3523 2018-08-13 Liu Hao <lh_mouse@126.com>
3524
3525 * pretty-print.c (mingw_ansi_fputs): Do not call _close() on the
3526 handle returned by _get_osf_handle().
3527
3528 2018-08-13 Will Schmidt <will_schmidt@vnet.ibm.com>
3529
3530 * gcc/config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add support
3531 for folding vec_perm.
3532
3533 2018-08-13 Will Schmidt <will_schmidt@vnet.ibm.com>
3534
3535 * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin):
3536 Add support for gimple-folding of vec_pack() and vec_unpack()
3537 intrinsics.
3538
3539 2018-08-13 Will Schmidt <will_schmidt@vnet.ibm.com>
3540
3541 * config/rs6000/rs6000.c (rs6000_builtin_valid_without_lhs): Add
3542 vec_xst variants to the list.
3543 (rs6000_gimple_fold_builtin): Add support for folding unaligned
3544 vector loads and stores.
3545
3546 2018-08-13 David Edelsohn <dje.gcc@gmail.com>
3547
3548 * config.gcc (rs6000-ibm-aix4.x): Delete.
3549 (rs6000-ibm-aix5.1): Delete.
3550 (rs6000-ibm-aix5.2): Delete.
3551 (rs6000-ibm-aix5.3): Delete.
3552 * config/rs6000/aix43.h: Delete.
3553 * config/rs6000/aix51.h: Delete.
3554 * config/rs6000/aix52.h: Delete.
3555 * config/rs6000/t-aix43: Delete.
3556
3557 2018-08-13 Ilya Leoshkevich <iii@linux.ibm.com>
3558
3559 * config/s390/s390.c (s390_decompose_constant_pool_ref):
3560 New function.
3561 (s390_decompose_address): Factor out constant pool ref
3562 decomposition.
3563
3564 2018-08-12 Chung-Ju Wu <jasonwucj@gmail.com>
3565
3566 * config/nds32/nds32-predicates.c
3567 (nds32_can_use_bclr_p): Change return type as bool.
3568 (nds32_can_use_bset_p): Ditto.
3569 (nds32_can_use_btgl_p): Ditto.
3570 (nds32_can_use_bitci_p): Ditto.
3571 * config/nds32/nds32-protos.h
3572 (nds32_can_use_bclr_p): Change declaration.
3573 (nds32_can_use_bset_p): Ditto.
3574 (nds32_can_use_btgl_p): Ditto.
3575 (nds32_can_use_bitci_p): Ditto.
3576
3577 2018-08-12 Chung-Ju Wu <jasonwucj@gmail.com>
3578
3579 * config/nds32/nds32.c (nds32_expand_prologue, nds32_expand_epilogue):
3580 Support -msched-prolog-epilog option.
3581 * config/nds32/nds32.opt (msched-prolog-epilog): New option.
3582
3583 2018-08-12 Chung-Ju Wu <jasonwucj@gmail.com>
3584
3585 * common/config/nds32/nds32-common.c
3586 (nds32_option_optimization_table): Enalbe -malways-align.
3587
3588 2018-08-12 Chung-Ju Wu <jasonwucj@gmail.com>
3589
3590 * config.gcc (nds32*): Add nds32_isr.h and nds32_init.inc in
3591 extra_headers.
3592 * common/config/nds32/nds32-common.c (nds32_handle_option): Handle
3593 OPT_misr_secure_ case.
3594 * config/nds32/nds32-isr.c: Implementation of backward compatibility.
3595 * config/nds32/nds32-protos.h (nds32_isr_function_critical_p): New.
3596 * config/nds32/nds32.c (nds32_attribute_table): Add critical and
3597 secure attribute.
3598 * config/nds32/nds32.h (nds32_isr_nested_type): Add NDS32_CRITICAL.
3599 (nds32_isr_info): New field security_level.
3600 (TARGET_ISR_VECTOR_SIZE_4_BYTE): New macro.
3601 * config/nds32/nds32.md (return_internal): Consider critical attribute.
3602 * config/nds32/nds32.opt (misr-secure): New option.
3603 * config/nds32/nds32_init.inc: New file.
3604 * config/nds32/nds32_isr.h: New file.
3605
3606 2018-08-11 John David Anglin <danglin@gcc.gnu.org>
3607
3608 * config/pa/pa.md (UNSPEC_MEMORY_BARRIER): New unspec enum.
3609 Update comment for atomic instructions.
3610 (atomic_storeqi, atomic_storehi, atomic_storesi, atomic_storesf,
3611 atomic_loaddf, atomic_loaddf_1, atomic_storedf, atomic_storedf_1):
3612 Remove.
3613 (atomic_loaddi): Revise fence expansion to only emit fence prior to
3614 load for __ATOMIC_SEQ_CST model.
3615 (atomic_loaddi_1): Remove float register target.
3616 (atomic_storedi): Handle CONST_INT values.
3617 (atomic_storedi_1): Remove float register source. Add special case
3618 for zero value.
3619 (memory_barrier): New expander and insn.
3620
3621 2018-08-11 Jakub Jelinek <jakub@redhat.com>
3622
3623 PR tree-optimization/86835
3624 * tree-ssa-math-opts.c (insert_reciprocals): Even when inserting
3625 new_stmt after def_gsi, make sure to insert new_square_stmt after
3626 that stmt, not 2 stmts before it.
3627
3628 2018-08-10 Alexander Monakov <amonakov@ispras.ru>
3629
3630 PR target/82418
3631 * config/i386/i386.md (<s>mul<mode>3_highpart): Use DWIH mode iterator
3632 instead of SWI48.
3633
3634 2018-08-10 Martin Liska <mliska@suse.cz>
3635
3636 PR target/83610
3637 * builtin-types.def (BT_FN_LONG_LONG_LONG_DOUBLE): Add new
3638 function type.
3639 * builtins.c (expand_builtin_expect_with_probability):
3640 New function.
3641 (expand_builtin_expect_with_probability): New function.
3642 (build_builtin_expect_predicate): Add new argumnet probability
3643 for BUILT_IN_EXPECT_WITH_PROBABILITY.
3644 (fold_builtin_expect):
3645 (fold_builtin_2):
3646 (fold_builtin_3):
3647 * builtins.def (BUILT_IN_EXPECT_WITH_PROBABILITY):
3648 * builtins.h (fold_builtin_expect): Set new argument.
3649 * doc/extend.texi: Document __builtin_expect_with_probability.
3650 * doc/invoke.texi: Likewise.
3651 * gimple-fold.c (gimple_fold_call): Pass new argument.
3652 * ipa-fnsummary.c (find_foldable_builtin_expect): Handle
3653 also BUILT_IN_EXPECT_WITH_PROBABILITY.
3654 * predict.c (get_predictor_value): New function.
3655 (expr_expected_value): Add new argument probability. Assume
3656 that predictor and probability are always non-null.
3657 (expr_expected_value_1): Likewise. For __builtin_expect and
3658 __builtin_expect_with_probability set probability. Handle
3659 combination in binary expressions.
3660 (tree_predict_by_opcode): Simplify code by simply calling
3661 get_predictor_value.
3662 (pass_strip_predict_hints::execute): Add handling of
3663 BUILT_IN_EXPECT_WITH_PROBABILITY.
3664 * predict.def (PRED_BUILTIN_EXPECT_WITH_PROBABILITY): Add
3665 new predictor.
3666 * tree.h (DECL_BUILT_IN_P): New function.
3667
3668 2018-08-10 Martin Liska <mliska@suse.cz>
3669
3670 PR tree-optimization/85799
3671 * passes.def: Add argument for pass_strip_predict_hints.
3672 * predict.c (class pass_strip_predict_hints): Add new argument
3673 early_p.
3674 (strip_predictor_early): New function.
3675 (pass_strip_predict_hints::execute): Call the function to
3676 strip predictors.
3677 (strip_predict_hints): New function.
3678 * predict.def: Fix comment.
3679
3680 2018-08-10 Thomas Preud'homme <thomas.preudhomme@linaro.org>
3681
3682 * Makefile.in: Clarify which tm.texi to copy over to assert the
3683 right to grant a GFDL license for all.
3684
3685 2018-08-09 Jeff Law <law@redhat.com>
3686
3687 * config/m68k/m68k.c (m68k_adjust_decorated_operand): Remove
3688 unused variable.
3689
3690 2018-08-09 Andreas Schwab <schwab@linux-m68k.org>
3691
3692 * config/m68k/m68k-protos.h (m68k_final_prescan_insn): Remove
3693 prototype.
3694
3695 2018-08-09 Richard Sandiford <richard.sandiford@arm.com>
3696
3697 * tree-vect-loop.c (vectorizable_reduction): Allow inner-loop
3698 reductions for variable-length vectors.
3699
3700 2018-08-09 David Malcolm <dmalcolm@redhat.com>
3701
3702 PR other/84889
3703 * common.opt (fdiagnostics-show-line-numbers): New option.
3704 * diagnostic-show-locus.c (class layout): Add fields
3705 "m_show_line_numbers_p" and "m_linenum_width";
3706 (num_digits): New function.
3707 (test_num_digits): New function.
3708 (layout::layout): Initialize new fields. Update m_x_offset
3709 logic to handle any left margin.
3710 (layout::print_source_line): Print line number when requested.
3711 (layout::start_annotation_line): New member function.
3712 (layout::print_annotation_line): Call it.
3713 (layout::print_leading_fixits): Likewise.
3714 (layout::print_trailing_fixits): Likewise. Update calls to
3715 move_to_column for new parameter.
3716 (layout::get_x_bound_for_row): Add "add_left_margin" param and use
3717 it to potentially call start_annotation_line.
3718 (layout::show_ruler): Call start_annotation_line.
3719 (selftest::test_line_numbers_multiline_range): New selftest.
3720 (selftest::diagnostic_show_locus_c_tests): Call test_num_digits
3721 and selftest::test_line_numbers_multiline_range.
3722 * diagnostic.c (diagnostic_initialize): Initialize
3723 show_line_numbers_p.
3724 * diagnostic.h (struct diagnostic_context): Add field
3725 "show_line_numbers_p".
3726 * doc/invoke.texi (Diagnostic Message Formatting Options): Add
3727 -fno-diagnostics-show-line-numbers.
3728 * dwarf2out.c (gen_producer_string): Add
3729 OPT_fdiagnostics_show_line_numbers to the ignored options.
3730 * lto-wrapper.c (merge_and_complain): Likewise to the "pick
3731 one setting" options.
3732 (append_compiler_options): Likewise to the dropped options.
3733 (append_diag_options): Likewise to the passed-on options.
3734 * opts.c (common_handle_option): Handle the new option.
3735 * toplev.c (general_init): Set up global_dc->show_line_numbers_p.
3736
3737 2018-08-09 Kelvin Nilsen <kelvin@gcc.gnu.org>
3738
3739 * doc/extend.texi (PowerPC AltiVec Built-in Functions Available on
3740 ISA 2.07): Correct spelling of bcdsub to be __builtin_bcdsub. Add
3741 third argument of type "const signed char" to descriptions of
3742 __builtin_bcdadd, __builtin_bcdadd_lt, __builtin_bcdadd_eq,
3743 __builtin_bcdadd_gt, __builtin_bcdadd_ov, __builtin_bcdsub,
3744 __builtin_bcdsub_lt, __builtin_bcdsub_eq, __builtin_bcdsub_gt,
3745 __builtin_bcdsub_ov functions.
3746
3747 2018-08-09 Richard Sandiford <richard.sandiford@arm.com>
3748
3749 PR tree-optimization/86858
3750 * tree-vect-loop.c (vect_is_simple_reduction): Restore
3751 flow_bb_inside_loop_p calls.
3752
3753 2018-08-09 Richard Sandiford <richard.sandiford@arm.com>
3754
3755 PR tree-optimization/86871
3756 * tree-vect-stmts.c (vect_transform_stmt): Use gimple_get_lhs
3757 instead of gimple_assign_lhs.
3758
3759 2018-08-09 Richard Earnshaw <rearnsha@arm.com>
3760
3761 PR target/86887
3762 * config/aarch64/aarch64.md (add<mode>3_carryinC_zero): Add missing
3763 register constraint to operand 0.
3764 (add<mode>3_carryinC): Likewise.
3765 (add<mode>3_carryinV_zero, add<mode>3_carryinV): Likewise.
3766
3767 2018-08-09 Martin Liska <mliska@suse.cz>
3768
3769 PR c/86895
3770 * common.opt: Remove extra line.
3771
3772 2018-08-09 Martin Liska <mliska@suse.cz>
3773
3774 * params.def (PARAM_ALIGN_LOOP_ITERATIONS): Remove double dots
3775 at the end of a line, make first letter capital and end up
3776 a sentence with a dot.
3777 (PARAM_LOOP_INTERCHANGE_STRIDE_RATIO): Likewise.
3778 (PARAM_LOOP_BLOCK_TILE_SIZE): Likewise.
3779 (PARAM_GRAPHITE_MAX_NB_SCOP_PARAMS): Likewise.
3780 (PARAM_GRAPHITE_MAX_ARRAYS_PER_SCOP): Likewise.
3781 (PARAM_MAX_ISL_OPERATIONS): Likewise.
3782 (PARAM_GRAPHITE_ALLOW_CODEGEN_ERRORS): Likewise.
3783 (PARAM_PROFILE_FUNC_INTERNAL_ID): Likewise.
3784 (PARAM_INDIR_CALL_TOPN_PROFILE): Likewise.
3785 (PARAM_SLP_MAX_INSNS_IN_BB): Likewise.
3786 (PARAM_IPA_CP_EVAL_THRESHOLD): Likewise.
3787 (PARAM_IPA_CP_RECURSION_PENALTY): Likewise.
3788 (PARAM_IPA_CP_SINGLE_CALL_PENALTY): Likewise.
3789 (PARAM_IPA_CP_LOOP_HINT_BONUS): Likewise.
3790 (PARAM_IPA_CP_ARRAY_INDEX_HINT_BONUS): Likewise.
3791 (PARAM_TREE_REASSOC_WIDTH): Likewise.
3792 (PARAM_HSA_GEN_DEBUG_STORES): Likewise.
3793 (PARAM_MAX_SPECULATIVE_DEVIRT_MAYDEFS): Likewise.
3794 (PARAM_MAX_VRP_SWITCH_ASSERTIONS): Likewise.
3795
3796 2018-08-09 Andreas Krebbel <krebbel@linux.ibm.com>
3797
3798 PR target/84332
3799 * config/s390/s390.c (s390_option_override_internal): Reduce the
3800 stack-clash-protection-probe-interval param if it would be too big
3801 for z900.
3802
3803 2018-08-08 Andreas Schwab <schwab@linux-m68k.org>
3804
3805 PR target/46179
3806 * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Don't define.
3807 * config/m68k/m68k.c (handle_move_double): Don't call
3808 m68k_final_prescan_insn.
3809 (m68k_adjust_decorated_operand): Renamed from
3810 m68k_final_prescan_insn, remove first and third operand and
3811 simplify.
3812 (print_operand): Call it.
3813 (print_operand_address): Call it.
3814
3815 2018-08-08 Nathan Sidwell <nathan@acm.org>
3816
3817 * diagnostic.c (diagnostic_report_current_module): Use
3818 linemap_included_from & linemap_included_from_linemap.
3819
3820 2018-08-08 Hongbo Zhang <hongbo.zhang@linaro.org>
3821
3822 * config/aarch64/aarch64-cores.def: Add phecda core.
3823 * config/aarch64/aarch64-tune.md: Regenerate.
3824 * doc/invoke.texi: Add phecda core.
3825
3826 2018-08-08 Andreas Krebbel <krebbel@linux.ibm.com>
3827
3828 PR target/85295
3829 * config/s390/constraints.md ("NxHD0", "NxSD0"): New constraint
3830 definitions.
3831 * config/s390/s390.md ("movti"): Add more alternatives for
3832 constant to GPR copies.
3833
3834 2018-08-08 Andreas Krebbel <krebbel@linux.ibm.com>
3835
3836 * config/s390/s390.c: Fix whitespace damage throughout the file.
3837 * config/s390/s390.h: Likewise.
3838 * config/s390/tpf.h: Likewise.
3839
3840 2018-08-08 Ilya Leoshkevich <iii@linux.ibm.com>
3841
3842 * config/s390/s390.c (s390_loadrelative_operand_p):
3843 Remove TARGET_CPU_ZARCH usages.
3844 (s390_rtx_costs): Likewise.
3845 (s390_legitimate_constant_p): Likewise.
3846 (s390_cannot_force_const_mem): Likewise.
3847 (legitimate_reload_constant_p): Likewise.
3848 (s390_preferred_reload_class): Likewise.
3849 (legitimize_pic_address): Likewise.
3850 (legitimize_tls_address): Likewise.
3851 (s390_split_branches): Removed.
3852 (s390_add_execute): Removed.
3853 (s390_dump_pool): Remove TARGET_CPU_ZARCH usages.
3854 (s390_mainpool_start): Likewise.
3855 (s390_mainpool_finish): Likewise.
3856 (s390_mainpool_cancel): Removed.
3857 (s390_chunkify_start): Remove TARGET_CPU_ZARCH usages.
3858 (s390_chunkify_cancel): Likewise.
3859 (s390_return_addr_rtx): Likewise.
3860 (s390_register_info): Remove split_branches_pending_p uages.
3861 (s390_optimize_register_info): Likewise.
3862 (s390_init_frame_layout): Remove TARGET_CPU_ZARCH and
3863 split_branches_pending_p usages.
3864 (s390_can_eliminate): Remove TARGET_CPU_ZARCH usages.
3865 (s390_load_got): Likewise.
3866 (s390_expand_split_stack_prologue): Likewise.
3867 (output_asm_nops): Likewise.
3868 (s390_function_profiler): Likewise.
3869 (s390_emit_call): Likewise.
3870 (s390_conditional_register_usage): Likewise.
3871 (s390_optimize_prologue): Likewise.
3872 (s390_reorg): Remove TARGET_CPU_ZARCH and
3873 split_branches_pending_p usages.
3874 (s390_option_override_internal): Remove TARGET_CPU_ZARCH
3875 usages.
3876 (s390_output_indirect_thunk_function): Likewise.
3877 * config/s390/s390.h (TARGET_CPU_ZARCH): Removed.
3878 (TARGET_CPU_ZARCH_P): Removed.
3879 (struct machine_function): Remove split_branches_pending_p.
3880 * config/s390/s390.md: Remove TARGET_CPU_ZARCH usages.
3881
3882 2018-08-08 Ilya Leoshkevich <iii@linux.ibm.com>
3883
3884 * common/config/s390/s390-common.c (processor_flags_table):
3885 Remove flags.
3886 * config.gcc: Remove with_arch/with_tune support.
3887 * config/s390/2064.md: Remove cpu attribute comparisons.
3888 * config/s390/driver-native.c (s390_host_detect_local_cpu):
3889 Remove MTN.
3890 * config/s390/linux.h (ASM_SPEC):
3891 Remove -march support.
3892 * config/s390/s390-c.c (s390_cpu_cpp_builtins_internal):
3893 Use a table to get an arch level.
3894 * config/s390/s390-opts.h (enum processor_type):
3895 Remove enum values.
3896 * config/s390/s390.c
3897 (processor_table): Remove entries, add arch_level values.
3898 (s390_issue_rate): Remove cases.
3899 (s390_option_override): Adjust
3900 s390_option_override_internal() call.
3901 (s390_option_override_internal): Remove deprecation warning.
3902 (s390_valid_target_attribute_tree): Adjust
3903 s390_option_override_internal() call.
3904 * config/s390/s390.h (struct s390_processor):
3905 Share with s390-c.c, add arch_level field.
3906 * config/s390/s390.md:
3907 Remove occurrences in cpu attribute.
3908 * config/s390/s390.opt: Remove -march/-mtune support.
3909 * config/s390/tpf.h (ASM_SPEC): Remove -march support.
3910 * doc/invoke.texi: Remove deprecation warning.
3911
3912 2018-08-08 Luis Machado <luis.machado@linaro.org>
3913
3914 * config/aarch64/aarch64.c (qdf24xx_vector_cost): New static
3915 global.
3916 (qdf24xx_tunings): Set vector cost structure to
3917 qdf24xx_vector_cost.
3918
3919 * config/aarch64/aarch64.c (qdf24xx_addrcost_table)
3920 <register_sextend>: Set to 3.
3921
3922 2018-08-07 Richard Sandiford <richard.sandiford@arm.com>
3923
3924 PR target/86838
3925 * config/aarch64/iterators.md (FRECP, frecp_suffix): Delete.
3926 * config/aarch64/aarch64-simd.md
3927 (aarch64_frecp<FRECP:frecp_suffix><mode>): Fold FRECPE into...
3928 (@aarch64_frecpe<mode>): ...here and the move FRECPX to...
3929 (aarch64_frecpx<mode>): ...this new pattern.
3930 * config/aarch64/aarch64-simd-builtins.def: Remove comment
3931 about aarch64_frecp<FRECP:frecp_suffix><mode>.
3932
3933 2018-08-07 Martin Liska <mliska@suse.cz>
3934
3935 PR middle-end/83023
3936 * predict.c (expr_expected_value_1): Handle DECL_IS_MALLOC,
3937 BUILT_IN_REALLOC and DECL_IS_OPERATOR_NEW.
3938 * predict.def (PRED_MALLOC_NONNULL): New predictor.
3939 * doc/extend.texi: Document that malloc attribute adds
3940 hit to compiler.
3941
3942 2018-08-06 John David Anglin <danglin@gcc.gnu.org>
3943
3944 PR target/86785
3945 * config/pa/pa.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
3946 Define to speculation_safe_value_not_needed.
3947
3948 2018-08-06 Jeff Law <law@redhat.com>
3949
3950 * tree-ssa-dom.c (dom_opt_dom_walker::optimize_stmt): Pass down
3951 the vr_values instance to cprop_into_stmt.
3952 (cprop_into_stmt): Pass vr_values instance down to cprop_operand.
3953 (cprop_operand): Also query EVRP to determine if OP is a constant.
3954
3955 2018-08-06 Nathan Sidwell <nathan@acm.org>
3956
3957 * diagnostic.c (diagnostic_report_current_module): Reroll
3958 included-at loop. Translate text.
3959
3960 2018-08-06 David Malcolm <dmalcolm@redhat.com>
3961
3962 * function-tests.c (selftest::test_expansion_to_rtl): Call
3963 free_after_compilation.
3964
3965 2018-08-06 Alan Hayward <alan.hayward@arm.com>
3966
3967 * config/aarch64/aarch64.md: Add clobber highs to tls_desc.
3968
3969 2018-08-06 Andreas Krebbel <krebbel@linux.ibm.com>
3970
3971 * config/s390/s390.c (s390_loop_unroll_adjust): Prevent small
3972 loops with memory block operations from getting unrolled.
3973
3974 2018-08-06 Ulrich Weigand <uweigand@de.ibm.com>
3975
3976 PR target/86807
3977 * config/spu/spu.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
3978 Define to speculation_safe_value_not_needed.
3979
3980 2018-08-06 Jeff Law <law@redhat.com>
3981
3982 * reload1.c (forget_old_reloads_1): Adjust CLOBBER_HIGH
3983 assert.
3984
3985 2018-08-06 Jozef Lawrynowicz <jozef.l@mittosystems.com>
3986
3987 PR target/86662
3988 * gcc/tree.c (build_common_tree_nodes): Initialize integer_types array
3989 with all enabled __intN types.
3990
3991 * gcc/testsuite/gcc.target/msp430/pr86662.c: New test.
3992
3993 2018-08-06 Alan Hayward <alan.hayward@arm.com>
3994
3995 * alias.c (record_set): Check for clobber high.
3996 * cfgexpand.c (expand_gimple_stmt): Likewise.
3997 * combine-stack-adj.c (single_set_for_csa): Likewise.
3998 * combine.c (find_single_use_1): Likewise.
3999 (set_nonzero_bits_and_sign_copies): Likewise.
4000 (get_combine_src_dest): Likewise.
4001 (is_parallel_of_n_reg_sets): Likewise.
4002 (try_combine): Likewise.
4003 (record_dead_and_set_regs_1): Likewise.
4004 (reg_dead_at_p_1): Likewise.
4005 (reg_dead_at_p): Likewise.
4006 * dce.c (deletable_insn_p): Likewise.
4007 (mark_nonreg_stores_1): Likewise.
4008 (mark_nonreg_stores_2): Likewise.
4009 * df-scan.c (df_find_hard_reg_defs): Likewise.
4010 (df_uses_record): Likewise.
4011 (df_get_call_refs): Likewise.
4012 * dwarf2out.c (mem_loc_descriptor): Likewise.
4013 * haifa-sched.c (haifa_classify_rtx): Likewise.
4014 * ira-build.c (create_insn_allocnos): Likewise.
4015 * ira-costs.c (scan_one_insn): Likewise.
4016 * ira.c (equiv_init_movable_p): Likewise.
4017 (rtx_moveable_p): Likewise.
4018 (interesting_dest_for_shprep): Likewise.
4019 * jump.c (mark_jump_label_1): Likewise.
4020 * postreload-gcse.c (record_opr_changes): Likewise.
4021 * postreload.c (reload_cse_simplify): Likewise.
4022 (struct reg_use): Add source expr.
4023 (reload_combine): Check for clobber high.
4024 (reload_combine_note_use): Likewise.
4025 (reload_cse_move2add): Likewise.
4026 (move2add_note_store): Likewise.
4027 * print-rtl.c (print_pattern): Likewise.
4028 * recog.c (decode_asm_operands): Likewise.
4029 (store_data_bypass_p): Likewise.
4030 (if_test_bypass_p): Likewise.
4031 * regcprop.c (kill_clobbered_value): Likewise.
4032 (kill_set_value): Likewise.
4033 * reginfo.c (reg_scan_mark_refs): Likewise.
4034 * reload1.c (maybe_fix_stack_asms): Likewise.
4035 (eliminate_regs_1): Likewise.
4036 (elimination_effects): Likewise.
4037 (mark_not_eliminable): Likewise.
4038 (scan_paradoxical_subregs): Likewise.
4039 (forget_old_reloads_1): Likewise.
4040 * reorg.c (find_end_label): Likewise.
4041 (try_merge_delay_insns): Likewise.
4042 (redundant_insn): Likewise.
4043 (own_thread_p): Likewise.
4044 (fill_simple_delay_slots): Likewise.
4045 (fill_slots_from_thread): Likewise.
4046 (dbr_schedule): Likewise.
4047 * resource.c (update_live_status): Likewise.
4048 (mark_referenced_resources): Likewise.
4049 (mark_set_resources): Likewise.
4050 * rtl.c (copy_rtx): Likewise.
4051 * rtlanal.c (reg_referenced_p): Likewise.
4052 (single_set_2): Likewise.
4053 (noop_move_p): Likewise.
4054 (note_stores): Likewise.
4055 * sched-deps.c (sched_analyze_reg): Likewise.
4056 (sched_analyze_insn): Likewise.
4057
4058 2018-08-06 Alan Hayward <alan.hayward@arm.com>
4059
4060 * cse.c (invalidate_reg): New function extracted from...
4061 (invalidate): ...here.
4062 (canonicalize_insn): Check for clobber high.
4063 (invalidate_from_clobbers): invalidate clobber highs.
4064 (invalidate_from_sets_and_clobbers): Likewise.
4065 (count_reg_usage): Check for clobber high.
4066 (insn_live_p): Likewise.
4067 * cselib.c (cselib_expand_value_rtx_1):Likewise.
4068 (cselib_invalidate_regno): Check for clobber in setter.
4069 (cselib_invalidate_rtx): Pass through setter.
4070 (cselib_invalidate_rtx_note_stores):
4071 (cselib_process_insn): Check for clobber high.
4072 * cselib.h (cselib_invalidate_rtx): Add operand.
4073
4074 2018-08-06 Alan Hayward <alan.hayward@arm.com>
4075
4076 * lra-eliminations.c (lra_eliminate_regs_1): Check for clobber high.
4077 (mark_not_eliminable): Likewise.
4078 * lra-int.h (struct lra_insn_reg): Add clobber high marker.
4079 * lra-lives.c (process_bb_lives): Check for clobber high.
4080 * lra.c (new_insn_reg): Remember clobber highs.
4081 (collect_non_operand_hard_regs): Check for clobber high.
4082 (lra_set_insn_recog_data): Likewise.
4083 (add_regs_to_insn_regno_info): Likewise.
4084 (lra_update_insn_regno_info): Likewise.
4085
4086 2018-08-06 Alan Hayward <alan.hayward@arm.com>
4087
4088 * rtl.h (reg_is_clobbered_by_clobber_high): Add declarations.
4089 * rtlanal.c (reg_is_clobbered_by_clobber_high): Add function.
4090
4091 2018-08-06 Alan Hayward <alan.hayward@arm.com>
4092
4093 * emit-rtl.c (verify_rtx_sharing): Check for CLOBBER_HIGH.
4094 (copy_insn_1): Likewise.
4095 (gen_hard_reg_clobber_high): New gen function.
4096 * genconfig.c (walk_insn_part): Check for CLOBBER_HIGH.
4097 * genemit.c (gen_exp): Likewise.
4098 (gen_emit_seq): Pass through info.
4099 (gen_insn): Check for CLOBBER_HIGH.
4100 (gen_expand): Pass through info.
4101 (gen_split): Likewise.
4102 (output_add_clobbers): Likewise.
4103 * genrecog.c (validate_pattern): Check for CLOBBER_HIGH.
4104 (remove_clobbers): Likewise.
4105 * rtl.h (gen_hard_reg_clobber_high): New declaration.
4106
4107 2018-08-06 Alan Hayward <alan.hayward@arm.com>
4108
4109 * doc/rtl.texi (clobber_high): Add.
4110 (parallel): Add in clobber high
4111 * rtl.c (rtl_check_failed_code3): Add function.
4112 * rtl.def (CLOBBER_HIGH): Add expression.
4113 * rtl.h (RTL_CHECKC3): Add macro.
4114 (rtl_check_failed_code3): Add declaration.
4115 (XC3EXP): Add macro.
4116
4117 2018-08-05 H.J. Lu <hongjiu.lu@intel.com>
4118
4119 PR target/86386
4120 * config/i386/i386.c (ix86_finalize_stack_frame_flags): Set
4121 cfun->machine->max_used_stack_alignment if needed.
4122
4123 2018-08-04 Martin Sebor <msebor@redhat.com>
4124
4125 PR tree-optimization/86571
4126 * gimple-ssa-sprintf.c (format_floating): Extend upper bound of
4127 NaN output to 4.
4128
4129 2018-08-03 Sandra Loosemore <sandra@codesourcery.com>
4130
4131 PR target/86799
4132 * config/nios2/nios2.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
4133 Define.
4134
4135 2018-08-03 Jeff Law <law@redhat.com>
4136
4137 PR target/86795
4138 * config/mn10300/mn10300.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
4139 Define to speculation_safe_value_not_needed.
4140
4141 2018-08-03 David Malcolm <dmalcolm@redhat.com>
4142
4143 * doc/gcov.texi (-x): Remove duplicate "to".
4144 * doc/invoke.texi (-Wnoexcept-type): Remove duplicate "calls".
4145 (-Wif-not-aligned): Remove duplicate "is".
4146 (-flto): Remove duplicate "the".
4147 (MicroBlaze Options): In examples of "-mcpu=cpu-type", remove
4148 duplicate "v5.00.b".
4149 (MSP430 Options): Remove duplicate "and" from the description
4150 of "-mgprel-sec=regexp".
4151 (x86 Options): Remove duplicate copies of "vmldLog102" and
4152 vmlsLog104 from description of "-mveclibabi=type".
4153
4154 2018-08-03 Richard Sandiford <richard.sandiford@arm.com>
4155
4156 * internal-fn.h (first_commutative_argument): Declare.
4157 * internal-fn.c (first_commutative_argument): New function.
4158 * tree-vect-slp.c (vect_get_and_check_slp_defs): Remove extra
4159 restrictions for pattern statements. Use first_commutative_argument
4160 to look for commutative operands in calls to internal functions.
4161
4162 2018-08-03 Aldy Hernandez <aldyh@redhat.com>
4163
4164 * Makefile.in (wide-int-range.o): New.
4165 * tree-vrp.c: Move all the wide_int_* functions to...
4166 * wide-int-range.cc: ...here.
4167 * tree-vrp.h: Move all the wide_int_* prototypes to...
4168 * wide-int-range.h: ...here.
4169
4170 2018-08-03 Tom de Vries <tdevries@suse.de>
4171
4172 * common/config/nvptx/nvptx-common.c (nvptx_except_unwind_info): Return
4173 UI_NONE.
4174 * config/nvptx/nvptx.c (TARGET_ASM_BYTE_OP): Remove define.
4175 * except.c (output_function_exception_table): Do early exit if
4176 targetm_common.except_unwind_info (&global_options) == UI_NONE.
4177
4178 2018-08-03 Martin Liska <mliska@suse.cz>
4179
4180 * predict.c (dump_prediction): Change to 2 digits
4181 in fraction part.
4182
4183 2018-08-03 Siddhesh Poyarekar <siddhesh@sourceware.org>
4184
4185 * config/aarch64/falkor.md (falkor_am_1_vxvy_vxvy): Move
4186 neon_dup_q to...
4187 (falkor_am_1_gtov_gtov): ... a new insn reservation.
4188
4189 2018-07-19 Ilya Leoshkevich <iii@linux.ibm.com>
4190
4191 * config/nds32/nds32.c (nds32_hard_regno_mode_ok): Replace > with >=.
4192 * df-problems.c (df_remove_dead_eq_notes): Replace > with >=.
4193 * dwarf2out.c (mem_loc_descriptor): Replace > with >=.
4194 * lra-constraints.c (spill_hard_reg_in_range): Replace <= with <.
4195 * lra-remat.c (call_used_input_regno_present_p): Replace <= with <.
4196
4197 2018-08-02 David Malcolm <dmalcolm@redhat.com>
4198
4199 * diagnostic-show-locus.c (diagnostic_show_locus): Use
4200 pp_take_prefix when saving the existing prefix.
4201 * diagnostic.c (diagnostic_append_note): Likewise.
4202 * langhooks.c (lhd_print_error_function): Likewise.
4203 * pretty-print.c (pp_set_prefix): Drop the "const" from "prefix"
4204 param's type. Free the existing prefix.
4205 (pp_take_prefix): New function.
4206 (pretty_printer::pretty_printer): Drop the prefix parameter.
4207 Rename the length parameter to match the comment.
4208 (pretty_printer::~pretty_printer): Free the prefix.
4209 * pretty-print.h (pretty_printer::pretty_printer): Drop the prefix
4210 parameter.
4211 (struct pretty_printer): Drop the "const" from "prefix" field's
4212 type and clarify memory management.
4213 (pp_set_prefix): Drop the "const" from the 2nd param.
4214 (pp_take_prefix): New decl.
4215
4216 2018-08-02 Aaron Sawdey <acsawdey@linux.ibm.com>
4217
4218 * config/rs6000/rs6000-string.c (select_block_compare_mode): Move test
4219 for word_mode_ok here instead of passing as argument.
4220 (expand_block_compare): Change select_block_compare_mode() call.
4221 (expand_strncmp_gpr_sequence): New function.
4222 (expand_strn_compare): Make use of expand_strncmp_gpr_sequence.
4223
4224 2018-08-02 Jeff Law <law@redhat.com>
4225
4226 PR target/86790
4227 * config/m68k/m68k.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
4228 Define to speculation_safe_value_not_needed.
4229
4230 PR target/86784
4231 * config/h8300/h8300.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
4232 Define to speculation_safe_value_not_needed.
4233
4234 2018-08-02 Tom de Vries <tdevries@suse.de>
4235
4236 PR target/86660
4237 * common/config/nvptx/nvptx-common.c (nvptx_except_unwind_info): New
4238 function. Return UI_TARGET unconditionally.
4239 (TARGET_EXCEPT_UNWIND_INFO): Redefine to nvptx_except_unwind_info.
4240 * config/nvptx/nvptx.c (TARGET_ASM_BYTE_OP): Emit commented out '.byte'.
4241
4242 2018-08-02 Richard Sandiford <richard.sandiford@arm.com>
4243
4244 * genemit.c (print_overload_test): Fix typo.
4245
4246 2018-08-02 Richard Biener <rguenther@suse.de>
4247
4248 PR tree-optimization/86816
4249 * tree-ssa-tail-merge.c (tail_merge_valueize): New function
4250 which checks for value availability before querying it.
4251 (gvn_uses_equal): Use it.
4252 (same_succ_hash): Likewise.
4253 (gimple_equal_p): Likewise.
4254
4255 2018-08-02 Nick Clifton <nickc@redhat.com>
4256
4257 PR target/86813
4258 * config/stormy16/stormy16.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
4259 Define to speculation_safe_value_not_needed.
4260
4261 PR target/86810
4262 * config/v850/v850.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
4263 Define to speculation_safe_value_not_needed.
4264
4265 PR target/86810
4266 * config/v850/v850.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
4267 Define to speculation_safe_value_not_needed.
4268
4269 PR target/86803
4270 * config/rx/rx.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
4271 Define to speculation_safe_value_not_needed.
4272
4273 PR target/86797
4274 * config/msp430/msp430.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
4275 Define to speculation_safe_value_not_needed.
4276
4277 PR target/86791
4278 * config/mcore/mcore.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
4279 Define to speculation_safe_value_not_needed.
4280
4281 PR target/86789
4282 * config/m32r/m32r.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
4283 Define to speculation_safe_value_not_needed.
4284
4285 PR target/86787
4286 * config/iq2000/iq2000.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
4287 Define to speculation_safe_value_not_needed.
4288
4289 PR target/86782
4290 * config/frv/frv.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Define to
4291 speculation_safe_value_not_needed.
4292
4293 PR target/86781
4294 * config/fr30/fr30.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Define
4295 to speculation_safe_value_not_needed.
4296
4297 2018-08-02 Richard Sandiford <richard.sandiford@arm.com>
4298
4299 * doc/md.texi: Expand the documentation of instruction names
4300 to mention port-local uses. Document '@' in pattern names.
4301 * read-md.h (overloaded_instance, overloaded_name): New structs.
4302 (mapping): Declare.
4303 (md_reader::handle_overloaded_name): New member function.
4304 (md_reader::get_overloads): Likewise.
4305 (md_reader::m_first_overload): New member variable.
4306 (md_reader::m_next_overload_ptr): Likewise.
4307 (md_reader::m_overloads_htab): Likewise.
4308 * read-md.c (md_reader::md_reader): Initialize m_first_overload,
4309 m_next_overload_ptr and m_overloads_htab.
4310 * read-rtl.c (iterator_group): Add "type" and "get_c_token" fields.
4311 (get_mode_token, get_code_token, get_int_token): New functions.
4312 (map_attr_string): Add an optional argument that passes back
4313 the associated iterator.
4314 (overloaded_name_hash, overloaded_name_eq_p, named_rtx_p):
4315 (md_reader::handle_overloaded_name, add_overload_instance): New
4316 functions.
4317 (apply_iterators): Handle '@' names. Report an error if '@'
4318 is used without iterators.
4319 (initialize_iterators): Initialize the new iterator_group fields.
4320 * genopinit.c (handle_overloaded_code_for)
4321 (handle_overloaded_gen): New functions.
4322 (main): Use them to print declarations of maybe_code_for_* and
4323 maybe_gen_* functions, and inline definitions of code_for_* and gen_*.
4324 * genemit.c (print_overload_arguments, print_overload_test)
4325 (handle_overloaded_code_for, handle_overloaded_gen): New functions.
4326 (main): Use it to print definitions of maybe_code_for_* and
4327 maybe_gen_* functions.
4328 * config/aarch64/aarch64.c (aarch64_split_128bit_move): Use
4329 gen_aarch64_mov{low,high}_di and gen_aarch64_movdi_{low,high}
4330 instead of explicit mode checks.
4331 (aarch64_split_simd_combine): Likewise gen_aarch64_simd_combine.
4332 (aarch64_split_simd_move): Likewise gen_aarch64_split_simd_mov.
4333 (aarch64_emit_load_exclusive): Likewise gen_aarch64_load_exclusive.
4334 (aarch64_emit_store_exclusive): Likewise gen_aarch64_store_exclusive.
4335 (aarch64_expand_compare_and_swap): Likewise
4336 gen_aarch64_compare_and_swap and gen_aarch64_compare_and_swap_lse
4337 (aarch64_gen_atomic_cas): Likewise gen_aarch64_atomic_cas.
4338 (aarch64_emit_atomic_swap): Likewise gen_aarch64_atomic_swp.
4339 (aarch64_constant_pool_reload_icode): Delete.
4340 (aarch64_secondary_reload): Use code_for_aarch64_reload_movcp
4341 instead of aarch64_constant_pool_reload_icode. Use
4342 code_for_aarch64_reload_mov instead of explicit mode checks.
4343 (rsqrte_type, get_rsqrte_type, rsqrts_type, get_rsqrts_type): Delete.
4344 (aarch64_emit_approx_sqrt): Use gen_aarch64_rsqrte instead of
4345 get_rsqrte_type and gen_aarch64_rsqrts instead of gen_rqrts_type.
4346 (recpe_type, get_recpe_type, recps_type, get_recps_type): Delete.
4347 (aarch64_emit_approx_div): Use gen_aarch64_frecpe instead of
4348 get_recpe_type and gen_aarch64_frecps instead of get_recps_type.
4349 (aarch64_atomic_load_op_code): Delete.
4350 (aarch64_emit_atomic_load_op): Likewise.
4351 (aarch64_gen_atomic_ldop): Use UNSPECV_ATOMIC_* instead of
4352 aarch64_atomic_load_op_code. Use gen_aarch64_atomic_load
4353 instead of aarch64_emit_atomic_load_op.
4354 * config/aarch64/aarch64.md (aarch64_reload_movcp<GPF_TF:mode><P:mode>)
4355 (aarch64_reload_movcp<VALL:mode><P:mode>, aarch64_reload_mov<mode>)
4356 (aarch64_movdi_<mode>low, aarch64_movdi_<mode>high)
4357 (aarch64_mov<mode>high_di, aarch64_mov<mode>low_di): Add a '@'
4358 character before the pattern name.
4359 * config/aarch64/aarch64-simd.md (aarch64_split_simd_mov<mode>)
4360 (aarch64_rsqrte<mode>, aarch64_rsqrts<mode>)
4361 (aarch64_simd_combine<mode>, aarch64_frecpe<mode>)
4362 (aarch64_frecps<mode>): Likewise.
4363 * config/aarch64/atomics.md (atomic_compare_and_swap<mode>)
4364 (aarch64_compare_and_swap<mode>, aarch64_compare_and_swap<mode>_lse)
4365 (aarch64_load_exclusive<mode>, aarch64_store_exclusive<mode>)
4366 (aarch64_atomic_swp<mode>, aarch64_atomic_cas<mode>)
4367 (aarch64_atomic_load<atomic_ldop><mode>): Likewise.
4368
4369 2018-08-02 Richard Sandiford <richard.sandiford@arm.com>
4370
4371 * config/aarch64/aarch64.c (aarch64_float_const_representable_p):
4372 Allow HFmode constants if TARGET_FP_F16INST.
4373
4374 2018-08-02 Jackson Woodruff <jackson.woodruff@arm.com>
4375
4376 PR target/86014
4377 * config/aarch64/aarch64.c (aarch64_operands_adjust_ok_for_ldpstp):
4378 No longer check last store for clobber of address register.
4379
4380 2018-08-02 Martin Liska <mliska@suse.cz>
4381
4382 PR gcov-profile/86817
4383 * gcov.c (process_all_functions): New function.
4384 (main): Call it.
4385 (process_file): Move functions processing to
4386 process_all_functions.
4387
4388 2018-08-02 David Malcolm <dmalcolm@redhat.com>
4389
4390 * dumpfile.c (dump_user_location_t::dump_user_location_t): Add
4391 "const" to the "gimple *" and "rtx_insn *" parameters.
4392 * dumpfile.h (dump_user_location_t::dump_user_location_t):
4393 Likewise.
4394 (dump_location_t::dump_location_t): Likewise.
4395
4396 2018-08-01 Martin Sebor <msebor@redhat.com>
4397
4398 PR tree-optimization/86650
4399 * gimple-pretty-print.c (percent_G_format): Accept a "gimple *"
4400 rather than a "gcall *". Directly pass the data of interest
4401 to percent_K_format, rather than building a temporary CALL_EXPR
4402 to hold it.
4403 * gimple-fold.c (gimple_fold_builtin_strncpy): Adjust.
4404 (gimple_fold_builtin_strncat): Adjust.
4405 * gimple-ssa-warn-restrict.h (check_bounds_or_overlap): Replace
4406 gcall* argument with gimple*.
4407 * gimple-ssa-warn-restrict.c (check_call): Same.
4408 (wrestrict_dom_walker::before_dom_children): Same.
4409 (builtin_access::builtin_access): Same.
4410 (check_bounds_or_overlap): Same
4411 (maybe_diag_overlap): Same.
4412 (maybe_diag_offset_bounds): Same.
4413 * tree-diagnostic.c (default_tree_printer): Move usage of
4414 EXPR_LOCATION (t) and TREE_BLOCK (t) from within percent_K_format
4415 to this callsite.
4416 * tree-pretty-print.c (percent_K_format): Add argument.
4417 * tree-pretty-print.h: Add argument.
4418 * tree-ssa-ccp.c (pass_post_ipa_warn::execute): Adjust.
4419 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Adjust.
4420 (maybe_diag_stxncpy_trunc): Same.
4421 (handle_builtin_stxncpy): Same.
4422 (handle_builtin_strcat): Same.
4423
4424 2018-08-01 Richard Sandiford <richard.sandiford@arm.com>
4425
4426 * match.pd: Optimise pointer range checks.
4427
4428 2018-08-01 Richard Sandiford <richard.sandiford@arm.com>
4429
4430 PR tree-optimization/86758
4431 * tree-vect-stmts.c (vectorizable_simd_clone_call): Don't try
4432 to remove pattern statements.
4433
4434 2018-08-01 Richard Sandiford <richard.sandiford@arm.com>
4435
4436 * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Use the
4437 result of dfs_enumerate_from when constructing stmt_vec_infos,
4438 instead of additionally calling get_loop_body.
4439
4440 2018-08-01 Richard Sandiford <richard.sandiford@arm.com>
4441
4442 * tree-vectorizer.h (vect_create_data_ref_ptr): Remove inv_p
4443 parameter.
4444 * tree-vect-data-refs.c (vect_create_data_ref_ptr): Likewise.
4445 When creating an iv, assert that the step is not known to be zero.
4446 (vect_setup_realignment): Update call accordingly.
4447 * tree-vect-stmts.c (vectorizable_store): Likewise.
4448 (vectorizable_load): Likewise. Handle VMAT_INVARIANT separately.
4449
4450 2018-08-01 Richard Sandiford <richard.sandiford@arm.com>
4451
4452 * tree-vectorizer.h (vect_stmt_to_vectorize): New function.
4453 * tree-vect-loop.c (vect_update_vf_for_slp): Use it.
4454 (vectorizable_reduction): Likewise.
4455 * tree-vect-slp.c (vect_analyze_slp_instance): Likewise.
4456 (vect_detect_hybrid_slp_stmts): Likewise.
4457 * tree-vect-stmts.c (vect_is_simple_use): Likewise.
4458
4459 2018-08-01 Aldy Hernandez <aldyh@redhat.com>
4460
4461 * tree-vrp (zero_nonzero_bits_from_bounds): Rename to...
4462 (wide_int_set_zero_nonzero_bits): ...this.
4463 (zero_nonzero_bits_from_vr): Rename to...
4464 (vrp_set_zero_nonzero_bits): ...this.
4465 (extract_range_from_multiplicative_op_1): Abstract wide int
4466 code...
4467 (wide_int_range_multiplicative_op): ...here.
4468 (extract_range_from_binary_expr_1): Extract wide int binary
4469 operations into their own functions.
4470 (wide_int_range_lshift): New.
4471 (wide_int_range_can_optimize_bit_op): New.
4472 (wide_int_range_shift_undefined_p): New.
4473 (wide_int_range_bit_xor): New.
4474 (wide_int_range_bit_ior): New.
4475 (wide_int_range_bit_and): New.
4476 (wide_int_range_trunc_mod): New.
4477 (extract_range_into_wide_ints): New.
4478 (vrp_shift_undefined_p): New.
4479 (extract_range_from_multiplicative_op): New.
4480 (vrp_can_optimize_bit_op): New.
4481 * tree-vrp.h (value_range::dump): New.
4482 (wide_int_range_multiplicative_op): New.
4483 (wide_int_range_lshift):New.
4484 (wide_int_range_shift_undefined_p): New.
4485 (wide_int_range_bit_xor): New.
4486 (wide_int_range_bit_ior): New.
4487 (wide_int_range_bit_and): New.
4488 (wide_int_range_trunc_mod): New.
4489 (zero_nonzero_bits_from_bounds): Rename to...
4490 (wide_int_set_zero_nonzero_bits): ...this.
4491 (zero_nonzero_bits_from_vr): Rename to...
4492 (vrp_set_zero_nonzero_bits): ...this.
4493 (range_easy_mask_min_max): Rename to...
4494 (wide_int_range_can_optimize_bit_op): this.
4495 * vr-values.c (simplify_bit_ops_using_ranges): Rename
4496 zero_nonzero_bits_from_vr into vrp_set_zero_nonzero_bits.
4497
4498 2018-08-01 Richard Sandiford <richard.sandiford@arm.com>
4499
4500 * tree-vectorizer.h (vect_orig_stmt): New function.
4501 * tree-vect-data-refs.c (vect_preserves_scalar_order_p): Use it.
4502 * tree-vect-loop.c (vect_model_reduction_cost): Likewise.
4503 (vect_create_epilog_for_reduction): Likewise.
4504 (vectorizable_live_operation): Likewise.
4505 * tree-vect-slp.c (vect_find_last_scalar_stmt_in_slp): Likewise.
4506 (vect_detect_hybrid_slp_stmts, vect_schedule_slp): Likewise.
4507 * tree-vect-stmts.c (vectorizable_call): Likewise.
4508 (vectorizable_simd_clone_call, vect_remove_stores): Likewise.
4509
4510 2018-08-01 Richard Sandiford <richard.sandiford@arm.com>
4511
4512 * tree-vectorizer.h (vect_transform_stmt): Remove grouped_store
4513 argument.
4514 * tree-vect-stmts.c (vect_transform_stmt): Likewise.
4515 * tree-vect-loop.c (vect_transform_loop_stmt): Update call accordingly.
4516 (vect_transform_loop): Likewise.
4517 * tree-vect-slp.c (vect_schedule_slp_instance): Likewise.
4518
4519 2018-08-01 Richard Sandiford <richard.sandiford@arm.com>
4520
4521 * tree-vectorizer.h (vect_schedule_slp): Return void.
4522 * tree-vect-slp.c (vect_schedule_slp_instance): Likewise.
4523 (vect_schedule_slp): Likewise.
4524
4525 2018-08-01 Richard Sandiford <richard.sandiford@arm.com>
4526
4527 * tree-vect-loop.c (vect_transform_loop_stmt): Remove slp_scheduled
4528 argument.
4529 (vect_transform_loop): Update calls accordingly. Schedule SLP
4530 instances before the main loop, if any exist.
4531
4532 2018-08-01 Richard Sandiford <richard.sandiford@arm.com>
4533
4534 PR tree-optimization/86749
4535 * tree-vect-patterns.c (vect_determine_min_output_precision_1):
4536 If the lhs is used in a COND_EXPR, check that it is being used
4537 as the "then" or "else" value.
4538
4539 2018-08-01 Tom de Vries <tdevries@suse.de>
4540
4541 PR target/86800
4542 * config/nvptx/nvptx.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Define to
4543 speculation_safe_value_not_needed.
4544
4545 2018-08-01 Richard Biener <rguenther@suse.de>
4546
4547 * tree-ssa-sccvn.c (visit_phi): Compare invariant addresses
4548 as base and offset.
4549
4550 2018-08-01 Martin Liska <mliska@suse.cz>
4551
4552 * value-prof.c (gimple_divmod_fixed_value_transform): Unify
4553 format how successful transformation is dumped.
4554 (gimple_mod_pow2_value_transform): Likewise.
4555 (gimple_mod_subtract_transform): Likewise.
4556 (gimple_stringops_transform): Likewise.
4557
4558 2018-08-01 Martin Liska <mliska@suse.cz>
4559
4560 PR value-prof/35543
4561 * value-prof.c (interesting_stringop_to_profile_p):
4562 Simplify the code and add BUILT_IN_MEMMOVE.
4563 (gimple_stringops_transform): Likewise.
4564
4565 2018-08-01 Sam Tebbs <sam.tebbs@arm.com>
4566
4567 * config/aarch64/aarch64-simd.md
4568 (*aarch64_get_lane_zero_extendsi<mode>): Rename to...
4569 (*aarch64_get_lane_zero_extend<GPI:mode><VDQQH:mode>): ... This and
4570 use GPI iterator instead of SI mode.
4571
4572 2018-08-01 Richard Earnshaw <rearnsha@arm.com>
4573
4574 * config/rs6000/rs6000.md (speculation_barrier): Renamed from
4575 rs6000_speculation_barrier.
4576 * config/rs6000/rs6000.c (rs6000_expand_builtin): Adjust for
4577 new barrier pattern name.
4578
4579 2018-08-01 Richard Earnshaw <rearnsha@arm.com>
4580
4581 * config/i386/i386.md (unspecv): Add UNSPECV_SPECULATION_BARRIER.
4582 (speculation_barrier): New insn.
4583
4584 2018-08-01 Richard Biener <rguenther@suse.de>
4585
4586 PR bootstrap/86724
4587 * graphite.h: Include isl/id.h and isl/space.h to allow build
4588 with ISL 0.20.
4589
4590 2018-08-01 Jan Willem Jagersma <jwjagersma@gmail.com>
4591
4592 PR target/86651
4593 * dwarf2out.c (dwarf2out_early_finish): Do not generate assembly in LTO
4594 mode for COFF targets.
4595 * defaults.h (TARGET_COFF): Define.
4596 * config/i386/djgpp.h (TARGET_ASM_LTO_START, TARGET_ASM_LTO_END,
4597 TARGET_COFF): Define.
4598 (i386_djgpp_asm_lto_start, i386_djgpp_asm_lto_end): Declare.
4599 * config/i386/djgpp.c (saved_debug_info_level): New static variable.
4600 (i386_djgpp_asm_lto_start, i386_djgpp_asm_lto_end): New functions.
4601
4602 2018-07-31 Alexandre Oliva <oliva@adacore.com>
4603
4604 * gimple-streamer-in.c (input_bb): Restore BB discriminator.
4605 * gimple-streamer-out.c (output_bb): Save it.
4606 * lto-streamer-in.c (input_struct_function_base): Restore
4607 instance discriminator if available. Create map on demand.
4608 * lto-streamer-out.c (output_struct_function_base): Save it if
4609 available.
4610 * final.c (decl_to_instance_map): Document LTO strategy.
4611
4612 2018-07-31 Alexandre Oliva <oliva@adacore.com>
4613 Olivier Hainque <hainque@adacore.com>
4614
4615 * debug.h (decl_to_instance_map_t): New type.
4616 (decl_to_instance_map): Declare.
4617 (maybe_create_decl_to_instance_map): New inline function.
4618 * final.c (bb_discriminator, last_bb_discriminator): New statics,
4619 to track basic block discriminators.
4620 (final_start_function_1): Initialize them.
4621 (final_scan_insn_1): On NOTE_INSN_BASIC_BLOCK, track
4622 bb_discriminator.
4623 (decl_to_instance_map): New variable.
4624 (map_decl_to_instance, maybe_set_discriminator): New functions.
4625 (notice_source_line): Set discriminator.
4626
4627 2018-07-31 Ian Lance Taylor <iant@golang.org>
4628
4629 * targhooks.c (default_have_speculation_safe_value): Add
4630 ATTRIBUTE_UNUSED.
4631
4632 2018-07-31 David Malcolm <dmalcolm@redhat.com>
4633
4634 * dump-context.h: Include "pretty-print.h".
4635 (dump_context::refresh_dumps_are_enabled): New decl.
4636 (dump_context::emit_item): New decl.
4637 (class dump_context): Add fields "m_test_pp" and
4638 "m_test_pp_flags".
4639 (temp_dump_context::temp_dump_context): Add param "test_pp_flags".
4640 (temp_dump_context::get_dumped_text): New decl.
4641 (class temp_dump_context): Add field "m_pp".
4642 * dumpfile.c (refresh_dumps_are_enabled): Convert to...
4643 (dump_context::refresh_dumps_are_enabled): ...and add a test for
4644 m_test_pp.
4645 (set_dump_file): Update for above change.
4646 (set_alt_dump_file): Likewise.
4647 (dump_loc): New overload, taking a pretty_printer *.
4648 (dump_context::dump_loc): Call end_any_optinfo. Dump the location
4649 to any test pretty-printer.
4650 (make_item_for_dump_gimple_stmt): New function, adapted from
4651 optinfo::add_gimple_stmt.
4652 (dump_context::dump_gimple_stmt): Call it, and use the result,
4653 eliminating the direct usage of dump_file and alt_dump_file in
4654 favor of indirectly using them via emit_item.
4655 (make_item_for_dump_gimple_expr): New function, adapted from
4656 optinfo::add_gimple_expr.
4657 (dump_context::dump_gimple_expr): Call it, and use the result,
4658 eliminating the direct usage of dump_file and alt_dump_file in
4659 favor of indirectly using them via emit_item.
4660 (make_item_for_dump_generic_expr): New function, adapted from
4661 optinfo::add_tree.
4662 (dump_context::dump_generic_expr): Call it, and use the result,
4663 eliminating the direct usage of dump_file and alt_dump_file in
4664 favor of indirectly using them via emit_item.
4665 (make_item_for_dump_printf_va): New function, adapted from
4666 optinfo::add_printf_va.
4667 (make_item_for_dump_printf): New function.
4668 (dump_context::dump_printf_va): Call make_item_for_dump_printf_va,
4669 and use the result, eliminating the direct usage of dump_file and
4670 alt_dump_file in favor of indirectly using them via emit_item.
4671 (make_item_for_dump_dec): New function.
4672 (dump_context::dump_dec): Call it, and use the result,
4673 eliminating the direct usage of dump_file and alt_dump_file in
4674 favor of indirectly using them via emit_item.
4675 (make_item_for_dump_symtab_node): New function, adapted from
4676 optinfo::add_symtab_node.
4677 (dump_context::dump_symtab_node): Call it, and use the result,
4678 eliminating the direct usage of dump_file and alt_dump_file in
4679 favor of indirectly using them via emit_item.
4680 (dump_context::begin_scope): Reimplement, avoiding direct usage
4681 of dump_file and alt_dump_file in favor of indirectly using them
4682 via emit_item.
4683 (dump_context::emit_item): New member function.
4684 (temp_dump_context::temp_dump_context): Add param "test_pp_flags".
4685 Set up test pretty-printer on the underlying context. Call
4686 refresh_dumps_are_enabled.
4687 (temp_dump_context::~temp_dump_context): Call
4688 refresh_dumps_are_enabled.
4689 (temp_dump_context::get_dumped_text): New member function.
4690 (selftest::verify_dumped_text): New function.
4691 (ASSERT_DUMPED_TEXT_EQ): New macro.
4692 (selftest::test_capture_of_dump_calls): Run all tests twice, with
4693 and then without optinfo enabled. Add uses of
4694 ASSERT_DUMPED_TEXT_EQ to all tests. Add test of nested scopes.
4695 * dumpfile.h: Update comment for the dump_* API.
4696 * optinfo-emit-json.cc
4697 (selftest::test_building_json_from_dump_calls): Update for new
4698 param for temp_dump_context ctor.
4699 * optinfo.cc (optinfo_item::optinfo_item): Remove "owned" param
4700 and "m_owned" field.
4701 (optinfo_item::~optinfo_item): Likewise.
4702 (optinfo::add_item): New member function.
4703 (optinfo::emit): Update comment.
4704 (optinfo::add_string): Delete.
4705 (optinfo::add_printf): Delete.
4706 (optinfo::add_printf_va): Delete.
4707 (optinfo::add_gimple_stmt): Delete.
4708 (optinfo::add_gimple_expr): Delete.
4709 (optinfo::add_tree): Delete.
4710 (optinfo::add_symtab_node): Delete.
4711 (optinfo::add_dec): Delete.
4712 * optinfo.h (class dump_context): New forward decl.
4713 (optinfo::add_item): New decl.
4714 (optinfo::add_string): Delete.
4715 (optinfo::add_printf): Delete.
4716 (optinfo::add_printf_va): Delete.
4717 (optinfo::add_gimple_stmt): Delete.
4718 (optinfo::add_gimple_expr): Delete.
4719 (optinfo::add_tree): Delete.
4720 (optinfo::add_symtab_node): Delete.
4721 (optinfo::add_dec): Delete.
4722 (optinfo::add_poly_int): Delete.
4723 (optinfo_item::optinfo_item): Remove "owned" param.
4724 (class optinfo_item): Remove field "m_owned".
4725
4726 2018-07-31 Jozef Lawrynowicz <jozef.l@mittosystems.com>
4727
4728 PR middle-end/86705
4729 * gcc/cfgexpand.c (set_parm_rtl): Use the alignment of Pmode when
4730 MAX_SUPPORTED_STACK_ALIGNMENT would otherwise be exceeded by the
4731 requested variable alignment.
4732 (expand_one_ssa_partition): Likewise.
4733 (expand_one_var): Likewise.
4734
4735 2018-07-31 Richard Earnshaw <rearnsha@arm.com>
4736
4737 * config/pdp11/pdp11.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Redefine
4738 to speculation_safe_value_not_needed.
4739
4740 2018-07-31 Richard Earnshaw <rearnsha@arm.com>
4741
4742 * targhooks.h (speculation_safe_value_not_needed): New prototype.
4743 * targhooks.c (speculation_safe_value_not_needed): New function.
4744 * target.def (have_speculation_safe_value): Update documentation.
4745 * doc/tm.texi: Regenerated.
4746
4747 2018-07-31 Richard Earnshaw <rearnsha@arm.com>
4748
4749 * config/aarch64/iterators.md (ALLI_TI): New iterator.
4750 * config/aarch64/aarch64.md (despeculate_copy<ALLI_TI:mode>): New
4751 expand.
4752 (despeculate_copy<ALLI:mode>_insn): New insn.
4753 (despeculate_copyti_insn): New insn.
4754 (despeculate_simple<ALLI:mode>): New insn
4755 (despeculate_simpleti): New insn.
4756 * config/aarch64/aarch64.c (aarch64_speculation_safe_value): New
4757 function.
4758 (TARGET_SPECULATION_SAFE_VALUE): Redefine to
4759 aarch64_speculation_safe_value.
4760 (aarch64_print_operand): Handle const0_rtx in modifier 'H'.
4761
4762 2018-07-31 Richard Earnshaw <rearnsha@arm.com>
4763
4764 * config/aarch64/aarch64-speculation.cc: New file.
4765 * config/aarch64/aarch64-passes.def (pass_track_speculation): Add
4766 before pass_reorder_blocks.
4767 * config/aarch64/aarch64-protos.h (make_pass_track_speculation): Add
4768 prototype.
4769 * config/aarch64/aarch64.c (aarch64_conditional_register_usage): Fix
4770 X14 and X15 when tracking speculation.
4771 * config/aarch64/aarch64.md (register name constants): Add
4772 SPECULATION_TRACKER_REGNUM and SPECULATION_SCRATCH_REGNUM.
4773 (unspec): Add UNSPEC_SPECULATION_TRACKER.
4774 (speculation_barrier): New insn attribute.
4775 (cmp<mode>): Allow SP in comparisons.
4776 (speculation_tracker): New insn.
4777 (speculation_barrier): Add speculation_barrier attribute.
4778 * config/aarch64/t-aarch64: Add make rule for aarch64-speculation.o.
4779 * config.gcc (aarch64*-*-*): Add aarch64-speculation.o to extra_objs.
4780 * doc/invoke.texi (AArch64 Options): Document -mtrack-speculation.
4781
4782 2018-07-31 Richard Earnshaw <rearnsha@arm.com>
4783
4784 * config/aarch64/aarch64.md (cb<optab><mode>1): Disable when
4785 aarch64_track_speculation is true.
4786 (tb<optab><mode>1): Likewise.
4787 * config/aarch64/aarch64.c (aarch64_split_compare_regs): Do not
4788 generate CB[N]Z when tracking speculation.
4789 (aarch64_split_compare_and_swap): Likewise.
4790 (aarch64_split_atomic_op): Likewise.
4791
4792 2018-07-31 Richard Earnshaw <rearnsha@arm.com>
4793
4794 * config/aarch64/aarch64.opt (mtrack-speculation): New target option.
4795
4796 2018-07-31 Richard Earnshaw <rearnsha@arm.com>
4797
4798 * config/aarch64.md (unspecv): Add UNSPECV_SPECULAION_BARRIER.
4799 (speculation_barrier): New insn.
4800
4801 2018-07-31 Richard Earnshaw <rearnsha@arm.com>
4802
4803 * config/arm/unspecs.md (unspecv): Add VUNSPEC_SPECULATION_BARRIER.
4804 * config/arm/arm.md (speculation_barrier): New expand.
4805 (speculation_barrier_insn): New pattern.
4806
4807 2018-07-31 Richard Earnshaw <rearnsha@arm.com>
4808
4809 * builtin-types.def (BT_FN_PTR_PTR_VAR): New function type.
4810 (BT_FN_I1_I1_VAR, BT_FN_I2_I2_VAR, BT_FN_I4_I4_VAR): Likewise.
4811 (BT_FN_I8_I8_VAR, BT_FN_I16_I16_VAR): Likewise.
4812 * builtin-attrs.def (ATTR_NOVOPS_NOTHROW_LEAF_LIST): New attribute
4813 list.
4814 * builtins.def (BUILT_IN_SPECULATION_SAFE_VALUE_N): New builtin.
4815 (BUILT_IN_SPECULATION_SAFE_VALUE_PTR): New internal builtin.
4816 (BUILT_IN_SPECULATION_SAFE_VALUE_1): Likewise.
4817 (BUILT_IN_SPECULATION_SAFE_VALUE_2): Likewise.
4818 (BUILT_IN_SPECULATION_SAFE_VALUE_4): Likewise.
4819 (BUILT_IN_SPECULATION_SAFE_VALUE_8): Likewise.
4820 (BUILT_IN_SPECULATION_SAFE_VALUE_16): Likewise.
4821 * builtins.c (expand_speculation_safe_value): New function.
4822 (expand_builtin): Call it.
4823 * doc/cpp.texi: Document predefine __HAVE_SPECULATION_SAFE_VALUE.
4824 * doc/extend.texi: Document __builtin_speculation_safe_value.
4825 * doc/md.texi: Document "speculation_barrier" pattern.
4826 * doc/tm.texi.in: Pull in TARGET_SPECULATION_SAFE_VALUE and
4827 TARGET_HAVE_SPECULATION_SAFE_VALUE.
4828 * doc/tm.texi: Regenerated.
4829 * target.def (have_speculation_safe_value, speculation_safe_value): New
4830 hooks.
4831 * targhooks.c (default_have_speculation_safe_value): New function.
4832 (default_speculation_safe_value): New function.
4833 * targhooks.h (default_have_speculation_safe_value): Add prototype.
4834 (default_speculation_safe_value): Add prototype.
4835
4836 2018-07-31 David Malcolm <dmalcolm@redhat.com>
4837
4838 * dump-context.h (dump_context::dump_loc): New decl.
4839 * dumpfile.c (dump_context::dump_loc): New member function.
4840 (dump_context::dump_gimple_stmt_loc): Reimplement using dump_loc
4841 and dump_gimple_stmt.
4842 (dump_context::dump_gimple_expr_loc): Likewise, using
4843 dump_gimple_expr.
4844 (dump_context::dump_generic_expr_loc): Likewise, using
4845 dump_generic_expr.
4846 (dump_context::dump_printf_loc_va): Likewise, using
4847 dump_printf_va.
4848 (dump_context::begin_scope): Explicitly using the global function
4849 "dump_loc", rather than the member function.
4850
4851 2018-07-31 Martin Sebor <msebor@redhat.com>
4852
4853 PR tree-optimization/86741
4854 * tree-vrp.c (vrp_prop::check_mem_ref): Avoid incomplete types.
4855
4856 2018-07-31 Andreas Krebbel <krebbel@linux.ibm.com>
4857
4858 * config/s390/s390.c (s390_expand_setmem): Make the unrolling to
4859 depend on whether prefetch instructions will be emitted or not.
4860 Use TARGET_SETMEM_PFD for checking whether prefetch instructions
4861 will be emitted or not.
4862 * config/s390/s390.h (TARGET_SETMEM_PREFETCH_DISTANCE)
4863 (TARGET_SETMEM_PFD): New macros.
4864
4865 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
4866
4867 * tree-vectorizer.h (stmt_vec_info): Turn back into a typedef.
4868 (NULL_STMT_VEC_INFO): Delete.
4869 (stmt_vec_info::operator*): Likewise.
4870 (stmt_vec_info::operator gimple *): Likewise.
4871 * tree-vect-loop.c (vectorizable_reduction): Use NULL instead
4872 of NULL_STMT_VEC_INFO.
4873 * tree-vect-patterns.c (vect_init_pattern_stmt): Likewise.
4874 (vect_reassociating_reduction_p): Likewise.
4875 * tree-vect-stmts.c (vect_build_gather_load_calls): Likewise.
4876 (vectorizable_store): Likewise.
4877 * tree-vectorizer.c (vec_info::set_vinfo_for_stmt): Likewise.
4878 (vec_info::free_stmt_vec_infos): Likewise.
4879
4880 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
4881
4882 * tree-vectorizer.h (vect_stmt_in_region_p): Delete.
4883 * tree-vectorizer.c (vect_stmt_in_region_p): Likewise.
4884
4885 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
4886
4887 * tree-vectorizer.h (vec_info::new_vinfo_for_stmt)
4888 (vec_info::set_vinfo_for_stmt, vec_info::free_stmt_vec_infos)
4889 (vec_info::free_stmt_vec_info): New private member functions.
4890 (set_stmt_vec_info_vec, free_stmt_vec_infos, vinfo_for_stmt)
4891 (set_vinfo_for_stmt, new_stmt_vec_info, free_stmt_vec_info): Delete.
4892 * tree-parloops.c (gather_scalar_reductions): Remove calls to
4893 set_stmt_vec_info_vec and free_stmt_vec_infos.
4894 * tree-vect-loop.c (_loop_vec_info): Remove call to
4895 set_stmt_vec_info_vec.
4896 * tree-vect-stmts.c (new_stmt_vec_info, set_stmt_vec_info_vec)
4897 (free_stmt_vec_infos, free_stmt_vec_info): Delete in favor of...
4898 * tree-vectorizer.c (vec_info::new_stmt_vec_info)
4899 (vec_info::set_vinfo_for_stmt, vec_info::free_stmt_vec_infos)
4900 (vec_info::free_stmt_vec_info): ...these new functions. Remove
4901 assignments in {vec_info::,}new_stmt_vec_info that are redundant
4902 with the clearing in the xcalloc.
4903 (stmt_vec_info_vec): Delete.
4904 (vec_info::vec_info): Don't call set_stmt_vec_info_vec.
4905 (vectorize_loops): Likewise.
4906 (vec_info::~vec_info): Remove argument from call to
4907 free_stmt_vec_infos.
4908 (vec_info::add_stmt): Remove vinfo argument from call to
4909 new_stmt_vec_info.
4910
4911 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
4912
4913 * tree-vectorizer.h (free_stmt_vec_info): Take a stmt_vec_info
4914 rather than a gimple stmt.
4915 * tree-vect-stmts.c (free_stmt_vec_info): Likewise. Don't free
4916 information for pattern statements when passed the original
4917 statement; instead wait to be passed the pattern statement itself.
4918 Don't call set_vinfo_for_stmt here.
4919 (free_stmt_vec_infos): Update call to free_stmt_vec_info.
4920 * tree-vect-loop.c (_loop_vec_info::~loop_vec_info): Don't free
4921 stmt_vec_infos here.
4922 * tree-vect-slp.c (_bb_vec_info::~bb_vec_info): Likewise.
4923 * tree-vectorizer.c (vec_info::remove_stmt): Nullify the statement's
4924 stmt_vec_infos entry.
4925
4926 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
4927
4928 * tree-vectorizer.h (vec_info::replace_stmt): Declare.
4929 * tree-vectorizer.c (vec_info::replace_stmt): New function.
4930 * tree-vect-slp.c (vect_remove_slp_scalar_calls): Use it.
4931 * tree-vect-stmts.c (vectorizable_call): Likewise.
4932 (vectorizable_simd_clone_call): Likewise.
4933
4934 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
4935
4936 * tree-vectorizer.h (vec_info::remove_stmt): Declare.
4937 * tree-vectorizer.c (vec_info::remove_stmt): New function.
4938 * tree-vect-loop-manip.c (vect_set_loop_condition): Use it.
4939 * tree-vect-loop.c (vect_transform_loop): Likewise.
4940 * tree-vect-slp.c (vect_schedule_slp): Likewise.
4941 * tree-vect-stmts.c (vect_remove_stores): Likewise.
4942
4943 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
4944
4945 * tree-vectorizer.h (vec_info::lookup_dr): New member function.
4946 (vect_dr_stmt): Delete.
4947 * tree-vectorizer.c (vec_info::lookup_dr): New function.
4948 * tree-vect-loop-manip.c (vect_update_inits_of_drs): Use it instead
4949 of DR_VECT_AUX.
4950 * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr)
4951 (vect_analyze_data_ref_dependence, vect_record_base_alignments)
4952 (vect_verify_datarefs_alignment, vect_peeling_supportable)
4953 (vect_analyze_data_ref_accesses, vect_prune_runtime_alias_test_list)
4954 (vect_analyze_data_refs): Likewise.
4955 (vect_slp_analyze_data_ref_dependence): Likewise. Take a vec_info
4956 argument.
4957 (vect_find_same_alignment_drs): Likewise.
4958 (vect_slp_analyze_node_dependences): Update calls accordingly.
4959 (vect_analyze_data_refs_alignment): Likewise. Use vec_info::lookup_dr
4960 instead of DR_VECT_AUX.
4961 (vect_get_peeling_costs_all_drs): Take a loop_vec_info instead
4962 of a vector data references. Use vec_info::lookup_dr instead of
4963 DR_VECT_AUX.
4964 (vect_peeling_hash_get_lowest_cost): Update calls accordingly.
4965 (vect_enhance_data_refs_alignment): Likewise. Use vec_info::lookup_dr
4966 instead of DR_VECT_AUX.
4967
4968 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
4969
4970 * tree-vectorizer.h (_loop_vec_info::unaligned_dr): Change to
4971 dr_vec_info.
4972 * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Update
4973 accordingly.
4974 * tree-vect-loop.c (vect_analyze_loop_2): Likewise.
4975 * tree-vect-loop-manip.c (get_misalign_in_elems): Likewise.
4976 (vect_gen_prolog_loop_niters): Likewise.
4977
4978 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
4979
4980 * tree-vectorizer.h (set_dr_misalignment, dr_misalignment)
4981 (DR_TARGET_ALIGNMENT, aligned_access_p, known_alignment_for_access_p)
4982 (vect_known_alignment_in_bytes, vect_dr_behavior)
4983 (vect_get_scalar_dr_size): Take references as dr_vec_infos
4984 instead of data_references. Update calls to other routines for
4985 which the same change has been made.
4986 * tree-vect-data-refs.c (vect_preserves_scalar_order_p): Take
4987 dr_vec_infos instead of stmt_vec_infos.
4988 (vect_analyze_data_ref_dependence): Update call accordingly.
4989 (vect_slp_analyze_data_ref_dependence)
4990 (vect_record_base_alignments): Use DR_VECT_AUX.
4991 (vect_calculate_target_alignment, vect_compute_data_ref_alignment)
4992 (vect_update_misalignment_for_peel, verify_data_ref_alignment)
4993 (vector_alignment_reachable_p, vect_get_data_access_cost)
4994 (vect_peeling_supportable, vect_analyze_group_access_1)
4995 (vect_analyze_group_access, vect_analyze_data_ref_access)
4996 (vect_vfa_segment_size, vect_vfa_access_size, vect_vfa_align)
4997 (vect_compile_time_alias, vect_small_gap_p)
4998 (vectorizable_with_step_bound_p, vect_duplicate_ssa_name_ptr_info):
4999 (vect_supportable_dr_alignment): Take references as dr_vec_infos
5000 instead of data_references. Update calls to other routines for
5001 which the same change has been made.
5002 (vect_verify_datarefs_alignment, vect_get_peeling_costs_all_drs)
5003 (vect_find_same_alignment_drs, vect_analyze_data_refs_alignment)
5004 (vect_slp_analyze_and_verify_node_alignment)
5005 (vect_analyze_data_ref_accesses, vect_prune_runtime_alias_test_list)
5006 (vect_create_addr_base_for_vector_ref, vect_create_data_ref_ptr)
5007 (vect_setup_realignment): Use dr_vec_infos. Update calls after
5008 above changes.
5009 (_vect_peel_info::dr): Replace with...
5010 (_vect_peel_info::dr_info): ...this new field.
5011 (vect_peeling_hash_get_most_frequent)
5012 (vect_peeling_hash_choose_best_peeling): Update accordingly.
5013 (vect_peeling_hash_get_lowest_cost):
5014 (vect_enhance_data_refs_alignment): Likewise. Update calls to other
5015 routines for which the same change has been made.
5016 (vect_peeling_hash_insert): Likewise. Take a dr_vec_info instead of a
5017 data_reference.
5018 * tree-vect-loop-manip.c (get_misalign_in_elems)
5019 (vect_gen_prolog_loop_niters): Use dr_vec_infos. Update calls after
5020 above changes.
5021 * tree-vect-loop.c (vect_analyze_loop_2): Likewise.
5022 * tree-vect-stmts.c (vect_get_store_cost, vect_get_load_cost)
5023 (vect_truncate_gather_scatter_offset, compare_step_with_zero)
5024 (get_group_load_store_type, get_negative_load_store_type)
5025 (vect_get_data_ptr_increment, vectorizable_store)
5026 (vectorizable_load): Likewise.
5027 (ensure_base_align): Take a dr_vec_info instead of a data_reference.
5028 Update calls to other routines for which the same change has been made.
5029
5030 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
5031
5032 * tree-vectorizer.h (vec_info::move_dr): New member function.
5033 (dataref_aux): Rename to...
5034 (dr_vec_info): ...this and add "dr" and "stmt" fields.
5035 (_stmt_vec_info::dr_aux): Update accordingly.
5036 (_stmt_vec_info::data_ref_info): Delete.
5037 (STMT_VINFO_GROUPED_ACCESS, DR_GROUP_FIRST_ELEMENT)
5038 (DR_GROUP_NEXT_ELEMENT, DR_GROUP_SIZE, DR_GROUP_STORE_COUNT)
5039 (DR_GROUP_GAP, DR_GROUP_SAME_DR_STMT, REDUC_GROUP_FIRST_ELEMENT):
5040 (REDUC_GROUP_NEXT_ELEMENT, REDUC_GROUP_SIZE): Use dr_aux.dr instead
5041 of data_ref.
5042 (STMT_VINFO_DATA_REF): Likewise. Turn into an lvalue.
5043 (STMT_VINFO_DR_INFO): New macro.
5044 (DR_VECT_AUX): Use STMT_VINFO_DR_INKFO and vect_dr_stmt.
5045 (set_dr_misalignment): Update after rename of dataref_aux.
5046 (vect_dr_stmt): Move earlier in file. Return dr_aux.stmt.
5047 * tree-vect-stmts.c (new_stmt_vec_info): Remove redundant
5048 initialization of STMT_VINFO_DATA_REF.
5049 * tree-vectorizer.c (vec_info::move_dr): New function.
5050 * tree-vect-patterns.c (vect_recog_bool_pattern)
5051 (vect_recog_mask_conversion_pattern)
5052 (vect_recog_gather_scatter_pattern): Use it.
5053 * tree-vect-data-refs.c (vect_analyze_data_refs): Initialize
5054 the "dr" and "stmt" fields of dr_vec_info instead of
5055 STMT_VINFO_DATA_REF.
5056
5057 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
5058
5059 * tree-vectorizer.h (_stmt_vec_info::pattern_stmt_p): New field.
5060 (is_pattern_stmt_p): Use it.
5061 * tree-vect-patterns.c (vect_init_pattern_stmt): Set pattern_stmt_p
5062 on pattern statements.
5063
5064 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
5065
5066 * tree-vect-patterns.c (vect_mark_pattern_stmts): Take the
5067 original stmt as a stmt_vec_info rather than a gimple stmt.
5068 (vect_pattern_recog_1): Take the statement directly as a
5069 stmt_vec_info, rather than via a gimple_stmt_iterator.
5070 Update call to vect_mark_pattern_stmts.
5071 (vect_pattern_recog): Update calls accordingly.
5072
5073 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
5074
5075 * tree-vectorizer.h (vect_get_vec_defs_for_stmt_copy)
5076 (vect_get_vec_def_for_stmt_copy): Take a vec_info rather than
5077 a vect_def_type for the first argument.
5078 * tree-vect-stmts.c (vect_get_vec_defs_for_stmt_copy): Likewise.
5079 (vect_get_vec_def_for_stmt_copy): Likewise. Return the original
5080 operand if it isn't defined by a vectorized statement.
5081 (vect_build_gather_load_calls): Remove the mask_dt argument and
5082 update calls to vect_get_vec_def_for_stmt_copy.
5083 (vectorizable_bswap): Likewise the dt argument.
5084 (vectorizable_call): Update calls to vectorizable_bswap and
5085 vect_get_vec_def_for_stmt_copy.
5086 (vectorizable_simd_clone_call, vectorizable_assignment)
5087 (vectorizable_shift, vectorizable_operation, vectorizable_condition)
5088 (vectorizable_comparison): Update calls to
5089 vect_get_vec_def_for_stmt_copy.
5090 (vectorizable_store): Likewise. Remove now-unnecessary calls to
5091 vect_is_simple_use.
5092 (vect_get_loop_based_defs): Remove dt argument and update call
5093 to vect_get_vec_def_for_stmt_copy.
5094 (vectorizable_conversion): Update calls to vect_get_loop_based_defs
5095 and vect_get_vec_def_for_stmt_copy.
5096 (vectorizable_load): Update calls to vect_build_gather_load_calls
5097 and vect_get_vec_def_for_stmt_copy.
5098 * tree-vect-loop.c (vect_create_epilog_for_reduction)
5099 (vectorizable_reduction, vectorizable_live_operation): Update calls
5100 to vect_get_vec_def_for_stmt_copy.
5101
5102 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
5103
5104 * tree-vect-data-refs.c (vect_record_base_alignment): Replace vec_info
5105 and gimple stmt arguments with a stmt_vec_info.
5106 (vect_record_base_alignments): Update calls accordingly.
5107 * tree-vect-slp.c (vect_record_max_nunits): Replace vec_info
5108 and gimple stmt arguments with a stmt_vec_info.
5109 (vect_build_slp_tree_1): Remove vinfo argument and update call
5110 to vect_record_max_nunits.
5111 (vect_build_slp_tree_2): Update calls to vect_build_slp_tree_1
5112 and vect_record_max_nunits.
5113
5114 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
5115
5116 * tree-vectorizer.h (nested_in_vect_loop_p): Move further down
5117 file and take a stmt_vec_info instead of a gimple stmt.
5118 (supportable_widening_operation, vect_finish_replace_stmt)
5119 (vect_finish_stmt_generation, vect_get_store_rhs)
5120 (vect_get_vec_def_for_operand_1, vect_get_vec_def_for_operand)
5121 (vect_get_vec_defs, vect_init_vector, vect_transform_stmt)
5122 (vect_remove_stores, vect_analyze_stmt, vectorizable_condition)
5123 (vect_get_smallest_scalar_type, vect_check_gather_scatter)
5124 (vect_create_data_ref_ptr, bump_vector_ptr)
5125 (vect_permute_store_chain, vect_setup_realignment)
5126 (vect_transform_grouped_load, vect_record_grouped_load_vectors)
5127 (vect_create_addr_base_for_vector_ref, vectorizable_live_operation)
5128 (vectorizable_reduction, vectorizable_induction)
5129 (get_initial_def_for_reduction, is_simple_and_all_uses_invariant)
5130 (vect_get_place_in_interleaving_chain): Take stmt_vec_infos rather
5131 than gimple stmts as arguments.
5132 * tree-vect-data-refs.c (vect_get_smallest_scalar_type)
5133 (vect_preserves_scalar_order_p, vect_slp_analyze_node_dependences)
5134 (can_group_stmts_p, vect_check_gather_scatter)
5135 (vect_create_addr_base_for_vector_ref, vect_create_data_ref_ptr)
5136 (bump_vector_ptr, vect_permute_store_chain, vect_setup_realignment)
5137 (vect_permute_load_chain, vect_shift_permute_load_chain)
5138 (vect_transform_grouped_load)
5139 (vect_record_grouped_load_vectors): Likewise.
5140 * tree-vect-loop.c (vect_fixup_reduc_chain)
5141 (get_initial_def_for_reduction, vect_create_epilog_for_reduction)
5142 (vectorize_fold_left_reduction, is_nonwrapping_integer_induction)
5143 (vectorizable_reduction, vectorizable_induction)
5144 (vectorizable_live_operation, vect_loop_kill_debug_uses): Likewise.
5145 * tree-vect-patterns.c (type_conversion_p, adjust_bool_stmts)
5146 (vect_get_load_store_mask): Likewise.
5147 * tree-vect-slp.c (vect_get_place_in_interleaving_chain)
5148 (vect_analyze_slp_instance, vect_mask_constant_operand_p): Likewise.
5149 * tree-vect-stmts.c (vect_mark_relevant)
5150 (is_simple_and_all_uses_invariant)
5151 (exist_non_indexing_operands_for_use_p, process_use)
5152 (vect_init_vector_1, vect_init_vector, vect_get_vec_def_for_operand_1)
5153 (vect_get_vec_def_for_operand, vect_get_vec_defs)
5154 (vect_finish_stmt_generation_1, vect_finish_replace_stmt)
5155 (vect_finish_stmt_generation, vect_truncate_gather_scatter_offset)
5156 (compare_step_with_zero, vect_get_store_rhs, get_group_load_store_type)
5157 (get_negative_load_store_type, get_load_store_type)
5158 (vect_check_load_store_mask, vect_check_store_rhs)
5159 (vect_build_gather_load_calls, vect_get_strided_load_store_ops)
5160 (vectorizable_bswap, vectorizable_call, vectorizable_simd_clone_call)
5161 (vect_create_vectorized_demotion_stmts, vectorizable_conversion)
5162 (vectorizable_assignment, vectorizable_shift, vectorizable_operation)
5163 (get_group_alias_ptr_type, vectorizable_store, hoist_defs_of_uses)
5164 (vectorizable_load, vectorizable_condition, vectorizable_comparison)
5165 (vect_analyze_stmt, vect_transform_stmt, vect_remove_stores)
5166 (supportable_widening_operation): Likewise.
5167
5168 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
5169
5170 * tree-vect-data-refs.c (vect_describe_gather_scatter_call): Take
5171 a stmt_vec_info instead of a gcall.
5172 (vect_check_gather_scatter): Update call accordingly.
5173 * tree-vect-loop-manip.c (iv_phi_p): Take a stmt_vec_info instead
5174 of a gphi.
5175 (vect_can_advance_ivs_p, vect_update_ivs_after_vectorizer)
5176 (slpeel_update_phi_nodes_for_loops):): Update calls accordingly.
5177 * tree-vect-loop.c (vect_transform_loop_stmt): Take a stmt_vec_info
5178 instead of a gimple stmt.
5179 (vect_transform_loop): Update calls accordingly.
5180 * tree-vect-slp.c (vect_split_slp_store_group): Take and return
5181 stmt_vec_infos instead of gimple stmts.
5182 (vect_analyze_slp_instance): Update use accordingly.
5183 * tree-vect-stmts.c (read_vector_array, write_vector_array)
5184 (vect_clobber_variable, vect_stmt_relevant_p, permute_vec_elements)
5185 (vect_use_strided_gather_scatters_p, vect_build_all_ones_mask)
5186 (vect_build_zero_merge_argument, vect_get_gather_scatter_ops)
5187 (vect_gen_widened_results_half, vect_get_loop_based_defs)
5188 (vect_create_vectorized_promotion_stmts, can_vectorize_live_stmts):
5189 Take a stmt_vec_info instead of a gimple stmt and pass stmt_vec_infos
5190 down to subroutines.
5191
5192 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
5193
5194 * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Change the type
5195 of the worklist from a vector of gimple stmts to a vector of
5196 stmt_vec_infos.
5197 * tree-vect-stmts.c (vect_mark_relevant, process_use)
5198 (vect_mark_stmts_to_be_vectorized): Likewise
5199
5200 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
5201
5202 * tree-vect-loop.c (vect_analyze_loop_operations): Look up the
5203 statement before passing it to vect_analyze_stmt.
5204 (vect_create_epilog_for_reduction): Use a stmt_vec_info to walk
5205 the chain of phi vector definitions. Track the exit phi via its
5206 stmt_vec_info.
5207 (vectorizable_reduction): Set cond_stmt_vinfo directly from the
5208 STMT_VINFO_REDUC_DEF.
5209 * tree-vect-slp.c (vect_get_place_in_interleaving_chain): Use
5210 stmt_vec_infos to handle the statement chains.
5211 (vect_get_slp_defs): Record the first statement in the node
5212 using a stmt_vec_info.
5213 * tree-vect-stmts.c (vect_mark_stmts_to_be_vectorized): Look up
5214 statements here and pass their stmt_vec_info down to subroutines.
5215 (vect_init_vector_1): Hoist call to vinfo_for_stmt and pass it
5216 down to vect_finish_stmt_generation.
5217 (vect_init_vector, vect_get_vec_defs, vect_finish_replace_stmt)
5218 (vect_finish_stmt_generation): Call vinfo_for_stmt and pass
5219 stmt_vec_infos to subroutines.
5220 (vect_remove_stores): Use stmt_vec_infos to handle the statement
5221 chains.
5222
5223 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
5224
5225 * tree-vect-data-refs.c (vect_slp_analyze_node_dependences):
5226 (vect_check_gather_scatter, vect_create_data_ref_ptr, bump_vector_ptr)
5227 (vect_permute_store_chain, vect_setup_realignment)
5228 (vect_permute_load_chain, vect_shift_permute_load_chain)
5229 (vect_transform_grouped_load): Use stmt_vec_info rather than gimple
5230 stmts internally, and when passing values to other vectorizer routines.
5231 * tree-vect-loop-manip.c (vect_can_advance_ivs_p): Likewise.
5232 * tree-vect-loop.c (vect_analyze_scalar_cycles_1)
5233 (vect_analyze_loop_operations, get_initial_def_for_reduction)
5234 (vect_create_epilog_for_reduction, vectorize_fold_left_reduction)
5235 (vectorizable_reduction, vectorizable_induction)
5236 (vectorizable_live_operation, vect_transform_loop_stmt)
5237 (vect_transform_loop): Likewise.
5238 * tree-vect-patterns.c (vect_reassociating_reduction_p)
5239 (vect_recog_widen_op_pattern, vect_recog_mixed_size_cond_pattern)
5240 (vect_recog_bool_pattern, vect_recog_gather_scatter_pattern): Likewise.
5241 * tree-vect-slp.c (vect_analyze_slp_instance): Likewise.
5242 (vect_slp_analyze_node_operations_1): Likewise.
5243 * tree-vect-stmts.c (vect_mark_relevant, process_use)
5244 (exist_non_indexing_operands_for_use_p, vect_init_vector_1)
5245 (vect_mark_stmts_to_be_vectorized, vect_get_vec_def_for_operand)
5246 (vect_finish_stmt_generation_1, get_group_load_store_type)
5247 (get_load_store_type, vect_build_gather_load_calls)
5248 (vectorizable_bswap, vectorizable_call, vectorizable_simd_clone_call)
5249 (vect_create_vectorized_demotion_stmts, vectorizable_conversion)
5250 (vectorizable_assignment, vectorizable_shift, vectorizable_operation)
5251 (vectorizable_store, vectorizable_load, vectorizable_condition)
5252 (vectorizable_comparison, vect_analyze_stmt, vect_transform_stmt)
5253 (supportable_widening_operation): Likewise.
5254 (vect_get_vector_types_for_stmt): Likewise.
5255 * tree-vectorizer.h (vect_dr_behavior): Likewise.
5256
5257 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
5258
5259 * tree-vect-data-refs.c (vect_analyze_data_ref_dependence)
5260 (vect_slp_analyze_node_dependences, vect_analyze_data_ref_accesses)
5261 (vect_permute_store_chain, vect_permute_load_chain)
5262 (vect_shift_permute_load_chain, vect_transform_grouped_load): Avoid
5263 repeated stmt_vec_info lookups.
5264 * tree-vect-loop-manip.c (vect_can_advance_ivs_p): Likewise.
5265 (vect_update_ivs_after_vectorizer): Likewise.
5266 * tree-vect-loop.c (vect_is_simple_reduction): Likewise.
5267 (vect_create_epilog_for_reduction, vectorizable_reduction): Likewise.
5268 * tree-vect-patterns.c (adjust_bool_stmts): Likewise.
5269 * tree-vect-slp.c (vect_analyze_slp_instance): Likewise.
5270 (vect_bb_slp_scalar_cost): Likewise.
5271 * tree-vect-stmts.c (get_group_alias_ptr_type): Likewise.
5272
5273 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
5274
5275 * tree-vect-data-refs.c (vect_check_gather_scatter): Pass the
5276 gcall rather than the generic gimple stmt to gimple_call_internal_fn.
5277 (vect_get_smallest_scalar_type, can_group_stmts_p): Use dyn_cast
5278 to get gassigns and gcalls, rather than operating on generc gimple
5279 stmts.
5280 * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p)
5281 (vect_mark_stmts_to_be_vectorized, vectorizable_store)
5282 (vectorizable_load, vect_analyze_stmt): Likewise.
5283 * tree-vect-loop.c (vectorizable_reduction): Likewise gphi.
5284
5285 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
5286
5287 * tree-vectorizer.h (get_earlier_stmt, get_later_stmt): Take and
5288 return stmt_vec_infos rather than gimple stmts. Do not accept
5289 null arguments.
5290 (vect_find_last_scalar_stmt_in_slp): Return a stmt_vec_info instead
5291 of a gimple stmt.
5292 * tree-vect-slp.c (vect_find_last_scalar_stmt_in_slp): Likewise.
5293 Update use of get_later_stmt.
5294 (vect_get_constant_vectors): Update call accordingly.
5295 (vect_schedule_slp_instance): Likewise
5296 * tree-vect-data-refs.c (vect_slp_analyze_node_dependences): Likewise.
5297 (vect_slp_analyze_instance_dependence): Likewise.
5298 (vect_preserves_scalar_order_p): Update use of get_earlier_stmt.
5299
5300 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
5301
5302 * tree-vectorizer.h (stmt_info_for_cost::stmt): Replace with...
5303 (stmt_info_for_cost::stmt_info): ...this new field.
5304 (add_stmt_costs): Update accordingly.
5305 * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost)
5306 (vect_get_known_peeling_cost): Likewise.
5307 (vect_estimate_min_profitable_iters): Likewise.
5308 * tree-vect-stmts.c (record_stmt_cost): Likewise.
5309
5310 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
5311
5312 * tree-vectorizer.h (_loop_vec_info::may_misalign_stmts): Change
5313 from an auto_vec<gimple *> to an auto_vec<stmt_vec_info>.
5314 * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Update
5315 accordingly.
5316 * tree-vect-loop-manip.c (vect_create_cond_for_align_checks): Likewise.
5317
5318 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
5319
5320 * tree-vectorizer.h (_stmt_vec_info::same_dr_stmt): Change from
5321 a gimple stmt to a stmt_vec_info.
5322 * tree-vect-stmts.c (vectorizable_load): Update accordingly.
5323
5324 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
5325
5326 * tree-vectorizer.h (vec_info::grouped_stores): Change from
5327 an auto_vec<gimple *> to an auto_vec<stmt_vec_info>.
5328 (_loop_vec_info::reduction_chains): Likewise.
5329 * tree-vect-loop.c (vect_fixup_scalar_cycles_with_patterns): Update
5330 accordingly.
5331 * tree-vect-slp.c (vect_analyze_slp): Likewise.
5332
5333 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
5334
5335 * tree-vectorizer.h (_stmt_vec_info::first_element): Change from
5336 a gimple stmt to a stmt_vec_info.
5337 (_stmt_vec_info::next_element): Likewise.
5338 * tree-vect-data-refs.c (vect_update_misalignment_for_peel)
5339 (vect_slp_analyze_and_verify_node_alignment)
5340 (vect_analyze_group_access_1, vect_analyze_group_access)
5341 (vect_small_gap_p, vect_prune_runtime_alias_test_list)
5342 (vect_create_data_ref_ptr, vect_record_grouped_load_vectors)
5343 (vect_supportable_dr_alignment): Update accordingly.
5344 * tree-vect-loop.c (vect_fixup_reduc_chain): Likewise.
5345 (vect_fixup_scalar_cycles_with_patterns, vect_is_slp_reduction)
5346 (vect_is_simple_reduction, vectorizable_reduction): Likewise.
5347 * tree-vect-patterns.c (vect_reassociating_reduction_p): Likewise.
5348 * tree-vect-slp.c (vect_build_slp_tree_1)
5349 (vect_attempt_slp_rearrange_stmts, vect_supported_load_permutation_p)
5350 (vect_split_slp_store_group, vect_analyze_slp_instance)
5351 (vect_analyze_slp, vect_transform_slp_perm_load): Likewise.
5352 * tree-vect-stmts.c (vect_model_store_cost, vect_model_load_cost)
5353 (get_group_load_store_type, get_load_store_type)
5354 (get_group_alias_ptr_type, vectorizable_store, vectorizable_load)
5355 (vect_transform_stmt, vect_remove_stores): Likewise.
5356
5357 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
5358
5359 * tree-vectorizer.h (vect_dr_stmt): Return a stmt_vec_info rather
5360 than a gimple stmt.
5361 * tree-vect-data-refs.c (vect_analyze_data_ref_dependence)
5362 (vect_slp_analyze_data_ref_dependence, vect_record_base_alignments)
5363 (vect_calculate_target_alignmentm, vect_compute_data_ref_alignment)
5364 (vect_update_misalignment_for_peel, vect_verify_datarefs_alignment)
5365 (vector_alignment_reachable_p, vect_get_data_access_cost)
5366 (vect_get_peeling_costs_all_drs, vect_peeling_hash_get_lowest_cost)
5367 (vect_peeling_supportable, vect_enhance_data_refs_alignment)
5368 (vect_find_same_alignment_drs, vect_analyze_data_refs_alignment)
5369 (vect_analyze_group_access_1, vect_analyze_group_access)
5370 (vect_analyze_data_ref_access, vect_analyze_data_ref_accesses)
5371 (vect_vfa_access_size, vect_small_gap_p, vect_analyze_data_refs)
5372 (vect_supportable_dr_alignment): Remove vinfo_for_stmt from the
5373 result of vect_dr_stmt and use the stmt_vec_info instead of
5374 the associated gimple stmt.
5375 * tree-vect-loop-manip.c (get_misalign_in_elems): Likewise.
5376 (vect_gen_prolog_loop_niters): Likewise.
5377 * tree-vect-loop.c (vect_analyze_loop_2): Likewise.
5378
5379 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
5380
5381 * tree-vectorizer.h (_slp_tree::stmts): Change from a vec<gimple *>
5382 to a vec<stmt_vec_info>.
5383 * tree-vect-slp.c (vect_free_slp_tree): Update accordingly.
5384 (vect_create_new_slp_node): Take a vec<gimple *> instead of a
5385 vec<stmt_vec_info>.
5386 (_slp_oprnd_info::def_stmts): Change from a vec<gimple *>
5387 to a vec<stmt_vec_info>.
5388 (bst_traits::value_type, bst_traits::value_type): Likewise.
5389 (bst_traits::hash): Update accordingly.
5390 (vect_get_and_check_slp_defs): Change the stmts parameter from
5391 a vec<gimple *> to a vec<stmt_vec_info>.
5392 (vect_two_operations_perm_ok_p, vect_build_slp_tree_1): Likewise.
5393 (vect_build_slp_tree): Likewise.
5394 (vect_build_slp_tree_2): Likewise. Update uses of
5395 SLP_TREE_SCALAR_STMTS.
5396 (vect_print_slp_tree): Update uses of SLP_TREE_SCALAR_STMTS.
5397 (vect_mark_slp_stmts, vect_mark_slp_stmts_relevant)
5398 (vect_slp_rearrange_stmts, vect_attempt_slp_rearrange_stmts)
5399 (vect_supported_load_permutation_p, vect_find_last_scalar_stmt_in_slp)
5400 (vect_detect_hybrid_slp_stmts, vect_slp_analyze_node_operations_1)
5401 (vect_slp_analyze_node_operations, vect_slp_analyze_operations)
5402 (vect_bb_slp_scalar_cost, vect_slp_analyze_bb_1)
5403 (vect_get_constant_vectors, vect_get_slp_defs)
5404 (vect_transform_slp_perm_load, vect_schedule_slp_instance)
5405 (vect_remove_slp_scalar_calls, vect_schedule_slp): Likewise.
5406 (vect_analyze_slp_instance): Build up a vec of stmt_vec_infos
5407 instead of gimple stmts.
5408 * tree-vect-data-refs.c (vect_slp_analyze_node_dependences): Change
5409 the stores parameter for a vec<gimple *> to a vec<stmt_vec_info>.
5410 (vect_slp_analyze_instance_dependence): Update uses of
5411 SLP_TREE_SCALAR_STMTS.
5412 (vect_slp_analyze_and_verify_node_alignment): Likewise.
5413 (vect_slp_analyze_and_verify_instance_alignment): Likewise.
5414 * tree-vect-loop.c (neutral_op_for_slp_reduction): Likewise.
5415 (get_initial_defs_for_reduction): Likewise.
5416 (vect_create_epilog_for_reduction): Likewise.
5417 (vectorize_fold_left_reduction): Likewise.
5418 * tree-vect-stmts.c (vect_prologue_cost_for_slp_op): Likewise.
5419 (vect_model_simple_cost, vectorizable_shift, vectorizable_load)
5420 (can_vectorize_live_stmts): Likewise.
5421
5422 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
5423
5424 * tree-vectorizer.h (_loop_vec_info::reductions): Change from an
5425 auto_vec<gimple *> to an auto_vec<stmt_vec_info>.
5426 (vect_force_simple_reduction): Take and return stmt_vec_infos rather
5427 than gimple stmts.
5428 * tree-parloops.c (valid_reduction_p): Take a stmt_vec_info instead
5429 of a gimple stmt.
5430 (gather_scalar_reductions): Update after above interface changes.
5431 * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Likewise.
5432 (vect_is_simple_reduction): Take and return stmt_vec_infos rather
5433 than gimple stmts.
5434 (vect_force_simple_reduction): Likewise.
5435 * tree-vect-patterns.c (vect_pattern_recog_1): Update use of
5436 LOOP_VINFO_REDUCTIONS.
5437 * tree-vect-slp.c (vect_analyze_slp_instance): Likewise.
5438
5439 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
5440
5441 * tree-vectorizer.h (_stmt_vec_info::reduc_def): Change from
5442 a gimple stmt to a stmt_vec_info.
5443 * tree-vect-loop.c (vect_active_double_reduction_p)
5444 (vect_force_simple_reduction, vectorizable_reduction): Update
5445 accordingly.
5446
5447 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
5448
5449 * tree-vectorizer.h (_slp_tree::vec_stmts): Change from a
5450 vec<gimple *> to a vec<stmt_vec_info>.
5451 * tree-vect-loop.c (vect_create_epilog_for_reduction): Change
5452 the reduction_phis argument from a vec<gimple *> to a
5453 vec<stmt_vec_info>.
5454 (vectorizable_reduction): Likewise the phis local variable that
5455 is passed to vect_create_epilog_for_reduction. Update for new type
5456 of SLP_TREE_VEC_STMTS.
5457 (vectorizable_induction): Update for new type of SLP_TREE_VEC_STMTS.
5458 (vectorizable_live_operation): Likewise.
5459 * tree-vect-slp.c (vect_get_slp_vect_defs): Likewise.
5460 (vect_transform_slp_perm_load, vect_schedule_slp_instance): Likewise.
5461
5462 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
5463
5464 * tree-vectorizer.h (_stmt_vec_info::vectorized_stmt): Change from
5465 a gimple stmt to a stmt_vec_info.
5466 (vectorizable_condition, vectorizable_live_operation)
5467 (vectorizable_reduction, vectorizable_induction): Pass back the
5468 vectorized statement as a stmt_vec_info.
5469 * tree-vect-data-refs.c (vect_record_grouped_load_vectors): Update
5470 use of STMT_VINFO_VEC_STMT.
5471 * tree-vect-loop.c (vect_create_epilog_for_reduction): Likewise,
5472 accumulating the inner phis that feed the STMT_VINFO_VEC_STMT
5473 as stmt_vec_infos rather than gimple stmts.
5474 (vectorize_fold_left_reduction): Change vec_stmt from a gimple stmt
5475 to a stmt_vec_info.
5476 (vectorizable_live_operation): Likewise.
5477 (vectorizable_reduction, vectorizable_induction): Likewise,
5478 updating use of STMT_VINFO_VEC_STMT.
5479 * tree-vect-stmts.c (vect_get_vec_def_for_operand_1): Update use
5480 of STMT_VINFO_VEC_STMT.
5481 (vect_build_gather_load_calls, vectorizable_bswap, vectorizable_call)
5482 (vectorizable_simd_clone_call, vectorizable_conversion)
5483 (vectorizable_assignment, vectorizable_shift, vectorizable_operation)
5484 (vectorizable_store, vectorizable_load, vectorizable_condition)
5485 (vectorizable_comparison, can_vectorize_live_stmts): Change vec_stmt
5486 from a gimple stmt to a stmt_vec_info.
5487 (vect_transform_stmt): Update use of STMT_VINFO_VEC_STMT. Pass a
5488 pointer to a stmt_vec_info to the vectorizable_* routines.
5489
5490 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
5491
5492 * tree-vectorizer.h (_stmt_vec_info::related_stmt): Change from
5493 a gimple stmt to a stmt_vec_info.
5494 (is_pattern_stmt_p): Update accordingly.
5495 * tree-vect-data-refs.c (vect_preserves_scalar_order_p): Likewise.
5496 (vect_record_grouped_load_vectors): Likewise.
5497 * tree-vect-loop.c (vect_determine_vf_for_stmt): Likewise.
5498 (vect_fixup_reduc_chain, vect_update_vf_for_slp): Likewise.
5499 (vect_model_reduction_cost): Likewise.
5500 (vect_create_epilog_for_reduction): Likewise.
5501 (vectorizable_reduction, vectorizable_induction): Likewise.
5502 * tree-vect-patterns.c (vect_init_pattern_stmt): Likewise.
5503 Return the stmt_vec_info for the pattern statement.
5504 (vect_set_pattern_stmt): Update use of STMT_VINFO_RELATED_STMT.
5505 (vect_split_statement, vect_mark_pattern_stmts): Likewise.
5506 * tree-vect-slp.c (vect_detect_hybrid_slp_stmts): Likewise.
5507 (vect_detect_hybrid_slp, vect_get_slp_defs): Likewise.
5508 * tree-vect-stmts.c (vect_mark_relevant): Likewise.
5509 (vect_get_vec_def_for_operand_1, vectorizable_call): Likewise.
5510 (vectorizable_simd_clone_call, vect_analyze_stmt, new_stmt_vec_info)
5511 (free_stmt_vec_info, vect_is_simple_use): Likewise.
5512
5513 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
5514
5515 * tree-vectorizer.h (vect_finish_replace_stmt): Return a stmt_vec_info
5516 (vect_finish_stmt_generation): Likewise.
5517 * tree-vect-stmts.c (vect_finish_stmt_generation_1): Likewise.
5518 (vect_finish_replace_stmt, vect_finish_stmt_generation): Likewise.
5519 (vect_build_gather_load_calls): Use the return value of the above
5520 functions instead of a separate call to vinfo_for_stmt. Use narrow
5521 scopes for the input gimple stmt and wider scopes for the associated
5522 stmt_vec_info. Use vec_info::lookup_def when setting these
5523 stmt_vec_infos from an SSA_NAME definition.
5524 (vectorizable_bswap, vectorizable_call, vectorizable_simd_clone_call)
5525 (vect_create_vectorized_demotion_stmts, vectorizable_conversion)
5526 (vectorizable_assignment, vectorizable_shift, vectorizable_operation)
5527 (vectorizable_store, vectorizable_load, vectorizable_condition)
5528 (vectorizable_comparison): Likewise.
5529 * tree-vect-loop.c (vectorize_fold_left_reduction): Likewise.
5530 (vectorizable_reduction): Likewise.
5531
5532 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
5533
5534 * tree-vectorizer.h (vect_is_simple_use): Add an optional
5535 stmt_vec_info * parameter before the optional gimple **.
5536 * tree-vect-stmts.c (vect_is_simple_use): Likewise.
5537 (process_use, vect_get_vec_def_for_operand_1): Update callers.
5538 (vect_get_vec_def_for_operand, vectorizable_shift): Likewise.
5539 * tree-vect-loop.c (vectorizable_reduction): Likewise.
5540 (vectorizable_live_operation): Likewise.
5541 * tree-vect-patterns.c (type_conversion_p): Likewise.
5542 (vect_look_through_possible_promotion): Likewise.
5543 (vect_recog_rotate_pattern): Likewise.
5544 * tree-vect-slp.c (vect_get_and_check_slp_defs): Likewise.
5545
5546 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
5547
5548 * tree-vectorizer.h (stmt_vec_info): Temporarily change from
5549 a typedef to a wrapper class.
5550 (NULL_STMT_VEC_INFO): New macro.
5551 (vec_info::stmt_infos): Change to vec<stmt_vec_info>.
5552 (stmt_vec_info::operator*): New function.
5553 (stmt_vec_info::operator gimple *): Likewise.
5554 (set_vinfo_for_stmt): Use NULL_STMT_VEC_INFO.
5555 (add_stmt_costs): Likewise.
5556 * tree-vect-loop-manip.c (iv_phi_p): Likewise.
5557 * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost)
5558 (vect_get_known_peeling_cost): Likewise.
5559 (vect_estimate_min_profitable_iters): Likewise.
5560 * tree-vect-patterns.c (vect_init_pattern_stmt): Likewise.
5561 * tree-vect-slp.c (vect_remove_slp_scalar_calls): Likewise.
5562 * tree-vect-stmts.c (vect_build_gather_load_calls): Likewise.
5563 (vectorizable_store, free_stmt_vec_infos): Likewise.
5564 (new_stmt_vec_info): Change return type of xcalloc to
5565 _stmt_vec_info *.
5566
5567 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
5568
5569 * tree-vectorizer.h (vec_info::lookup_single_use): Declare.
5570 * tree-vectorizer.c (vec_info::lookup_single_use): New function.
5571 * tree-vect-loop.c (vectorizable_reduction): Use it instead of
5572 a single_imm_use-based sequence.
5573 * tree-vect-stmts.c (supportable_widening_operation): Likewise.
5574
5575 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
5576
5577 * tree-vectorizer.h (vec_info::lookup_def): Declare.
5578 * tree-vectorizer.c (vec_info::lookup_def): New function.
5579 * tree-vect-patterns.c (vect_get_internal_def): Use it.
5580 (vect_widened_op_tree): Likewise.
5581 * tree-vect-stmts.c (vect_is_simple_use): Likewise.
5582 * tree-vect-loop.c (vect_analyze_loop_operations): Likewise.
5583 (vectorizable_reduction): Likewise.
5584 (vect_valid_reduction_input_p): Take a stmt_vec_info instead
5585 of a gimple *.
5586 (vect_is_slp_reduction): Update calls accordingly. Use
5587 vec_info::lookup_def.
5588 (vect_is_simple_reduction): Likewise
5589 * tree-vect-slp.c (vect_detect_hybrid_slp_1): Use vec_info::lookup_def.
5590
5591 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
5592
5593 * tree-vectorizer.h (vec_info::lookup_stmt): Declare.
5594 * tree-vectorizer.c (vec_info::lookup_stmt): New function.
5595 * tree-vect-loop.c (vect_determine_vf_for_stmt): Use it instead
5596 of vinfo_for_stmt.
5597 (vect_determine_vectorization_factor, vect_analyze_scalar_cycles_1)
5598 (vect_compute_single_scalar_iteration_cost, vect_analyze_loop_form)
5599 (vect_update_vf_for_slp, vect_analyze_loop_operations)
5600 (vect_is_slp_reduction, vectorizable_induction)
5601 (vect_transform_loop_stmt, vect_transform_loop): Likewise.
5602 * tree-vect-patterns.c (vect_init_pattern_stmt):
5603 (vect_determine_min_output_precision_1, vect_determine_precisions)
5604 (vect_pattern_recog): Likewise.
5605 * tree-vect-stmts.c (vect_analyze_stmt, vect_transform_stmt): Likewise.
5606 * config/powerpcspe/powerpcspe.c (rs6000_density_test): Likewise.
5607 * config/rs6000/rs6000.c (rs6000_density_test): Likewise.
5608 * tree-vect-slp.c (vect_detect_hybrid_slp_stmts): Likewise.
5609 (vect_detect_hybrid_slp_1, vect_detect_hybrid_slp_2)
5610 (vect_detect_hybrid_slp): Likewise. Change the walk_stmt_info
5611 info field from a loop to a loop_vec_info.
5612
5613 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
5614
5615 * tree-vectorizer.h (stmt_vec_info): Move typedef earlier in file.
5616 (vec_info::add_stmt): Declare.
5617 * tree-vectorizer.c (vec_info::add_stmt): New function.
5618 * tree-vect-data-refs.c (vect_create_data_ref_ptr): Use it.
5619 * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Likewise.
5620 (vect_create_epilog_for_reduction, vectorizable_reduction): Likewise.
5621 (vectorizable_induction): Likewise.
5622 * tree-vect-slp.c (_bb_vec_info::_bb_vec_info): Likewise.
5623 * tree-vect-stmts.c (vect_finish_stmt_generation_1): Likewise.
5624 (vectorizable_simd_clone_call, vectorizable_store): Likewise.
5625 (vectorizable_load): Likewise.
5626 * tree-vect-patterns.c (vect_init_pattern_stmt): Likewise.
5627 (vect_recog_bool_pattern, vect_recog_mask_conversion_pattern)
5628 (vect_recog_gather_scatter_pattern): Likewise.
5629 (append_pattern_def_seq): Likewise. Remove a check that is
5630 performed by add_stmt itself.
5631
5632 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
5633
5634 * tree-vect-loop.c (vectorizable_reduction): Fix an instance in
5635 which make_ssa_name was called with new_stmt before new_stmt
5636 had been created.
5637
5638 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
5639
5640 * tree-vect-loop.c (vect_valid_reduction_input_p): New function,
5641 split out from...
5642 (vect_is_slp_reduction): ...here...
5643 (vect_is_simple_reduction): ...and here. Remove repetition of tests
5644 that are already known to be false.
5645
5646 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
5647
5648 * tree-vectorizer.h (vect_free_slp_instance): Add a final_p parameter.
5649 * tree-vect-slp.c (vect_free_slp_tree): Likewise. Don't update
5650 STMT_VINFO_NUM_SLP_USES when it's true.
5651 (vect_free_slp_instance): Add a final_p parameter and pass it to
5652 vect_free_slp_tree.
5653 (vect_build_slp_tree_2): Update call to vect_free_slp_instance.
5654 (vect_analyze_slp_instance): Likewise.
5655 (vect_slp_analyze_operations): Likewise.
5656 (vect_slp_analyze_bb_1): Likewise.
5657 * tree-vectorizer.c (vec_info): Likewise.
5658 * tree-vect-loop.c (vect_transform_loop): Likewise.
5659
5660 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
5661
5662 * tree-vect-loop.c (vectorizable_reduction): Assert that the
5663 function is not called for second and subsequent members of
5664 a reduction group.
5665
5666 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
5667
5668 * tree-vect-loop.c (get_initial_def_for_reduction): Move special
5669 cases for nested loops from here to ...
5670 (vect_create_epilog_for_reduction): ...here. Only call
5671 vect_is_simple_use for inner-loop reductions.
5672
5673 2018-07-31 Martin Liska <mliska@suse.cz>
5674
5675 PR gcov-profile/85338
5676 PR gcov-profile/85350
5677 PR gcov-profile/85372
5678 * profile.c (struct location_triplet): New.
5679 (struct location_triplet_hash): Likewise.
5680 (output_location): Do not output a BB that
5681 is already recorded for a line.
5682 (branch_prob): Use streamed_locations.
5683
5684 2018-07-31 Martin Liska <mliska@suse.cz>
5685
5686 PR gcov-profile/85370
5687 * coverage.c (coverage_begin_function): Do not mark target
5688 clones as artificial functions.
5689
5690 2018-07-31 Martin Liska <mliska@suse.cz>
5691
5692 PR gcov-profile/83813
5693 PR gcov-profile/84758
5694 PR gcov-profile/85217
5695 PR gcov-profile/85332
5696 * profile.c (branch_prob): Do not record GOTO expressions
5697 for GIMPLE statements which locations are already streamed.
5698
5699 2018-07-31 Olivier Hainque <hainque@adacore.com>
5700
5701 * gcc.c (handle_spec_function): Accept a soft_matched_part
5702 argument, as do_spec_1. Pass it down to ...
5703 (eval_spec_function): Accept a soft_matched_part argument,
5704 and pass it down to ...
5705 (do_spec_2): Accept a soft_matched_part argument, and pass
5706 it down to do_spec_1.
5707 (do_spec_1): Pass soft_matched_part to handle_spec_function.
5708 (handle_braces): Update call to handle_spec_function.
5709 (driver::set_up_specs): Update calls to do_spec_2.
5710 (compare_debug_dump_opt_spec_function): Likewise.
5711 (compare_debug_self_opt_spec_function): Likewise.
5712
5713 2018-07-31 Olivier Hainque <hainque@adacore.com>
5714
5715 * common.opt (nolibc): New option.
5716 * doc/invoke.texi (Link Options): Document it.
5717 * gcc.c (LINK_GCC_C_SEQUENCE_SPEC): Honor nolibc.
5718 * config/alpha/linux.h: Likewise.
5719 * config/arc/elf.h: Likewise.
5720 * config/arm/uclinux-elf.h: Likewise.
5721 * config/arm/unknown-elf.h: Likewise.
5722 * config/avr/avrlibc.h: Likewise.
5723 * config/bfin/bfin.h: Likewise.
5724 * config/bfin/linux.h: Likewise.
5725 * config/bfin/uclinux.h: Likewise.
5726 * config/darwin.h: Likewise.
5727 * config/darwin10.h: Likewise.
5728 * config/darwin12.h: Likewise.
5729 * config/gnu-user.h: Likewise.
5730 * config/lm32/uclinux-elf.h: Likewise.
5731 * config/pa/pa-hpux11.h: Likewise.
5732 * config/pa/pa64-hpux.h: Likewise.
5733 * config/sparc/sparc.h: Likewise.
5734
5735 2018-07-31 Olivier Hainque <hainque@adacore.com>
5736
5737 * gcc.c (getenv_spec_function): Prepend '/' to value for allowed
5738 undefined variables.
5739
5740 2018-07-30 Segher Boessenkool <segher@kernel.crashing.org>
5741
5742 PR target/86640
5743 * config/arm/arm.c (arm_block_set_aligned_vect): Use gen_int_mode
5744 instead of GEN_INT.
5745
5746 2018-07-30 Bernd Edlinger <bernd.edlinger@hotmail.de>
5747
5748 * tree-ssa-forwprop.c (simplify_builtin_call): Don't create a not NUL
5749 terminated string literal.
5750
5751 2018-07-30 Segher Boessenkool <segher@kernel.crashing.org>
5752
5753 PR rtl-optimization/85160
5754 * combine.c (is_just_move): New function.
5755 (try_combine): Allow combining two instructions into two if neither of
5756 the original instructions was a move.
5757
5758 2018-07-30 Alexander Monakov <amonakov@ispras.ru>
5759
5760 PR target/86673
5761 * doc/extend.texi (Global Register Variables): Discourage use of type
5762 qualifiers.
5763 (Local Register Variables): Likewise.
5764
5765 2018-07-30 Richard Sandiford <richard.sandiford@arm.com>
5766
5767 PR tree-optimization/86506
5768 * hwint.h (ceil_log2): Resync with hwint.c implementation.
5769
5770 2018-07-30 Ilya Leoshkevich <iii@linux.ibm.com>
5771
5772 PR target/86547
5773 * lra-constraints.c (spill_hard_reg_in_range): When selecting the
5774 hard_regno, make sure no insn between `from` and `to` clobbers it.
5775
5776 2018-07-30 Cesar Philippidis <cesar@codesourcery.com>
5777 Tom de Vries <tdevries@suse.de>
5778
5779 * config/nvptx/nvptx.c (PTX_GANG_DEFAULT): Rename to ...
5780 (PTX_DEFAULT_RUNTIME_DIM): ... this.
5781 (nvptx_goacc_validate_dims): Set default worker and gang dims to
5782 PTX_DEFAULT_RUNTIME_DIM.
5783 (nvptx_dim_limit): Ignore GOMP_DIM_WORKER.
5784
5785 2018-07-29 John David Anglin <danglin@gcc.gnu.org>
5786
5787 * config/pa/pa.c (pa_output_addr_vec): Align address table.
5788 * config/pa/pa.h (JUMP_TABLES_IN_TEXT_SECTION): Revise comment.
5789 * config/pa/pa32-linux.h (JUMP_TABLES_IN_TEXT_SECTION): Define.
5790
5791 2018-07-27 Michael Meissner <meissner@linux.ibm.com>
5792
5793 * config/rs6000/constraints.md (wG constraint): Delete, no longer
5794 used.
5795 * config/rs6000/predicates.md (p9_fusion_reg_operand): Rename
5796 predicate to reflect toc fusion has been deleted.
5797 (toc_fusion_mem_raw): Delete, no longer used.
5798 (toc_fusion_mem_wrapped): Likewise.
5799 * config/rs6000/rs6000-cpus.def (POWERPC_MASKS): Delete toc
5800 fusion mask bit.
5801 * config/rs6000/rs6000-protos.h (fusion_wrap_memory_address):
5802 Delete, no longer used.
5803 * config/rs6000/rs6000.c (struct rs6000_reg_addr): Delete fields
5804 meant to be used for toc fusion.
5805 (rs6000_debug_print_mode): Delete toc fusion debugging.
5806 (rs6000_debug_reg_global): Likewise.
5807 (rs6000_init_hard_regno_mode_ok): Delete setting up fields for toc
5808 fusion and secondary reload support that were never used.
5809 (rs6000_option_override_internal): Delete TOC fusion, that was only
5810 partially defined, and it did not work unless you also used the
5811 -mcmodel= switch.
5812 (rs6000_legitimate_address_p): Delete TOC fusion support.
5813 (rs6000_opt_masks): Likewise.
5814 (fusion_wrap_memory_address): Delete function, no longer used.
5815 (fusion_split_address); Delete TOC fusion support.
5816 * config/rs6000/rs6000.h (TARGET_TOC_FUSION_INT): Delete, no
5817 longer used with toc fusion being deleted.
5818 (TARGET_TOC_FUSION_FP): Likewise.
5819 * config/rs6000/rs6000.md (UNSPEC_FUSION_ADDIS): Delete TOC fusion
5820 UNSPEC.
5821 (toc fusion spliter): Delete TOC fusion support.
5822 (toc_fusionload_<mode>): Likewise.
5823 (toc_fusionload_di): Likewise.
5824 (fusion_gpr_load_<mode>): Delete generator function, this insn no
5825 longer needs to be named. Rename predicate to delete TOC fusion.
5826 (fusion_gpr_<P:mode>_<GPR_FUSION:mode>_load): Likewise.
5827 (fusion_gpr_<P:mode>_<GPR_FUSION:mode>_store): Likewise.
5828 (fusion_vsx_<P:mode>_<GPR_FUSION:mode>_load): Likewise.
5829 (fusion_vsx_<P:mode>_<GPR_FUSION:mode>_store): Likewise.
5830 (p9 fusion peephole2s): Rename predicate to delete TOC fusion.
5831
5832 2018-07-27 Kelvin Nilsen <kelvin@gcc.gnu.org>
5833
5834 * doc/extend.texi (Basic PowerPC Built-in Functions Available on
5835 ISA 2.05): Replace __uint128_t with __uint128 and __int128_t with
5836 __int128 in built-in function prototypes.
5837 (PowerPC AltiVec Built-in Functions on ISA 2.07): Likewise.
5838 (PowerPC AltiVec Built-in Functions on ISA 3.0): Likewise.
5839
5840 2018-07-27 Martin Sebor <msebor@redhat.com>
5841
5842 PR tree-optimization/86696
5843 * tree-ssa-strlen.c (get_min_string_length): Handle all integer
5844 types, including enums.
5845 (handle_char_store): Be prepared for the above function to fail.
5846
5847 2018-07-26 Qing Zhao <qing.zhao@oracle.com>
5848
5849 * builtins.c (inline_expand_builtin_string_cmp): Disable inlining
5850 when optimization level is lower than 2 or optimize for size.
5851
5852 2018-07-26 Martin Sebor <msebor@redhat.com>
5853
5854 PR tree-optimization/86043
5855 PR tree-optimization/86042
5856 * tree-ssa-strlen.c (handle_builtin_memcpy): Handle strict overlaps.
5857 (get_string_cst_length): Rename...
5858 (get_min_string_length): ...to this. Add argument.
5859 (handle_char_store): Extend to handle multi-character stores by
5860 MEM_REF.
5861 * tree.c (initializer_zerop): Use new argument. Handle MEM_REF.
5862 * tree.h (initializer_zerop): Add argument.
5863
5864 2018-07-26 Jakub Jelinek <jakub@redhat.com>
5865
5866 PR middle-end/86660
5867 * omp-low.c (scan_sharing_clauses): Don't ignore map clauses for
5868 declare target to variables if they have always,{to,from,tofrom} map
5869 kinds.
5870
5871 2018-07-26 Martin Liska <mliska@suse.cz>
5872
5873 PR lto/86548
5874 * lto-wrapper.c: Add linker_output as prefix
5875 for ltrans_output_file.
5876
5877 2018-07-26 Segher Boessenkool <segher@kernel.crashing.org>
5878
5879 PR rtl-optimization/85805
5880 * combine.c (reg_nonzero_bits_for_combine): Only use the last set
5881 value for hard registers if that was written in the same mode.
5882
5883 2018-07-26 Martin Liska <mliska@suse.cz>
5884
5885 PR gcov-profile/86536
5886 * gcov.c (format_gcov): Use printf format %.*f directly
5887 and do not handle special values.
5888
5889 2018-07-25 Claudiu Zissulescu <claziss@synopsys.com>
5890
5891 * common/config/arc/arc-common.c (arc_option_optimization_table):
5892 Update default optimizations for size.
5893
5894 2018-07-25 Claudiu Zissulescu <claziss@synopsys.com>
5895
5896 * config/arc/arc.md (movsf_insn): Add short instruction selection.
5897 * config/arc/constraints.md (CfZ): New constraint.
5898 * config/arc/fpu.md (addssf3_fpu): Use CfZ constraint.
5899 (subsf3_fpu): Likewise.
5900 (cmpsf_fpu): Likewise.
5901 (cmpsf_fpu_uneq): Likewise.
5902
5903 2018-07-25 Claudiu Zissulescu <claziss@synopsys.com>
5904
5905 * config/arc/arc.c (compact_memory_operand_p): Check for uncached
5906 accesses as well.
5907 (arc_is_uncached_mem_p): uncached applies to both the variable and
5908 the pointer.
5909
5910 2018-07-25 Claudiu Zissulescu <claziss@synopsys.com>
5911
5912 * config/arc/arc.h (ADDITIONAL_REGISTER_NAMES): Add additional
5913 register names.
5914
5915 2018-07-25 David Malcolm <dmalcolm@redhat.com>
5916
5917 * optinfo-emit-json.cc (class optrecord_json_writer): Convert
5918 field "m_scopes" from vec to auto_vec.
5919
5920 2018-07-25 Martin Liska <mliska@suse.cz>
5921
5922 * config/powerpcspe/powerpcspe-protos.h (rs6000_loop_align): Fix
5923 return type.
5924
5925 2018-07-25 Richard Biener <rguenther@suse.de>
5926
5927 PR debug/86654
5928 * dwarf2out.c (dwarf2out_decl): Do not handle nested functions
5929 special wrt context_die late.
5930 (gen_subprogram_die): Re-use DIEs in local scope.
5931
5932 2018-07-25 Richard Sandiford <richard.sandiford@arm.com>
5933
5934 PR tree-optimization/86644
5935 * hwint.c (ceil_log2): Fix comment. Return 0 for 0.
5936
5937 2018-07-25 Martin Liska <mliska@suse.cz>
5938
5939 PR middle-end/86645
5940 * dumpfile.c: And excluded values with TDF_ALL_VALUES.
5941 * dumpfile.h (enum dump_flag): Defince TDF_ALL_VALUES.
5942
5943 2018-07-25 Martin Liska <mliska@suse.cz>
5944
5945 PR sanitizer/79635
5946 * params.def: Explain ASan abbreviation and provide
5947 a documentation link.
5948
5949 2018-07-24 Martin Sebor <msebor@redhat.com>
5950
5951 PR tree-optimization/86622
5952 PR tree-optimization/86532
5953 * builtins.h (string_length): Declare.
5954 * builtins.c (c_strlen): Correct handling of non-constant offsets.
5955 (check_access): Be prepared for non-constant length ranges.
5956 (string_length): Make extern.
5957 * expr.c (string_constant): Only handle the minor non-constant
5958 array index. Use string_constant to compute the length of
5959 a generic string constant.
5960
5961 2018-07-24 Richard Sandiford <richard.sandiford@arm.com>
5962
5963 PR tree-optimization/86618
5964 * tree-vect-stmts.c (vectorizable_call): Don't take the address
5965 of LOOP_VINFO_MASKS (loop_vinfo) when loop_vinfo is null.
5966
5967 2018-07-24 David Malcolm <dmalcolm@redhat.com>
5968
5969 PR tree-optimization/86636
5970 * json.cc (json::object::set): Fix comment. Add assertions.
5971 (json::array::append): Move here from json.h. Add comment and an
5972 assertion.
5973 (json::string::string): Likewise.
5974 * json.h (json::array::append): Move to json.cc.
5975 (json::string::string): Likewise.
5976 * optinfo-emit-json.cc
5977 (optrecord_json_writer::impl_location_to_json): Assert that we
5978 aren't attempting to write out UNKNOWN_LOCATION, or an ad-hoc
5979 wrapper around it. Expand the location once, rather than three
5980 times.
5981 (optrecord_json_writer::inlining_chain_to_json): Fix the check for
5982 UNKNOWN_LOCATION, to use LOCATION_LOCUS to look through ad-hoc
5983 wrappers.
5984 (optrecord_json_writer::optinfo_to_json): Likewise, in four
5985 places. Fix some overlong lines.
5986
5987 2018-07-24 Matthew Malcomson <matthew.malcomson@arm.com>
5988
5989 * config/aarch64/aarch64-simd.md
5990 (aarch64_<ANY_EXTEND:su><ADDSUB:optab>w<mode>): Split into...
5991 (aarch64_<ANY_EXTEND:su>subw<mode>): ... This...
5992 (aarch64_<ANY_EXTEND:su>addw<mode>): ... And this.
5993 (aarch64_<ANY_EXTEND:su><ADDSUB:optab>w<mode>_internal): Split into...
5994 (aarch64_<ANY_EXTEND:su>subw<mode>_internal): ... This...
5995 (aarch64_<ANY_EXTEND:su>addw<mode>_internal): ... And this.
5996 (aarch64_<ANY_EXTEND:su><ADDSUB:optab>w2<mode>_internal): Split into...
5997 (aarch64_<ANY_EXTEND:su>subw2<mode>_internal): ... This...
5998 (aarch64_<ANY_EXTEND:su>addw2<mode>_internal): ... And this.
5999
6000 2018-07-24 Jakub Jelinek <jakub@redhat.com>
6001
6002 PR middle-end/86627
6003 * expmed.c (expand_divmod): Punt if d == HOST_WIDE_INT_MIN
6004 and size > HOST_BITS_PER_WIDE_INT. For size > HOST_BITS_PER_WIDE_INT
6005 and abs_d == d, do the power of two handling if profitable.
6006
6007 2018-07-24 Richard Biener <rguenther@suse.de>
6008
6009 * match.pd: Add BIT_FIELD_REF canonicalizations.
6010
6011 2018-07-23 Bernd Edlinger <bernd.edlinger@hotmail.de>
6012
6013 PR c/86617
6014 * genmatch.c (dt_operand::gen_match_op): Avoid folding volatile values.
6015
6016 2018-07-23 Bernd Edlinger <bernd.edlinger@hotmail.de>
6017
6018 * gimple-fold.c (gimple_fold_builtin_printf): Don't create a not NUL
6019 terminated STRING_CST object.
6020
6021 2018-07-23 Bernd Edlinger <bernd.edlinger@hotmail.de>
6022
6023 hsa-dump.c (dump_hsa_symbol): Avoid out of scope access to buf.
6024
6025 2018-07-23 Segher Boessenkool <segher@kernel.crashing.org>
6026
6027 * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Adjust.
6028 * config/rs6000/rs6000-protos.h (rs6000_split_v4si_init): Delete.
6029 * config/rs6000/rs6000.c (rs6000_expand_vector_init): Always force
6030 the elements into a register.
6031 (rs6000_split_v4si_init_di_reg): Delete.
6032 (rs6000_split_v4si_init): Delete.
6033 * config/rs6000/vsx.md (unspec): Delete UNSPEC_VSX_VEC_INIT.
6034 (vsx_init_v4si): Rewrite as a define_expand.
6035
6036 2018-07-23 Segher Boessenkool <segher@kernel.crashing.org>
6037
6038 * config/rs6000/rs6000.md (splitters for rldimi and rlwimi with the
6039 zero_extend argument from memory): New.
6040
6041 2018-07-22 Martin Sebor <msebor@redhat.com>
6042
6043 PR bootstrap/86621
6044 * gimple-ssa-warn-alloca.c (alloca_call_type_by_arg): Avoid
6045 diagnosing calls with unknown arguments unless -Walloca-larger-than
6046 is restricted to less than PTRDIFF_MAX bytes.
6047
6048 2018-07-22 Gerald Pfeifer <gerald@pfeifer.com>
6049
6050 * doc/gcov.texi (Invoking Gcov): Editorial changes.
6051
6052 2018-07-20 David Malcolm <dmalcolm@redhat.com>
6053
6054 * pretty-print.c (text_info::set_location): Remove redundant
6055 "line_table" parameter from call to rich_location::set_range.
6056
6057 2018-07-20 Martin Sebor <msebor@redhat.com>
6058
6059 PR middle-end/82063
6060 * builtins.c (expand_builtin_alloca): Adjust.
6061 * calls.c (alloc_max_size): Simplify.
6062 * cgraphunit.c (cgraph_node::expand): Adjust.
6063 * common.opt (larger_than_size, warn_frame_larger_than): Remove
6064 variables.
6065 (frame_larger_than_size): Same.
6066 (-Wframe-larger-than, -Wlarger-than, -Wstack-usage): Change options
6067 to take a HOST_WIDE_INT argument and accept a byte-size suffix.
6068 Initialize.
6069 * doc/invoke.texi (GCC Command Options): Document option arguments.
6070 Explain byte-size arguments and suffixes.
6071 (-Wvla-larger-than, -Wno-alloc-size-larger-than): Update.
6072 (-Wno-alloca-larger-than, -Wno-vla-larger-than): Same.
6073 (-Wframe-larger-than, -Wlarger-than, -Wstack-usage): Same.
6074 * doc/options.texi (UInteger): Expand.
6075 (Host_Wide_Int, ByteSize): Document new properties.
6076 * final.c (final_start_function_1): Include sizes in an error message.
6077 * function.c (frame_offset_overflow): Same.
6078 * gimple-ssa-warn-alloca.c (pass_walloca::gate): Adjust.
6079 (alloca_call_type_by_arg): Change function argument to HOST_WIDE_INT.
6080 Diagnose unbounded alloca calls only for limits of less than
6081 PTRDIFF_MAX.
6082 (alloca_call_type): Adjust. Diagnose possibly out-of-bounds alloca
6083 calls and VLA size only for limits of less than PTRDIFF_MAX. Same
6084 for alloca(0).
6085 (pass_walloca::execute): Adjust. Diagnose alloca calls in loops
6086 only for limits of less than PTRDIFF_MAX.
6087 * langhooks-def.h (lhd_handle_option): Change function argument
6088 to HOST_WIDE_INT.
6089 * langhooks.c (lhd_handle_option): Same.
6090 * langhooks.h (handle_option): Same.
6091 * opt-functions.awk (switch_bit_fields): Handle Host_Wide_Int and
6092 ByteSize flags.
6093 (var_type, var_type_struct): Same.
6094 (var_set): Handle ByteSize flag.
6095 * optc-gen.awk: Add comments to output to ease debugging. Make
6096 use of HOST_WIDE_INT where appropriate.
6097 * opts-gen-save.awk: Use %lx to format unsigned long.
6098 * opth-gen.awk: Change function argument to HOST_WIDE_INT.
6099 * opts-common.c (integral_argument): Return HOST_WIDE_INT and add
6100 arguments. Parse bytes-size suffixes.
6101 (enum_arg_to_value): Change function argument to HOST_WIDE_INT.
6102 (enum_value_to_arg): Same.
6103 (decode_cmdline_option): Handle cl_host_wide_int. Adjust.
6104 (handle_option): Adjust.
6105 (generate_option): Change function argument to HOST_WIDE_INT.
6106 (cmdline_handle_error): Adjust.
6107 (read_cmdline_option): Change function argument to HOST_WIDE_INT.
6108 (set_option): Change function argument to HOST_WIDE_INT.
6109 (option_enabled): Handle cl_host_wide_int.
6110 (get_option_state): Handle CLVC_SIZE.
6111 (control_warning_option): Same.
6112 * opts.c (common_handle_option): Change function argument to
6113 HOST_WIDE_INT. Remove handling of OPT_Walloca_larger_than_ and
6114 OPT_Wvla_larger_than_.
6115 * opts.h (enum cl_var_type): Add an enumerator.
6116 * stor-layout.c (layout_decl): Print a more meaningful warning.
6117 * toplev.c (output_stack_usage): Adjust.
6118
6119 2018-07-20 Qing Zhao <qing.zhao@oracle.com>
6120
6121 * builtins.c (expand_builtin_memcmp): Delete the last parameter for
6122 call to inline_expand_builtin_string_cmp.
6123 (expand_builtin_strcmp): Likewise.
6124 (expand_builtin_strncmp): Likewise.
6125 (inline_string_cmp): Delete the last parameter, change char_type_node
6126 to unsigned_char_type_node for strcmp/strncmp, add conversions to the
6127 two operands.
6128 (inline_expand_builtin_string_cmp): Delete the last parameter, give up
6129 the inlining expansion on target where the type of the call has same or
6130 narrower precision than unsigned char.
6131
6132 2018-07-20 David Malcolm <dmalcolm@redhat.com>
6133
6134 * Makefile.in (OBJS): Add json.o and optinfo-emit-json.o.
6135 (CFLAGS-optinfo-emit-json.o): Define TARGET_NAME.
6136 * common.opt (fsave-optimization-record): New option.
6137 * coretypes.h (struct kv_pair): Move here from dumpfile.c.
6138 * doc/invoke.texi (-fsave-optimization-record): New option.
6139 * dumpfile.c: Include "optinfo-emit-json.h".
6140 (struct kv_pair): Move to coretypes.h.
6141 (optgroup_options): Make non-static.
6142 (dump_context::end_scope): Call
6143 optimization_records_maybe_pop_dump_scope.
6144 * dumpfile.h (optgroup_options): New decl.
6145 * json.cc: New file.
6146 * json.h: New file.
6147 * optinfo-emit-json.cc: New file.
6148 * optinfo-emit-json.h: New file.
6149 * optinfo.cc: Include "optinfo-emit-json.h".
6150 (optinfo::emit): Call optimization_records_maybe_record_optinfo.
6151 (optinfo_enabled_p): Check optimization_records_enabled_p.
6152 (optinfo_wants_inlining_info_p): Likewise.
6153 * optinfo.h: Update comment.
6154 * profile-count.c (profile_quality_as_string): New function.
6155 * profile-count.h (profile_quality_as_string): New decl.
6156 (profile_count::quality): New accessor.
6157 * selftest-run-tests.c (selftest::run_tests): Call json_cc_tests
6158 and optinfo_emit_json_cc_tests.
6159 * selftest.h (selftest::json_cc_tests): New decl.
6160 (selftest::optinfo_emit_json_cc_tests): New decl.
6161 * toplev.c: Include "optinfo-emit-json.h".
6162 (compile_file): Call optimization_records_finish.
6163 (do_compile): Call optimization_records_start.
6164 * tree-ssa-live.c: Include optinfo.h.
6165 (remove_unused_scope_block_p): Retain inlining information if
6166 optinfo_wants_inlining_info_p returns true.
6167
6168 2018-07-20 Richard Biener <rguenther@suse.de>
6169
6170 PR debug/86585
6171 * dwarf2out.c (dwarf2out_die_ref_for_decl): Test in_lto_p
6172 to cover -flto-partition=none.
6173
6174 2018-07-20 Martin Liska <mliska@suse.cz>
6175
6176 * tree.h (DECL_LOCATION_RANGE): Remove unused macro.
6177 (get_decl_source_range): Remove unused function.
6178
6179 2018-07-20 Richard Biener <rguenther@suse.de>
6180
6181 * tree-ssa-sccvn.h (struct vn_nary_op_s): Add next member.
6182 (struct vn_phi_s): Likewise.
6183 (struct vn_reference_s): Likewise.
6184 * tree-ssa-sccvn.c (vn_nary_op_hasher::equal): Add shortcut
6185 for searching the slot of an entry known to be in the hash itself.
6186 (vn_phi_hasher::equal): Likewise.
6187 (vn_reference_hasher::equal): Likewise.
6188 (last_inserted_ref, last_inserted_phi, last_inserted_nary): New
6189 globals.
6190 (optimistic_info, current_info): Remove, keeping only valid_info.
6191 (vn_reference_lookup_1): Remove fallback lookup.
6192 (vn_reference_lookup_2): Likewise.
6193 (vn_nary_op_lookup_1): Likewise.
6194 (vn_phi_lookup): Likewise.
6195 (vn_nary_build_or_lookup_1): Make sure to not chain the built
6196 hash element.
6197 (vn_reference_insert): Adjust, chain the inserted hash element
6198 at last_inserted_ref.
6199 (vn_reference_insert_pieces): Likewise.
6200 (visit_reference_op_call): Likewise.
6201 (vn_nary_op_insert_into): Chain the inserted hash element at
6202 last_inserted_nary.
6203 (vn_nary_op_insert_pieces): Adjust.
6204 (vn_nary_op_insert): Likewise.
6205 (vn_nary_op_insert_stmt): Likewise.
6206 (vn_phi_insert): Adjust, chain the inserted hash element at
6207 last_inserted_phi.
6208 (process_scc): Remove clearing and copying the optimistic
6209 table. Instead remove elements inserted during an optimistic
6210 iteration from the single table we maintain.
6211 (init_scc_vn): Adjust.
6212 (free_scc_vn): Likewise.
6213 (sccvn_dom_walker::record_cond): Likewise.
6214 (sccvn_dom_walker::after_dom_children): Likewise.
6215
6216 2018-07-19 Martin Sebor <msebor@redhat.com>
6217
6218 PR tree-optimization/84047
6219 PR tree-optimization/83776
6220 * tree-vrp.c (vrp_prop::check_mem_ref): New function.
6221 (check_array_bounds): Call it.
6222
6223 2018-07-19 Martin Sebor <msebor@redhat.com>
6224
6225 * align.h (align_flags): Use member initialization.
6226
6227 2018-07-19 David Malcolm <dmalcolm@redhat.com>
6228
6229 * Makefile.in (OBJS): Add optinfo.o.
6230 * coretypes.h (class symtab_node): New forward decl.
6231 (struct cgraph_node): New forward decl.
6232 (class varpool_node): New forward decl.
6233 * dump-context.h: New file.
6234 * dumpfile.c: Include "optinfo.h", "dump-context.h", "cgraph.h",
6235 "tree-pass.h".
6236 (refresh_dumps_are_enabled): Use optinfo_enabled_p.
6237 (set_dump_file): Call dumpfile_ensure_any_optinfo_are_flushed.
6238 (set_alt_dump_file): Likewise.
6239 (dump_context::~dump_context): New dtor.
6240 (dump_gimple_stmt): Move implementation to...
6241 (dump_context::dump_gimple_stmt): ...this new member function.
6242 Add the stmt to any pending optinfo, creating one if need be.
6243 (dump_gimple_stmt_loc): Move implementation to...
6244 (dump_context::dump_gimple_stmt_loc): ...this new member function.
6245 Start a new optinfo and add the stmt to it.
6246 (dump_gimple_expr): Move implementation to...
6247 (dump_context::dump_gimple_expr): ...this new member function.
6248 Add the stmt to any pending optinfo, creating one if need be.
6249 (dump_gimple_expr_loc): Move implementation to...
6250 (dump_context::dump_gimple_expr_loc): ...this new member function.
6251 Start a new optinfo and add the stmt to it.
6252 (dump_generic_expr): Move implementation to...
6253 (dump_context::dump_generic_expr): ...this new member function.
6254 Add the tree to any pending optinfo, creating one if need be.
6255 (dump_generic_expr_loc): Move implementation to...
6256 (dump_context::dump_generic_expr_loc): ...this new member
6257 function. Add the tree to any pending optinfo, creating one if
6258 need be.
6259 (dump_printf): Move implementation to...
6260 (dump_context::dump_printf_va): ...this new member function. Add
6261 the text to any pending optinfo, creating one if need be.
6262 (dump_printf_loc): Move implementation to...
6263 (dump_context::dump_printf_loc_va): ...this new member function.
6264 Start a new optinfo and add the stmt to it.
6265 (dump_dec): Move implementation to...
6266 (dump_context::dump_dec): ...this new member function. Add the
6267 value to any pending optinfo, creating one if need be.
6268 (dump_context::dump_symtab_node): New member function.
6269 (dump_context::get_scope_depth): New member function.
6270 (dump_context::begin_scope): New member function.
6271 (dump_context::end_scope): New member function.
6272 (dump_context::ensure_pending_optinfo): New member function.
6273 (dump_context::begin_next_optinfo): New member function.
6274 (dump_context::end_any_optinfo): New member function.
6275 (dump_context::s_current): New global.
6276 (dump_context::s_default): New global.
6277 (dump_scope_depth): Delete global.
6278 (dumpfile_ensure_any_optinfo_are_flushed): New function.
6279 (dump_symtab_node): New function.
6280 (get_dump_scope_depth): Reimplement in terms of dump_context.
6281 (dump_begin_scope): Likewise.
6282 (dump_end_scope): Likewise.
6283 (selftest::temp_dump_context::temp_dump_context): New ctor.
6284 (selftest::temp_dump_context::~temp_dump_context): New dtor.
6285 (selftest::verify_item): New function.
6286 (ASSERT_IS_TEXT): New macro.
6287 (ASSERT_IS_TREE): New macro.
6288 (ASSERT_IS_GIMPLE): New macro.
6289 (selftest::test_capture_of_dump_calls): New test.
6290 (selftest::dumpfile_c_tests): Call it.
6291 * dumpfile.h (dump_printf, dump_printf_loc, dump_basic_block)
6292 (dump_generic_expr_loc, dump_generic_expr, dump_gimple_stmt_loc)
6293 (dump_gimple_stmt, dump_dec): Gather these related decls and add a
6294 descriptive comment.
6295 (dump_function, print_combine_total_stats, enable_rtl_dump_file)
6296 (dump_node, dump_bb): Move these unrelated decls.
6297 (class dump_manager): Add leading comment.
6298 * optinfo.cc: New file.
6299 * optinfo.h: New file.
6300
6301 2018-07-19 Michael Collison <michael.collison@arm.com>
6302 Richard Henderson <rth@redhat.com>
6303
6304 * config/aarch64/aarch64.md (subv<GPI>4, usubv<GPI>4): New patterns.
6305 (subti): Handle op1 zero.
6306 (subvti4, usub4ti4): New.
6307 (*sub<GPI>3_compare1_imm): New.
6308 (sub<GPI>3_carryinCV): New.
6309 (*sub<GPI>3_carryinCV_z1_z2, *sub<GPI>3_carryinCV_z1): New.
6310 (*sub<GPI>3_carryinCV_z2, *sub<GPI>3_carryinCV): New.
6311
6312 2018-07-19 Michael Collison <michael.collison@arm.com>
6313 Richard Henderson <rth@redhat.com>
6314
6315 * config/aarch64/aarch64.md: (addv<GPI>4, uaddv<GPI>4): New.
6316 (addti3): Create simpler code if low part is already known to be 0.
6317 (addvti4, uaddvti4): New.
6318 (*add<GPI>3_compareC_cconly_imm): New.
6319 (*add<GPI>3_compareC_cconly): New.
6320 (*add<GPI>3_compareC_imm): New.
6321 (*add<GPI>3_compareC): Rename from add<GPI>3_compare1; do not
6322 handle constants within this pattern..
6323 (*add<GPI>3_compareV_cconly_imm): New.
6324 (*add<GPI>3_compareV_cconly): New.
6325 (*add<GPI>3_compareV_imm): New.
6326 (add<GPI>3_compareV): New.
6327 (add<GPI>3_carryinC, add<GPI>3_carryinV): New.
6328 (*add<GPI>3_carryinC_zero, *add<GPI>3_carryinV_zero): New.
6329 (*add<GPI>3_carryinC, *add<GPI>3_carryinV): New.
6330 ((*add<GPI>3_compareC_cconly_imm): Replace 'ne' operator
6331 with 'comparison' operator.
6332 (*add<GPI>3_compareV_cconly_imm): Ditto.
6333 (*add<GPI>3_compareV_cconly): Ditto.
6334 (*add<GPI>3_compareV_imm): Ditto.
6335 (add<GPI>3_compareV): Ditto.
6336 (add<mode>3_carryinC): Ditto.
6337 (*add<mode>3_carryinC_zero): Ditto.
6338 (*add<mode>3_carryinC): Ditto.
6339 (add<mode>3_carryinV): Ditto.
6340 (*add<mode>3_carryinV_zero): Ditto.
6341 (*add<mode>3_carryinV): Ditto.
6342
6343 2018-07-19 Michael Collison <michael.collison@arm.com>
6344 Richard Henderson <rth@redhat.com>
6345
6346 * config/aarch64/aarch64-modes.def (CC_V): New.
6347 * config/aarch64/aarch64-protos.h
6348 (aarch64_addti_scratch_regs): Declare
6349 (aarch64_subvti_scratch_regs): Declare.
6350 (aarch64_expand_subvti): Declare.
6351 (aarch64_gen_unlikely_cbranch): Declare
6352 * config/aarch64/aarch64.c (aarch64_select_cc_mode): Test
6353 for signed overflow using CC_Vmode.
6354 (aarch64_get_condition_code_1): Handle CC_Vmode.
6355 (aarch64_gen_unlikely_cbranch): New function.
6356 (aarch64_addti_scratch_regs): New function.
6357 (aarch64_subvti_scratch_regs): New function.
6358 (aarch64_expand_subvti): New function.
6359
6360 2018-07-19 Andre Vieira <andre.simoesdiasvieira@arm.com>
6361
6362 * config/aarch64/aarch64-option-extensions.def: New entry for profile
6363 extension.
6364 * config/aarch64/aarch64.h (AARCH64_FL_PROFILE): New.
6365 * doc/invoke.texi (aarch64-feature-modifiers): New entry for profile
6366 extension.
6367
6368 2018-07-19 Andre Vieira <andre.simoesdiasvieira@arm.com>
6369
6370 PR target/83009
6371 * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): Make
6372 address check not strict.
6373
6374 2018-07-19 Andre Vieira <andre.simoesdiasvieira@arm.com>
6375
6376 * config/aarch64/aarch64-simd.md (aarch64_simd_mov<VQ:mode>): Replace
6377 Umq with Umn.
6378 (store_pair_lanes<mode>): Likewise.
6379 * config/aarch64/aarch64-protos.h (aarch64_addr_query_type): Add new
6380 enum value 'ADDR_QUERY_LDP_STP_N'.
6381 * config/aarch64/aarch64.c (aarch64_addr_query_type): Likewise.
6382 (aarch64_print_address_internal): Add declaration.
6383 (aarch64_print_ldpstp_address): Remove.
6384 (aarch64_classify_address): Adapt mode for 'ADDR_QUERY_LDP_STP_N'.
6385 (aarch64_print_operand): Change printing of 'y'.
6386 * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): Use
6387 new enum value 'ADDR_QUERY_LDP_STP_N', don't hardcode mode and use
6388 'true' rather than '1'.
6389 * config/aarch64/constraints.md (Uml): Likewise.
6390 (Uml): Rename to Umn.
6391 (Umq): Remove.
6392
6393 2018-07-19 Richard Biener <rguenther@suse.de>
6394
6395 * tree-ssa-sccvn.h (struct vn_phi_s): Make phiargs member
6396 a trailing array.
6397 * tree-ssa-sccvn.c: Remove alloc-pool.h use.
6398 (vn_phi_hasher): Derive from nofree_ptr_hash and remove remove method.
6399 (vn_reference_hasher): Likewise.
6400 (struct vn_tables_s): Remove obstack and alloc-pool members.
6401 (vn_tables_obstack, vn_tables_insert_obstack): New global obstacks.
6402 (vn_nary_build_or_lookup_1): Manually build in vn_tables_insert_obstack.
6403 (vn_reference_insert): Allocate from obstack instead of from alloc-pool.
6404 (vn_reference_insert_pieces): Likewise.
6405 (alloc_vn_nary_op_noinit): Adjust.
6406 (vn_nary_op_insert_stmt): Allocate phiargs in-place.
6407 (vn_phi_eq): Adjust.
6408 (shared_lookup_phiargs): Remove.
6409 (vn_phi_lookup): Allocate temporary vn_phi_s on the stack.
6410 (vn_phi_insert): Allocate from obstack instead of from alloc-pool.
6411 (visit_reference_op_call): Likewise.
6412 (copy_nary, copy_phi, copy_reference): Remove.
6413 (process_scc): Rewind the obstack when iterating. Do not
6414 copy the elements to valid_info but just move them from one
6415 hashtable to the other.
6416 (allocate_vn_table): Adjust.
6417 (free_vn_table): Likewise.
6418 (init_scc_vn): Likewise.
6419 (free_scc_vn): Likewise.
6420
6421 2018-07-19 H.J. Lu <hongjiu.lu@intel.com>
6422
6423 PR target/86560
6424 * config/i386/i386.c (rest_of_insert_endbranch): Lookup
6425 indirect_return as function type attribute.
6426 (ix86_attribute_table): Change indirect_return to function
6427 type attribute.
6428 * doc/extend.texi: Update indirect_return attribute.
6429
6430 2018-07-19 Aldy Hernandez <aldyh@redhat.com>
6431
6432 * wide-int.h (widest2_int): New.
6433 * gimple-fold.c (arith_overflowed_p): Use it.
6434 * tree.h (widest2_int_cst): New.
6435 * tree-vrp.c (wide_int_binop_overflow): Rename from
6436 vrp_int_const_binop.
6437 Rewrite to work on trees.
6438 (extract_range_from_multiplicative_op_1): Abstract code to...
6439 (wide_int_range_min_max): ...here.
6440 (wide_int_range_cross_product): ...and here.
6441 (extract_range_from_binary_expr_1): Abstract overflow code to...
6442 (wide_int_range_mult_wrapping): ...here.
6443 * tree-vrp.h (wide_int_range_cross_product): New.
6444 (wide_int_range_mult_wrapping): New.
6445
6446 2018-07-19 Andrew Senkevich <andrew.senkevich@intel.com>
6447 Julia Koval <julia.koval@intel.com>
6448
6449 * config/i386/x86-tune-costs.h (skylake_memcpy,
6450 skylake_memset): Replace rep_prefix with unrolling for size 512.
6451
6452 2018-07-18 Kugan Vivekanandarajah <kuganv@linaro.org>
6453
6454 PR middle-end/86544
6455 * tree-ssa-phiopt.c (cond_removal_in_popcount_pattern): Handle
6456 comparision with EQ_EXPR in last stmt.
6457
6458 2018-07-18 Kelvin Nilsen <kelvin@gcc.gnu.org>
6459
6460 * doc/extend.texi (PowerPC AltiVec Built-in Functions): Rename
6461 this subsection to "PowerPC AltiVec/VSX Built-in Functions".
6462 (PowerPC AltiVec/VSX Built-in Functions): New name for subsection
6463 previously known as "PowerPC AltiVec Built-in Functions". Move
6464 some material to new subsubsections "PowerPC AltiVec Built-in
6465 Functions on ISA 2.06" and "PowerPC AltiVec Built-in Functions on
6466 ISA 2.07".
6467 (PowerPC Altivec Built-in Functions on ISA 2.05): New subsubsection.
6468 (PowerPC Altivec Built-in Functions on ISA 2.06): Likewise.
6469 (PowerPC Altivec Built-in Functions on ISA 2.07): Likewise.
6470 (PowerPC Altivec Built-in Functions on ISA 3.0): Likewise.
6471
6472 2018-07-18 Richard Biener <rguenther@suse.de>
6473
6474 PR tree-optimization/86557
6475 * tree-vect-patterns.c (vect_recog_divmod_pattern): Also handle
6476 EXACT_DIV_EXPR.
6477
6478 2018-07-18 Ilya Leoshkevich <iii@linux.ibm.com>
6479
6480 * config/s390/s390.c (s390_function_profiler): Generate CFI.
6481
6482 2018-07-17 Jeff Law <law@redhat.com>
6483
6484 * config/arm/arm.c (get_label_padding): Update for recent
6485 changes to label_to_alignment.
6486
6487 PR tree-optimization/86010
6488 * tree-ssa-dse.c (compute_trims): Fix typo/thinko.
6489
6490 * config/mips/mips.c (vr4130_align_insns): Update for recent
6491 changes to label_to_alignment.
6492
6493 * config/frv/frv.c (frv_label_align): Update for recent changes
6494 to label_to_alignment.
6495
6496 * config/nios2/nios2.c (nios2_label_align): Update for recent
6497 changes which dropped ALIGN_LABELS_LOG.
6498
6499 2018-07-17 Andreas Schwab <schwab@linux-m68k.org>
6500
6501 * config/m68k/m68k.md (umulsi3_highpart+1, const_umulsi3_highpart)
6502 (smulsi3_highpart+1, const_smulsi3_highpart): Add CC_STATUS_INIT.
6503
6504 2018-07-17 Claudiu Zissulescu <claziss@synopsys.com>
6505
6506 * config/arc/arc.c (arc_label_align): Use align_labels instead of
6507 deprecated align_labels_log.
6508
6509 2018-07-17 Richard Biener <rguenther@suse.de>
6510
6511 PR lto/86456
6512 * dwarf2out.c (init_sections_and_labels): Always generate
6513 a debug_line_str_section for early LTO debug.
6514 (dwarf2out_finish): Reset debug_line_str_hash output early.
6515 Bump counter for extra dwarf5 .debug_loc labels to not conflict
6516 with fat LTO part.
6517 (dwarf2out_early_finish): Output debug_line_str.
6518
6519 2018-07-17 Robin Dapp <rdapp@linux.ibm.com>
6520
6521 * config/s390/s390.c (preferred_la_operand_p): Do not use LA with
6522 index register on z196 or later.
6523
6524 2018-07-17 Robin Dapp <rdapp@linux.ibm.com>
6525
6526 * config/s390/s390.c (s390_default_align): Set default function
6527 alignment to 16.
6528 (s390_override_options_after_change): Call s390_default align.
6529 (s390_option_override_internal): Call s390_default_align.
6530 (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): Define.
6531
6532 2018-07-17 Jakub Jelinek <jakub@redhat.com>
6533
6534 PR middle-end/86542
6535 * omp-low.c (create_task_copyfn): Copy over also fields corresponding
6536 to _looptemp_ clauses, other than the first two.
6537
6538 2018-07-17 Martin Liska <mliska@suse.cz>
6539
6540 * opts.c: Do not enable OPT_falign_* for -Os.
6541
6542 2018-07-17 Martin Liska <mliska@suse.cz>
6543
6544 * align.h (MAX_CODE_ALIGN): New.
6545 (MAX_CODE_ALIGN_VALUE): New.
6546 * common/config/i386/i386-common.c (ix86_handle_option):
6547 (MAX_CODE_ALIGN): Moved to align.h.
6548 * final.c (MAX_CODE_ALIGN): Likewise.
6549 * opts.c (parse_and_check_align_values):
6550 (MAX_CODE_ALIGN): Likewise.
6551 (MAX_CODE_ALIGN_VALUE): Likewise.
6552
6553 2018-07-17 Martin Liska <mliska@suse.cz>
6554
6555 * config/i386/att.h (ASM_OUTPUT_ALIGN): Fix spacing
6556 in order to fulfil coding style.
6557 * config/i386/cygming.h (ASM_OUTPUT_ALIGN): Likewise.
6558 * config/i386/gas.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
6559 * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
6560 * config/iq2000/iq2000.h (ASM_OUTPUT_ALIGN): Likewise.
6561 * config/pa/pa.h (ASM_OUTPUT_ALIGN): Likewise.
6562 * config/sparc/sol2.h (ASM_OUTPUT_ALIGN_WITH_NOP): Likewise.
6563 * config/sparc/sparc.h (ASM_OUTPUT_ALIGN): Likewise.
6564 * config/visium/visium.h (ASM_OUTPUT_ALIGN): Likewise.
6565 (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
6566
6567 2018-07-17 Martin Liska <mliska@suse.cz>
6568
6569 * align.h: New file.
6570 * config/alpha/alpha.c (alpha_align_insns_1): Use align_functions
6571 directly.
6572 * config/i386/i386.c (ix86_avoid_jump_mispredicts): Use new return type
6573 align_flags of label_to_alignment.
6574 * config/m32r/m32r.h (LOOP_ALIGN): Wrap returned values into
6575 align_flags class.
6576 * config/m68k/m68k.c: Do not use removed align_labels_value and
6577 align_loops_value.
6578 * config/nds32/nds32.h (JUMP_ALIGN): Wrap result into align_flags class.
6579 (LOOP_ALIGN): Likewise.
6580 (LABEL_ALIGN): Likewise.
6581 * config/powerpcspe/powerpcspe.c (TARGET_ASM_LOOP_ALIGN_MAX_SKIP):
6582 Remove not used macro.
6583 (rs6000_loop_align): Change return type to align_flags.
6584 (rs6000_loop_align_max_skip): Remove.
6585 * config/rs6000/rs6000-protos.h (rs6000_loop_align):
6586 Change return type to align_flags.
6587 * config/rs6000/rs6000.c (TARGET_ASM_LOOP_ALIGN_MAX_SKIP):
6588 Remove not used macro.
6589 (rs6000_loop_align): Change return type to align_flags.
6590 (rs6000_loop_align_max_skip): Remove.
6591 * config/rx/rx.h (JUMP_ALIGN): Wrap integer values
6592 * config/rx/rx-protos.h (rx_align_for_label): Make it
6593 static function.
6594 * config/rx/rx.c (rx_align_for_label): Change return type
6595 to align_flags.
6596 (rx_max_skip_for_label): Remove TARGET_ASM_*_ALIGN_MAX_SKIP
6597 macro definitions.
6598 into align_flags class.
6599 (LABEL_ALIGN): Likewise.
6600 (LOOP_ALIGN): Likewise.
6601 * config/s390/s390.c (s390_label_align): Use align_flags
6602 class member.
6603 (s390_asm_output_function_label): Likewise.
6604 * config/sh/sh.c (sh_override_options_after_change):
6605 Use align_flags class directly without macros.
6606 (find_barrier): Likewise.
6607 (barrier_align): Likewise.
6608 (sh_loop_align): Likewise.
6609 * config/spu/spu.c (spu_option_override):
6610 Use align_flags_tuple::get_value instead of removed macros.
6611 (spu_sched_init): Likewise.
6612 * config/spu/spu.h (GTY): Likewise.
6613 * config/visium/visium.c (visium_option_override):
6614 Set "8" as default secondary alignment.
6615 * config/visium/visium.h (SUBALIGN_LOG): Define to 3
6616 in order to guarantee secondary alignment of 8.
6617 * coretypes.h: Include align.h header file.
6618 * doc/tm.texi: Remove TARGET_ASM_JUMP_ALIGN_MAX_SKIP,
6619 TARGET_ASM_LOOP_ALIGN_MAX_SKIP, TARGET_ASM_LABEL_ALIGN_MAX_SKIP
6620 and TARGET_ASM_LABEL_ALIGN_AFTER_BARRIER_MAX_SKIP macros.
6621 * doc/tm.texi.in: Likewise.
6622 * final.c (struct label_alignment): Remove not used structure.
6623 (LABEL_ALIGN): Change type to align_flags.
6624 (LOOP_ALIGN): Likewise.
6625 (JUMP_ALIGN): Likewise.
6626 (default_loop_align_max_skip): Remove.
6627 (default_label_align_max_skip): Likewise.
6628 (default_jump_align_max_skip): Likewise.
6629 (default_label_align_after_barrier_max_skip):
6630 (LABEL_TO_ALIGNMENT): Change to access label_align vector.
6631 (LABEL_TO_MAX_SKIP): Remove.
6632 (label_to_alignment): Return align_flags type instead of integer.
6633 (label_to_max_skip): Remove.
6634 (align_fuzz): Use align_flags type.
6635 (compute_alignments): Use align_flags type and use align_flags::max
6636 to combine multiple alignments.
6637 (grow_label_align): Grow vec instead of C array.
6638 (update_alignments): Assign just LABEL_TO_ALIGNMENT.
6639 (shorten_branches): Use align_flags type and use align_flags::max
6640 to combine multiple alignments.
6641 (final_scan_insn_1): Remove usage of secondary alignment that comes
6642 from label alignment, but instead use proper secondary alignment
6643 which is computed in grow_label_align.
6644 * flags.h (struct align_flags_tuple): Move to align.h.
6645 (struct align_flags): Likewise.
6646 (state_align_loops): Rename to align_loops.
6647 (state_align_jumps): Rename to align_jumps.
6648 (state_align_labels): Rename to align_labels.
6649 (state_align_functions): Rename to align_functions.
6650 (align_loops_log): Remove.
6651 (align_jumps_log): Remove.
6652 (align_labels_log): Remove.
6653 (align_functions_log): Remove.
6654 (align_loops_max_skip): Remove.
6655 (align_jumps_max_skip): Remove.
6656 (align_labels_max_skip): Remove.
6657 (align_functions_max_skip): Remove.
6658 (align_loops_value): Remove.
6659 (align_jumps_value): Remove.
6660 (align_labels_value): Remove.
6661 (align_functions_value): Remove.
6662 * output.h (label_to_alignment): Change return type to align_flags.
6663 (label_to_max_skip): Remove.
6664 * target.def: Remove loop_align_max_skip, label_align_max_skip,
6665 jump_align_max_skip macros.
6666 * targhooks.h (default_loop_align_max_skip): Remove.
6667 (default_label_align_max_skip): Likewise.
6668 (default_jump_align_max_skip): Likewise.
6669 (default_label_align_after_barrier_max_skip): Remove.
6670 * toplev.c (read_log_maxskip): Use ::normalize function.
6671 (parse_N_M): Remove not used argument and also call ::normalize.
6672 (parse_alignment_opts): Do not pass unused arguments.
6673 * varasm.c (assemble_start_function): Use directly align_functions
6674 instead of removed macros.
6675 * system.h: Do not poison removed macros.
6676
6677 2018-07-17 Jakub Jelinek <jakub@redhat.com>
6678
6679 PR middle-end/86539
6680 * gimplify.c (gimplify_omp_for): Ensure taskloop firstprivatized init
6681 and cond temporaries don't have reference type if iterator has
6682 pointer type. For init use &for_pre_body instead of pre_p if
6683 for_pre_body is non-empty.
6684
6685 2018-07-16 Segher Boessenkool <segher@kernel.crashing.org>
6686
6687 * config/rs6000/rs6000.md (trunc<mode>sf2): Expand truncates of
6688 double-double modes to SFmode directly directly.
6689 (trunc<mode>sf2_fprs): Delete.
6690
6691 2018-07-16 Segher Boessenkool <segher@kernel.crashing.org>
6692
6693 * config/rs6000/rs6000.c (init_float128_ibm): Use the correct names
6694 for conversions between IFmode and the decimal floating point modes.
6695 (init_float128_ieee): Use the correct names for conversions between
6696 KFmode and the decimal floating point modes.
6697
6698 2018-07-16 Segher Boessenkool <segher@kernel.crashing.org>
6699
6700 * config/rs6000/rs6000.c (init_float128_ibm): Use more correct names
6701 for the conversions between TDmode and IFmode.
6702 (init_float128_ieee): Use more correct names for the conversions
6703 between TDmode and KFmode.
6704
6705 2018-07-16 Jakub Jelinek <jakub@redhat.com>
6706
6707 PR tree-optimization/86526
6708 * builtins.c (expand_builtin_memcmp): Formatting fixes.
6709 (inline_expand_builtin_string_cmp): Likewise.
6710 (inline_string_cmp): Likewise. Use c_readstr instead of
6711 builtin_memcpy_read_str. Add unit_mode temporary.
6712
6713 2018-07-16 Bernd Edlinger <bernd.edlinger@hotmail.de>
6714
6715 PR middle-end/86528
6716 * builtins.c (check_access): Bail out if range[0] is no INTEGER_CST.
6717 * expr.c (string_constant): Fix the element size of ARRAY_TYPE.
6718
6719 2018-07-16 Kelvin Nilsen <kelvin@gcc.gnu.org>
6720
6721 * doc/extend.texi (PowerPC AltiVec Built-in Functions):
6722 Alphabetize prototypes of built-in functions, separating out
6723 built-in functions that are listed in this section but should be
6724 described elsewhere.
6725
6726 2018-07-16 Uros Bizjak <ubizjak@gmail.com>
6727
6728 PR target/86511
6729 * expmed.c (emit_store_flag): Do not emit setcc followed by a
6730 conditional move when trapping comparison was split to a
6731 non-trapping one (and vice versa).
6732
6733 2018-07-16 Ilya Leoshkevich <iii@linux.ibm.com>
6734
6735 * config/s390/s390.c (s390_function_profiler): Generate nops
6736 instead of profiler call sequences.
6737 * config/s390/s390.opt: Add the new option.
6738
6739 2018-07-16 Ilya Leoshkevich <iii@linux.ibm.com>
6740
6741 * config/s390/s390.c (s390_function_profiler): Generate
6742 __mcount_loc section.
6743 * config/s390/s390.opt: Add the new option.
6744
6745 2018-07-16 Ilya Leoshkevich <iii@linux.ibm.com>
6746
6747 * common.opt: Add the new warning.
6748 * config/s390/s390.c (s390_function_profiler): Emit "brasl
6749 %r0,__fentry__" when -mfentry is specified.
6750 (s390_option_override_internal): Disallow -mfentry for 31-bit
6751 CPUs.
6752 * config/s390/s390.opt: Add the new option.
6753
6754 2018-07-16 Richard Biener <rguenther@suse.de>
6755
6756 PR lto/86523
6757 * dwarf2out.c (dwarf2out_register_external_die): Assign DIE parents
6758 for function-local FUNCTION_DECL and RESULT_DECL immediately.
6759
6760 2018-07-16 Martin Liska <mliska@suse.cz>
6761
6762 PR ipa/86529
6763 * ipa-pure-const.c (malloc_candidate_p): Revert ::get
6764 to ::get_create.
6765
6766 2017-07-16 Claudiu Zissulescu <claziss@synopsys.com>
6767
6768 * config/arc/arcHS.md: Update ARCHS scheduling rules.
6769
6770 2017-07-16 Claudiu Zissulescu <claziss@synopsys.com>
6771
6772 * config/arc/arc-arch.h (arc_tune_attr): Add new tune parameters
6773 for ARCHS4x.
6774 * config/arc/arc-cpus.def (hs4x): New cpu.
6775 (hs4xd): Likewise.
6776 * config/arc/arc-tables.opt: Regenerate.
6777 * config/arc/arc.c (arc_sched_issue_rate): New function.
6778 (TARGET_SCHED_ISSUE_RATE): Define.
6779 (TARGET_SCHED_EXPOSED_PIPELINE): Likewise.
6780 * config/arc/arc.md (attr type): Add fpu_fuse, fpu_sdiv, fpu_ddiv,
6781 fpu_cvt.
6782 (attr tune): Add ARCHS4x tune values.
6783 (attr tune_dspmpy): Define.
6784 (*tst): Correct instruction type.
6785 * config/arc/arcHS.md: Don't use this automaton for ARCHS4x cpus.
6786 * config/arc/arcHS4x.md: New file.
6787 * config/arc/fpu.md: Update instruction type attributes.
6788 * config/arc/t-multilib: Regenerate.
6789
6790 2018-07-16 Tom de Vries <tdevries@suse.de>
6791
6792 PR debug/86455
6793 * var-tracking.c (vt_initialize): Fix pre_dec handling.
6794
6795 2018-07-16 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
6796
6797 * config/aarch64/atomics.md (aarch64_store_execlusive<mode>): Add
6798 early clobber.
6799
6800 2018-07-16 Eric Botcazou <ebotcazou@adacore.com>
6801
6802 PR tree-optimization/86514
6803 * tree-ssa-reassoc.c (init_range_entry) <CASE_CONVERT>: Return for a
6804 conversion to a boolean type from a type with greater precision.
6805
6806 2018-07-16 Tom de Vries <tdevries@suse.de>
6807
6808 * var-tracking.c (vt_initialize): Print adjusted insn slim if
6809 dump_flags request TDF_SLIM.
6810
6811 2018-07-16 Aldy Hernandez <aldyh@redhat.com>
6812
6813 * fold-const.c (int_const_binop_1): Abstract...
6814 (wide_int_binop): ...wide int code here.
6815 (poly_int_binop): ...poly int code here.
6816 Abstract the rest of int_const_binop_1 into int_const_binop.
6817 * fold-const.h (wide_int_binop): New.
6818 * tree-vrp.c (vrp_int_const_binop): Call wide_int_binop.
6819 Remove useless PLUS/MINUS_EXPR case.
6820 (zero_nonzero_bits_from_vr): Move wide int code...
6821 (zero_nonzero_bits_from_bounds): ...here.
6822 (extract_range_from_binary_expr_1): Move mask optimization code...
6823 (range_easy_mask_min_max): ...here.
6824 * tree-vrp.h (zero_nonzero_bits_from_bounds): New.
6825 (range_easy_mask_min_max): New.
6826
6827 2018-07-15 Jeff Law <law@redhat.com>
6828
6829 PR target/85993
6830 * config/sh/sh.c (output_mi_thunk): Remove dead conditional
6831 block.
6832
6833 2018-07-14 Jim Wilson <jimw@sifive.com>
6834
6835 * config/riscv/linux.h (TARGET_ASM_FILE_END): New.
6836
6837 2018-07-14 Paul Koning <ni1d@arrl.net>
6838
6839 * config/pdp11/pdp11.c (pdp11_rtx_costs): Bugfixes.
6840
6841 2018-07-13 Jan Hubicka <hubicka@ucw.cz>
6842
6843 * lto-streamer-out.c (copy_function_or_variable): Dump info about
6844 copying section.
6845
6846 2018-07-13 Bill Schmidt <wschmidt@linux.ibm.com>
6847 Steve Munroe <munroesj52@gmail.com>
6848
6849 * config/rs6000/emmintrin.h (_mm_and_si128): New function.
6850 (_mm_andnot_si128): Likewise.
6851 (_mm_or_si128): Likewise.
6852 (_mm_xor_si128): Likewise.
6853
6854 2018-07-13 Qing Zhao <qing.zhao@oracle.com>
6855
6856 PR middle-end/78809
6857 * builtins.c (expand_builtin_memcmp): Inline the calls first
6858 when result_eq is false.
6859 (expand_builtin_strcmp): Inline the calls first.
6860 (expand_builtin_strncmp): Likewise.
6861 (inline_string_cmp): New routine. Expand a string compare
6862 call by using a sequence of char comparison.
6863 (inline_expand_builtin_string_cmp): New routine. Inline expansion
6864 a call to str(n)cmp/memcmp.
6865 * doc/invoke.texi (--param builtin-string-cmp-inline-length):
6866 New option.
6867 * params.def (BUILTIN_STRING_CMP_INLINE_LENGTH): New.
6868
6869 2018-07-13 Richard Earnshaw <rearnsha@arm.com>
6870
6871 * config/arm/driver-arm.c: Include arm-native.h.
6872 (host_detect_local_cpu): Use auto-generated data tables.
6873 (vendors, arm_cpu_table): Delete. Move part information to ...
6874 * config/arm/arm-cpus.in: ... here.
6875 * config/arm/parsecpu.awk (gen_native): New function.
6876 (vendor, part): New CPU fields.
6877 (END): Add support for building the native CPU detection tables.
6878 * config/arm/t-arm (arm-native.h): Add build rule.
6879 (driver-arm.o): Add dependency on arm-native.h.
6880
6881 2018-07-13 Richard Biener <rguenther@suse.de>
6882
6883 PR middle-end/85974
6884 * match.pd (addr1 - addr2): Allow either of the operand to
6885 have a conversion.
6886
6887 2018-07-13 Tom de Vries <tdevries@suse.de>
6888
6889 * tree-inline.c (remap_ssa_name): Save and reuse debug exprs generated
6890 in remap_ssa_name.
6891
6892 2018-07-13 Jackson Woodruff <jackson.woodruff@arm.com>
6893
6894 * config/aarch64/aarch64.c (aarch64_operands_adjust_ok_for_ldpstp): Use
6895 arrays instead of numbered variables.
6896
6897 2018-07-13 Eric Botcazou <ebotcazou@adacore.com>
6898
6899 * config/sparc/sparc-protos.h (sparc_compute_frame_size): Delete.
6900 * config/sparc/sparc.c (sparc_compute_frame_size): Make static.
6901
6902 2018-07-13 Richard Biener <rguenther@suse.de>
6903
6904 PR debug/86452
6905 * dwarf2out.c (gen_type_die_with_usage): Use scope_die_for
6906 instead of get_context_die.
6907
6908 2018-07-13 Kugan Vivekanandarajah <kuganv@linaro.org>
6909 Richard Biener <rguenther@suse.de>
6910
6911 PR middle-end/86489
6912 * tree-ssa-loop-niter.c (number_of_iterations_popcount): Check
6913 that the loop latch destination where phi is defined.
6914
6915 2018-07-12 Kito Cheng <kito.cheng@gmail.com>
6916
6917 * config/riscv/riscv.c (enum riscv_privilege_levels): Add UNKNOWN_MODE.
6918 (riscv_expand_epilogue): Add assertion to check interrupt mode.
6919 (riscv_set_current_function): Extract getting interrupt type to new
6920 function.
6921 (riscv_get_interrupt_type): New function.
6922 (riscv_merge_decl_attributes): New function, checking interrupt type is
6923 same.
6924 (TARGET_MERGE_DECL_ATTRIBUTES): Define.
6925
6926 2018-07-12 Paul Koning <ni1d@arrl.net>
6927
6928 * config/pdp11/pdp11.c (pdp11_output_def): Fix typo in .set
6929 directive.
6930
6931 2018-07-12 Paul Koning <ni1d@arrl.net>
6932
6933 * doc/rtl.texi (REG_NONNEG): Remove decrement and branch until
6934 zero reference, add doloop_end instead.
6935 * doc/md.texi (decrement_and_branch_until_zero): Remove.
6936 (Looping patterns): Remove decrement_and_branch_until_zero. Add
6937 detail for doloop_end.
6938
6939 2018-07-12 Martin Sebor <msebor@redhat.com>
6940
6941 PR c/86453
6942 * attribs.c (decl_attributes): Reject conflicting attributes before
6943 calling attribute handlers.
6944
6945 2018-07-12 Jan Hubicka <hubicka@ucw.cz>
6946
6947 * dumpfile.c (gcc::dump_manager::get_dump_file_name): Add PART
6948 parameter.
6949 (gcc::dump_manager::get_dump_file_name): likewise.
6950 (dump_begin): Likewise.
6951 * dumpfile.h (dump_begin): Update prototype.
6952 (gcc::dump_manager::get_dump_file_name,
6953 gcc::dump_manager::get_dump_file_name): Update prototype.
6954
6955 2018-07-12 Richard Sandiford <richard.sandiford@linaro.org>
6956
6957 * internal-fn.h (vectorizable_internal_fn_p): New function.
6958 * tree-vect-slp.c (compatible_calls_p): Likewise.
6959 (vect_build_slp_tree_1): Remove nops argument. Handle calls
6960 to internal functions.
6961 (vect_build_slp_tree_2): Update call to vect_build_slp_tree_1.
6962
6963 2018-07-12 Richard Sandiford <richard.sandiford@linaro.org>
6964
6965 * fold-const.h (inverse_conditions_p): Declare.
6966 * fold-const.c (inverse_conditions_p): New function.
6967 * match.pd: Use inverse_conditions_p. Add folds of view_converts
6968 that test the inverse condition of a conditional internal function.
6969 * internal-fn.h (vectorized_internal_fn_supported_p): Declare.
6970 * internal-fn.c (internal_fn_mask_index): Handle conditional
6971 internal functions.
6972 (vectorized_internal_fn_supported_p): New function.
6973 * tree-if-conv.c: Include internal-fn.h and fold-const.h.
6974 (any_pred_load_store): Replace with...
6975 (need_to_predicate): ...this new variable.
6976 (redundant_ssa_names): New variable.
6977 (ifcvt_can_use_mask_load_store): Move initial checks to...
6978 (ifcvt_can_predicate): ...this new function. Handle tree codes
6979 for which a conditional internal function exists.
6980 (if_convertible_gimple_assign_stmt_p): Use ifcvt_can_predicate
6981 instead of ifcvt_can_use_mask_load_store. Update after variable
6982 name change.
6983 (predicate_load_or_store): New function, split out from
6984 predicate_mem_writes.
6985 (check_redundant_cond_expr): New function.
6986 (value_available_p): Likewise.
6987 (predicate_rhs_code): Likewise.
6988 (predicate_mem_writes): Rename to...
6989 (predicate_statements): ...this. Use predicate_load_or_store
6990 and predicate_rhs_code.
6991 (combine_blocks, tree_if_conversion): Update after above name changes.
6992 (ifcvt_local_dce): Handle redundant_ssa_names.
6993 * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): Handle
6994 general conditional functions.
6995 * tree-vect-stmts.c (vectorizable_call): Likewise.
6996
6997 2018-07-12 Richard Sandiford <richard.sandiford@linaro.org>
6998 Alan Hayward <alan.hayward@arm.com>
6999 David Sherwood <david.sherwood@arm.com>
7000
7001 * internal-fn.h (can_interpret_as_conditional_op_p): Declare.
7002 * internal-fn.c (can_interpret_as_conditional_op_p): New function.
7003 * tree-ssa-math-opts.c (convert_mult_to_fma_1): Handle conditional
7004 plus and minus and convert them into IFN_COND_FMA-based sequences.
7005 (convert_mult_to_fma): Handle conditional plus and minus.
7006
7007 2018-07-12 Richard Sandiford <richard.sandiford@linaro.org>
7008
7009 * doc/md.texi (cond_fma, cond_fms, cond_fnma, cond_fnms): Document.
7010 * optabs.def (cond_fma_optab, cond_fms_optab, cond_fnma_optab)
7011 (cond_fnms_optab): New optabs.
7012 * internal-fn.def (COND_FMA, COND_FMS, COND_FNMA, COND_FNMS): New
7013 internal functions.
7014 (FMA): Use DEF_INTERNAL_FLT_FN rather than DEF_INTERNAL_FLT_FLOATN_FN.
7015 * internal-fn.h (get_conditional_internal_fn): Declare.
7016 (get_unconditional_internal_fn): Likewise.
7017 * internal-fn.c (cond_ternary_direct): New macro.
7018 (expand_cond_ternary_optab_fn): Likewise.
7019 (direct_cond_ternary_optab_supported_p): Likewise.
7020 (FOR_EACH_COND_FN_PAIR): Likewise.
7021 (get_conditional_internal_fn): New function.
7022 (get_unconditional_internal_fn): Likewise.
7023 * gimple-match.h (gimple_match_op::MAX_NUM_OPS): Bump to 5.
7024 (gimple_match_op::gimple_match_op): Add a new overload for 5
7025 operands.
7026 (gimple_match_op::set_op): Likewise.
7027 (gimple_resimplify5): Declare.
7028 * genmatch.c (decision_tree::gen): Generate simplifications for
7029 5 operands.
7030 * gimple-match-head.c (gimple_simplify): Define an overload for
7031 5 operands. Handle calls with 5 arguments in the top-level overload.
7032 (convert_conditional_op): Handle conversions from unconditional
7033 internal functions to conditional ones.
7034 (gimple_resimplify5): New function.
7035 (build_call_internal): Pass a fifth operand.
7036 (maybe_push_res_to_seq): Likewise.
7037 (try_conditional_simplification): Try converting conditional
7038 internal functions to unconditional internal functions.
7039 Handle 3-operand unconditional forms.
7040 * match.pd (UNCOND_TERNARY, COND_TERNARY): Operator lists.
7041 Define ternary equivalents of the current rules for binary conditional
7042 internal functions.
7043 * config/aarch64/aarch64.c (aarch64_preferred_else_value): Handle
7044 ternary operations.
7045 * config/aarch64/iterators.md (UNSPEC_COND_FMLA, UNSPEC_COND_FMLS)
7046 (UNSPEC_COND_FNMLA, UNSPEC_COND_FNMLS): New unspecs.
7047 (optab): Handle them.
7048 (SVE_COND_FP_TERNARY): New int iterator.
7049 (sve_fmla_op, sve_fmad_op): New int attributes.
7050 * config/aarch64/aarch64-sve.md (cond_<optab><mode>)
7051 (*cond_<optab><mode>_2, *cond_<optab><mode_4)
7052 (*cond_<optab><mode>_any): New SVE_COND_FP_TERNARY patterns.
7053
7054 2018-07-12 Richard Sandiford <richard.sandiford@linaro.org>
7055
7056 * target.def (preferred_else_value): New target hook.
7057 * doc/tm.texi.in (TARGET_PREFERRED_ELSE_VALUE): New hook.
7058 * doc/tm.texi: Regenerate.
7059 * targhooks.h (default_preferred_else_value): Declare.
7060 * targhooks.c (default_preferred_else_value): New function.
7061 * internal-fn.h (conditional_internal_fn_code): Declare.
7062 * internal-fn.c (FOR_EACH_CODE_MAPPING): New macro.
7063 (get_conditional_internal_fn): Use it.
7064 (conditional_internal_fn_code): New function.
7065 * gimple-match.h (gimple_match_cond): New struct.
7066 (gimple_match_op): Add a cond member function.
7067 (gimple_match_op::gimple_match_op): Update all forms to take a
7068 gimple_match_cond.
7069 * genmatch.c (expr::gen_transform): Use the same condition as res_op
7070 for the suboperation, but don't specify a particular else_value.
7071 * tree-ssa-sccvn.c (vn_nary_simplify, vn_reference_lookup_3)
7072 (visit_nary_op, visit_reference_op_load): Pass
7073 gimple_match_cond::UNCOND to the gimple_match_op constructor.
7074 * gimple-match-head.c: Include tree-eh.h
7075 (convert_conditional_op): New function.
7076 (maybe_resimplify_conditional_op): Likewise.
7077 (gimple_resimplify1): Call maybe_resimplify_conditional_op.
7078 (gimple_resimplify2): Likewise.
7079 (gimple_resimplify3): Likewise.
7080 (gimple_resimplify4): Likewise.
7081 (maybe_push_res_to_seq): Return null for conditional operations.
7082 (try_conditional_simplification): New function.
7083 (gimple_simplify): Call it. Pass conditions to the gimple_match_op
7084 constructor.
7085 * match.pd: Fold VEC_COND_EXPRs of an IFN_COND_* call to a new
7086 IFN_COND_* call.
7087 * config/aarch64/aarch64.c (aarch64_preferred_else_value): New
7088 function.
7089 (TARGET_PREFERRED_ELSE_VALUE): Redefine.
7090
7091 2018-07-12 Jan Hubicka <hubicka@ucw.cz>
7092
7093 * lto-streamer-out.c (DFS::DFS_write_tree_body): Do not stream
7094 DECL_FCONTEXT
7095 (hash_tree): Do not hash DECL_FCONTEXT
7096 * tree-streamer-in.c (lto_input_ts_field_decl_tree_pointers):
7097 Do not stream DECL_FCONTEXT.
7098 * tree-streamer-out.c (write_ts_field_decl_tree_pointers): Likewise.
7099 * tree.c (free_lang_data_in_decl): Free DECL_FCONTEXT.
7100
7101 2018-07-12 Richard Biener <rguenther@suse.de>
7102
7103 PR debug/86462
7104 * dwarf2out.c (gen_block_die): Only output blocks when they have
7105 at least one !DECL_IGNORED_P variable.
7106
7107 2018-07-12 Richard Biener <rguenther@suse.de>
7108
7109 PR target/84829
7110 * config/gnu-user.h (GNU_USER_TARGET_NO_PTHREADS_LIB_SPEC):
7111 Remove -mieee-fp handling.
7112
7113 2018-07-12 Richard Biener <rguenther@suse.de>
7114
7115 * tree-ssa-sccvn.c (vn_lookup_simplify_result): Remove bogus
7116 left-over from last patch.
7117
7118 2018-07-12 Jakub Jelinek <jakub@redhat.com>
7119
7120 PR tree-optimization/86492
7121 * gimple-ssa-store-merging.c
7122 (imm_store_chain_info::coalesce_immediate_stores): Call
7123 check_no_overlap even for the merge_overlapping case. Formatting fix.
7124
7125 2018-07-12 Richard Biener <rguenther@suse.de>
7126
7127 PR middle-end/86479
7128 * fold-const.c (fold_binary_op_with_conditional_arg): Do not
7129 move possibly trapping operations into the conditional.
7130
7131 2018-07-12 Richard Biener <rguenther@suse.de>
7132
7133 * tree-ssa-sccvn.c (mprts_hook_cnt): Remove.
7134 (vn_lookup_simplify_result): Remove recursion limit applied
7135 here.
7136 (vn_nary_build_or_lookup_1): Adjust.
7137 (try_to_simplify): Likewise.
7138 * gimple-match-head.c (gimple_resimplify1): Instead apply one
7139 here.
7140 (gimple_resimplify2): Likewise.
7141 (gimple_resimplify3): Likewise.
7142 (gimple_resimplify4): Likewise.
7143
7144 2018-07-11 Jakub Jelinek <jakub@redhat.com>
7145
7146 * config/i386/avx512bitalgintrin.h (_mm512_mask_bitshuffle_epi64_mask):
7147 Use __mmask64 type instead of __mmask8 for __M argument.
7148 * config/i386/avx512fintrin.h (_mm512_mask_xor_epi64,
7149 _mm512_maskz_xor_epi64): Use __mmask8 type instead of __mmask16 for
7150 __U argument.
7151 (_mm512_mask_cmpneq_epi64_mask): Use __mmask8 type instead of
7152 __mmask16 for __M argument.
7153 (_mm512_maskz_insertf32x4, _mm512_maskz_inserti32x4,
7154 _mm512_mask_insertf32x4, _mm512_mask_inserti32x4): Cast last argument
7155 to __mmask16 instead of __mmask8.
7156 * config/i386/avx512vlintrin.h (_mm_mask_add_ps, _mm_maskz_add_ps,
7157 _mm256_mask_add_ps, _mm256_maskz_add_ps, _mm_mask_sub_ps,
7158 _mm_maskz_sub_ps, _mm256_mask_sub_ps, _mm256_maskz_sub_ps,
7159 _mm256_maskz_cvtepi32_ps, _mm_maskz_cvtepi32_ps): Use __mmask8 type
7160 instead of __mmask16 for __U argument.
7161 * config/i386/avx512vlbwintrin.h (_mm_mask_cmp_epi8_mask): Use
7162 __mmask16 instead of __mmask8 for __U argument.
7163 (_mm256_mask_cmp_epi8_mask): Use __mmask32 instead of __mmask16 for
7164 __U argument.
7165 (_mm256_cmp_epi8_mask): Use __mmask32 return type instead of
7166 __mmask16.
7167 (_mm_mask_cmp_epu8_mask): Use __mmask16 instead of __mmask8 for __U
7168 argument.
7169 (_mm256_mask_cmp_epu8_mask): Use __mmask32 instead of __mmask16 for
7170 __U argument.
7171 (_mm256_cmp_epu8_mask): Use __mmask32 return type instead of
7172 __mmask16.
7173 (_mm_mask_cmp_epi16_mask): Cast last argument to __mmask8 instead
7174 of __mmask16.
7175 (_mm256_mask_cvtepi8_epi16): Use __mmask16 instead of __mmask32 for
7176 __U argument.
7177 (_mm_mask_cvtepi8_epi16): Use __mmask8 instead of __mmask32 for
7178 __U argument.
7179 (_mm256_mask_cvtepu8_epi16): Use __mmask16 instead of __mmask32 for
7180 __U argument.
7181 (_mm_mask_cvtepu8_epi16): Use __mmask8 instead of __mmask32 for
7182 __U argument.
7183 (_mm256_mask_cmpneq_epu8_mask, _mm256_mask_cmplt_epu8_mask,
7184 _mm256_mask_cmpge_epu8_mask, _mm256_mask_cmple_epu8_mask): Change
7185 return type as well as __M argument type and all casts from __mmask8
7186 to __mmask32.
7187 (_mm256_mask_cmpneq_epu16_mask, _mm256_mask_cmplt_epu16_mask,
7188 _mm256_mask_cmpge_epu16_mask, _mm256_mask_cmple_epu16_mask): Change
7189 return type as well as __M argument type and all casts from __mmask8
7190 to __mmask16.
7191 (_mm256_mask_cmpneq_epi8_mask, _mm256_mask_cmplt_epi8_mask,
7192 _mm256_mask_cmpge_epi8_mask, _mm256_mask_cmple_epi8_mask): Change
7193 return type as well as __M argument type and all casts from __mmask8
7194 to __mmask32.
7195 (_mm256_mask_cmpneq_epi16_mask, _mm256_mask_cmplt_epi16_mask,
7196 _mm256_mask_cmpge_epi16_mask, _mm256_mask_cmple_epi16_mask): Change
7197 return type as well as __M argument type and all casts from __mmask8
7198 to __mmask16.
7199 * config/i386/avx512vbmi2vlintrin.h (_mm_mask_shrdi_epi32,
7200 _mm_mask_shldi_epi32): Cast last argument to __mmask8 instead of
7201 __mmask16.
7202
7203 2018-07-11 Grazvydas Ignotas <notasas@gmail.com>
7204
7205 * config/i386/avx512bwintrin.h: (_mm512_mask_cmp_epi8_mask,
7206 _mm512_mask_cmp_epu8_mask): Use __mmask64 type instead of __mmask32
7207 for __U argument.
7208
7209 2018-07-11 Paul Koning <ni1d@arrl.net>
7210
7211 * doc/md.texi (define_subst): Document how multiple occurrences of
7212 the same argument in the replacement pattern are handled.
7213
7214 2018-07-11 Paul Koning <ni1d@arrl.net>
7215
7216 * doc/extend.texi (Common Variable Attributes): Move "mode" into
7217 alphabetical order.
7218 (Common Type Attributes): Add "mode" attribute.
7219
7220 2018-07-11 Jan Hubicka <hubicka@ucw.cz>
7221
7222 * lto-streamer-out.c (DFS::DFS_write_tree_body): Do not
7223 stream DECL_ORIGINAL_TYPE.
7224 (DFS::DFS_write_tree_body): Drop hack handling local external decls.
7225 (hash_tree): Do not walk DECL_ORIGINAL_TYPE.
7226 * tree-streamer-in.c (lto_input_ts_decl_non_common_tree_pointers):
7227 Do not walk original type.
7228 * tree-streamer-out.c (streamer_write_chain): Drop hack handling
7229 external decls.
7230 (write_ts_decl_non_common_tree_pointers): Do not stream
7231 DECL_ORIGINAL_TYPE
7232 * tree.c (free_lang_data_in_decl): Clear DECL_ORIGINAL_TYPE.
7233 (find_decls_types_r): Do not walk DEC_ORIGINAL_TYPE.
7234
7235 2018-07-11 Aldy Hernandez <aldyh@redhat.com>
7236
7237 * tree-ssa-threadupdate.c (thread_through_all_blocks): Do not jump
7238 thread twice from the same starting edge.
7239
7240 2018-07-11 Aldy Hernandez <aldyh@redhat.com>
7241
7242 * vr-values.c (gimple_stmt_nonzero_p): Abstract common code to...
7243 * gimple.c (gimple_call_nonnull_result_p): ...here...
7244 (gimple_call_nonnull_arg): ...and here.
7245 * gimple.h (gimple_call_nonnull_result_p): New.
7246 (gimple_call_nonnull_arg): New.
7247
7248 2018-07-11 Richard Earnshaw <rearnsha@arm.com>
7249
7250 * config/arm/arm-cpus.in: Move information from fpu field of each
7251 cpu definition to the isa field.
7252 * config/arm/parsecpu.awk (fpu): Delete match rule.
7253 (gen_comm_data): Don't add bits from the CPU's FPU entry.
7254
7255 2018-07-11 Richard Biener <rguenther@suse.de>
7256
7257 PR debug/86457
7258 * dwarf2out.c (init_sections_and_labels): Use
7259 output_asm_line_debug_info consistently.
7260 (dwarf2out_early_finish): Likewise.
7261 (dwarf2out_finish): Remove DW_AT_stmt_list from early generated
7262 type units.
7263
7264 2018-07-11 Richard Biener <rguenther@suse.de>
7265
7266 * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1):
7267 Rework father_bb setting in a way to avoid propagating constants
7268 multiple times on a loop body.
7269
7270 2018-07-10 Mark Wielaard <mark@klomp.org>
7271
7272 PR debug/86459
7273 * dwarf2out.c (output_macinfo_op): Fix dwarf_FORM typo in gcc_assert.
7274
7275 2018-07-10 Richard Biener <rguenther@suse.de>
7276
7277 * hash-map.h (hash_map::iterator::operator*): Return
7278 references to key and value.
7279
7280 2018-07-10 Jakub Jelinek <jakub@redhat.com>
7281
7282 PR c++/86443
7283 * gimplify.c (find_combined_omp_for): Add DATA argument, in addition
7284 to finding the inner OMP_FOR/OMP_SIMD stmt find non-trivial wrappers,
7285 BLOCKs with BLOCK_VARs, OMP_PARALLEL in between, OMP_FOR in between.
7286 (gimplify_omp_for): For composite loops, move outer
7287 OMP_{DISTRIBUTE,TASKLOOP,FOR,PARALLEL} right around innermost
7288 OMP_FOR/OMP_SIMD if there are any non-trivial wrappers. For class
7289 iterators add any needed clauses. Allow OMP_FOR_ORIG_DECLS to contain
7290 TREE_LIST for both the original class iterator and the "last" helper
7291 var. Gimplify OMP_FOR_PRE_BODY before the outermost composite
7292 loop, remember has_decl_expr from outer composite loops for the
7293 innermost OMP_SIMD in TREE_PRIVATE bit on OMP_FOR_INIT.
7294
7295 2018-07-09 Martin Sebor <msebor@redhat.com>
7296
7297 PR middle-end/77357
7298 PR middle-end/86428
7299 * builtins.c (c_strlen): Avoid out-of-bounds warnings when
7300 accessing implicitly initialized array elements.
7301 * expr.c (string_constant): Handle string initializers of
7302 character arrays within aggregates.
7303 * gimple-fold.c (fold_array_ctor_reference): Add argument.
7304 Store element offset. As a special case, handle zero size.
7305 (fold_nonarray_ctor_reference): Same.
7306 (fold_ctor_reference): Add argument. Store subobject offset.
7307 * gimple-fold.h (fold_ctor_reference): Add argument.
7308
7309 2018-07-09 Paul Koning <ni1d@arrl.net>
7310
7311 * config/pdp11/pdp11.c (pdp11_addr_cost): New function.
7312 (pdp11_insn_cost): New function.
7313 (pdp11_md_asm_adjust): New function.
7314 (TARGET_INVALID_WITHIN_DOLOOP): Define.
7315 (pdp11_rtx_costs): Update to match machine better.
7316 (output_addr_const_pdp11): Correct format mismatch warnings.
7317 * config/pdp11/pdp11.h (SLOW_BYTE_ACCESS): Correct definition.
7318 * config/pdp11/pdp11.md: General change to add base_cost and/or
7319 length attributes for use by new pdp11_insn_cost function.
7320 (MIN_BRANCH): Correct definition.
7321 (MIN_SOB): Ditto.
7322 (doloop_end): Use standard pattern name for looping pattern.
7323 (doloop_end_nocc): New.
7324 (movsf): Add another constraint alternative.
7325 (zero_extendqihi2): Add constraint alternatives for not in place
7326 extend.
7327 (zero_extendhisi2): Remove.
7328 (shift patterns): Add CC handling variants.
7329 (bswaphi2): New.
7330 (bswapsi2): New.
7331 (rothi3): New.
7332 (define_peephole2): New peephole to recognize mov that sets CC for
7333 subsequent test.
7334
7335 2018-07-09 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
7336
7337 * config/sparc/sparc.c (sparc_fold_builtin) <SPARC_BUILTIN_PDIST,
7338 SPARC_BUILTIN_PDISTN>: Adapt for signature change of wi::neg,
7339 wi::add.
7340
7341 2018-07-09 Jakub Jelinek <jakub@redhat.com>
7342
7343 PR c/86420
7344 * real.c (real_nextafter): Return true if result is denormal.
7345
7346 2018-07-09 Martin Liska <mliska@suse.cz>
7347
7348 * common.opt: Add back wrongly removed attribute.
7349
7350 2018-07-09 Richard Biener <rguenther@suse.de>
7351
7352 PR debug/86413
7353 * dwarf2out.c (gen_block_die): For an early generated DIE
7354 always output high/low PC attributes.
7355
7356 2018-07-09 Tom de Vries <tdevries@suse.de>
7357
7358 * cfgexpand.c (expand_debug_source_expr): Handle VAR_DECL.
7359 * tree-inline.c (remap_ssa_name): Handle default def ssa_name mapping
7360 onto VAR_DECL with abstract origin.
7361
7362 2018-07-07 Jim Wilson <jimw@sifive.com>
7363
7364 * config/riscv/riscv.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): New.
7365
7366 2018-07-07 Tom de Vries <tdevries@suse.de>
7367
7368 * tree-dfa.c (dump_enumerated_decls): Handle cfun->cfg == NULL.
7369
7370 2018-07-07 Aldy Hernandez <aldyh@redhat.com>
7371
7372 * tree-vrp.c (vrp_int_const_binop): Change overflow type to
7373 overflow_type.
7374 (combine_bound): Use wide-int overflow calculation instead of
7375 rolling our own.
7376 * calls.c (maybe_warn_alloc_args_overflow): Change overflow type to
7377 overflow_type.
7378 * fold-const.c (int_const_binop_2): Same.
7379 (extract_muldiv_1): Same.
7380 (fold_div_compare): Same.
7381 (fold_abs_const): Same.
7382 * match.pd: Same.
7383 * poly-int.h (add): Same.
7384 (sub): Same.
7385 (neg): Same.
7386 (mul): Same.
7387 * predict.c (predict_iv_comparison): Same.
7388 * profile-count.c (slow_safe_scale_64bit): Same.
7389 * simplify-rtx.c (simplify_const_binary_operation): Same.
7390 * tree-chrec.c (tree_fold_binomial): Same.
7391 * tree-data-ref.c (split_constant_offset_1): Same.
7392 * tree-if-conv.c (idx_within_array_bound): Same.
7393 * tree-scalar-evolution.c (iv_can_overflow_p): Same.
7394 * tree-ssa-phiopt.c (minmax_replacement): Same.
7395 * tree-vect-loop.c (is_nonwrapping_integer_induction): Same.
7396 * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): Same.
7397 * vr-values.c (vr_values::adjust_range_with_scev): Same.
7398 * wide-int.cc (wi::add_large): Same.
7399 (wi::mul_internal): Same.
7400 (wi::sub_large): Same.
7401 (wi::divmod_internal): Same.
7402 * wide-int.h: Change overflow type to overflow_type for neg, add,
7403 mul, smul, umul, div_trunc, div_floor, div_ceil, div_round,
7404 mod_trunc, mod_ceil, mod_round, add_large, sub_large,
7405 mul_internal, divmod_internal.
7406 (overflow_type): New enum.
7407 (accumulate_overflow): New.
7408
7409 2018-07-06 Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org>
7410
7411 * tree-ssa-phiopt.c (cond_removal_in_popcount_pattern): New.
7412 (tree_ssa_phiopt_worker): Call cond_removal_in_popcount_pattern.
7413
7414 2018-07-06 Kugan Vivekanandarajah <kuganv@linaro.org>
7415
7416 * tree-ssa-loop-niter.c (number_of_iterations_popcount): If popcount
7417 argument is checked for zero before entering loop, avoid checking again.
7418
7419 2018-07-06 Kugan Vivekanandarajah <kuganv@linaro.org>
7420
7421 * gimplify.h (generic_expr_could_trap_p): Set as global function.
7422 * gimplify.h (generic_expr_could_trap_p): Likwise.
7423 * tree-scalar-evolution.c (expression_expensive_p): Handle COND_EXPR.
7424
7425 2018-07-06 Jakub Jelinek <jakub@redhat.com>
7426
7427 PR tree-optimization/86401
7428 * fold-const.c (fold_binary_loc) <case BIT_AND_EXPR>: Move the
7429 ((A & N) + B) & M -> (A + B) & M etc. optimization into ...
7430 (fold_bit_and_mask): ... here. New helper function for match.pd.
7431 * fold-const.h (fold_bit_and_mask): Declare.
7432 * match.pd (((A & N) + B) & M -> (A + B) & M): New optimization.
7433
7434 2018-07-06 Peter Bergner <bergner@linux.ibm.com>
7435
7436 PR target/86324
7437 * target.def (translate_mode_attribute): New hook.
7438 * targhooks.h (default_translate_mode_attribute): Declare.
7439 * targhooks.c (default_translate_mode_attribute): New function.
7440 * doc/tm.texi.in (TARGET_TRANSLATE_MODE_ATTRIBUTE): New hook.
7441 * doc/tm.texi: Regenerate.
7442 * config/rs6000/rs6000.c (TARGET_TRANSLATE_MODE_ATTRIBUTE): Define.
7443 (rs6000_translate_mode_attribute): New function.
7444
7445 2018-07-06 Paul Koning <ni1d@arrl.net>
7446
7447 * doc/md.texi (define_split): Document DONE and FAIL.
7448 (define_peephole2): Ditto.
7449
7450 2018-07-05 Jeff Law <law@redhat.com>
7451
7452 PR tree-optimization/86010
7453 * tree-ssa-dse.c (compute_trims): More aggressively trim at
7454 both the head and tail of mem* and str* calls.
7455
7456 2018-07-05 Jim Wilson <jimw@sifive.com>
7457
7458 * config.gcc (riscv*-*-*): When setting xlen, handle riscv-*.
7459
7460 2018-07-05 Indu Bhagat <indu.bhagat@oracle.com>
7461
7462 * config/aarch64/aarch64-simd.md: correct flags text for
7463 MIN_EXPR replacement.
7464
7465 2018-07-05 James Clarke <jrtc27@jrtc27.com>
7466
7467 * configure: Regenerated.
7468
7469 2018-07-05 Carl Love <cel@us.ibm.com>
7470
7471 * config/rs6000/rs6000-c.c: Map ALTIVEC_BUILTIN_VEC_UNPACKH for
7472 float argument to VSX_BUILTIN_DOUBLEH_V4SF.
7473 Map ALTIVEC_BUILTIN_VEC_UNPACKL for float argument to
7474 VSX_BUILTIN_DOUBLEL_V4SF.
7475
7476 2018-07-05 Martin Sebor <msebor@redhat.com>
7477
7478 PR c++/86400
7479 * tree-ssa-strlen.c (maybe_set_strlen_range): Use type size rather
7480 than its domain to compute its the upper bound of a char array.
7481
7482 2018-07-05 Nathan Sidwell <nathan@acm.org>
7483
7484 Replace NO_IMPLICIT_EXTERN_C with SYSTEM_IMPLICIT_EXTERN_C.
7485 * doc/cpp.texi: Update comment.
7486 * doc/tm.texi: Rebuilt.
7487 * doc/tm.texi.in (NO_IMPLICIT_EXTERN_C): Replace with ...
7488 (SYSTEM_IMPLICIT_EXTERN_C): ... this, opposite sense.
7489 * doc/extend.texi (Backwards Compatibility): Clarify it is system
7490 headers affected by extern "C".
7491 * system.h: Poison NO_IMPLICIT_EXTERN_C.
7492 * config/alpha/alpha.h, config/arm/uclinux-elf.h,
7493 config/bfin/elf.h, config/cris/cris.h, config/darwin.h,
7494 config/dragonfly.h, config/freebsd.h, config/gnu-user.h,
7495 config/i386/cygming.h, config/i386/djgpp.h, config/i386/nto.h,
7496 config/ia64/hpux.h, config/lm32/lm32.h, config/lm32/uclinux-elf.h,
7497 config/lynx.h, config/mips/elf.h, config/mmix/mmix.h,
7498 config/netbsd.h, config/pa/pa-hpux.h, config/powerpcspe/sysv4.h,
7499 config/riscv/elf.h, config/rs6000/sysv4.h, config/rtems.h,
7500 config/s390/tpf.h, config/sh/newlib.h, config/sol2.h,
7501 config/sparc/openbsd64.h, config/sparc/sp-elf.h,
7502 config/sparc/sp64-elf.h, config/spu/spu.h,
7503 config/stormy16/stormy16.h, config/v850/v850.h,
7504 config/visium/visium.h, config/vx-common.h, config/xtensa/elf.h: Don't
7505 define NO_IMPLICIT_EXTERN_C.
7506 * config/rs6000/aix.h: Set SYSTEM_IMPLICIT_EXTERN_C.
7507
7508 2018-07-05 Tamar Christina <tamar.christina@arm.com>
7509
7510 PR target/84711
7511 * config/arm/arm.c (arm_can_change_mode_class): Use GET_MODE_UNIT_SIZE
7512 instead of GET_MODE_SIZE when comparing Units.
7513
7514 2018-07-05 Tamar Christina <tamar.christina@arm.com>
7515
7516 PR target/84711
7517 * rtlanal.c (set_noop_p): Constrain on mode change,
7518 include hard-reg-set.h
7519
7520 2018-07-05 Tamar Christina <tamar.christina@arm.com>
7521
7522 * config/aarch64/aarch64.c (aarch64_expand_movmem): Fix mode size.
7523
7524 2018-07-05 Jakub Jelinek <jakub@redhat.com>
7525
7526 Revert
7527 2018-07-04 Maxim Ostapenko <m.ostapenko@samsung.com>
7528
7529 PR sanitizer/84250
7530 * config/gnu-user.h (LIBASAN_EARLY_SPEC): Pass -lstdc++ for static
7531 libasan.
7532 * gcc.c: Do not pass LIBUBSAN_SPEC if ASan is enabled with UBSan.
7533
7534 2018-07-04 Maxim Ostapenko <m.ostapenko@samsung.com>
7535
7536 PR sanitizer/84250
7537 * config/gnu-user.h (LIBASAN_EARLY_SPEC): Pass -lstdc++ for static
7538 libasan.
7539 * gcc.c: Do not pass LIBUBSAN_SPEC if ASan is enabled with UBSan.
7540
7541 2018-07-04 Eric Botcazou <ebotcazou@adacore.com>
7542
7543 PR middle-end/86380
7544 * expmed.c (choose_multiplier): Fix incorrect comparison with mask.
7545
7546 2018-07-04 Aldy Hernandez <aldyh@redhat.com>
7547
7548 * tree-vrp.c (extract_range_from_binary_expr_1): Initialize
7549 neg_*_op* variables.
7550
7551 2018-07-04 Martin Liska <mliska@suse.cz>
7552
7553 * tree-switch-conversion.c: Define
7554 max_ratio_for_speed and max_ratio_for_size constants.
7555
7556 2018-07-04 Denys Vlasenko <dvlasenk@redhat.com>
7557 Martin Liska <mliska@suse.cz>
7558
7559 PR middle-end/66240
7560 PR target/45996
7561 PR c/84100
7562 * common.opt: Rename align options with 'str_' prefix.
7563 * common/config/i386/i386-common.c (set_malign_value): New
7564 function.
7565 (ix86_handle_option): Use it to set -falign-* options/
7566 * config/aarch64/aarch64-protos.h (struct tune_params): Change
7567 type from int to string.
7568 * config/aarch64/aarch64.c: Update default values from int
7569 to string.
7570 * config/alpha/alpha.c (alpha_override_options_after_change):
7571 Likewise.
7572 * config/arm/arm.c (arm_override_options_after_change_1): Likewise.
7573 * config/i386/dragonfly.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Print
7574 max skip conditionally.
7575 * config/i386/freebsd.h (SUBALIGN_LOG): New.
7576 (ASM_OUTPUT_MAX_SKIP_ALIGN): Print
7577 max skip conditionally.
7578 * config/i386/gas.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Print
7579 max skip conditionally.
7580 * config/i386/gnu-user.h (SUBALIGN_LOG): New.
7581 (ASM_OUTPUT_MAX_SKIP_ALIGN): Print
7582 max skip conditionally.
7583 * config/i386/i386.c (struct ptt): Change type from int to
7584 string.
7585 (ix86_default_align): Set default values.
7586 * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): Print
7587 max skip conditionally.
7588 * config/i386/iamcu.h (SUBALIGN_LOG): New.
7589 (ASM_OUTPUT_MAX_SKIP_ALIGN):
7590 * config/i386/lynx.h (ASM_OUTPUT_MAX_SKIP_ALIGN):
7591 * config/i386/netbsd-elf.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Print
7592 max skip conditionally.
7593 * config/i386/openbsdelf.h (SUBALIGN_LOG): New.
7594 (ASM_OUTPUT_MAX_SKIP_ALIGN) Print max skip conditionally.:
7595 * config/i386/x86-64.h (SUBALIGN_LOG): New.
7596 (ASM_OUTPUT_MAX_SKIP_ALIGN): Print
7597 max skip conditionally.
7598 (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
7599 * config/ia64/ia64.c (ia64_option_override): Set default values
7600 for alignment options.
7601 * config/m68k/m68k.c: Handle new str_align_* options.
7602 * config/mips/mips.c (mips_set_compression_mode): Change
7603 type of constants.
7604 (mips_option_override): Set default values for options.
7605 * config/powerpcspe/powerpcspe.c (rs6000_option_override_internal):
7606 Likewise.
7607 * config/rs6000/rs6000.c (rs6000_option_override_internal):
7608 Likewise.
7609 * config/rx/rx.c (rx_option_override): Likewise.
7610 * config/rx/rx.h (JUMP_ALIGN): Use align_jumps_log.
7611 (LABEL_ALIGN): Use align_labels_log.
7612 (LOOP_ALIGN): Use align_loops_align.
7613 * config/s390/s390.c (s390_asm_output_function_label): Use new
7614 macros.
7615 * config/sh/sh.c (sh_override_options_after_change):
7616 Change type of constants.
7617 * config/spu/spu.c (spu_sched_init): Likewise.
7618 * config/sparc/sparc.c (sparc_option_override): Set default
7619 values for options.
7620 * config/visium/visium.c (visium_option_override): Likewise.
7621 * config/visium/visium.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Do not
7622 emit p2align format with last argument if it's not needed.
7623 * doc/invoke.texi: Document extended format of -falign-*.
7624 * final.c: Use align_labels alignment.
7625 * flags.h (struct target_flag_state): Change type to use
7626 align_flags.
7627 (struct align_flags_tuple): New.
7628 (struct align_flags): Likewise.
7629 (align_loops_log): Redefine macro to use new types.
7630 (align_loops_max_skip): Redefine macro to use new types.
7631 (align_jumps_log): Redefine macro to use new types.
7632 (align_jumps_max_skip): Redefine macro to use new types.
7633 (align_labels_log): Redefine macro to use new types.
7634 (align_labels_max_skip): Redefine macro to use new types.
7635 (align_functions_log): Redefine macro to use new types.
7636 (align_loops): Redefine macro to use new types.
7637 (align_jumps): Redefine macro to use new types.
7638 (align_labels): Redefine macro to use new types.
7639 (align_functions): Redefine macro to use new types.
7640 (align_functions_max_skip): Redefine macro to use new types.
7641 (align_loops_value): New macro.
7642 (align_jumps_value): New macro.
7643 (align_labels_value): New macro.
7644 (align_functions_value): New macro.
7645 * function.c (invoke_set_current_function_hook): Propagate
7646 alignment values from flags to global variables default in
7647 topleev.h.
7648 * ipa-icf.c (sem_function::equals_wpa): Use
7649 cl_optimization_option_eq instead of memcmp.
7650 * lto-streamer.h (cl_optimization_stream_out): Support streaming
7651 of string types.
7652 (cl_optimization_stream_in): Likewise.
7653 * optc-save-gen.awk: Support strings in cl_optimization.
7654 * opth-gen.awk: Likewise.
7655 * opts.c (finish_options): Remove error checking of invalid
7656 value ranges.
7657 (MAX_CODE_ALIGN): Remove.
7658 (MAX_CODE_ALIGN_VALUE): Likewise.
7659 (parse_and_check_align_values): New function.
7660 (check_alignment_argument): Likewise.
7661 (common_handle_option): Use check_alignment_argument.
7662 * opts.h (parse_and_check_align_values): Declare.
7663 * toplev.c (init_alignments): Remove.
7664 (read_log_maxskip): New.
7665 (parse_N_M): Likewise.
7666 (parse_alignment_opts): Likewise.
7667 (backend_init_target): Remove usage of init_alignments.
7668 * toplev.h (parse_alignment_opts): Declare.
7669 * tree-streamer-in.c (streamer_read_tree_bitfields): Add new
7670 argument.
7671 * tree-streamer-out.c (streamer_write_tree_bitfields): Likewise.
7672 * tree.c (cl_option_hasher::equal): New.
7673 * varasm.c: Use new global macros.
7674
7675 2018-07-04 Denys Vlasenko <dvlasenk@redhat.com>
7676
7677 * config/i386/dragonfly.h: (ASM_OUTPUT_MAX_SKIP_ALIGN):
7678 Use a simpler align directive also if MAXSKIP = ALIGN-1.
7679 * config/i386/gas.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
7680 * config/i386/lynx.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
7681 * config/i386/netbsd-elf.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
7682 * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
7683 * config/i386/freebsd.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Remove "If N
7684 is large, do at least 8 byte alignment" code. Add SUBALIGN_LOG
7685 define. Use a simpler align directive also if MAXSKIP = ALIGN-1.
7686 * config/i386/gnu-user.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
7687 * config/i386/iamcu.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
7688 * config/i386/openbsdelf.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
7689 * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
7690
7691 2018-07-04 Martin Liska <mliska@suse.cz>
7692 Jonathan Wakely <jwakely@redhat.com>
7693
7694 * coverage.c: Use correct type.
7695 * doc/invoke.texi: Language correction.
7696
7697 2018-07-03 H.J. Lu <hongjiu.lu@intel.com>
7698
7699 PR target/85620
7700 * config/i386/i386.c (rest_of_insert_endbranch): Also generate
7701 ENDBRANCH for non-tail call which may return via indirect branch.
7702 * doc/extend.texi: Document indirect_return attribute.
7703
7704 2018-07-03 Martin Sebor <msebor@redhat.com>
7705
7706 PR tree-optimization/86274
7707 * gimple-ssa-sprintf.c (fmtresult::type_max_digits): Verify
7708 precondition.
7709 (format_floating): Correct handling of infinities and NaNs.
7710
7711 2018-07-03 Martin Sebor <msebor@redhat.com>
7712
7713 * print-tree.c (print_real_cst): New function.
7714 (print_node_brief): Call it.
7715 (print_node): Ditto.
7716
7717 2018-07-03 Jeff Law <law@redhat.com>
7718
7719 * config/h8300/h8300.md (logical<mode>3_sn, logical<mode>3): Merge
7720 into a single pattern.
7721
7722 * config/h8300/h8300.md (ors code_iterator): New.
7723 (bsetqi_msx, bnotqi_msx patterns and splitters): Consolidate into
7724 a single pattern and single splitter.
7725 (bsethi_msx, bnothi_msx patterns): Consolidate into a single pattern.
7726 (iorqi3_1, xorqi3_1): Likewise.
7727 (iorqi3, xorqi3 expanders): Similarly.
7728
7729 * config/h8300/h8300.md (movmd_internal_normal): Consolidated with
7730 (movmd_internal) into a single pattern using the P mode iterator.
7731 (movmd splitters): Similarly.
7732 (stpcpy_internal_normal, stpcpy_internal): Similarly for thes patterns.
7733 (movsd splitters): Similarly.
7734
7735 * config/h8300/h8300.c (h8300_insn_length_from_table): Consolidate
7736 ADDB, ADDW and ADDL into a single ADD attribute which selects the
7737 right table based on the size of the operand.
7738 * config/h8300/h8300.md (length_table): Corresponding changes. All
7739 references to "addb", "addw" and "addl" changed to "add".
7740 (btst patterns): Merge two variants into a single pattern.
7741 (tstqi, tsthi): Likewise.
7742 (addhi3_incdec, addsi3_incdec): Likewise.
7743 (subhi3_h8300hs, subsi3_h8300hs): Likewise.
7744 (mulhi3, mulsi3): Likewise.
7745 (udivhi3, udivsi3): Likewise.
7746 (divhi3, divsi3): Likewise.
7747 (andorqi3, andorhi3, andorsi3): Likewise.
7748
7749 2018-07-03 Uros Bizjak <ubizjak@gmail.com>
7750
7751 PR target/85694
7752 * config/i386/sse.md (uavg<mode>3_ceil): New expander.
7753 (<sse2_avx2>_uavg<mode>3<mask_name>): Simplify expander.
7754
7755 2018-07-03 Richard Sandiford <richard.sandiford@arm.com>
7756
7757 PR tree-optimization/85694
7758 * config/aarch64/iterators.md (HADD, RHADD): New int iterators.
7759 (u): Handle UNSPEC_SHADD, UNSPEC_UHADD, UNSPEC_SRHADD and
7760 UNSPEC_URHADD.
7761 * config/aarch64/aarch64-simd.md (<u>avg<mode>3_floor)
7762 (<u>avg<mode>3_ceil): New patterns.
7763
7764 2018-07-03 David Malcolm <dmalcolm@redhat.com>
7765
7766 * gcc.dg/vect/slp-perm-1.c: Remove "note: " prefix from
7767 scan-tree-dump directive.
7768 * gcc.dg/vect/slp-perm-2.c: Likewise.
7769 * gcc.dg/vect/slp-perm-3.c: Likewise.
7770 * gcc.dg/vect/slp-perm-5.c: Likewise.
7771 * gcc.dg/vect/slp-perm-6.c: Likewise.
7772 * gcc.dg/vect/slp-perm-7.c: Likewise.
7773 * gcc.dg/vect/slp-perm-8.c: Likewise.
7774
7775 2018-07-03 Marek Polacek <polacek@redhat.com>
7776
7777 PR middle-end/86202
7778 * gimple-fold.c (size_must_be_zero_p): Check the type of the size.
7779
7780 2018-07-03 Richard Biener <rguenther@suse.de>
7781
7782 PR ipa/86389
7783 * tree-ssa-structalias.c (find_func_clobbers): Properly
7784 handle indirect calls.
7785
7786 2018-07-03 Jeff Law <law@redhat.com>
7787
7788 * config/h8300/h8300.md (HSI, QHSI, QHSIF): New mode iterators.
7789 (shifts): New code iterator.
7790 (movqi, movhi, movsi, movsf expanders): Consolidate into a single
7791 expander. Fix HImode handling on H8/SX.
7792 (addqi3, addhi3, addsi3 expanders): Consolidate into a single expander.
7793 (subqi3, subhi3, subsi3 expanders): Likewise.
7794 (andqi3, andhi3, andsi3 expanders): Likewise.
7795 (iorqi3, iorhi3, iorsi3 expanders): Likewise.
7796 (xorqi3, xorhi3, xorsi3 expanders): Likewise.
7797 (negqi2, neghi2, negsi2, negsf2 expanders): Likewise.
7798 (one_cmplqi2, one_cmplhi2, one_cmplsi2): Likewise.
7799 (zero_extendqihi2, zero_extendqisi2): Likewise.
7800 (extendqihi2, extendqisi2): Likewise.
7801 (rotlqi3, rotlhi3, rotlsi3): Likewise.
7802 (neghi2_h8300, negsi2_h8300): Likewise for these patterns.
7803 (rotlqi3_1, rotlhi3_1): Likewise.
7804 (logicalhi3_sn, logicalsi3_sn): Likewise.
7805 (logicalhi3, logicalsi3): Likewise.
7806
7807 2018-07-03 Richard Sandiford <richard.sandiford@arm.com>
7808
7809 * tree-vect-patterns.c (vect_recog_rotate_pattern)
7810 (vect_recog_vector_vector_shift_pattern, vect_recog_divmod_pattern)
7811 (vect_recog_mixed_size_cond_pattern, adjust_bool_pattern_cast)
7812 (adjust_bool_pattern, vect_recog_bool_pattern): Pass the vector
7813 type to append_pattern_def_seq instead of creating a stmt_vec_info
7814 directly.
7815 (build_mask_conversion): Likewise. Remove vinfo argument.
7816 (vect_add_conversion_to_patterm): Likewise, renaming to...
7817 (vect_add_conversion_to_pattern): ...this.
7818 (vect_recog_mask_conversion_pattern): Update call to
7819 build_mask_conversion. Pass the vector type to
7820 append_pattern_def_seq here too.
7821 (vect_recog_gather_scatter_pattern): Update call to
7822 vect_add_conversion_to_pattern.
7823
7824 2018-07-03 Richard Sandiford <richard.sandiford@arm.com>
7825
7826 * tree-vect-patterns.c (new_pattern_def_seq): Delete.
7827 (vect_recog_dot_prod_pattern, vect_recog_sad_pattern)
7828 (vect_recog_widen_op_pattern, vect_recog_over_widening_pattern)
7829 (vect_recog_rotate_pattern, vect_synth_mult_by_constant): Don't set
7830 STMT_VINFO_PATTERN_DEF_SEQ to null here.
7831 (vect_recog_pow_pattern, vect_recog_vector_vector_shift_pattern)
7832 (vect_recog_mixed_size_cond_pattern, vect_recog_bool_pattern): Use
7833 append_pattern_def_seq instead of new_pattern_def_seq.
7834 (vect_recog_divmod_pattern): Do both of the above.
7835 (vect_pattern_recog_1): Assert that STMT_VINO_PATTERN_DEF_SEQ
7836 is null.
7837
7838 2018-07-03 Richard Sandiford <richard.sandiford@arm.com>
7839
7840 * tree-vect-patterns.c (vect_recog_dot_prod_pattern):
7841 (vect_recog_sad_pattern, vect_recog_widen_op_pattern)
7842 (vect_recog_widen_mult_pattern, vect_recog_pow_pattern):
7843 (vect_recog_widen_sum_pattern, vect_recog_over_widening_pattern)
7844 (vect_recog_average_pattern, vect_recog_cast_forwprop_pattern)
7845 (vect_recog_widen_shift_pattern, vect_recog_rotate_pattern)
7846 (vect_recog_vector_vector_shift_pattern, vect_synth_mult_by_constant)
7847 (vect_recog_mult_pattern, vect_recog_divmod_pattern)
7848 (vect_recog_mixed_size_cond_pattern, vect_recog_bool_pattern)
7849 (vect_recog_mask_conversion_pattern): Replace vec<gimple *>
7850 parameter with a single stmt_vec_info.
7851 (vect_recog_func_ptr): Likewise.
7852 (vect_recog_gather_scatter_pattern): Likewise, folding in...
7853 (vect_try_gather_scatter_pattern): ...this.
7854 (vect_pattern_recog_1): Remove stmts_to_replace and just pass
7855 the stmt_vec_info of the statement to be matched. Don't clear
7856 STMT_VINFO_RELATED_STMT.
7857 (vect_pattern_recog): Update call accordingly.
7858
7859 2018-07-03 Richard Sandiford <richard.sandiford@arm.com>
7860
7861 PR tree-optimization/85694
7862 * doc/md.texi (avgM3_floor, uavgM3_floor, avgM3_ceil)
7863 (uavgM3_ceil): Document new optabs.
7864 * doc/sourcebuild.texi (vect_avg_qi): Document new target selector.
7865 * internal-fn.def (IFN_AVG_FLOOR, IFN_AVG_CEIL): New internal
7866 functions.
7867 * optabs.def (savg_floor_optab, uavg_floor_optab, savg_ceil_optab)
7868 (savg_ceil_optab): New optabs.
7869 * tree-vect-patterns.c (vect_recog_average_pattern): New function.
7870 (vect_vect_recog_func_ptrs): Add it.
7871 * tree-vect-stmts.c (vectorizable_call): Get the type of the zero
7872 constant directly from the associated lhs.
7873
7874 2018-07-03 Richard Sandiford <richard.sandiford@arm.com>
7875
7876 * tree-vect-patterns.c (vect_split_statement): New function.
7877 (vect_convert_input): Use it to try to split an existing cast.
7878
7879 2018-07-03 Richard Sandiford <richard.sandiford@arm.com>
7880
7881 * poly-int.h (print_hex): New function.
7882 * dumpfile.h (dump_dec, dump_hex): Declare.
7883 * dumpfile.c (dump_dec, dump_hex): New poly_wide_int functions.
7884 * tree-vectorizer.h (_stmt_vec_info): Add min_output_precision,
7885 min_input_precision, operation_precision and operation_sign.
7886 * tree-vect-patterns.c (vect_get_range_info): New function.
7887 (vect_same_loop_or_bb_p, vect_single_imm_use)
7888 (vect_operation_fits_smaller_type): Delete.
7889 (vect_look_through_possible_promotion): Add an optional
7890 single_use_p parameter.
7891 (vect_recog_over_widening_pattern): Rewrite to use new
7892 stmt_vec_info infomration. Handle one operation at a time.
7893 (vect_recog_cast_forwprop_pattern, vect_narrowable_type_p)
7894 (vect_truncatable_operation_p, vect_set_operation_type)
7895 (vect_set_min_input_precision): New functions.
7896 (vect_determine_min_output_precision_1): Likewise.
7897 (vect_determine_min_output_precision): Likewise.
7898 (vect_determine_precisions_from_range): Likewise.
7899 (vect_determine_precisions_from_users): Likewise.
7900 (vect_determine_stmt_precisions, vect_determine_precisions): Likewise.
7901 (vect_vect_recog_func_ptrs): Put over_widening first.
7902 Add cast_forwprop.
7903 (vect_pattern_recog): Call vect_determine_precisions.
7904
7905 2018-07-03 Richard Sandiford <richard.sandiford@arm.com>
7906
7907 * tree-vect-patterns.c (vect_mark_pattern_stmts): Remove pattern
7908 statements that have been replaced by further pattern statements.
7909 (vect_pattern_recog_1): Clear STMT_VINFO_PATTERN_DEF_SEQ on failure.
7910
7911 2018-07-03 Richard Biener <rguenther@suse.de>
7912
7913 * tree-vect-stmts.c (vect_is_simple_use): Consolidate dumping,
7914 always set *dt. Dump vectype in vectype overload.
7915 * dumpfile.h (dump_gimple_expr): New function.
7916 (dump_gimple_expr_loc): Likewise.
7917 * dumpfile.c (dump_gimple_expr): New function.
7918 (dump_gimple_expr_loc): Likewise.
7919
7920 2018-07-02 Jeff Law <law@redhat.com>
7921
7922 * config/h8300/h8300.md (movqi_h8300, movqi_h8300hs): Consolidate
7923 the H8/300, H8/300H and H8/S variants into a single pattern.
7924 (movhi_h8300, movqi_h8300hs): Similarly.
7925 (pushqi_h8300hs, pushhi_h8300hs): Consolidate into a single pattern.
7926 (QHI mode iterator): New.
7927
7928 * config/h8300/h8300.md: Remove trailing whitespace.
7929
7930 2018-07-02 Jim Wilson <jimw@sifive.com>
7931
7932 * config/riscv/riscv.c (riscv_expand_epilogue): Use emit_jump_insn
7933 instead of emit_insn for interrupt returns.
7934 * config/riscv/riscv.md (riscv_met): Add (return) to rtl.
7935 (riscv_sret, riscv_uret): Likewise.
7936
7937 2018-07-02 David Malcolm <dmalcolm@redhat.com>
7938
7939 * pretty-print.c (selftest::test_pp_format): Move save and restore
7940 of quotes to class auto_fix_quotes, and add an instance.
7941 * selftest.c: Include "intl.h".
7942 (selftest::auto_fix_quotes::auto_fix_quotes): New ctor.
7943 (selftest::auto_fix_quotes::~auto_fix_quotes): New dtor.
7944 * selftest.h (selftest::auto_fix_quotes): New class.
7945
7946 2018-07-02 Richard Henderson <richard.henderson@linaro.org>
7947
7948 * config/aarch64/aarch64-protos.h, config/aarch64/aarch64.c
7949 (aarch64_sve_prepare_conditional_op): Remove.
7950 * config/aarch64/aarch64-sve.md (cond_<SVE_INT_BINARY><SVE_I>):
7951 Allow aarch64_simd_reg_or_zero as select operand; remove
7952 the aarch64_sve_prepare_conditional_op call.
7953 (cond_<SVE_INT_BINARY_SD><SVE_SDI>): Likewise.
7954 (cond_<SVE_COND_FP_BINARY><SVE_F>): Likewise.
7955 (*cond_<SVE_INT_BINARY><SVE_I>_z): New pattern.
7956 (*cond_<SVE_INT_BINARY_SD><SVE_SDI>_z): New pattern.
7957 (*cond_<SVE_COND_FP_BINARY><SVE_F>_z): New pattern.
7958 (*cond_<SVE_INT_BINARY><SVE_I>_any): New pattern.
7959 (*cond_<SVE_INT_BINARY_SD><SVE_SDI>_any): New pattern.
7960 (*cond_<SVE_COND_FP_BINARY><SVE_F>_any): New pattern
7961 and a splitters to match all of the *_any patterns.
7962 * config/aarch64/predicates.md (aarch64_sve_any_binary_operator): New.
7963
7964 * config/aarch64/iterators.md (SVE_INT_BINARY_REV): Remove.
7965 (SVE_COND_FP_BINARY_REV): Remove.
7966 (sve_int_op_rev, sve_fp_op_rev): New.
7967 * config/aarch64/aarch64-sve.md (*cond_<SVE_INT_BINARY><SVE_I>_0): New.
7968 (*cond_<SVE_INT_BINARY_SD><SVE_SDI>_0): New.
7969 (*cond_<SVE_COND_FP_BINARY><SVE_F>_0): New.
7970 (*cond_<SVE_INT_BINARY><SVE_I>_2): Rename, add movprfx alternative.
7971 (*cond_<SVE_INT_BINARY_SD><SVE_SDI>_2): Similarly.
7972 (*cond_<SVE_COND_FP_BINARY><SVE_F>_2): Similarly.
7973 (*cond_<SVE_INT_BINARY><SVE_I>_3): Similarly; use sve_int_op_rev.
7974 (*cond_<SVE_INT_BINARY_SD><SVE_SDI>_3): Similarly.
7975 (*cond_<SVE_COND_FP_BINARY><SVE_F>_3): Similarly; use sve_fp_op_rev.
7976
7977 * config/aarch64/aarch64-sve.md (cond_<SVE_COND_FP_BINARY><SVE_F>):
7978 Remove match_dup 1 from the inner unspec.
7979 (*cond_<SVE_COND_FP_BINARY><SVE_F>): Likewise.
7980
7981 * config/aarch64/aarch64.md (movprfx): New attr.
7982 (length): Default movprfx to 8.
7983 * config/aarch64/aarch64-sve.md (*mul<SVE_I>3): Add movprfx alt.
7984 (*madd<SVE_I>, *msub<SVE_I): Likewise.
7985 (*<su>mul<SVE_I>3_highpart): Likewise.
7986 (*<SVE_INT_BINARY_SD><SVE_SDI>3): Likewise.
7987 (*v<ASHIFT><SVE_I>3): Likewise.
7988 (*<su><MAXMIN><SVE_I>3): Likewise.
7989 (*<su><MAXMIN><SVE_F>3): Likewise.
7990 (*fma<SVE_F>4, *fnma<SVE_F>4): Likewise.
7991 (*fms<SVE_F>4, *fnms<SVE_F>4): Likewise.
7992 (*div<SVE_F>4): Likewise.
7993
7994 2018-07-02 Richard Sandiford <richard.sandiford@arm.com>
7995
7996 * tree-vect-patterns.c (vect_recog_widen_shift_pattern): Fix typo
7997 in dump string.
7998
7999 2018-07-02 Richard Biener <rguenther@suse.de>
8000
8001 PR tree-optimization/86363
8002 * tree-ssa-sccvn.c (vn_reference_lookup_3): Check the
8003 memset argument refers to a non-variable address.
8004
8005 2018-07-02 Aldy Hernandez <aldyh@redhat.com>
8006
8007 * tree-vrp.c (extract_range_from_binary_expr_1): Abstract a lot of the
8008 {PLUS,MINUS}_EXPR code to...
8009 (adjust_symbolic_bound): ...here,
8010 (combine_bound): ...here,
8011 (set_value_range_with_overflow): ...and here.
8012
8013 2018-07-02 Aldy Hernandez <aldyh@redhat.com>
8014
8015 * tree-vrp.c (extract_range_from_unary_expr): Abstract ABS_EXPR
8016 code...
8017 (extract_range_from_abs_expr): ...here.
8018
8019 2018-07-02 Eric Botcazou <ebotcazou@adacore.com>
8020
8021 * config/i386/i386.c (ix86_finalize_stack_frame_flags): Do not overrule
8022 -fno-omit-frame-pointer when not optimizing.
8023
8024 2018-07-02 Martin Liska <mliska@suse.cz>
8025
8026 PR ipa/86279
8027 * ipa-pure-const.c (malloc_candidate_p): Revert usage of ::get.
8028 (propagate_nothrow): Likewise.
8029
8030 2018-07-02 Martin Liska <mliska@suse.cz>
8031
8032 PR ipa/86323
8033 * ipa-inline.c (early_inliner): Revert wrongly added ::get call.
8034
8035 2018-07-02 David Malcolm <dmalcolm@redhat.com>
8036
8037 * dumpfile.c (dump_generic_expr_loc): Undo removal of this
8038 function in r262149, changing "loc" param from source_location to
8039 const dump_location_t &.
8040 * dumpfile.h (dump_generic_expr_loc): Undo removal of this
8041 declaration, as above.
8042
8043 2018-07-01 Paul Koning <ni1d@arrl.net>
8044
8045 * common/config/pdp11/pdp11-common.c (pdp11_handle_option): Handle
8046 -munit-asm, -mgnu-asm, -mdec-asm.
8047 * config/pdp11/pdp11-protos.h (pdp11_gen_int_label): New.
8048 (pdp11_output_labelref): New.
8049 (pdp11_output_def): New.
8050 (pdp11_output_addr_vec_elt): New.
8051 * config/pdp11/pdp11.c: Use tab between opcode and operands. Use
8052 %# and %@ format codes.
8053 (pdp11_option_override): New.
8054 (TARGET_ASM_FILE_START_FILE_DIRECTIVE): Define.
8055 (pdp11_output_ident): New.
8056 (pdp11_asm_named_section): New.
8057 (pdp11_asm_init_sections): New.
8058 (pdp11_file_start): New.
8059 (pdp11_file_end): New.
8060 (output_ascii): Use .ascii/.asciz for -mdec-asm.
8061 (pdp11_asm_print_operand): Update %# and %$ for -mdec-asm. Add
8062 %o, like %c but octal.
8063 (pdp11_option_override): New.
8064 * config/pdp11/pdp11.h (TEXT_SECTION_ASM_OP): Update for
8065 -mdec-asm.
8066 (DATA_SECTION_ASM_OP): Ditto.
8067 (READONLY_DATA_SECTION_ASM_OP): New.
8068 (IS_ASM_LOGICAL_LINE_SEPARATOR): New.
8069 (ASM_GENERATE_INTERNAL_LABEL): Use new function.
8070 (ASM_OUTPUT_LABELREF): Ditto.
8071 (ASM_OUTPUT_DEF): Ditto.
8072 (ASM_OUTPUT_EXTERNAL): New.
8073 (ASM_OUTPUT_SOURCE_FILENAME): New.
8074 (ASM_OUTPUT_ADDR_VEC_ELT): Use new function.
8075 (ASM_OUTPUT_SKIP): Update for -mdec-asm.
8076 * config/pdp11/pdp11.md: Use tab between opcode and operands. Use
8077 %# and %@ format codes.
8078 * config/pdp11/pdp11.opt (mgnu-asm): New.
8079 (mdec-asm): Conflicts with -mgnu-asm and -munix-asm.
8080 (munix-asm): Conflicts with -mdec-asm and -mgnu-asm.
8081 * doc/invoke.txt (PDP-11 Options): Add -mgnu-asm.
8082
8083 2018-07-01 Aldy Hernandez <aldyh@redhat.com>
8084
8085 * tree-ssa-threadupdate.c (mark_threaded_blocks): Avoid
8086 dereferencing path[] beyond its length.
8087 (debug_path): New.
8088 (debug_all_paths): New.
8089 (rewire_first_differing_edge): New.
8090 (adjust_paths_after_duplication): New.
8091 (duplicate_thread_path): Call adjust_paths_after_duplication.
8092 Add new argument.
8093 (thread_through_all_blocks): Add new argument to
8094 duplicate_thread_path.
8095
8096 2018-06-30 Jim Wilson <jimw@sifive.com>
8097
8098 * config/riscv/predicates.md (p2m1_shift_operand): New.
8099 (high_mask_shift_operand): New.
8100 * config/riscv/riscv.md (lshrsi3_zero_extend_3+1): New combiner
8101 pattern using p2m1_shift_operand.
8102 (lshsi3_zero_extend_3+2): New combiner pattern using
8103 high_mask_shift_operand.
8104
8105 2018-06-30 Richard Sandiford <richard.sandiford@arm.com>
8106
8107 * tree-vect-patterns.c (vect_get_external_def_edge): New function,
8108 split out from...
8109 (vect_recog_rotate_pattern): ...here.
8110 (vect_convert_input): Try to insert casts of invariants in the
8111 preheader.
8112 * tree-vect-loop-manip.c (vect_loop_versioning): Don't require the
8113 preheader to be empty.
8114
8115 2018-06-30 Richard Sandiford <richard.sandiford@arm.com>
8116
8117 * tree-vect-patterns.c (append_pattern_def_seq): Take an optional
8118 vector type. If given, install it in the new statement's
8119 STMT_VINFO_VECTYPE.
8120 (vect_element_precision): New function.
8121 (vect_unpromoted_value): New struct.
8122 (vect_unpromoted_value::vect_unpromoted_value): New function.
8123 (vect_unpromoted_value::set_op): Likewise.
8124 (vect_look_through_possible_promotion): Likewise.
8125 (vect_joust_widened_integer, vect_joust_widened_type): Likewise.
8126 (vect_widened_op_tree, vect_convert_input): Likewise.
8127 (vect_convert_inputs, vect_convert_output): Likewise.
8128 (vect_recog_dot_prod_pattern): Use vect_look_through_possible_promotion
8129 to handle the optional cast of the multiplication result and
8130 vect_widened_op_tree to detect the widened multiplication itself.
8131 Do not require the input and output of promotion casts to have
8132 the same sign, but base the signedness of the operation on the
8133 input rather than the result. If the pattern includes two
8134 promotions, check that those promotions have the same sign.
8135 Do not restrict the MULT_EXPR handling to a double-width result;
8136 handle quadruple-width results and wider. Use vect_convert_inputs
8137 to convert the inputs to the common type.
8138 (vect_recog_sad_pattern): Use vect_look_through_possible_promotion
8139 to handle the optional cast of the ABS result. Also allow a sign
8140 change or a sign extension between the ABS and MINUS.
8141 Use vect_widened_op_tree to detect the widened subtraction and use
8142 vect_convert_inputs to convert the inputs to the common type.
8143 (vect_handle_widen_op_by_const): Delete.
8144 (vect_recog_widen_op_pattern): New function.
8145 (vect_recog_widen_mult_pattern): Use it.
8146 (vect_recog_widen_shift_pattern): Likewise.
8147 (vect_recog_widen_sum_pattern): Use
8148 vect_look_through_possible_promotion to handle the promoted
8149 PLUS_EXPR operand.
8150
8151 2018-06-30 Richard Sandiford <richard.sandiford@arm.com>
8152
8153 * gimple-iterator.c (gsi_for_stmt): Add a new overload that takes
8154 the containing gimple_seq *.
8155 * gimple-iterator.h (gsi_for_stmt): Declare it.
8156 * tree-vect-patterns.c (vect_recog_dot_prod_pattern)
8157 (vect_recog_sad_pattern, vect_recog_widen_sum_pattern)
8158 (vect_recog_widen_shift_pattern, vect_recog_rotate_pattern)
8159 (vect_recog_vector_vector_shift_pattern, vect_recog_divmod_pattern)
8160 (vect_recog_mask_conversion_pattern): Remove STMT_VINFO_IN_PATTERN_P
8161 checks.
8162 (vect_init_pattern_stmt, vect_set_pattern_stmt): New functions,
8163 split out from...
8164 (vect_mark_pattern_stmts): ...here. Handle cases in which the
8165 statement being replaced is part of an existing pattern
8166 definition sequence, inserting the new pattern statements before
8167 the original one.
8168 (vect_pattern_recog_1): Don't return a bool. If the statement
8169 is already part of a pattern, instead apply pattern matching
8170 to the pattern definition statements. Don't clear the
8171 STMT_VINFO_RELATED_STMT if is_pattern_stmt_p.
8172 (vect_pattern_recog): Don't break after the first match;
8173 continue processing the pattern definition statements instead.
8174 Don't bail out for STMT_VINFO_IN_PATTERN_P here.
8175
8176 2018-06-30 Richard Sandiford <richard.sandiford@arm.com>
8177
8178 * tree-vect-patterns.c (vect_reassociating_reduction_p): New function.
8179 (vect_recog_dot_prod_pattern, vect_recog_sad_pattern)
8180 (vect_recog_widen_sum_pattern): Use it.
8181
8182 2018-06-30 Richard Sandiford <richard.sandiford@arm.com>
8183
8184 * tree-vect-loop.c (vectorizable_reduction): Assert that the
8185 phi is not a pattern statement and has not been replaced by
8186 a pattern statement.
8187 * tree-vect-patterns.c (type_conversion_p): Don't check
8188 STMT_VINFO_IN_PATTERN_P.
8189 (vect_recog_vector_vector_shift_pattern): Likewise.
8190 (vect_recog_dot_prod_pattern): Expect vect_is_simple_use to return
8191 the pattern statement rather than the original statement; check
8192 directly for a WIDEN_MULT_EXPR here.
8193 * tree-vect-slp.c (vect_get_and_check_slp_defs): Expect
8194 vect_is_simple_use to return the pattern statement rather
8195 than the original statement; use is_pattern_stmt_p to check
8196 for such a pattern statement.
8197 * tree-vect-stmts.c (process_use): Expect vect_is_simple_use
8198 to return the pattern statement rather than the original statement;
8199 don't do the same transformation here.
8200 (vect_is_simple_use): If the defining statement has been replaced
8201 by a pattern statement, return the pattern statement instead.
8202 Remove the corresponding (local) transformation from the vectype
8203 overload.
8204
8205 2018-06-30 Richard Sandiford <richard.sandiford@arm.com>
8206
8207 * tree-vectorizer.h (vect_is_simple_use): Move the gimple ** to the
8208 end and default to null.
8209 * tree-vect-loop.c (vect_create_epilog_for_reduction)
8210 (vectorizable_reduction): Update calls accordingly, dropping the
8211 gimple ** argument if the passed-back statement isn't needed.
8212 * tree-vect-patterns.c (vect_get_internal_def, type_conversion_p)
8213 (vect_recog_rotate_pattern): Likewise.
8214 (vect_recog_mask_conversion_pattern): Likewise.
8215 * tree-vect-slp.c (vect_get_and_check_slp_defs): Likewise.
8216 (vect_mask_constant_operand_p): Likewise.
8217 * tree-vect-stmts.c (is_simple_and_all_uses_invariant, process_use):
8218 (vect_model_simple_cost, vect_get_vec_def_for_operand): Likewise.
8219 (get_group_load_store_type, get_load_store_type): Likewise.
8220 (vect_check_load_store_mask, vect_check_store_rhs): Likewise.
8221 (vectorizable_call, vectorizable_simd_clone_call): Likewise.
8222 (vectorizable_conversion, vectorizable_assignment): Likewise.
8223 (vectorizable_shift, vectorizable_operation): Likewise.
8224 (vectorizable_store, vect_is_simple_cond): Likewise.
8225 (vectorizable_condition, vectorizable_comparison): Likewise.
8226 (get_same_sized_vectype, vect_get_mask_type_for_stmt): Likewise.
8227 (vect_is_simple_use): Rename the def_stmt argument to def_stmt_out
8228 and move it to the end. Cope with null def_stmt_outs.
8229
8230 2018-06-30 Bernd Edlinger <bernd.edlinger@hotmail.de>
8231
8232 * Makefile.in (FLAGS_TO_PASS): Add RANLIB_FOR_TARGET.
8233
8234 2018-06-29 Jeff Law <law@redhat.com>
8235
8236 * config/v850/v850.c (v850_legitimate_address_p): Handle large
8237 displacements for TARGET_V850E2V3 and newer.
8238 (TARGET_LRA_P): Remove. Defaults to LRA now.
8239 * config/v850/v850.md (sign23byte_load): Remove.
8240 (unsign23byte_load, sign23hword_load, unsign23hword_load): Likewise.
8241 (23word_load, 23byte_store, 23hword_store, 23word_store): Likewise.
8242
8243 2018-06-29 Martin Liska <mliska@suse.cz>
8244
8245 PR lto/85759
8246 * coverage.c (coverage_init): Mangle full path name.
8247 * doc/invoke.texi: Document the change.
8248 * gcov-io.c (mangle_path): New.
8249 * gcov-io.h (mangle_path): Likewise.
8250 * gcov.c (mangle_name): Use mangle_path for path mangling.
8251
8252 2018-06-29 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8253
8254 * config/arm/arm.c (output_move_double): Don't allow STRD instructions
8255 if starting source register is not even.
8256
8257 2018-06-29 Martin Liska <mliska@suse.cz>
8258
8259 PR tree-optimization/86263
8260 * tree-switch-conversion.c (switch_decision_tree::try_switch_expansion):
8261 Make edge redirection.
8262
8263 2018-06-29 David Malcolm <dmalcolm@redhat.com>
8264
8265 * dumpfile.c (dump_loc): Add indentation based on scope depth.
8266 (dump_scope_depth): New variable.
8267 (get_dump_scope_depth): New function.
8268 (dump_begin_scope): New function.
8269 (dump_end_scope): New function.
8270 * dumpfile.h (get_dump_scope_depth): New declaration.
8271 (dump_begin_scope): New declaration.
8272 (dump_end_scope): New declaration.
8273 (class auto_dump_scope): New class.
8274 (AUTO_DUMP_SCOPE): New macro.
8275 * tree-vectorizer.h (DUMP_VECT_SCOPE): Reimplement in terms of
8276 AUTO_DUMP_SCOPE.
8277
8278 2018-06-29 Richard Biener <rguenther@suse.de>
8279
8280 * tree-vect-data-refs.c (vect_analyze_data_ref_dependences): Assert
8281 compute_all_dependences succeeds.
8282 * tree-vect-loop.c (vect_get_datarefs_in_loop): Fail early if we
8283 exceed --param loop-max-datarefs-for-datadeps.
8284
8285 2018-06-29 Jakub Jelinek <jakub@redhat.com>
8286
8287 * config/rs6000/t-rs6000: Append rs6000-modes.h to TM_H.
8288
8289 2018-06-28 Uros Bizjak <ubizjak@gmail.com>
8290
8291 PR target/86348
8292 * config/i386/sse.md (*vec_extractv4si_0_zext_sse4): Use
8293 alternative 0 in preferred_for_speed attribute.
8294
8295 2018-06-28 Paul Koning <ni1d@arrl.net>
8296
8297 * config/pdp11/pdp11-protos.h (pdp11_shift_length): New function.
8298 * config/pdp11/pdp11.c (pdp11_shift_length): New function.
8299 * config/pdp11/pdp11.h (ADJUST_INSN_LENGTH): Remove.
8300 * config/pdp11/pdp11.md: Correct "length" attribute calculation
8301 for shift insn patterns.
8302
8303 2018-06-28 David Malcolm <dmalcolm@redhat.com>
8304
8305 * cgraph.c (cgraph_node::get_body): Replace assignments to
8306 "dump_file" with calls to set_dump_file.
8307 * dumpfile.c (alt_dump_file): Make static, and group with...
8308 (alt_flags): ...this definition.
8309 (dumps_are_enabled): New variable.
8310 (refresh_dumps_are_enabled): New function.
8311 (set_dump_file): New function.
8312 (set_alt_dump_file): New function.
8313 (gcc::dump_manager::dump_start): Replace assignments to
8314 "dump_file" and "alt_dump_file" with calls to set_dump_file and
8315 set_alt_dump_file.
8316 (gcc::dump_manager::dump_finish): Likewise.
8317 * dumpfile.h (alt_dump_file): Delete decl.
8318 (dumps_are_enabled): New variable decl.
8319 (set_dump_file): New function decl.
8320 (dump_enabled_p): Rewrite in terms of new "dumps_are_enabled"
8321 global.
8322 * tree-nested.c (lower_nested_functions): Replace assignments to
8323 "dump_file" with calls to set_dump_file.
8324
8325 2018-06-28 Eric Botcazou <ebotcazou@adacore.com>
8326
8327 * tree-cfg.c (verify_gimple_in_cfg): Call verify_location on the
8328 goto_locus of each outgoing edge of each basic block.
8329
8330 2018-06-28 Richard Biener <rguenther@suse.de>
8331
8332 * dwarf2out.c (decl_scope_table): Remove.
8333 (push_decl_scope): Likewise.
8334 (pop_decl_scope): Likewise.
8335 (gen_type_die_for_member): Do not call push/pop_decl_scope.
8336 (gen_struct_or_union_type_die): Likewise.
8337 (gen_tagged_type_die): Likewise.
8338 (dwarf2out_init): Do not initialize decl_scope_table.
8339 (dwarf2out_c_finalize): Do not free it.
8340
8341 2018-06-28 Richard Biener <rguenther@suse.de>
8342
8343 * dwarf2out.c (gen_subprogram_die): Use is_unit_die when
8344 deciding whether to not re-use a DIE.
8345
8346 2018-06-28 Richard Biener <rguenther@suse.de>
8347
8348 * dwarf2out.c (gen_subprogram_die): Always re-use DIEs with an
8349 DW_AT_abstract_origin attribute.
8350
8351 2018-06-28 Martin Liska <mliska@suse.cz>
8352
8353 * tree-switch-conversion.c (jump_table_cluster::can_be_handled):
8354 Use newly introduced constants.
8355 * tree-switch-conversion.h (struct jump_table_cluster):
8356 Define max_ratio_for_size and max_ratio_for_speed.
8357
8358 2018-06-28 Martin Liska <mliska@suse.cz>
8359
8360 * tree-switch-conversion.c (jump_table_cluster::find_jump_tables):
8361 Add new checking assert to catch invalid state.
8362 (jump_table_cluster::can_be_handled): Handle single case
8363 clusters.
8364 (jump_table_cluster::is_beneficial): Bail out for such case.
8365 (bit_test_cluster::find_bit_tests):
8366 Add new checking assert to catch invalid state.
8367 (bit_test_cluster::can_be_handled): Handle single case
8368 clusters.
8369 (bit_test_cluster::is_beneficial): Bail out for such case.
8370 (switch_decision_tree::analyze_switch_statement):
8371 Fix comment.
8372
8373 2018-06-28 Martin Liska <mliska@suse.cz>
8374
8375 * common.opt: Introduce -completion option.
8376 * gcc.c (driver_handle_option): Handle it.
8377 (driver::main): Print completions if completion
8378 is set.
8379 * opt-suggestions.c (option_proposer::get_completions):
8380 New function.
8381 (option_proposer::suggest_completion): Likewise.
8382 (option_proposer::find_param_completions): Likewise.
8383 (verify_autocompletions): Likewise.
8384 (test_completion_valid_options): Likewise.
8385 (test_completion_valid_params): Likewise.
8386 (in_completion_p): Likewise.
8387 (empty_completion_p): Likewise.
8388 (test_completion_partial_match): Likewise.
8389 (test_completion_garbage): Likewise.
8390 (opt_proposer_c_tests): Likewise.
8391 * opt-suggestions.h: Declare new functions.
8392 * opts.c (common_handle_option): Handle OPT__completion_.
8393 * selftest-run-tests.c (selftest::run_tests): Add
8394 opt_proposer_c_tests.
8395 * selftest.c (assert_str_startswith): New.
8396 * selftest.h (assert_str_startswith): Likewise.
8397 (opt_proposer_c_tests): New.
8398 (ASSERT_STR_STARTSWITH): Likewise.
8399
8400 2018-06-28 Martin Liska <mliska@suse.cz>
8401
8402 * Makefile.in: Add opt-suggestions.o.
8403 * gcc-main.c: Include opt-suggestions.h.
8404 * gcc.c (driver::driver): Likewise.
8405 (driver::~driver): Remove m_option_suggestions.
8406 (driver::build_option_suggestions): Moved to option_proposer.
8407 (driver::suggest_option): Likewise.
8408 (driver::handle_unrecognized_options): Use option_proposer.
8409 * gcc.h (class driver): Add new memver m_option_proposer.
8410 * opt-suggestions.c: New file.
8411 * opt-suggestions.h: New file.
8412
8413 2018-06-28 Martin Liska <mliska@suse.cz>
8414
8415 * vec.h (class auto_string_vec): New (moved from auto_argvec).
8416 (auto_string_vec::~auto_string_vec): Likewise.
8417
8418 2018-06-28 Eric Botcazou <ebotcazou@adacore.com>
8419
8420 * tree-inline.h (struct copy_body_data): Move remapping_type_depth and
8421 prevent_decl_creation_for_types fields up and add reset_location field.
8422 * tree-inline.c (remap_gimple_stmt): Force input_location on the new
8423 statement if id->reset_location is true.
8424 (copy_edges_for_bb): Do not set goto_locus on the new edges if
8425 id->reset_location is true.
8426 (copy_phis_for_bb): Force input_location on the arguments if
8427 id->reset_location is true.
8428 (expand_call_inline): Set id->reset_location if DECL_IGNORED_P
8429 is set on the function to be inlined.
8430
8431 2018-06-27 Stephan Bergmann <sbergman@redhat.com>
8432
8433 * doc/invoke.texi (Debugging Options): Add -gsplit-dwarf.
8434
8435 2018-06-27 Dimitar Dimitrov <dimitar@dinux.eu>
8436
8437 * lra-eliminations.c (update_reg_eliminate): Mark all spanning hard
8438 registers for Pmode.
8439 * lra-lives.c (check_pseudos_live_through_calls): Mark all spanning
8440 hard registers for the clobbered pseudo.
8441
8442 2018-06-27 Paul Koning <ni1d@arrl.net>
8443
8444 * common/config/pdp11/pdp11-common.c (pdp11_handle_option): Handle
8445 mutually exclusive options.
8446 * config/pdp11/constraints.md (h): New constraint.
8447 (O): Update definition to match shift code generation.
8448 (D): New constraint.
8449 * config/pdp11/pdp11-modes.def (CCNZ): Define mode.
8450 (CCFP): Remove.
8451 * config/pdp11/pdp11-protos.h (int_no_side_effect_operand): New
8452 function.
8453 (output_jump): Change arguments.
8454 (pdp11_fixed_cc_regs): New function.
8455 (pdp11_cc_mode): Ditto.
8456 (pdp11_expand_shift): Ditto.
8457 (pdp11_assemble_shift): Ditto.
8458 (pdp11_small_shift): Ditto.
8459 (pdp11_branch_cost): Remove.
8460 * config/pdp11/pdp11.c (pdp11_assemble_integer): Remove comments
8461 from output.
8462 (pdp11_register_move_cost): Update for CC registers.
8463 (pdp11_rtx_costs): Add case for LSHIFTRT.
8464 (pdp11_output_jump): Add CCNZ mode conditional branches.
8465 (notice_update_cc_on_set): Remove.
8466 (pdp11_cc_mode): New function.
8467 (simple_memory_operand): Correct pre/post decrement case.
8468 (no_side_effect_operand): New function.
8469 (pdp11_regno_reg_class): Add CC_REGS class.
8470 (pdp11_fixed_cc_regs): New function.
8471 (pdp11_small_shift): New function.
8472 (pdp11_expand_shift): New function to expand shift insns.
8473 (pdp11_assemble_shift): New function to output shifts.
8474 (pdp11_branch_cost): Remove.
8475 (pdp11_modes_tieable_p): Make QI/HI modes tieable.
8476 * config/pdp11/pdp11.h (SIZE_TYPE): Ensure 16-bit type.
8477 (WCHAR_TYPE): Ditto.
8478 (PTRDIFF_TYPE): Ditto.
8479 (ADJUST_INSN_LENGTH): New macro.
8480 (FIXED_REGISTERS): Add CC registers.
8481 (CALL_USED_REGISTERS): Ditto.
8482 (reg_class): Ditto.
8483 (REG_CLASS_NAMES): Ditto.
8484 (REG_CLASS_CONTENTS): Ditto.
8485 (SELECT_CC_MODE): Use new function.
8486 (TARGET_FLAGS_REGNUM): New macro.
8487 (TARGET_FIXED_CONDITION_CODE_REGS): Ditto.
8488 (cc0_reg_rtx): Remove.
8489 (CC_STATUS_MDEP): Remove.
8490 (CC_STATUS_MDEFP_INIT): Remove.
8491 (CC_IN_FPU): Remove.
8492 (NOTICE_UPDATE_CC): Remove.
8493 (REGISTER_NAMES): Add CC registers.
8494 (BRANCH_COST): Change to constant 1.
8495 * config/pdp11/pdp11.md: Rewrite for CCmode condition code
8496 handling.
8497 * config/pdp11/pdp11.opt (mbcopy): Remove.
8498 (mbcopy-builtin): Remove.
8499 (mbranch-cheap): Remove.
8500 (mbranch-expensive): Remove.
8501 * config/pdp11/predicates.md (expand_shift_operand): Update to
8502 match shift code generation.
8503 (ccnz_operator): New predicate.
8504 * doc/invoke.texi (PDP-11 Options): Remove deleted options
8505 -mbcopy, -mbcopy-builtin, -mbranch-cheap, -mbranch-expensive.
8506 Remove non-existent option -mabshi, -mno-abshi. Document mutually
8507 exclusive options.
8508 * doc/md.texi (PDP-11): Document new D and h constraints. Update
8509 description of O constraint.
8510
8511 2018-06-27 Jeff Law <law@redhat.com>
8512 Austin Law <austinklaw@gmail.com>
8513
8514 * config/v850/v850.md (addsi3_set_flags): New pattern.
8515 (subsi3_set_flags, negsi2_set_flags, andsi3_set_flags): Likewise.
8516 (iorsi3_set_flags, xorsi3_set_flags, one_cmplsi2_set_flags): Likewise.
8517 (zero_extendhisi2_v850_set_flags): Likewise.
8518 (zero_extendqisi2_v850_set_flags): Likewise.
8519 (ashlsi3_set_flags, ashlsi3_v850e2_set_flags): Likewise.
8520 (lshrsi3_set_flags, lshrsi3_v850e2_set_flags): Likewise.
8521 (ashrsi3_set_flags, ashrsi3_v850e2_set_flags): Likewise.
8522
8523 * config/v850/v850-protos.h (notice_update_cc): Remove.
8524 * config/v850/v850.c (v850_compare_op0, v850_compare_op1): Remove.
8525 (v850_print_operand): Handle 'D' and "d".
8526 (v850_select_cc_mode): Remove ATTRIBUTE_UNUSED for last argument.
8527 Add handling of arithmetic/logical operations compared against zero.
8528 (v850_gen_float_compare): Remove ATTRIBUTE_UNUSED for last argument.
8529 Do not look at v850_compare_op, instead get mode from last argument.
8530 (v850_gen_compare): Remove
8531 (increment_stack): Use addsi3_clobber_flags to avoid splitting failure
8532 after reload for prologue insns.
8533 (expand_prologue): Account for CLOBBER of CC_REGNUM in various
8534 patterns.
8535 (construct_save_jarl): Likewise.
8536 (TARGET_FLAGS_REGNUM): Define.
8537 * config/v850/v850.h (v850_compare_op0, v850_compare_op1): Remove.
8538 (NOTICE_UPDATE_CC): Remove.
8539 * config/v850/v850.md (v850_tst1): Use (reg:CCZ CC_REGNUM) rather
8540 than cc0. Conditionalize on reload_completed.
8541 (cmpsi_insn, setfcc_insn): Likewise.
8542 (tst1 splitter): Turn into define_and_split which sets the flags
8543 after reload.
8544 (cstoresi4, cbranchsf4, cbranchdf4, cbranchsi4_insn): Likewise.
8545 (cbranchsi4, branch_normal, branch_invert): Do not expose cc0 here.
8546 (cstoresf4, cstoredf4): Clobber the flags.
8547 (cmpsi, cmpsf, cmpdf): Remove expanders.
8548 (setf_insn): Remove pattern.
8549 (addsi3): Turn into define_and_split which clobbers the flags after
8550 reload and a suitable pattern (addsi3_clobber_flags) for use after
8551 reload.
8552 (subsi3, negsi2, andsi3, iorsi3, xorsi3, one_cmplsi2) Likewise.
8553 (ashlsi3, ashlsi3_v850e2, lshrsi3, lsh4si3_v850e2): Likewise.
8554 (ashrsi3, ashrsi3_v850e2): Likewise.
8555 (bins): Clobber the flags.
8556 (movsicc_normal_cc, movsicc_normal, movsicc_tst1): Likewise.
8557 (movsicc_tst1_revesed, sasf, swap and rotate patterns): Likewise.
8558 (fix_loop_counter, call_internal_short, call_internal_long): Likewise.
8559 (call_value_internal_short, call_value_internal_long): Likewise.
8560 (callt_save_interrupt, callt_return_interrupt): Likewise.
8561 (save_interrupt, return_interrupt): Likewise.
8562 (callt_save_all_interrupt, save_all_interrupt): Likewise.
8563 (_save_all_interrupt, callt_restore_all_interrupt): Likewise.
8564 (restore_all_interrupt, _restore_all_interrupt): Likewise.
8565 (All FP comparisons): Only allow after reload has completed.
8566 (trfsr): Likewise.
8567 (divh, divhu): Tweak output template.
8568 (branch_z_normal, branch_z_invert): Remove
8569 (branch_nz_normal, branch_nz_invert): Likewise.
8570 (extendhisi_insn, extendqisi_insn): Do not clobber flags.
8571
8572 * config/v850/v850-modes.def (CCZ, CCNZ): Add new modes.
8573 * config/v850/v850.c (notice_update_cc): Remove.
8574 * config/v850/v850.h (CC_OVERFLOW_UNUSABLE): Remove
8575 (CC_NO_CARRY): Likewise.
8576 (NOTICE_UPDATE_CC): Define to nothing.
8577 * config/v850/v850.md: Remove block comment on cc0 handling
8578 Remove "cc" attribute from all patterns. Remove cc_status handling
8579 from all patterns. Minor formatting fixes.
8580
8581 2018-06-27 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8582
8583 * config/aarch64/aarch64-cores.def (cortex-a76): New entry.
8584 (cortex-a76.cortex-a55): Likewise.
8585 * config/aarch64/aarch64-tune.md: Regenerate.
8586 * doc/invoke.texi (AArch64 Options): Document cortex-a76 and
8587 cortex-a76.cortex-a55.
8588
8589 2018-06-27 Jeff Law <law@redhat.com>
8590
8591 * config/v850/t-v850 (MULTILIB_OPTIONS): Remove 8byte-align.
8592 (MULTILIB_DIRNAMES): Similarly.
8593
8594 2018-06-27 Eric Botcazou <ebotcazou@adacore.com>
8595
8596 * gimple.h (gimple_return_retbnd): Delete.
8597 (gimple_return_set_retbnd): Likewise.
8598 * cgraphunit.c (cgraph_node::expand_thunk): Remove call to
8599 gimple_return_set_retbnd.
8600 * gimple-pretty-print.c (dump_gimple_return): Remove call to
8601 gimple_return_retbnd and adjust.
8602 * tree-inline.h (struct copy_body_data): Remove retbnd field.
8603 * tree-inline.c (remap_gimple_stmt): Remove handling of retbnd.
8604 Explicitly return NULL in a couple more cases. Move assertion
8605 on debug statements and remove unreachable code.
8606 (reset_debug_binding): Do not test id->retbnd.
8607 (expand_call_inline): Do not set it.
8608
8609 2018-06-27 Rasmus Villemoes <rv@rasmusvillemoes.dk>
8610
8611 * configure.ac: Add --disable-gcov option.
8612 * configure: Regenerate.
8613 * Makefile.in: Honour @enable_gcov@.
8614 * doc/install.texi: Document --disable-gcov.
8615
8616 2018-06-27 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8617
8618 * config/arm/arm-cpus.in (cortex-a76): New entry.
8619 (cortex-a76.cortex-a55): Likewise.
8620 * config/arm/arm-tables.opt: Regenerate.
8621 * config/arm/arm-tune.md: Likewise.
8622 * config/arm/driver-arm.c (arm_cpu_table): Add Cortex-A76 entry.
8623 * doc/invoke.texi (ARM Options): Document cortex-a76 and
8624 cortex-a76.cortex-a55.
8625
8626 2018-06-27 Tamar Christina <tamar.christina@arm.com>
8627
8628 PR target/85769
8629 * config/aarch64/aarch64.md (*movhf_aarch64): Add dup v0.4h pattern.
8630
8631 2018-06-27 Siddhesh Poyarekar <siddhesh@sourceware.org>
8632
8633 * config/aarch64/aarch64.h (CALL_USE_REGISTERS): Fix obsolete
8634 comment.
8635 (EPILOGUE_USES): Likewise.
8636
8637 2018-06-26 Eric Botcazou <ebotcazou@adacore.com>
8638
8639 * tree-inline.c (remap_location): New function extracted from...
8640 (copy_edges_for_bb): Add ID parameter. Remap goto_locus.
8641 (copy_phis_for_bb): ...here. Call remap_location.
8642 (copy_cfg_body): Adjust call to copy_edges_for_bb.
8643
8644 2018-06-26 Aaron Sawdey <acsawdey@linux.ibm.com>
8645
8646 * config/rs6000/rs6000-string.c (expand_block_clear): Don't use
8647 unaligned vsx for 16B memset.
8648
8649 2018-06-26 Segher Boessenkool <segher@kernel.crashing.org>
8650
8651 PR target/86285
8652 * config/rs6000/rs6000.c (rs6000_init_builtins): Do not set
8653 ieee128_float_type_node to long_double_type_node unless
8654 TARGET_LONG_DOUBLE_128 is set.
8655
8656 2018-06-26 David Malcolm <dmalcolm@redhat.com>
8657
8658 * cfgloop.c (get_loop_location): Convert return type from
8659 location_t to dump_user_location_t, replacing INSN_LOCATION lookups
8660 by implicit construction from rtx_insn *, and using
8661 dump_user_location_t::from_function_decl for the fallback case.
8662 * cfgloop.h (get_loop_location): Convert return type from
8663 location_t to dump_user_location_t.
8664 * cgraphunit.c (walk_polymorphic_call_targets): Update call to
8665 dump_printf_loc to pass in a dump_location_t rather than a
8666 location_t, via the gimple stmt.
8667 * coverage.c (get_coverage_counts): Update calls to
8668 dump_printf_loc to pass in dump_location_t rather than a
8669 location_t.
8670 * doc/optinfo.texi (Dump types): Convert example of
8671 dump_printf_loc from taking "locus" to taking "insn". Update
8672 description of the "_loc" calls to cover dump_location_t.
8673 * dumpfile.c: Include "backend.h", "gimple.h", "rtl.h", and
8674 "selftest.h".
8675 (dump_user_location_t::dump_user_location_t): New constructors,
8676 from gimple *stmt and rtx_insn *.
8677 (dump_user_location_t::from_function_decl): New function.
8678 (dump_loc): Make static.
8679 (dump_gimple_stmt_loc): Convert param "loc" from location_t to
8680 const dump_location_t &.
8681 (dump_generic_expr_loc): Delete.
8682 (dump_printf_loc): Convert param "loc" from location_t to
8683 const dump_location_t &.
8684 (selftest::test_impl_location): New function.
8685 (selftest::dumpfile_c_tests): New function.
8686 * dumpfile.h: Include "profile-count.h".
8687 (class dump_user_location_t): New class.
8688 (struct dump_impl_location_t): New struct.
8689 (class dump_location_t): New class.
8690 (dump_printf_loc): Convert 2nd param from source_location to
8691 const dump_location_t &.
8692 (dump_generic_expr_loc): Delete.
8693 (dump_gimple_stmt_loc): Convert 2nd param from source_location to
8694 const dump_location_t &.
8695 * gimple-fold.c (fold_gimple_assign): Update call to
8696 dump_printf_loc to pass in a dump_location_t rather than a
8697 location_t, via the gimple stmt.
8698 (gimple_fold_call): Likewise.
8699 * gimple-loop-interchange.cc
8700 (loop_cand::analyze_iloop_reduction_var): Update for change to
8701 check_reduction_path.
8702 (tree_loop_interchange::interchange): Update for change to
8703 find_loop_location.
8704 * graphite-isl-ast-to-gimple.c (scop_to_isl_ast): Update for
8705 change in return-type of find_loop_location.
8706 (graphite_regenerate_ast_isl): Likewise.
8707 * graphite-optimize-isl.c (optimize_isl): Likewise.
8708 * graphite.c (graphite_transform_loops): Likewise.
8709 * ipa-devirt.c (ipa_devirt): Update call to dump_printf_loc to
8710 pass in a dump_location_t rather than a location_t, via the
8711 gimple stmt.
8712 * ipa-prop.c (ipa_make_edge_direct_to_target): Likewise.
8713 * ipa.c (walk_polymorphic_call_targets): Likewise.
8714 * loop-unroll.c (report_unroll): Convert "locus" param from
8715 location_t to dump_location_t.
8716 (decide_unrolling): Update for change to get_loop_location's
8717 return type.
8718 * omp-grid.c (struct grid_prop): Convert field "target_loc" from
8719 location_t to dump_user_location_t.
8720 (grid_find_single_omp_among_assignments_1): Updates calls to
8721 dump_printf_loc to pass in a dump_location_t rather than a
8722 location_t, via the gimple stmt.
8723 (grid_parallel_clauses_gridifiable): Convert "tloc" from
8724 location_t to dump_location_t. Updates calls to dump_printf_loc
8725 to pass in a dump_location_t rather than a location_t, via the
8726 gimple stmt.
8727 (grid_inner_loop_gridifiable_p): Likewise.
8728 (grid_dist_follows_simple_pattern): Likewise.
8729 (grid_gfor_follows_tiling_pattern): Likewise.
8730 (grid_target_follows_gridifiable_pattern): Likewise.
8731 (grid_attempt_target_gridification): Convert initialization
8732 of local "grid" from memset to zero-initialization; FIXME: does
8733 this require C++11? Update call to dump_printf_loc to pass in a
8734 optinfo_location rather than a location_t, via the gimple stmt.
8735 * profile.c (read_profile_edge_counts): Updates call to
8736 dump_printf_loc to pass in a dump_location_t rather than a
8737 location_t
8738 (compute_branch_probabilities): Likewise.
8739 * selftest-run-tests.c (selftest::run_tests): Call
8740 dumpfile_c_tests.
8741 * selftest.h (dumpfile_c_tests): New decl.
8742 * tree-loop-distribution.c (pass_loop_distribution::execute):
8743 Update for change in return type of find_loop_location.
8744 * tree-parloops.c (parallelize_loops): Likewise.
8745 * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Convert
8746 "locus" from location_t to dump_user_location_t.
8747 (canonicalize_loop_induction_variables): Likewise.
8748 * tree-ssa-loop-ivopts.c (tree_ssa_iv_optimize_loop): Update
8749 for change in return type of find_loop_location.
8750 * tree-ssa-loop-niter.c (number_of_iterations_exit): Update call
8751 to dump_printf_loc to pass in a dump_location_t rather than a
8752 location_t, via the stmt.
8753 * tree-ssa-sccvn.c (eliminate_dom_walker::before_dom_children):
8754 Likewise.
8755 * tree-vect-loop-manip.c (find_loop_location): Convert return
8756 type from source_location to dump_user_location_t.
8757 (vect_do_peeling): Update for above change.
8758 (vect_loop_versioning): Update for change in type of
8759 vect_location.
8760 * tree-vect-loop.c (check_reduction_path): Convert "loc" param
8761 from location_t to dump_user_location_t.
8762 (vect_estimate_min_profitable_iters): Update for change in type
8763 of vect_location.
8764 * tree-vect-slp.c (vect_print_slp_tree): Convert param "loc" from
8765 location_t to dump_location_t.
8766 (vect_slp_bb): Update for change in type of vect_location.
8767 * tree-vectorizer.c (vect_location): Convert from source_location
8768 to dump_user_location_t.
8769 (try_vectorize_loop_1): Update for change in vect_location's type.
8770 (vectorize_loops): Likewise.
8771 (increase_alignment): Likewise.
8772 * tree-vectorizer.h (vect_location): Convert from source_location
8773 to dump_user_location_t.
8774 (find_loop_location): Convert return type from source_location to
8775 dump_user_location_t.
8776 (check_reduction_path): Convert 1st param from location_t to
8777 dump_user_location_t.
8778 * value-prof.c (check_counter): Update call to dump_printf_loc to
8779 pass in a dump_user_location_t rather than a location_t; update
8780 call to error_at for change in type of "locus".
8781 (check_ic_target): Update call to dump_printf_loc to
8782 pass in a dump_user_location_t rather than a location_t, via the
8783 call_stmt.
8784
8785 2018-06-26 Robin Dapp <rdapp@linux.vnet.ibm.com>
8786
8787 * config/s390/s390.h (enum processor_flags): Do not use
8788 default tune parameter when -march was specified.
8789
8790 2018-06-26 Jakub Jelinek <jakub@redhat.com>
8791
8792 PR target/86314
8793 * config/i386/i386.md (setcc + movzbl to xor + setcc peephole2s):
8794 Check reg_overlap_mentioned_p in addition to reg_set_p with the same
8795 operands.
8796
8797 2018-06-26 Richard Biener <rguenther@suse.de>
8798
8799 PR tree-optimization/86287
8800 PR bootstrap/86316
8801 * tree-vect-loop.c (vect_transform_loop_stmt): Fix read-after-free.
8802 (vect_analyze_loop): Initialize n_stmts.
8803
8804 2018-06-26 Richard Biener <rguenther@suse.de>
8805
8806 PR middle-end/86271
8807 * fold-const.c (fold_convertible_p): Pointer extension
8808 isn't valid.
8809
8810 2018-06-26 Alexandre Oliva <aoliva@redhat.com>
8811
8812 PR debug/86064
8813 * dwarf2out.c (loc_list_has_views): Adjust comments.
8814 (dw_loc_list): Split single cross-partition range with
8815 nonzero locview.
8816
8817 2018-06-25 Jeff Law <law@redhat.com>
8818
8819 * common/config/v850/v850-common.c (TARGET_DEFAULT_TARGET_FLAGS): Turn
8820 on -mbig-switch by default.
8821
8822 * config/v850/predicates.md (const_float_1_operand): Fix match_code
8823 test.
8824 (const_float_0_operand): Remove unused predicate.
8825 * config/v850/v850.md (define_constants): Remove UNSPEC_LOOP.
8826 (define_c_enum unspec): Add LOOP, RCP and RSQRT constants.
8827 (recipsf2): New expander. Original pattern now called
8828 (recipsf2_insn).
8829 (recipdf2, recipdf2_insn): Similarly.
8830 (rsqrtsf2, rsqrtsf2_insn): Similarly
8831 (rsqrtdf2, rsqrtdf2_insn): Similarly
8832
8833 2018-06-26 Gerald Pfeifer <gerald@pfeifer.com>
8834
8835 * ginclude/stddef.h: Remove an obsolete comment on FreeBSD 5.
8836 Simplify logic for FreeBSD (twice).
8837
8838 2018-06-25 Martin Sebor <msebor@redhat.com>
8839
8840 PR tree-optimization/86204
8841 * tree-ssa-strlen.c (handle_builtin_strlen): Avoid storing
8842 a strnlen result if it's less than the length of the string.
8843
8844 2018-06-25 Martin Sebor <msebor@redhat.com>
8845
8846 PR tree-optimization/85700
8847 * gimple-fold.c (gimple_fold_builtin_strncat): Adjust comment.
8848 * tree-ssa-strlen.c (is_strlen_related_p): Handle integer subtraction.
8849 (maybe_diag_stxncpy_trunc): Distinguish strncat from strncpy.
8850
8851 2018-06-25 Martin Sebor <msebor@redhat.com>
8852
8853 * doc/extend.texi (Zero-length arrays): Update and clarify.
8854
8855 2018-06-25 Michael Meissner <meissner@linux.ibm.com>
8856
8857 * config.gcc (powerpc64le*): Revert January 16th, 2018 patch that
8858 added IEEE/IBM long double multilib support on PowerPC little
8859 endian Linux systems.
8860 * config/rs6000/linux64.h (MULTILIB_DEFAULTS_IEEE): Likewise.
8861 (MULTILIB_DEFAULTS): Likewise.
8862 * config/rs6000/rs6000.c (rs6000_option_override_internal):
8863 Likewise.
8864 * config/rs6000/rs6000.h (TARGET_IEEEQUAD_MULTILIB): Likewise.
8865 * config/rs6000/t-ldouble-linux64le-ibm: Delete, no longer used.
8866 * config/rs6000/t-ldouble-linux64le-ieee: Delete, no longer used.
8867
8868 2018-06-25 Alexander Monakov <amonakov@ispras.ru>
8869
8870 PR middle-end/86311
8871 * sort.cc (REORDER_23): Avoid memcpy with same destination and source.
8872 (REORDER_45): Likewise.
8873
8874 2018-06-25 Jeff Law <law@redhat.com>
8875
8876 * config/v850/v850.md (divmodhi4): Make sure to sign extend the
8877 dividend to 32 bits. Adjust length.
8878 (udivmodhi4): Cleanup output template. Fix length.
8879
8880 2018-06-25 Carl Love <cel@us.ibm.com>
8881
8882 * config/rs6000/vsx.md: Change word selector to prefered location.
8883
8884 2018-06-25 Richard Biener <rguenther@suse.de>
8885
8886 PR tree-optimization/86304
8887 * tree-vectorizer.c (vectorize_loops): Walk over new possibly
8888 epilogue-if-converted loops as well.
8889
8890 2018-06-25 Jan Hubicka <hubicka@ucw.cz>
8891
8892 * lto-section-out.c (lto_begin_section): Do not print section
8893 name for noaddr and unnumbered dumps.
8894
8895 2018-06-25 Richard Biener <rguenther@suse.de>
8896
8897 * tree-vectorizer.h (struct vec_info_shared): New structure
8898 with parts split out from struct vec_info and loop_nest from
8899 struct _loop_vec_info.
8900 (struct vec_info): Adjust accordingly.
8901 (struct _loop_vec_info): Likewise.
8902 (LOOP_VINFO_LOOP_NEST): Adjust.
8903 (LOOP_VINFO_DATAREFS): Likewise.
8904 (LOOP_VINFO_DDRS): Likewise.
8905 (struct _bb_vec_info): Likewise.
8906 (BB_VINFO_DATAREFS): Likewise.
8907 (BB_VINFO_DDRS): Likewise.
8908 (struct _stmt_vec_info): Add dr_aux member.
8909 (DR_VECT_AUX): Adjust to refer to member of DR_STMTs vinfo.
8910 (DR_MISALIGNMENT_UNINITIALIZED): New.
8911 (set_dr_misalignment): Adjust.
8912 (dr_misalignment): Assert misalign isn't DR_MISALIGNMENT_UNINITIALIZED.
8913 (vect_analyze_loop): Adjust prototype.
8914 (vect_analyze_loop_form): Likewise.
8915 * tree-vect-data-refs.c (vect_analyze_data_ref_dependences):
8916 Compute dependences lazily.
8917 (vect_record_base_alignments): Use shared datarefs/ddrs.
8918 (vect_verify_datarefs_alignment): Likewise.
8919 (vect_analyze_data_refs_alignment): Likewise.
8920 (vect_analyze_data_ref_accesses): Likewise.
8921 (vect_analyze_data_refs): Likewise.
8922 * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Add
8923 constructor parameter for shared part.
8924 (vect_analyze_loop_form): Pass in shared part and adjust.
8925 (vect_analyze_loop_2): Pass in storage for the number of
8926 stmts. Move loop nest finding to the caller. Compute
8927 datarefs lazily.
8928 (vect_analyze_loop): Pass in shared part.
8929 (vect_transform_loop): Verify shared datarefs are unchanged.
8930 * tree-vect-slp.c (_bb_vec_info::_bb_vec_info): Add
8931 constructor parameter for shared part.
8932 (vect_slp_analyze_bb_1): Pass in shared part and adjust.
8933 (vect_slp_bb): Verify shared datarefs are unchanged before
8934 transform.
8935 * tree-vect-stmts.c (ensure_base_align): Adjust for DR_AUX
8936 change.
8937 (new_stmt_vec_info): Initialize DR_AUX misalignment to
8938 DR_MISALIGNMENT_UNINITIALIZED.
8939 * tree-vectorizer.c (vec_info::vec_info): Add constructor
8940 parameter for shared part.
8941 (vec_info::~vec_info): Adjust.
8942 (vec_info_shared::vec_info_shared): New.
8943 (vec_info_shared::~vec_info_shared): Likewise.
8944 (vec_info_shared::save_datarefs): Likewise.
8945 (vec_info_shared::check_datarefs): Likewise.
8946 (try_vectorize_loop_1): Construct shared part live for analyses
8947 of a single loop for multiple vector sizes.
8948 * tree-parloops.c (gather_scalar_reductions): Adjust.
8949
8950 2018-06-25 Richard Biener <rguenther@suse.de>
8951
8952 * tree-vect-data-refs.c (vect_find_stmt_data_reference): Modify
8953 DR for SIMD lane accesses here and mark DR with (void *)-1 aux.
8954 (vect_analyze_data_refs): Remove similar code from here and
8955 simplify accordingly.
8956
8957 2018-06-25 Richard Biener <rguenther@suse.de>
8958
8959 * tree-vect-data-refs.c (vect_check_gather_scatter): Fail
8960 for reverse storage order accesses rather than asserting
8961 they cannot happen here.
8962
8963 2018-06-25 Tom de Vries <tdevries@suse.de>
8964
8965 PR debug/86257
8966 * config/i386/i386.md (define_insn "*tls_global_dynamic_64_<mode>"):
8967 Use data16 instead of .byte for insn prefix.
8968
8969 2018-06-25 Andreas Krebbel <krebbel@linux.ibm.com>
8970
8971 PR C++/86082
8972 * parser.c (make_char_string_pack): Pass this literal chars
8973 through cpp_interpret_string.
8974 (cp_parser_userdef_numeric_literal): Check the result of
8975 make_char_string_pack.
8976
8977 2018-06-24 Maya Rashish <coypu@sdf.org>
8978
8979 * ginclude/stddef.h: Simplify conditions around avoiding
8980 re-definition of __size_t.
8981
8982 2018-06-22 Jan Hubicka <hubicka@ucw.cz>
8983
8984 * lto-streamer-out.c (tree_is_indexable): Make LABEL_DECL nonindexable
8985 unless it is forced or nonlocal; assert that we stream no IMPORTED_DECL.
8986
8987 2018-06-22 Maya Rashish <coypu@sdf.org>
8988
8989 * doc/invoke.texi (mno-fancy-math-387): Update for changes
8990 made to OpenBSD and NetBSD through the years.
8991
8992 2018-06-22 Kelvin Nilsen <kelvin@gcc.gnu.org>
8993
8994 * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Change
8995 behavior of vec_pack (vector double, vector double) to match
8996 behavior of vec_float2 (vector double, vector double).
8997
8998 2018-06-22 Olivier Hainque <hainque@adacore.com>
8999
9000 * gimplify.c (gimplify_function_tree): Prevent creation
9001 of a trampoline for the address of the current function
9002 passed to entry/exit instrumentation hooks.
9003
9004 2018-06-22 Aaron Sawdey <acsawdey@linux.ibm.com>
9005
9006 PR target/86222
9007 * config/rs6000/rs6000-string.c (expand_strn_compare): Handle -m32
9008 correctly.
9009
9010 2018-06-22 Martin Liska <mliska@suse.cz>
9011
9012 PR tree-optimization/86263
9013 * tree-switch-conversion.c (jump_table_cluster::find_jump_tables):
9014 Bail out if is_enabled is false.
9015 * tree-switch-conversion.h (jump_table_cluster::is_enabled):
9016 New declaration.
9017 (jump_table_cluster::is_enabled): New function.
9018
9019 2018-06-22 Jan Hubicka <hubicka@ucw.cz>
9020
9021 * lto-streamer-out.c (DFS::DFS_write_tree_body): Do not stream
9022 BINFO_BASE_ACCESSES and BINFO_VPTR_FIELD.
9023 * tree-streamer-in.c (streamer_read_tree_bitfields): Likewise.
9024 (lto_input_ts_binfo_tree_pointers): Likewise.
9025 * tree-streamer-out.c (streamer_write_tree_bitfields,
9026 write_ts_binfo_tree_pointers): Likewise.
9027 * tree.c (free_lang_data_in_binfo): Clear BINFO_VPTR_FIELD.
9028
9029 2018-06-22 Jan Hubicka <hubicka@ucw.cz>
9030
9031 * tree.c (free_lang_data_in_type): Free all TYPE_VFIELDs.
9032
9033 2018-06-22 Martin Liska <mliska@suse.cz>
9034
9035 * symbol-summary.h (get): Make it pure and inline move
9036 functionality from ::get function.
9037 (get): Remove and inline into ::get and ::get_create.
9038 (get_create): Move code from ::get function.
9039
9040 2018-06-22 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
9041
9042 PR target/85994
9043 * config/i386/sol2.h (CPP_SPEC): Don't pass -P for
9044 -x assembler-with-cpp.
9045
9046 2018-06-22 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
9047
9048 * config/sol2.h (TARGET_OS_CPP_BUILTINS): Define
9049 _FILE_OFFSET_BITS=64 for C++.
9050
9051 2018-06-21 Michael Meissner <meissner@linux.ibm.com>
9052
9053 * config/rs6000/rs6000.md (extendtfif2): Add missing 128-bit
9054 conversion insn that shows up when pr85657-3.c is compiled using
9055 IEEE 128-bit long double.
9056 (neg<mode>2_internal): Use the correct mode to check whether the
9057 mode is IBM extended.
9058 * config/rs6000/rs6000.c (init_float128_ieee): Prevent complex
9059 multiply and divide external functions from being created more
9060 than once.
9061
9062 2018-06-21 Eric Botcazou <ebotcazou@adacore.com>
9063
9064 * cfgrtl.c (fixup_reorder_chain): Do not emit NOPs in DECL_IGNORED_P
9065 functions.
9066 (rtl_merge_blocks): Likewise. Do not emit a NOP if the location of
9067 the edge can be forwarded.
9068 (cfg_layout_merge_blocks): Likewise.
9069
9070 2018-06-21 Eric Botcazou <ebotcazou@adacore.com>
9071
9072 * except.c (finish_eh_generation): Commit edge insertions only after
9073 the EH edges have been redirected from post-landing to landing pads.
9074
9075 2018-06-21 Eric Botcazou <ebotcazou@adacore.com>
9076
9077 * tree-nested.c (get_frame_type): Use create_tmp_var_raw instead of
9078 create_tmp_var_for to create the FRAME decl.
9079 (finalize_nesting_tree_1): Do not unchain the FRAME decl.
9080
9081 2018-06-21 Eric Botcazou <ebotcazou@adacore.com>
9082
9083 * tree-inline.c (copy_edges_for_bb): Minor tweak.
9084 (maybe_move_debug_stmts_to_successors): Also reset the locus of the
9085 debug statement when resetting its value.
9086 (expand_call_inline): Copy the locus of the call onto the assignment
9087 of the return value, if any. Use local variable in more cases.
9088
9089 2018-06-21 Martin Liska <mliska@suse.cz>
9090
9091 * ipa-pure-const.c (propagate_nothrow): Use
9092 funct_state_summaries->get.
9093 (dump_malloc_lattice): Likewise.
9094 (propagate_malloc): Likewise.
9095
9096 2018-06-21 Richard Biener <rguenther@suse.de>
9097
9098 * lto-streamer-out.c (DFS::DFS_write_tree_body): Update outdated
9099 comment. Follow BLOCK_ABSTRACT_ORIGIN unconditionally.
9100 * tree-streamer-in.c (lto_input_ts_block_tree_pointers): Update
9101 comment.
9102 * tree-streamer-out.c (write_ts_block_tree_pointers): Stream
9103 BLOCK_ABSTRACT_ORIGIN unconditionally.
9104
9105 2018-06-21 David Malcolm <dmalcolm@redhat.com>
9106
9107 * ipa-cp.c (ipcp_driver): Set edge_clone_summaries to NULL after
9108 deleting it.
9109 * ipa-reference.c (ipa_reference_c_finalize): Delete
9110 ipa_ref_opt_sum_summaries and set it to NULL.
9111
9112 2018-06-21 Tom de Vries <tdevries@suse.de>
9113
9114 PR tree-optimization/85859
9115 * tree-ssa-tail-merge.c (stmt_local_def): Copy gimple_is_call
9116 test with comment from bb_no_side_effects_p.
9117
9118 2018-06-21 Richard Biener <rguenther@suse.de>
9119
9120 PR tree-optimization/86232
9121 * tree-ssa-loop-niter.c (number_of_iterations_popcount): Adjust
9122 max for constant niter.
9123
9124 2018-06-21 Andre Vieira <andre.simoesdiasvieira@arm.com>
9125
9126 * config/aarch64/aarch64-simd.md
9127 (*aarch64_crypto_aes<aes_op>v16qi_xor_combine): New.
9128
9129 2018-06-21 Andre Vieira <andre.simoesdiasvieira@arm.com>
9130
9131 * config/aarch64/aarch64-simd.md (aarch64_crypto_aes<aes_op>v16qi):
9132 Make opernads of the unspec commutative.
9133
9134 2018-06-21 Richard Biener <rguenther@suse.de>
9135
9136 * tree-data-ref.c (dr_step_indicator): Handle NULL DR_STEP.
9137 * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr):
9138 Avoid calling vect_mark_for_runtime_alias_test with gathers or scatters.
9139 (vect_analyze_data_ref_dependence): Re-order checks to deal with
9140 NULL DR_STEP.
9141 (vect_record_base_alignments): Do not record base alignment
9142 for gathers or scatters.
9143 (vect_compute_data_ref_alignment): Drop return value that is always
9144 true. Bail out early for gathers or scatters.
9145 (vect_enhance_data_refs_alignment): Bail out early for gathers
9146 or scatters.
9147 (vect_find_same_alignment_drs): Likewise.
9148 (vect_analyze_data_refs_alignment): Remove dead code.
9149 (vect_slp_analyze_and_verify_node_alignment): Likewise.
9150 (vect_analyze_data_refs): For possible gathers or scatters do
9151 not create an alternate DR, just check their possible validity
9152 and mark them. Adjust DECL_NONALIASED handling to not rely
9153 on DR_BASE_ADDRESS.
9154 * tree-vect-loop-manip.c (vect_update_inits_of_drs): Do not
9155 update inits of gathers or scatters.
9156 * tree-vect-patterns.c (vect_recog_mask_conversion_pattern):
9157 Also copy gather/scatter flag to pattern vinfo.
9158
9159 2018-06-20 Kelvin Nilsen <kelvin@gcc.gnu.org>
9160
9161 * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Change
9162 behavior of vec_packsu (vector unsigned long long, vector unsigned
9163 long long) to match behavior of vec_packs with same signature.
9164
9165 2018-06-20 Chung-Lin Tang <cltang@codesourcery.com>
9166 Thomas Schwinge <thomas@codesourcery.com>
9167 Cesar Philippidis <cesar@codesourcery.com>
9168
9169 * gimplify.c (gimplify_scan_omp_clauses): Add support for
9170 OMP_CLAUSE_{IF_PRESENT,FINALIZE}.
9171 (gimplify_adjust_omp_clauses): Likewise.
9172 (gimplify_oacc_declare_1): Add support for GOMP_MAP_RELEASE, remove
9173 support for GOMP_MAP_FORCE_{ALLOC,TO,FROM,TOFROM}.
9174 (gimplify_omp_target_update): Update handling of acc update and
9175 enter/exit data.
9176 * omp-low.c (install_var_field): Remove unused parameter
9177 base_pointers_restrict.
9178 (scan_sharing_clauses): Remove base_pointers_restrict parameter.
9179 Update call to install_var_field. Handle OMP_CLAUSE_{IF_PRESENT,
9180 FINALIZE}
9181 (omp_target_base_pointers_restrict_p): Delete.
9182 (scan_omp_target): Update call to scan_sharing_clauses.
9183 * tree-core.h (enum omp_clause_code): Add OMP_CLAUSE_{IF_PRESENT,
9184 FINALIZE}.
9185 * tree-nested.c (convert_nonlocal_omp_clauses): Handle
9186 OMP_CLAUSE_{IF_PRESENT,FINALIZE}.
9187 (convert_local_omp_clauses): Likewise.
9188 * tree-pretty-print.c (dump_omp_clause): Likewise.
9189 * tree.c (omp_clause_num_ops): Add entries for OMP_CLAUSE_{IF_PRESENT,
9190 FINALIZE}.
9191 (omp_clause_code_name): Likewise.
9192
9193 2018-06-20 Jakub Jelinek <jakub@redhat.com>
9194
9195 PR debug/86194
9196 * var-tracking.c (use_narrower_mode_test): Check if shift amount can
9197 be narrowed.
9198
9199 PR tree-optimization/86231
9200 * tree-vrp.c (union_ranges): For ( [ ) ] or ( )[ ] range and
9201 anti-range don't overwrite *vr0min before using it to compute *vr0max.
9202
9203 2018-06-20 Tom de Vries <tdevries@suse.de>
9204
9205 PR tree-optimization/86097
9206 * tree-ssa-loop-manip.c (canonicalize_loop_ivs): Also convert *nit to
9207 iv type if signedness of iv type is not the same as that of *nit.
9208
9209 2018-06-20 Jakub Jelinek <jakub@redhat.com>
9210
9211 * cfgrtl.c (rtl_verify_edges): Formatting fix. If bb->preds has any
9212 EDGE_EH edges, verify they are all EDGE_EH.
9213
9214 2018-06-20 Maya Rashish <coypu@sdf.org>
9215
9216 * ginclude/stddef.h: Limit #include <machine/ansi.h> to NetBSD.
9217
9218 2018-06-20 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9219
9220 * config/aarch64/aarch64-tuning-flags.def (no_ldp_stp_qregs): New.
9221 * config/aarch64/aarch64.c (xgene1_tunings): Add
9222 AARCH64_EXTRA_TUNE_NO_LDP_STP_QREGS to tune_flags.
9223 (aarch64_mode_valid_for_sched_fusion_p):
9224 Allow 16-byte modes.
9225 (aarch64_classify_address): Allow 16-byte modes for load_store_pair_p.
9226 * config/aarch64/aarch64-ldpstp.md: Add peepholes for LDP STP of
9227 128-bit modes.
9228 * config/aarch64/aarch64-simd.md (load_pair<VQ:mode><VQ2:mode>):
9229 New pattern.
9230 (vec_store_pair<VQ:mode><VQ2:mode>): Likewise.
9231 * config/aarch64/iterators.md (VQ2): New mode iterator.
9232
9233 2018-06-20 Martin Liska <mliska@suse.cz>
9234
9235 * tree-switch-conversion.c (jump_table_cluster::can_be_handled):
9236 Change default ratio from 10 to 8.
9237
9238 2018-06-20 Martin Liska <mliska@suse.cz>
9239
9240 * tree-switch-conversion.c (jump_table_cluster::find_jump_tables):
9241 New.
9242 (bit_test_cluster::find_bit_tests): Likewise.
9243 (switch_decision_tree::analyze_switch_statement): Find clusters.
9244 * tree-switch-conversion.h (struct jump_table_cluster): Document
9245 hierarchy.
9246
9247 2018-06-20 Martin Liska <mliska@suse.cz>
9248
9249 * tree-switch-conversion.c (switch_conversion::collect):
9250 Record m_uniq property.
9251 (switch_conversion::expand): Bail out for special conditions.
9252 (group_cluster::~group_cluster): New.
9253 (group_cluster::group_cluster): Likewise.
9254 (group_cluster::dump): Likewise.
9255 (jump_table_cluster::emit): New.
9256 (switch_decision_tree::fix_phi_operands_for_edges): New.
9257 (struct case_node): Remove struct.
9258 (jump_table_cluster::can_be_handled): New.
9259 (case_values_threshold): Moved to header.
9260 (reset_out_edges_aux): Likewise.
9261 (jump_table_cluster::is_beneficial): New.
9262 (bit_test_cluster::can_be_handled): Likewise.
9263 (add_case_node): Remove.
9264 (bit_test_cluster::is_beneficial): New.
9265 (case_bit_test::cmp): New.
9266 (bit_test_cluster::emit): New.
9267 (expand_switch_as_decision_tree_p): Remove.
9268 (bit_test_cluster::hoist_edge_and_branch_if_true): New.
9269 (fix_phi_operands_for_edge): Likewise.
9270 (switch_decision_tree::analyze_switch_statement): New.
9271 (compute_cases_per_edge): Move ...
9272 (switch_decision_tree::compute_cases_per_edge): ... here.
9273 (try_switch_expansion): Likewise.
9274 (switch_decision_tree::try_switch_expansion): Likewise.
9275 (record_phi_operand_mapping): Likewise.
9276 (switch_decision_tree::record_phi_operand_mapping): Likewise.
9277 (emit_case_decision_tree): Likewise.
9278 (switch_decision_tree::emit): Likewise.
9279 (balance_case_nodes): Likewise.
9280 (switch_decision_tree::balance_case_nodes): Likewise.
9281 (dump_case_nodes): Likewise.
9282 (switch_decision_tree::dump_case_nodes): Likewise.
9283 (emit_jump): Likewise.
9284 (switch_decision_tree::emit_jump): Likewise.
9285 (emit_cmp_and_jump_insns): Likewise.
9286 (switch_decision_tree::emit_cmp_and_jump_insns): Likewise.
9287 (emit_case_nodes): Likewise.
9288 (switch_decision_tree::emit_case_nodes): Likewise.
9289 (conditional_probability): Remove.
9290 * tree-switch-conversion.h (enum cluster_type): New.
9291 (PRINT_CASE): New.
9292 (struct cluster): Likewise.
9293 (cluster::cluster): Likewise.
9294 (struct simple_cluster): Likewise.
9295 (simple_cluster::simple_cluster): Likewise.
9296 (struct group_cluster): Likewise.
9297 (struct jump_table_cluster): Likewise.
9298 (struct bit_test_cluster): Likewise.
9299 (struct min_cluster_item): Likewise.
9300 (struct case_tree_node): Likewise.
9301 (case_tree_node::case_tree_node): Likewise.
9302 (jump_table_cluster::case_values_threshold): Likewise.
9303 (struct case_bit_test): Likewise.
9304 (struct switch_decision_tree): Likewise.
9305 (struct switch_conversion): Likewise.
9306 (switch_decision_tree::reset_out_edges_aux): Likewise.
9307
9308 2018-06-20 Martin Liska <mliska@suse.cz>
9309
9310 * tree-switch-conversion.c (MAX_CASE_BIT_TESTS): Remove.
9311 (hoist_edge_and_branch_if_true): Likewise.
9312 (expand_switch_using_bit_tests_p): Likewise.
9313 (struct case_bit_test): Likewise.
9314 (case_bit_test_cmp): Likewise.
9315 (emit_case_bit_tests): Likewise.
9316 (switch_conversion::switch_conversion): New class.
9317 (struct switch_conv_info): Remove old struct.
9318 (collect_switch_conv_info): More to ...
9319 (switch_conversion::collect): ... this.
9320 (check_range): Likewise.
9321 (switch_conversion::check_range): Likewise.
9322 (check_all_empty_except_final): Likewise.
9323 (switch_conversion::check_all_empty_except_final): Likewise.
9324 (check_final_bb): Likewise.
9325 (switch_conversion::check_final_bb): Likewise.
9326 (create_temp_arrays): Likewise.
9327 (switch_conversion::create_temp_arrays): Likewise.
9328 (free_temp_arrays): Likewise.
9329 (gather_default_values): Likewise.
9330 (switch_conversion::gather_default_values): Likewise.
9331 (build_constructors): Likewise.
9332 (switch_conversion::build_constructors): Likewise.
9333 (constructor_contains_same_values_p): Likewise.
9334 (switch_conversion::contains_same_values_p): Likewise.
9335 (array_value_type): Likewise.
9336 (switch_conversion::array_value_type): Likewise.
9337 (build_one_array): Likewise.
9338 (switch_conversion::build_one_array): Likewise.
9339 (build_arrays): Likewise.
9340 (switch_conversion::build_arrays): Likewise.
9341 (gen_def_assigns): Likewise.
9342 (switch_conversion::gen_def_assigns): Likewise.
9343 (prune_bbs): Likewise.
9344 (switch_conversion::prune_bbs): Likewise.
9345 (fix_phi_nodes): Likewise.
9346 (switch_conversion::fix_phi_nodes): Likewise.
9347 (gen_inbound_check): Likewise.
9348 (switch_conversion::gen_inbound_check): Likewise.
9349 (process_switch): Use the newly created class.
9350 (switch_conversion::expand): New.
9351 (switch_conversion::~switch_conversion): New.
9352 * tree-switch-conversion.h: New file.
9353
9354 2018-06-20 Richard Sandiford <richard.sandiford@arm.com>
9355
9356 * tree-vectorizer.h (NUM_PATTERNS, vect_recog_func_ptr): Move to
9357 tree-vect-patterns.c.
9358 * tree-vect-patterns.c (vect_supportable_direct_optab_p): New function.
9359 (vect_recog_dot_prod_pattern): Use it. Remove the type_in argument.
9360 (vect_recog_sad_pattern): Likewise.
9361 (vect_recog_widen_sum_pattern): Likewise.
9362 (vect_recog_pow_pattern): Likewise. Check for a null vectype.
9363 (vect_recog_widen_shift_pattern): Remove the type_in argument.
9364 (vect_recog_rotate_pattern): Likewise.
9365 (vect_recog_mult_pattern): Likewise.
9366 (vect_recog_vector_vector_shift_pattern): Likewise.
9367 (vect_recog_divmod_pattern): Likewise.
9368 (vect_recog_mixed_size_cond_pattern): Likewise.
9369 (vect_recog_bool_pattern): Likewise.
9370 (vect_recog_mask_conversion_pattern): Likewise.
9371 (vect_try_gather_scatter_pattern): Likewise.
9372 (vect_recog_widen_mult_pattern): Likewise. Check for a null vectype.
9373 (vect_recog_over_widening_pattern): Likewise.
9374 (vect_recog_gather_scatter_pattern): Likewise.
9375 (vect_recog_func_ptr): Move from tree-vectorizer.h
9376 (vect_vect_recog_func_ptrs): Move further down the file.
9377 (vect_recog_func): Likewise. Remove the third argument.
9378 (NUM_PATTERNS): Define based on vect_vect_recog_func_ptrs.
9379 (vect_pattern_recog_1): Expect the pattern function to do any
9380 necessary target tests. Also expect it to provide a vector type.
9381 Remove the type_in handling.
9382
9383 2018-06-20 Richard Sandiford <richard.sandiford@arm.com>
9384
9385 * tree-vect-patterns.c (vect_pattern_detected): New function.
9386 (vect_recog_dot_prod_patternm, vect_recog_sad_pattern)
9387 (vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern)
9388 (vect_recog_over_widening_pattern, vect_recog_widen_shift_pattern
9389 (vect_recog_rotate_pattern, vect_recog_vector_vector_shift_pattern)
9390 (vect_recog_mult_pattern, vect_recog_divmod_pattern)
9391 (vect_recog_mixed_size_cond_pattern, vect_recog_bool_pattern)
9392 (vect_recog_mask_conversion_pattern)
9393 (vect_try_gather_scatter_pattern): Likewise.
9394
9395 2018-06-20 Richard Sandiford <richard.sandiford@arm.com>
9396
9397 * tree-vect-patterns.c (vect_get_internal_def): New function.
9398 (vect_recog_dot_prod_pattern, vect_recog_sad_pattern)
9399 (vect_recog_vector_vector_shift_pattern, check_bool_pattern)
9400 (search_type_for_mask_1): Use it.
9401
9402 2018-06-20 Richard Sandiford <richard.sandiford@arm.com>
9403
9404 * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Remove
9405 redundant WIDEN_SUM_EXPR handling.
9406 (vect_recog_sad_pattern): Likewise.
9407
9408 2018-06-20 Richard Sandiford <richard.sandiford@arm.com>
9409
9410 * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Remove
9411 redundant check that the types of a PLUS_EXPR or MULT_EXPR agree.
9412 (vect_recog_sad_pattern): Likewise PLUS_EXPR, ABS_EXPR and MINUS_EXPR.
9413 (vect_recog_widen_mult_pattern): Likewise MULT_EXPR.
9414 (vect_recog_widen_sum_pattern): Likewise PLUS_EXPR.
9415
9416 2018-06-20 Richard Sandiford <richard.sandiford@arm.com>
9417
9418 * tree-vect-stmts.c (vectorizable_call): Make sure that we
9419 use the stmt_vec_info of the original bb statement for the
9420 new zero assignment, even if the call is part of a pattern.
9421
9422 2018-06-20 Richard Sandiford <richard.sandiford@arm.com>
9423
9424 * tree-vectorizer.h (_stmt_vec_info): Note above pattern_def_seq
9425 that the sequence is attached to the original statement rather
9426 than the pattern statement.
9427 * tree-vect-loop.c (vect_determine_vf_for_stmt): Take the
9428 PATTERN_DEF_SEQ from the original statement rather than
9429 the main pattern statement.
9430 * tree-vect-stmts.c (free_stmt_vec_info): Likewise.
9431 * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Likewise.
9432 (vect_mark_pattern_stmts): Don't copy the PATTERN_DEF_SEQ.
9433
9434 2018-06-20 Richard Sandiford <richard.sandiford@arm.com>
9435
9436 * tree-vect-stmts.c (vect_analyze_stmt): Move the handling of pattern
9437 definition statements before the early exit for statements that aren't
9438 live or relevant.
9439 * tree-vect-loop.c (vect_transform_loop_stmt): New function,
9440 split out from...
9441 (vect_transform_loop): ...here. Process pattern definition
9442 statements without first checking whether the main pattern
9443 statement is live or relevant.
9444
9445 2018-06-19 Eric Botcazou <ebotcazou@adacore.com>
9446
9447 * tree-cfgcleanup.c (tree_forwarder_block_p): Do not return false at
9448 -O0 if the locus represent UNKNOWN_LOCATION but have different values.
9449
9450 2018-06-19 Aaron Sawdey <acsawdey@linux.ibm.com>
9451
9452 * config/rs6000/rs6000-string.c (select_block_compare_mode): Check
9453 TARGET_EFFICIENT_OVERLAPPING_UNALIGNED here instead of in caller.
9454 (do_and3, do_and3_mask, do_compb3, do_rotl3): New functions.
9455 (expand_block_compare): Change select_block_compare_mode call.
9456 (expand_strncmp_align_check): Use new functions, fix comment.
9457 (emit_final_str_compare_gpr): New function.
9458 (expand_strn_compare): Refactor and clean up code.
9459 * config/rs6000/vsx.md (vsx_mov<mode>_64bit): Remove *.
9460
9461 2018-06-19 Tony Reix <tony.reix@atos.com>
9462 Damien Bergamini <damien.bergamini@atos.com>
9463 David Edelsohn <dje.gcc@gmail.com>
9464
9465 * collect2.c (static_obj): New variable.
9466 (static_libs): New variable.
9467 (is_in_list): Uncomment declaration.
9468 (main): Track AIX libraries linked statically.
9469 (is_in_list): Uncomment definition.
9470 (scan_prog_file): Don't add AIX shared libraries initializer
9471 to constructor list if linking statically.
9472
9473 2018-06-19 Max Filippov <jcmvbkbc@gmail.com>
9474
9475 * config/xtensa/xtensa.md (UNSPEC_FRAME_BLOCKAGE): New unspec
9476 constant.
9477 (allocate_stack, frame_blockage, *frame_blockage): New patterns.
9478
9479 2018-06-19 Jan Hubicka <hubicka@ucw.cz>
9480
9481 * tree.c (find_decls_types_r): Remove all non-VAR_DECLs from
9482 blocks.
9483
9484 2018-06-19 Martin Liska <mliska@suse.cz>
9485
9486 * config/i386/i386.c (ix86_can_inline_p): Do not use
9487 ipa_fn_summaries::get_create.
9488 * ipa-cp.c (ipcp_cloning_candidate_p): Replace get_create with
9489 get.
9490 (devirtualization_time_bonus): Likewise.
9491 (ipcp_propagate_stage): Likewise.
9492 * ipa-fnsummary.c (redirect_to_unreachable): Likewise.
9493 (edge_set_predicate): Likewise.
9494 (evaluate_conditions_for_known_args): Likewise.
9495 (evaluate_properties_for_edge): Likewise.
9496 (ipa_call_summary::reset): Tranform to ...
9497 (ipa_call_summary::~ipa_call_summary): ... this.
9498 (ipa_fn_summary::reset): Transform to ...
9499 (ipa_fn_summary::~ipa_fn_summary): ... this.
9500 (ipa_fn_summary_t::remove): Rename to ...
9501 (ipa_fn_summary_t::remove_callees): ... this.
9502 (ipa_fn_summary_t::duplicate): Use placement new
9503 instead of memory copy.
9504 (ipa_call_summary_t::duplicate): Likewise.
9505 (ipa_call_summary_t::remove): Remove.
9506 (dump_ipa_call_summary): Change get_create to get.
9507 (ipa_dump_fn_summary): Dump only when summary exists.
9508 (analyze_function_body): Use symbol_summary::get instead
9509 of get_create.
9510 (compute_fn_summary): Likewise.
9511 (estimate_edge_devirt_benefit): Likewise.
9512 (estimate_edge_size_and_time): Likewise.
9513 (inline_update_callee_summaries): Likewise.
9514 (remap_edge_change_prob): Likewise.
9515 (remap_edge_summaries): Likewise.
9516 (ipa_merge_fn_summary_after_inlining): Likewise.
9517 (write_ipa_call_summary): Likewise.
9518 (ipa_fn_summary_write): Likewise.
9519 (ipa_free_fn_summary): Likewise.
9520 * ipa-fnsummary.h (struct GTY): Add new ctor and copy ctor.
9521 (struct ipa_call_summary): Likewise.
9522 * ipa-icf.c (sem_function::merge): Use symbol_summary::get instead
9523 of get_create.
9524 * ipa-inline-analysis.c (do_estimate_edge_time): Likewise.
9525 (estimate_size_after_inlining): Likewise.
9526 (estimate_growth): Likewise.
9527 (growth_likely_positive): Likewise.
9528 * ipa-inline-transform.c (clone_inlined_nodes): Likewise.
9529 (inline_call): Likewise.
9530 * ipa-inline.c (caller_growth_limits): Likewise.
9531 (can_inline_edge_p): Likewise.
9532 (can_inline_edge_by_limits_p): Likewise.
9533 (compute_uninlined_call_time): Likewise.
9534 (compute_inlined_call_time): Likewise.
9535 (want_inline_small_function_p): Likewise.
9536 (edge_badness): Likewise.
9537 (update_caller_keys): Likewise.
9538 (update_callee_keys): Likewise.
9539 (inline_small_functions): Likewise.
9540 (inline_to_all_callers_1): Likewise.
9541 (dump_overall_stats): Likewise.
9542 (early_inline_small_functions): Likewise.
9543 (early_inliner): Likewise.
9544 * ipa-profile.c (ipa_propagate_frequency_1): Likewise.
9545 * ipa-prop.c (ipa_make_edge_direct_to_target): Likewise.
9546 * ipa-pure-const.c (malloc_candidate_p): Likewise.
9547 * ipa-split.c (execute_split_functions): Likewise.
9548 * symbol-summary.h: Likewise.
9549 * tree-sra.c (ipa_sra_preliminary_function_checks): Likewise.
9550
9551 2018-06-19 Richard Biener <rguenther@suse.de>
9552
9553 * tree-vectorizer.c (try_vectorize_loop_1): Split out of ...
9554 (vectorize_loops): ... here. Fix dbgcnt handling.
9555 (try_vectorize_loop): Wrap try_vectorize_loop_1.
9556
9557 2018-06-19 Segher Boessenkool <segher@kernel.crashing.org>
9558
9559 PR target/86197
9560 * config/rs6000/rs6000.md (rs6000_discover_homogeneous_aggregate): An
9561 ieee128 argument takes up only one (vector) register, not two (floating
9562 point) registers.
9563
9564 2018-06-19 Eric Botcazou <ebotcazou@adacore.com>
9565
9566 * gimplify.c (gimplify_init_constructor): Really never clear for an
9567 incomplete constructor if CONSTRUCTOR_NO_CLEARING is set.
9568
9569 2018-06-19 Richard Biener <rguenther@suse.de>
9570
9571 PR tree-optimization/86179
9572 * tree-vect-patterns.c (vect_pattern_recog_1): Clean up
9573 after failed recognition.
9574
9575 2018-06-18 Martin Sebor <msebor@redhat.com>
9576
9577 PR middle-end/85602
9578 * calls.c (maybe_warn_nonstring_arg): Handle strncat.
9579 * tree-ssa-strlen.c (is_strlen_related_p): Make extern.
9580 Handle integer subtraction.
9581 (maybe_diag_stxncpy_trunc): Handle nonstring source arguments.
9582 * tree-ssa-strlen.h (is_strlen_related_p): Declare.
9583
9584 2018-06-18 David Malcolm <dmalcolm@redhat.com>
9585
9586 * config/frv/frv-protos.h (frv_ifcvt_modify_insn): Strengthen 3rd
9587 param from rtx to rtx_insn *.
9588 * config/frv/frv.c (frv_ifcvt_add_insn): Likewise for "insn"
9589 param.
9590 (frv_ifcvt_modify_insn): Likwise.
9591 (frv_ifcvt_modify_final): Likwise for local "existing_insn",
9592 adding an as_a <rtx_insn *> cast. Likewise for local "insn".
9593 * config/mips/mips.c (r10k_insert_cache_barriers): Add an
9594 as_a <rtx_insn *> cast to local "unprotected_region" once
9595 it's been established that it's not NULL or pc_rtx.
9596 * config/nds32/nds32-relax-opt.c (nds32_group_insns): Strengthen
9597 param "sethi" from rtx to rtx_insn *.
9598 (nds32_group_float_insns): Likewise for param "insn".
9599 * config/vax/vax-protos.h (vax_output_int_add): Likewise for 1st
9600 param.
9601 (vax_output_int_subtract): Likewise.
9602 * config/vax/vax.c (vax_output_int_add): Likewise for param
9603 "insn".
9604 (vax_output_int_subtract): Likewise.
9605 * emit-rtl.c (set_insn_deleted): Likewise, removing cast.
9606 (emit_pattern_after): Likewise for param "after".
9607 (emit_insn_after): Likewise.
9608 (emit_jump_insn_after): Likewise.
9609 (emit_call_insn_after): Likewise.
9610 (emit_debug_insn_after): Likewise.
9611 (emit_pattern_before): Likewise for param "before".
9612 (emit_insn_before): Likewise.
9613 (emit_jump_insn_before): Likewise.
9614 * final.c (get_insn_template): Likewise for param "insn", removing
9615 a cast.
9616 * output.h (get_insn_template): Likewise for 2nd param.
9617 * rtl.h (emit_insn_before): Likewise.
9618 (emit_jump_insn_before): Likewise.
9619 (emit_debug_insn_before_noloc): Likewise.
9620 (emit_insn_after): Likewise.
9621 (emit_jump_insn_after): Likewise.
9622 (emit_call_insn_after): Likewise.
9623 (emit_debug_insn_after): Likewise.
9624 (set_insn_deleted): Likewise for param.
9625
9626 2018-06-18 Michael Meissner <meissner@linux.ibm.com>
9627
9628 PR target/85358
9629 * config/rs6000/rs6000-modes.def (toplevel): Rework the 128-bit
9630 floating point modes, so that IFmode is numerically greater than
9631 TFmode, which is greater than KFmode using FRACTIONAL_FLOAT_MODE
9632 to declare the ordering. This prevents IFmode from being
9633 converted to TFmode when long double is IEEE 128-bit on an ISA 3.0
9634 machine. Include rs6000-modes.h to share the fractional values
9635 between genmodes* and the rest of the compiler.
9636 (IFmode): Likewise.
9637 (KFmode): Likewise.
9638 (TFmode): Likewise.
9639 * config/rs6000/rs6000-modes.h: New file.
9640 * config/rs6000/rs6000.c (rs6000_debug_reg_global): Change the
9641 meaning of rs6000_long_double_size so that 126..128 selects an
9642 appropriate 128-bit floating point type.
9643 (rs6000_option_override_internal): Likewise.
9644 * config/rs6000/rs6000.h (toplevel): Include rs6000-modes.h.
9645 (TARGET_LONG_DOUBLE_128): Change the meaning of
9646 rs6000_long_double_size so that 126..128 selects an appropriate
9647 128-bit floating point type.
9648 (LONG_DOUBLE_TYPE_SIZE): Update comment.
9649 * config/rs6000/rs6000.md (trunciftf2): Correct the modes of the
9650 source and destination to match the standard usage.
9651 (truncifkf2): Likewise.
9652 (copysign<mode>3, IEEE iterator): Rework copysign of float128 on
9653 ISA 2.07 to use an explicit clobber, instead of passing in a
9654 temporary.
9655 (copysign<mode>3_soft): Likewise.
9656
9657 2018-06-18 David Malcolm <dmalcolm@redhat.com>
9658
9659 * tree-vect-data-refs.c (vect_analyze_data_ref_dependences):
9660 Replace dump_printf_loc call with DUMP_VECT_SCOPE.
9661 (vect_slp_analyze_instance_dependence): Likewise.
9662 (vect_enhance_data_refs_alignment): Likewise.
9663 (vect_analyze_data_refs_alignment): Likewise.
9664 (vect_slp_analyze_and_verify_instance_alignment
9665 (vect_analyze_data_ref_accesses): Likewise.
9666 (vect_prune_runtime_alias_test_list): Likewise.
9667 (vect_analyze_data_refs): Likewise.
9668 * tree-vect-loop-manip.c (vect_update_inits_of_drs): Likewise.
9669 * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
9670 (vect_analyze_scalar_cycles_1): Likewise.
9671 (vect_get_loop_niters): Likewise.
9672 (vect_analyze_loop_form_1): Likewise.
9673 (vect_update_vf_for_slp): Likewise.
9674 (vect_analyze_loop_operations): Likewise.
9675 (vect_analyze_loop): Likewise.
9676 (vectorizable_induction): Likewise.
9677 (vect_transform_loop): Likewise.
9678 * tree-vect-patterns.c (vect_pattern_recog): Likewise.
9679 * tree-vect-slp.c (vect_analyze_slp): Likewise.
9680 (vect_make_slp_decision): Likewise.
9681 (vect_detect_hybrid_slp): Likewise.
9682 (vect_slp_analyze_operations): Likewise.
9683 (vect_slp_bb): Likewise.
9684 * tree-vect-stmts.c (vect_mark_stmts_to_be_vectorized): Likewise.
9685 (vectorizable_bswap): Likewise.
9686 (vectorizable_call): Likewise.
9687 (vectorizable_simd_clone_call): Likewise.
9688 (vectorizable_conversion): Likewise.
9689 (vectorizable_assignment): Likewise.
9690 (vectorizable_shift): Likewise.
9691 (vectorizable_operation): Likewise.
9692 * tree-vectorizer.h (DUMP_VECT_SCOPE): New macro.
9693
9694 2018-06-18 Martin Sebor <msebor@redhat.com>
9695
9696 PR tree-optimization/81384
9697 * builtin-types.def (BT_FN_SIZE_CONST_STRING_SIZE): New.
9698 * builtins.c (expand_builtin_strnlen): New function.
9699 (expand_builtin): Call it.
9700 (fold_builtin_n): Avoid setting TREE_NO_WARNING.
9701 * builtins.def (BUILT_IN_STRNLEN): New.
9702 * calls.c (maybe_warn_nonstring_arg): Handle BUILT_IN_STRNLEN.
9703 Warn for bounds in excess of maximum object size.
9704 * tree-ssa-strlen.c (maybe_set_strlen_range): Return tree representing
9705 single-value ranges. Handle strnlen.
9706 (handle_builtin_strlen): Handle strnlen.
9707 (strlen_check_and_optimize_stmt): Same.
9708 * doc/extend.texi (Other Builtins): Document strnlen.
9709
9710 2018-06-18 Maya Rashish <coypu@sdf.org>
9711
9712 * config/alpha/openbsd.h (TARGET_DEFAULT): Define.
9713 (LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Likewise.
9714 (INTMAX_TYPE, UINTMAX_TYPE, WINT_TYPE): Likewise.
9715
9716 * config/alpha/elf.h (STARTFILE_SPEC, ENDFILE_SPEC): Move from
9717 here to ...
9718 * config/alpha/linux.h (STARTFILE_SPEC, ENDFILE_SPEC): Here.
9719
9720 2018-06-18 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
9721
9722 * tree.c (escaped_string::escape): Replace cast to char * by
9723 const_cast<char *> (unescaped).
9724
9725 2018-06-18 Nick Clifton <nickc@redhat.com>
9726
9727 PR 84195
9728 * tree.c (escaped_string): New class. Converts an unescaped
9729 string into its escaped equivalent.
9730 (warn_deprecated_use): Use the new class to convert the
9731 deprecation message, if present.
9732 (test_escaped_strings): New self test.
9733 (test_c_tests): Add test_escaped_strings.
9734 * doc/extend.texi (deprecated): Add a note that the
9735 deprecation message is affected by the -fmessage-length
9736 option, and that control characters will be escaped.
9737 (#pragma GCC error): Document this pragma.
9738 (#pragma GCC warning): Likewise.
9739 * doc/invoke.texi (-fmessage-length): Document this option's
9740 effect on the #warning and #error preprocessor directives and
9741 the deprecated attribute.
9742
9743 2018-06-18 Eric Botcazou <ebotcazou@adacore.com>
9744
9745 * tree.c (decl_value_expr_lookup): Revert latest change.
9746 (decl_value_expr_insert): Likewise.
9747
9748 2018-06-17 Eric Botcazou <ebotcazou@adacore.com>
9749
9750 * gimplify.c (nonlocal_vlas): Delete.
9751 (nonlocal_vla_vars): Likewise.
9752 (gimplify_var_or_parm_decl): Do not add debug VAR_DECLs for non-local
9753 referenced VLAs.
9754 (gimplify_body): Do not create and destroy nonlocal_vlas.
9755 * tree-nested.c: Include diagnostic.h.
9756 (use_pointer_in_frame): Tweak.
9757 (lookup_field_for_decl): Add assertion and declare the transformation.
9758 (convert_nonlocal_reference_op) <PARM_DECL>: Rework and issue an
9759 internal error when the reference is in a wrong context. Do not
9760 create a debug decl by default.
9761 (note_nonlocal_block_vlas): Delete.
9762 (convert_nonlocal_reference_stmt) <GIMPLE_BIND>: Do not call it.
9763 (convert_local_reference_op) <PARM_DECL>: Skip the frame decl. Do not
9764 create a debug decl by default.
9765 (convert_gimple_call) <GIMPLE_CALL>: Issue an internal error when the
9766 call is in a wrong context.
9767 (fixup_vla_decls): New function.
9768 (finalize_nesting_tree_1): Adjust comment. Call fixup_vla_decls if no
9769 debug variables were created.
9770 * tree.c (decl_value_expr_lookup): Add checking assertion.
9771 (decl_value_expr_insert): Likewise.
9772
9773 2018-06-16 Kugan Vivekanandarajah <kuganv@linaro.org>
9774
9775 PR middle-end/82479
9776 * ipa-fnsummary.c (will_be_nonconstant_expr_predicate): Handle CALL_EXPR.
9777 * tree-scalar-evolution.c (interpret_expr): Likewise.
9778 (expression_expensive_p): Likewise.
9779 * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Likewise.
9780 * tree-ssa-loop-niter.c (number_of_iterations_popcount): New.
9781 (number_of_iterations_exit_assumptions): Use number_of_iterations_popcount.
9782 (ssa_defined_by_minus_one_stmt_p): New.
9783
9784 2018-06-16 Kugan Vivekanandarajah <kuganv@linaro.org>
9785
9786 PR middle-end/64946
9787 * cfgexpand.c (expand_debug_expr): Hande ABSU_EXPR.
9788 * config/i386/i386.c (ix86_add_stmt_cost): Likewise.
9789 * dojump.c (do_jump): Likewise.
9790 * expr.c (expand_expr_real_2): Check operand type's sign.
9791 * fold-const.c (const_unop): Handle ABSU_EXPR.
9792 (fold_abs_const): Likewise.
9793 * gimple-pretty-print.c (dump_unary_rhs): Likewise.
9794 * gimple-ssa-backprop.c (backprop::process_assign_use): Likesie.
9795 (strip_sign_op_1): Likesise.
9796 * match.pd: Add new pattern to generate ABSU_EXPR.
9797 * optabs-tree.c (optab_for_tree_code): Handle ABSU_EXPR.
9798 * tree-cfg.c (verify_gimple_assign_unary): Likewise.
9799 * tree-eh.c (operation_could_trap_helper_p): Likewise.
9800 * tree-inline.c (estimate_operator_cost): Likewise.
9801 * tree-pretty-print.c (dump_generic_node): Likewise.
9802 * tree-vect-patterns.c (vect_recog_sad_pattern): Likewise.
9803 * tree.def (ABSU_EXPR): New.
9804
9805 2018-06-16 Jakub Jelinek <jakub@redhat.com>
9806
9807 PR middle-end/86095
9808 * common.opt (Wunsafe-loop-optimizations): Add Ignore, remove Var,
9809 documented as preserved for backward compatibility only.
9810 * doc/invoke.texi: Remove -Wunsafe-loop-optimizations documentation.
9811
9812 PR rtl-optimization/86108
9813 * bb-reorder.c (create_forwarder_block): Renamed to ...
9814 (create_eh_forwarder_block): ... this. Split OLD_BB after labels and
9815 jump from new landing pad to the second part.
9816 (sjlj_fix_up_crossing_landing_pad, dw2_fix_up_crossing_landing_pad):
9817 Adjust callers.
9818
9819 2018-06-15 Jakub Jelinek <jakub@redhat.com>
9820
9821 PR middle-end/85878
9822 * expr.c (expand_assignment): Remove now redundant COMPLEX_MODE_P
9823 check from first store_expr, use to_mode instead of GET_MODE (to_rtx).
9824 Only call store_expr for halves if the mode is the same.
9825
9826 PR middle-end/86123
9827 * match.pd ((X / Y) == 0 -> X < Y): Don't transform complex divisions.
9828 Fix up comment formatting.
9829
9830 2018-06-15 Bernd Edlinger <bernd.edlinger@hotmail.de>
9831
9832 * typed-splay-tree.h (typed_splay_tree::remove): New function.
9833 (typed_splay_tree::closure,
9834 typed_splay_tree::inner_foreach_fn, typed_splay_tree::m_inner): Deleted.
9835 (typed_splay_tree::typed_splay_tree,
9836 typed_splay_tree::operator =): Declared private.
9837 (typed_splay_tree::splay_tree_key, typed_splay_tree::splay_tree_value,
9838 typed_splay_tree::splay_tree_node_s, typed_splay_tree::KDEL,
9839 typed_splay_tree::VDEL, typed_splay_tree::splay_tree_delete_helper,
9840 typed_splay_tree::rotate_left, typed_splay_tree::rotate_right,
9841 typed_splay_tree::splay_tree_splay,
9842 typed_splay_tree::splay_tree_foreach_helper,
9843 typed_splay_tree::splay_tree_insert,
9844 typed_splay_tree::splay_tree_remove,
9845 typed_splay_tree::splay_tree_lookup,
9846 typed_splay_tree::splay_tree_predecessor,
9847 typed_splay_tree::splay_tree_successor,
9848 typed_splay_tree::splay_tree_min,
9849 typed_splay_tree::splay_tree_max): Took over from splay-tree.c/.h.
9850 (typed_splay_tree::root, typed_splay_tree::comp,
9851 typed_splay_tree::delete_key,
9852 typed_splay_tree::delete_value): New data members.
9853 * typed-splay-tree.c (selftest::test_str_to_int): Add a test for
9854 typed_splay_tree::remove.
9855
9856 2018-06-15 Matthew Fortune <matthew.fortune@mips.com>
9857
9858 * config/mips/mips.h (ASM_SPEC): Pass through -mcrc, -mno-crc,
9859 -mginv and -mno-ginv to the assembler.
9860 * config/mips/mips.opt (-mcrc): New option.
9861 (-mginv): Likewise.
9862 * doc/invoke.text (-mcrc): Document.
9863 (-mginv): Likewise.
9864
9865 2018-06-15 Nick Clifton <nickc@redhat.com>
9866
9867 PR 84195
9868 * tree.c (escaped_string): New class. Converts an unescaped
9869 string into its escaped equivalent.
9870 (warn_deprecated_use): Use the new class to convert the
9871 deprecation message, if present.
9872 (test_escaped_strings): New self test.
9873 (test_c_tests): Add test_escaped_strings.
9874 * doc/extend.texi (deprecated): Add a note that the
9875 deprecation message is affected by the -fmessage-length
9876 option, and that control characters will be escaped.
9877 (#pragma GCC error): Document this pragma.
9878 (#pragma GCC warning): Likewise.
9879 * doc/invoke.texi (-fmessage-length): Document this option's
9880 effect on the #warning and #error preprocessor directives and
9881 the deprecated attribute.
9882
9883 2018-06-15 Richard Biener <rguenther@suse.de>
9884
9885 * tree-vect-slp.c (vect_slp_bb): Dump MSG_OPTIMIZED_LOCATIONS
9886 here, also noting vector size used.
9887 * tree-vectorizer.c (vectorize_loops): Adjust. Note vector
9888 size used in MSG_OPTIMIZED_LOCATIONS dump.
9889 (pass_slp_vectorize::execute): Adjust.
9890
9891 2018-06-15 Claudiu Zissulescu <claziss@synopsys.com>
9892
9893 PR target/85968
9894 * config/arc/arc.c (arc_return_address_register): Fix
9895 if-condition.
9896
9897 2018-06-15 Richard Biener <rguenther@suse.de>
9898
9899 PR middle-end/86159
9900 * tree-cfg.c (gimplify_build3): Do not strip sign conversions,
9901 leave useless conversion stripping to force_gimple_operand_gsi.
9902 (gimplify_build2): Likewise.
9903 (gimplify_build1): Likewise.
9904
9905 2018-06-15 Richard Biener <rguenther@suse.de>
9906
9907 PR middle-end/86076
9908 * tree-cfg.c (move_stmt_op): unshare invariant addresses
9909 before adjusting their block.
9910
9911 2018-06-15 Sebastian Huber <sebastian.huber@embedded-brains.de>
9912
9913 * config.gcc (riscv*-*-elf* | riscv*-*-rtems*): Use custom
9914 multilibs for *-*-rtems*.
9915 * config/riscv/t-rtems: New file.
9916
9917 2018-06-14 Jakub Jelinek <jakub@redhat.com>
9918
9919 PR middle-end/86122
9920 * match.pd ((A +- CST1) +- CST2): Punt if last resort
9921 unsigned_type_for returns NULL.
9922
9923 PR target/85945
9924 * lower-subreg.c (find_decomposable_subregs): Don't decompose float
9925 subregs of multi-word pseudos unless the float mode has word size.
9926
9927 2018-06-14 Richard Biener <rguenther@suse.de>
9928
9929 PR middle-end/86139
9930 * tree-vect-generic.c (build_word_mode_vector_type): Remove
9931 duplicate and harmful type_hash_canon.
9932 * tree.c (type_hash_canon): Assert we didn't find ourselves.
9933
9934 2018-06-14 Richard Biener <rguenther@suse.de>
9935
9936 PR ipa/86124
9937 * tree-ssa-struct-alias.c (create_variable_info_for): Handle
9938 NULL cgraph_node.
9939
9940 2018-06-14 Sebastian Huber <sebastian.huber@embedded-brains.de>
9941
9942 * config/rtems.h (STDINT_LONG32): Define.
9943
9944 2018-06-13 Matthew Fortune <matthew.fortune@mips.com>
9945 Prachi Godbole <prachi.godbole@imgtec.com>
9946
9947 * config/mips/mips-cpus.def: Define P6600.
9948 * config/mips/mips-tables.opt: Regenerate.
9949 * config/mips/mips.c (mips_ucbranch_type): New enum.
9950 (mips_rtx_cost_data): Add support for P6600.
9951 (mips_issue_rate): Likewise.
9952 (mips_multipass_dfa_lookahead): Likewise.
9953 (mips_avoid_hazard): Likewise.
9954 (mips_reorg_process_insns): Likewise.
9955 (mips_classify_branch_p6600): New function.
9956 * config/mips/mips.h (TUNE_P6600): New define.
9957 (MIPS_ISA_LEVEL_SPEC): Infer mips64r6 from p6600.
9958 (ENABLE_LD_ST_PAIRS): Enable load/store bonding for p6600.
9959 * config/mips/mips.md: Include p6600.md.
9960 (processor): Add p6600.
9961 * config/mips/p6600.md: New file.
9962 * doc/invoke.texi: Add p6600 to supported architectures.
9963
9964 2018-06-13 Martin Sebor <msebor@redhat.com>
9965
9966 PR tree-optimization/86114
9967 * gimple-fold.c (gimple_fold_builtin_strlen): Only handle LHS
9968 of integer types.
9969 * tree-ssa-strlen.c (maybe_set_strlen_range): Same.
9970
9971 2018-06-13 Richard Biener <rguenther@suse.de>
9972
9973 * tree-vect-patterns.c (vect_recog_vector_vector_shift_pattern):
9974 Properly set vector type of the intermediate stmt.
9975 * tree-vect-stmts.c (vectorizable_operation): The destination
9976 var always has vectype_out type.
9977
9978 2018-06-13 Jeff Law <law@redhat.com>
9979
9980 * config/rl78/rl78.c (move_elim_pass): Use TDF_NONE rather than
9981 integer 0 for argument to print_rtl_with_bb.
9982 (rl78_reorg): Likewise.
9983
9984 2018-06-13 David Malcolm <dmalcolm@redhat.com>
9985
9986 * config/arc/arc.c (hwloop_optimize): Strengthen local "end_label"
9987 from rtx to rtx_insn *.
9988 * config/bfin/bfin.c (hwloop_optimize): Likewise for local
9989 "label".
9990 (add_sched_insns_for_speculation): Likewise for local "target",
9991 converting usage of JUMP_LABEL to JUMP_LABEL_AS_INSN.
9992 * config/c6x/c6x.c (reorg_split_calls): Strengthen param "call_labels"
9993 from rtx_insn ** to rtx_code_label **.
9994 (reorg_emit_nops): Likewise.
9995 (c6x_reorg): Likewise for local "call_labels".
9996 * config/sh/sh-protos.h (get_dest_uid): Strengthen 1st param from
9997 rtx to rtx_insn *.
9998 * config/sh/sh.c (dump_table): Strengthen local "lab" from rtx to
9999 rtx_code_label *, adding safe_as_a <rtx_code_label *> casts to
10000 the loops over LABEL_REFS.
10001 (fixup_addr_diff_vecs): Add as_a <rtx_insn *> to usage of
10002 braf_label.
10003 (barrier_align): Convert usage of JUMP_LABEL to JUMP_LABEL_AS_INSN.
10004 (get_dest_uid): Strengthen param "label" from rtx to rtx_insn *.
10005 (split_branches): Strengthen local "olabel" from rtx to
10006 rtx_insn *, adding a safe_as_a cast.
10007 * emit-rtl.c (next_real_insn): Strengthen param from "rtx"
10008 to "rtx_insn *".
10009 (add_insn_after): Likewise for first two params.
10010 (add_insn_before): Likewise.
10011 (remove_insn): Likewise for param.
10012 (emit_pattern_before_noloc): Likewise for second and third params.
10013 (emit_jump_insn_before_noloc): Convert NULL_RTX to NULL.
10014 (emit_call_insn_before_noloc): Likewise.
10015 (emit_debug_insn_before_noloc): Strengthen "before" param from "rtx"
10016 to "rtx_insn *".
10017 (emit_barrier_before): Likewise.
10018 (emit_label_before): Strengthen "label" param from "rtx" to
10019 "rtx_code_label *". Strengthen "before" param from "rtx" to
10020 "rtx_insn *".
10021 (emit_insn_after_1): Strengthen "after" param from "rtx" to
10022 "rtx_insn *".
10023 (emit_pattern_after_noloc): Likewise.
10024 (emit_insn_after_noloc): Likewise.
10025 (emit_jump_insn_after_noloc): Likewise.
10026 (emit_call_insn_after_noloc): Likewise.
10027 (emit_debug_insn_after_noloc): Likewise.
10028 (emit_barrier_after): Likewise.
10029 (emit_label_after): Likewise for both params.
10030 (emit_pattern_after_setloc): Likewise for "after" param. Convert
10031 "loc" param from "int" to "location_t".
10032 (emit_insn_after_setloc): Likewise.
10033 (emit_jump_insn_after_setloc): Likewise.
10034 (emit_call_insn_after_setloc): Likewise.
10035 (emit_debug_insn_after_setloc): Likewise.
10036 (emit_pattern_before_setloc): Likewise for "before" param. Convert
10037 "loc" param from "int" to "location_t".
10038 (emit_pattern_before): Convert NULL_RTX to NULL.
10039 (emit_insn_before_setloc): Convert "loc" param from "int" to
10040 "location_t".
10041 (emit_jump_insn_before_setloc): Likewise.
10042 (emit_call_insn_before_setloc): Likewise.
10043 (emit_debug_insn_before_setloc): Strengthen "before" param from rtx to
10044 rtx_insn *. Convert "loc" param from "int" to "location_t".
10045 * rtl.h (emit_insn_before_setloc, emit_jump_insn_before_setloc,
10046 emit_call_insn_before_setloc, emit_debug_insn_before_setloc):
10047 Convert 3rd param from "int" to "location_t".
10048 (emit_barrier_before, emit_barrier_after, next_real_insn):
10049 Strengthen param from rtx to rtx_insn *.
10050 (emit_label_before): Strengthen 1st param from "rtx" to
10051 "rtx_code_label *". Strengthen 2nd param from "rtx" to
10052 "rtx_insn *".
10053 (emit_insn_after_noloc, emit_jump_insn_after_noloc,
10054 emit_call_insn_after_noloc, emit_debug_insn_after_noloc):
10055 Strengthen 2nd param from "rtx" to "rtx_insn *".
10056 (emit_insn_after_setloc, emit_jump_insn_after_setloc)
10057 emit_call_insn_after_setloc, emit_debug_insn_after_setloc):
10058 Likewise. Convert 3rd param from "int" to "location_t".
10059 (emit_label_after): Strengthen 1st param from "rtx" to
10060 "rtx_code_label *".
10061 (next_real_insn, remove_insn): Strengthen param from "rtx" to
10062 "rtx_insn *".
10063 (add_insn_before, add_insn_after): Strengthen 1st and 2nd params
10064 from "rtx" to "rtx_insn *".
10065
10066 2018-06-13 Jan Hubicka <hubicka@gcc.gnu.org>
10067
10068 * cgraph.c (cgraph_node::get_untransformed_body): Dump function
10069 bodies streamed in with -Q.
10070 * dumpfile.c (dump_files): Add lto-stream-out dump file.
10071 * dumpfile.h (tree_dump_index): Add lto_stream_out.
10072 * gimple-streamer-out.c: Include gimple-pretty-print.h
10073 (output_bb): Dump stmts streamed.
10074 * lto-section-out.c: Include print-tree.h
10075 (lto_begin_section): Dump sections created.
10076 (lto_output_decl_index): Dump decl encoded.
10077 * lto-streamer-out.c: Include print-tree.h
10078 (create_output_block): Dump output block created.
10079 (DFS::DFS_write_tree_body): Dump DFS SCCs streamed.
10080 (output_function): Dump function output.
10081 (output_constructor): Dump constructor streamed.
10082 (write_global_stream): Output indexes encoded.
10083 (produce_asm_for_decls): Dump streams encoded.
10084 * lto-streamer.c (streamer_dump_file): New global var.
10085 * lto-streamer.h (streamer_dump_file): Declare.
10086 * passes.c (ipa_write_summaries): Initialize streamer dump.
10087 * varpool.c (varpool_node::get_constructor): Dump constructors streamed
10088 in.
10089
10090 2018-06-13 Eric Botcazou <ebotcazou@adacore.com>
10091
10092 PR target/86048
10093 * config/i386/winnt.c (i386_pe_seh_cold_init): Do not emit negative
10094 offsets for register save directives. Emit a second batch of save
10095 directives, if need be, when the function accesses prior frames.
10096
10097 2018-06-12 Claudiu Zissulescu <claziss@synopsys.com>
10098
10099 * config/arc/fpu.md (fmasf4): Force operand to register.
10100 (fnmasf4): Likewise.
10101
10102 2018-06-12 Claudiu Zissulescu <claziss@synopsys.com>
10103
10104 * config/arc/arc-protos.h (arc_pad_return): Remove.
10105 * config/arc/arc.c (machine_function): Remove force_short_suffix
10106 and size_reason.
10107 (arc_print_operand): Adjust printing of '&'.
10108 (arc_verify_short): Remove conditional printing of short suffix.
10109 (arc_final_prescan_insn): Remove reference to size_reason.
10110 (pad_return): New function.
10111 (arc_reorg): Call pad_return.
10112 (arc_pad_return): Remove.
10113 (arc_init_machine_status): Remove reference to force_short_suffix.
10114 * config/arc/arc.md (vunspec): Add VUNSPEC_ARC_BLOCKAGE.
10115 (attr length): When attribute iscompact is true force to 2
10116 regardless; in the case of maybe check if we want to force the
10117 instruction to have 4 bytes length.
10118 (nopv): Change it to generate 4 byte long nop as well.
10119 (blockage): New pattern.
10120 (simple_return): Remove call to arc_pad_return.
10121 (p_return_i): Likewise.
10122
10123 2018-06-12 Claudiu Zissulescu <claziss@synopsys.com>
10124
10125 * config/arc/elf.h (LINK_GCC_C_SEQUENCE_SPEC): Define.
10126
10127 2018-06-12 Claudiu Zissulescu <claziss@synopsys.com>
10128
10129 * config/arc/builtins.def (SYNC): SYNC instruction is valid on all
10130 ARC cores.
10131
10132 2018-06-12 Claudiu Zissulescu <claziss@synopsys.com>
10133
10134 * config/arc/arc.c (atomic_exchangesi): EX instruction is default
10135 for ARC700 and ARCv2.
10136
10137 2018-06-13 Chenghua Xu <paul.hua.gm@gmail.com>
10138
10139 PR target/86076
10140 * config/mips/loongson.md (vec_setv4hi): Gen_lowpart for
10141 operands[2] instead of operands[1].
10142
10143
10144 2018-06-12 Richard Sandiford <richard.sandiford@linaro.org>
10145
10146 * lra-constraints.c (simplify_operand_subreg): In the paradoxical
10147 case, check whether the outer register overlaps an unallocatable
10148 register, not just whether it fits the required class.
10149
10150 2018-06-12 Richard Sandiford <richard.sandiford@linaro.org>
10151
10152 * poly-int.h (can_div_trunc_p): Add new overload in which all values
10153 are poly_ints.
10154 * alias.c (get_addr): Extend CONST_INT handling to poly_int_rtx_p.
10155 (memrefs_conflict_p): Likewise.
10156 (init_alias_analysis): Likewise.
10157 * cfgexpand.c (expand_debug_expr): Likewise.
10158 * combine.c (combine_simplify_rtx, force_int_to_mode): Likewise.
10159 * cse.c (fold_rtx): Likewise.
10160 * explow.c (adjust_stack, anti_adjust_stack): Likewise.
10161 * expr.c (emit_block_move_hints): Likewise.
10162 (clear_storage_hints, push_block, emit_push_insn): Likewise.
10163 (store_expr_with_bounds, reduce_to_bit_field_precision): Likewise.
10164 (emit_group_load_1): Use rtx_to_poly_int64 for group offsets.
10165 (emit_group_store): Likewise.
10166 (find_args_size_adjust): Use strip_offset. Use rtx_to_poly_int64
10167 to read the PRE/POST_MODIFY increment.
10168 * calls.c (store_one_arg): Use strip_offset.
10169 * rtlanal.c (rtx_addr_can_trap_p_1): Extend CONST_INT handling to
10170 poly_int_rtx_p.
10171 (set_noop_p): Use rtx_to_poly_int64 for the elements selected
10172 by a VEC_SELECT.
10173 * simplify-rtx.c (avoid_constant_pool_reference): Use strip_offset.
10174 (simplify_binary_operation_1): Extend CONST_INT handling to
10175 poly_int_rtx_p.
10176 * var-tracking.c (compute_cfa_pointer): Take a poly_int64 rather
10177 than a HOST_WIDE_INT.
10178 (hard_frame_pointer_adjustment): Change from HOST_WIDE_INT to
10179 poly_int64.
10180 (adjust_mems, add_stores): Update accodingly.
10181 (vt_canonicalize_addr): Track polynomial offsets.
10182 (emit_note_insn_var_location): Likewise.
10183 (vt_add_function_parameter): Likewise.
10184 (vt_initialize): Likewise.
10185
10186 2018-06-12 Jeff Law <law@redhat.com>
10187
10188 * config.gcc (alpha*-*-freebsd*): Remove.
10189 * config/alpha/freebsd.h: Remove.
10190
10191 2018-06-12 David Malcolm <dmalcolm@redhat.com>
10192
10193 PR other/69968
10194 * spellcheck-tree.c (levenshtein_distance): Rename to...
10195 (get_edit_distance): ...this, and update for underlying renaming.
10196 * spellcheck-tree.h (levenshtein_distance): Rename to...
10197 (get_edit_distance): ...this.
10198 * spellcheck.c (levenshtein_distance): Rename to...
10199 (get_edit_distance): ...this. Convert from Levenshtein distance
10200 to Damerau-Levenshtein distance by supporting transpositions of
10201 adjacent characters. Rename "v1" to "v_next" and "v0" to
10202 "v_one_ago".
10203 (selftest::levenshtein_distance_unit_test_oneway): Rename to...
10204 (selftest::test_edit_distance_unit_test_oneway): ...this, and
10205 update for underlying renaming.
10206 (selftest::levenshtein_distance_unit_test): Rename to...
10207 (selftest::test_get_edit_distance_unit): ...this, and update for
10208 underlying renaming.
10209 (selftest::test_find_closest_string): Add example from PR 69968
10210 where transposition helps
10211 (selftest::test_metric_conditions): Update for renaming.
10212 (selftest::test_metric_conditions): Likewise.
10213 (selftest::spellcheck_c_tests): Likewise.
10214 * spellcheck.h (levenshtein_distance): Rename both overloads to...
10215 (get_edit_distance): ...this.
10216 (best_match::consider): Update for renaming.
10217
10218 2018-06-12 Martin Sebor <msebor@redhat.com>
10219
10220 PR tree-optimization/85259
10221 * builtins.c (compute_objsize): Handle constant offsets.
10222 * gimple-ssa-warn-restrict.c (maybe_diag_offset_bounds): Return
10223 true iff a warning has been issued.
10224 * gimple.h (gimple_nonartificial_location): New function.
10225 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Call
10226 gimple_nonartificial_location and handle -Wno-system-headers.
10227 (handle_builtin_stxncpy): Same.
10228
10229 2018-06-12 Martin Sebor <msebor@redhat.com>
10230
10231 PR c/85931
10232 * fold-const.c (operand_equal_p): Handle SAVE_EXPR.
10233
10234 2018-06-12 Will Schmidt <will_schmidt@vnet.ibm.com>
10235
10236 * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
10237 BUILTIN_VEC_XST entries for pointer to double and long long.
10238
10239 2018-06-12 H.J. Lu <hongjiu.lu@intel.com>
10240
10241 PR target/85990
10242 * config/i386/gnu-user.h (TARGET_THREAD_SPLIT_STACK_OFFSET):
10243 Update comments.
10244 * config/i386/gnu-user64.h (TARGET_THREAD_SPLIT_STACK_OFFSET):
10245 Likewise.
10246
10247 2018-06-12 Martin Liska <mliska@suse.cz>
10248
10249 * doc/options.texi: Document IntegerRange.
10250
10251 2018-06-12 Martin Liska <mliska@suse.cz>
10252
10253 * config/i386/i386.opt: Make MPX-related options as Deprecated.
10254 * opt-functions.awk: Handle Deprecated flag.
10255 * opts-common.c (decode_cmdline_option): Handle cl_deprecated
10256 and report error.
10257 (read_cmdline_option): Report warning for a deprecated option.
10258 * opts.h (struct cl_option): Add new field cl_deprecated.
10259 (CL_ERR_DEPRECATED): New.
10260
10261 2018-06-12 Martin Liska <mliska@suse.cz>
10262
10263 * doc/options.texi: Document Deprecated option flag.
10264
10265 2018-06-12 Claudiu Zissulescu <claziss@synopsys.com>
10266
10267 * config/arc/arc-arch.h (arc_extras): New enum.
10268 (arc_cpu_t):Add field extra.
10269 (arc_cpu_types): Consider the extras.
10270 * config/arc/arc-cpus.def: Add extras info.
10271 * config/arc/arc-opts.h (processor_type): Consider extra field.
10272 * config/arc/arc.c (arc_override_options): Handle extra field.
10273
10274 2018-06-12 Claudiu Zissulescu <claziss@synopsys.com>
10275
10276 * config/arc/arc-arch.h: Update ARC_OPTX macro.
10277 * config/arc/arc-options.def (ARC_OPTX): Introduce a new doc
10278 field.
10279 * config/arc/arc.c (arc_init): Update pic warning.
10280 (irq_range): Update irq range parsing warnings.
10281 (arc_override_options): Update various warning messages.
10282 (arc_handle_aux_attribute): Likewise.
10283
10284 2018-06-12 Robert Suchanek <robert.suchanek@mips.com>
10285
10286 * config/mips/i6400.md (i6400_fpu_fadd): Remove frint.
10287
10288 2018-06-12 Jozef Lawrynowicz <jozef.l@mittosystems.com>
10289
10290 * doc/sourcebuild.texi: Document usage of line number 0 in verify
10291 compiler messages directives.
10292
10293 2018-06-12 Matthew Fortune <mfortune@gmail.com>
10294
10295 * config/mips/mips-cpus.def: New MIPS_CPU for i6500.
10296 * config/mips/mips-tables.opt: Regenerate.
10297 * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Mark i6500 as
10298 mips64r6.
10299 * doc/invoke.texi: Document -march=i6500.
10300
10301 2018-06-12 Prachi Godbole <prachi.godbole@imgtec.com>
10302
10303 * config/mips/i6400.md (i6400_gpmuldiv): Remove cpu_unit.
10304 (i6400_gpmul): Add cpu_unit.
10305 (i6400_gpdiv): Likewise.
10306 (i6400_msa_add_d): Update reservations.
10307 (i6400_msa_int_add) Likewise.
10308 (i6400_msa_short_logic3) Likewise.
10309 (i6400_msa_short_logic2) Likewise.
10310 (i6400_msa_short_logic) Likewise.
10311 (i6400_msa_move) Likewise.
10312 (i6400_msa_cmp) Likewise.
10313 (i6400_msa_short_float2) Likewise.
10314 (i6400_msa_div_d) Likewise.
10315 (i6400_msa_long_logic1) Likewise.
10316 (i6400_msa_long_logic2) Likewise.
10317 (i6400_msa_mult) Likewise.
10318 (i6400_msa_long_float2) Likewise.
10319 (i6400_msa_long_float4) Likewise.
10320 (i6400_msa_long_float5) Likewise.
10321 (i6400_msa_long_float8) Likewise.
10322 (i6400_fpu_fadd): Include frint type.
10323 (i6400_fpu_store): New define_insn_reservation.
10324 (i6400_fpu_load): Likewise.
10325 (i6400_fpu_move): Likewise.
10326 (i6400_fpu_fcmp): Likewise.
10327 (i6400_fpu_fmadd): Likewise.
10328 (i6400_int_mult): Include imul3nc type and update reservation.
10329 (i6400_int_div): Include idiv3 type and update reservation.
10330 (i6400_int_load): Update to check type not move_type.
10331 (i6400_int_store): Likewise.
10332 (i6400_int_prefetch): Set zero latency.
10333
10334 2018-06-12 Eric Botcazou <ebotcazou@adacore.com>
10335
10336 * gcc.c: Document new %@{...} sequence.
10337 (LINK_COMMAND_SPEC): Use it for the -L switches.
10338 (cpp_unique_options): Use it for the -I switches.
10339 (at_file_argbuf): New global variable.
10340 (in_at_file): Likewise.
10341 (alloc_args): Create at_file_argbuf.
10342 (clear_args): Truncate at_file_argbuf.
10343 (store_arg): If in_at_file, push the argument onto at_file_argbuf.
10344 (open_at_file): New function.
10345 (close_at_file): Likewise.
10346 (create_at_file): Delete.
10347 (do_spec_1) <'i'>: Use open_at_file/close_at_file.
10348 <'o'>: Likewise.
10349 <'@'>: New case.
10350 (validate_switches_from_spec): Deal with %@{...} sequence.
10351 (validate_switches): Likewise.
10352 (driver::finalize): Call clear_args.
10353
10354 2018-06-11 Rasmus Villemoes <rasmus.villemoes@prevas.dk>
10355
10356 * config/vx-common.h (USE_TM_CLONE_REGISTRY): #define to 0.
10357
10358 2018-06-11 Martin Sebor <msebor@redhat.com>
10359
10360 * doc/invoke.texi (-Wall): List -Wc++17-compat.
10361 (Wno-class-memaccess): Add @opindex.
10362 (Wno-templates, Wno-multiple-inheritance): Same.
10363 (Wno-virtual-inheritance, Wno-namespaces): Same.
10364 (Wno-pedantic, Wno-chkp, Wcoverage-mismatch): Same.
10365 (Wno-format-overflow, Wno-format-truncation): Same.
10366 (Wno-unused-local-typedefs, Walloc-size-larger-than): Same.
10367 (Wno-alloc-size-larger-than, Wframe-larger-than): Same
10368 (Wno-stack-usage, Wno-c++-compat, Wno-c++11-compat): Same.
10369 (Wno-c++14-compat, Wno-c++17-compat, Wno-openmp-simd): Same.
10370 (Wno-unsuffixed-float-constants, Wno-addr-space-convert): Same.
10371 (Wno-misspelled-isr): Same.
10372
10373 2018-06-11 Martin Sebor <msebor@redhat.com>
10374
10375 * PR tree-optimization/86083
10376 * tree-ssa-strlen.c (handle_char_store): Use tree_expr_nonzero_p.
10377
10378 2018-06-11 Zhouyi Zhou <zhouzhouyi@gmail.com>
10379
10380 * tree-eh.c (lower_eh_constructs_2): Add a comma to comment.
10381
10382 2018-06-11 Segher Boessenkool <segher@kernel.crashing.org>
10383
10384 PR target/85755
10385 * config/rs6000/rs6000.md (*movdi_internal32): Put constraint modifiers
10386 on the correct operand.
10387 (*movdi_internal64): Ditto.
10388
10389 2018-06-11 Martin Liska <mliska@suse.cz>
10390
10391 PR tree-optimization/86089
10392 * tree-ssa-strlen.c (get_string_length): Move back removed hunk.
10393
10394 2018-06-11 Julia Koval <julia.koval@intel.com>
10395
10396 * config/i386/vaesintrin.h (_mm_aesdec_epi128, _mm_aesdeclast_epi128)
10397 _mm_aesenc_epi128, _mm_aesenclast_epi128: Remove.
10398 * config/i386/vpclmulqdqintrin.h (_mm_clmulepi64_epi128): Remove.
10399
10400 2018-06-11 Olivier Hainque <hainque@adacore.com>
10401
10402 * dwarf2out.c (gen_compile_unit_die): Fallout to DW_LANG_Ada83
10403 for Ada with strict dwarf2.
10404
10405 2018-06-08 Peter Bergner <bergner@vnet.ibm.com>
10406
10407 PR target/85755
10408 * config/rs6000/rs6000.c (mem_operand_gpr): Enable PRE_INC and PRE_DEC
10409 addresses.
10410
10411 2018-06-08 Jan Hubicka <hubicka@ucw.cz>
10412
10413 * dumpfile.c (FIRST_ME_AUTO_NUMBERED_DUMP): Bump to 4.
10414
10415 2018-06-08 David Edelsohn <dje.gcc@gmail.com>
10416
10417 * config/rs6000/rs6000.c (rs6000_passes_ieee128): Protect with #if
10418 TARGET_ELF.
10419
10420 2018-06-08 Martin Liska <mliska@suse.cz>
10421
10422 * tree-cfg.h (debug_function): Fix argument type to match
10423 implementation.
10424
10425 2018-06-08 Martin Liska <mliska@suse.cz>
10426
10427 * config/powerpcspe/powerpcspe.c (rs6000_xcoff_visibility):
10428 Remove usage of MPX-related (and removed) fields.
10429 * config/rs6000/rs6000.c (rs6000_xcoff_visibility): Likewise.
10430
10431 2018-06-08 David Malcolm <dmalcolm@redhat.com>
10432
10433 * cfg.c (debug): Use TDF_NONE rather than 0.
10434 * cfghooks.c (debug): Likewise.
10435 * dumpfile.c (DUMP_FILE_INFO): Likewise; also for OPTGROUP.
10436 (struct dump_option_value_info): Convert to...
10437 (struct kv_pair): ...this template type.
10438 (dump_options): Convert to kv_pair<dump_flags_t>; use TDF_NONE
10439 rather than 0.
10440 (optinfo_verbosity_options): Likewise.
10441 (optgroup_options): Convert to kv_pair<optgroup_flags_t>; use
10442 OPTGROUP_NONE.
10443 (gcc::dump_manager::dump_register): Use optgroup_flags_t rather
10444 than int for "optgroup_flags" param.
10445 (dump_generic_expr_loc): Use dump_flags_t rather than int for
10446 "dump_kind" param.
10447 (dump_dec): Likewise.
10448 (dump_finish): Use TDF_NONE rather than 0.
10449 (gcc::dump_manager::opt_info_enable_passes): Use optgroup_flags_t
10450 rather than int for "optgroup_flags" param. Use TDF_NONE rather
10451 than 0. Update for change to option_ptr.
10452 (opt_info_switch_p_1): Convert "optgroup_flags" param from int *
10453 to optgroup_flags_t *. Use TDF_NONE and OPTGROUP_NONE rather than
10454 0. Update for changes to optinfo_verbosity_options and
10455 optgroup_options.
10456 (opt_info_switch_p): Convert optgroup_flags from int to
10457 optgroup_flags_t.
10458 (dump_basic_block): Use dump_flags_t rather than int
10459 for "dump_kind" param.
10460 * dumpfile.h (TDF_ADDRESS, TDF_SLIM, TDF_RAW, TDF_DETAILS,
10461 TDF_STATS, TDF_BLOCKS, TDF_VOPS, TDF_LINENO, TDF_UID)
10462 TDF_STMTADDR, TDF_GRAPH, TDF_MEMSYMS, TDF_RHS_ONLY, TDF_ASMNAME,
10463 TDF_EH, TDF_NOUID, TDF_ALIAS, TDF_ENUMERATE_LOCALS, TDF_CSELIB,
10464 TDF_SCEV, TDF_GIMPLE, TDF_FOLDING, MSG_OPTIMIZED_LOCATIONS,
10465 MSG_MISSED_OPTIMIZATION, MSG_NOTE, MSG_ALL, TDF_COMPARE_DEBUG,
10466 TDF_NONE): Convert from macros to...
10467 (enum dump_flag): ...this new enum.
10468 (dump_flags_t): Update to use enum.
10469 (operator|, operator&, operator~, operator|=, operator&=):
10470 Implement for dump_flags_t.
10471 (OPTGROUP_NONE, OPTGROUP_IPA, OPTGROUP_LOOP, OPTGROUP_INLINE,
10472 OPTGROUP_OMP, OPTGROUP_VEC, OPTGROUP_OTHER, OPTGROUP_ALL):
10473 Convert from macros to...
10474 (enum optgroup_flag): ...this new enum.
10475 (optgroup_flags_t): New typedef.
10476 (operator|, operator|=): Implement for optgroup_flags_t.
10477 (struct dump_file_info): Convert field "alt_flags" to
10478 dump_flags_t. Convert field "optgroup_flags" to
10479 optgroup_flags_t.
10480 (dump_basic_block): Use dump_flags_t rather than int for param.
10481 (dump_generic_expr_loc): Likewise.
10482 (dump_dec): Likewise.
10483 (dump_register): Convert param "optgroup_flags" to
10484 optgroup_flags_t.
10485 (opt_info_enable_passes): Likewise.
10486 * early-remat.c (early_remat::dump_edge_list): Use TDF_NONE rather
10487 than 0.
10488 * gimple-pretty-print.c (debug): Likewise.
10489 * gimple-ssa-store-merging.c (bswap_replace): Likewise.
10490 (merged_store_group::apply_stores): Likewise.
10491 * gimple-ssa-strength-reduction.c (insert_initializers): Likewise.
10492 * gimple.c (verify_gimple_pp): Likewise.
10493 * graphite-poly.c (print_pbb_body): Likewise.
10494 * passes.c (pass_manager::register_one_dump_file): Convert
10495 local "optgroup_flags" to optgroup_flags_t.
10496 * print-tree.c (print_node): Use TDF_NONE rather than 0.
10497 (debug): Likewise.
10498 (debug_body): Likewise.
10499 * tree-pass.h (struct pass_data): Convert field "optgroup_flags"
10500 to optgroup_flags_t.
10501 * tree-pretty-print.c (print_struct_decl): Use TDF_NONE rather
10502 than 0.
10503 * tree-ssa-math-opts.c (convert_mult_to_fma_1): Likewise.
10504 (convert_mult_to_fma): Likewise.
10505 * tree-ssa-reassoc.c (undistribute_ops_list): Likewise.
10506 * tree-ssa-sccvn.c (vn_eliminate): Likewise.
10507 * tree-vect-data-refs.c (dump_lower_bound): Convert param
10508 "dump_kind" to dump_flags_t.
10509
10510 2018-06-08 Segher Boessenkool <segher@kernel.crashing.org>
10511
10512 * config/rs6000/rs6000.c (min, max): Delete.
10513
10514 2018-06-08 Segher Boessenkool <segher@kernel.crashing.org>
10515
10516 * doc/invoke.texi (RS/6000 and PowerPC Options): Delete mention of
10517 -mabi=spe and -mabi=no-spe.
10518
10519 2018-06-08 Martin Liska <mliska@suse.cz>
10520
10521 * ipa-pure-const.c (propagate_pure_const): Use ::get at places
10522 where we expect an existing summary.
10523
10524 2018-06-08 Martin Liska <mliska@suse.cz>
10525
10526 * ipa-inline-analysis.c (simple_edge_hints): Use ::get method.
10527 * ipa-inline.h (estimate_edge_growth): Likewise.
10528
10529 2018-06-08 Martin Liska <mliska@suse.cz>
10530
10531 * cgraph.c (function_version_hasher::hash): Use
10532 cgraph_node::get_uid ().
10533 (function_version_hasher::equal):
10534 * cgraph.h (cgraph_node::get_uid): New method.
10535 * ipa-inline.c (update_caller_keys): Use
10536 cgraph_node::get_uid ().
10537 (update_callee_keys): Likewise.
10538 * ipa-utils.c (searchc): Likewise.
10539 (ipa_reduced_postorder): Likewise.
10540 * lto-cgraph.c (input_node): Likewise.
10541 * passes.c (is_pass_explicitly_enabled_or_disabled): Likewise.
10542 * symbol-summary.h (symtab_insertion): Likewise.
10543 (symtab_removal): Likewise.
10544 (symtab_duplication): Likewise.
10545 * tree-pretty-print.c (dump_function_header): Likewise.
10546 * tree-sra.c (convert_callers_for_node): Likewise.
10547
10548 2018-06-08 Martin Liska <mliska@suse.cz>
10549
10550 * cgraph.c (symbol_table::create_edge): Always assign a new
10551 unique number.
10552 (symbol_table::free_edge): Do not recycle numbers.
10553 * cgraph.h (cgraph_edge::get): New method.
10554 * symbol-summary.h (symtab_removal): Use it.
10555 (symtab_duplication): Likewise.
10556 (call_summary::hashable_uid): Remove.
10557
10558 2018-06-08 Martin Liska <mliska@suse.cz>
10559
10560 * ipa-inline-analysis.c (inline_edge_removal_hook): Remove.
10561 (initialize_growth_caches): Remove.
10562 (free_growth_caches): Likewise.
10563 (do_estimate_edge_time): Use edge_growth_cache.
10564 (do_estimate_edge_size): Likewise.
10565 (do_estimate_edge_hints): Likewise.
10566 * ipa-inline.c (reset_edge_caches): Likewise.
10567 (recursive_inlining): Likewise.
10568 (inline_small_functions): Likewise.
10569 * ipa-inline.h (initialize_growth_caches): Remove.
10570 (estimate_edge_size): Likewise.
10571 (estimate_edge_time): Likewise.
10572 (estimate_edge_hints): Likewise.
10573 (reset_edge_growth_cache): Likewise.
10574 * symbol-summary.h (call_summary::remove): New method.
10575
10576 2018-06-08 Martin Liska <mliska@suse.cz>
10577
10578 * ipa-cp.c (class edge_clone_summary): New summary.
10579 (grow_edge_clone_vectors): Remove.
10580 (ipcp_edge_duplication_hook): Remove.
10581 (class edge_clone_summary_t): New call_summary class.
10582 (ipcp_edge_removal_hook): Remove.
10583 (edge_clone_summary_t::duplicate): New function.
10584 (get_next_cgraph_edge_clone): Use edge_clone_summaries.
10585 (create_specialized_node): Likewise.
10586 (ipcp_driver): Initialize edge_clone_summaries and do not
10587 register hooks.
10588
10589 2018-06-08 Martin Liska <mliska@suse.cz>
10590
10591 * symbol-summary.h (get): New function.
10592 (call_summary::m_initialize_when_cloning): New class member.
10593
10594 2018-06-08 Martin Liska <mliska@suse.cz>
10595
10596 * cgraph.c (cgraph_node::remove): Do not recycle uid.
10597 * cgraph.h (symbol_table::release_symbol): Do not pass uid.
10598 (symbol_table::allocate_cgraph_symbol): Do not set uid.
10599 * passes.c (uid_hash_t): Record removed_nodes by their uids.
10600 (remove_cgraph_node_from_order): Use the removed_nodes set.
10601 (do_per_function_toporder): Likwise.
10602 * symbol-summary.h (symtab_insertion): Use cgraph_node::uid
10603 instead of summary_uid.
10604 (symtab_removal): Likewise.
10605 (symtab_duplication): Likewise.
10606
10607 2018-06-08 Martin Liska <mliska@suse.cz>
10608
10609 * ipa-cp.c (ipcp_store_bits_results): Use
10610 ipcp_transformation_sum.
10611 (ipcp_store_vr_results): Likewise.
10612 * ipa-prop.c (ipcp_grow_transformations_if_necessary): Renamed
10613 to ...
10614 (ipcp_transformation_initialize): ... this.
10615 (ipa_set_node_agg_value_chain):
10616 (ipa_node_params_t::duplicate): Use ipcp_transformation_sum.
10617 (write_ipcp_transformation_info): Likewise.
10618 (read_ipcp_transformation_info): Likewise.
10619 (ipcp_update_bits): Likewise.
10620 (ipcp_update_vr): Likewise.
10621 (ipcp_transform_function): Likewise.
10622 * ipa-prop.h: Rename ipcp_transformation_summary to
10623 ipcp_transformation.
10624 (class ipcp_transformation_t): New function summary.
10625 (ipcp_get_transformation_summary): Use ipcp_transformation_sum.
10626 (ipa_get_agg_replacements_for_node): Likewise.
10627
10628 2018-06-08 Martin Liska <mliska@suse.cz>
10629
10630 * ipa-pure-const.c (struct funct_state_d): Do it class instead
10631 of struct.
10632 (class funct_state_summary_t): New function_summary class.
10633 (has_function_state): Remove.
10634 (get_function_state): Likewise.
10635 (set_function_state): Likewise.
10636 (add_new_function): Likewise.
10637 (funct_state_summary_t::insert): New function.
10638 (duplicate_node_data): Remove.
10639 (remove_node_data): Remove.
10640 (funct_state_summary_t::duplicate): New function.
10641 (register_hooks): Create new funct_state_summaries.
10642 (pure_const_generate_summary): Use it.
10643 (pure_const_write_summary): Likewise.
10644 (pure_const_read_summary): Likewise.
10645 (propagate_pure_const): Likewise.
10646 (propagate_nothrow): Likewise.
10647 (dump_malloc_lattice): Likewise.
10648 (propagate_malloc): Likewise.
10649 (execute): Do not register hooks, just remove summary
10650 instead.
10651 (pass_ipa_pure_const::pass_ipa_pure_const): Simplify
10652 constructor.
10653
10654 2018-06-08 Martin Liska <mliska@suse.cz>
10655
10656 * ipa-reference.c (remove_node_data): Remove.
10657 (duplicate_node_data): Likewise.
10658 (class ipa_ref_var_info_summary_t): New class.
10659 (class ipa_ref_opt_summary_t): Likewise.
10660 (get_reference_vars_info): Use ipa_ref_var_info_summaries.
10661 (get_reference_optimization_summary): Use
10662 ipa_ref_opt_sum_summaries.
10663 (set_reference_vars_info): Remove.
10664 (set_reference_optimization_summary): Likewise.
10665 (ipa_init): Create summaries.
10666 (init_function_info): Use function summary.
10667 (ipa_ref_opt_summary_t::duplicate): New function.
10668 (ipa_ref_opt_summary_t::remove): New function.
10669 (get_read_write_all_from_node): Fix GNU coding style.
10670 (propagate): Use function summary.
10671 (write_node_summary_p): Fix GNU coding style.
10672 (stream_out_bitmap): Likewise.
10673 (ipa_reference_read_optimization_summary): Use function summary.
10674 (ipa_reference_c_finalize): Do not release hooks.
10675
10676 2018-06-08 Martin Liska <mliska@suse.cz>
10677
10678 * ipa-fnsummary.c (dump_ipa_call_summary): Use ::get method.
10679 (analyze_function_body): Extract multiple calls of get_create.
10680 * ipa-inline-analysis.c (simple_edge_hints): Likewise.
10681 * ipa-inline.c (recursive_inlining): Use ::get method.
10682 * ipa-inline.h (estimate_edge_growth): Likewise.
10683
10684 2018-06-08 Martin Liska <mliska@suse.cz>
10685
10686 * hsa-common.h (enum hsa_function_kind): Rename HSA_NONE to
10687 HSA_INVALID.
10688 (hsa_function_summary::hsa_function_summary): Use the new enum
10689 value.
10690 (hsa_gpu_implementation_p): Use hsa_summaries::get.
10691 * hsa-gen.c (hsa_get_host_function): Likewise.
10692 (get_brig_function_name): Likewise.
10693 * ipa-hsa.c (process_hsa_functions): Likewise.
10694 (ipa_hsa_write_summary): Likewise.
10695 * symbol-summary.h (symtab_duplication): Use ::get function/
10696 (get): New function.
10697
10698 2018-06-08 Martin Liska <mliska@suse.cz>
10699
10700 * config/i386/i386.c (ix86_can_inline_p): Use get_create instead
10701 of get.
10702 * hsa-common.c (hsa_summary_t::link_functions): Likewise.
10703 (hsa_register_kernel): Likewise.
10704 * hsa-common.h (hsa_gpu_implementation_p): Likewise.
10705 * hsa-gen.c (hsa_get_host_function): Likewise.
10706 (get_brig_function_name): Likewise.
10707 (generate_hsa): Likewise.
10708 (pass_gen_hsail::execute): Likewise.
10709 * ipa-cp.c (ipcp_cloning_candidate_p): Likewise.
10710 (devirtualization_time_bonus): Likewise.
10711 (ipcp_propagate_stage): Likewise.
10712 * ipa-fnsummary.c (redirect_to_unreachable): Likewise.
10713 (edge_set_predicate): Likewise.
10714 (evaluate_conditions_for_known_args): Likewise.
10715 (evaluate_properties_for_edge): Likewise.
10716 (ipa_fn_summary::reset): Likewise.
10717 (ipa_fn_summary_t::duplicate): Likewise.
10718 (dump_ipa_call_summary): Likewise.
10719 (ipa_dump_fn_summary): Likewise.
10720 (analyze_function_body): Likewise.
10721 (compute_fn_summary): Likewise.
10722 (estimate_edge_devirt_benefit): Likewise.
10723 (estimate_edge_size_and_time): Likewise.
10724 (estimate_calls_size_and_time): Likewise.
10725 (estimate_node_size_and_time): Likewise.
10726 (inline_update_callee_summaries): Likewise.
10727 (remap_edge_change_prob): Likewise.
10728 (remap_edge_summaries): Likewise.
10729 (ipa_merge_fn_summary_after_inlining): Likewise.
10730 (ipa_update_overall_fn_summary): Likewise.
10731 (read_ipa_call_summary): Likewise.
10732 (inline_read_section): Likewise.
10733 (write_ipa_call_summary): Likewise.
10734 (ipa_fn_summary_write): Likewise.
10735 (ipa_free_fn_summary): Likewise.
10736 * ipa-hsa.c (process_hsa_functions): Likewise.
10737 (ipa_hsa_write_summary): Likewise.
10738 (ipa_hsa_read_section): Likewise.
10739 * ipa-icf.c (sem_function::merge): Likewise.
10740 * ipa-inline-analysis.c (simple_edge_hints): Likewise.
10741 (do_estimate_edge_time): Likewise.
10742 (estimate_size_after_inlining): Likewise.
10743 (estimate_growth): Likewise.
10744 (growth_likely_positive): Likewise.
10745 * ipa-inline-transform.c (clone_inlined_nodes): Likewise.
10746 (inline_call): Likewise.
10747 * ipa-inline.c (caller_growth_limits): Likewise.
10748 (can_inline_edge_p): Likewise.
10749 (can_inline_edge_by_limits_p): Likewise.
10750 (compute_uninlined_call_time): Likewise.
10751 (compute_inlined_call_time): Likewise.
10752 (want_inline_small_function_p): Likewise.
10753 (edge_badness): Likewise.
10754 (update_caller_keys): Likewise.
10755 (update_callee_keys): Likewise.
10756 (recursive_inlining): Likewise.
10757 (inline_small_functions): Likewise.
10758 (inline_to_all_callers_1): Likewise.
10759 (dump_overall_stats): Likewise.
10760 (early_inline_small_functions): Likewise.
10761 (early_inliner): Likewise.
10762 * ipa-inline.h (estimate_edge_growth): Likewise.
10763 * ipa-profile.c (ipa_propagate_frequency_1): Likewise.
10764 * ipa-prop.c (ipa_make_edge_direct_to_target): Likewise.
10765 * ipa-prop.h (IPA_NODE_REF): Likewise.
10766 (IPA_EDGE_REF): Likewise.
10767 * ipa-pure-const.c (malloc_candidate_p): Likewise.
10768 (propagate_malloc): Likewise.
10769 * ipa-split.c (execute_split_functions): Likewise.
10770 * symbol-summary.h: Rename get to get_create.
10771 (get): Likewise.
10772 (get_create): Likewise.
10773 * tree-sra.c (ipa_sra_preliminary_function_checks): Likewise.
10774
10775 2018-06-08 Martin Liska <mliska@suse.cz>
10776
10777 * symbol-summary.h (release): Move definition out of class
10778 declaration.
10779 (symtab_removal): Likewise.
10780 (symtab_duplication): Likewise.
10781
10782 2018-06-08 Martin Liska <mliska@suse.cz>
10783
10784 * symbol-summary.h (function_summary): Move constructor
10785 implementation out of class declaration.
10786 (release): Likewise.
10787 (symtab_insertion): Likewise.
10788 (symtab_removal): Likewise.
10789 (symtab_duplication): Likewise.
10790 (get): Likewise.
10791
10792 2018-06-08 Martin Liska <mliska@suse.cz>
10793
10794 * Makefile.in: Remove support for MPX (macros, related functions,
10795 fields in cgraph_node, ...).
10796 * builtin-types.def (BT_BND): Likewise.
10797 (BT_FN_BND_CONST_PTR): Likewise.
10798 (BT_FN_CONST_PTR_BND): Likewise.
10799 (BT_FN_VOID_PTR_BND): Likewise.
10800 (BT_FN_BND_CONST_PTR_SIZE): Likewise.
10801 (BT_FN_VOID_CONST_PTR_BND_CONST_PTR): Likewise.
10802 * builtins.c (expand_builtin_memcpy_with_bounds): Likewise.
10803 (expand_builtin_mempcpy_with_bounds): Likewise.
10804 (expand_builtin_memset_with_bounds): Likewise.
10805 (expand_builtin_memset_args): Likewise.
10806 (std_expand_builtin_va_start): Likewise.
10807 (expand_builtin): Likewise.
10808 (expand_builtin_with_bounds): Likewise.
10809 * builtins.def (DEF_BUILTIN_CHKP): Likewise.
10810 (DEF_LIB_BUILTIN_CHKP): Likewise.
10811 (DEF_EXT_LIB_BUILTIN_CHKP): Likewise.
10812 (DEF_CHKP_BUILTIN): Likewise.
10813 (BUILT_IN_MEMCPY): Likewise.
10814 (BUILT_IN_MEMMOVE): Likewise.
10815 (BUILT_IN_MEMPCPY): Likewise.
10816 (BUILT_IN_MEMSET): Likewise.
10817 (BUILT_IN_STPCPY): Likewise.
10818 (BUILT_IN_STRCAT): Likewise.
10819 (BUILT_IN_STRCHR): Likewise.
10820 (BUILT_IN_STRCPY): Likewise.
10821 (BUILT_IN_STRLEN): Likewise.
10822 (BUILT_IN_MEMCPY_CHK): Likewise.
10823 (BUILT_IN_MEMMOVE_CHK): Likewise.
10824 (BUILT_IN_MEMPCPY_CHK): Likewise.
10825 (BUILT_IN_MEMSET_CHK): Likewise.
10826 (BUILT_IN_STPCPY_CHK): Likewise.
10827 (BUILT_IN_STRCAT_CHK): Likewise.
10828 (BUILT_IN_STRCPY_CHK): Likewise.
10829 * calls.c (store_bounds): Likewise.
10830 (emit_call_1): Likewise.
10831 (special_function_p): Likewise.
10832 (maybe_warn_nonstring_arg): Likewise.
10833 (initialize_argument_information): Likewise.
10834 (finalize_must_preallocate): Likewise.
10835 (compute_argument_addresses): Likewise.
10836 (expand_call): Likewise.
10837 * cfgexpand.c (expand_call_stmt): Likewise.
10838 (expand_return): Likewise.
10839 (expand_gimple_stmt_1): Likewise.
10840 (pass_expand::execute): Likewise.
10841 * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Likewise.
10842 (cgraph_node::remove): Likewise.
10843 (cgraph_node::dump): Likewise.
10844 (cgraph_node::verify_node): Likewise.
10845 * cgraph.h (chkp_function_instrumented_p): Likewise.
10846 (symtab_node::get_alias_target): Likewise.
10847 (cgraph_node::can_remove_if_no_direct_calls_and_refs_p): Likewise.
10848 (cgraph_local_p): Likewise.
10849 * cgraphbuild.c (cgraph_edge::rebuild_edges): Likewise.
10850 (cgraph_edge::rebuild_references): Likewise.
10851 * cgraphunit.c (varpool_node::finalize_decl): Likewise.
10852 (walk_polymorphic_call_targets): Likewise.
10853 (cgraph_node::expand_thunk): Likewise.
10854 (symbol_table::output_weakrefs): Likewise.
10855 * common/config/i386/i386-common.c (OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET): Likewise.
10856 (ix86_handle_option): Likewise.
10857 * config/i386/constraints.md: Likewise.
10858 * config/i386/i386-builtin-types.def (BND): Likewise.
10859 (VOID): Likewise.
10860 (PVOID): Likewise.
10861 (ULONG): Likewise.
10862 * config/i386/i386-builtin.def (BDESC_END): Likewise.
10863 (BDESC_FIRST): Likewise.
10864 (BDESC): Likewise.
10865 * config/i386/i386-c.c (ix86_target_macros_internal): Likewise.
10866 * config/i386/i386-protos.h (ix86_bnd_prefixed_insn_p): Likewise.
10867 * config/i386/i386.c (enum reg_class): Likewise.
10868 (ix86_target_string): Likewise.
10869 (ix86_option_override_internal): Likewise.
10870 (ix86_conditional_register_usage): Likewise.
10871 (ix86_valid_target_attribute_inner_p): Likewise.
10872 (ix86_set_indirect_branch_type): Likewise.
10873 (ix86_set_current_function): Likewise.
10874 (ix86_function_arg_regno_p): Likewise.
10875 (init_cumulative_args): Likewise.
10876 (ix86_function_arg_advance): Likewise.
10877 (ix86_function_arg): Likewise.
10878 (ix86_pass_by_reference): Likewise.
10879 (ix86_function_value_regno_p): Likewise.
10880 (ix86_function_value_1): Likewise.
10881 (ix86_function_value_bounds): Likewise.
10882 (ix86_return_in_memory): Likewise.
10883 (ix86_setup_incoming_vararg_bounds): Likewise.
10884 (ix86_va_start): Likewise.
10885 (indirect_thunk_need_prefix): Likewise.
10886 (print_reg): Likewise.
10887 (ix86_print_operand): Likewise.
10888 (ix86_expand_call): Likewise.
10889 (ix86_output_function_return): Likewise.
10890 (reg_encoded_number): Likewise.
10891 (BDESC_VERIFYS): Likewise.
10892 (ix86_init_mpx_builtins): Likewise.
10893 (ix86_init_builtins): Likewise.
10894 (ix86_emit_cmove): Likewise.
10895 (ix86_emit_move_max): Likewise.
10896 (ix86_expand_builtin): Likewise.
10897 (ix86_builtin_mpx_function): Likewise.
10898 (ix86_get_arg_address_for_bt): Likewise.
10899 (ix86_load_bounds): Likewise.
10900 (ix86_store_bounds): Likewise.
10901 (ix86_load_returned_bounds): Likewise.
10902 (ix86_store_returned_bounds): Likewise.
10903 (ix86_class_likely_spilled_p): Likewise.
10904 (ix86_hard_regno_mode_ok): Likewise.
10905 (x86_order_regs_for_local_alloc): Likewise.
10906 (ix86_mitigate_rop): Likewise.
10907 (ix86_bnd_prefixed_insn_p): Likewise.
10908 (ix86_mpx_bound_mode): Likewise.
10909 (ix86_make_bounds_constant): Likewise.
10910 (ix86_initialize_bounds): Likewise.
10911 (TARGET_LOAD_BOUNDS_FOR_ARG): Likewise.
10912 (TARGET_STORE_BOUNDS_FOR_ARG): Likewise.
10913 (TARGET_LOAD_RETURNED_BOUNDS): Likewise.
10914 (TARGET_STORE_RETURNED_BOUNDS): Likewise.
10915 (TARGET_CHKP_BOUND_MODE): Likewise.
10916 (TARGET_BUILTIN_CHKP_FUNCTION): Likewise.
10917 (TARGET_CHKP_FUNCTION_VALUE_BOUNDS): Likewise.
10918 (TARGET_CHKP_MAKE_BOUNDS_CONSTANT): Likewise.
10919 (TARGET_CHKP_INITIALIZE_BOUNDS): Likewise.
10920 * config/i386/i386.h (TARGET_MPX): Likewise.
10921 (TARGET_MPX_P): Likewise.
10922 (VALID_BND_REG_MODE): Likewise.
10923 (FIRST_BND_REG): Likewise.
10924 (LAST_BND_REG): Likewise.
10925 (enum reg_class): Likewise.
10926 (BND_REG_P): Likewise.
10927 (BND_REGNO_P): Likewise.
10928 (BNDmode): Likewise.
10929 (ADJUST_INSN_LENGTH): Likewise.
10930 * config/i386/i386.md: Likewise.
10931 * config/i386/i386.opt: Likewise.
10932 * config/i386/linux-common.h (LIBMPX_LIBS): Likewise.
10933 (defined): Likewise.
10934 (LINK_MPX): Likewise.
10935 (MPX_SPEC): Likewise.
10936 (LIBMPX_SPEC): Likewise.
10937 (LIBMPXWRAPPERS_SPEC): Likewise.
10938 (CHKP_SPEC): Likewise.
10939 * config/i386/predicates.md: Likewise.
10940 * dbxout.c (dbxout_type): Likewise.
10941 * doc/extend.texi: Likewise.
10942 * doc/invoke.texi: Likewise.
10943 * doc/md.texi: Likewise.
10944 * doc/tm.texi: Likewise.
10945 * doc/tm.texi.in: Likewise.
10946 * dwarf2out.c (is_base_type): Likewise.
10947 (gen_formal_types_die): Likewise.
10948 (gen_subprogram_die): Likewise.
10949 (gen_type_die_with_usage): Likewise.
10950 (gen_decl_die): Likewise.
10951 (dwarf2out_late_global_decl): Likewise.
10952 * expr.c (expand_assignment): Likewise.
10953 (emit_storent_insn): Likewise.
10954 (store_expr_with_bounds): Likewise.
10955 (store_expr): Likewise.
10956 (expand_expr_real_1): Likewise.
10957 * expr.h (store_expr_with_bounds): Likewise.
10958 * function.c (use_register_for_decl): Likewise.
10959 (struct bounds_parm_data): Likewise.
10960 (assign_parms_augmented_arg_list): Likewise.
10961 (assign_parm_find_entry_rtl): Likewise.
10962 (assign_parm_is_stack_parm): Likewise.
10963 (assign_parm_load_bounds): Likewise.
10964 (assign_bounds): Likewise.
10965 (assign_parms): Likewise.
10966 (expand_function_start): Likewise.
10967 * gcc.c (CHKP_SPEC): Likewise.
10968 * gimple-fold.c (gimple_fold_builtin_memory_op): Likewise.
10969 * gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Likewise.
10970 (wrestrict_dom_walker::check_call): Likewise.
10971 * gimple.c (gimple_build_call_from_tree): Likewise.
10972 * gimple.h (enum gf_mask): Likewise.
10973 (gimple_call_with_bounds_p): Likewise.
10974 (gimple_call_set_with_bounds): Likewise.
10975 * gimplify.c (gimplify_init_constructor): Likewise.
10976 * ipa-cp.c (initialize_node_lattices): Likewise.
10977 (propagate_constants_across_call): Likewise.
10978 (find_more_scalar_values_for_callers_subset): Likewise.
10979 * ipa-hsa.c (process_hsa_functions): Likewise.
10980 * ipa-icf-gimple.c (func_checker::compare_gimple_call): Likewise.
10981 * ipa-icf.c (sem_function::merge): Likewise.
10982 * ipa-inline.c (early_inliner): Likewise.
10983 * ipa-pure-const.c (warn_function_noreturn): Likewise.
10984 (warn_function_cold): Likewise.
10985 (propagate_pure_const): Likewise.
10986 * ipa-ref.h (enum GTY): Likewise.
10987 * ipa-split.c (find_retbnd): Likewise.
10988 (consider_split): Likewise.
10989 (split_function): Likewise.
10990 * ipa-visibility.c (cgraph_externally_visible_p): Likewise.
10991 * ipa.c (walk_polymorphic_call_targets): Likewise.
10992 (symbol_table::remove_unreachable_nodes): Likewise.
10993 (process_references): Likewise.
10994 (cgraph_build_static_cdtor_1): Likewise.
10995 * lto-cgraph.c (lto_output_node): Likewise.
10996 (output_refs): Likewise.
10997 (compute_ltrans_boundary): Likewise.
10998 (input_overwrite_node): Likewise.
10999 (input_node): Likewise.
11000 (input_cgraph_1): Likewise.
11001 * params.def (PARAM_CHKP_MAX_CTOR_SIZE): Likewise.
11002 * passes.c (pass_manager::execute_early_local_passes): Likewise.
11003 (class pass_chkp_instrumentation_passes): Likewise.
11004 (make_pass_chkp_instrumentation_passes): Likewise.
11005 * passes.def: Likewise.
11006 * rtl.h (struct GTY): Likewise.
11007 (CALL_EXPR_WITH_BOUNDS_P): Likewise.
11008 * stor-layout.c (layout_type): Likewise.
11009 * symtab.c: Likewise.
11010 * target.def: Likewise.
11011 * targhooks.c (default_chkp_bound_type): Likewise.
11012 (default_chkp_bound_mode): Likewise.
11013 (default_builtin_chkp_function): Likewise.
11014 (default_chkp_function_value_bounds): Likewise.
11015 (default_chkp_make_bounds_constant): Likewise.
11016 (default_chkp_initialize_bounds): Likewise.
11017 * targhooks.h (default_chkp_bound_type): Likewise.
11018 (default_chkp_bound_mode): Likewise.
11019 (default_builtin_chkp_function): Likewise.
11020 (default_chkp_function_value_bounds): Likewise.
11021 (default_chkp_make_bounds_constant): Likewise.
11022 (default_chkp_initialize_bounds): Likewise.
11023 * toplev.c (compile_file): Likewise.
11024 (process_options): Likewise.
11025 * tree-core.h (DEF_BUILTIN): Likewise.
11026 (DEF_BUILTIN_CHKP): Likewise.
11027 * tree-inline.c (declare_return_variable): Likewise.
11028 (remap_gimple_stmt): Likewise.
11029 (copy_bb): Likewise.
11030 (initialize_inlined_parameters): Likewise.
11031 (expand_call_inline): Likewise.
11032 * tree-pass.h (make_pass_ipa_chkp_versioning): Likewise.
11033 (make_pass_ipa_chkp_early_produce_thunks): Likewise.
11034 (make_pass_ipa_chkp_produce_thunks): Likewise.
11035 (make_pass_chkp): Likewise.
11036 (make_pass_chkp_opt): Likewise.
11037 (make_pass_chkp_instrumentation_passes): Likewise.
11038 * tree-pretty-print.c (dump_generic_node): Likewise.
11039 * tree-ssa-ccp.c (insert_clobber_before_stack_restore): Likewise.
11040 * tree-ssa-dce.c (propagate_necessity): Likewise.
11041 (eliminate_unnecessary_stmts): Likewise.
11042 * tree-ssa-pre.c (create_expression_by_pieces): Likewise.
11043 * tree-ssa-sccvn.c (copy_reference_ops_from_call): Likewise.
11044 * tree-ssa-sccvn.h: Likewise.
11045 * tree-ssa-strlen.c (get_string_length): Likewise.
11046 (valid_builtin_call): Likewise.
11047 (adjust_last_stmt): Likewise.
11048 (handle_builtin_strchr): Likewise.
11049 (handle_builtin_strcpy): Likewise.
11050 (handle_builtin_stxncpy): Likewise.
11051 (handle_builtin_memcpy): Likewise.
11052 (handle_builtin_strcat): Likewise.
11053 (strlen_check_and_optimize_stmt): Likewise.
11054 * tree-stdarg.c (expand_ifn_va_arg_1): Likewise.
11055 * tree-streamer-in.c: Likewise.
11056 * tree-streamer.c (record_common_node): Likewise.
11057 * tree.c (tree_code_size): Likewise.
11058 (wide_int_to_tree_1): Likewise.
11059 (type_contains_placeholder_1): Likewise.
11060 (build_common_tree_nodes): Likewise.
11061 * tree.def (POINTER_BOUNDS_TYPE): Likewise.
11062 * tree.h (POINTER_BOUNDS_TYPE_P): Likewise.
11063 (POINTER_BOUNDS_P): Likewise.
11064 (BOUNDED_TYPE_P): Likewise.
11065 (BOUNDED_P): Likewise.
11066 (CALL_WITH_BOUNDS_P): Likewise.
11067 (pointer_bounds_type_node): Likewise.
11068 * value-prof.c (gimple_ic): Likewise.
11069 * var-tracking.c (vt_add_function_parameters): Likewise.
11070 * varasm.c (make_decl_rtl): Likewise.
11071 (assemble_start_function): Likewise.
11072 (output_constant): Likewise.
11073 (maybe_assemble_visibility): Likewise.
11074 * varpool.c (ctor_for_folding): Likewise.
11075 * chkp-builtins.def: Remove.
11076 * ipa-chkp.c: Remove.
11077 * ipa-chkp.h: Remove.
11078 * rtl-chkp.c: Remove.
11079 * rtl-chkp.h: Remove.
11080 * tree-chkp-opt.c: Remove.
11081 * tree-chkp.c: Remove.
11082 * tree-chkp.h: Remove.
11083
11084 2018-06-07 Carl Love <cel@us.ibm.com>
11085
11086 * config/rs6000/vsx.md (vextract_fp_from_shorth,
11087 vextract_fp_from_shortl): Add BE support.
11088
11089 2018-06-07 Paul Koning <ni1d@arrl.net>
11090
11091 * compare-elim.c (try_merge_compare): Don't merge compare if
11092 address contains a side effect.
11093 (try_eliminate_compare): Likewise.
11094
11095 2018-06-07 Olga Makhotina <olga.makhotina@intel.com>
11096
11097 * config.gcc: Support "tremont".
11098 * config/i386/driver-i386.c (host_detect_local_cpu): Detect "tremont".
11099 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
11100 PROCESSOR_TREMONT.
11101 * config/i386/i386.c (m_TREMONT): Define.
11102 (processor_target_table): Add "tremont".
11103 (PTA_TREMONT): Define.
11104 (ix86_lea_outperforms): Add TARGET_TREMONT.
11105 (get_builtin_code_for_version): Handle PROCESSOR_TREMONT.
11106 (fold_builtin_cpu): Add M_INTEL_TREMONT, replace M_INTEL_GOLDMONT
11107 and M_INTEL_GOLDMONT_PLUS.
11108 (fold_builtin_cpu): Add "tremont".
11109 (ix86_add_stmt_cost): Add TARGET_TREMONT.
11110 (ix86_option_override_internal): Add "tremont".
11111 * config/i386/i386.h (processor_costs): Define TARGET_TREMONT.
11112 (processor_type): Add PROCESSOR_TREMONT.
11113 * config/i386/x86-tune.def: Add m_TREMONT.
11114 * doc/invoke.texi: Add tremont as x86 -march=/-mtune= CPU type.
11115
11116 2018-06-07 Jozef Lawrynowicz <jozef.l@mittosystems.com>
11117
11118 * config/msp430/msp430.c (msp430_mcu_name): Set the "i" in the
11119 symbol defined for msp430i* devices to be lower case.
11120
11121 2018-06-07 Richard Biener <rguenther@suse.de>
11122
11123 * graphite-sese-to-poly.c (extract_affine): Avoid unneded
11124 wrapping. Properly wrap the result of a BIT_NOT_EXPR.
11125 Properly wrap signed arithmetic if overflow wraps.
11126
11127 2018-06-07 Jakub Jelinek <jakub@redhat.com>
11128
11129 PR tree-optimization/69615
11130 * tree-ssa-reassoc.c (optimize_range_tests_var_bound): If rhs2 is lhs
11131 of a cast from a same precision integral SSA_NAME in a bb dominated
11132 by first_bb, retry with rhs2 set to the rhs1 of the cast. Don't emit
11133 cast to utype if rhs2 has already a compatible type.
11134
11135 2018-06-07 Richard Biener <rguenther@suse.de>
11136
11137 PR tree-optimization/85935
11138 * graphite-scop-detection.c (find_params_in_bb): Analyze
11139 condition operands with respect to the correct loop. Assert
11140 the analysis doesn't fail.
11141
11142 2018-06-04 Carl Love <cel@us.ibm.com>
11143
11144 * config/rs6000/vsx.md (first_match_index_<mode>): Calculate index
11145 using natural element order. Use gen_lshrsi3 instead of gen_ashrsi3
11146 as it is slightly cheaper.
11147 (first_match_or_eos_index_<mode>):
11148 Calculate index using natural element order.
11149 (first_match_index_<mode>):
11150 Calculate index using natural element order.
11151 (first_match_or_eos_index_<mode>):
11152 Calculate index using natural order.
11153 (define_insn vclzlsbb): Change to define_insn vclzlsbb_<mode>.
11154 for BE and LE modes.
11155 * config/rs6000/rs6000-c.c: Rename P9V_BUILTIN_VCLZLSBB,
11156 P9V_BUILTIN_VCLZLSBB_V16QI.
11157 * config/rs6000/rs6000-builtin.def: Make VCLZLSBB mode
11158 specific.
11159
11160 2018-06-06 Kelvin Nilsen <kelvin@gcc.gnu.org>
11161
11162 * doc/extend.texi (PowerPC AltiVec Built-in Functions): Adjust
11163 indentation and line wrap for many prototypes. Add missing
11164 @smallexample directives around block of prototypes for vec_xl and
11165 vec_xst.
11166
11167 2018-06-05 Michael Meissner <meissner@linux.ibm.com>
11168
11169 * config/rs6000/rs6000.c (rs6000_passes_ieee128): New boolean to
11170 track if we pass or return IEEE 128-bit floating point.
11171 (ieee128_mangling_gcc_8_1): New boolean to say whether to generate
11172 C++ mangling that is compatible with GCC 8.1.
11173 (TARGET_ASM_GLOBALIZE_DECL_NAME): Override target hook.
11174 (init_cumulative_args): Note if we pass or return IEEE 128-bit
11175 floating point types.
11176 (rs6000_function_arg_advance_1): Likewise.
11177 (rs6000_mangle_type): Optionally generate mangled names that match
11178 what GCC 8.1 generated for IEEE 128-bit floating point types.
11179 (rs6000_globalize_decl_name): If we have an external function that
11180 passes or returns IEEE 128-bit types, generate a weak reference
11181 from the mangled name used in GCC 8.1 to the current mangled
11182 name.
11183 (rs6000_init_builtins): Make __ibm128 use the long double type if
11184 long double is IBM extended double. Make __float128 use the long
11185 double type if long double is IEEE 128-bit.
11186
11187 PR target/85657
11188 * config/rs6000/rs6000-builtin.def (BU_IBM128_2): New helper
11189 macro for __ibm128 built-in functions.
11190 (PACK_IF): Add __ibm128 pack/unpack functions.
11191 (UNPACK_IF): Likewise.
11192 * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Do not
11193 enable long double built-in functions if long double is IEEE
11194 128-bit floating point.
11195 (rs6000_invalid_builtin): Update long double built-in function
11196 error message.
11197 (rs6000_expand_builtin): For PACK_IF and UNPACK_IF built-in
11198 functions, adjust the built-in function to use the long double
11199 built-in function if __ibm128 and long double are the same type.
11200 * doc/extend.texi (PowerPC builtins): Update documention for
11201 __builtin_{,un}pack_longdouble. Add documentation for
11202 __builtin_{,un}pack_ibm128.
11203
11204 2018-06-06 Jim Wilson <jimw@sifive.com>
11205
11206 * config/riscv/riscv.c (enum riscv_privilege_levels): New.
11207 (struct machine_function): New field interrupt_mode.
11208 (riscv_handle_type_attribute): New function. Add forward declaration.
11209 (riscv_attribute_table) <interrupt>: Use riscv_handle_type_attribute.
11210 (riscv_expand_epilogue): Check interrupt_mode field.
11211 (riscv_set_current_function): Check interrupt attribute args and
11212 set interrupt_mode field.
11213 * config/riscv/riscv.md (UNSPECV_SRET, UNSPECV_URET): New.
11214 (riscv_sret, riscv_uret): New.
11215 * doc/extend.texi (RISC-V Function Attributes) <interrupt>: Document
11216 new arguments to interrupt attribute.
11217
11218 2018-06-06 Peter Bergner <bergner@vnet.ibm.com>
11219
11220 PR target/63177
11221 * /config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for -mpower9.
11222 Don't handle -mcpu=power8 if -mpower9-vector is also used.
11223
11224 2018-06-06 Kelvin Nilsen <kelvin@gcc.gnu.org>
11225
11226 * config/rs6000/rs6000-builtin.def (VSX_BUILTIN_VEC_LD,
11227 VSX_BUILTIN_VEC_ST): Add comment to explain non-traditional uses.
11228 * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Remove
11229 several redundant entries.
11230
11231 2018-06-06 David Malcolm <dmalcolm@redhat.com>
11232
11233 * config/i386/i386-protos.h (ix86_expand_call): Strengthen return
11234 type from "rtx" to "rtx_insn *".
11235 * config/i386/i386.c (ix86_expand_split_stack_prologue): Likewise
11236 for local "call_insn", removing cast.
11237 (ix86_expand_call): Likewise, introducing a "call_insn" local.
11238
11239 2018-06-06 Eric Botcazou <ebotcazou@adacore.com>
11240
11241 PR tree-optimization/86066
11242 * gimple-ssa-store-merging.c (process_store): Do not bypass BIT_NOT_EXPR
11243 for BIT_INSERT_EXPR stores.
11244
11245 2018-06-06 Richard Biener <rguenther@suse.de>
11246
11247 PR tree-optimization/86062
11248 * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle arbitrary
11249 component refs ontop
11250 of to be offsetted base.
11251
11252 2018-06-06 Jozef Lawrynowicz <jozef.l@mittosystems.com>
11253
11254 * config/msp430/msp430.c (msp430_attr): Allow interrupt handlers
11255 to be static and remove check on interrupt attribute name.
11256
11257 2018-06-05 Kelvin Nilsen <kelvin@gcc.gnu.org>
11258
11259 * doc/extend.texi (PowerPC AltiVec Built-in Functions): Remove
11260 volatile qualifier from vec_lvsl and vec_lvsr argument prototypes.
11261
11262 2018-06-05 Steve Ellcey <sellcey@cavium.com>
11263
11264 PR target/79924
11265 * config/aarch64/aarch64-protos.h (aarch64_err_no_fpadvsimd): Remove
11266 second argument.
11267 * config/aarch64/aarch64-protos..c (aarch64_err_no_fpadvsimd):
11268 Remove second argument, change how error is called.
11269 (aarch64_layout_arg): Remove second argument from
11270 aarch64_err_no_fpadvsimd call.
11271 (aarch64_init_cumulative_args): Ditto.
11272 (aarch64_gimplify_va_arg_expr): Ditto.
11273 * config/aarch64/aarch64.md (mov<mode>): Ditto.
11274
11275 2018-06-05 Uros Bizjak <ubizjak@gmail.com>
11276
11277 * config/i386/i386.md (simple_return_indirect_internal): New expander.
11278 (*simple_return_indirect_internal<mode>): Rename from
11279 simple_return_indirect_internal. Use W mode iterator.
11280 (rstorssp): New expander.
11281 (*rstorssp<mode>): Rename from rstorssp. Use P mode iterator.
11282 (clrssbsy): New expander.
11283 (*clrssbsy<mode>): Rename from clrssbsy. Use P mode iterator.
11284
11285 2018-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
11286
11287 * config/arm/arm_cmse.h (cmse_nsfptr_create): Change typeof to
11288 __typeof__.
11289 (cmse_check_pointed_object): Likewise.
11290
11291 2018-06-05 Martin Liska <mliska@suse.cz>
11292
11293 PR gcov-profile/47618
11294 * doc/invoke.texi: Document how -fprofile-dir format
11295 is extended.
11296
11297 2018-06-05 Richard Biener <rguenther@suse.de>
11298
11299 * tree-cfgcleanup.c (cleanup_control_flow_pre): For edge
11300 removal pretend DOM info isn't available so we do not update
11301 it and only remove edges, not dominated blocks. Actually free
11302 DOM info in case we removed something. Remove unreachable blocks.
11303 (mfb_keep_latches): Work with either DOM info or marked backedges.
11304 (cleanup_tree_cfg_noloop): Do not remove unreachable blocks
11305 first. Mark backedges if DOM info isn't available.
11306 (Re-)compute DOM info after cleanup_control_flow_pre.
11307
11308 2018-06-05 Richard Biener <rguenther@suse.de>
11309
11310 * tree-cfg.c (struct locus_discrim_map): Store line, not location.
11311 (locus_discrim_hasher::hash): Adjust.
11312 (locus_discrim_hasher::equal): Likewise.
11313 (next_discriminator_for_locus): Work on line directly.
11314 (same_line_p): Pass in expanded locus1 as well.
11315 (assign_discriminators): Avoid redundant location expansions.
11316
11317 2018-06-05 Richard Biener <rguenther@suse.de>
11318
11319 PR tree-optimization/86046
11320 * tree-ssa.c (maybe_optimize_var): Clear DECL_GIMPLE_REG_P
11321 if required after clearing TREE_ADDRESSABLE.
11322
11323 2018-06-05 Richard Biener <rguenther@suse.de>
11324
11325 PR tree-optimization/86047
11326 * tree-ssa-loop.c (for_each_index): Glob handling of all
11327 decls and constants and really handle all of them.
11328
11329 2018-06-05 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11330
11331 PR target/81497
11332 * config/arm/arm-builtins.c (arm_type_qualifiers): Add
11333 qualifier_void_pointer and qualifier_const_void_pointer.
11334 (arm_ldc_qualifiers, arm_stc_qualifiers): Use the above.
11335 (arm_init_builtins): Handle the above.
11336 * config/arm/arm_acle.h (__arm_cdp, __arm_ldc, __arm_ldcl, __arm_stc,
11337 __arm_stcl, __arm_mcr, __arm_cdp2, __arm_ldc2, __arm_ldcl2, __arm_stc2,
11338 __arm_stcl2,__arm_mcr2, __arm_mcrr, __arm_mcrr2): Remove return for
11339 void intrinsics.
11340
11341 2018-06-05 Martin Liska <mliska@suse.cz>
11342
11343 * auto-profile.c (read_autofdo_file): Do not use
11344 gcov_ctr_summary struct.
11345 (afdo_callsite_hot_enough_for_early_inline): Likewise.
11346 * coverage.c (struct counts_entry): Likewise.
11347 (read_counts_file): Read just single summary entry.
11348 (get_coverage_counts): Use gcov_summary struct.
11349 * coverage.h (get_coverage_counts): Likewise.
11350 * gcov-dump.c (dump_working_sets): Likewise.
11351 (tag_summary): Dump just single summary.
11352 * gcov-io.c (gcov_write_summary): Write just histogram
11353 summary.
11354 (gcov_read_summary): Read just single summary.
11355 (compute_working_sets): Use gcov_summary struct.
11356 * gcov-io.h (GCOV_TAG_SUMMARY_LENGTH): Remove usage
11357 of GCOV_COUNTERS_SUMMABLE.
11358 (GCOV_COUNTERS_SUMMABLE): Remove.
11359 (GCOV_FIRST_VALUE_COUNTER): Replace with
11360 GCOV_COUNTER_V_INTERVAL.
11361 (struct gcov_ctr_summary): Remove.
11362 (struct gcov_summary): Directly use fields of former
11363 gcov_ctr_summary.
11364 (compute_working_sets): Use gcov_summary struct.
11365 * gcov.c (read_count_file): Do not use ctrs fields.
11366 * lto-cgraph.c (merge_profile_summaries): Use gcov_summary
11367 struct.
11368 * lto-streamer.h (struct GTY): Make profile_info gcov_summary
11369 struct.
11370 * profile.c: Likewise.
11371 * profile.h: Likewise.
11372
11373 2018-06-05 Martin Liska <mliska@suse.cz>
11374
11375 PR gcov-profile/84846
11376 * gcov.c (output_lines): Print working directory only
11377 in intermediate format.
11378
11379 2018-06-05 Andreas Krebbel <krebbel@linux.ibm.com>
11380
11381 * config/s390/s390-builtin-types.def: Add void function type.
11382 * config/s390/s390-builtins.def: Use the function type for the
11383 tbeginc builtin.
11384
11385 2018-06-04 Jim Wilson <jimw@sifive.com>
11386
11387 * config/riscv/riscv-protos.h (riscv_expand_epilogue): Change bool arg
11388 to int.
11389 * config/riscv/riscv.c (riscv_for_each_saved_reg): New args epilogue
11390 and maybe_eh_return. Change regno to unsigned int. Use new args to
11391 handle EH_RETURN_DATA_REGNO registers properly.
11392 (riscv_expand_prologue): Pass new args to riscv_for_each_saved_reg.
11393 (riscv_expand_epilogue): Update comment. Change argument name and
11394 type. Update code to use new name and type. Pass new args to
11395 riscv_for_each_saved_reg. Only use EH_RETURN_STACKADJ_RTX when
11396 EXCEPTION_RETURN.
11397 * config/riscv/riscv.md (NORMAL_RETURN): New.
11398 (SIBCALL_RETURN, EXCEPTION_RETURN): New.
11399 (epilogue, sibcall_epilogue): Update riscv_expand_epilogue arg.
11400 (eh_return): Call gen_eh_return_internal and emit barrier.
11401 (eh_return_internal): Call riscv_expand_epilogue.
11402
11403 2018-06-04 Eric Botcazou <ebotcazou@adacore.com>
11404
11405 * gimple-ssa-store-merging.c (struct merged_store_group): Move up
11406 bit_insertion field and declare can_be_merged_into method.
11407 (merged_store_group::can_be_merged_into): New method.
11408 (imm_store_chain_info::coalesce_immediate): Call it to decide whether
11409 consecutive non-overlapping stores can be merged. Turn MEM_REF stores
11410 into BIT_INSERT_EXPR stores if the group contains a non-MEM_REF store.
11411
11412 2018-06-04 Richard Biener <rguenther@suse.de>
11413
11414 PR tree-optimization/85955
11415 * builtins.c (fold_builtin_sincos): Convert pointers to
11416 destination to appropriate type before dereferencing.
11417
11418 2018-06-04 Segher Boessenkool <segher@kernel.crashing.org>
11419
11420 * config/rs6000/rs6000.md (abs<mode>2 for FLOAT128): Handle IFmode.
11421
11422 2018-06-04 Richard Sandiford <richard.sandiford@linaro.org>
11423
11424 * expr.c (expand_expr_real_1): Force the operand into memory if
11425 its TYPE_MODE is BLKmode and if there is no integer mode for
11426 the number of bits being extracted.
11427
11428 2018-06-04 Jakub Jelinek <jakub@redhat.com>
11429
11430 PR target/85832
11431 PR target/86036
11432 * config/i386/sse.md (<avx512>_eq<mode>3<mask_scalar_merge_name>_1):
11433 Use vptestnm rather than vptestm in (=Yc,v,C) variant.
11434
11435 2018-06-04 Richard Biener <rguenther@suse.de>
11436
11437 * tree-cfgcleanup.c (cleanup_tree_cfg_1): Fold into...
11438 (cleanup_tree_cfg_noloop): ... single caller. Do
11439 start_recording_case_labels later.
11440
11441 2018-06-04 Sebastian Peryt <sebastian.peryt@intel.com>
11442
11443 * config/i386/cldemoteintrin.h: Change define from _X86INTRIN_H_INCLUDED
11444 to _IMMINTRIN_H_INCLUDED.
11445 * config/i386/pconfigintrin.h: Ditto.
11446 * config/i386/waitpkgintrin.h: Ditto.
11447 * config/i386/immintrin.h: Add includes for sgxintrin.h,
11448 pconfigintrin.h, waitpkgintrin.h and cldemoteintrin.h.
11449 * config/i386/x86intrin.h: Remove includes for mintrin.h, xmmintrin.h,
11450 emmintrin.h, pmmintrin.h, tmmintrin.h, smmintrin.h, wmmintrin.h,
11451 bmiintrin.h, bmi2intrin.h, lzcntintrin.h, sgxintrin.h, pconfigintrin.h,
11452 waitpkgintrin.h and cldemoteintrin.h.
11453
11454 2018-06-04 Richard Biener <rguenther@suse.de>
11455
11456 PR tree-optimization/86038
11457 * tracer.c (find_best_successor): Check probability for
11458 being initialized, bail out if not.
11459
11460 2018-06-04 Richard Earnshaw <rearnsha@arm.com>
11461
11462 PR target/86003
11463 * config/arm/arm-cpus.in (ALL_QUIRKS): Add xscale feature to the list
11464 of bits to ignore when comparing architectures.
11465
11466 2018-06-04 Jakub Jelinek <jakub@redhat.com>
11467
11468 PR tree-optimization/69615
11469 * fold-const.c (merge_ranges): If range1 is - [x, x] and x is the
11470 maximum or minimum of the type, try to merge it also as if
11471 range1 is + [-, x - 1] or + [x + 1, -].
11472
11473 PR c++/86025
11474 * tree.c (inchash::add_expr): Handle IDENTIFIER_NODE.
11475
11476 2018-06-03 Eric Botcazou <ebotcazou@adacore.com>
11477
11478 PR tree-optimization/86034
11479 * gimple-ssa-store-merging.c (output_merged_store): Convert the RHS to
11480 the unsigned bitfield type in a bit insertion sequence if it does not
11481 have a larger precision than the bitfield size.
11482 (process_store): Also bypass widening conversions for BIT_INSERT_EXPR.
11483
11484 2018-06-03 Kito Cheng <kito.cheng@gmail.com>
11485
11486 * config/nds32/nds32-peephole2.md: Add new patterns for code size.
11487
11488 2018-06-03 Chung-Ju Wu <jasonwucj@gmail.com>
11489
11490 * config/nds32/nds32-opts.h (nds32_arch_type): Add ARCH_V3J.
11491 * config/nds32/nds32.c (nds32_option_override): Consider ARCH_V3J.
11492 * config/nds32/nds32.h (TARGET_ISA_V3): Add ARCH_V3J checking.
11493 * config/nds32/nds32.opt (march): Add enum value Value(ARCH_V3J).
11494
11495 2018-06-03 Chung-Ju Wu <jasonwucj@gmail.com>
11496
11497 * common/config/nds32/nds32-common.c (nds32_option_optimization_table):
11498 Disable -fdelete-null-pointer-checks for ELF toolchain.
11499
11500 2018-06-02 Chung-Ju Wu <jasonwucj@gmail.com>
11501 Kito Cheng <kito.cheng@gmail.com>
11502
11503 * config.gcc (nds32*): Use nds32-linux.opt and nds32-elf.opt.
11504 (nds32le-*-*, nds32be-*-*): Integrate checking process.
11505 (nds32*-*-*): Add glibc and uclibc conditions.
11506 * common/config/nds32/nds32-common.c (nds32_except_unwind_info): New.
11507 (TARGET_EXCEPT_UNWIND_INFO): Define.
11508 * config/nds32/elf.h: New file.
11509 * config/nds32/linux.h: New file.
11510 * config/nds32/nds32-elf.opt: New file.
11511 * config/nds32/nds32-linux.opt: New file.
11512 * config/nds32/nds32-fp-as-gp.c
11513 (pass_nds32_fp_as_gp::gate): Consider TARGET_LINUX_ABI.
11514 * config/nds32/nds32.c (nds32_conditional_register_usage): Consider
11515 TARGET_LINUX_ABI.
11516 (nds32_asm_file_end): Ditto.
11517 (nds32_print_operand): Ditto.
11518 (nds32_insert_attributes): Ditto.
11519 (nds32_init_libfuncs): New function.
11520 (TARGET_HAVE_TLS): Define.
11521 (TARGET_INIT_LIBFUNCS): Define.
11522 * config/nds32/nds32.h (TARGET_DEFAULT_RELAX): Apply different relax
11523 spec content.
11524 (TARGET_ELF): Apply different mcmodel setting.
11525 (LINK_SPEC, LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): The content has
11526 been migrated into elf.h and linux.h files.
11527 * config/nds32/nds32.md (add_pc): Consider TARGET_LINUX_ABI.
11528 * config/nds32/nds32.opt (mvh): Consider TARGET_LINUX_ABI.
11529 (mcmodel): The content has been migrated into nds32-elf.opt and
11530 nds32-linux.opt files.
11531 * config/nds32/t-elf: New file.
11532 * config/nds32/t-linux: New file.
11533
11534 2018-06-02 Chung-Ju Wu <jasonwucj@gmail.com>
11535 Shiva Chen <shiva0217@gmail.com>
11536
11537 * config/nds32/constants.md (unspec_volatile_element): Add
11538 UNSPEC_VOLATILE_OMIT_FP_BEGIN and UNSPEC_VOLATILE_OMIT_FP_END.
11539 * config/nds32/nds32-fp-as-gp.c: New implementation of fp_as_gp
11540 optimization.
11541 * config/nds32/nds32-protos.h (nds32_naked_function_p): Declare.
11542 (make_pass_nds32_fp_as_gp): Declare.
11543 * config/nds32/nds32.c (nds32_register_passes): Add fp_as_gp as one
11544 optmization pass.
11545 (nds32_asm_function_end_prologue): Remove unused asm output.
11546 (nds32_asm_function_begin_epilogue): Remove unused asm output.
11547 (nds32_asm_file_start): Output necessary fp_as_gp information.
11548 (nds32_option_override): Adjust register usage.
11549 (nds32_expand_prologue): Consider fp_as_gp situation.
11550 (nds32_expand_prologue_v3push): Consider fp_as_gp situation.
11551 * config/nds32/nds32.md (prologue): Check fp_as_gp_p and naked_p.
11552 (epilogue): Ditto.
11553 (return): Ditto.
11554 (simple_return): Ditto.
11555 (omit_fp_begin): Output special directive for fp_as_gp.
11556 (omit_fp_end): Output special directive for fp_as_gp.
11557 * config/nds32/nds32.opt (mfp-as-gp, mno-fp-as-gp, mforce-fp-as-gp,
11558 mforbid-fp-as-gp): New options.
11559
11560 2018-06-01 Mark Wielaard <mark@klomp.org>
11561
11562 * dwarf2out.c (dwarf2out_finish): Remove generation of
11563 DW_AT_loclists_base.
11564
11565 2018-06-01 Eric Botcazou <ebotcazou@adacore.com>
11566
11567 * gimple-ssa-store-merging.c: Include gimple-fold.h.
11568 (struct store_immediate_info): Document BIT_INSERT_EXPR stores.
11569 (struct merged_store_group): Add bit_insertion field.
11570 (dump_char_array): Use standard hexadecimal format.
11571 (merged_store_group::merged_store_group): Set bit_insertion to false.
11572 (merged_store_group::apply_stores): Use optimal buffer size. Deal
11573 with BIT_INSERT_EXPR stores. Move up code updating the mask and
11574 also print the mask in the dump file.
11575 (pass_store_merging::gate): Minor tweak.
11576 (imm_store_chain_info::coalesce_immediate): Fix wrong association
11577 of stores with groups in dump. Allow coalescing of BIT_INSERT_EXPR
11578 stores with INTEGER_CST stores.
11579 (count_multiple_uses) <BIT_INSERT_EXPR>: New case.
11580 (imm_store_chain_info::output_merged_store): Add try_bitpos variable
11581 and use it throughout. Generate bit insertion sequences if need be.
11582 (pass_store_merging::process_store): Remove redundant condition.
11583 Record stores from a SSA name to a bit-field with BIT_INSERT_EXPR.
11584
11585 2018-06-01 Segher Boessenkool <segher@kernel.crashing.org>
11586
11587 * config/rs6000/rs6000.c (rs6000_mangle_type): Change the mangling of
11588 the 128-bit floating point types. Fix function comment.
11589
11590 2018-06-01 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11591
11592 * config/aarch64/aarch64-simd.md
11593 (aarch64_simd_vec_unpack<su>_lo_<mode>): Use UXTL and SXTL assembler
11594 mnemonics.
11595 (aarch64_simd_vec_unpack<su>_hi_<mode>): Use UXTL2 and SXTL2 assembler
11596 mnemonics.
11597
11598 2018-06-01 Richard Sandiford <richard.sandiford@linaro.org>
11599
11600 PR tree-optimization/85989
11601 * gimple-ssa-backprop.c (backprop::m_visited_phis): New member
11602 variable.
11603 (backprop::intersect_uses): Check it when deciding whether this
11604 is a backedge reference.
11605 (backprop::process_block): Add each phi to m_visited_phis
11606 after visiting it, then clear it at the end.
11607
11608 2018-06-01 Richard Biener <rguenther@suse.de>
11609
11610 * tree-vectorizer.h (vect_dr_stmt): New function.
11611 (vect_get_load_cost): Adjust.
11612 (vect_get_store_cost): Likewise.
11613 * tree-vect-data-refs.c (vect_analyze_data_ref_dependence):
11614 Use vect_dr_stmt instead of DR_SMTT.
11615 (vect_record_base_alignments): Likewise.
11616 (vect_calculate_target_alignment): Likewise.
11617 (vect_compute_data_ref_alignment): Likewise and make static.
11618 (vect_update_misalignment_for_peel): Likewise.
11619 (vect_verify_datarefs_alignment): Likewise.
11620 (vector_alignment_reachable_p): Likewise.
11621 (vect_get_data_access_cost): Likewise. Pass down
11622 vinfo to vect_get_load_cost/vect_get_store_cost instead of DR.
11623 (vect_get_peeling_costs_all_drs): Likewise.
11624 (vect_peeling_hash_get_lowest_cost): Likewise.
11625 (vect_enhance_data_refs_alignment): Likewise.
11626 (vect_find_same_alignment_drs): Likewise.
11627 (vect_analyze_data_refs_alignment): Likewise.
11628 (vect_analyze_group_access_1): Likewise.
11629 (vect_analyze_group_access): Likewise.
11630 (vect_analyze_data_ref_access): Likewise.
11631 (vect_analyze_data_ref_accesses): Likewise.
11632 (vect_vfa_segment_size): Likewise.
11633 (vect_small_gap_p): Likewise.
11634 (vectorizable_with_step_bound_p): Likewise.
11635 (vect_prune_runtime_alias_test_list): Likewise.
11636 (vect_analyze_data_refs): Likewise.
11637 (vect_supportable_dr_alignment): Likewise.
11638 * tree-vect-loop-manip.c (get_misalign_in_elems): Likewise.
11639 (vect_gen_prolog_loop_niters): Likewise.
11640 * tree-vect-loop.c (vect_analyze_loop_2): Likewise.
11641 * tree-vect-patterns.c (vect_recog_bool_pattern): Do not
11642 modify DR_STMT.
11643 (vect_recog_mask_conversion_pattern): Likewise.
11644 (vect_try_gather_scatter_pattern): Likewise.
11645 * tree-vect-stmts.c (vect_model_store_cost): Pass stmt_info
11646 to vect_get_store_cost.
11647 (vect_get_store_cost): Get stmt_info instead of DR.
11648 (vect_model_load_cost): Pass stmt_info to vect_get_load_cost.
11649 (vect_get_load_cost): Get stmt_info instead of DR.
11650
11651 2018-06-01 Richard Biener <rguenther@suse.de>
11652
11653 PR middle-end/86017
11654 * gimple-fold.c (var_decl_component_p): Also allow offsetted
11655 vars wrapped in MEM_REFs.
11656
11657 2018-06-01 Richard Sandiford <richard.sandiford@linaro.org>
11658
11659 * config/aarch64/aarch64.c (aarch64_ira_change_pseudo_allocno_class):
11660 Fix subreg tests so that we only return a choice between
11661 GENERAL_REGS and FP_REGS if the original classes included both.
11662
11663 2018-06-01 Richard Biener <rguenther@suse.de>
11664
11665 PR ipa/85960
11666 * tree-ssa-structalias.c (get_function_part_constraint):
11667 Handle NULL fi->decl.
11668 (find_func_aliases_for_call): Properly handle indirect
11669 fi from direct call.
11670 (find_func_clobbers): Likewise.
11671 (ipa_pta_execute): Likewise.
11672 (create_variable_info_for): For functions that are ifunc_resolver
11673 resolve to a varinfo that contains the result of the resolver call.
11674 (associate_varinfo_to_alias): Do not treat ifunc resolvers as
11675 aliases.
11676
11677 2018-05-31 Michael Collison <michael.collison@arm.com>
11678
11679 * config/aarch64/aarch64.md:
11680 (*fix_to_zero_extenddfdi2): New pattern.
11681 * gcc.target/aarch64/fix_extend1.c: New testcase.
11682
11683 2018-05-31 Qing Zhao <qing.zhao@oracle.com>
11684
11685 PR middle-end/78809
11686 PR middle-end/83026
11687 * builtins.c (expand_builtin): Add the handling of BUILT_IN_STRCMP_EQ
11688 and BUILT_IN_STRNCMP_EQ.
11689 * builtins.def: Add new builtins BUILT_IN_STRCMP_EQ and
11690 BUILT_IN_STRNCMP_EQ.
11691 * gimple-fold.c (gimple_fold_builtin_string_compare): Add the
11692 handling of BUILTIN_IN_STRCMP_EQ and BUILT_IN_STRNCMP_EQ.
11693 (gimple_fold_builtin): Likewise.
11694 * tree-ssa-strlen.c (compute_string_length): New function.
11695 (determine_min_obsize): New function.
11696 (handle_builtin_string_cmp): New function to handle calls to
11697 string compare functions.
11698 (strlen_optimize_stmt): Add handling to builtin string compare
11699 calls.
11700 * tree-ssa-structalias.c (find_func_aliases_for_builtin_call):
11701 Add the handling of BUILT_IN_STRCMP_EQ and BUILT_IN_STRNCMP_EQ.
11702 * tree.c (build_common_builtin_nodes): Add new defines of
11703 BUILT_IN_STRNCMP_EQ and BUILT_IN_STRCMP_EQ.
11704
11705 2018-05-31 Jakub Jelinek <jakub@redhat.com>
11706
11707 PR target/85984
11708 * bb-reorder.c (pass_partition_blocks::gate): Return false for
11709 functions with naked attribute.
11710
11711 2018-05-31 Uros Bizjak <ubizjak@gmail.com>
11712
11713 * config/i386/sse.md (avx_vec_concat<mode>):
11714 Substitute concat_tg_mode mode attribute with xtg_mode.
11715 (<mask_codefor>avx512dq_broadcast<mode><mask_name>_1): Ditto.
11716 (concat_tg_mode): Remove mode attribute.
11717
11718 2018-05-31 Martin Sebor <msebor@redhat.com>
11719
11720 PR c/82063
11721 * calls.c (alloc_max_size): Correct a logic error/typo.
11722 Treat excessive arguments as infinite. Warn for invalid arguments.
11723 * doc/invoke.texi (-Walloc-size-larger-than): Update.
11724
11725 2018-05-31 H.J. Lu <hongjiu.lu@intel.com>
11726
11727 PR target/85829
11728 * config/i386/x86-tune.def: Re-enable partial_reg_dependency
11729 and movx for Haswell.
11730
11731 2018-05-31 Chung-Lin Tang <cltang@codesourcery.com>
11732 Cesar Philippidis <cesar@codesourcery.com>
11733
11734 PR middle-end/85879
11735 * gimplify.c (gimplify_adjust_omp_clauses): Add 'remove = true'
11736 when emitting error on private/firstprivate reductions.
11737 * omp-low.c (lower_omp_target): Avoid reference-type processing
11738 on pointers for firstprivate clause.
11739
11740 2018-05-31 Sameera Deshpande <sameera.deshpande@linaro.org>
11741
11742 * config/aarch64/aarch64-simd-builtins.def (ld1x3): New.
11743 (st1x2): Likewise.
11744 (st1x3): Likewise.
11745 * config/aarch64/aarch64-simd.md
11746 (aarch64_ld1x3<VALLDIF:mode>): New pattern.
11747 (aarch64_ld1_x3_<mode>): Likewise
11748 (aarch64_st1x2<VALLDIF:mode>): Likewise
11749 (aarch64_st1_x2_<mode>): Likewise
11750 (aarch64_st1x3<VALLDIF:mode>): Likewise
11751 (aarch64_st1_x3_<mode>): Likewise
11752 * config/aarch64/arm_neon.h (vld1_u8_x3): New function.
11753 (vld1_s8_x3): Likewise.
11754 (vld1_u16_x3): Likewise.
11755 (vld1_s16_x3): Likewise.
11756 (vld1_u32_x3): Likewise.
11757 (vld1_s32_x3): Likewise.
11758 (vld1_u64_x3): Likewise.
11759 (vld1_s64_x3): Likewise.
11760 (vld1_f16_x3): Likewise.
11761 (vld1_f32_x3): Likewise.
11762 (vld1_f64_x3): Likewise.
11763 (vld1_p8_x3): Likewise.
11764 (vld1_p16_x3): Likewise.
11765 (vld1_p64_x3): Likewise.
11766 (vld1q_u8_x3): Likewise.
11767 (vld1q_s8_x3): Likewise.
11768 (vld1q_u16_x3): Likewise.
11769 (vld1q_s16_x3): Likewise.
11770 (vld1q_u32_x3): Likewise.
11771 (vld1q_s32_x3): Likewise.
11772 (vld1q_u64_x3): Likewise.
11773 (vld1q_s64_x3): Likewise.
11774 (vld1q_f16_x3): Likewise.
11775 (vld1q_f32_x3): Likewise.
11776 (vld1q_f64_x3): Likewise.
11777 (vld1q_p8_x3): Likewise.
11778 (vld1q_p16_x3): Likewise.
11779 (vld1q_p64_x3): Likewise.
11780 (vst1_s64_x2): Likewise.
11781 (vst1_u64_x2): Likewise.
11782 (vst1_f64_x2): Likewise.
11783 (vst1_s8_x2): Likewise.
11784 (vst1_p8_x2): Likewise.
11785 (vst1_s16_x2): Likewise.
11786 (vst1_p16_x2): Likewise.
11787 (vst1_s32_x2): Likewise.
11788 (vst1_u8_x2): Likewise.
11789 (vst1_u16_x2): Likewise.
11790 (vst1_u32_x2): Likewise.
11791 (vst1_f16_x2): Likewise.
11792 (vst1_f32_x2): Likewise.
11793 (vst1_p64_x2): Likewise.
11794 (vst1q_s8_x2): Likewise.
11795 (vst1q_p8_x2): Likewise.
11796 (vst1q_s16_x2): Likewise.
11797 (vst1q_p16_x2): Likewise.
11798 (vst1q_s32_x2): Likewise.
11799 (vst1q_s64_x2): Likewise.
11800 (vst1q_u8_x2): Likewise.
11801 (vst1q_u16_x2): Likewise.
11802 (vst1q_u32_x2): Likewise.
11803 (vst1q_u64_x2): Likewise.
11804 (vst1q_f16_x2): Likewise.
11805 (vst1q_f32_x2): Likewise.
11806 (vst1q_f64_x2): Likewise.
11807 (vst1q_p64_x2): Likewise.
11808 (vst1_s64_x3): Likewise.
11809 (vst1_u64_x3): Likewise.
11810 (vst1_f64_x3): Likewise.
11811 (vst1_s8_x3): Likewise.
11812 (vst1_p8_x3): Likewise.
11813 (vst1_s16_x3): Likewise.
11814 (vst1_p16_x3): Likewise.
11815 (vst1_s32_x3): Likewise.
11816 (vst1_u8_x3): Likewise.
11817 (vst1_u16_x3): Likewise.
11818 (vst1_u32_x3): Likewise.
11819 (vst1_f16_x3): Likewise.
11820 (vst1_f32_x3): Likewise.
11821 (vst1_p64_x3): Likewise.
11822 (vst1q_s8_x3): Likewise.
11823 (vst1q_p8_x3): Likewise.
11824 (vst1q_s16_x3): Likewise.
11825 (vst1q_p16_x3): Likewise.
11826 (vst1q_s32_x3): Likewise.
11827 (vst1q_s64_x3): Likewise.
11828 (vst1q_u8_x3): Likewise.
11829 (vst1q_u16_x3): Likewise.
11830 (vst1q_u32_x3): Likewise.
11831 (vst1q_u64_x3): Likewise.
11832 (vst1q_f16_x3): Likewise.
11833 (vst1q_f32_x3): Likewise.
11834 (vst1q_f64_x3): Likewise.
11835 (vst1q_p64_x3): Likewise.
11836
11837 2018-05-30 Jozef Lawrynowicz <jozef.l@mittosystems.com>
11838
11839 * config/msp430/msp430.c (msp430_output_labelref): Prepend
11840 user_label_prefix to name.
11841
11842 * tree-core.h: Update comment about the format of NAME string
11843 passed to handler in attribute_spec.
11844
11845 * config/msp430/msp430.md: Remove erroneous subreg expression from
11846 zero_extendqisi2 insn pattern. Remove msp430x ISA restriction on
11847 zero_extend{q,h}isi2.
11848
11849 2018-05-30 Borislav Petkov <bp@suse.de>
11850
11851 * doc/extend.texi: Document some architecture specific
11852 constraints and sort entries.
11853
11854 2018-05-30 Martin Sebor <msebor@redhat.com>
11855
11856 PR middle-end/85369
11857 * builtins.c (expand_builtin_stpcpy_1): New function.
11858 (expand_builtin_stpcpy): Call it, and call maybe_warn_nonstring_arg
11859 only if the former succeeds.
11860
11861 2018-05-31 Sameera Deshpande <sameera.deshpande@linaro.org>
11862
11863 * config/aarch64/aarch64-cores.def (saphira) : Add support for ARMv8.4
11864 in saphira.
11865
11866 2018-05-30 Jan Hubicka <hubicka@ucw.cz>
11867
11868 * doc/invoke.texi (-flinker-output): Document
11869
11870 2018-05-30 Jan Hubicka <hubicka@ucw.cz>
11871
11872 * passes.c (ipa_write_summaries): Only modify statements if body
11873 is in memory.
11874 * cgraphunit.c (ipa_passes): Also produce intermeidate code when
11875 incrementally linking.
11876 (ipa_passes): Likewise.
11877 * lto-cgraph.c (lto_output_node): When incrementally linking do not
11878 pass down resolution info.
11879 * common.opt (flag_incremental_link): Update info.
11880 * gcc.c (plugin specs): Turn flinker-output=* to
11881 -plugin-opt=-linker-output-known
11882 * toplev.c (compile_file): Also cut compilation when doing incremental
11883 link.
11884 * flag-types. (enum lto_partition_model): Add
11885 LTO_LINKER_OUTPUT_NOLTOREL.
11886 (invoke.texi): Add -flinker-output docs.
11887 * ipa.c (symbol_table::remove_unreachable_nodes): Handle LTO incremental
11888 link same way as WPA; do not stream in dead initializers.
11889
11890 * dwarf2out.c (dwarf2out_die_ref_for_decl,
11891 darf2out_register_external_decl): Support incremental link.
11892
11893 2018-05-30 Jan Hubicka <hubicka@ucw.cz>
11894
11895 * lto-opts.c (lto_write_options): Skip OPT_dumpdir, OPT_fresolution_.
11896
11897 2018-05-30 Jan Hubicka <hubicka@ucw.cz>
11898
11899 * lto-wrapper.c (debug_objcopy): Add rename parameter; pass
11900 it down to simple_object_copy_lto_debug_sections.
11901 (run_gcc): Determine incremental LTO link time and configure
11902 lto1 into non-wpa mode, disable renaming of debug sections.
11903
11904 2018-05-30 Kelvin Nilsen <kelvin@gcc.gnu.org>
11905
11906 * doc/extend.texi (PowerPC AltiVec Built-in Functions): Remove
11907 descriptions of various incorrectly documented functions.
11908
11909 2018-05-30 Andre Vieira <andre.simoesdiasvieira@arm.com>
11910
11911 Revert:
11912 * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): Make
11913 address check not strict.
11914
11915 2018-05-30 Richard Biener <rguenther@suse.de>
11916
11917 PR tree-optimization/85964
11918 * tracer.c (better_p): Drop initialized count check, we only
11919 call the function with initialized counts now.
11920 (find_best_successor): Do find a best edge if one
11921 has uninitialized count.
11922 (find_best_predecessor): Likewise. Do BB frequency check only
11923 if count is initialized.
11924
11925 2017-05-30 Jackson Woodruff <jackson.woodruff@arm.com>
11926
11927 * config/aarch64/aarch64.c (aarch64_host_wide_int_compare): New.
11928 (aarch64_ldrstr_offset_compare): New.
11929 (aarch64_operands_adjust_ok_for_ldpstp): Update to consider all
11930 load/store orderings.
11931 (aarch64_gen_adjusted_ldpstp): Likewise.
11932
11933 2018-05-30 Wilco Dijkstra <wdijkstr@arm.com>
11934
11935 * config/aarch64/aarch64.c (aarch64_ira_change_pseudo_allocno_class):
11936 Check for subset of GENERAL_REGS and FP_REGS.
11937 * config/aarch64/aarch64-simd.md (aarch64_get_lane): Increase cost of
11938 r=w alternative.
11939
11940 2018-05-30 Richard Sandiford <richard.sandiford@linaro.org>
11941
11942 * alias.c (adjust_offset_for_component_ref): Use poly_int_tree_p
11943 and wi::to_poly_offset. Add the current offset and then check
11944 whether the sum fits, rather than using an unchecked addition of
11945 a checked term. Check for a shwi rather than a uhwi.
11946 * expr.c (get_bit_range): Use tree_to_poly_uint64.
11947 (store_constructor): Use poly_int_tree_p.
11948 (expand_expr_real_1): Likewise.
11949 * function.c (assign_temp): Likewise.
11950 * fold-const.c (const_binop): Use poly_int_tree_p and
11951 wi::to_poly_offset.
11952 (fold_indirect_ref_1): Likewise. Use multiple_p to attempt an exact
11953 division.
11954 * ipa-icf-gimple.c (func_checker::compare_operand): Use
11955 to_poly_offset for MEM offsets.
11956 * ipa-icf.c (sem_variable::equals): Likewise.
11957 * stor-layout.c (compute_record_mode): Use poly_int_tree_p.
11958 * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): Use
11959 wi::to_poly_offset for BIT_FIELD_REF offsets.
11960 (vn_reference_maybe_forwprop_address): Use poly_int_tree_p and
11961 wi::to_poly_offset.
11962 * var-tracking.c (emit_note_insn_var_location): Use
11963 tree_to_poly_uint64.
11964
11965 2018-05-29 Jim Wilson <jimw@sifive.com>
11966
11967 * config/riscv/riscv.c (riscv_interrupt_type): Fix comment typo.
11968
11969 2018-05-29 Uros Bizjak <ubizjak@gmail.com>
11970
11971 PR target/85950
11972 * config/i386/i386.md (l<rounding_insn><MODEF:mode><SWI48:mode>2):
11973 Enable for TARGET_SSE4_1 and generate rounds{s,d} and cvtts{s,d}2si{,q}
11974 sequence.
11975 (sse4_1_round<mode>2): Use nonimmediate_operand
11976 for operand 1 predicate.
11977
11978 2018-05-29 Martin Sebor <msebor@redhat.com>
11979 Richard Biener <rguenther@suse.de>
11980
11981 PR testsuite/85888
11982 * calls.c (get_size_range): Call determine_value_range instead
11983 of get_value_range..
11984 * tree-vrp.h (determine_value_range): Declared new function.
11985 * tree-vrp.c (determine_value_range_1, determine_value_range): New.
11986
11987 2018-05-29 Richard Biener <rguenther@suse.de>
11988
11989 * tree-vect-data-refs.c (vect_preserves_scalar_order_p): Make
11990 sure to use non-pattern stmts for get_earlier_stmt arguments.
11991 * tree-vectorizer.h (get_earlier_stmt): Assert we do not get
11992 called on pattern stmts.
11993 (get_later_stmt): Likewise.
11994
11995 2018-05-29 Martin Liska <mliska@suse.cz>
11996
11997 PR gcov-profile/85759
11998 * doc/gcov.texi: Document GCOV_ERROR_FILE and GCOV_EXIT_AT_ERROR
11999 env variables.
12000
12001 2018-05-29 Jakub Jelinek <jakub@redhat.com>
12002
12003 * tree-cfg.c (verify_gimple_assign_unary): Add checking for
12004 VEC_UNPACK_*_EXPR.
12005 (verify_gimple_assign_binary): Check TYPE_VECTOR_SUBPARTS for
12006 VEC_PACK_*_EXPR.
12007
12008 PR target/85918
12009 * tree.def (VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR,
12010 VEC_PACK_FLOAT_EXPR): New tree codes.
12011 * tree-pretty-print.c (op_code_prio): Handle
12012 VEC_UNPACK_FIX_TRUNC_HI_EXPR and VEC_UNPACK_FIX_TRUNC_LO_EXPR.
12013 (dump_generic_node): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR,
12014 VEC_UNPACK_FIX_TRUNC_LO_EXPR and VEC_PACK_FLOAT_EXPR.
12015 * tree-inline.c (estimate_operator_cost): Likewise.
12016 * gimple-pretty-print.c (dump_binary_rhs): Handle VEC_PACK_FLOAT_EXPR.
12017 * fold-const.c (const_binop): Likewise.
12018 (const_unop): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR and
12019 VEC_UNPACK_FIX_TRUNC_LO_EXPR.
12020 * tree-cfg.c (verify_gimple_assign_unary): Likewise.
12021 (verify_gimple_assign_binary): Handle VEC_PACK_FLOAT_EXPR.
12022 * cfgexpand.c (expand_debug_expr): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR,
12023 VEC_UNPACK_FIX_TRUNC_LO_EXPR and VEC_PACK_FLOAT_EXPR.
12024 * expr.c (expand_expr_real_2): Likewise.
12025 * optabs.def (vec_packs_float_optab, vec_packu_float_optab,
12026 vec_unpack_sfix_trunc_hi_optab, vec_unpack_sfix_trunc_lo_optab,
12027 vec_unpack_ufix_trunc_hi_optab, vec_unpack_ufix_trunc_lo_optab): New
12028 optabs.
12029 * optabs.c (expand_widen_pattern_expr): For
12030 VEC_UNPACK_FIX_TRUNC_HI_EXPR and VEC_UNPACK_FIX_TRUNC_LO_EXPR use
12031 sign from result type rather than operand's type.
12032 (expand_binop_directly): For vec_packu_float_optab and
12033 vec_packs_float_optab allow result type to be different from operand's
12034 type.
12035 * optabs-tree.c (optab_for_tree_code): Handle
12036 VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR and
12037 VEC_PACK_FLOAT_EXPR. Formatting fixes.
12038 * tree-vect-generic.c (expand_vector_operations_1): Handle
12039 VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR and
12040 VEC_PACK_FLOAT_EXPR.
12041 * tree-vect-stmts.c (supportable_widening_operation): Handle
12042 FIX_TRUNC_EXPR.
12043 (supportable_narrowing_operation): Handle FLOAT_EXPR.
12044 * config/i386/i386.md (fixprefix, floatprefix): New code attributes.
12045 * config/i386/sse.md (*float<floatunssuffix>v2div2sf2): Rename to ...
12046 (float<floatunssuffix>v2div2sf2): ... this. Formatting fix.
12047 (vpckfloat_concat_mode, vpckfloat_temp_mode, vpckfloat_op_mode): New
12048 mode attributes.
12049 (vec_pack<floatprefix>_float_<mode>): New expander.
12050 (vunpckfixt_mode, vunpckfixt_model, vunpckfixt_extract_mode): New mode
12051 attributes.
12052 (vec_unpack_<fixprefix>fix_trunc_lo_<mode>,
12053 vec_unpack_<fixprefix>fix_trunc_hi_<mode>): New expanders.
12054 * doc/md.texi (vec_packs_float_@var{m}, vec_packu_float_@var{m},
12055 vec_unpack_sfix_trunc_hi_@var{m}, vec_unpack_sfix_trunc_lo_@var{m},
12056 vec_unpack_ufix_trunc_hi_@var{m}, vec_unpack_ufix_trunc_lo_@var{m}):
12057 Document.
12058 * doc/generic.texi (VEC_UNPACK_FLOAT_HI_EXPR,
12059 VEC_UNPACK_FLOAT_LO_EXPR): Fix pasto in description.
12060 (VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR,
12061 VEC_PACK_FLOAT_EXPR): Document.
12062
12063 2018-05-29 Richard Biener <rguenther@suse.de>
12064
12065 * tree-vectorizer.h (struct vec_info): Add stmt_vec_infos
12066 member.
12067 (stmt_vec_info_vec): Make pointer.
12068 (init_stmt_vec_info_vec): Remove.
12069 (free_stmt_vec_info_vec): Likewise.
12070 (set_stmt_vec_info_vec): New function.
12071 (free_stmt_vec_infos): Likewise.
12072 (vinfo_for_stmt): Adjust for stmt_vec_info_vec indirection.
12073 (set_vinfo_for_stmt): Likewise.
12074 (get_earlier_stmt): Likewise.
12075 (get_later_stmt): Likewise.
12076 * tree-vectorizer.c (stmt_vec_info_vec): Make pointer.
12077 (vec_info::vec_info): Allocate stmt_vec_infos and set the global.
12078 (vec_info::~vec_info): Free stmt_vec_infos.
12079 (vectorize_loops): Set the global stmt_vec_info_vec to NULL.
12080 Remove old init_stmt_vec_info_vec/free_stmt_vec_info_vec calls.
12081 (pass_slp_vectorize::execute): Likewise.
12082 * tree-vect-stmts.c (init_stmt_vec_info_vec): Remove.
12083 (free_stmt_vec_info_vec): Likewise.
12084 (set_stmt_vec_info_vec): New function.
12085 (free_stmt_vec_infos): Likewise.
12086 * tree-vect-loop.c (_loop_vec_info::~_loop_vec_info): Set
12087 the global stmt_vec_info_vec.
12088 * tree-parloops.c (gather_scalar_reductions): Use
12089 set_stmt_vec_info_vec/free_stmt_vec_infos and maintain a local
12090 vector.
12091
12092 2018-05-29 Richard Biener <rguenther@suse.de>
12093
12094 * dominance.c (iterate_fix_dominators): Push/pop TV_DOMINANCE.
12095
12096 2018-05-29 Martin Liska <mliska@suse.cz>
12097 David Malcolm <dmalcolm@redhat.com>
12098
12099 * vec.c (test_reverse): New.
12100 (vec_c_tests): Add new test.
12101 * vec.h (vl_ptr>::reverse): New function.
12102
12103 2018-05-29 Gerald Pfeifer <gerald@pfeifer.com>
12104
12105 * config.gcc: Identify FreeBSD 3.x and 4.x as unsupported.
12106
12107 * config/freebsd-spec.h (FBSD_LIB_SPEC): Only consider FreeBSD 5
12108 and later.
12109
12110 2018-05-28 Bernd Edlinger <bernd.edlinger@hotmail.de>
12111
12112 * tree-dump.c (dump_node): Use splay_tree_delete_pointers.
12113
12114 2018-05-28 Richard Biener <rguenther@suse.de>
12115
12116 PR tree-optimization/85933
12117 * tree-vect-data-refs.c (vect_record_base_alignments): Only
12118 look at stmts marked as vectorizable.
12119
12120 2018-05-28 Richard Biener <rguenther@suse.de>
12121
12122 PR tree-optimization/85934
12123 * tree-vect-generic.c (expand_vector_operations_1): Hoist
12124 vector boolean check before scalar optimization.
12125
12126 2018-05-28 Jakub Jelinek <jakub@redhat.com>
12127
12128 * doc/invoke.texi (ARM Options): Use @item instead of @itemx
12129 for armv5te.
12130
12131 2018-05-28 Mark Wielaard <mark@klomp.org>
12132
12133 * dwarf2asm.c (dw2_asm_output_delta_uleb128): Add brackets around lab2
12134 if it is an expression containing a minus sign.
12135
12136 2018-05-27 John David Anglin <danglin@gcc.gnu.org>
12137
12138 * config/pa/pa-linux.h (NEED_INDICATE_EXEC_STACK): Define to 0.
12139
12140 2018-05-27 Paul Koning <ni1d@arrl.net>
12141
12142 * config/pdp11/pdp11.md (truncsihi2): Remove.
12143
12144 2018-05-27 Monk Chiang <sh.chiang04@gmail.com>
12145 Chung-Ju Wu <jasonwucj@gmail.com>
12146
12147 * config/nds32/nds32-intrinsic.md (unaligned_storedi): Modify patterns
12148 implementation.
12149 (unaligned_store_dw): Ditto.
12150 * config/nds32/nds32-memory-manipulation.c
12151 (nds32_expand_movmemsi_loop_known_size): Refactoring implementation.
12152 (nds32_gen_dup_4_byte_to_word_value): Rename to ...
12153 (nds32_gen_dup_4_byte_to_word_value_aux): ... this.
12154 (emit_setmem_word_loop): Rename to ...
12155 (emit_setmem_doubleword_loop): ... this.
12156 (nds32_gen_dup_4_byte_to_word_value): New function.
12157 (nds32_gen_dup_8_byte_to_double_word_value): New function.
12158 (nds32_expand_setmem_loop): Refine implementation.
12159 (nds32_expand_setmem_loop_v3m): Ditto.
12160 * config/nds32/nds32-multiple.md (unaligned_store_update_base_dw): New
12161 pattern.
12162
12163 2018-05-27 Chung-Ju Wu <jasonwucj@gmail.com>
12164
12165 * config/nds32/nds32.md (bswapsi2, bswaphi2): New patterns.
12166
12167 2018-05-27 Chung-Ju Wu <jasonwucj@gmail.com>
12168
12169 * config/nds32/nds32.c (nds32_attribute_table): Add "no_prologue".
12170 (nds32_init_machine_status): Initialize machine->attr_naked_p and
12171 machine->attr_no_prologue_p.
12172 (nds32_compute_stack_frame): Check "naked" and "no_prologue" attributes.
12173 (nds32_naked_function_p): Handle "naked" and "no_prologue" attributes.
12174 (nds32_expand_epilogue): Consider attr_naked_p.
12175 (nds32_expand_epilogue_v3pop): Likewise.
12176 (nds32_can_use_return_insn): Likewise.
12177 * config/nds32/nds32.h (machine_function): Add attr_naked_p and
12178 attr_no_prologue_p fields.
12179 * config/nds32/nds32.opt (mret-in-naked-func): New option.
12180
12181 2018-05-27 Jakub Jelinek <jakub@redhat.com>
12182
12183 PR target/85918
12184 * config/i386/i386.md (fixunssuffix, floatunssuffix): New code
12185 attributes.
12186 * config/i386/sse.md
12187 (<floatsuffix>float<sseintvecmodelower><mode>2<mask_name><round_name>):
12188 Rename to ...
12189 (float<floatunssuffix><sseintvecmodelower><mode>2<mask_name><round_name>):
12190 ... this.
12191 (<floatsuffix>float<sselongvecmodelower><mode>2<mask_name><round_name>):
12192 Rename to ...
12193 (float<floatunssuffix><sselongvecmodelower><mode>2<mask_name><round_name>):
12194 ... this.
12195 (*<floatsuffix>floatv2div2sf2): Rename to ...
12196 (*float<floatunssuffix>v2div2sf2): ... this.
12197 (<floatsuffix>floatv2div2sf2_mask): Rename to ...
12198 (float<floatunssuffix>v2div2sf2_mask): ... this.
12199 (*<floatsuffix>floatv2div2sf2_mask_1): Rename to ...
12200 (*float<floatunssuffix>v2div2sf2_mask_1): ... this.
12201 (<fixsuffix>fix_truncv8dfv8si2<mask_name><round_saeonly_name>): Rename
12202 to ...
12203 (fix<fixunssuffix>_truncv8dfv8si2<mask_name><round_saeonly_name>):
12204 ... this.
12205 (<fixsuffix>fix_trunc<mode><sseintvecmodelower>2<mask_name><round_saeonly_name>):
12206 Rename to ...
12207 (fix<fixunssuffix>_trunc<mode><sseintvecmodelower>2<mask_name><round_saeonly_name>):
12208 ... this.
12209 (<fixsuffix>fix_trunc<mode><sselongvecmodelower>2<mask_name><round_saeonly_name>):
12210 Rename to ...
12211 (fix<fixunssuffix>_trunc<mode><sselongvecmodelower>2<mask_name><round_saeonly_name>):
12212 ... this.
12213 (<fixsuffix>fix_truncv2sfv2di2<mask_name>): Rename to ...
12214 (fix<fixunssuffix>_truncv2sfv2di2<mask_name>): ... this.
12215 (vec_pack_ufix_trunc_<mode>): Use gen_fixuns_truncv8dfv8si2 instead of
12216 gen_ufix_truncv8dfv8si2.
12217 * config/i386/i386-builtin.def (__builtin_ia32_cvttpd2uqq256_mask,
12218 __builtin_ia32_cvttpd2uqq128_mask, __builtin_ia32_cvttps2uqq256_mask,
12219 __builtin_ia32_cvttps2uqq128_mask, __builtin_ia32_cvtuqq2ps256_mask,
12220 __builtin_ia32_cvtuqq2ps128_mask, __builtin_ia32_cvtuqq2pd256_mask,
12221 __builtin_ia32_cvtuqq2pd128_mask, __builtin_ia32_cvttpd2udq512_mask,
12222 __builtin_ia32_cvtuqq2ps512_mask, __builtin_ia32_cvtuqq2pd512_mask,
12223 __builtin_ia32_cvttps2uqq512_mask, __builtin_ia32_cvttpd2uqq512_mask):
12224 Use fixuns instead ufix or floatuns instead ufloat in CODE_FOR_ names.
12225
12226 2018-05-24 H.J. Lu <hongjiu.lu@intel.com>
12227
12228 PR target/85900
12229 PR target/85345
12230 * varasm.c (assemble_alias): Lookup ifunc attribute on error.
12231
12232 2018-05-25 Jim Wilson <jimw@sifive.com>
12233
12234 * config/riscv/riscv-protos.h (riscv_epilogue_uses): New.
12235 * config/riscv/riscv.c (struct machine_function): Add
12236 interrupt_handler_p and attribute_checked_p fields.
12237 (riscv_attribute_table): Add interrupt.
12238 (riscv_interrupt_type_p): New.
12239 (riscv_save_reg_p): Save extra regs for interrupt handler.
12240 (riscv_use_save_libcall): Return false for interrupt handler.
12241 (riscv_first_stack_step): Add forward declaration.
12242 (riscv_compute_frame_info): New local interrupt_save_t1. Set it
12243 for interrupt handler with large frame. Use it for saved reg list.
12244 (riscv_expand_prologue): Move flag_stack_usage_info support to
12245 eliminate duplication.
12246 (riscv_expand_epilogue): Generate mret for interrupt handler.
12247 (riscv_epilogue_uses): New.
12248 (riscv_can_use_return_insn): Return false for interrupt handler.
12249 (riscv_function_ok_for_sibcall): Likewise.
12250 (riscv_set_current_function): Add interrupt handler support.
12251 * config/riscv/riscv.h (EPILOGUE_USES): Call riscv_epilogue_uses.
12252 * config/riscv/riscv.md (UNSPECV_MRET): New.
12253 (GP_REGNUM): New.
12254 (riscv_frflags, riscv_fsflags): Use tab after opcode.
12255 (riscv_mret): New.
12256 * doc/extend.texi (RISC-V Function Attributes) <interrupt>: New.
12257
12258 2018-05-25 Bill Schmidt <wschmidt@linux.ibm.com>
12259
12260 PR tree-optimization/85712
12261 * gimple-ssa-strength-reduction.c (replace_one_candidate): Skip if
12262 this candidate has already been replaced in-situ by a copy.
12263
12264 2018-05-25 Jason Merrill <jason@redhat.com>
12265
12266 PR c++/80485 - inline function non-zero address.
12267 * symtab.c (nonzero_address): Check DECL_COMDAT.
12268
12269 2018-05-25 Uros Bizjak <ubizjak@gmail.com>
12270
12271 PR target/83628
12272 * config/alpha/alpha.md (ashlsi3): New insn pattern.
12273 (*ashlsi_se): Rename from *ashldi_se. Define as sign
12274 extension of SImode operation. Use const123_operand predicate.
12275 (*saddsi_1): Remove.
12276 (*saddl_se_1): Ditto.
12277 (*ssubsi_1): Ditto.
12278 (*ssubl_se_1): Ditto.
12279 * config/alpha/predicates.md (const123_operand): New predicate.
12280 * config/alpha/constraints.md (P): Use IN_RANGE.
12281
12282 2018-05-25 Richard Biener <rguenther@suse.de>
12283
12284 * tree-ssa-alias.h (refs_may_alias_p): Add tbaa_p bool parameter,
12285 defaulted to true.
12286 (ref_maybe_used_by_stmt_p): Likewise.
12287 (stmt_may_clobber_ref_p): Likewise.
12288 (stmt_may_clobber_ref_p_1): Likewise.
12289 * tree-ssa-alias.c (refs_may_alias_p): Add tbaa_p bool parameter
12290 and pass it along.
12291 (ref_maybe_used_by_stmt_p): Likewise.
12292 (stmt_may_clobber_ref_p): Likewise.
12293 (stmt_may_clobber_ref_p_1): Likewise.
12294 * tree-vect-data-refs.c (vect_slp_analyze_node_dependences): Use
12295 the alias oracle to disambiguate DRs with stmts DR analysis
12296 couldn't handle.
12297 (vect_analyze_data_refs): Do not give up on not analyzable
12298 DRs for BB vectorization. Remove code truncating the dataref
12299 vector.
12300
12301 2018-05-25 Jakub Jelinek <jakub@redhat.com>
12302
12303 PR target/85832
12304 * config/i386/sse.md (<avx512>_eq<mode>3<mask_scalar_merge_name>_1):
12305 Add (=Yk,v,C) variant using vptestm insn. Use TARGET_AVX512BW
12306 in test instead of TARGET_AVX512F for VI12_AVX512VL iterator.
12307
12308 2018-05-25 Richard Biener <rguenther@suse.de>
12309
12310 * tree-vect-data-refs.c (vect_find_stmt_data_reference): New
12311 function, combining stmt data ref gathering and fatal analysis
12312 parts.
12313 (vect_analyze_data_refs): Remove now redudnant code and simplify.
12314 * tree-vect-loop.c (vect_get_datarefs_in_loop): Factor out from
12315 vect_analyze_loop_2 and use vect_find_stmt_data_reference.
12316 * tree-vect-slp.c (vect_slp_bb): Use vect_find_stmt_data_reference.
12317 * tree-vectorizer.h (vect_find_stmt_data_reference): Declare.
12318
12319 2018-05-25 Bin Cheng <bin.cheng@arm.com>
12320
12321 PR tree-optimization/85720
12322 * tree-loop-distribution.c (break_alias_scc_partitions): Don't merge
12323 SCC if all partitions are builtins.
12324 (version_loop_by_alias_check): New parameter. Generate cancelable
12325 runtime alias check if all partitions are builtins.
12326 (distribute_loop): Update call to above function.
12327
12328 2018-05-25 Bin Cheng <bin.cheng@arm.com>
12329
12330 * tree-outof-ssa.c (tree-ssa.h, tree-dfa.h): Include header files.
12331 (create_default_def, for_all_parms): Moved from tree-ssa-coalesce.c.
12332 (parm_default_def_partition_arg): Ditto.
12333 (set_parm_default_def_partition): Ditto.
12334 (get_parm_default_def_partitions): Ditto and make it static.
12335 (get_undefined_value_partitions): Ditto and make it static.
12336 (remove_ssa_form): Refactor call to init_var_map here.
12337 * tree-ssa-coalesce.c (build_ssa_conflict_graph): Support live range
12338 computation for loop region.
12339 (coalesce_partitions, compute_optimized_partition_bases): Ditto.
12340 (register_default_def): Delete.
12341 (for_all_parms, create_default_def): Move to tree-outof-ssa.c.
12342 (parm_default_def_partition_arg): Ditto.
12343 (set_parm_default_def_partition): Ditto.
12344 (get_parm_default_def_partitions): Ditto and make it static.
12345 (get_undefined_value_partitions): Ditto and make it static.
12346 (coalesce_with_default, coalesce_with_default): Update comment.
12347 (create_coalesce_list_for_region): New func factored out from
12348 create_outofssa_var_map.
12349 (populate_coalesce_list_for_outofssa): New func factored out from
12350 create_outofssa_var_map and coalesce_ssa_name.
12351 (create_outofssa_var_map): Delete.
12352 (coalesce_ssa_name): Refactor to support live range computation.
12353 * tree-ssa-coalesce.h (coalesce_ssa_name): Change decl.
12354 (get_parm_default_def_partitions): Delete.
12355 (get_undefined_value_partitions): Ditto.
12356 * tree-ssa-live.c (init_var_map, delete_var_map): Support live range
12357 computation for loop region.
12358 (new_tree_live_info, loe_visit_block): Ditto.
12359 (live_worklist, set_var_live_on_entry): Ditto.
12360 (calculate_live_on_exit, verify_live_on_entry): Ditto.
12361 * tree-ssa-live.h (struct _var_map): New fields.
12362 (init_var_map): Change decl.
12363 (region_contains_p): New.
12364
12365 2018-05-25 Bin Cheng <bin.cheng@arm.com>
12366
12367 * tree-ssa-live.h (live_merge_and_clear): Delete.
12368
12369 2018-05-25 Richard Biener <rguenther@suse.de>
12370
12371 PR c++/85912
12372 * tree-dump.c (dequeue_and_dump): Remove access to removed
12373 operand 2 of a SWITCH_EXPR.
12374
12375 2018-05-25 Richard Sandiford <richard.sandiford@linaro.org>
12376
12377 * doc/sourcebuild.texi (vect_double_cond_arith): Include
12378 multiplication and division.
12379 * doc/md.texi (cond_mul@var{m}, cond_div@var{m}, cond_mod@var{m})
12380 (cond_udiv@var{m}, cond_umod@var{m}): Document.
12381 * optabs.def (cond_smul_optab, cond_sdiv_optab, cond_smod_optab)
12382 (cond_udiv_optab, cond_umod_optab): New optabs.
12383 * internal-fn.def (IFN_COND_MUL, IFN_COND_DIV, IFN_COND_MOD)
12384 (IFN_COND_RDIV): New internal functions.
12385 * internal-fn.c (get_conditional_internal_fn): Handle TRUNC_DIV_EXPR,
12386 TRUNC_MOD_EXPR and RDIV_EXPR.
12387 * match.pd (UNCOND_BINARY, COND_BINARY): Handle them.
12388 * config/aarch64/iterators.md (UNSPEC_COND_MUL, UNSPEC_COND_DIV):
12389 New unspecs.
12390 (SVE_INT_BINARY): Include mult.
12391 (SVE_COND_FP_BINARY): Include UNSPEC_MUL and UNSPEC_DIV.
12392 (optab, sve_int_op): Handle mult.
12393 (optab, sve_fp_op, commutative): Handle UNSPEC_COND_MUL and
12394 UNSPEC_COND_DIV.
12395 * config/aarch64/aarch64-sve.md (cond_<optab><mode>): New pattern
12396 for SVE_INT_BINARY_SD.
12397
12398 2018-05-25 Richard Sandiford <richard.sandiford@linaro.org>
12399
12400 * config/aarch64/iterators.md (SVE_INT_BINARY_SD): New code iterator.
12401 (optab, sve_int_op): Handle div and udiv.
12402 * config/aarch64/aarch64-sve.md (<optab><mode>3): New expander
12403 for SVE_INT_BINARY_SD.
12404 (*<optab><mode>3): New insn for the same.
12405
12406 2018-05-25 Richard Sandiford <richard.sandiford@linaro.org>
12407
12408 * tree-vect-patterns.c: Include predict.h.
12409 (vect_recog_divmod_pattern): Restrict check for division support
12410 to when optimizing for size.
12411
12412 2018-05-25 Richard Sandiford <richard.sandiford@linaro.org>
12413
12414 * doc/sourcebuild.texi (vect_double_cond_arith: Document.
12415 * gimple-match.h (gimple_match_op::MAX_NUM_OPS): Bump to 4.
12416 (gimple_match_op::gimple_match_op): Add an overload for 4 operands.
12417 (gimple_match_op::set_op): Likewise.
12418 (gimple_resimplify4): Declare.
12419 * genmatch.c (get_operand_type): Handle CFN_COND_* functions.
12420 (expr::gen_transform): Likewise.
12421 (decision_tree::gen): Generate a simplification routine for 4 operands.
12422 * gimple-match-head.c (gimple_simplify): Add an overload for
12423 4 operands. In the top-level function, handle up to 4 call
12424 arguments and call gimple_resimplify4.
12425 (gimple_resimplify4): New function.
12426 (build_call_internal): Pass a fourth operand.
12427 (maybe_push_to_seq): Likewise.
12428 * match.pd (UNCOND_BINARY, COND_BINARY): New operator lists.
12429 Fold VEC_COND_EXPRs of an operation and a default value into
12430 an IFN_COND_* function if possible.
12431 * config/aarch64/iterators.md (UNSPEC_COND_MAX, UNSPEC_COND_MIN):
12432 New unspecs.
12433 (SVE_COND_FP_BINARY): Include them.
12434 (optab, sve_fp_op): Handle them.
12435 (SVE_INT_BINARY_REV): New code iterator.
12436 (SVE_COND_FP_BINARY_REV): New int iterator.
12437 (commutative): New int attribute.
12438 * config/aarch64/aarch64-protos.h (aarch64_sve_prepare_conditional_op):
12439 Declare.
12440 * config/aarch64/aarch64.c (aarch64_sve_prepare_conditional_op): New
12441 function.
12442 * config/aarch64/aarch64-sve.md (cond_<optab><mode>): Use it.
12443 (*cond_<optab><mode>): New patterns for reversed operands.
12444
12445 2018-05-25 Richard Biener <rguenther@suse.de>
12446
12447 * tree-vectorizer.h (STMT_VINFO_GROUP_*, GROUP_*): Remove.
12448 (DR_GROUP_*): New, assert we have non-NULL ->data_ref_info.
12449 (REDUC_GROUP_*): New, assert we have NULL ->data_ref_info.
12450 (STMT_VINFO_GROUPED_ACCESS): Adjust.
12451 * tree-vect-data-refs.c (everywhere): Adjust users.
12452 * tree-vect-loop.c (everywhere): Likewise.
12453 * tree-vect-slp.c (everywhere): Likewise.
12454 * tree-vect-stmts.c (everywhere): Likewise.
12455 * tree-vect-patterns.c (vect_reassociating_reduction_p): Likewise.
12456
12457 2018-05-25 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
12458
12459 * configure.ac (gcc_cv_as_section_has_e): Move to common section.
12460 Rename to...
12461 (gcc_cv_as_section_exclude): ... this.
12462 Try Solaris as #exclude syntax.
12463 * configure: Regenerate.
12464 * config.in: Regenerate.
12465 * config/i386/i386.c (i386_solaris_elf_named_section): Handle
12466 SECTION_EXCLUDE.
12467 * config/sparc/sparc.c (sparc_solaris_elf_asm_named_section)
12468 [HAVE_GAS_SECTION_EXCLUDE]: Handle SECTION_EXCLUDE.
12469
12470 * varasm.c (default_elf_asm_named_section): Don't check if
12471 HAVE_GAS_SECTION_EXCLUDE is defined.
12472
12473 2018-05-25 Richard Sandiford <richard.sandiford@linaro.org>
12474
12475 * doc/md.texi: Update the documentation of the cond_* optabs
12476 to mention the new final operand. Fix GET_MODE_NUNITS call.
12477 Describe the scalar case too.
12478 * internal-fn.def (IFN_EXTRACT_LAST): Change type to fold_left.
12479 * internal-fn.c (expand_cond_unary_optab_fn): Expect 3 operands
12480 instead of 2.
12481 (expand_cond_binary_optab_fn): Expect 4 operands instead of 3.
12482 (get_conditional_internal_fn): Update comment.
12483 * tree-vect-loop.c (vectorizable_reduction): Pass the original
12484 accumulator value as a final argument to conditional functions.
12485 * config/aarch64/aarch64-sve.md (cond_<optab><mode>): Turn into
12486 a define_expand and add an "else" operand. Assert for now that
12487 the else operand is equal to operand 2. Use SVE_INT_BINARY and
12488 SVE_COND_FP_BINARY instead of SVE_COND_INT_OP and SVE_COND_FP_OP.
12489 (*cond_<optab><mode>): New patterns.
12490 * config/aarch64/iterators.md (UNSPEC_COND_SMAX, UNSPEC_COND_UMAX)
12491 (UNSPEC_COND_SMIN, UNSPEC_COND_UMIN, UNSPEC_COND_AND, UNSPEC_COND_ORR)
12492 (UNSPEC_COND_EOR): Delete.
12493 (optab): Remove associated mappings.
12494 (SVE_INT_BINARY): New code iterator.
12495 (sve_int_op): Remove int attribute and add "minus" to the code
12496 attribute.
12497 (SVE_COND_INT_OP): Delete.
12498 (SVE_COND_FP_OP): Rename to...
12499 (SVE_COND_FP_BINARY): ...this.
12500
12501 2018-05-25 Richard Sandiford <richard.sandiford@linaro.org>
12502
12503 * optabs.c (can_reuse_operands_p): New function.
12504 (maybe_legitimize_operands): Try to reuse the results for
12505 earlier operands.
12506
12507 2018-05-24 Uros Bizjak <ubizjak@gmail.com>
12508
12509 * config/i386/sse.md (cvtusi2<ssescalarmodesuffix>64<round_name>):
12510 Add {q} suffix to insn mnemonic.
12511
12512 2018-05-23 Jozef Lawrynowicz <jozef.l@mittosystems.com>
12513
12514 * config/msp430/msp430.c (TARGET_WARN_FUNC_RETURN): Define.
12515 (msp430_warn_func_return): New.
12516
12517 2018-05-24 Roger Sayle <roger@nextmovesoftware.com>
12518
12519 * fold-const.c (tree_nonzero_bits): New function.
12520 * fold-const.h (tree_nonzero_bits): Likewise.
12521 * match.pd (POPCOUNT): New patterns to fold BUILTIN_POPCOUNT and
12522 friends. POPCOUNT(x&1) => x&1, POPCOUNT(x)==0 => x==0, etc.
12523
12524 2018-05-24 H.J. Lu <hongjiu.lu@intel.com>
12525
12526 PR target/85900
12527 PR target/85345
12528 * varasm.c (assemble_alias): Check ifunc_resolver only on
12529 FUNCTION_DECL.
12530
12531 2018-05-24 Uros Bizjak <ubizjak@gmail.com>
12532
12533 PR target/85903
12534 * config/i386/sse.md (movdi_to_sse): Do not generate pseudo
12535 when memory input operand is handled.
12536
12537 2018-05-24 Luis Machado <luis.machado@linaro.org>
12538
12539 * config/aarch64/aarch64.c (qdf24xx_addrcost_table): New static
12540 global.
12541 (qdf24xx_tunings) <addr_costs>: Set to qdf24xx_addrcost_table.
12542
12543 2018-05-24 Richard Sandiford <richard.sandiford@linaro.org>
12544
12545 * match.pd: Delay FMA folds until after vectorization.
12546
12547 2018-05-24 Andre Vieira <andre.simoesdiasvieira@arm.com>
12548
12549 PR target/83009
12550 * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): Make
12551 address check not strict.
12552
12553 2018-05-24 Richard Sandiford <richard.sandiford@linaro.org>
12554
12555 * gimple-match.h (gimple_match_op): New class.
12556 (mprts_hook): Replace parameters with a gimple_match_op *.
12557 (maybe_build_generic_op): Likewise.
12558 (gimple_simplified_result_is_gimple_val): Replace parameters with
12559 a const gimple_match_op *.
12560 (gimple_simplify): Replace code_helper * and tree * parameters with
12561 a gimple_match_op * parameter.
12562 (gimple_resimplify1): Replace code_helper *, tree and tree *
12563 parameters with a gimple_match_op * parameter.
12564 (gimple_resimplify2): Likewise.
12565 (gimple_resimplify3): Likewise.
12566 (maybe_push_res_to_seq): Replace code_helper, tree and tree *
12567 parameters with a gimple_match_op * parameter.
12568 * gimple-match-head.c (gimple_simplify): Change prototypes of
12569 auto-generated functions to take a gimple_match_op * instead of
12570 separate code_helper * and tree * parameters. Make the same
12571 change in the top-level overload and update calls to the
12572 gimple_resimplify routines. Update calls to the auto-generated
12573 functions and to maybe_push_res_to_seq in the publicly-facing
12574 operation-specific gimple_simplify overloads.
12575 (gimple_match_op::MAX_NUM_OPS): Define.
12576 (gimple_resimplify1): Replace rcode and ops with a single res_op
12577 parameter. Update call to gimple_simplify.
12578 (gimple_resimplify2): Likewise.
12579 (gimple_resimplify3): Likewise.
12580 (mprts_hook): Replace parameters with a gimple_match_op *.
12581 (maybe_build_generic_op): Likewise.
12582 (build_call_internal): Replace type, nargs and ops with
12583 a gimple_match_op *.
12584 (maybe_push_res_to_seq): Replace res_code, type and ops parameters
12585 with a single gimple_match_op *. Update calls to mprts_hook,
12586 build_call_internal and gimple_simplified_result_is_gimple_val.
12587 Factor out code that is common to the tree_code and combined_fn cases.
12588 * genmatch.c (expr::gen_transform): Replace tem_code and
12589 tem_ops with a gimple_match_op called tem_op. Update calls
12590 to the gimple_resimplify functions and maybe_push_res_to_seq.
12591 (dt_simplify::gen_1): Manipulate res_op instead of res_code and
12592 res_ops. Update call to the gimple_resimplify functions.
12593 (dt_simplify::gen): Pass res_op instead of res_code and res_ops.
12594 (decision_tree::gen): Make the functions take a gimple_match_op *
12595 called res_op instead of separate res_code and res_ops parameters.
12596 Update call accordingly.
12597 * gimple-fold.c (replace_stmt_with_simplification): Replace rcode
12598 and ops with a single res_op parameter. Update calls to
12599 maybe_build_generic_op and maybe_push_res_to_seq.
12600 (fold_stmt_1): Update calls to gimple_simplify and
12601 replace_stmt_with_simplification.
12602 (gimple_fold_stmt_to_constant_1): Update calls to gimple_simplify
12603 and gimple_simplified_result_is_gimple_val.
12604 * tree-cfgcleanup.c (cleanup_control_expr_graph): Update call to
12605 gimple_simplify.
12606 * tree-ssa-sccvn.c (vn_lookup_simplify_result): Replace parameters
12607 with a gimple_match_op *.
12608 (vn_nary_build_or_lookup): Likewise. Update call to
12609 vn_nary_build_or_lookup_1.
12610 (vn_nary_build_or_lookup_1): Replace rcode, type and ops with a
12611 gimple_match_op *. Update calls to the gimple_resimplify routines
12612 and to gimple_simplified_result_is_gimple_val.
12613 (vn_nary_simplify): Update call to vn_nary_build_or_lookup_1.
12614 Use gimple_match_op::MAX_NUM_OPS instead of a hard-coded 3.
12615 (vn_reference_lookup_3): Update call to vn_nary_build_or_lookup.
12616 (visit_nary_op): Likewise.
12617 (visit_reference_op_load): Likewise.
12618
12619 2018-05-23 Luis Machado <luis.machado@linaro.org>
12620
12621 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Use correct type
12622 modifier for printing the step amount.
12623
12624 2018-05-23 Jozef Lawrynowicz <jozef.l@somniumtech.com>
12625
12626 PR target/78849
12627 * tree.c (build_common_tree_nodes): Dont set TYPE_SIZE for __intN
12628 types.
12629
12630 2018-05-23 Segher Boessenkool <segher@kernel.crashing.org>
12631
12632 * doc/sourcebuild.texi (Endianness): New subsubsection.
12633
12634 2018-05-23 Luis Machado <luis.machado@linaro.org>
12635
12636 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
12637 <prefetch_dynamic_strides>: New const bool field.
12638 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
12639 prefetch_dynamic_strides.
12640 (exynosm1_prefetch_tune): Likewise.
12641 (thunderxt88_prefetch_tune): Likewise.
12642 (thunderx_prefetch_tune): Likewise.
12643 (thunderx2t99_prefetch_tune): Likewise.
12644 (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides to
12645 false.
12646 (aarch64_override_options_internal): Update to set
12647 PARAM_PREFETCH_DYNAMIC_STRIDES.
12648 * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
12649 * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
12650 * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
12651 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
12652 prefetch-dynamic-strides setting.
12653
12654 2018-05-23 Luis Machado <luis.machado@linaro.org>
12655
12656 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
12657 <minimum_stride>: New const int field.
12658 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
12659 minimum_stride field defaulting to -1.
12660 (exynosm1_prefetch_tune): Likewise.
12661 (thunderxt88_prefetch_tune): Likewise.
12662 (thunderx_prefetch_tune): Likewise.
12663 (thunderx2t99_prefetch_tune): Likewise.
12664 (qdf24xx_prefetch_tune) <minimum_stride>: Set to 2048.
12665 <default_opt_level>: Set to 3.
12666 (aarch64_override_options_internal): Update to set
12667 PARAM_PREFETCH_MINIMUM_STRIDE.
12668 * doc/invoke.texi (prefetch-minimum-stride): Document new option.
12669 * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
12670 * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
12671 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
12672 stride is constant and is below the minimum stride threshold.
12673
12674 2018-05-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12675
12676 * config/arm/arm-cpus.in (mode26): Delete.
12677 (armv4): Delete mode26 reference.
12678 * config/arm/arm.c (arm_configure_build_target): Delete use of
12679 isa_bit_mode26.
12680
12681 2018-05-23 Uros Bizjak <ubizjak@gmail.com>
12682
12683 * config/i386/i386.md (*floatuns<SWI48:mode><MODEF:mode>2_avx512):
12684 New insn pattern.
12685 (floatunssi<mode>2): Also enable for AVX512F and TARGET_SSE_MATH.
12686 Rewrite expander pattern. Emit gen_floatunssi<mode>2_i387_with_xmm
12687 for non-SSE modes.
12688 (floatunsdisf2): Rewrite expander pattern. Hanlde TARGET_AVX512F.
12689 (floatunsdidf2): Ditto.
12690
12691 2018-05-23 Uros Bizjak <ubizjak@gmail.com>
12692
12693 * config/i386/i386.md (fixuns_trunc<mode>di2): New insn pattern.
12694 (fixuns_trunc<mode>si2_avx512f): Ditto.
12695 (*fixuns_trunc<mode>si2_avx512f_zext): Ditto.
12696 (fixuns_trunc<mode>si2): Also enable for AVX512F and TARGET_SSE_MATH.
12697 Emit fixuns_trunc<mode>si2_avx512f for AVX512F targets.
12698
12699 2018-05-23 Alexander Monakov <amonakov@ispras.ru>
12700
12701 PR rtl-optimization/79985
12702 * df-scan.c (df_insn_refs_collect): Remove special case for
12703 global registers and asm statements.
12704
12705 2018-05-23 Alexander Monakov <amonakov@ispras.ru>
12706
12707 * extend.texi (Global Register Variables): Rewrite the bullet list.
12708 Note that the register is available for allocation. Note that access
12709 via inline asm must use constraints. Add note about async-signal
12710 handlers. Remove paragraph about automagic register selection.
12711
12712 2018-05-23 Richard Biener <rguenther@suse.de>
12713
12714 * tree-ssa-sccvn.c (vn_reference_lookup_3): Remove restriction
12715 of fixed offset from memset VN.
12716
12717 2018-05-23 Bill Schmidt <wschmidt@linux.ibm.com>
12718
12719 * gimple-ssa-strength-reduction.c (struct slsr_cand_d): Add
12720 first_interp field.
12721 (alloc_cand_and_find_basis): Initialize first_interp field.
12722 (slsr_process_mul): Modify first_interp field.
12723 (slsr_process_add): Likewise.
12724 (slsr_process_cast): Modify first_interp field for each new
12725 interpretation.
12726 (slsr_process_copy): Likewise.
12727 (dump_candidate): Dump first_interp field.
12728 (replace_mult_candidate): Process all interpretations, not just
12729 subsequent ones.
12730 (replace_rhs_if_not_dup): Likewise.
12731 (replace_one_candidate): Likewise.
12732
12733 2018-05-23 Wilco Dijkstra <wdijkstr@arm.com>
12734
12735 * config/aarch64/aarch64.c (aarch64_use_frame_pointer):
12736 Add new boolean.
12737 (aarch64_needs_frame_chain): New function.
12738 (aarch64_parse_override_string): Set aarch64_use_frame_pointer.
12739
12740 2018-05-23 Sudakshina Das <sudi.das@arm.com>
12741
12742 PR target/84882
12743 * common/config/aarch64/aarch64-common.c (aarch64_handle_option):
12744 Check val before adding MASK_STRICT_ALIGN to opts->x_target_flags.
12745 * config/aarch64/aarch64.opt (mstrict-align): Remove RejectNegative.
12746 * config/aarch64/aarch64.c (aarch64_attributes): Mark allow_neg
12747 as true for strict-align.
12748 (aarch64_can_inline_p): Perform checks even when callee has no
12749 attributes to check for strict alignment.
12750 * doc/extend.texi (AArch64 Function Attributes): Document
12751 no-strict-align.
12752 * doc/invoke.texi: (AArch64 Options): Likewise.
12753
12754 2018-05-23 Richard Sandiford <richard.sandiford@linaro.org>
12755
12756 PR tree-optimization/85853
12757 * tree-vect-slp.c (vect_slp_analyze_node_operations): Split out
12758 the handling of the root of the node to...
12759 (vect_slp_analyze_node_operations_1): ...this new function,
12760 and run the whole thing with the child nodes' def types
12761 set according to their SLP node's def type.
12762
12763 2018-05-23 Richard Biener <rguenther@suse.de>
12764
12765 PR middle-end/85874
12766 * tree-data-ref.c (create_runtime_alias_checks): Defer
12767 and ignore overflow warnings.
12768
12769 2018-05-23 Yury Gribov <tetra2005@gmail.com>
12770
12771 PR tree-optimization/85822
12772 * tree-vrp.c (is_masked_range_test): Fix handling of negative
12773 constants.
12774
12775 2018-05-23 Richard Biener <rguenther@suse.de>
12776
12777 * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle arbitrary
12778 memset constants via native_interpret_expr.
12779
12780 2018-05-22 H.J. Lu <hongjiu.lu@intel.com>
12781
12782 PR target/85345
12783 * cgraph.h (cgraph_node::create): Set ifunc_resolver for ifunc
12784 attribute.
12785 (cgraph_node::create_alias): Likewise.
12786 (cgraph_node::get_availability): Check ifunc_resolver instead
12787 of looking up ifunc attribute.
12788 * cgraphunit.c (maybe_diag_incompatible_alias): Likewise.
12789 * varasm.c (do_assemble_alias): Likewise.
12790 (assemble_alias): Likewise.
12791 (default_binds_local_p_3): Likewise.
12792 * cgraph.h (cgraph_node): Add ifunc_resolver.
12793 (cgraph_node::only_called_directly_or_aliased_p): Return false
12794 for IFUNC resolver.
12795 * lto-cgraph.c (input_node): Set ifunc_resolver for ifunc
12796 attribute.
12797 * symtab.c (symtab_node::verify_base): Verify that ifunc_resolver
12798 is equivalent to lookup_attribute ("ifunc", DECL_ATTRIBUTES (decl)).
12799 (symtab_node::binds_to_current_def_p): Check ifunc_resolver
12800 instead of looking up ifunc attribute.
12801
12802 2018-05-22 Luis Machado <luis.machado@linaro.org>
12803
12804 * config/aarch64/aarch64.md (*ashift<mode>_extv_bfiz): New pattern.
12805
12806 2018-05-22 Martin Sebor <msebor@redhat.com>
12807
12808 PR middle-end/85359
12809 * builtins.c (expand_builtin_strcpy): Call maybe_warn_nonstring_arg
12810 only when expasion succeeds.
12811 (expand_builtin_strcmp): Same.
12812 (expand_builtin_strncmp): Same.
12813
12814 2018-05-22 Martin Sebor <msebor@redhat.com>
12815
12816 * calls.c (maybe_warn_nonstring_arg): Fix a typo in a comment.
12817
12818 2018-05-22 Jackson Woodruff <jackson.woodruff@arm.com>
12819 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12820
12821 * config/aarch64/aarch64-ldpstp.md: Replace uses of
12822 aarch64_mem_pair_operand with memory_operand and delete operand swapping
12823 code.
12824 * config/aarch64/aarch64.c (aarch64_operands_ok_for_ldpstp):
12825 Add check for legitimate_address.
12826 (aarch64_gen_adjusted_ldpstp): Swap operands where appropriate.
12827 (aarch64_swap_ldrstr_operands): New.
12828 * config/aarch64/aarch64-protos.h (aarch64_swap_ldrstr_operands):
12829 Define prototype.
12830
12831 2018-05-22 Jackson Woodruff <jackson.woodruff@arm.com>
12832 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12833
12834 * config/aarch64/aarch64.md: New patterns to generate stp
12835 and ldp.
12836 (store_pair_sw, store_pair_dw): New patterns to generate stp for
12837 single words and double words.
12838 (load_pair_sw, load_pair_dw): Likewise.
12839 (store_pair_sf, store_pair_df, store_pair_si, store_pair_di):
12840 Delete.
12841 (load_pair_sf, load_pair_df, load_pair_si, load_pair_di):
12842 Delete.
12843 * config/aarch64/aarch64-ldpstp.md: Modify peephole
12844 for different mode ldpstp and add peephole for merged zero stores.
12845 Likewise for loads.
12846 * config/aarch64/aarch64.c (aarch64_operands_ok_for_ldpstp):
12847 Add size check.
12848 (aarch64_gen_store_pair): Rename calls to match new patterns.
12849 (aarch64_gen_load_pair): Rename calls to match new patterns.
12850 * config/aarch64/aarch64-simd.md (load_pair<mode>): Rename to...
12851 (load_pair<DREG:mode><DREG2:mode>): ... This.
12852 (store_pair<mode>): Rename to...
12853 (vec_store_pair<DREG:mode><DREG2:mode>): ... This.
12854 * config/aarch64/iterators.md (DREG, DREG2, DX2, SX, SX2, DSX):
12855 New mode iterators.
12856 (V_INT_EQUIV): Handle SImode.
12857 * config/aarch64/predicates.md (aarch64_reg_zero_or_fp_zero):
12858 New predicate.
12859
12860 2018-05-22 Martin Sebor <msebor@redhat.com>
12861
12862 PR c/85623
12863 * calls.c (maybe_warn_nonstring_arg): Use string length to set
12864 or ajust the presumed bound on an operation to avoid unnecessary
12865 warnings.
12866
12867 2018-05-22 Martin Sebor <msebor@redhat.com>
12868
12869 PR tree-optimization/85826
12870 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Avoid
12871 assuming that a DECL necesarily has a constant size.
12872
12873 2018-05-22 Richard Sandiford <richard.sandiford@linaro.org>
12874
12875 PR middle-end/85862
12876 * internal-fn.c (expand_direct_optab_fn): Cope with a null lhs.
12877
12878 2018-05-22 Richard Biener <rguenther@suse.de>
12879
12880 PR tree-optimization/85834
12881 * tree-ssa-sccvn.c (vn_reference_lookup_3): Properly handle
12882 non-constant and non-zero memset arguments.
12883
12884 2018-05-22 Martin Liska <mliska@suse.cz>
12885
12886 PR ipa/85607
12887 * ipa-icf.c (sem_item::add_type): Do not ICE for incomplete types.
12888
12889 2018-05-22 Richard Biener <rguenther@suse.de>
12890
12891 PR tree-optimization/85863
12892 * tree-vect-stmts.c (vect_is_simple_cond): Only widen invariant
12893 comparisons when vectype is specified.
12894 (vectorizable_condition): Do not specify vectype for
12895 vect_is_simple_cond when SLP vectorizing.
12896
12897 2018-05-21 Michael Meissner <meissner@linux.ibm.com>
12898
12899 PR target/85657
12900 * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Do not
12901 define __ibm128 as long double.
12902 * config/rs6000/rs6000.c (rs6000_init_builtins): Create __ibm128
12903 as a distinct type when IEEE 128-bit support is enabled.
12904 (init_float128_ieee): Fix up conversions between IFmode and IEEE
12905 128-bit types to use the correct functions.
12906 (rs6000_expand_float128_convert): Use explicit FLOAT_EXTEND to
12907 convert between 128-bit floating point types that have different
12908 modes but the same representation, instead of using gen_lowpart to
12909 makean alias.
12910 * config/rs6000/rs6000.md (IFKF): New iterator for IFmode and
12911 KFmode.
12912 (IFKF_reg): New attributes to give the register constraints for
12913 IFmode and KFmode.
12914 (extend<mode>tf2_internal): New insns to mark an explicit
12915 conversion between 128-bit floating point types that have a
12916 different mode but share the same representation.
12917
12918 2018-05-21 Richard Sandiford <richard.sandiford@linaro.org>
12919
12920 PR tree-optimization/85814
12921 * tree-ssa-strlen.c (get_stridx_plus_constant): Cope with
12922 a null return from get_strinfo when unsharing the next
12923 strinfo in the chain.
12924
12925 2018-05-21 Vladimir Mezentsev <vladimir.mezentsev@oracle.com>
12926
12927 PR gcc/84923
12928 * varasm.c (weak_finish): Clean up weak_decls.
12929
12930 2018-05-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12931
12932 * config/aarch64/aarch64.md ("unspec"): Define UNSPEC_SABAL,
12933 UNSPEC_SABDL2, UNSPEC_SADALP, UNSPEC_UABAL, UNSPEC_UABDL2,
12934 UNSPEC_UADALP values.
12935 * config/aarch64/iterators.md (ABAL): New int iterator.
12936 (ABDL2): Likewise.
12937 (ADALP): Likewise.
12938 (sur): Add mappings for the above.
12939 * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl2<mode>_3):
12940 New define_insn.
12941 (aarch64_<sur>abal<mode>_4): Likewise.
12942 (aarch64_<sur>adalp<mode>_3): Likewise.
12943 (<sur>sadv16qi): New define_expand.
12944
12945 2018-05-21 Alexander Nesterovskiy <alexander.nesterovskiy@intel.com>
12946
12947 * config/i386/i386.md (*movsf_internal): AVX falsedep fix.
12948 (*movdf_internal): Ditto.
12949 (*rcpsf2_sse): Ditto.
12950 (*rsqrtsf2_sse): Ditto.
12951 (*sqrt<mode>2_sse): Ditto.
12952
12953 2018-05-21 Tamar Christina <tamar.christina@arm.com>
12954
12955 * config/aarch64/aarch64-simd.md (aarch64_eor3qv8hi): Change to
12956 eor3q<mode>4.
12957 (aarch64_bcaxqv8hi): Change to bcaxq<mode>4.
12958 * config/aarch64/aarch64-simd-builtins.def (veor3q_u8, veor3q_u32,
12959 veor3q_u64, veor3q_s8, veor3q_s16, veor3q_s32, veor3q_s64, vbcaxq_u8,
12960 vbcaxq_u32, vbcaxq_u64, vbcaxq_s8, vbcaxq_s16, vbcaxq_s32,
12961 vbcaxq_s64): New.
12962 * config/aarch64/arm_neon.h: Likewise.
12963 * config/aarch64/iterators.md (VQ_I): New.
12964
12965 2018-05-21 Alexey Brodkin <abrodkin@synopsys.com>
12966
12967 * config.gcc: Add arc/t-multilib-linux to tmake_file for
12968 arc*-*-linux*.
12969 * config/arc/t-multilib-linux: Specify MULTILIB_OPTIONS and
12970 MULTILIB_DIRNAMES
12971
12972 2018-05-20 Chung-Ju Wu <jasonwucj@gmail.com>
12973
12974 * config/nds32/constraints.md (S): New constraint.
12975 * config/nds32/nds32.md (call_internal): Use constraint S.
12976 (call_value_internal): Likewise.
12977 (sibcall_internal): Likewise.
12978 (sibcall_value_internal): Likewise.
12979
12980 2018-05-20 Kito Cheng <kito.cheng@gmail.com>
12981 Chung-Ju Wu <jasonwucj@gmail.com>
12982
12983 * config/nds32/nds32.c (nds32_register_move_cost): Take garywolf cpu
12984 into consideration.
12985
12986 2018-05-20 Kito Cheng <kito.cheng@gmail.com>
12987 Chung-Ju Wu <jasonwucj@gmail.com>
12988
12989 * config/nds32/nds32-cost.c (rtx_cost_model_t): New structure.
12990 (insn_size_16bit, insn_size_32bit): New variables for cost evaluation.
12991 (nds32_rtx_costs_impl): Simplify.
12992 (nds32_address_cost_impl): Simplify.
12993 (nds32_init_rtx_costs): New function.
12994 (nds32_rtx_costs_speed_prefer): Likewise.
12995 (nds32_rtx_costs_size_prefer): Likewise.
12996 (nds32_address_cost_speed_prefer): Likewise.
12997 (nds32_address_cost_speed_fwprop): Likewise.
12998 (nds32_address_cost_size_prefer): Likewise.
12999 * config/nds32/nds32-protos.h (nds32_init_rtx_costs): Declare.
13000 * config/nds32/nds32.c (nds32_option_override): Use
13001 nds32_init_rtx_costs function.
13002
13003 2018-05-20 Chung-Ju Wu <jasonwucj@gmail.com>
13004
13005 * config/nds32/nds32.c (nds32_asm_file_start): Output pipeline model.
13006 * config/nds32/nds32.h (TARGET_PIPELINE_N7): Define.
13007 (TARGET_PIPELINE_N8): Likewise.
13008 (TARGET_PIPELINE_N10): Likewise.
13009 (TARGET_PIPELINE_N13): Likewise.
13010 (TARGET_PIPELINE_GRAYWOLF): Likewise.
13011
13012 2018-05-19 Monk Chiang <sh.chiang04@gmail.com>
13013
13014 * config/nds32/nds32-fpu.md: Update copyright year.
13015
13016 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
13017
13018 * config/nds32/nds32.h (ASM_SPEC): Adjust spec rule.
13019
13020 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
13021
13022 * config/nds32/nds32.c
13023 (nds32_md_asm_adjust): Consider flag_inline_asm_r15 variable.
13024 * config/nds32/nds32.opt (minline-asm-r15): New option.
13025
13026 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
13027
13028 * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS): Add
13029 MASK_HW_ABS.
13030 * config/nds32/nds32.md (abssi2): New pattern.
13031
13032 2018-05-19 Uros Bizjak <ubizjak@gmail.com>
13033
13034 * config/i386/i386.md (rex64namesuffix): New mode attribute.
13035 * config/i386/sse.md (sse_cvtsi2ss<rex64namesuffix><round_name>):
13036 Merge insn pattern from sse_cvtsi2ss<round_name> and
13037 sse_cvtsi2ssq<round_name> using SWI48 mode iterator.
13038 (sse_cvtss2si<rex64namesuffix><round_name>): Merge insn pattern
13039 from sse_cvtss2si<round_name> and sse_cvtss2siq<round_name>
13040 using SWI48 mode iterator.
13041 (sse_cvtss2si<rex64namesuffix>_2): Merge insn pattern from
13042 sse_cvtss2si_2 and sse_cvtss2siq_2 using SWI48 mode iterator.
13043 (sse_cvttss2si<rex64namesuffix><round_saeonly_name>): Merge insn
13044 pattern from sse_cvttss2si<round_saeonly_name>
13045 and sse_cvttss2siq<round_saeonly_name> using SWI48 mode iterator.
13046 (avx512f_vcvtss2usi<rex64namesuffix><round_name>): Merge insn pattern
13047 from avx512f_vcvtss2usi<round_name> and avx512f_vcvtss2usiq<round_name>
13048 using SWI48 mode iterator.
13049 (avx512f_vcvttss2usi<rex64namesuffix><round_saeonly_name>): Merge
13050 insn pattern from avx512f_vcvttss2usi<round_saeonly_name> and
13051 avx512f_vcvttss2usiq<round_saeonly_name> using SWI48 mode iterator.
13052 (avx512f_vcvtsd2usi<rex64namesuffix><round_name>): Merge insn pattern
13053 from avx512f_vcvtsd2usi<round_name> and avx512f_vcvtsd2usiq<round_name>
13054 using SWI48 mode iterator.
13055 (avx512f_vcvttsd2usi<rex64namesuffix><round_saeonly_name>): Merge
13056 insn pattern from avx512f_vcvttsd2usi<round_saeonly_name> and
13057 avx512f_vcvttsd2usiq<round_saeonly_name> using SWI48 mode iterator.
13058 (sse2_cvtsd2si<rex64namesuffix><round_name>): Merge insn pattern from
13059 sse2_cvtsd2si<round_name> and sse2_cvtsd2siq<round_name> using
13060 SWI48 mode iterator.
13061 (sse2_cvtsd2si<rex64namesuffix>_2): Merge insn pattern from
13062 sse2_cvtsd2si_2 and sse2_cvtsd2siq_2 using SWI48 mode iterator.
13063 (sse_cvttsd2si<rex64namesuffix><round_saeonly_name>): Merge insn
13064 pattern from sse_cvttsd2si<round_saeonly_name>
13065 and sse_cvttsd2siq<round_saeonly_name> using SWI48 mode iterator.
13066
13067 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
13068
13069 * config/nds32/nds32-md-auxiliary.c
13070 (nds32_valid_smw_lwm_base_p): Refine.
13071 (nds32_output_smw_single_word): Refine.
13072 (nds32_output_smw_double_word): New.
13073 * config/nds32/nds32-protos.h (nds32_output_smw_double_word): New.
13074
13075 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
13076
13077 * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push): Refine.
13078 (nds32_output_stack_pop): Refine.
13079 (nds32_expand_unaligned_load): Refine.
13080 (nds32_expand_unaligned_store): Refine.
13081
13082 2018-05-19 Kuan-Lin Chen <kuanlinchentw@gmail.com>
13083 Chung-Ju Wu <jasonwucj@gmail.com>
13084
13085 * config/nds32/constants.md: Add TP_REGNUM constant.
13086 (unspec_element): Add UNSPEC_GOTINIT, UNSPEC_GOT, UNSPEC_GOTOFF,
13087 UNSPEC_PLT, UNSPEC_TLSGD, UNSPEC_TLSLD, UNSPEC_TLSIE, UNSPEC_TLSLE and
13088 UNSPEC_ADD32.
13089 * config/nds32/nds32-doubleword.md: Consider flag_pic.
13090 * config/nds32/nds32-dspext.md (mov<mode>): Expand TLS and PIC cases.
13091 * config/nds32/nds32-predicates.c (nds32_const_unspec_p): New.
13092 * config/nds32/nds32-md-auxiliary.c: Implementation that support TLS
13093 and PIC code generation.
13094 * config/nds32/nds32-protos.h: Declarations that support TLS and PIC
13095 code generation.
13096 * config/nds32/nds32-relax-opt.c: Consider TLS and PIC for relax
13097 optimization.
13098 * config/nds32/nds32.md: Support TLS and PIC.
13099 * config/nds32/nds32.c: Support TLS and PIC.
13100 * config/nds32/nds32.h (nds32_relax_insn_type): New enum type.
13101 * config/nds32/predicates.md (nds32_nonunspec_symbolic_operand): New
13102 predicate.
13103
13104 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
13105
13106 * config/nds32/nds32-predicates.c (const_vector_to_hwint): Use machine
13107 mode with E_ prefix.
13108
13109 2018-05-19 Kuan-Lin Chen <kuanlinchentw@gmail.com>
13110 Chung-Ju Wu <jasonwucj@gmail.com>
13111
13112 * config/nds32/constants.md (unspec_element): Add UNSPEC_ICT.
13113 * config/nds32/nds32-md-auxiliary.c
13114 (symbolic_reference_mentioned_p): New.
13115 (nds32_legitimize_ict_address): New.
13116 (nds32_expand_ict_move): New.
13117 (nds32_indirect_call_referenced_p): New.
13118 (nds32_symbol_binds_local_p): Delete.
13119 (nds32_long_call_p): Modify.
13120 * config/nds32/nds32-opts.h (nds32_ict_model_type): New enum type.
13121 * config/nds32/nds32-protos.h
13122 (symbolic_reference_mentioned_p): Declare.
13123 (nds32_legitimize_ict_address): Declare.
13124 (nds32_expand_ict_move): Declare.
13125 (nds32_indirect_call_referenced_p): Declare.
13126 * config/nds32/nds32-relax-opt.c (nds32_ict_const_p): New.
13127 (nds32_relax_group): Use nds32_ict_const_p as condition.
13128 * config/nds32/nds32.c (nds32_attribute_table): Add "indirect_call".
13129 (nds32_asm_file_start): Output ict_model directive in asm code.
13130 (nds32_legitimate_address_p): Consider indirect call.
13131 (nds32_print_operand): Consider indirect call.
13132 (nds32_print_operand_address): Consider indirect call.
13133 (nds32_insert_attributes): Handle "indirect_call" attribute.
13134 (TARGET_LEGITIMATE_ADDRESS_P): Define.
13135 (TARGET_LEGITIMATE_CONSTANT_P): Define.
13136 (TARGET_CANNOT_FORCE_CONST_MEM): Define.
13137 (TARGET_DELEGITIMIZE_ADDRESS): Define.
13138 (TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA): Define.
13139 * config/nds32/nds32.h (SYMBOLIC_CONST_P): Define.
13140 (TARGET_ICT_MODEL_SMALL): Define.
13141 (TARGET_ICT_MODEL_LARGE): Define.
13142 * config/nds32/nds32.md (movsi): Consider ict model.
13143 (call, call_value): Consider ict model.
13144 (sibcall, sibcall_value): Consider ict model.
13145 * config/nds32/nds32.opt (mict-model): New option.
13146 * config/nds32/predicates.md (nds32_symbolic_operand): Consider ict
13147 model.
13148
13149 2018-05-18 Kito Cheng <kito.cheng@gmail.com>
13150 Monk Chiang <sh.chiang04@gmail.com>
13151 Jim Wilson <jimw@sifive.com>
13152
13153 * common/config/riscv/riscv-common.c (riscv_parse_arch_string):
13154 Add support to parse rv32e*. Clear MASK_RVE for rv32i and rv64i.
13155 * config.gcc (riscv*-*-*): Add support for rv32e* and ilp32e.
13156 * config/riscv/riscv-c.c (riscv_cpu_cpp_builtins): Define
13157 __riscv_32e when TARGET_RVE. Handle ABI_ILP32E as soft-float ABI.
13158 * config/riscv/riscv-opts.h (riscv_abi_type): Add ABI_ILP32E.
13159 * config/riscv/riscv.c (riscv_compute_frame_info): When TARGET_RVE,
13160 compute save_libcall_adjustment properly.
13161 (riscv_option_override): Call error if TARGET_RVE and not ABI_ILP32E.
13162 (riscv_conditional_register_usage): Handle TARGET_RVE and ABI_ILP32E.
13163 * config/riscv/riscv.h (UNITS_PER_FP_ARG): Handle ABI_ILP32E.
13164 (STACK_BOUNDARY, ABI_STACK_BOUNDARY): Handle TARGET_RVE.
13165 (GP_REG_LAST, MAX_ARGS_IN_REGISTERS): Likewise.
13166 (ABI_SPEC): Handle mabi=ilp32e.
13167 * config/riscv/riscv.opt (abi_type): Add ABI_ILP32E.
13168 (RVE): Add RVE mask.
13169 * doc/invoke.texi (RISC-V options) <-mabi>: Add ilp32e info.
13170 <-march>: Add rv32e as an example.
13171
13172 2018-05-18 Marc Glisse <marc.glisse@inria.fr>
13173
13174 PR c++/82899
13175 * tree-ssa-structalias.c (create_variable_info_for_1): Extra argument.
13176 (intra_create_variable_infos): Handle C++ constructors.
13177
13178 2018-05-18 Martin Liska <mliska@suse.cz>
13179
13180 * passes.def: Remove a redundant pass.
13181
13182 2018-05-18 Eric Botcazou <ebotcazou@adacore.com>
13183
13184 PR bootstrap/85838
13185 * config/sparc/sparc.c (sparc_expand_builtin): Always initialize op[0].
13186
13187 2018-05-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13188
13189 * config/arm/arm-cpus.in (armv3m, mode32): Delete features.
13190 (ARMv4): Update.
13191 (ARMv2, ARMv3, ARMv3m): Delete fgroups.
13192 (ARMv6m): Update.
13193 (armv2, armv2a, armv3, armv3m): Delete architectures.
13194 (arm2, arm250, arm3, arm6, arm60, arm600, arm610, arm620,
13195 arm7, arm7d, arm7di, arm70, arm700, arm700i, arm710, arm720,
13196 arm710c, arm7100, arm7500, arm7500fe, arm7m, arm7dm, arm7dmi):
13197 Delete cpus.
13198 * config/arm/arm.md (maddsidi4): Remove check for arm_arch3m.
13199 (*mulsidi3adddi): Likewise.
13200 (mulsidi3): Likewise.
13201 (*mulsidi3_nov6): Likewise.
13202 (umulsidi3): Likewise.
13203 (umulsidi3_nov6): Likewise.
13204 (umaddsidi4): Likewise.
13205 (*umulsidi3adddi): Likewise.
13206 (smulsi3_highpart): Likewise.
13207 (*smulsi3_highpart_nov6): Likewise.
13208 (umulsi3_highpart): Likewise.
13209 (*umulsi3_highpart_nov6): Likewise.
13210 * config/arm/arm.h (arm_arch3m): Delete.
13211 * config/arm/arm.c (arm_arch3m): Delete.
13212 (arm_option_override_internal): Update armv3-related comment.
13213 (arm_configure_build_target): Delete use of isa_bit_mode32.
13214 (arm_option_reconfigure_globals): Delete set of arm_ach3m.
13215 (arm_rtx_costs_internal): Delete check of arm_arch3m.
13216 * config/arm/arm-fixed.md (mulsq3): Delete check for arm_arch3m.
13217 (mulsa3): Likewise.
13218 (mulusa3): Likewise.
13219 * config/arm/arm-protos.h (arm_arch3m): Delete.
13220 * config/arm/arm-tables.opt: Regenerate.
13221 * config/arm/arm-tune.md: Likewise.
13222 * config/arm/t-arm-elf (all_early_nofp): Delete mentions of
13223 deleted architectures.
13224
13225 2018-05-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13226
13227 * config/arm/arm-cpus.in (armv5, armv5e): Delete features.
13228 (armv5t, armv5te): New features.
13229 (ARMv5, ARMv5e): Delete fgroups.
13230 (ARMv5t, ARMv5te): Adjust for above changes.
13231 (ARMv6m): Likewise.
13232 (armv5, armv5e): Delete arches.
13233 * config/arm/arm.md (*call_reg_armv5): Use arm_arch5t instead of
13234 arm_arch5.
13235 (*call_reg_arm): Likewise.
13236 (*call_value_reg_armv5): Likewise.
13237 (*call_value_reg_arm): Likewise.
13238 (*call_symbol): Likewise.
13239 (*call_value_symbol): Likewise.
13240 (*sibcall_insn): Likewise.
13241 (*sibcall_value_insn): Likewise.
13242 (clzsi2): Likewise.
13243 (prefetch): Likewise.
13244 (define_split and define_peephole2 dependent on arm_arch5):
13245 Likewise.
13246 * config/arm/arm.h (TARGET_LDRD): Use arm_arch5te instead of
13247 arm_arch5e.
13248 (TARGET_ARM_QBIT): Likewise.
13249 (TARGET_DSP_MULTIPLY): Likewise.
13250 (enum base_architecture): Delete BASE_ARCH_5, BASE_ARCH_5E.
13251 (arm_arch5, arm_arch5e): Delete.
13252 (arm_arch5t, arm_arch5te): Declare.
13253 * config/arm/arm.c (arm_arch5, arm_arch5e): Delete.
13254 (arm_arch5t): Declare.
13255 (arm_option_reconfigure_globals): Update for the above.
13256 (arm_options_perform_arch_sanity_checks): Update comment, replace
13257 use of arm_arch5 with arm_arch5t.
13258 (use_return_insn): Likewise.
13259 (arm_emit_call_insn): Likewise.
13260 (output_return_instruction): Likewise.
13261 (arm_final_prescan_insn): Likewise.
13262 (arm_coproc_builtin_available): Likewise.
13263 * config/arm/arm-c.c (arm_cpu_builtins): Replace arm_arch5 and
13264 arm_arch5e with arm_arch5t and arm_arch5te.
13265 * config/arm/arm-protos.h (arm_arch5, arm_arch5e): Delete.
13266 (arm_arch5t, arm_arch5te): Declare.
13267 * config/arm/arm-tables.opt: Regenerate.
13268 * config/arm/t-arm-elf: Remove references to armv5, armv5e.
13269 * config/arm/t-multilib: Likewise.
13270 * config/arm/thumb1.md (*call_reg_thumb1_v5): Check arm_arch5t
13271 instead of arm_arch5.
13272 (*call_reg_thumb1): Likewise.
13273 (*call_value_reg_thumb1_v5): Likewise.
13274 (*call_value_reg_thumb1): Likewise.
13275 * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Remove now
13276 unreachable path.
13277 * doc/invoke.texi (ARM Options): Remove references to armv5, armv5e.
13278
13279 2018-05-18 Martin Liska <mliska@suse.cz>
13280
13281 PR gcov-profile/84846
13282 * doc/gcov.texi: Document -t option of gcov tool.
13283
13284 2018-05-18 Martin Liska <mliska@suse.cz>
13285
13286 PR gcov-profile/84846
13287 * gcov.c (print_usage): Add new -t option.
13288 (process_args): Handle the option.
13289 (generate_results): Use stdout as output when requested by
13290 the option.
13291
13292 2018-05-18 Martin Liska <mliska@suse.cz>
13293
13294 PR gcov-profile/84846
13295 * coverage.c (coverage_init): Write PWD to .gcno file.
13296 * doc/gcov.texi: Document how working directory is printed.
13297 * gcov-dump.c (dump_gcov_file): Print PWD.
13298 * gcov.c (output_intermediate_file): Likewise.
13299 (read_graph_file): Read PWD string.
13300 (output_lines): Print PWD.
13301
13302 2018-05-18 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
13303
13304 PR middle-end/85817
13305 * ipa-pure-const.c (malloc_candidate_p): Remove the check integer_zerop
13306 for retval and return false if all args to phi are zero.
13307
13308 2018-05-18 Richard Biener <rguenther@suse.de>
13309
13310 * gimple-ssa-evrp.c (class evrp_folder): Add simplify_stmt_using_ranges
13311 method.
13312 (evrp_dom_walker::before_dom_children): Call it.
13313
13314 2018-05-18 Richard Biener <rguenther@suse.de>
13315
13316 * tree-dfa.c (get_ref_base_and_extent): Use range-info to refine
13317 results when processing array refs with variable index.
13318
13319 2018-05-18 Toon Moene <toon@moene.org>
13320
13321 * doc/invoke.texi: Move -floop-unroll-and-jam documentation
13322 directly after that of -floop-interchange. Indicate that both
13323 options are enabled by default when specifying -O3.
13324
13325 2018-05-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13326
13327 * config/aarch64/aarch64-simd.md (vec_set<mode>): Use VALL_F16 mode
13328 iterator. Delete separate integer-mode vec_set<mode> expander.
13329 (aarch64_simd_vec_setv2di): Delete.
13330 (vec_setv2di): Delete.
13331 (aarch64_simd_vec_set<mode>): Delete all other patterns with that name.
13332 Use VALL_F16 mode iterator. Add LD1 alternative and use vwcore for
13333 the "w, r" alternative.
13334
13335 2018-05-18 Martin Liska <mliska@suse.cz>
13336
13337 * passes.def: Add pass_lower_switch and pass_lower_switch_O0.
13338 * tree-pass.h (make_pass_lower_switch_O0): New function.
13339 * tree-switch-conversion.c (node_has_low_bound): Remove.
13340 (node_has_high_bound): Likewise.
13341 (node_is_bounded): Likewise.
13342 (class pass_lower_switch): Make it a template type and create
13343 two instances.
13344 (pass_lower_switch::execute): Add template argument.
13345 (make_pass_lower_switch): New function.
13346 (make_pass_lower_switch_O0): New function.
13347 (do_jump_if_equal): Remove.
13348 (emit_case_nodes): Simplify to just handle all 3 cases and leave
13349 all the hard work to tree optimization passes.
13350
13351 2018-05-18 Martin Liska <mliska@suse.cz>
13352
13353 * dbgcnt.c (limit_low): Renamed from limit.
13354 (limit_high): New variable.
13355 (dbg_cnt_is_enabled): Check for upper limit.
13356 (dbg_cnt): Adjust dumping.
13357 (dbg_cnt_set_limit_by_index): Add new argument for high
13358 value.
13359 (dbg_cnt_set_limit_by_name): Likewise.
13360 (dbg_cnt_process_single_pair): Parse new format.
13361 (dbg_cnt_process_opt): Use strtok.
13362 (dbg_cnt_list_all_counters): Remove 'value' and add
13363 'limit_high'.
13364 * doc/invoke.texi: Document changes.
13365
13366 2018-05-18 Richard Sandiford <richard.sandiford@linaro.org>
13367
13368 * doc/sourcebuild.texi (scalar_all_fma): Document.
13369 * tree.def (FMA_EXPR): Delete.
13370 * internal-fn.def (FMA, FMS, FNMA, FNMS): New internal functions.
13371 * internal-fn.c (ternary_direct): New macro.
13372 (expand_ternary_optab_fn): Likewise.
13373 (direct_ternary_optab_supported_p): Likewise.
13374 * Makefile.in (build/genmatch.o): Depend on case-fn-macros.h.
13375 * builtins.c (fold_builtin_fma): Delete.
13376 (fold_builtin_3): Don't call it.
13377 * cfgexpand.c (expand_debug_expr): Remove FMA_EXPR handling.
13378 * expr.c (expand_expr_real_2): Likewise.
13379 * fold-const.c (operand_equal_p): Likewise.
13380 (fold_ternary_loc): Likewise.
13381 * gimple-pretty-print.c (dump_ternary_rhs): Likewise.
13382 * gimple.c (DEFTREECODE): Likewise.
13383 * gimplify.c (gimplify_expr): Likewise.
13384 * optabs-tree.c (optab_for_tree_code): Likewise.
13385 * tree-cfg.c (verify_gimple_assign_ternary): Likewise.
13386 * tree-eh.c (operation_could_trap_p): Likewise.
13387 (stmt_could_throw_1_p): Likewise.
13388 * tree-inline.c (estimate_operator_cost): Likewise.
13389 * tree-pretty-print.c (dump_generic_node): Likewise.
13390 (op_code_prio): Likewise.
13391 * tree-ssa-loop-im.c (stmt_cost): Likewise.
13392 * tree-ssa-operands.c (get_expr_operands): Likewise.
13393 * tree.c (commutative_ternary_tree_code, add_expr): Likewise.
13394 * fold-const-call.h (fold_fma): Delete.
13395 * fold-const-call.c (fold_const_call_ssss): Handle CFN_FMS,
13396 CFN_FNMA and CFN_FNMS.
13397 (fold_fma): Delete.
13398 * genmatch.c (combined_fn): New enum.
13399 (commutative_ternary_tree_code): Remove FMA_EXPR handling.
13400 (commutative_op): New function.
13401 (commutate): Use it. Handle more than 2 operands.
13402 (dt_operand::gen_gimple_expr): Use commutative_op.
13403 (parser::parse_expr): Allow :c to be used with non-binary
13404 operators if the commutative operand is known.
13405 * gimple-ssa-backprop.c (backprop::process_builtin_call_use): Handle
13406 CFN_FMS, CFN_FNMA and CFN_FNMS.
13407 (backprop::process_assign_use): Remove FMA_EXPR handling.
13408 * hsa-gen.c (gen_hsa_insns_for_operation_assignment): Likewise.
13409 (gen_hsa_fma): New function.
13410 (gen_hsa_insn_for_internal_fn_call): Use it for IFN_FMA, IFN_FMS,
13411 IFN_FNMA and IFN_FNMS.
13412 * match.pd: Add folds for IFN_FMS, IFN_FNMA and IFN_FNMS.
13413 * gimple-fold.h (follow_all_ssa_edges): Declare.
13414 * gimple-fold.c (follow_all_ssa_edges): New function.
13415 * tree-ssa-math-opts.c (convert_mult_to_fma_1): Use the
13416 gimple_build interface and use follow_all_ssa_edges to fold the result.
13417 (convert_mult_to_fma): Use direct_internal_fn_suppoerted_p
13418 instead of checking for optabs directly.
13419 * config/i386/i386.c (ix86_add_stmt_cost): Recognize FMAs as calls
13420 rather than FMA_EXPRs.
13421 * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Create a
13422 call to IFN_FMA instead of an FMA_EXPR.
13423
13424 2018-05-17 Jim Wilson <jimw@sifive.com>
13425
13426 * expr.c (do_tablejump): When converting index to Pmode, if we have a
13427 sign extended promoted subreg, and the range does not have the sign bit
13428 set, then do a sign extend.
13429
13430 * config/riscv/riscv.c (riscv_extend_comparands): In unsigned QImode
13431 test, check for sign extended subreg and/or constant operands, and
13432 do a sign extend in that case.
13433
13434 2018-05-17 Steve Ellcey <sellcey@cavium.com>
13435
13436 * config/aarch64/thunderx2t99.md (thunderx2t99_ls_both): Delete.
13437 (thunderx2t99_multiple): Delete psuedo-units from used cpus.
13438 Add untyped.
13439 (thunderx2t99_alu_shift): Remove alu_shift_reg, alus_shift_reg.
13440 Change logics_shift_reg to logics_shift_imm.
13441 (thunderx2t99_fp_loadpair_basic): Delete.
13442 (thunderx2t99_fp_storepair_basic): Delete.
13443 (thunderx2t99_asimd_int): Add neon_sub and neon_sub_q types.
13444 (thunderx2t99_asimd_polynomial): Delete.
13445 (thunderx2t99_asimd_fp_simple): Add neon_fp_mul_s_scalar_q
13446 and neon_fp_mul_d_scalar_q.
13447 (thunderx2t99_asimd_fp_conv): Add *int_to_fp* types.
13448 (thunderx2t99_asimd_misc): Delete neon_dup and neon_dup_q.
13449 (thunderx2t99_asimd_recip_step): Add missing *sqrt* types.
13450 (thunderx2t99_asimd_lut): Add missing tbl types.
13451 (thunderx2t99_asimd_ext): Delete.
13452 (thunderx2t99_asimd_load1_1_mult): Delete.
13453 (thunderx2t99_asimd_load1_2_mult): Delete.
13454 (thunderx2t99_asimd_load1_ldp): New.
13455 (thunderx2t99_asimd_load1): New.
13456 (thunderx2t99_asimd_load2): Add missing *load2* types.
13457 (thunderx2t99_asimd_load3): New.
13458 (thunderx2t99_asimd_load4): New.
13459 (thunderx2t99_asimd_store1_1_mult): Delete.
13460 (thunderx2t99_asimd_store1_2_mult): Delete.
13461 (thunderx2t99_asimd_store2_mult): Delete.
13462 (thunderx2t99_asimd_store2_onelane): Delete.
13463 (thunderx2t99_asimd_store_stp): New.
13464 (thunderx2t99_asimd_store1): New.
13465 (thunderx2t99_asimd_store2): New.
13466 (thunderx2t99_asimd_store3): New.
13467 (thunderx2t99_asimd_store4): New.
13468
13469 2018-05-17 Jerome Lambourg <lambourg@adacore.com>
13470
13471 * config/arm/arm_cmse.h (cmse_nsfptr_create, cmse_is_nsfptr): Remove
13472 #include <stdint.h>. Replace intptr_t with __INTPTR_TYPE__.
13473
13474 2018-05-17 Pat Haugen <pthaugen@us.ibm.com>
13475 Segher Boessenkool <segher@kernel.crashing.org>
13476
13477 PR target/85698
13478 * config/rs6000/rs6000.c (rs6000_output_move_128bit): Check dest
13479 operand.
13480
13481 2018-05-17 Richard Biener <rguenther@suse.de>
13482
13483 * tree-ssa-dse.c (dse_classify_store): Fix iterator increment
13484 for pruning loop and prune defs feeding only already visited PHIs.
13485
13486 2018-05-17 Richard Biener <rguenther@suse.de>
13487
13488 * tree-ssa-sccvn.c (vn_reference_lookup_3): Improve memset handling.
13489
13490 2018-05-17 Bin Cheng <bin.cheng@arm.com>
13491 Richard Biener <rguenther@suse.de>
13492
13493 PR tree-optimization/85793
13494 * tree-vect-stmts.c (vectorizable_load): Handle 1 element-wise load
13495 for VMAT_ELEMENTWISE.
13496
13497 2018-05-17 Richard Sandiford <richard.sandiford@linaro.org>
13498
13499 * internal-fn.h (lookup_internal_fn): Declare
13500 * internal-fn.c (lookup_internal_fn): New function.
13501 * gimple.c (gimple_build_call_from_tree): Handle calls to
13502 internal functions.
13503 * gimple-pretty-print.c (dump_gimple_call): Print "." before
13504 internal function names.
13505 * tree-pretty-print.c (dump_generic_node): Likewise.
13506 * tree-ssa-scopedtables.c (expr_hash_elt::print): Likewise.
13507
13508 2018-05-17 Richard Sandiford <richard.sandiford@linaro.org>
13509
13510 * gimple-fold.h (gimple_build): Make the function forms take
13511 combined_fn rather than built_in_function.
13512 (gimple_simplify): Likewise.
13513 * gimple-match-head.c (gimple_simplify): Likewise.
13514 * gimple-fold.c (gimple_build): Likewise.
13515 * tree-vect-loop.c (get_initial_def_for_reduction): Use gimple_build
13516 rather than gimple_build_call_internal.
13517 (get_initial_defs_for_reduction): Likewise.
13518 (vect_create_epilog_for_reduction): Likewise.
13519 (vectorizable_live_operation): Likewise.
13520
13521 2018-05-17 Martin Liska <mliska@suse.cz>
13522
13523 * gimple-ssa-sprintf.c (format_directive): Do not use
13524 space in between 'G_' and '('.
13525
13526 2018-05-17 Jakub Jelinek <jakub@redhat.com>
13527
13528 PR target/85323
13529 * config/i386/i386.c (ix86_fold_builtin): Handle masked shifts
13530 even if the mask is not all ones.
13531
13532 PR target/85323
13533 * config/i386/i386.c (ix86_fold_builtin): Fold shift builtins by
13534 vector.
13535 (ix86_gimple_fold_builtin): Likewise.
13536
13537 PR target/85323
13538 * config/i386/i386.c: Include tree-vector-builder.h.
13539 (ix86_vector_shift_count): New function.
13540 (ix86_fold_builtin): Fold shift builtins by scalar count.
13541 (ix86_gimple_fold_builtin): Likewise.
13542
13543 * config/i386/avx512fintrin.h (_mm512_set_epi16, _mm512_set_epi8,
13544 _mm512_setzero): New intrinsics.
13545
13546 2018-05-17 James Greenhalgh <james.greenhalgh@arm.com>
13547 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13548
13549 * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify
13550 code generation for cases where splatting a value is not useful.
13551 * simplify-rtx.c (simplify_ternary_operation): Simplify
13552 vec_merge across a vec_duplicate and a paradoxical subreg forming
13553 a vector mode to a vec_concat.
13554
13555 2018-05-17 Olga Makhotina <olga.makhotina@intel.com>
13556
13557 * config.gcc: Support "goldmont-plus".
13558 * config/i386/driver-i386.c (host_detect_local_cpu): Detect
13559 "goldmont-plus".
13560 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
13561 PROCESSOR_GOLDMONT_PLUS.
13562 * config/i386/i386.c (m_GOLDMONT_PLUS): Define.
13563 (processor_target_table): Add "goldmont-plus".
13564 (PTA_GOLDMONT_PLUS): Define.
13565 (ix86_lea_outperforms): Add TARGET_GOLDMONT_PLUS.
13566 (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT_PLUS.
13567 (fold_builtin_cpu): Add M_INTEL_GOLDMONT_PLUS.
13568 (fold_builtin_cpu): Add "goldmont-plus".
13569 (ix86_add_stmt_cost): Add TARGET_GOLDMONT_PLUS.
13570 (ix86_option_override_internal): Add "goldmont-plus".
13571 * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT_PLUS.
13572 (processor_type): Add PROCESSOR_GOLDMONT_PLUS.
13573 * config/i386/x86-tune.def: Add m_GOLDMONT_PLUS.
13574 * doc/invoke.texi: Add goldmont-plus as x86 -march=/-mtune= CPU type.
13575
13576 2018-05-17 Richard Biener <rguenther@suse.de>
13577
13578 PR tree-optimization/85757
13579 * tree-ssa-dse.c (dse_classify_store): Record a PHI def and
13580 remove defs that only feed that PHI from further processing.
13581
13582 2018-05-16 Jim Wilson <jimw@sifive.com>
13583
13584 * config/riscv/riscv.md (<optab>si3_mask, <optab>si3_mask_1): Prepend
13585 asterisk to name.
13586 (<optab>di3_mask, <optab>di3_mask_1): Likewise.
13587
13588 2018-05-16 Mark Wielaard <mark@klomp.org>
13589
13590 * dwarf2out.c (count_index_strings): New function.
13591 (output_indirect_strings): Call count_index_strings and generate
13592 header for dwarf_version >= 5.
13593
13594 2018-05-16 Mark Wielaard <mark@klomp.org>
13595
13596 * dwarf2out.c (dwarf_FORM): New function.
13597 (set_indirect_string): Use dwarf_FORM.
13598 (reset_indirect_string): Likewise.
13599 (size_of_die): Likewise.
13600 (value_format): Likewise.
13601 (output_die): Likewise.
13602 (add_skeleton_AT_string): Likewise.
13603 (output_macinfo_op): Likewise.
13604 (index_string): Likewise.
13605 (output_index_string_offset): Likewise.
13606 (output_index_string): Likewise.
13607 (count_index_strings): Likewise.
13608
13609 2018-05-16 Carl Love <cel@us.ibm.com>
13610
13611 * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions
13612 dcbt and dcbtstt with TH=16 if operands[2] is 0 and Power 8 or newer.
13613
13614 2018-05-16 Martin Jambor <mjambor@suse.cz>
13615
13616 * ipa-prop.c (ipa_free_all_edge_args): Remove.
13617 * ipa-prop.h (ipa_free_all_edge_args): Likewise.
13618
13619 2018-05-16 Wilco Dijkstra <wdijkstr@arm.com>
13620
13621 * config/aarch64/aarch64.md (fma<mode>4): Change into expand pattern.
13622 (fnma<mode>4): Likewise.
13623 (fms<mode>4): Likewise.
13624 (fnms<mode>4): Likewise.
13625 (aarch64_fma<mode>4): Rename insn, reorder accumulator operand.
13626 (aarch64_fnma<mode>4): Likewise.
13627 (aarch64_fms<mode>4): Likewise.
13628 (aarch64_fnms<mode>4): Likewise.
13629 (aarch64_fnmadd<mode>4): Likewise.
13630
13631 2018-05-16 Jason Merrill <jason@redhat.com>
13632
13633 * tree.c (warn_deprecated_use): Return bool. Simplify logic.
13634
13635 2018-05-16 Richard Biener <rguenther@suse.de>
13636
13637 * tree-vectorizer.h (struct stmt_info_for_cost): Add where member.
13638 (dump_stmt_cost): Declare.
13639 (add_stmt_cost): Dump cost we add.
13640 (add_stmt_costs): New function.
13641 (vect_model_simple_cost, vect_model_store_cost, vect_model_load_cost):
13642 No longer exported.
13643 (vect_analyze_stmt): Adjust prototype.
13644 (vectorizable_condition): Likewise.
13645 (vectorizable_live_operation): Likewise.
13646 (vectorizable_reduction): Likewise.
13647 (vectorizable_induction): Likewise.
13648 * tree-vect-loop.c (vect_analyze_loop_operations): Create local
13649 cost vector to pass to vectorizable_ and record afterwards.
13650 (vect_model_reduction_cost): Take cost vector argument and adjust.
13651 (vect_model_induction_cost): Likewise.
13652 (vectorizable_reduction): Likewise.
13653 (vectorizable_induction): Likewise.
13654 (vectorizable_live_operation): Likewise.
13655 * tree-vect-slp.c (vect_create_new_slp_node): Initialize
13656 SLP_TREE_NUMBER_OF_VEC_STMTS.
13657 (vect_analyze_slp_cost_1): Remove.
13658 (vect_analyze_slp_cost): Likewise.
13659 (vect_slp_analyze_node_operations): Take visited args and
13660 a target cost vector. Avoid processing already visited stmt sets.
13661 (vect_slp_analyze_operations): Use a local cost vector to gather
13662 costs and register those of non-discarded instances.
13663 (vect_bb_vectorization_profitable_p): Use add_stmt_costs.
13664 (vect_schedule_slp_instance): Remove copying of
13665 SLP_TREE_NUMBER_OF_VEC_STMTS. Instead assert that it is not
13666 zero.
13667 * tree-vect-stmts.c (record_stmt_cost): Remove path directly
13668 adding cost. Record cost entry location.
13669 (vect_prologue_cost_for_slp_op): Function to compute cost of
13670 a constant or invariant generated for SLP vect in the prologue,
13671 split out from vect_analyze_slp_cost_1.
13672 (vect_model_simple_cost): Make static. Adjust for SLP costing.
13673 (vect_model_promotion_demotion_cost): Likewise.
13674 (vect_model_store_cost): Likewise, make static.
13675 (vect_model_load_cost): Likewise.
13676 (vectorizable_bswap): Add cost vector arg and adjust.
13677 (vectorizable_call): Likewise.
13678 (vectorizable_simd_clone_call): Likewise.
13679 (vectorizable_conversion): Likewise.
13680 (vectorizable_assignment): Likewise.
13681 (vectorizable_shift): Likewise.
13682 (vectorizable_operation): Likewise.
13683 (vectorizable_store): Likewise.
13684 (vectorizable_load): Likewise.
13685 (vectorizable_condition): Likewise.
13686 (vectorizable_comparison): Likewise.
13687 (can_vectorize_live_stmts): Likewise.
13688 (vect_analyze_stmt): Likewise.
13689 (vect_transform_stmt): Adjust calls to vectorizable_*.
13690 * tree-vectorizer.c: Include gimple-pretty-print.h.
13691 (dump_stmt_cost): New function.
13692
13693 2018-05-16 Richard Biener <rguenther@suse.de>
13694
13695 * params.def (PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE): New param.
13696 * doc/invoke.texi (dse-max-alias-queries-per-store): Document.
13697 * tree-ssa-dse.c: Include tree-ssa-loop.h.
13698 (check_name): New callback.
13699 (dse_classify_store): Track cycles via a visited bitmap of PHI
13700 defs and simplify handling of in-loop and across loop dead stores
13701 and properly fail for loop-variant refs. Handle byte-tracking with
13702 multiple defs. Use PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE for
13703 limiting the walk.
13704
13705 2018-05-16 Richard Sandiford <richard.sandiford@linaro.org>
13706
13707 * tree-vectorizer.h (vect_get_vector_types_for_stmt): Declare.
13708 (vect_get_mask_type_for_stmt): Likewise.
13709 * tree-vect-slp.c (vect_two_operations_perm_ok_p): New function,
13710 split out from...
13711 (vect_build_slp_tree_1): ...here. Use vect_get_vector_types_for_stmt
13712 to determine the statement's vector type and the vector type that
13713 should be used for calculating nunits. Deal with cases in which
13714 the type has to be deferred.
13715 (vect_slp_analyze_node_operations): Use vect_get_vector_types_for_stmt
13716 and vect_get_mask_type_for_stmt to calculate STMT_VINFO_VECTYPE.
13717 * tree-vect-loop.c (vect_determine_vf_for_stmt_1)
13718 (vect_determine_vf_for_stmt): New functions, split out from...
13719 (vect_determine_vectorization_factor): ...here.
13720 * tree-vect-stmts.c (vect_get_vector_types_for_stmt)
13721 (vect_get_mask_type_for_stmt): New functions, split out from
13722 vect_determine_vectorization_factor.
13723
13724 2018-05-16 Richard Biener <rguenther@suse.de>
13725
13726 * tree-cfg.c (verify_gimple_assign_ternary): Properly
13727 verify the [VEC_]COND_EXPR embedded comparison.
13728
13729 2018-05-15 Martin Sebor <msebor@redhat.com>
13730
13731 PR tree-optimization/85753
13732 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Handle
13733 RECORD_TYPE in addition to ARRAY_TYPE.
13734
13735 2018-05-15 Martin Sebor <msebor@redhat.com>
13736
13737 PR middle-end/85643
13738 * calls.c (get_attr_nonstring_decl): Handle MEM_REF.
13739
13740 2018-05-15 Richard Biener <rguenther@suse.de>
13741
13742 * tree-ssa-dse.c (dse_classify_store): Remove use_stmt parameter,
13743 add by_clobber_p one. Change algorithm to collect all defs
13744 representing uses we need to walk and try reducing them to
13745 a single one before failing.
13746 (dse_dom_walker::dse_optimize_stmt): Adjust.
13747
13748 2018-05-13 Mark Wielaard <mark@klomp.org>
13749
13750 * dwarf2out.c (dwarf_OP): Handle DW_OP_addrx and DW_OP_constx.
13751 (size_of_loc_descr): Likewise.
13752 (output_loc_operands): Likewise.
13753 (output_loc_operands_raw): Likewise.
13754 (dw_addr_op): Use dwarf_OP () for DW_OP_constx and DW_OP_addrx.
13755 (resolve_addr_in_expr): Handle DW_OP_addrx and DW_OP_constx.
13756 (hash_loc_operands): Likewise.
13757 (compare_loc_operands): Likewise.
13758
13759 2018-05-14 Mark Wielaard <mark@klomp.org>
13760
13761 * dwarf2out.c (count_index_addrs): New function.
13762 (dwarf2out_finish): Use count_index_addrs to calculate addrs_length.
13763
13764 2018-05-15 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
13765
13766 PR tree-optimization/83648
13767 * ipa-pure-const.c (malloc_candidate_p): Allow function with NULL
13768 return value as malloc candidate.
13769
13770 2018-05-15 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
13771
13772 PR ipa/85734
13773 * ipa-pure-const.c (warn_function_malloc): Pass value of known_finite
13774 param as true in call to suggest_attribute.
13775
13776 2018-05-14 Segher Boessenkool <segher@kernel.crashing.org>
13777
13778 * doc/invoke.texi (RS/6000 and PowerPC Options): Delete @itemx for
13779 -mreadonly-in-sdata.
13780
13781 2018-05-14 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13782
13783 * config/aarch64/aarch64-simd.md (*aarch64_crypto_aese_fused):
13784 New pattern.
13785 (aarch64_crypto_aesd_fused): Likewise.
13786
13787 2018-05-14 Wilco Dijkstra <wdijkstr@arm.com>
13788
13789 * config/aarch64/aarch64.md (mov<mode>): Remove '*' in alternatives.
13790 (movsi_aarch64): Likewise.
13791 (load_pairsi): Likewise.
13792 (load_pairdi): Likewise.
13793 (store_pairsi): Likewise.
13794 (store_pairdi): Likewise.
13795 (load_pairsf): Likewise.
13796 (load_pairdf): Likewise.
13797 (store_pairsf): Likewise.
13798 (store_pairdf): Likewise.
13799 (zero_extend): Likewise.
13800 (trunc): Swap alternatives.
13801 (fcvt_target): Add '?' to prefer w over r.
13802
13803 2018-05-14 Jakub Jelinek <jakub@redhat.com>
13804
13805 PR target/85756
13806 * config/i386/i386.md: Disallow non-commutative arithmetics in
13807 last twpeephole for mem {+,-,&,|,^}= x; mem != 0 after cmpelim
13808 optimization. Use COMMUTATIVE_ARITH_P test rather than != MINUS
13809 in the peephole2 before it.
13810
13811 2018-05-14 Sebastian Peryt <sebastian.peryt@intel.com>
13812
13813 * common/config/i386/i386-common.c (OPTION_MASK_ISA_CLDEMOTE_SET,
13814 OPTION_MASK_ISA_CLDEMOTE_UNSET): New defines.
13815 (ix86_handle_option): Handle -mcldemote.
13816 * config.gcc: New header.
13817 * config/i386/cldemoteintrin.h: New file.
13818 * config/i386/cpuid.h (bit_CLDEMOTE): New bit.
13819 * config/i386/driver-i386.c (host_detect_local_cpu): Detect
13820 -mcldemote.
13821 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
13822 OPTION_MASK_ISA_CLDEMOTE.
13823 * config/i386/i386.c (ix86_target_string): Add -mcldemote.
13824 (ix86_valid_target_attribute_inner_p): Ditto.
13825 (enum ix86_builtins): Add IX86_BUILTIN_CLDEMOTE.
13826 (ix86_init_mmx_sse_builtins): Define __builtin_ia32_cldemote.
13827 (ix86_expand_builtin): Expand IX86_BUILTIN_CLDEMOTE.
13828 * config/i386/i386.h (TARGET_CLDEMOTE, TARGET_CLDEMOTE_P): New.
13829 * config/i386/i386.md (UNSPECV_CLDEMOTE): New.
13830 (cldemote): New.
13831 * config/i386/i386.opt: Add -mcldemote.
13832 * config/i386/x86intrin.h: New header.
13833 * doc/invoke.texi: Add -mcldemote.
13834
13835 2018-05-14 Richard Biener <rguenther@suse.de>
13836
13837 * doc/match-and-simplify.texi: Adjust :s documentation.
13838
13839 2018-05-14 Alexander Monakov <amonakov@ispras.ru>
13840
13841 * sort.cc (REORDER_23): Pass the type for the temporaries instead of
13842 intended memcpy size.
13843 (REORDER_45): Likewise.
13844
13845 2018-05-13 Alexander Monakov <amonakov@ispras.ru>
13846
13847 * sort.cc: New file.
13848 * system.h [!CHECKING_P] (qsort): Redirect to gcc_qsort.
13849 * vec.c (qsort_chk): Use gcc_qsort.
13850 * Makefile.in (OBJS-libcommon): Add sort.o.
13851 (build/sort.o): New target. Use it...
13852 (BUILD_RTL): ... here, and...
13853 (build/gencfn-macros): ... here, and...
13854 (build/genmatch): ... here.
13855
13856 2018-05-13 Kito Cheng <kito.cheng@gmail.com>
13857 Chung-Ju Wu <jasonwucj@gmail.com>
13858
13859 * config.gcc (nds32*-*-*): Check that n15 is valid to --with-cpu.
13860 * config/nds32/nds32-graywolf.md: New file.
13861 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_GRAYWOLF.
13862 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n15
13863 pipeline.
13864 * config/nds32/nds32-protos.h: More declarations for n15 pipeline.
13865 * config/nds32/nds32-utils.c: More implementations for n15 pipeline.
13866 * config/nds32/nds32.md (pipeline_model): Add graywolf.
13867 * config/nds32/nds32.opt (mcpu): Support n15 pipeline cpus.
13868 * config/nds32/pipelines.md: Include n15 settings.
13869
13870 2018-05-13 Kito Cheng <kito.cheng@gmail.com>
13871 Chung-Ju Wu <jasonwucj@gmail.com>
13872
13873 * config.gcc (nds32*-*-*): Check that n12/n13 are valid to --with-cpu.
13874 * config/nds32/nds32-n13.md: New file.
13875 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N12 and CPU_N13.
13876 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n12/n13
13877 pipeline.
13878 * config/nds32/nds32-protos.h: More declarations for n12/n13 pipeline.
13879 * config/nds32/nds32.md (pipeline_model): Add n13.
13880 * config/nds32/nds32.opt (mcpu): Support n12/n13 pipeline cpus.
13881 * config/nds32/pipelines.md: Include n13 settings.
13882
13883 2018-05-13 Kito Cheng <kito.cheng@gmail.com>
13884 Chung-Ju Wu <jasonwucj@gmail.com>
13885
13886 * config.gcc (nds32*-*-*): Check that n10/d10 are valid to --with-cpu.
13887 * config/nds32/nds32-n10.md: New file.
13888 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N10.
13889 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n10
13890 pipeline.
13891 * config/nds32/nds32-protos.h: More declarations for n10 pipeline.
13892 * config/nds32/nds32-utils.c: More implementations for n10 pipeline.
13893 * config/nds32/nds32.md (pipeline_model): Add n10.
13894 * config/nds32/nds32.opt (mcpu): Support n10 pipeline cpus.
13895 * config/nds32/pipelines.md: Include n10 settings.
13896
13897 2018-05-13 Monk Chiang <sh.chiang04@gmail.com>
13898 Kito Cheng <kito.cheng@gmail.com>
13899 Chung-Ju Wu <jasonwucj@gmail.com>
13900
13901 * config.gcc (nds32be-*-*): Handle --with-ext-dsp.
13902 * config/nds32/constants.md (unspec_element, unspec_volatile_element):
13903 Add enum values for DSP extension instructions.
13904 * config/nds32/constraints.md (Iu06, IU06, CVp5, CVs5, CVs2, CVhi):
13905 New constraints.
13906 * config/nds32/iterators.md (shifts, shiftrt, sat_plus, all_plus,
13907 sat_minus, all_minus, plus_minus, extend, sumax, sumin, sumin_max):
13908 New code iterators.
13909 (su, zs, uk, opcode, add_rsub, add_sub): New code attributes.
13910 * config/nds32/nds32-dspext.md: New file for DSP implementation.
13911 * config/nds32/nds32-intrinsic.c: Implementation of DSP extension.
13912 * config/nds32/nds32-intrinsic.md: Likewise.
13913 * config/nds32/nds32_intrinsic.h: Likewise.
13914 * config/nds32/nds32-md-auxiliary.c: Likewise.
13915 * config/nds32/nds32-memory-manipulation.c: Consider DSP extension.
13916 * config/nds32/nds32-predicates.c (const_vector_to_hwint): New.
13917 (nds32_valid_CVp5_p, nds32_valid_CVs5_p): New.
13918 (nds32_valid_CVs2_p, nds32_valid_CVhi_p): New.
13919 * config/nds32/nds32-protos.h: New declarations for DSP extension.
13920 * config/nds32/nds32-utils.c (extract_mac_non_acc_rtx): New case
13921 TYPE_DMAC in switch statement.
13922 * config/nds32/nds32.c: New checking and implementation for DSP
13923 extension instructions.
13924 * config/nds32/nds32.h: Likewise.
13925 * config/nds32/nds32.md: Likewise.
13926 * config/nds32/nds32.opt (mhw-abs, mext-dsp): New options.
13927 * config/nds32/predicates.md: Implement new predicates for DSP
13928 extension.
13929
13930 2018-05-11 Michael Meissner <meissner@linux.vnet.ibm.com>
13931
13932 * config/rs6000/rs6000.md (mov<mode>_softfloat, FMOVE32):
13933 Reformat alternatives and attributes so it is easier to identify
13934 which constraints/attributes go with which instruction.
13935 (mov<mode>_hardfloat32, FMOVE64): Likewise.
13936 (mov<mode>_softfloat32, FMOVE64): Likewise.
13937 (mov<mode>_hardfloat64, FMOVE64): Likewise.
13938 (mov<mode>_softfloat64, FMOVE64): Likewise.
13939
13940 2018-05-11 Kelvin Nilsen <kelvin@gcc.gnu.org>
13941
13942 * doc/extend.texi (PowerPC Built-in Functions): Rename this
13943 subsection.
13944 (Basic PowerPC Built-in Functions): The new name of the
13945 subsection previously known as "PowerPC Built-in Functions".
13946 (Basic PowerPC Built-in Functions Available on all Configurations):
13947 New subsubsection.
13948 (Basic PowerPC Built-in Functions Available on ISA 2.05): Likewise.
13949 (Basic PowerPC Built-in Functions Available on ISA 2.06): Likewise.
13950 (Basic PowerPC Built-in Functions Available on ISA 2.07): Likewise.
13951 (Basic PowerPC Built-in Functions Available on ISA 3.0): Likewise.
13952
13953 2018-05-11 Martin Jambor <mjambor@suse.cz>
13954
13955 PR ipa/85655
13956 * ipa-cp.c (intersect_with_plats): Check that the lattice contains
13957 single const.
13958
13959 2018-05-11 Richard Earnshaw <rearnsha@arm.com>
13960
13961 PR target/85733
13962 * config/arm/arm-cpus.in (fgroup ARMv6m): Add be8 feature.
13963
13964 2018-05-11 Sebastian Peryt <sebastian.peryt@intel.com>
13965
13966 * common/config/i386/i386-common.c (OPTION_MASK_ISA_WAITPKG_SET,
13967 OPTION_MASK_ISA_WAITPKG_UNSET): New defines.
13968 (ix86_handle_option): Handle -mwaitpkg.
13969 * config.gcc: New header.
13970 * config/i386/cpuid.h (bit_WAITPKG): New bit.
13971 * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mwaitpkg.
13972 * config/i386/i386-builtin-types.def ((UINT8, UNSIGNED, UINT64)): New
13973 function type.
13974 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
13975 OPTION_MASK_ISA_WAITPKG.
13976 * config/i386/i386.c (ix86_target_string): Add -mwaitpkg.
13977 (ix86_option_override_internal): Add PTA_WAITPKG.
13978 (ix86_valid_target_attribute_inner_p): Add -mwaitpkg.
13979 (enum ix86_builtins): Add IX86_BUILTIN_UMONITOR, IX86_BUILTIN_UMWAIT,
13980 IX86_BUILTIN_TPAUSE.
13981 (ix86_init_mmx_sse_builtins): Define __builtin_ia32_umonitor,
13982 __builtin_ia32_umwait and __builtin_ia32_tpause.
13983 (ix86_expand_builtin): Expand IX86_BUILTIN_UMONITOR,
13984 IX86_BUILTIN_UMWAIT, IX86_BUILTIN_TPAUSE.
13985 * config/i386/i386.h (TARGET_WAITPKG, TARGET_WAITPKG_P): New.
13986 * config/i386/i386.md (UNSPECV_UMWAIT, UNSPECV_UMONITOR,
13987 UNSPECV_TPAUSE): New.
13988 (umwait, umwait_rex64, umonitor_<mode>, tpause, tpause_rex64): New.
13989 * config/i386/i386.opt: Add -mwaitpkg.
13990 * config/i386/waitpkgintrin.h: New file.
13991 * config/i386/x86intrin.h: New header.
13992 * doc/invoke.texi: Add -mwaitpkg.
13993
13994 2018-05-11 Richard Earnshaw <rearnsha@arm.com>
13995
13996 PR target/85606
13997 * config/arm/arm-cpus.in: Add comment that ARMv6-m and ARMv6S-m are now
13998 equivalent.
13999 (cortex-m0): Use armv6s-m isa.
14000 (cortex-m0plus): Likewise.
14001 (cortex-m1): Likewise.
14002 (cortex-m0.small-multiply): Likewise.
14003 (cortex-m0plus.small-multiply): Likewise.
14004 (cortex-m1.small-multiply): Likewise.
14005
14006 2018-05-11 Allan Sandfeld Jensen <allan.jensen@qt.io>
14007 Jakub Jelinek <jakub@redhat.com>
14008
14009 PR tree-optimization/85692
14010 * tree-ssa-forwprop.c (simplify_vector_constructor): Try two
14011 source permute as well.
14012
14013 2018-05-11 Martin Liska <mliska@suse.cz>
14014
14015 PR sanitizer/85556
14016 * doc/extend.texi: Document LLVM style format for no_sanitize
14017 attribute.
14018
14019 2018-05-10 Michael Meissner <meissner@linux.vnet.ibm.com>
14020
14021 * config/rs6000/rs6000.c (mode_supports_dq_form): Rename
14022 mode_supports_vsx_dform_quad to mode_supports_dq_form.
14023 (mode_supports_vsx_dform_quad): Likewise.
14024 (mode_supports_vmx_dform): Move these functions to be next to the
14025 other mode_supports functions.
14026 (mode_supports_dq_form): Likewise.
14027 (quad_address_p): Change calls of mode_supports_vsx_dform_quad to
14028 mode_supports_dq_form.
14029 (reg_offset_addressing_ok_p): Likewise.
14030 (offsettable_ok_by_alignment): Likewise.
14031 (rs6000_legitimate_offset_address_p): Likewise.
14032 (legitimate_lo_sum_address_p): Likewise.
14033 (rs6000_legitimize_address): Likewise.
14034 (rs6000_legitimize_reload_address): Likewise.
14035 (rs6000_secondary_reload_inner): Likewise.
14036 (rs6000_preferred_reload_class): Likewise.
14037 (rs6000_output_move_128bit): Likewise.
14038
14039 2018-05-10 Uros Bizjak <ubizjak@gmail.com>
14040
14041 * config/i386/i386.c (ix86_expand_builtin) <case IX86_BUILTIN_RDPID>:
14042 Generate SImode target register for null target.
14043 <case IX86_BUILTIN_XGETBV>: Ditto.
14044 <case IX86_BUILTIN_XSETBV>: Optimize LSHIFTRT generation.
14045 * config/i386/xsaveintrin.h (_xgetbv): Add missing return.
14046
14047 2018-05-10 Carl Love <cel@us.ibm.com>
14048
14049 * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions
14050 dcbtt and dcbtstt if operands[2] is 0.
14051
14052 2018-05-10 Uros Bizjak <ubizjak@gmail.com>
14053
14054 PR target/85693
14055 * config/i386/sse.md (usadv64qi): New expander.
14056
14057 2018-05-10 Segher Boessenkool <segher@kernel.crashing.org>
14058
14059 * config/rs6000/altivec.md (altivec_vmrghb, altivec_vmrghh,
14060 altivec_vmrghw, altivec_vmrglb, altivec_vmrglh, altivec_vmrglw): Remove
14061 -maltivec=be support.
14062 (vec_widen_umult_even_v16qi, vec_widen_smult_even_v16qi,
14063 vec_widen_umult_even_v8hi, vec_widen_smult_even_v8hi,
14064 vec_widen_umult_even_v4si, vec_widen_smult_even_v4si,
14065 vec_widen_umult_odd_v16qi, vec_widen_smult_odd_v16qi,
14066 vec_widen_umult_odd_v8hi, vec_widen_smult_odd_v8hi,
14067 vec_widen_umult_odd_v4si, vec_widen_smult_odd_v4si, altivec_vpkpx,
14068 altivec_vpks<VI_char>ss, altivec_vpks<VI_char>us,
14069 altivec_vpku<VI_char>us, altivec_vpku<VI_char>um, altivec_vsum2sws,
14070 altivec_vsumsws): Adjust.
14071 (altivec_vspltb *altivec_vspltb_internal, altivec_vsplth,
14072 *altivec_vsplth_internal, altivec_vspltw, *altivec_vspltw_internal,
14073 altivec_vspltsf, *altivec_vspltsf_internal): Remove -maltivec=be
14074 support.
14075 (altivec_vperm_<mode>, altivec_vperm_<mode>_uns,
14076 altivec_vupkhs<VU_char>, altivec_vupkls<VU_char>, altivec_vupkhpx,
14077 altivec_vupklpx, altivec_lvsl, altivec_lvsr): Adjust.
14078 (altivec_lve<VI_char>x): Delete expand.
14079 (*altivec_lve<VI_char>x_internal): Rename to...
14080 (altivec_lve<VI_char>x): ... this.
14081 (altivec_lvxl_<mode>): Delete expand.
14082 (*altivec_lvxl_<mode>_internal): Rename to ...
14083 (altivec_lvxl_<mode>): ... this.
14084 (altivec_stvxl_<mode>): Delete expand.
14085 (*altivec_stvxl_<mode>_internal): Rename to ...
14086 (altivec_stvxl_<mode>): ... this.
14087 (altivec_stve<VI_char>x): Delete expand.
14088 (*altivec_stve<VI_char>x_internal): Rename to ...
14089 (altivec_stve<VI_char>x): ... this.
14090 (doublee<mode>2, unsdoubleev4si2, doubleo<mode>2, unsdoubleov4si2,
14091 doubleh<mode>2, unsdoublehv4si2, doublel<mode>2, unsdoublelv4si2,
14092 reduc_plus_scal_<mode>): Adjust.
14093 * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Adjust
14094 comment.
14095 (rs6000_cpu_cpp_builtins): Adjust.
14096 (altivec_resolve_overloaded_builtin): Remove -maltivec=be support.
14097 * config/rs6000/rs6000-protos.h (altivec_expand_lvx_be,
14098 altivec_expand_stvx_be, altivec_expand_stvex_be): Delete.
14099 * config/rs6000/rs6000.c (rs6000_option_override_internal): Remove
14100 -maltivec=be support.
14101 (rs6000_split_vec_extract_var): Adjust.
14102 (rs6000_split_v4si_init): Adjust.
14103 (swap_selector_for_mode): Delete.
14104 (altivec_expand_lvx_be, altivec_expand_stvx_be,
14105 altivec_expand_stvex_be): Delete.
14106 (altivec_expand_lv_builtin, altivec_expand_stv_builtin): Remove
14107 -maltivec=be support.
14108 (rs6000_gimple_fold_builtin): Ditto.
14109 (rs6000_generate_float2_double_code, rs6000_generate_float2_code):
14110 Adjust.
14111 * config/rs6000/rs6000.h (VECTOR_ELT_ORDER_BIG): Delete.
14112 (TARGET_DIRECT_MOVE_64BIT): Adjust.
14113 * config/rs6000/rs6000.md (split for extendsidi2 for vectors): Adjust.
14114 * config/rs6000/rs6000.opt (maltivec=le, maltivec=be): Delete.
14115 * config/rs6000/vsx.md (floate<mode>, unsfloatev2di, floato<mode>,
14116 unsfloatov2di, vsignedo_v2df, vsignede_v2df, vunsignedo_v2df,
14117 vunsignede_v2df, vsx_extract_<mode>_p9, *vsx_extract_si,
14118 *vsx_extract_<mode>_p8, *vsx_extract_si_<uns>float_df,
14119 *vsx_extract_si_<uns>float_<mode>, vsx_set_<mode>_p9, vsx_set_v4sf_p9,
14120 *vsx_insert_extract_v4sf_p9, *vsx_insert_extract_v4sf_p9_2, and an
14121 anonymous split): Adjust.
14122 (vsx_mergel_<mode>, vsx_mergeh_<mode>): Remove -maltivec=be support.
14123 (vsx_xxspltd_<mode>, extract4b, insert4b): Adjust.
14124
14125 2018-05-10 Eric Botcazou <ebotcazou@adacore.com>
14126
14127 * configure.ac (gcc_gxx_include_dir_add_sysroot): Set it to 1 only
14128 when --with-gxx-include-dir is also specified.
14129 * configure: Regenerate.
14130
14131 2018-05-09 Jim Wilson <jimw@sifive.com>
14132
14133 PR target/84797
14134 * config.gcc (riscv*-*-*): Handle --with-multilib-list.
14135 * config/riscv/t-withmultilib: New.
14136 * config/riscv/withmultilib.h: New.
14137 * doc/install.texi: Document RISC-V --with-multilib-list support.
14138
14139 2018-05-09 Richard Biener <rguenther@suse.de>
14140
14141 * tree-vect-slp.c (vect_bb_slp_scalar_cost): Fill a cost
14142 vector.
14143 (vect_bb_vectorization_profitable_p): Adjust. Compute
14144 actual scalar cost using the cost vector and the add_stmt_cost
14145 machinery.
14146
14147 2018-05-09 Segher Boessenkool <segher@kernel.crashing.org>
14148
14149 PR rtl-optimization/85645
14150 * config/rs6000/rs6000.c (rs6000_emit_prologue_components): Put a SET
14151 in the REG_CFA_REGISTER note for LR, don't leave it empty.
14152
14153 2018-05-09 Segher Boessenkool <segher@kernel.crashing.org>
14154
14155 PR rtl-optimization/85645
14156 * shrink-wrap.c (spread_components): Return a boolean saying if
14157 anything was changed.
14158 (try_shrink_wrapping_separate): Iterate spread_components until
14159 nothing changes anymore.
14160
14161 2018-05-09 Segher Boessenkool <segher@kernel.crashing.org>
14162
14163 PR rtl-optimization/85645
14164 * regrename.c (build_def_use): Also kill the chains that include the
14165 destination of a REG_CFA_REGISTER note.
14166
14167 2018-05-09 Segher Boessenkool <segher@kernel.crashing.org>
14168
14169 PR rtl-optimization/85645
14170 * regcprop.c (copyprop_hardreg_forward_1): Don't propagate into an
14171 insn that has a REG_CFA_REGISTER note.
14172
14173 2018-05-09 Richard Sandiford <richard.sandiford@linaro.org>
14174
14175 * cfgexpand.c (expand_clobber): New function.
14176 (expand_gimple_stmt_1): Use it.
14177 * tree-vect-stmts.c (vect_clobber_variable): New function,
14178 split out from...
14179 (vectorizable_simd_clone_call): ...here.
14180 (vectorizable_store): Emit a clobber either side of an
14181 IFN_STORE_LANES sequence.
14182 (vectorizable_load): Emit a clobber after an IFN_LOAD_LANES sequence.
14183
14184 2018-05-09 Tom de Vries <tom@codesourcery.com>
14185
14186 PR target/85626
14187 * config/nvptx/nvptx.md (define_insn "trap", define_insn "trap_if_true")
14188 (define_insn "trap_if_false"): Add exit after trap.
14189
14190 2018-05-09 Eric Botcazou <ebotcazou@adacore.com>
14191
14192 PR rtl-optimization/85638
14193 * bb-reorder.c: Include common/common-target.h.
14194 (create_forwarder_block): New function extracted from...
14195 (fix_up_crossing_landing_pad): ...here. Rename into...
14196 (dw2_fix_up_crossing_landing_pad): ...this.
14197 (sjlj_fix_up_crossing_landing_pad): New function.
14198 (find_rarely_executed_basic_blocks_and_crossing_edges): In SJLJ mode,
14199 call sjlj_fix_up_crossing_landing_pad if there are incoming EH edges
14200 from both partitions and exit the loop after one iteration.
14201
14202 2018-05-08 Kelvin Nilsen <kelvin@gcc.gnu.org>
14203
14204 Revert:
14205 * doc/extend.texi (PowerPC Built-in Functions): Rename this
14206 subsection.
14207 (Basic PowerPC Built-in Functions): The new name of the
14208 subsection previously known as "PowerPC Built-in Functions".
14209 (Basic PowerPC Built-in Functions Available on all Configurations):
14210 New subsubsection.
14211 (Basic PowerPC Built-in Functions Available on ISA 2.05): New
14212 subsubsection.
14213 (Basic PowerPC Built-in Functions Available on ISA 2.06): New
14214 subsubsection.
14215 (Basic PowerPC Built-in Functions Available on ISA 2.07): New
14216 subsubsection.
14217 (Basic PowerPC Built-in Functions Available on ISA 3.0): New
14218 subsubsection.
14219
14220 2018-05-08 Jim Wilson <jimw@sifive.com>
14221
14222 * config/riscv/linux.h (MUSL_ABI_SUFFIX): Delete unnecessary backslash.
14223 (LD_EMUL_SUFFIX): New.
14224 (LINK_SPEC): Use it.
14225
14226 2018-05-08 Kelvin Nilsen <kelvin@gcc.gnu.org>
14227
14228 * doc/extend.texi (PowerPC Built-in Functions): Rename this
14229 subsection.
14230 (Basic PowerPC Built-in Functions): The new name of the
14231 subsection previously known as "PowerPC Built-in Functions".
14232 (Basic PowerPC Built-in Functions Available on all Configurations):
14233 New subsubsection.
14234 (Basic PowerPC Built-in Functions Available on ISA 2.05): New
14235 subsubsection.
14236 (Basic PowerPC Built-in Functions Available on ISA 2.06): New
14237 subsubsection.
14238 (Basic PowerPC Built-in Functions Available on ISA 2.07): New
14239 subsubsection.
14240 (Basic PowerPC Built-in Functions Available on ISA 3.0): New
14241 subsubsection.
14242
14243 2018-05-08 Jakub Jelinek <jakub@redhat.com>
14244
14245 PR target/85683
14246 * config/i386/i386.md: Add peepholes for mem {+,-,&,|,^}= x; mem != 0
14247 after cmpelim optimization.
14248
14249 2018-05-08 Olga Makhotina <olga.makhotina@intel.com>
14250
14251 * config.gcc: Support "goldmont".
14252 * config/i386/driver-i386.c (host_detect_local_cpu): Detect "goldmont".
14253 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
14254 PROCESSOR_GOLDMONT.
14255 * config/i386/i386.c (m_GOLDMONT): Define.
14256 (processor_target_table): Add "goldmont".
14257 (PTA_GOLDMONT): Define.
14258 (ix86_lea_outperforms): Add TARGET_GOLDMONT.
14259 (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT.
14260 (fold_builtin_cpu): Add M_INTEL_GOLDMONT.
14261 (fold_builtin_cpu): Add "goldmont".
14262 (ix86_add_stmt_cost): Add TARGET_GOLDMONT.
14263 (ix86_option_override_internal): Add "goldmont".
14264 * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT.
14265 (processor_type): Add PROCESSOR_GOLDMONT.
14266 * config/i386/i386.md: Add CPU "glm".
14267 * config/i386/glm.md: New file.
14268 * config/i386/x86-tune.def: Add m_GOLDMONT.
14269 * doc/invoke.texi: Add goldmont as x86 -march=/-mtune= CPU type.
14270
14271 2018-05-08 Jakub Jelinek <jakub@redhat.com>
14272
14273 PR target/85572
14274 * config/i386/i386.c (ix86_expand_sse2_abs): Handle E_V2DImode and
14275 E_V4DImode.
14276 * config/i386/sse.md (abs<mode>2): Use VI_AVX2 iterator instead of
14277 VI1248_AVX512VL_AVX512BW. Handle V2DImode and V4DImode if not
14278 TARGET_AVX512VL using ix86_expand_sse2_abs. Formatting fixes.
14279
14280 PR target/85317
14281 * config/i386/i386.c (ix86_fold_builtin): Handle
14282 IX86_BUILTIN_{,P}MOVMSK{PS,PD,B}{,128,256}.
14283
14284 PR target/85480
14285 * config/i386/sse.md (ssequaterinsnmode): New mode attribute.
14286 (*<extract_type>_vinsert<shuffletype><extract_suf>_0): New pattern.
14287
14288 2018-05-08 Richard Earnshaw <rearnsha@arm.com>
14289
14290 PR target/85658
14291 * config/arm/parsecpu.awk (check_cpu): Fix operator precedence.
14292 (check_arch): Likewise.
14293 (check_fpu): Return the result rather than printing it.
14294 (end arch): Fix operator precedence.
14295 (end cpu): Likewise.
14296 (END): Print the result from check_fpu.
14297
14298 2018-05-08 Richard Sandiford <richard.sandiford@linaro.org>
14299 Alan Hayward <alan.hayward@arm.com>
14300 David Sherwood <david.sherwood@arm.com>
14301
14302 * config/aarch64/aarch64-sve.md (*pred_cmp<cmp_op><mode>_combine)
14303 (*pred_cmp<cmp_op><mode>, *fcm<cmp_op><mode>_and_combine)
14304 (*fcmuo<mode>_and_combine, *fcm<cmp_op><mode>_and)
14305 (*fcmuo<mode>_and): New patterns.
14306
14307 2018-05-08 Richard Sandiford <richard.sandiford@linaro.org>
14308
14309 * config/aarch64/iterators.md (UNSPEC_COND_LO, UNSPEC_COND_LS)
14310 (UNSPEC_COND_HI, UNSPEC_COND_HS, UNSPEC_COND_UO): Delete.
14311 (SVE_INT_CMP, SVE_FP_CMP): New code iterators.
14312 (cmp_op, sve_imm_con): New code attributes.
14313 (SVE_COND_INT_CMP, imm_con): Delete.
14314 (cmp_op): Remove above unspecs from int attribute.
14315 * config/aarch64/aarch64-sve.md (*vec_cmp<cmp_op>_<mode>): Rename
14316 to...
14317 (*cmp<cmp_op><mode>): ...this. Use UNSPEC_MERGE_PTRUE instead of
14318 comparison-specific unspecs.
14319 (*vec_cmp<cmp_op>_<mode>_ptest): Rename to...
14320 (*cmp<cmp_op><mode>_ptest): ...this and adjust likewise.
14321 (*vec_cmp<cmp_op>_<mode>_cc): Rename to...
14322 (*cmp<cmp_op><mode>_cc): ...this and adjust likewise.
14323 (*vec_fcm<cmp_op><mode>): Rename to...
14324 (*fcm<cmp_op><mode>): ...this and adjust likewise.
14325 (*vec_fcmuo<mode>): Rename to...
14326 (*fcmuo<mode>): ...this and adjust likewise.
14327 (*pred_fcm<cmp_op><mode>): New pattern.
14328 * config/aarch64/aarch64.c (aarch64_emit_unop, aarch64_emit_binop)
14329 (aarch64_emit_sve_ptrue_op, aarch64_emit_sve_ptrue_op_cc): New
14330 functions.
14331 (aarch64_unspec_cond_code): Remove handling of LTU, GTU, LEU, GEU
14332 and UNORDERED.
14333 (aarch64_gen_unspec_cond, aarch64_emit_unspec_cond): Delete.
14334 (aarch64_emit_sve_predicated_cond): New function.
14335 (aarch64_expand_sve_vec_cmp_int): Use aarch64_emit_sve_ptrue_op_cc.
14336 (aarch64_emit_unspec_cond_or): Replace with...
14337 (aarch64_emit_sve_or_conds): ...this new function. Use
14338 aarch64_emit_sve_ptrue_op for the individual comparisons and
14339 aarch64_emit_binop to OR them together.
14340 (aarch64_emit_inverted_unspec_cond): Replace with...
14341 (aarch64_emit_sve_inverted_cond): ...this new function. Use
14342 aarch64_emit_sve_ptrue_op for the comparison and
14343 aarch64_emit_unop to invert the result.
14344 (aarch64_expand_sve_vec_cmp_float): Update after the above
14345 changes. Use aarch64_emit_sve_ptrue_op for native comparisons.
14346
14347 2018-05-07 Nathan Sidwell <nathan@acm.org>
14348
14349 * doc/invoke.texi (C++ Dialect Options): Remove -ffor-scope.
14350 * doc/extend.texi (Deprecated Features): Remove -fno-for-scope
14351 (Backwards Compatibility): Likewise.
14352
14353 2018-05-07 Luis Machado <luis.machado@linaro.org>
14354
14355 PR bootstrap/85681
14356 Revert:
14357 2018-05-07 Luis Machado <luis.machado@linaro.org>
14358
14359 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
14360 <prefetch_dynamic_strides>: New const bool field.
14361 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
14362 prefetch_dynamic_strides.
14363 (exynosm1_prefetch_tune): Likewise.
14364 (thunderxt88_prefetch_tune): Likewise.
14365 (thunderx_prefetch_tune): Likewise.
14366 (thunderx2t99_prefetch_tune): Likewise.
14367 (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides
14368 to false.
14369 (aarch64_override_options_internal): Update to set
14370 PARAM_PREFETCH_DYNAMIC_STRIDES.
14371 * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
14372 * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
14373 * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
14374 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
14375 prefetch-dynamic-strides setting.
14376
14377 2018-05-07 Luis Machado <luis.machado@linaro.org>
14378
14379 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
14380 <minimum_stride>: New const int field.
14381 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
14382 minimum_stride field.
14383 (exynosm1_prefetch_tune): Likewise.
14384 (thunderxt88_prefetch_tune): Likewise.
14385 (thunderx_prefetch_tune): Likewise.
14386 (thunderx2t99_prefetch_tune): Likewise.
14387 (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048.
14388 (aarch64_override_options_internal): Update to set
14389 PARAM_PREFETCH_MINIMUM_STRIDE.
14390 * doc/invoke.texi (prefetch-minimum-stride): Document new option.
14391 * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
14392 * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
14393 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
14394 stride is constant and is below the minimum stride threshold.
14395
14396 2018-05-07 Luis Machado <luis.machado@linaro.org>
14397
14398 * config/aarch64/aarch64.c (qdf24xx_prefetch_tune) <l2_cache_size>: Set
14399 to 512.
14400
14401 2018-05-07 Luis Machado <luis.machado@linaro.org>
14402
14403 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
14404 <prefetch_dynamic_strides>: New const bool field.
14405 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
14406 prefetch_dynamic_strides.
14407 (exynosm1_prefetch_tune): Likewise.
14408 (thunderxt88_prefetch_tune): Likewise.
14409 (thunderx_prefetch_tune): Likewise.
14410 (thunderx2t99_prefetch_tune): Likewise.
14411 (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides
14412 to false.
14413 (aarch64_override_options_internal): Update to set
14414 PARAM_PREFETCH_DYNAMIC_STRIDES.
14415 * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
14416 * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
14417 * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
14418 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
14419 prefetch-dynamic-strides setting.
14420
14421 2018-05-07 Luis Machado <luis.machado@linaro.org>
14422
14423 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
14424 <minimum_stride>: New const int field.
14425 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
14426 minimum_stride field.
14427 (exynosm1_prefetch_tune): Likewise.
14428 (thunderxt88_prefetch_tune): Likewise.
14429 (thunderx_prefetch_tune): Likewise.
14430 (thunderx2t99_prefetch_tune): Likewise.
14431 (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048.
14432 (aarch64_override_options_internal): Update to set
14433 PARAM_PREFETCH_MINIMUM_STRIDE.
14434 * doc/invoke.texi (prefetch-minimum-stride): Document new option.
14435 * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
14436 * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
14437 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
14438 stride is constant and is below the minimum stride threshold.
14439
14440 2018-05-06 Jakub Jelinek <jakub@redhat.com>
14441
14442 PR c++/85659
14443 * cfgexpand.c (expand_asm_stmt): Don't create a temporary if
14444 the type is addressable. Don't force op into register if it has
14445 BLKmode.
14446
14447 2018-05-05 Roland McGrath <mcgrathr@google.com>
14448
14449 PR other/77609
14450 * varasm.c (default_section_type_flags): Set SECTION_NOTYPE for
14451 any section for which we don't know a specific type it should have,
14452 regardless of name. Previously this was done only for the exact
14453 names ".init_array", ".fini_array", and ".preinit_array".
14454 (default_elf_asm_named_section): Add comment about
14455 relationship with default_section_type_flags and SECTION_NOTYPE.
14456 (get_section): Don't consider it a type conflict if one side has
14457 SECTION_NOTYPE and the other doesn't, as long as neither has the
14458 SECTION_BSS et al used in the default_section_type_flags logic.
14459
14460 2018-05-05 Tom de Vries <tom@codesourcery.com>
14461
14462 PR target/85653
14463 * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_3): Define.
14464 (workaround_barsyncs): New function.
14465 (nvptx_reorg): Use workaround_barsyncs.
14466 * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
14467 (define_expand "nvptx_membar_cta"): New define_expand.
14468 (define_insn "*nvptx_membar_cta"): New insn.
14469
14470 2018-05-04 Pekka Jääskeläinen <pekka.jaaskelainen@parmance.com>
14471
14472 * brig-builtins.def: Add consts to ptrs etc. in BRIG builtin defs.
14473 To improve optimization opportunities.
14474 * builtin-types.def: The new needed builtin types for the above.
14475
14476 2018-05-04 Richard Biener <rguenther@suse.de>
14477
14478 * bb-reorder.c (sanitize_hot_paths): Release hot_bbs_to_check.
14479 * gimple-ssa-store-merging.c
14480 (imm_store_chain_info::output_merged_store): Remove redundant create,
14481 release split_store vector contents on failure.
14482 * tree-vect-slp.c (vect_schedule_slp_instance): Avoid leaking
14483 scalar stmt vector on cache hit.
14484
14485 2018-05-04 Segher Boessenkool <segher@kernel.crashing.org>
14486
14487 * common/config/rs6000/rs6000-common.c (rs6000_handle_option): Remove
14488 Xilinx FP support.
14489 * config.gcc (powerpc-xilinx-eabi*): Remove.
14490 * config/rs6000/predicates.md (easy_fp_constant): Remove Xilinx FP
14491 support.
14492 (fusion_addis_mem_combo_load): Ditto.
14493 * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Remove Xilinx
14494 FP support.
14495 (rs6000_cpu_cpp_builtins): Ditto.
14496 * config/rs6000/rs6000-linux.c
14497 (rs6000_linux_float_exceptions_rounding_supported_p): Ditto.
14498 * config/rs6000/rs6000-opts.h (enum fpu_type_t): Delete.
14499 * config/rs6000/rs6000.c (rs6000_debug_reg_global): Remove Xilinx FP
14500 support.
14501 (rs6000_setup_reg_addr_masks): Ditto.
14502 (rs6000_init_hard_regno_mode_ok): Ditto.
14503 (rs6000_option_override_internal): Ditto.
14504 (legitimate_lo_sum_address_p): Ditto.
14505 (rs6000_legitimize_address): Ditto.
14506 (rs6000_legitimize_reload_address): Ditto.
14507 (rs6000_legitimate_address_p): Ditto.
14508 (abi_v4_pass_in_fpr): Ditto.
14509 (setup_incoming_varargs): Ditto.
14510 (rs6000_gimplify_va_arg): Ditto.
14511 (rs6000_split_multireg_move): Ditto.
14512 (rs6000_savres_strategy): Ditto.
14513 (rs6000_emit_prologue_components): Ditto.
14514 (rs6000_emit_epilogue_components): Ditto.
14515 (rs6000_emit_prologue): Ditto.
14516 (rs6000_emit_epilogue): Ditto.
14517 (rs6000_elf_file_end): Ditto.
14518 (rs6000_function_value): Ditto.
14519 (rs6000_libcall_value): Ditto.
14520 * config/rs6000/rs6000.h: Ditto.
14521 (TARGET_MINMAX_SF, TARGET_MINMAX_DF): Delete, merge to ...
14522 (TARGET_MINMAX): ... this. New.
14523 (TARGET_SF_FPR, TARGET_DF_FPR, TARGET_SF_INSN, TARGET_DF_INSN): Delete.
14524 * config/rs6000/rs6000.md: Remove Xilinx FP support.
14525 (*movsi_internal1_single): Delete.
14526 * config/rs6000/rs6000.opt (msingle-float, mdouble-float, msimple-fpu,
14527 mfpu=, mxilinx-fpu): Delete.
14528 * config/rs6000/singlefp.h: Delete.
14529 * config/rs6000/sysv4.h: Remove Xilinx FP support.
14530 * config/rs6000/t-rs6000: Ditto.
14531 * config/rs6000/t-xilinx: Delete.
14532 * config/rs6000/titan.md: Adjust for fp_type removal.
14533 * config/rs6000/vsx.md: Remove Xilinx FP support.
14534 (VStype_simple): Delete.
14535 (VSfptype_simple, VSfptype_mul, VSfptype_div, VSfptype_sqrt): Delete.
14536 * config/rs6000/xfpu.h: Delete.
14537 * config/rs6000/xfpu.md: Delete.
14538 * config/rs6000/xilinx.h: Delete.
14539 * config/rs6000/xilinx.opt: Delete.
14540 * doc/invoke.texi (RS/6000 and PowerPC Options): Remove
14541 -msingle-float, -mdouble-float, -msimple-fpu, -mfpu=, and -mxilinx-fpu.
14542
14543 2018-05-04 Tom de Vries <tom@codesourcery.com>
14544
14545 PR libgomp/85639
14546 * builtins.c (expand_builtin_goacc_parlevel_id_size): Handle null target
14547 if ignore == 0.
14548
14549 2018-05-04 Richard Biener <rguenther@suse.de>
14550
14551 PR middle-end/85627
14552 * tree-complex.c (update_complex_assignment): We are always in SSA form.
14553 (expand_complex_div_wide): Likewise.
14554 (expand_complex_operations_1): Likewise.
14555 (expand_complex_libcall): Preserve EH info of the original stmt.
14556 (tree_lower_complex): Handle removed blocks.
14557 * tree.c (build_common_builtin_nodes): Do not set ECF_NOTRHOW
14558 on complex multiplication and division libcall builtins.
14559
14560 2018-05-04 Richard Biener <rguenther@suse.de>
14561
14562 PR middle-end/85574
14563 * fold-const.c (negate_expr_p): Restrict negation of operand
14564 zero of a division to when we know that can happen without
14565 overflow.
14566 (fold_negate_expr_1): Likewise.
14567
14568 2018-05-04 Jakub Jelinek <jakub@redhat.com>
14569
14570 PR libstdc++/85466
14571 * real.h (real_nextafter): Declare.
14572 * real.c (real_nextafter): New function.
14573 * fold-const-call.c (fold_const_nextafter): New function.
14574 (fold_const_call_sss): Call it for CASE_CFN_NEXTAFTER and
14575 CASE_CFN_NEXTTOWARD.
14576 (fold_const_call_1): For CASE_CFN_NEXTTOWARD call fold_const_call_sss
14577 even when arg1_mode is different from arg0_mode.
14578
14579 2018-05-03 Nathan Sidwell <nathan@acm.org>
14580
14581 * doc/extend.texi (Deprecated Features): Remove
14582 -ffriend-injection.
14583 (Backwards Compatibility): Likewise.
14584 * doc/invoke.texi (C++ Language Options): Likewise.
14585 (C++ Dialect Options): Likewise.
14586
14587 2018-05-03 Jakub Jelinek <jakub@redhat.com>
14588
14589 PR target/85530
14590 * config/i386/avx512fintrin.h (_mm512_mullox_epi64,
14591 _mm512_mask_mullox_epi64): New intrinsics.
14592
14593 2018-05-03 Tom de Vries <tom@codesourcery.com>
14594
14595 PR testsuite/85106
14596 * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
14597 dump files): Add offload-tree.
14598
14599 2018-05-03 Richard Biener <rguenther@suse.de>
14600
14601 PR tree-optimization/85615
14602 * tree-ssa-threadupdate.c (thread_block_1): Only allow exits
14603 to loops not nested in BBs loop father to avoid creating multi-entry
14604 loops.
14605
14606 2018-05-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14607
14608 PR tree-optimization/70291
14609 * tree-complex.c (expand_complex_libcall): Add type, inplace_p
14610 arguments. Change return type to tree. Emit libcall as a new
14611 statement rather than replacing existing one when inplace_p is true.
14612 (expand_complex_multiplication_components): New function.
14613 (expand_complex_multiplication): Expand floating-point complex
14614 multiplication using the above.
14615 (expand_complex_division): Rename inner_type parameter to type.
14616 Update expand_complex_libcall call-site.
14617 (expand_complex_operations_1): Update expand_complex_multiplication
14618 and expand_complex_division call-sites.
14619
14620 2018-05-02 Jakub Jelinek <jakub@redhat.com>
14621
14622 PR target/85582
14623 * config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
14624 *ashl<dwi>3_doubleword_mask_1, *<shift_insn><dwi>3_doubleword_mask,
14625 *<shift_insn><dwi>3_doubleword_mask_1): In condition require that
14626 the highest significant bit of the shift count mask is clear. In
14627 check whether and[sq]i3 is needed verify that all significant bits
14628 of the shift count other than the highest are set.
14629
14630 2018-05-02 Tom de Vries <tom@codesourcery.com>
14631
14632 PR libgomp/82428
14633 * builtins.def (DEF_GOACC_BUILTIN_ONLY): Define.
14634 * omp-builtins.def (BUILT_IN_GOACC_PARLEVEL_ID)
14635 (BUILT_IN_GOACC_PARLEVEL_SIZE): New builtin.
14636 * builtins.c (expand_builtin_goacc_parlevel_id_size): New function.
14637 (expand_builtin): Call expand_builtin_goacc_parlevel_id_size.
14638 * doc/extend.texi (Other Builtins): Add __builtin_goacc_parlevel_id and
14639 __builtin_goacc_parlevel_size.
14640
14641 2018-05-02 Richard Biener <rguenther@suse.de>
14642
14643 PR tree-optimization/85597
14644 * tree-vect-stmts.c (vectorizable_operation): For ternary SLP
14645 do not use split vect_get_vec_defs call but call vect_get_slp_defs
14646 directly.
14647
14648 2018-05-02 Tom de Vries <tom@codesourcery.com>
14649
14650 PR testsuite/85106
14651 * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
14652 dump files): Add ltrans-tree.
14653
14654 2018-05-02 Tom de Vries <tom@codesourcery.com>
14655
14656 PR testsuite/85106
14657 * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
14658 dump files): Add wpa-ipa.
14659
14660 2018-05-02 Segher Boessenkool <segher@kernel.crashing.org>
14661
14662 * config.gcc (powerpc*-*-*): Remove paired.h. Unsupport the
14663 powerpc*-*-linux*paired* target.
14664 * config/rs6000/750cl.h: Delete.
14665 * config/rs6000/paired.h: Delete.
14666 * config/rs6000/paired.md: Delete.
14667 * config/rs6000/predicates.md (easy_vector_constant): Remove paired
14668 float support.
14669 * config/rs6000/rs6000-builtin.def: Remove paired float support.
14670 * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Update
14671 comment. Remove paired float support.
14672 * config/rs6000/rs6000-modes.def: Remove V2SF and V2SI.
14673 * config/rs6000/rs6000-opts.h (enum rs6000_vector): Delete
14674 VECTOR_PAIRED.
14675 * config/rs6000/rs6000-protos.h (paired_expand_vector_init,
14676 paired_emit_vector_cond_expr, paired_expand_vector_move): Delete
14677 declarations.
14678 * config/rs6000/rs6000.c: Remove paired float support.
14679 (paired_expand_vector_init, paired_expand_vector_move,
14680 paired_emit_vector_compare, paired_emit_vector_cond_expr,
14681 (paired_expand_lv_builtin, paired_expand_stv_builtin,
14682 paired_expand_builtin, paired_expand_predicate_builtin,
14683 paired_init_builtins): Delete.
14684 * config/rs6000/rs6000.h: Remove paired float support.
14685 * config/rs6000/rs6000.md: Remove paired float support.
14686 (move_from_CR_ov_bit): Delete.
14687 * config/rs6000/rs6000.opt (mpaired): Delete.
14688 * config/rs6000/t-rs6000: Remove paired.md from MD_INCLUDES.
14689 * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mpaired.
14690
14691 2018-05-02 Richard Biener <rguenther@suse.de>
14692
14693 PR middle-end/85567
14694 * gimplify.c (gimplify_save_expr): When in SSA form allow
14695 SAVE_EXPRs to compute to SSA vars.
14696
14697 2018-05-02 Jakub Jelinek <jakub@redhat.com>
14698
14699 PR target/85582
14700 * config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
14701 *ashl<dwi>3_doubleword_mask_1, *<shift_insn><dwi>3_doubleword_mask,
14702 *<shift_insn><dwi>3_doubleword_mask_1): If and[sq]i3 is needed, don't
14703 clobber operands[2], instead use a new pseudo. Formatting fixes.
14704
14705 2018-05-02 Richard Sandiford <richard.sandiford@linaro.org>
14706
14707 PR tree-optimization/85586
14708 * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Only
14709 exit early for statements in the same group if the accesses are
14710 not strided.
14711
14712 2018-05-02 Tom de Vries <tom@codesourcery.com>
14713
14714 PR lto/85451
14715 * lto-wrapper.c (compile_offload_image): Add "could not find mkoffload"
14716 error message.
14717
14718 2018-05-01 Marc Glisse <marc.glisse@inria.fr>
14719
14720 PR tree-optimization/85143
14721 * match.pd (A<B&A<C): Extend to BIT_IOR_EXPR.
14722
14723 2018-05-01 Tom de Vries <tom@codesourcery.com>
14724
14725 PR lto/85451
14726 * config/nvptx/mkoffload.c (main): Suggest using -B in "offload compiler
14727 not found" error message.
14728
14729 2018-05-01 Tom de Vries <tom@codesourcery.com>
14730
14731 PR other/83786
14732 * vec.h (VEC_ORDERED_REMOVE_IF, VEC_ORDERED_REMOVE_IF_FROM_TO): Define.
14733 * vec.c (test_ordered_remove_if): New function.
14734 (vec_c_tests): Call test_ordered_remove_if.
14735 * dwarf2cfi.c (connect_traces): Use VEC_ORDERED_REMOVE_IF_FROM_TO.
14736 * lto-streamer-out.c (prune_offload_funcs): Use VEC_ORDERED_REMOVE_IF.
14737 * tree-vect-patterns.c (vect_pattern_recog_1): Use
14738 VEC_ORDERED_REMOVE_IF.
14739
14740 2018-05-01 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
14741
14742 PR tree-optimization/82665
14743 * vr-values.c (vr_values::extract_range_from_binary_expr): Handle
14744 pointer subtraction where arguments come from a memchr call.
14745
14746 2018-05-01 Jakub Jelinek <jakub@redhat.com>
14747
14748 * configure.ac (LD_AS_NEEDED_OPTION, LD_NO_AS_NEEDED_OPTION): Use
14749 --push-state --as-needed and --pop-state instead of --as-needed and
14750 --no-as-needed if ld supports it.
14751 * configure: Regenerated.
14752
14753 PR web/85578
14754 * doc/install.texi2html: Replace _002d with - and _002a with * in
14755 generated html files using sed.
14756
14757 2018-04-30 David Malcolm <dmalcolm@redhat.com>
14758
14759 PR c++/85523
14760 * gcc-rich-location.c (blank_line_before_p): New function.
14761 (use_new_line): New function.
14762 (gcc_rich_location::add_fixit_insert_formatted): New function.
14763 * gcc-rich-location.h
14764 (gcc_rich_location::add_fixit_insert_formatted): New function.
14765
14766 2018-04-30 David Malcolm <dmalcolm@redhat.com>
14767
14768 * selftest.c (assert_streq): Rename "expected" and "actual" to
14769 "val1" and "val2". Extend NULL-handling to cover both inputs
14770 symmetrically, while still requiring both to be non-NULL for a pass.
14771 * selftest.h (assert_streq): Rename "expected" and "actual" to
14772 "val1" and "val2".
14773 (ASSERT_EQ): Likewise.
14774 (ASSERT_EQ_AT): Likewise.
14775 (ASSERT_KNOWN_EQ): Likewise.
14776 (ASSERT_KNOWN_EQ_AT): Likewise.
14777 (ASSERT_NE): Likewise.
14778 (ASSERT_MAYBE_NE): Likewise.
14779 (ASSERT_MAYBE_NE_AT): Likewise.
14780 (ASSERT_STREQ): Likewise. Clarify that both must be non-NULL for
14781 the assertion to pass.
14782 (ASSERT_STREQ_AT): Likewise.
14783
14784 2018-04-30 Jonathan Wakely <jwakely@redhat.com>
14785
14786 * doc/invoke.texi (-fpie, -fPIE): Fix grammar and clarify
14787 interaction with -pie.
14788
14789 2018-04-30 David Malcolm <dmalcolm@redhat.com>
14790
14791 * selftest.h: Fix alphabetization of per-source-file selftest
14792 declarations.
14793
14794 2018-04-30 Jason Merrill <jason@redhat.com>
14795
14796 PR c++/61982 - dead stores to destroyed objects.
14797 * gimplify.c (gimplify_modify_expr): Simplify complex lvalue on LHS
14798 of clobber.
14799
14800 2018-04-30 Jason Merrill <jason@redhat.com>
14801
14802 * tree.c (build_clobber): New.
14803 * tree.h: Declare it.
14804 * gimplify.c (gimplify_bind_expr, gimplify_target_expr): Use it.
14805
14806 2018-04-30 David Malcolm <dmalcolm@redhat.com>
14807
14808 * diagnostic-show-locus.c (layout::layout): Update for
14809 location_get_source_line returning a char_span.
14810 (struct char_span): Move to input.h.
14811 (struct correction): Update for fields in char_span becoming
14812 private.
14813 (struct source_line): Update for location_get_source_line
14814 returning a char_span.
14815 (layout::print_line): Likewise.
14816 * edit-context.c (edited_file::print_content): Likewise.
14817 (edited_file::print_diff_hunk): Likewise.
14818 (edited_file::print_run_of_changed_lines): Likewise.
14819 (edited_file::get_num_lines): Likewise.
14820 (edited_line::edited_line): Likewise.
14821 * final.c (asm_show_source): Likewise.
14822 * input.c (location_get_source_line): Convert return type
14823 from const char * to char_span, losing the final "line_len"
14824 param.
14825 (dump_location_info): Update for the above.
14826 (get_substring_ranges_for_loc): Likewise. Use a char_span
14827 when handling the literal within the line.
14828 (test_reading_source_line): Update for location_get_source_line
14829 returning a char_span.
14830 * input.h (class char_span): Move here from
14831 diagnostic-show-locus.c, converting from a struct to a class.
14832 Make data members private.
14833 (char_span::operator bool): New.
14834 (char_span::length): New.
14835 (char_span::get_buffer): New.
14836 (char_span::operator[]): New.
14837 (char_span::subspan): Make const.
14838 (char_span::xstrdup): New.
14839 (location_get_source_line): Convert return type from const char *
14840 to char_span, losing the final "line_size" param.
14841
14842 2018-04-30 Jan Hubicka <jh@suse.cz>
14843
14844 * lto-wrapper.c (ltrans_priorities): New static var.
14845 (cmp_priority): New.
14846 (run_gcc): Read priorities and if doing parallel build order
14847 the Makefile by them.
14848
14849 2018-04-30 David Malcolm <dmalcolm@redhat.com>
14850
14851 * input.h (builtins_location_check): Convert to a STATIC_ASSERT.
14852
14853 2018-04-30 Richard Biener <rguenther@suse.de>
14854
14855 * tree-cfg.c (verify_address): Remove base argument, add
14856 flag whether to check TREE_ADDRESSABLE and do that.
14857 (verify_expr): Remove.
14858 (verify_types_in_gimple_reference): Add pieces from verify_expr.
14859 (verify_gimple_assign_single): Likewise.
14860 (verify_gimple_switch): Likewise.
14861 (verify_expr_location_1): Dereference tp once. Add (disabled)
14862 piece from verify_expr.
14863 (verify_gimple_in_cfg): Do not call verify_expr on all ops.
14864
14865 2018-04-30 Claudiu Zissulescu <claziss@synopsys.com>
14866
14867 * config/arc/linux.h (CLEAR_INSN_CACHE): Define.
14868
14869 2018-04-30 Claudiu Zissulescu <claziss@synopsys.com>
14870
14871 * config/arc/arc-protos.h (prepare_extend_operands): Remove.
14872 (small_data_pattern): Likewise.
14873 (arc_rewrite_small_data): Likewise.
14874 * config/arc/arc.c (LEGITIMATE_SMALL_DATA_OFFSET_P): Remove.
14875 (LEGITIMATE_SMALL_DATA_ADDRESS_P): Likewise.
14876 (get_symbol_alignment): New function.
14877 (legitimate_small_data_address_p): Likewise.
14878 (legitimate_scaled_address): Update, call
14879 legitimate_small_data_address_p.
14880 (output_sdata): New static variable.
14881 (arc_print_operand): Update how we handle small data operands.
14882 (arc_print_operand_address): Likewise.
14883 (arc_legitimate_address_p): Update, use
14884 legitimate_small_data_address_p.
14885 (arc_rewrite_small_data_p): Remove.
14886 (arc_rewrite_small_data_1): Likewise.
14887 (arc_rewrite_small_data): Likewise.
14888 (small_data_pattern): Likewise.
14889 (compact_sda_memory_operand): Update to use
14890 legitimate_small_data_address_p and get_symbol_alignment.
14891 (prepare_move_operands): Don't rewite sdata pattern.
14892 (prepare_extend_operands): Remove.
14893 * config/arc/arc.md (zero_extendqihi2): Don't rewrite sdata
14894 pattern.
14895 (zero_extendqisi2): Likewise.
14896 (zero_extendhisi2): Likewise.
14897 (extendqihi2): Likewise.
14898 (extendqisi2): Likewise.
14899 (extendhisi2): Likewise.
14900 (addsi3): Likewise.
14901 (subsi3): Likewise.
14902 (andsi3): Likewise.
14903 * config/arc/constraints.md (Usd): Change it to memory constraint.
14904
14905 2018-04-30 Claudiu Zissulescu <claziss@synopsys.com>
14906
14907 * config/arc/arc.c (arc_split_move): Allow signed 6-bit constants
14908 as source of std instructions.
14909 * config/arc/arc.md (movsi_insn): Update pattern predicate to
14910 allow 6-bit constants as source for store instructions.
14911 (movdi_insn): Update instruction pattern to allow 6-bit constants
14912 as source for store instructions.
14913
14914 2018-04-30 Jonathan Wakely <jwakely@redhat.com>
14915
14916 * doc/invoke.texi (-fdebug-types-section): Fix grammar.
14917
14918 2018-04-30 Nathan Sidwell <nathan@acm.org>
14919 Sandra Loosemore <sandra@codesourcery.com>
14920
14921 * dumpfile.c (dump_open): Allow '-' for stdout.
14922 * doc/invoke.texi (Developer Options): Document dump filename
14923 determination early. Document stdin/stdout selection.
14924
14925 2018-04-30 Andrew Sadek <andrew.sadek.se@gmail.com>
14926
14927 Microblaze Target: PIC data text relative
14928
14929 * config/microblaze/microblaze.opt: add new option -mpic-data-text-rel.
14930 * config/microblaze/microblaze-protos.h (microblaze_constant_address_p):
14931 Add declaration.
14932 * config/microblaze/microblaze.h (microblaze_constant_address_p):
14933 CONSTANT_ADDRESS_P definition to microblaze_constant_address_p.
14934 * config/microblaze/microblaze.c (TARGET_PIC_DATA_TEXT_REL):
14935 New addressing mode for data-text relative position indepenedent code.
14936 (microblaze_classify_unspec): add 'UNSPEC_TEXT' case ->
14937 'ADDRESS_SYMBOLIC_TXT_REL'.
14938 (microblaze_classify_address): Add handling for UNSPEC + CONST_INT.
14939 (microblaze_legitimate_pic_operand): Exclude function calls from
14940 pic operands in case of TARGET_PIC_DATA_TEXT_REL option.
14941 (microblaze_legitimize_address): Generate 'UNSPEC_TEXT' for all possible
14942 addresses cases.
14943 (microblaze_address_insns): Add 'ADDRESS_SYMBOLIC_TXT_REL' case.
14944 (print_operand): Add 'ADDRESS_SYMBOLIC_TXT_REL' case.
14945 (print_operand_address): Add 'ADDRESS_SYMBOLIC_TXT_REL' case + handling
14946 for 'address + offset'.
14947 (microblaze_expand_prologue): Add new function prologue call for
14948 'r20' assignation.
14949 (microblaze_asm_generate_pic_addr_dif_vec): Override new target hook
14950 'TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC' to disable address diff vector
14951 table in case of TARGET_PIC_DATA_TEXT_REL.
14952 (expand_pic_symbol_ref): Add handling for 'UNSPEC_TEXT'.
14953 * config/microblaze/microblaze.md (TARGET_PIC_DATA_TEXT_REL):
14954 Add new macros 'UNSPEC_TEXT',
14955 'UNSPEC_SET_TEXT' + add rule for setting r20 in function prologue
14956 + exclude function calls from 'UNSPEC_PLT' in case of data text
14957 relative mode.
14958 * doc/tm.texi.in (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add
14959 new target hook for generating address diff vector tables in case of
14960 flag_pic.
14961 * doc/tm.texi : Regenerate.
14962 * stmt.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Append new condition
14963 'targetm.asm_out.generate_pic_addr_diff_vec' to flag_pic in case
14964 of addr diff vector generation.
14965 * target.def (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add
14966 target hook definition.
14967 * targhooks.h, targhooks.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC):
14968 Add default function for generate_pic_addr_diff_vec -> flag_pic.
14969 * doc/invoke.texi (Add new pic option): Add new microblaze pic
14970 option for data text relative.
14971
14972 2018-04-30 Richard Biener <rguenther@suse.de>
14973
14974 * tree-chrec.h (evolution_function_is_constant_p): Remove
14975 redundant check.
14976 * tree-cfg.c (tree_node_can_be_shared): Re-order checks.
14977
14978 2018-04-30 Richard Biener <rguenther@suse.de>
14979
14980 PR bootstrap/85571
14981 * dwarf2out.c (gen_producer_string): Ignore -fchecking[=].
14982
14983 2018-04-30 Richard Biener <rguenther@suse.de>
14984
14985 PR tree-optimization/28364
14986 PR tree-optimization/85275
14987 * tree-ssa-loop-ch.c (ch_base::copy_headers): Stop after
14988 copying first exit test.
14989
14990 2018-04-28 Mark Wielaard <mark@klomp.org>
14991
14992 * dwarf2out.c (dwarf2out_finish): Add .debug_addr table header for
14993 dwarf_version >= 5.
14994 (dwarf_AT): Handle DW_AT_addr_base.
14995 (add_top_level_skeleton_die_attrs): Use dwarf_AT for DW_AT_addr_base.
14996
14997 2018-04-28 Uros Bizjak <ubizjak@gmail.com>
14998
14999 PR target/84431
15000 * config/i386/i386.md (*ashl<dwi>3_doubleword_mask): New pattern.
15001 (*ashl<dwi>3_doubleword_mask_1): Ditto.
15002 (*<shift_insn><dwi>3_doubleword_mask): Ditto.
15003 (*<shift_insn><dwi>3_doubleword_mask_1): Ditto.
15004
15005 2018-04-28 Richard Biener <rguenther@suse.de>
15006
15007 * tree-cfg.c (verify_gimple_phi): Take a gphi * argument.
15008 (verify_gimple_in_cfg): Rename visited_stmts to visited_throwing_stmts
15009 to reflect use. Only add interesting stmts.
15010
15011 2018-04-27 Martin Jambor <mjambor@suse.cz>
15012
15013 PR ipa/85549
15014 * ipa-cp.c (find_aggregate_values_for_callers_subset): Make sure
15015 the jump function allows for passing through aggregate values.
15016
15017 2018-04-27 David Malcolm <dmalcolm@redhat.com>
15018
15019 * input.h (in_system_header_at): Convert from macro to inline
15020 function.
15021 (from_macro_expansion_at): Likewise.
15022 (from_macro_definition_at): Likewise.
15023
15024 2018-04-27 Jeff Law <law@redhat.com>
15025
15026 * config.gcc: Mark tile* targets as deprecated/obsolete.
15027
15028 2018-04-27 Richard Biener <rguenther@suse.de>
15029
15030 * config/aarch64/aarch64.c: Simplify ap.__stack advance and
15031 fix for ILP32.
15032
15033 2018-04-27 Richard Biener <rguenther@suse.de>
15034
15035 * tree-cfg.c (verify_expr): Make dead code hit gcc_unreachable.
15036
15037 2018-04-27 Uros Bizjak <ubizjak@gmail.com>
15038
15039 * config/i386/i386.md (*movti_internal): Substitute Ye constraint
15040 with Yd constraint. Set "preferred_for_speed" attribute from
15041 TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for alternatives
15042 with Yd constraint.
15043 (*movdi_internal): Ditto.
15044 (movti_interunit splitters): Remove
15045 TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC from insn condition.
15046 (movdi_interunit splitters): Ditto.
15047 * config/i386/constraints.md (Ye): Remove.
15048 (Yd): Do not depend on TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC.
15049
15050 2018-04-27 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
15051
15052 PR target/85512
15053 * config/aarch64/constraints.md (Usg): Limit to 31.
15054 (Usj): Limit to 63.
15055
15056 2018-04-27 Jakub Jelinek <jakub@redhat.com>
15057
15058 PR tree-optimization/85529
15059 * tree-ssa-reassoc.c (optimize_range_tests_var_bound): Add FIRST_BB
15060 argument. Don't call get_nonzero_bits if opcode is ERROR_MARK_NODE,
15061 rhs2 def stmt's bb is dominated by first_bb and it isn't an obvious
15062 zero extension or masking of the MSB bit.
15063 (optimize_range_tests): Add FIRST_BB argument, pass it through
15064 to optimize_range_tests_var_bound.
15065 (maybe_optimize_range_tests, reassociate_bb): Adjust
15066 optimize_range_tests callers.
15067
15068 2018-04-26 Richard Biener <rguenther@suse.de>
15069 Jakub Jelinek <jakub@redhat.com>
15070
15071 * cgraph.h (symbol_table): Just declare debug method here.
15072 * symtab.c (symbol_table::debug): Define.
15073
15074 2018-04-26 Eric Botcazou <ebotcazou@adacore.com>
15075
15076 * loop-invariant.c (may_assign_reg_p): Return false for frame pointer.
15077
15078 2018-04-26 Uros Bizjak <ubizjak@gmail.com>
15079
15080 * config/i386/i386.md ("isa" attribute): Add x64_sse2.
15081 ("enabled" attribute): Handle x64_sse2 "isa" attribute.
15082 (*movdi_internal): Substitute Yi and Yj constraint with x
15083 and Ym and Yn constraint with y constraint. Update "isa"
15084 attribute and set "preferred_for_speed" attribute from
15085 TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for updated alternatives.
15086 (*movsi_internal): Ditto.
15087 (*movdf_internal): Ditto.
15088 (*movsf_internal): Ditto.
15089 (*zero_extendsidi2): Ditto.
15090 * config/i386/sse.md (vec_set<mode>_0): Ditto.
15091 (sse2_loadld): Ditto.
15092 (*vec_extract<ssevecmodelower>_0): Ditto.
15093 (*vec_extractv4si_0_zext_sse4): Ditto.
15094 (vec_concatv2di): Ditto.
15095 (*vec_dup<mode>): Ditto.
15096 * config/i386/mmx.md (*mov<mode>_internal): Ditto.
15097 * config/i386/constraints.md (Yi): Remove.
15098 (Yj): Remove.
15099 (Ym): Remove.
15100 (Yn): Remove.
15101
15102 2018-04-26 Nathan Sidwell <nathan@acm.org>
15103
15104 * dumpfile.c (dump_open): New.
15105 (dump_open_alternate_stream, dump_start, dump_begin): Call it.
15106 (dump_finish): Detect stdio/stderr by value not name.
15107
15108 2018-04-26 Jonathan Wakely <jwakely@redhat.com>
15109
15110 * doc/invoke.texi (-Wreturn-type): Document default status for C++.
15111
15112 2018-04-26 Tom de Vries <tom@codesourcery.com>
15113
15114 PR target/84952
15115 * config/nvptx/nvptx.c (verify_neutering_jumps)
15116 (verify_neutering_labels): New function
15117 (nvptx_single): Use verify_neutering_jumps and verify_neutering_labels.
15118
15119 2018-04-26 Tom de Vries <tom@codesourcery.com>
15120
15121 PR target/84025
15122 * config/nvptx/nvptx.c (needs_neutering_p): New function.
15123 (nvptx_single): Use needs_neutering_p to skip over insns that do not
15124 need neutering.
15125
15126 2018-04-26 Richard Biener <rguenther@suse.de>
15127 Tom de Vries <tom@codesourcery.com>
15128
15129 PR lto/85422
15130 * lto-streamer-out.c (output_function): Fixup loops if required to match
15131 discovery done in the reader.
15132
15133 2018-04-26 Richard Biener <rguenther@suse.de>
15134
15135 PR tree-optimization/85116
15136 * tree-ssa-loop-ch.c (do_while_loop_p): A do-while loop should
15137 have a loop exit from the single latch predecessor. Remove
15138 case of header with just condition.
15139 (ch_base::copy_headers): Exclude infinite loops from any
15140 processing.
15141 (pass_ch::execute): Record exits.
15142
15143 2018-04-26 Richard Biener <rguenther@suse.de>
15144
15145 * tree-vect-data-refs.c (vect_get_data_access_cost): Get
15146 prologue cost vector and pass it to vect_get_load_cost.
15147 (vect_get_peeling_costs_all_drs): Likewise.
15148 (vect_peeling_hash_get_lowest_cost): Likewise.
15149 (vect_enhance_data_refs_alignment): Likewise.
15150
15151 2018-04-26 Richard Biener <rguenther@suse.de>
15152
15153 PR middle-end/85450
15154 * tree-cfg.c (verify_gimple_assign_unary): Restore proper
15155 checking of integer<->pointer conversions.
15156 * omp-expand.c (expand_omp_for_static_nochunk): Avoid
15157 sign-/zero-extending pointer types.
15158 (expand_omp_for_static_chunk): Likewise.
15159
15160 2018-03-22 Hans-Peter Nilsson <hp@axis.com>
15161 Jean Lee <xiaoyur347@gmail.com>
15162
15163 * config/mips/mips.c (mips_asan_shadow_offset): New function.
15164 (TARGET_ASAN_SHADOW_OFFSET): Define.
15165 * config/mips/mips.h (FRAME_GROWS_DOWNWARD): Augment to also be
15166 true for -fsanitize=address.
15167
15168 2018-04-25 Mark Wielaard <mark@klomp.org>
15169
15170 * dwarf2out.c (file_info_cmp): Sort longer dir prefixes before
15171 shorter ones.
15172
15173 2018-04-25 Jakub Jelinek <jakub@redhat.com>
15174
15175 * config/i386/i386.md (*x86_mov<mode>cc_0_m1): Use type "alu1" rather
15176 than "alu", remove explicit "memory" and "imm_disp" attributes.
15177 (*x86_mov<mode>cc_0_m1_se, *x86_mov<mode>cc_0_m1_neg): Likewise.
15178
15179 PR middle-end/85414
15180 * simplify-rtx.c (simplify_unary_operation_1) <case SIGN_EXTEND,
15181 case ZERO_EXTEND>: Pass SUBREG_REG (op) rather than op to
15182 gen_lowpart_no_emit.
15183
15184 2018-04-25 Sebastian Peryt <sebastian.peryt@intel.com>
15185
15186 PR target/85473
15187 * config/i386/i386.c (ix86_expand_builtin): Change memory
15188 operand to XI, extend p0 to Pmode.
15189 * config/i386/i386.md: Change unspec volatile and operand
15190 1 mode to XI, change operand 0 mode to P.
15191
15192 2018-04-25 Chung-Ju Wu <jasonwucj@gmail.com>
15193
15194 * config/nds32/nds32-predicates.c (nds32_can_use_bclr_p): Mask with
15195 GET_MODE_MASK before any checking.
15196 (nds32_can_use_bset_p): Likewise.
15197 (nds32_can_use_btgl_p): Likewise.
15198
15199 2018-04-25 Chung-Ju Wu <jasonwucj@gmail.com>
15200
15201 * config/nds32/nds32-doubleword.md: New define_split pattern for
15202 illegal register number.
15203
15204 2018-04-25 Chung-Ju Wu <jasonwucj@gmail.com>
15205
15206 * config/nds32/nds32.c (nds32_print_operand): Set op_value ealier.
15207
15208 2018-04-25 Chung-Ju Wu <jasonwucj@gmail.com>
15209
15210 * config/nds32/nds32.h (ASM_APP_ON): Add missing newline character.
15211
15212 2018-04-25 Richard Biener <rguenther@suse.de>
15213
15214 * lto-streamer.h (LTO_major_version): Bump to 8.
15215
15216 2018-04-25 Jakub Jelinek <jakub@redhat.com>
15217
15218 * BASE-VER: Set to 9.0.0.
15219
15220 2018-04-24 Segher Boessenkool <segher@kernel.crashing.org>
15221
15222 * config/rs6000/rs6000.c (init_float128_ieee): Fix spelling mistakes
15223 in __abskf2 and __powikf2.
15224
15225 2018-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
15226
15227 PR target/85512
15228 * config/aarch64/constraints.md (Usg, Usj): New constraints.
15229 * config/aarch64/iterators.md (cmode_simd): New mode attribute.
15230 * config/aarch64/aarch64.md (*aarch64_ashr_sisd_or_int_<mode>3):
15231 Use the above on operand 2. Reindent.
15232 (*aarch64_lshr_sisd_or_int_<mode>3): Likewise.
15233
15234 2018-04-24 H.J. Lu <hongjiu.lu@intel.com>
15235
15236 PR target/85485
15237 * common/config/i386/i386-common.c (ix86_handle_option): Don't
15238 handle OPT_mcet.
15239 * config/i386/i386.opt (mcet): Removed.
15240 * doc/install.texi: Remove -mcet documentation.
15241 * doc/invoke.texi: Likewise.
15242
15243 2018-04-24 H.J. Lu <hongjiu.lu@intel.com>
15244
15245 PR target/85485
15246 * doc/install.texi: Remove -mcet from bootstrap-cet.
15247
15248 2018-04-24 Jakub Jelinek <jakub@redhat.com>
15249
15250 PR target/85511
15251 * config/i386/i386.c (ix86_init_mmx_sse_builtins): Don't define
15252 __builtin_ia32_readeflags_u32 and __builtin_ia32_writeeflags_u32
15253 if TARGET_64BIT.
15254
15255 PR target/85503
15256 * config/rs6000/rs6000-p8swap.c (const_load_sequence_p): Punt if
15257 const_vector is not CONST_VECTOR or SYMBOL_REF for a constant pool
15258 containing a CONST_VECTOR.
15259
15260 2018-04-24 Cesar Philippidis <cesar@codesourcery.com>
15261
15262 * doc/install.texi: Update newlib dependency for nvptx.
15263
15264 2018-04-24 Jakub Jelinek <jakub@redhat.com>
15265
15266 PR target/85508
15267 * config/i386/i386.c (ix86_expand_vector_init_one_var): Use UINTVAL
15268 instead of INTVAL when shifting x left.
15269
15270 2018-04-24 Andreas Krebbel <krebbel@linux.ibm.com>
15271
15272 PR tree-optimization/85478
15273 * tree-vect-loop.c (vect_analyze_loop_2): Do not call
15274 vect_grouped_store_supported for single element vectors.
15275
15276 2018-04-24 Richard Biener <rguenther@suse.de>
15277
15278 PR target/85491
15279 * config/i386/i386.c (ix86_add_stmt_cost): Restrict strided
15280 load cost increase to the case of non-constant step.
15281
15282 2018-04-24 Jakub Jelinek <jakub@redhat.com>
15283
15284 PR target/84828
15285 * reg-stack.c (move_for_stack_reg): Don't fail assertion about dead
15286 destination if any_malformed_asm.
15287
15288 2018-04-23 Eric Botcazou <ebotcazou@adacore.com>
15289
15290 PR middle-end/85496
15291 * expr.c (store_field): In the bitfield case, if the value comes from
15292 a function call and is returned in registers by means of a PARALLEL,
15293 do not change the mode of the temporary unless BLKmode and VOIDmode.
15294
15295 2018-04-23 Andrey Belevantsev <abel@ispras.ru>
15296
15297 PR rtl-optimization/85423
15298 * sel-sched-ir.c (has_dependence_note_mem_dep): Only discard
15299 dependencies to debug insns when the previous insn is non-debug.
15300
15301 2018-04-23 Claudiu Zissulescu <claziss@synopsys.com>
15302
15303 * config/arc/arc.md ("vunspec"): Delete it, unify all the unspec
15304 enums into a single definition.
15305 (fls): Fix predicates and printing.
15306 (seti): Likewise.
15307
15308 2018-04-23 Claudiu Zissulescu <claziss@synopsys.com>
15309
15310 * config/arc/arc-protos.h (check_if_valid_sleep_operand): Remove.
15311 * config/arc/arc.c (arc_expand_builtin): Sleep accepts registers
15312 and short u6 immediate.
15313 (check_if_valid_sleep_operand): Remove.
15314 * config/arc/arc.md (Sleep): Accepts registers and u6 immediates.
15315
15316 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
15317
15318 * config/nds32/nds32.c (nds32_compute_stack_frame): Consider
15319 flag_always_save_lp condition.
15320 * config/nds32/nds32.opt (malways-save-lp): New option.
15321
15322 2018-04-22 Shiva Chen <shiva0217@gmail.com>
15323
15324 * config/nds32/nds32-protos.h (nds32_use_load_post_increment): Declare.
15325 * config/nds32/nds32.c (nds32_use_load_post_increment): New.
15326 * config/nds32/nds32.h
15327 (USE_LOAD_POST_INCREMENT, USE_LOAD_POST_DECREMENT): Define.
15328 (USE_STORE_POST_INCREMENT, USE_STORE_POST_DECREMENT): Define.
15329
15330 2018-04-22 Shiva Chen <shiva0217@gmail.com>
15331
15332 * config/nds32/nds32-protos.h (nds32_ls_333_p): Remove.
15333 * config/nds32/nds32.c (nds32_ls_333_p): Remove.
15334
15335 2018-04-22 Shiva Chen <shiva0217@gmail.com>
15336 Chung-Ju Wu <jasonwucj@gmail.com>
15337
15338 * config/nds32/nds32-protos.h (nds32_case_vector_shorten_mode):
15339 Declare.
15340 * config/nds32/nds32.c (nds32_case_vector_shorten_mode): New function.
15341 * config/nds32/nds32.h (CASE_VECTOR_SHORTEN_MODE): Modify.
15342
15343 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
15344
15345 * config/nds32/nds32.c (nds32_compute_stack_frame): Fix wrong value.
15346
15347 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
15348
15349 * config/nds32/nds32-protos.h (nds32_data_alignment,
15350 nds32_local_alignment): Declare.
15351 * config/nds32/nds32.c (nds32_data_alignment, nds32_constant_alignment,
15352 nds32_local_alignment): New functions.
15353 (TARGET_CONSTANT_ALIGNMENT): Define.
15354 * config/nds32/nds32.h (DATA_ALIGNMENT, LOCAL_ALIGNMENT): Define.
15355
15356 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
15357
15358 * config/nds32/nds32.c
15359 (TARGET_HARD_REGNO_MODE_OK): Move to the bottom of file.
15360 (TARGET_MODES_TIEABLE_P): Likewise.
15361
15362 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
15363
15364 * config/nds32/nds32.c (nds32_asm_file_start): Display optimization
15365 level Ofast and Og.
15366
15367 2018-04-22 Monk Chiang <sh.chiang04@gmail.com>
15368 Chung-Ju Wu <jasonwucj@gmail.com>
15369
15370 * config/nds32/constants.md (unspec_volatile_element): Add enum values
15371 for unaligned access.
15372 * config/nds32/nds32-intrinsic.c: Implementation of expanding
15373 unaligned access.
15374 * config/nds32/nds32-intrinsic.md: Likewise.
15375 * config/nds32/nds32_intrinsic.h: Likewise.
15376 * config/nds32/nds32.h (nds32_builtins): Likewise.
15377 * config/nds32/nds32.opt (munaligned-access): New option.
15378 * config/nds32/nds32.c (nds32_asm_file_start): Display
15379 flag_unaligned_access status.
15380
15381 2018-04-20 Kito Cheng <kito.cheng@gmail.com>
15382
15383 * config/riscv/elf.h (LINK_SPEC): Pass --no-relax if
15384 -mno-relax is present.
15385 * config/riscv/linux.h (LINK_SPEC): Ditto.
15386
15387 2018-04-20 Martin Sebor <msebor@redhat.com>
15388
15389 PR c/85365
15390 * gimple-fold.c (gimple_fold_builtin_strcpy): Suppress -Wrestrict
15391 for null pointers.
15392 (gimple_fold_builtin_stxcpy_chk): Same.
15393 * gimple-ssa-warn-restrict.c (check_bounds_or_overlap): Same.
15394
15395 2018-04-20 Michael Meissner <meissner@linux.ibm.com>
15396
15397 PR target/85456
15398 * config/rs6000/rs6000.c (init_float128_ieee): Add support to call
15399 __powikf2 when long double is IEEE 128-bit.
15400
15401 2018-04-20 Kito Cheng <kito.cheng@gmail.com>
15402
15403 * config/riscv/riscv.c (riscv_first_stack_step): Round up min
15404 step to make sure stack always aligned.
15405
15406 2018-04-20 Carl Love <cel@us.ibm.com>
15407
15408 PR target/83402
15409 * config/rs6000/rs6000-c.c (rs6000_gimple_fold_builtin): Add
15410 size check for arg0.
15411
15412 2018-04-20 Nathan Sidwell <nathan@codesourcery.com>
15413 Tom de Vries <tom@codesourcery.com>
15414
15415 PR target/85445
15416 * config/nvptx/nvptx.c (nvptx_emit_forking, nvptx_emit_joining):
15417 Emit insns for calls too.
15418 (nvptx_find_par): Always look for worker-level predecessor insn.
15419 (nvptx_propagate): Add is_call parm, return bool. Copy frame for
15420 calls.
15421 (nvptx_vpropagate, nvptx_wpropagate): Adjust.
15422 (nvptx_process_pars): Propagate frames for calls.
15423
15424 2018-04-20 H.J. Lu <hongjiu.lu@intel.com>
15425
15426 PR target/85469
15427 * common/config/i386/i386-common.c (OPTION_MASK_ISA_IBT_SET):
15428 Removed.
15429 (OPTION_MASK_ISA_IBT_UNSET): Likewise.
15430 (ix86_handle_option): Don't handle OPT_mibt.
15431 * config/i386/cet.h: Check __CET__ instead of __IBT__ and
15432 __SHSTK__.
15433 * config/i386/driver-i386.c (host_detect_local_cpu): Remove
15434 has_ibt and ibt.
15435 * config/i386/i386-c.c (ix86_target_macros_internal): Don't
15436 check OPTION_MASK_ISA_IBT nor flag_cf_protection.
15437 (ix86_target_macros): Define __CET__ with flag_cf_protection
15438 for -fcf-protection.
15439 * config/i386/i386.c (isa2_opts): Remove -mibt.
15440 * config/i386/i386.h (TARGET_IBT): Removed.
15441 (TARGET_IBT_P): Likewise.
15442 (ix86_valid_target_attribute_inner_p): Don't check OPT_mibt.
15443 * config/i386/i386.md (nop_endbr): Don't check TARGET_IBT.
15444 * config/i386/i386.opt (mcet): Update help message.
15445 (mshstk): Likewise.
15446 (mibt): Removed.
15447 * doc/invoke.texi: Remove -mibt. Document __CET__. Document
15448 -mcet as an alias for -mshstk.
15449
15450 2018-04-20 Richard Biener <rguenther@suse.de>
15451
15452 PR middle-end/85475
15453 * match.pd ((X * CST) * Y -> (X * Y) * CST): Avoid exponential
15454 complexity by forcing a single use of the multiply operand.
15455
15456 2018-04-20 Martin Jambor <mjambor@suse.cz>
15457
15458 ipa/85449
15459 * ipa-cp.c (cgraph_edge_brings_value_p): Move check for self-feeding
15460 recursion dependency to only apply to non-clones.
15461
15462 2018-04-20 Martin Jambor <mjambor@suse.cz>
15463
15464 ipa/85447
15465 * ipa-cp.c (create_specialized_node): Check that clones of
15466 self-recursive edges exist during IPA-CP.
15467
15468 2018-04-19 Toon Moene <toon@moene.org>
15469
15470 * doc/invoke.texi: Add -floop-unroll-and-jam to options enabled
15471 by -O3.
15472
15473 2018-04-19 Jakub Jelinek <jakub@redhat.com>
15474
15475 PR tree-optimization/85467
15476 * fold-const.c (fold_ternary_loc) <case BIT_FIELD_REF>: Use
15477 VECTOR_TYPE_P macro. If type is vector type, VIEW_CONVERT_EXPR the
15478 VECTOR_CST element to type.
15479
15480 2018-04-19 H.J. Lu <hongjiu.lu@intel.com>
15481
15482 PR target/85397
15483 * config/i386/i386.h (STACK_SAVEAREA_MODE): New.
15484 * config/i386/i386.md (builtin_setjmp_setup): Removed.
15485 (builtin_longjmp): Likewise.
15486 (save_stack_nonlocal): New pattern.
15487 (restore_stack_nonlocal): Likewise.
15488
15489 2018-04-19 H.J. Lu <hongjiu.lu@intel.com>
15490
15491 PR target/85404
15492 * config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
15493 Replace ASM_OUTPUT_LABEL with fprintf.
15494
15495 2018-04-19 H.J. Lu <hongjiu.lu@intel.com>
15496
15497 PR target/85417
15498 * config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
15499 Check flag_cf_protection instead of TARGET_IBT and TARGET_SHSTK.
15500 * config/i386/i386-c.c (ix86_target_macros_internal): Also
15501 define __IBT__ and __SHSTK__ for -fcf-protection.
15502 * config/i386/i386.c (pass_insert_endbranch::gate): Don't check
15503 TARGET_IBT.
15504 (ix86_trampoline_init): Likewise.
15505 (x86_output_mi_thunk): Likewise.
15506 (ix86_notrack_prefixed_insn_p): Likewise.
15507 (ix86_option_override_internal): Don't disallow -fcf-protection.
15508 * config/i386/i386.md (rdssp<mode>): Also enable for
15509 -fcf-protection.
15510 (incssp<mode>): Likewise.
15511 (nop_endbr): Likewise.
15512 * config/i386/i386.opt (mcet): Change help message to built-in
15513 functions only.
15514 (mibt): Likewise.
15515 (mshstk): Likewise.
15516 * doc/invoke.texi: Remove -mcet, -mibt and -mshstk condition
15517 on -fcf-protection. Change -mcet, -mibt and -mshstk to only
15518 enable CET built-in functions.
15519
15520 2018-04-19 Sebastian Peryt <sebastian.peryt@intel.com>
15521
15522 * common/config/i386/i386-common.c
15523 (OPTION_MASK_ISA_MOVDIRI_SET, OPTION_MASK_ISA_MOVDIR64B_SET,
15524 OPTION_MASK_ISA_MOVDIRI_UNSET,
15525 OPTION_MASK_ISA_MOVDIR64B_UNSET): New defines.
15526 (ix86_handle_option): Handle -mmovdiri and -mmovdir64b.
15527 * config.gcc (movdirintrin.h): New header.
15528 * config/i386/cpuid.h (bit_MOVDIRI,
15529 bit_MOVDIR64B): New bits.
15530 * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mmovdiri
15531 and -mmvodir64b.
15532 * config/i386/i386-builtin-types.def ((VOID, PUNSIGNED, UNSIGNED),
15533 (VOID, PVOID, PCVOID)): New function types.
15534 * config/i386/i386-builtin.def (__builtin_ia32_directstoreu_u32,
15535 __builtin_ia32_directstoreu_u64,
15536 __builtin_ia32_movdir64b): New builtins.
15537 * config/i386/i386-c.c (__MOVDIRI__, __MOVDIR64B__): New.
15538 * config/i386/i386.c (ix86_target_string): Added -mmovdir64b
15539 and -mmovdiri.
15540 (ix86_valid_target_attribute_inner_p): Ditto.
15541 (ix86_expand_special_args_builtin): Added VOID_FTYPE_PUNSIGNED_UNSIGNED
15542 and VOID_FTYPE_PUNSIGNED_UNSIGNED.
15543 (ix86_expand_builtin): Expand IX86_BUILTIN_MOVDIR64B.
15544 * config/i386/i386.h (TARGET_MOVDIRI, TARGET_MOVDIRI_P,
15545 TARGET_MOVDIR64B, TARGET_MOVDIR64B_P): New.
15546 * config/i386/i386.md (UNSPECV_MOVDIRI, UNSPECV_MOVDIR64B): New.
15547 (movdiri<mode>, movdir64b_<mode>): New.
15548 * config/i386/i386.opt: Add -mmovdiri and -mmovdir64b.
15549 * config/i386/immintrin.h: Include movdirintrin.h.
15550 * config/i386/movdirintrin.h: New file.
15551 * doc/invoke.texi: Added -mmovdiri and -mmovdir64b.
15552
15553 2018-04-19 Richard Biener <rguenther@suse.de>
15554
15555 PR middle-end/85455
15556 * cfg.c (clear_bb_flags): When loop state says we have
15557 marked irreducible regions also preserve BB_IRREDUCIBLE_LOOP.
15558
15559 2018-04-19 Richard Biener <rguenther@suse.de>
15560
15561 PR tree-optimization/84737
15562 * tree-vect-data-refs.c (vect_copy_ref_info): New function
15563 copying restrict info.
15564 (vect_setup_realignment): Use it.
15565 * tree-vectorizer.h (vect_copy_ref_info): Declare.
15566 * tree-vect-stmts.c (vectorizable_store): Copy ref info from
15567 the first DR to all generated stores.
15568 (vectorizable_load): Likewise for loads.
15569
15570 2018-04-19 Jakub Jelinek <jakub@redhat.com>
15571
15572 PR tree-optimization/85446
15573 * match.pd ((intptr_t) x eq/ne CST to x eq/ne (typeof x) cst): Require
15574 the integral and pointer types to have the same precision.
15575
15576 * doc/install.texi: Document --disable-cet being the default and
15577 --enable-cet=auto.
15578
15579 2018-04-18 Martin Liska <mliska@suse.cz>
15580
15581 * ipa-devirt.c (odr_subtypes_equivalent_p): Fix GNU coding
15582 style.
15583
15584 2018-04-18 Martin Liska <mliska@suse.cz>
15585
15586 Revert
15587 2018-03-02 Eric Botcazou <ebotcazou@adacore.com>
15588
15589 PR ipa/83983
15590 * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
15591 arguments if they are comparable.
15592
15593 2018-04-18 Martin Liska <mliska@suse.cz>
15594
15595 Revert
15596 2018-03-13 Eric Botcazou <ebotcazou@adacore.com>
15597
15598 PR lto/84805
15599 * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
15600 incomplete types.
15601
15602 2018-04-18 H.J. Lu <hongjiu.lu@intel.com>
15603
15604 PR target/85388
15605 * config/i386/i386.c (ix86_expand_split_stack_prologue): Insert
15606 ENDBR after calling __morestack.
15607
15608 2018-04-18 David Malcolm <dmalcolm@redhat.com>
15609
15610 PR jit/85384
15611 * configure.ac (gcc-driver-name.h): Honor --with-gcc-major-version
15612 by using gcc_base_ver to generate a gcc_driver_version, and use
15613 it when generating GCC_DRIVER_NAME.
15614 * configure: Regenerate.
15615
15616 2018-04-18 Jakub Jelinek <jakub@redhat.com>
15617
15618 PR target/81084
15619 * config.gcc: Obsolete powerpc*-*-*spe*.
15620
15621 2018-04-17 Jakub Jelinek <jakub@redhat.com>
15622
15623 PR debug/84637
15624 * dbxout.c (dbxout_int): Perform negation in unsigned int type.
15625 (stabstr_D): Change type of unum from unsigned int to
15626 unsigned HOST_WIDE_INT. Perform negation in unsigned HOST_WIDE_INT
15627 type.
15628
15629 2018-04-17 Jim Wilson <jimw@sifive.com>
15630
15631 PR 84856
15632 * config/riscv/riscv.c (riscv_compute_frame_info): Add calls to
15633 RISCV_STACK_ALIGN when using outgoing_args_size and pretend_args_size.
15634 Set arg_pointer_offset after using pretend_args_size.
15635
15636 2018-04-17 Jakub Jelinek <jakub@redhat.com>
15637
15638 PR rtl-optimization/85431
15639 * dse.c (record_store): Ignore zero width stores.
15640
15641 PR sanitizer/85230
15642 * asan.c (handle_builtin_stack_restore): Adjust comment. Emit
15643 __asan_allocas_unpoison call and last_alloca_addr = new_sp before
15644 __builtin_stack_restore rather than after it.
15645 * builtins.c (expand_asan_emit_allocas_unpoison): Pass
15646 arg1 + (virtual_dynamic_stack_rtx - stack_pointer_rtx) as second
15647 argument instead of virtual_dynamic_stack_rtx.
15648
15649 2018-04-17 Kelvin Nilsen <kelvin@gcc.gnu.org>
15650
15651 * config/rs6000/rs6000-protos.h (rs6000_builtin_is_supported_p):
15652 New prototype.
15653 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
15654 Add note to error message to explain internal mapping of overloaded
15655 built-in function name to non-overloaded built-in function name.
15656 * config/rs6000/rs6000.c (rs6000_builtin_is_supported_p): New
15657 function.
15658
15659 2018-04-17 Michael Meissner <meissner@linux.vnet.ibm.com>
15660
15661 PR target/85424
15662 * config/rs6000/rs6000.md (pack<mode>): Do not try handle a pack
15663 where the inputs overlap with the output.
15664
15665 2018-04-17 Jakub Jelinek <jakub@redhat.com>
15666
15667 * config/i386/sse.md (vec_extract_lo_<mode><mask_name>): Add
15668 (=v, v) alternative and explicit "memory" attribute.
15669 (vec_extract_lo_<mode><mask_name>): Likewise. Also add
15670 "type", "prefix", "prefix_extra", "length_immediate" and "mode"
15671 attributes.
15672 (vec_extract_lo_<mode><mask_name>): Add (=v, v) alternative and use
15673 "sselog1" type instead of "sselog".
15674 (vec_extract_hi_<mode><mask_name>): Use "sselog1" type instead of
15675 "sselog". Remove explicit "memory" attribute.
15676 (vec_extract_lo_v32hi): Add (=v, v) alternative and explicit "memory",
15677 "type", "prefix", "prefix_extra", "length_immediate" and "mode"
15678 attributes.
15679 (vec_extract_hi_v32hi): Merge all alternatives into one, use
15680 "sselog1" type instead of "sselog". Remove explicit "memory"
15681 attribute.
15682 (vec_extract_hi_v16hi): Merge each pair of alternatives into one,
15683 use "sselog1" type instead of "sselog". Remove explicit "memory"
15684 attribute.
15685 (vec_extract_lo_v64qi): Add (=v, v) alternative and explicit "memory",
15686 "type", "prefix", "prefix_extra", "length_immediate" and "mode"
15687 attributes.
15688 (vec_extract_hi_v64qi): Merge all alternatives into one, use
15689 "sselog1" type instead of "sselog". Remove explicit "memory"
15690 attribute.
15691 (vec_extract_hi_v32qi): Merge each pair of alternatives into one,
15692 use "sselog1" type instead of "sselog". Remove explicit "memory"
15693 attribute.
15694
15695 PR target/85430
15696 * config/i386/i386.md (*ashlqi3_1_slp): Use alu1 type instead of alu.
15697
15698 PR middle-end/85414
15699 * rtlhooks.c (gen_lowpart_if_possible): Don't call gen_lowpart_SUBREG
15700 on a SUBREG.
15701
15702 2018-04-17 Martin Jambor <mjambor@suse.cz>
15703
15704 PR ipa/85421
15705 * ipa-cp.c (create_specialized_node): Call
15706 expand_all_artificial_thunks if necessary.
15707
15708 2018-04-17 Martin Liska <mliska@suse.cz>
15709
15710 PR lto/85405
15711 * ipa-devirt.c (odr_types_equivalent_p): Remove trailing
15712 in message, remote space in between '_G' and '('.
15713
15714 2018-04-17 Jakub Jelinek <jakub@redhat.com>
15715
15716 PR target/85281
15717 * config/i386/sse.md (reduces<mode><mask_scalar_name>,
15718 avx512f_vmcmp<mode>3<round_saeonly_name>,
15719 avx512f_vmcmp<mode>3_mask<round_saeonly_name>,
15720 avx512f_sgetexp<mode><mask_scalar_name><round_saeonly_scalar_name>,
15721 avx512f_rndscale<mode><round_saeonly_name>,
15722 avx512dq_ranges<mode><mask_scalar_name><round_saeonly_scalar_name>,
15723 avx512f_vgetmant<mode><mask_scalar_name><round_saeonly_scalar_name>):
15724 Use %<iptr>2 instead of %2 for -masm=intel.
15725 (avx512f_vcvtss2usi<round_name>, avx512f_vcvtss2usiq<round_name>,
15726 avx512f_vcvttss2usi<round_saeonly_name>,
15727 avx512f_vcvttss2usiq<round_saeonly_name>): Use %k1 instead of %1 for
15728 -masm=intel.
15729 (avx512f_vcvtsd2usi<round_name>, avx512f_vcvtsd2usiq<round_name>,
15730 avx512f_vcvttsd2usi<round_saeonly_name>,
15731 avx512f_vcvttsd2usiq<round_saeonly_name>, ufloatv2siv2df2<mask_name>):
15732 Use %q1 instead of %1 for -masm=intel.
15733 (avx512f_sfixupimm<mode><sd_maskz_name><round_saeonly_name>,
15734 avx512f_sfixupimm<mode>_mask<round_saeonly_name>): Use %<iptr>3 instead
15735 of %3 for -masm=intel.
15736 (sse2_shufpd_v2df_mask): Fix a typo, change %{6%} to %{%6%} for
15737 -masm=intel.
15738 (*avx512vl_<code>v2div2qi2_store): Use %w0 instead of %0 for
15739 -masm=intel.
15740 (*avx512vl_<code><mode>v4qi2_store): Use %k0 instead of %0 for
15741 -masm=intel.
15742 (avx512vl_<code><mode>v4qi2_mask_store): Use a single pattern with
15743 %k0 and %1 for -masm=intel rather than two patterns, one with %0 and
15744 %g1.
15745 (*avx512vl_<code><mode>v8qi2_store): Use %q0 instead of %0 for
15746 -masm=intel.
15747 (avx512vl_<code><mode>v8qi2_mask_store): Use a single pattern with
15748 %q0 and %1 for -masm=intel rather than two patterns, one with %0 and
15749 %g1 and one with %0 and %1.
15750 (avx512er_vmrcp28<mode><round_saeonly_name>,
15751 avx512er_vmrsqrt28<mode><round_saeonly_name>): Use %<iptr>1 instead of
15752 %1 for -masm=intel.
15753 (avx5124fmaddps_4fmaddps_mask, avx5124fmaddps_4fmaddss_mask,
15754 avx5124fmaddps_4fnmaddps_mask, avx5124fmaddps_4fnmaddss_mask,
15755 avx5124vnniw_vp4dpwssd_mask, avx5124vnniw_vp4dpwssds_mask): Swap order
15756 of %0 and %{%4%} for -masm=intel.
15757 (avx5124fmaddps_4fmaddps_maskz, avx5124fmaddps_4fmaddss_maskz,
15758 avx5124fmaddps_4fnmaddps_maskz, avx5124fmaddps_4fnmaddss_maskz,
15759 avx5124vnniw_vp4dpwssd_maskz, avx5124vnniw_vp4dpwssds_maskz): Swap
15760 order of %0 and %{%5%}%{z%} for -masm=intel.
15761
15762 2018-04-17 Jan Hubicka <jh@suse.cz>
15763
15764 PR lto/85405
15765 * ipa-devirt.c (odr_types_equivalent_p): Handle bit fields.
15766
15767 2018-04-17 Martin Liska <mliska@suse.cz>
15768
15769 PR ipa/85329
15770 * multiple_target.c (create_dispatcher_calls): Set apostrophes
15771 for target_clone error message. Make default implementation
15772 clone to be a local declaration.
15773 (separate_attrs): Add new argument and check for an empty
15774 string.
15775 (expand_target_clones): Handle it.
15776 (ipa_target_clone): Make redirection just for target_clones
15777 functions.
15778
15779 2018-04-16 Cesar Philippidis <cesar@codesourcery.com>
15780 Tom de Vries <tom@codesourcery.com>
15781
15782 PR middle-end/84955
15783 * omp-expand.c (expand_oacc_for): Add dummy false branch for
15784 tiled basic blocks without omp continue statements.
15785
15786 2018-04-16 Aaron Sawdey <acsawdey@linux.ibm.com>
15787
15788 PR target/83660
15789 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Mark
15790 vec_extract expression as having side effects to make sure it gets
15791 a cleanup point.
15792
15793 2018-04-16 H.J. Lu <hongjiu.lu@intel.com>
15794
15795 PR target/85403
15796 * config/i386/i386.c (get_builtin_code_for_version): Check
15797 error_mark_node.
15798
15799 2018-04-16 Olga Makhotina <olga.makhotina@intel.com>
15800
15801 PR target/84331
15802 * config.gcc: Support "skylake".
15803 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
15804 PROCESSOR_SKYLAKE.
15805 * config/i386/i386.c (m_SKYLAKE): Define.
15806 (processor_target_table): Add "skylake".
15807 (ix86_option_override_internal): Add "skylake".
15808 (get_builtin_code_for_version): Handle PROCESSOR_SKYLAKE,
15809 PROCESSOR_CANNONLAKE.
15810 (get_builtin_code_for_version): Fix priority for
15811 PROCESSOR_ICELAKE_CLIENT, PROCESSOR_ICELAKE_SERVER,
15812 PROCESSOR_SKYLAKE-AVX512.
15813 * config/i386/i386.h (processor_costs): Define TARGET_SKYLAKE.
15814 (processor_type): Add PROCESSOR_SKYLAKE.
15815
15816 2018-04-16 Paolo Carlini <paolo.carlini@oracle.com>
15817 Jason Merrill <jason@redhat.com>
15818
15819 PR c++/85112
15820 * convert.c (convert_to_integer_1): Use direct recursion for
15821 enumeral types and types with a precision less than the number
15822 of bits in their mode.
15823
15824 2018-04-16 Julia Koval <julia.koval@intel.com>
15825
15826 PR target/84413
15827 * config/i386/x86-tune.def (X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL,
15828 X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL): Add m_SKYLAKE_AVX512
15829
15830 2018-04-14 Segher Boessenkool <segher@kernel.crashing.org>
15831
15832 PR target/85293
15833 * config/rs6000/rs6000.opt (mdirect-move): Make deprecated.
15834 * doc/invoke.texi (RS/6000 and PowerPC Options): Remove -mdirect-move
15835 and -mno-direct-move.
15836
15837 2018-04-13 Paul A. Clarke <pc@us.ibm.com>
15838
15839 PR target/83402
15840 * config/rs6000/emmintrin.h (_mm_slli_epi{16,32,64}):
15841 Ensure that vec_splat_s32 is only called with 0 <= shift < 16.
15842 Ensure negative shifts result in {0}.
15843
15844 2018-04-13 Vladimir Makarov <vmakarov@redhat.com>
15845
15846 PR rtl-optimization/79916
15847 * config/rs6000/rs6000.c (rs6000_emit_move): Use assigned hard
15848 regs (if any) to define how to gnerate SD moves when LRA is in
15849 progress.
15850
15851 2018-04-13 Jakub Jelinek <jakub@redhat.com>
15852
15853 PR rtl-optimization/85393
15854 * except.h (expand_dw2_landing_pad_for_region): Remove declaration.
15855 * except.c (expand_dw2_landing_pad_for_region): Make static.
15856 * bb-reorder.c (fix_up_crossing_landing_pad): In new_bb emit just
15857 a label and unconditional jump to old_bb, rather than
15858 expand_dw2_landing_pad_for_region insn(s) and jump to single_succ
15859 basic block.
15860
15861 PR rtl-optimization/85376
15862 * simplify-rtx.c (simplify_const_unary_operation): For CLZ and CTZ and
15863 zero op0, if C?Z_DEFINED_VALUE_AT_ZERO is false, return NULL_RTX
15864 instead of a specific value.
15865
15866 2018-04-13 Jan Hubicka <hubicka@ucw.cz>
15867 Bin Cheng <bin.cheng@arm.com>
15868
15869 PR tree-optimization/82965
15870 PR tree-optimization/83991
15871 * cfgloopanal.c (expected_loop_iterations_unbounded): Add
15872 by_profile_only parameter.
15873 * cfgloopmanip.c (scale_loop_profile): Further scale loop's profile
15874 information if the loop was predicted to iterate too many times.
15875 * cfgloop.h (expected_loop_iterations_unbounded): Update prototype
15876
15877 2018-04-13 Jan Hubicka <hubicka@ucw.cz>
15878
15879 PR lto/71991
15880 * config/i386/i386.c (ix86_can_inline_p): Allow safe transitions for
15881 always inline.
15882
15883 2018-04-13 Martin Liska <mliska@suse.cz>
15884 Jakub Jelinek <jakub@redhat.com>
15885
15886 PR middle-end/81657
15887 * expr.h (enum block_op_methods): Add BLOCK_OP_NO_LIBCALL_RET.
15888 * expr.c (emit_block_move_hints): Handle BLOCK_OP_NO_LIBCALL_RET.
15889 * builtins.c (expand_builtin_memory_copy_args): Use
15890 BLOCK_OP_NO_LIBCALL_RET method for mempcpy with non-ignored target,
15891 handle dest_addr == pc_rtx.
15892
15893 2018-04-12 Segher Boessenkool <segher@kernel.crashing.org>
15894
15895 PR target/85291
15896 * config/rs6000/rs6000.md (fix_trunc<mode>si2): Use legacy code if
15897 asked to not generate direct moves.
15898 (fix_trunc<mode>si2_stfiwx): Similar.
15899 (fix_trunc<mode>si2_internal): Similar.
15900
15901 2018-04-12 Jakub Jelinek <jakub@redhat.com>
15902
15903 PR debug/83157
15904 * var-tracking.c (add_stores): Handle STRICT_LOW_PART SET_DEST.
15905 * cselib.c (cselib_record_sets): For STRICT_LOW_PART dest,
15906 lookup if dest in some wider mode is known to be const0_rtx and
15907 if so, record permanent equivalence for it to be ZERO_EXTEND of
15908 the narrower mode destination.
15909
15910 2018-04-12 Cesar Philippidis <cesar@codesourcery.com>
15911
15912 * lto-streamer-out.c (output_function): Revert 259346.
15913 * omp-expand.c (expand_oacc_for): Likewise.
15914
15915 2018-04-12 Alexander Monakov <amonakov@ispras.ru>
15916
15917 PR rtl-optimization/85354
15918 * sel-sched-ir.c (sel_init_pipelining): Move cfg_cleanup call...
15919 * sel-sched.c (sel_global_init): ... here.
15920
15921 2018-04-12 Eric Botcazou <ebotcazou@adacore.com>
15922
15923 PR target/85238
15924 * lto-wrapper.c (debug_objcopy): Open the files in binary mode.
15925 * dwarf2out.c (dwarf2out_early_finish): Do not generate assembly in LTO
15926 mode for PE-COFF targets.
15927 * config/i386/i386-protos.h (i386_pe_asm_lto_start): Declare.
15928 (i386_pe_asm_lto_end): Likewise.
15929 * config/i386/cygming.h (TARGET_ASM_LTO_START): Define.
15930 (TARGET_ASM_LTO_END): Likewise.
15931 * config/i386/winnt.c (saved_debug_info_level): New static variable.
15932 (i386_pe_asm_lto_start): New function.
15933 (i386_pe_asm_lto_end): Likewise.
15934
15935 2018-04-12 Cesar Philippidis <cesar@codesourcery.com>
15936 Richard Biener <rguenther@suse.de>
15937
15938 PR middle-end/84955
15939 * lto-streamer-out.c (output_function): Fix CFG loop state before
15940 streaming out.
15941 * omp-expand.c (expand_oacc_for): Handle calls to internal
15942 functions like regular functions.
15943
15944 2018-04-12 Richard Biener <rguenther@suse.de>
15945
15946 PR lto/85371
15947 * dwarf2out.c (init_sections_and_labels): Use debug_line_section[_label]
15948 for the early LTO debug to properly generate references to it
15949 during DIE emission. Do not re-use that for the skeleton for
15950 split-dwarf.
15951 (dwarf2out_early_finish): Likewise.
15952
15953 2018-04-12 Jakub Jelinek <jakub@redhat.com>
15954
15955 PR target/85328
15956 * config/i386/sse.md
15957 (<mask_codefor>avx512dq_vextract<shuffletype>64x2_1<mask_name> split,
15958 <mask_codefor>avx512f_vextract<shuffletype>32x4_1<mask_name> split,
15959 vec_extract_lo_<mode><mask_name> split, vec_extract_lo_v32hi,
15960 vec_extract_lo_v64qi): For non-AVX512VL if input is xmm16+ reg
15961 and output is a reg, avoid creating invalid lowpart subreg, but
15962 instead split into a 512-bit move. Don't split if not AVX512VL,
15963 input is xmm16+ reg and output is a mem.
15964 (vec_extract_lo_<mode><mask_name>, vec_extract_lo_v32hi,
15965 vec_extract_lo_v64qi): Don't require split if not AVX512VL, input is
15966 xmm16+ reg and output is a mem.
15967
15968 2018-04-12 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
15969
15970 * config/s390/s390.c (s390_output_indirect_thunk_function): Check
15971 also for flag_dwarf2_cfi_asm.
15972
15973 2018-04-12 Jakub Jelinek <jakub@redhat.com>
15974
15975 PR rtl-optimization/85342
15976 * regcprop.c (copyprop_hardreg_forward_1): Remove replaced array, use
15977 a bool scalar var inside of the loop instead. Don't try to update
15978 recog_data.operand after failed apply_change_group.
15979
15980 2018-04-12 Tom de Vries <tom@codesourcery.com>
15981
15982 PR target/85296
15983 * config/nvptx/nvptx.c (flexible_array_member_type_p): New function.
15984 (nvptx_assemble_decl_begin): Add undefined param. Declare undefined
15985 array with flexible array member as array without given dimension.
15986 (nvptx_assemble_undefined_decl): Set nvptx_assemble_decl_begin call
15987 argument for undefined param to true.
15988
15989 2018-04-11 Aaron Sawdey <acsawdey@linux.ibm.com>
15990
15991 PR target/85321
15992 * doc/invoke.texi (RS/6000 and PowerPC Options): Document options
15993 -mcall- and -mtraceback=. Remove options -mabi=spe and -mabi=no-spe
15994 from PowerPC section.
15995 * config/rs6000/sysv4.opt (mcall-): Improve help text.
15996 * config/rs6000/rs6000.opt (mblock-compare-inline-limit=): Trim
15997 help text that is too long.
15998 * config/rs6000/rs6000.opt (mblock-compare-inline-loop-limit=): Trim
15999 help text that is too long.
16000 * config/rs6000/rs6000.opt (mstring-compare-inline-limit=): Trim
16001 help text that is too long.
16002
16003 2018-04-11 Uros Bizjak <ubizjak@gmail.com>
16004
16005 * config/alpha/alpha.md (stack_probe_internal): Rename
16006 from "probe_stack". Update all callers.
16007
16008 2018-04-11 Alexander Monakov <amonakov@ispras.ru>
16009
16010 PR rtl-optimization/84566
16011 * sched-deps.c (sched_analyze_insn): Check deps->readonly when invoking
16012 sched_macro_fuse_insns.
16013
16014 2018-04-11 Alexander Monakov <amonakov@ispras.ru>
16015
16016 PR target/84301
16017 * sched-rgn.c (add_branch_dependences): Move sel_sched_p check here...
16018 (compute_block_dependences): ... from here.
16019
16020 2018-04-11 Jakub Jelinek <jakub@redhat.com>
16021
16022 PR tree-optimization/85331
16023 * vec-perm-indices.h (vec_perm_indices::clamp): Change input type
16024 from int to HOST_WIDE_INT.
16025
16026 2018-04-11 Martin Jambor <mjambor@suse.cz>
16027
16028 PR ipa/84149
16029 * ipa-cp.c (propagate_vals_across_pass_through): Expand comment.
16030 (cgraph_edge_brings_value_p): New parameter dest_val, check if it is
16031 not the same as the source val.
16032 (cgraph_edge_brings_value_p): New parameter.
16033 (gather_edges_for_value): Pass destination value to
16034 cgraph_edge_brings_value_p.
16035 (perhaps_add_new_callers): Likewise.
16036 (get_info_about_necessary_edges): Likewise and exclude values brought
16037 only by self-recursive edges.
16038 (create_specialized_node): Redirect only clones of self-calling edges.
16039 (+self_recursive_pass_through_p): New function.
16040 (find_more_scalar_values_for_callers_subset): Use it.
16041 (find_aggregate_values_for_callers_subset): Likewise.
16042 (known_aggs_to_agg_replacement_list): Removed.
16043 (decide_whether_version_node): Re-calculate known constants for all
16044 remaining context clones.
16045
16046 2018-04-11 Richard Biener <rguenther@suse.de>
16047
16048 PR lto/85339
16049 * dwarf2out.c (dwarf2out_finish): Remove DW_AT_stmt_list attribute
16050 from early DWARF output.
16051 (dwarf2out_early_finish): Output line info unconditionally into
16052 early DWARF and add reference to it.
16053
16054 2018-04-11 Jakub Jelinek <jakub@redhat.com>
16055
16056 PR target/85281
16057 * config/i386/sse.md (iptr): Add V16SFmode and V8DFmode cases.
16058 (<avx512>_vec_dup<mode><mask_name>): Use a single pattern for modes
16059 other than V2DFmode using iptr mode attribute.
16060 (<avx512>_vec_dup<mode><mask_name>): Use iptr mode attribute.
16061
16062 2018-04-11 Alexander Monakov <amonakov@ispras.ru>
16063
16064 PR rtl-optimization/84659
16065 * sel-sched-ir.c (sel_init_pipelining): Invoke cleanup_cfg.
16066
16067 2018-04-11 Jakub Jelinek <jakub@redhat.com>
16068
16069 PR debug/85302
16070 * dwarf2out.c (skip_loc_list_entry): Don't call size_of_locs if
16071 SIZEP is NULL.
16072 (output_loc_list): Pass address of a dummy size variable even in the
16073 locview handling loop.
16074 (index_location_lists): Add comment on why skip_loc_list_entry can't
16075 call size_of_locs.
16076
16077 2018-04-11 Thomas Preud'homme <thomas.preudhomme@arm.com>
16078
16079 PR target/85261
16080 * config/arm/arm-builtins.c (arm_expand_builtin): Force input operand
16081 into register.
16082
16083 2018-04-10 Aaron Sawdey <acsawdey@linux.ibm.com>
16084
16085 PR target/85321
16086 * doc/invoke.texi (RS/6000 and PowerPC Options): Document options
16087 -mblock-compare-inline-limit, -mblock-compare-inline-loop-limit,
16088 and -mstring-compare-inline-limit.
16089
16090 2018-04-10 Segher Boessenkool <segher@kernel.crashing.org>
16091
16092 PR target/85287
16093 * config/rs6000/rs6000.md (allocate_stack): Put the residual size
16094 for stack clash protection in a register whenever we need it to be in
16095 a register.
16096
16097 2018-04-10 Segher Boessenkool <segher@kernel.crashing.org>
16098
16099 * common/config/rs6000/rs6000-common.c (rs6000_option_init_struct):
16100 Enable -fasynchronous-unwind-tables by default if OBJECT_FORMAT_ELF.
16101
16102 2018-04-10 Segher Boessenkool <segher@kernel.crashing.org>
16103
16104 PR target/85321
16105 * config/rs6000/rs6000.opt (mtraceback=): Show the allowed values in
16106 the help text.
16107 (mlong-double-): Ditto.
16108 * config/rs6000/sysv4.opt (msdata=): Ditto.
16109 (mtls-size=): Ditto.
16110
16111 2018-04-10 Kelvin Nilsen <kelvin@gcc.gnu.org>
16112
16113 * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Remove
16114 erroneous entries for
16115 "vector int vec_ldl (int, long int *)", and
16116 "vector unsigned int vec_ldl (int, unsigned long int *)".
16117 Add comments and entries for
16118 "vector bool char vec_ldl (int, bool char *)",
16119 "vector bool short vec_ldl (int, bool short *)",
16120 "vector bool int vec_ldl (int, bool int *)",
16121 "vector bool long long vec_ldl (int, bool long long *)",
16122 "vector pixel vec_ldl (int, pixel *)",
16123 "vector long long vec_ldl (int, long long *)",
16124 "vector unsigned long long vec_ldl (int, unsigned long long *)".
16125 * config/rs6000/rs6000.c (rs6000_init_builtins): Initialize new
16126 type tree bool_long_long_type_node and correct definition of
16127 bool_V2DI_type_node to make reference to this new type tree.
16128 (rs6000_mangle_type): Replace erroneous reference to
16129 bool_long_type_node with bool_long_long_type_node.
16130 * config/rs6000/rs6000.h (enum rs6000_builtin_type_index): Add
16131 comments to emphasize sign distinctions for char and int types and
16132 replace RS6000_BTI_bool_long constant with
16133 RS6000_BTI_bool_long_long constant. Also add comment to restrict
16134 use of RS6000_BTI_pixel.
16135 (bool_long_type_node): Remove this macro definition.
16136 (bool_long_long_type_node): New macro definition
16137
16138 2018-04-10 Jakub Jelinek <jakub@redhat.com>
16139
16140 PR rtl-optimization/85300
16141 * combine.c (subst): Handle subst of CONST_SCALAR_INT_P new_rtx also
16142 into FLOAT and UNSIGNED_FLOAT like ZERO_EXTEND, return a CLOBBER if
16143 simplify_unary_operation fails.
16144
16145 2018-04-10 Martin Liska <mliska@suse.cz>
16146
16147 * gdbhooks.py: Add pretty-printers for varpool_node, symtab_node,
16148 cgraph_edge and ipa_ref.
16149
16150 2018-04-10 Jakub Jelinek <jakub@redhat.com>
16151
16152 PR target/85177
16153 PR target/85255
16154 * config/i386/sse.md
16155 (<extract_type>_vinsert<shuffletype><extract_suf>_mask): Fix
16156 computation of the VEC_MERGE selector from mask.
16157 (<extract_type>_vinsert<shuffletype><extract_suf>_1<mask_name>):
16158 Fix decoding of the VEC_MERGE selector into mask.
16159
16160 2018-04-10 Richard Sandiford <richard.sandiford@linaro.org>
16161
16162 PR tree-optimization/85286
16163 * tree-vect-data-refs.c (vect_get_smallest_scalar_type):
16164
16165 2018-04-10 Richard Sandiford <richard.sandiford@linaro.org>
16166
16167 * final.c (final_1): Set insn_last_address as well as
16168 insn_current_address.
16169
16170 2018-04-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
16171
16172 PR target/85173
16173 * explow.c (emit_stack_probe): Call validize_mem on memory location
16174 before passing it to gen_probe_stack. Create address operand and
16175 legitimize it for the probe_stack_address case.
16176
16177 2018-04-09 Jan Hubicka <jh@suse.cz>
16178
16179 PR lto/85078
16180 * ipa-devirt.c (rebuild_type_inheritance-hash): New.
16181 * ipa-utils.h (rebuild_type_inheritance-hash): Declare.
16182 * tree.c (free_lang_data_in_type): Fix handling of binfos;
16183 walk basetypes.
16184 (free_lang_data): Rebuild type inheritance graph.
16185
16186 2018-04-09 Martin Sebor <msebor@redhat.com>
16187
16188 * invoke.texi (-finline-small-functions): Mention other optimization
16189 options.
16190 (-findirect-inlining, -fpartial-inlining): Same.
16191 (-finline-functions-called-once): Same.
16192 (-freorder-blocks-and-partition): Same.
16193
16194 2018-04-09 Jan Hubicka <jh@suse.cz>
16195
16196 PR rtl/84058
16197 * cfgcleanup.c (try_forward_edges): Do not give up on crossing
16198 jumps; choose last target that matches the criteria (i.e.
16199 no partition changes for non-crossing jumps).
16200 * cfgrtl.c (cfg_layout_redirect_edge_and_branch): Add basic
16201 support for redirecting crossing jumps to non-crossing.
16202
16203 2018-04-09 Alexey Brodkin <abrodkin@synopsys.com>
16204
16205 * config/arc/arc.c (arc_expand_prologue): Set stack usage info
16206 also for naked functions.
16207
16208 2018-04-09 Claudiu Zissulescu <claziss@synopsys.com>
16209
16210 * config/arc/arc.md (add_shift): New pattern.
16211 (add_shift2): Likewise.
16212 (sub_shift): Likewise.
16213 (sub_shift_cmp0_noout): Likewise.
16214 (compare_si_ashiftsi): Likewise.
16215 (xbfu_cmp0_noout): New combine pattern.
16216 (xbfu_cmp0"): Likewise.
16217 (movsi_set_cc_insn): Place the predicable variant first.
16218 (commutative_binary_cmp0_noout): Remove clobber.
16219 (commutative_binary_cmp0): New pattern.
16220 (noncommutative_binary_cmp0): Likewise.
16221 (noncommutative_binary_cmp0_noout): Likewise.
16222 (noncommutative_binary_comparison_result_used): Removed.
16223 (rsub_cmp0): New pattern.
16224 (rsub_cmp0_noout): Likewise.
16225 (extzvsi): Changed, keep only meaningful variants.
16226 (SQH, SEZ): New iterators.
16227 (SQH_postfix): New mode attribute.
16228 (SEZ_prefix): New code attribute.
16229 (<SEZ_prefix>xt<SQH_postfix>_cmp0_noout): New instruction pattern.
16230 (<SEZ_prefix>xt<SQH_postfix>_cmp0): Likewise.
16231 * config/arc/predicates.md (cc_set_register): Use CC_REG instead
16232 of numerical value.
16233 (noncommutative_operator): Check the availability of barrel
16234 shifter option.
16235
16236 2018-04-09 Richard Biener <rguenther@suse.de>
16237
16238 PR tree-optimization/85284
16239 * tree-ssa-loop-niter.c (number_of_iterations_exit_assumptions):
16240 Only use the niter constraining form of simple_iv when the exit
16241 is always executed.
16242
16243 2018-04-09 Tom de Vries <tom@codesourcery.com>
16244
16245 PR target/84041
16246 * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
16247 (define_expand "*memory_barrier"): New define_expand.
16248 (define_insn "memory_barrier"): New insn.
16249
16250 2018-04-09 Andrey Belevantsev <abel@ispras.ru>
16251
16252 PR rtl-optimization/80463
16253 PR rtl-optimization/83972
16254 PR rtl-optimization/83480
16255
16256 * sel-sched-ir.c (has_dependence_note_mem_dep): Take into account the
16257 correct producer for the insn.
16258 (tidy_control_flow): Fixup seqnos in case of debug insns.
16259
16260 2018-04-09 Andrey Belevantsev <abel@ispras.ru>
16261
16262 PR rtl-optimization/83913
16263
16264 * sel-sched-ir.c (merge_expr_data): Choose the middle between two
16265 different sched-times when merging exprs.
16266
16267 2018-04-09 Andrey Belevantsev <abel@ispras.ru>
16268
16269 PR rtl-optimization/83962
16270
16271 * sel-sched-ir.c (tidy_control_flow): Correct the order in which we call
16272 tidy_fallthru_edge and tidy_control_flow.
16273
16274 2018-04-09 Andrey Belevantsev <abel@ispras.ru>
16275
16276 PR rtl-optimization/83530
16277
16278 * sel-sched.c (force_next_insn): New global variable.
16279 (remove_insn_for_debug): When force_next_insn is true, also leave only
16280 next insn in the ready list.
16281 (sel_sched_region): When the region wasn't scheduled, make another pass
16282 over it with force_next_insn set to 1.
16283
16284 2018-04-08 Monk Chiang <sh.chiang04@gmail.com>
16285
16286 * config.gcc (nds32le-*-*, nds32be-*-*): Add nds32/nds32_intrinsic.h
16287 into tm_file.
16288 * config/nds32/constants.md (unspec_volatile_element): Add enum values
16289 for interrupt control.
16290 * config/nds32/nds32-intrinsic.c: Implementation of intrinsic
16291 functions for interrupt control.
16292 * config/nds32/nds32-intrinsic.md: Likewise.
16293 * config/nds32/nds32_intrinsic.h: Likewise.
16294 * config/nds32/nds32.h (nds32_builtins): Likewise.
16295
16296 2018-04-08 Chung-Ju Wu <jasonwucj@gmail.com>
16297
16298 * config/nds32/nds32.c (nds32_init_machine_status,
16299 nds32_legitimate_index_p, nds32_legitimate_address_p): Consider
16300 strict_aligned_p field.
16301 (nds32_expand_to_rtl_hook): New function.
16302 (TARGET_EXPAND_TO_RTL_HOOK): Define.
16303 * config/nds32/nds32.h (machine_function): Add strict_aligned_p field.
16304
16305 2018-04-08 Kito Cheng <kito.cheng@gmail.com>
16306 Chung-Ju Wu <jasonwucj@gmail.com>
16307
16308 * config.gcc (nds32*-*-*): Check that n7 is valid to --with-cpu.
16309 * config/nds32/nds32-n7.md: New file.
16310 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N7.
16311 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n7
16312 pipeline.
16313 * config/nds32/nds32-protos.h: More declarations for n7 pipeline.
16314 * config/nds32/nds32.md (pipeline_model): Add n7.
16315 * config/nds32/nds32.opt (mcpu): Support n7 pipeline cpus.
16316 * config/nds32/pipelines.md: Include n7 settings.
16317
16318 2018-04-08 Kito Cheng <kito.cheng@gmail.com>
16319 Chung-Ju Wu <jasonwucj@gmail.com>
16320
16321 * config.gcc (nds32*-*-*): Check that e8 is valid to --with-cpu.
16322 * config/nds32/nds32-e8.md: New file.
16323 * config/nds32/nds32-opts.h (nds32-cpu_type): Add CPU_E8.
16324 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for e8
16325 pipeline.
16326 * config/nds32/nds32-protos.h: More declarations for e8 pipeline.
16327 * config/nds32/nds32.md (pipeline_model): Add e8.
16328 * config/nds32/nds32.opt (mcpu): Support e8 pipeline cpus.
16329 * config/nds32/pipelines.md: Include e8 settings.
16330
16331 2018-04-08 Kito Cheng <kito.cheng@gmail.com>
16332 Chung-Ju Wu <jasonwucj@gmail.com>
16333
16334 * config.gcc (nds32*-*-*): Check that n6/n8/s8 are valid to --with-cpu.
16335 * config/nds32/nds32-n8.md: New file.
16336 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N6 and CPU_N8.
16337 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n8
16338 pipeline.
16339 * config/nds32/nds32-protos.h: More declarations for n8 pipeline.
16340 * config/nds32/nds32-utils.c: More implementations for n8 pipeline.
16341 * config/nds32/nds32.md (pipeline_model): Add n8.
16342 * config/nds32/nds32.opt (mcpu): Support n8 pipeline cpus.
16343 * config/nds32/pipelines.md: Include n8 settings.
16344
16345 2018-04-08 Kito Cheng <kito.cheng@gmail.com>
16346 Chung-Ju Wu <jasonwucj@gmail.com>
16347
16348 * config.gcc (nds32*): Add nds32-utils.o into extra_objs.
16349 * config/nds32/nds32-n9-2r1w.md: New file.
16350 * config/nds32/nds32-n9-3r2w.md: New file.
16351 * config/nds32/nds32-opts.h (nds32_cpu_type, nds32_mul_type,
16352 nds32_register_ports): New or modify for cpu n9.
16353 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n9
16354 pipeline.
16355 * config/nds32/nds32-protos.h: More declarations for n9 pipeline.
16356 * config/nds32/nds32-utils.c: New file.
16357 * config/nds32/nds32.h (TARGET_PIPELINE_N9, TARGET_PIPELINE_SIMPLE,
16358 TARGET_MUL_SLOW): Define.
16359 * config/nds32/nds32.md (pipeline_model): New attribute.
16360 * config/nds32/nds32.opt (mcpu, mconfig-mul, mconfig-register-ports):
16361 New options that support cpu n9.
16362 * config/nds32/pipelines.md: Include n9 settings.
16363 * config/nds32/t-nds32 (nds32-utils.o): Add dependency.
16364
16365 2018-04-08 Chung-Ju Wu <jasonwucj@gmail.com>
16366
16367 * config/nds32/nds32-md-auxiliary.c (output_cond_branch): Output align
16368 information if necessary.
16369 (output_cond_branch_compare_zero): Likewise.
16370 * config/nds32/nds32.c (nds32_adjust_insn_length): Consider align case.
16371 (nds32_target_alignment): Refine for alignment.
16372 * config/nds32/nds32.h (NDS32_ALIGN_P): Define.
16373 (FUNCTION_BOUNDARY): Modify.
16374 * config/nds32/nds32.md (call_internal, call_value_internal): Consider
16375 align case.
16376 * config/nds32/nds32.opt (malways-align, malign-functions): New.
16377
16378 2018-04-08 Monk Chiang <sh.chiang04@gmail.com>
16379
16380 * config/nds32/constants.md (unspec_volatile_element): Add values for
16381 TLB operation and data prefetch.
16382 * config/nds32/nds32-intrinsic.c: Implementation of intrinsic
16383 functions for TLB operation and data prefetch.
16384 * config/nds32/nds32-intrinsic.md: Likewise.
16385 * config/nds32/nds32_intrinsic.h: Likewise.
16386 * config/nds32/nds32.c (nds32_dpref_names): Likewise.
16387 (nds32_print_operand): Likewise.
16388 * config/nds32/nds32.h (nds32_builtins): Likewise.
16389
16390 2018-04-07 Thomas Koenig <tkoenig@gcc.gnu.org>
16391 Andrew Pinski <pinsika@gcc.gnu.org>
16392
16393 PR middle-end/82976
16394 * match.pd: Use constant_boolean_node of correct type instead of
16395 boolean_true_node or boolean_false_node for simplifying
16396 pointer comparisons to zero.
16397
16398 2018-04-07 Jakub Jelinek <jakub@redhat.com>
16399
16400 PR tree-optimization/80021
16401 * tree.c (verify_type_variant): Make error call in verify_variant_match
16402 translatable and remove final full stop.
16403
16404 2018-04-07 Chung-Ju Wu <jasonwucj@gmail.com>
16405
16406 * config/nds32/constants.md (unspec_volatile_element): Add
16407 UNSPEC_VOLATILE_EH_RETURN.
16408 * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push,
16409 nds32_output_stack_pop): Support dwarf exception handling process.
16410 * config/nds32/nds32-protos.h (nds32_dynamic_chain_address): Declare.
16411 * config/nds32/nds32.c (nds32_init_machine_status): Support dwarf
16412 exception handling process.
16413 (nds32_compute_stack_frame): Likewise.
16414 (nds32_return_addr_rtx): Likewise.
16415 (nds32_initial_elimination_offset): Likewise.
16416 (nds32_expand_prologue): Likewise.
16417 (nds32_expand_epilogue): Likewise.
16418 (nds32_dynamic_chain_address): New function.
16419 * config/nds32/nds32.h (machine_function): Add fields for dwarf
16420 exception handling.
16421 (DYNAMIC_CHAIN_ADDRESS): Define.
16422 (EH_RETURN_DATA_REGNO): Define.
16423 (EH_RETURN_STACKADJ_RTX): Define.
16424 * config/nds32/nds32.md (eh_return, nds32_eh_return): Implement
16425 patterns for dwarf exception handling.
16426
16427 2018-04-07 Chung-Ju Wu <jasonwucj@gmail.com>
16428
16429 * config/nds32/nds32.h: Clean up obsolete macros.
16430
16431 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
16432
16433 * config/nds32/constants.md (unspec_element, unspec_volatile_element):
16434 Add enum values for particular instructions.
16435 * config/nds32/nds32-intrinsic.c: Implementation of expanding
16436 particular intrinsic functions.
16437 * config/nds32/nds32-intrinsic.md: Likewise.
16438 * config/nds32/nds32_intrinsic.h: Likewise.
16439 * config/nds32/nds32.h (nds32_builtins): Likewise.
16440 * config/nds32/nds32.md (type): Add pbsad and pbsada.
16441 (btst, ave): New patterns for particular instructions.
16442
16443 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
16444
16445 * config/nds32/constants.md (unspec_element, unspec_volatile_element):
16446 Add enum values for atomic load/store and memory sync.
16447 * config/nds32/nds32-intrinsic.c: Implementation for atomic load/store
16448 and memory sync.
16449 * config/nds32/nds32-intrinsic.md: Likewise.
16450 * config/nds32/nds32_intrinsic.h: Likewise.
16451 * config/nds32/nds32.h (nds32_builtins): Likewise.
16452
16453 2018-04-07 Jakub Jelinek <jakub@redhat.com>
16454
16455 PR tree-optimization/85257
16456 * fold-const.c (native_encode_vector): If not all elts could fit
16457 and off is -1, return 0 rather than offset.
16458 * tree-ssa-sccvn.c (vn_reference_lookup_3): Pass
16459 (offseti - offset2) / BITS_PER_UNIT as 4th argument to
16460 native_encode_expr. Verify len * BITS_PER_UNIT >= maxsizei. Don't
16461 adjust buffer in native_interpret_expr call.
16462
16463 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
16464
16465 * config/nds32/constants.md (unspec_volatile_element): Add cache
16466 control enum values.
16467 * config/nds32/nds32-intrinsic.c: Add cache control expand functions.
16468 * config/nds32/nds32-intrinsic.md: Add cache control patterns.
16469 * config/nds32/nds32.c (nds32_cctl_names): New.
16470 (nds32_print_operand): Handle cache control register names.
16471 * config/nds32/nds32.h (nds32_builtins): New enum values.
16472 * config/nds32/nds32_intrinsic.h: Add cache control enum types and
16473 macros.
16474 * config/nds32/nds32.md (type): Add mmu.
16475 * config/nds32/pipelines.md (simple_insn): Add mmu.
16476
16477 2018-04-07 Chung-Ju Wu <jasonwucj@gmail.com>
16478
16479 * config/nds32/nds32.md (type): Remove call.
16480 * config/nds32/pipelines.md (simple_insn): Likewise.
16481
16482 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
16483
16484 * config/nds32/constants.md (unspec_volatile_element): Add
16485 UNSPEC_VOLATILE_FMFCSR, UNSPEC_VOLATILE_FMTCSR and
16486 UNSPEC_VOLATILE_FMFCFG.
16487 * config/nds32/nds32-intrinsic.c (bdesc_noarg): New builtin
16488 description for fmfcfg and fmfcsr.
16489 (bdesc_1arg): Add fmtcsr.
16490 (bdesc_2arg): Add fcpynss, fcpyss, fcpynsd and fcpysd.
16491 (nds32_expand_builtin_impl): Deal with FPU intrinsic functions.
16492 * config/nds32/nds32-intrinsic.md (unspec_fcpynsd, unspec_fcpysd,
16493 unspec_fcpynss, unspec_fcpysd, unspec_fcpyss, unspec_fmfcsr,
16494 unspec_fmfcfg): New patterns.
16495 * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FMFCFG,
16496 NDS32_BUILTIN_FMFCSR, NDS32_BUILTIN_FMTCSR, NDS32_BUILTIN_FCPYNSS,
16497 NDS32_BUILTIN_FCPYSS,NDS32_BUILTIN_FCPYNSD and NDS32_BUILTIN_FCPYSD.
16498 * config/nds32/nds32_intrinsic.h (__nds32__fcpynsd, __nds32__fcpynss,
16499 __nds32__fcpysd, __nds32__fcpyss, __nds32__fmfcsr, __nds32__fmtcsr,
16500 __nds32__fmfcfg): Define.
16501
16502 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
16503
16504 * config/nds32/nds32.c (nds32_intrinsic_register_names): Add more
16505 intrinsic register names.
16506 * config/nds32/nds32_intrinsic.h (nds32_intrinsic_registers): Add more
16507 intrinsic register enum values and macros.
16508
16509 2018-04-07 Chung-Ju Wu <jasonwucj@gmail.com>
16510
16511 * config/nds32/nds32.c (nds32_legitimate_index_p): Modify condition
16512 for load/store addressing form.
16513 (nds32_print_operand_address): Likewise.
16514
16515 2018-04-06 Eric Botcazou <ebotcazou@adacore.com>
16516
16517 PR target/85196
16518 * config/sparc/sparc.c (sparc_expand_move): Deal with symbolic operands
16519 based on LABEL_REF. Remove useless assertion.
16520 (pic_address_needs_scratch): Fix formatting.
16521 (sparc_legitimize_pic_address): Minor tweaks.
16522 (sparc_delegitimize_address): Adjust assertion accordingly.
16523 * config/sparc/sparc.md (movsi_pic_label_ref): Change label_ref_operand
16524 into symbolic_operand.
16525 (movsi_high_pic_label_ref): Likewise.
16526 (movsi_lo_sum_pic_label_ref): Likewise.
16527 (movdi_pic_label_ref): Likewise.
16528 (movdi_high_pic_label_ref): Likewise.
16529 (movdi_lo_sum_pic_label_ref): Likewise.
16530
16531 2018-04-06 Amaan Cheval <amaan.cheval@gmail.com>
16532
16533 * config.gcc (x86_64-*-rtems*): Add rtems.h to tm_file for
16534 custom LIB_SPEC setup.
16535
16536 2018-04-06 Ruslan Bukin <br@bsdpad.com>
16537 Kito Cheng <kito.cheng@gmail.com>
16538
16539 * config.gcc (riscv*-*-freebsd*): Add RISC-V FreeBSD support.
16540 * config/riscv/freebsd.h: New.
16541
16542 2018-04-06 Chung-Ju Wu <jasonwucj@gmail.com>
16543
16544 * config/nds32/nds32.c (nds32_adjust_insn_length): Refine.
16545 * config/nds32/nds32.h (ADJUST_INSN_LENGTH): Change the location in
16546 file.
16547
16548 2018-04-06 Chung-Ju Wu <jasonwucj@gmail.com>
16549 Kito Cheng <kito.cheng@gmail.com>
16550
16551 * config/nds32/nds32-md-auxiliary.c (nds32_output_return,
16552 nds32_output_call, nds32_symbol_binds_local_p): New functions.
16553 * config/nds32/nds32-protos.h (nds32_output_call,
16554 nds32_output_return): Declare.
16555 * config/nds32/nds32.md: Refine all the call and return patterns.
16556
16557 2018-04-06 Jakub Jelinek <jakub@redhat.com>
16558
16559 PR debug/85252
16560 * dwarf2out.c (rtl_for_decl_init): For STRING_CST initializer only
16561 build CONST_STRING if TYPE_MAX_VALUE is non-NULL and is INTEGER_CST.
16562
16563 PR rtl-optimization/84872
16564 * cfgloopmanip.c (create_preheader): Use make_forwarder_block even if
16565 nentry == 1 when CP_FALLTHRU_PREHEADERS and single_entry is
16566 EDGE_CROSSING edge.
16567
16568 2018-04-06 Tamar Christina <tamar.christina@arm.com>
16569
16570 * expr.c (copy_blkmode_to_reg): Revert 254862.
16571 * doc/sourcebuild.texi (word_mode_no_slow_unalign): Likewise.
16572
16573 2018-04-06 Richard Biener <rguenther@suse.de>
16574
16575 PR middle-end/85244
16576 * tree-dfa.c (get_ref_base_and_extent): Reset seen_variable_array_ref
16577 after seeing a component reference with an adjacent field. Treat
16578 refs to arrays at struct end of external decls similar to
16579 refs to unconstrained commons.
16580
16581 2018-04-06 Jakub Jelinek <jakub@redhat.com>
16582
16583 PR sanitizer/85213
16584 * fold-const.c (twoval_comparison_p): Remove SAVE_P argument and don't
16585 look through SAVE_EXPRs with non-side-effects argument. Adjust
16586 recursive calls.
16587 (fold_comparison): Adjust twoval_comparison_p caller, don't handle
16588 save_p here.
16589
16590 2018-04-06 Richard Biener <rguenther@suse.de>
16591
16592 PR middle-end/85180
16593 * alias.c (find_base_term): New wrapper around find_base_term
16594 unwinding CSELIB_VAL_PTR changes.
16595 (find_base_term): Do not restore CSELIB_VAL_PTR during the
16596 recursion.
16597
16598 2018-04-06 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
16599
16600 * config/s390/s390.c (s390_z10_optimize_cmp): Expand dedicated NOP
16601 instructions.
16602 * config/s390/s390.md (UNSPECV_NOP_LR_0, UNSPECV_NOP_LR_1): New
16603 constant definitions.
16604 ("nop"): lr 0,0 -> nopr r0
16605 ("nop_lr0", "nop_lr1"): New insn definitions.
16606
16607 2018-04-06 Chung-Ju Wu <jasonwucj@gmail.com>
16608
16609 * config/nds32/nds32.md (*stack_push, *stack_pop): Use
16610 NDS32_V3PUSH_AVAILABLE_P macro.
16611
16612 2018-04-06 Monk Chiang <sh.chiang04@gmail.com>
16613 Chung-Ju Wu <jasonwucj@gmail.com>
16614
16615 * config.gcc (nds32*-*-*): Add v2j v3f v3s checking.
16616 (nds32*-*-*): Add float and fpu_config into supported_defaults.
16617 * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS):
16618 Include TARGET_DEFAULT_FPU_ISA and TARGET_DEFAULT_FPU_FMA.
16619 * config/nds32/constants.md (unspec_element): Add UNSPEC_COPYSIGN,
16620 UNSPEC_FCPYNSD, UNSPEC_FCPYNSS, UNSPEC_FCPYSD and UNSPEC_FCPYSS.
16621 * config/nds32/constraints.md: New constraints and checking for hard
16622 float configuration.
16623 * config/nds32/iterators.md: New mode iterator and attribute for hard
16624 float configuration.
16625 * config/nds32/nds32-doubleword.md: Use hard float alternatives and
16626 patterns.
16627 * config/nds32/nds32-fpu.md: New file.
16628 * config/nds32/nds32-md-auxiliary.c: New functions and checkings to
16629 deal with hard float code generation.
16630 * config/nds32/nds32-opts.h (nds32_arch_type): Add ARCH_V3F and
16631 ARCH_V3S.
16632 (abi_type, float_reg_number): New enum type.
16633 * config/nds32/nds32-predicates.c: New predicates for hard float.
16634 * config/nds32/nds32-protos.h: Declare functions for hard float.
16635 * config/nds32/nds32.c: Implementation for hard float configuration.
16636 * config/nds32/nds32.h: Definitions for hard float configuration.
16637 * config/nds32/nds32.md: Include hard float machine description and
16638 modify patterns for hard float configuration.
16639 * config/nds32/nds32.opt: New options for hard float configuration.
16640 * config/nds32/predicates.md: New predicates for hard float
16641 configuration.
16642
16643 2018-04-06 Kuan-Lin Chen <kuanlinchentw@gmail.com>
16644
16645 * common/config/nds32/nds32-common.c
16646 (nds32_option_optimization_table): Enable -mreleax-hint by default.
16647
16648 2018-04-05 Jakub Jelinek <jakub@redhat.com>
16649
16650 PR middle-end/85195
16651 * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Use view_convert around
16652 CONSTRUCTOR_ELT (ctor, ...)->value.
16653
16654 2018-04-05 Uros Bizjak <ubizjak@gmail.com>
16655
16656 PR target/85193
16657 * config/i386/i386.md (define_attr "memory"): Handle rotate1 type.
16658
16659 2018-04-05 Tom de Vries <tom@codesourcery.com>
16660
16661 PR target/85204
16662 * config/nvptx/nvptx.c (nvptx_single): Fix neutering of bb with only
16663 cond jump.
16664
16665 2018-04-05 Shiva Chen <shiva0217@gmail.com>
16666 Kito Cheng <kito.cheng@gmail.com>
16667
16668 * config/nds32/constraints.md (U33): Fine-tune checking condition.
16669 * config/nds32/nds32-md-auxiliary.c (nds32_mem_format): Ditto.
16670 * config/nds32/nds32.h (nds32_16bit_address_type): Add
16671 ADDRESS_POST_MODIFY_LO_REG_IMM3U.
16672
16673 2018-04-05 Shiva Chen <shiva0217@gmail.com>
16674 Kito Cheng <kito.cheng@gmail.com>
16675
16676 * config/nds32/constraints.md (Ufe): New memory constraint.
16677 * config/nds32/nds32-md-auxiliary.c (nds32_mem_format,
16678 nds32_output_16bit_load): Consider r8 register for lwi45.fe format.
16679 * config/nds32/nds32.c (nds32_print_operand): Output lwi45.fe
16680 operands.
16681 * config/nds32/nds32.h (nds32_16bit_address_type): Add ADDRESS_R8_IMM7U.
16682 * config/nds32/nds32.md (*mov<mode>): Adjust pattern.
16683
16684 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
16685
16686 * config/nds32/nds32.md: Use optimize_size in the condition for
16687 alu-shift instructions.
16688
16689 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
16690
16691 * config/nds32/nds32.md (divsi4, udivsi4): New patterns.
16692
16693 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
16694
16695 * config/nds32/nds32.md (negsi2): Refine pattern.
16696
16697 2018-04-05 Kito Cheng <kito.cheng@gmail.com>
16698 Chung-Ju Wu <jasonwucj@gmail.com>
16699
16700 * config/nds32/iterators.md (shift_rotate): New code iterator.
16701 (shift): New code attribute.
16702 * config/nds32/nds32-md-auxiliary.c (nds32_expand_constant): New.
16703 * config/nds32/nds32-protos.h (nds32_expand_constant): Declare.
16704 * config/nds32/nds32.c (nds32_print_operand): Deal with more cases.
16705 * config/nds32/nds32.md (addsi3, *add_srli): Refine implementation for
16706 bit-wise operations.
16707 (andsi3, *andsi3): Ditto.
16708 (iorsi3, *iorsi3, *or_slli, *or_srli): Ditto.
16709 (xorsi3, *xorsi3, *xor_slli, *xor_srli): Ditto.
16710 (<shift>si3, *ashlsi3, *ashrsi3, *lshrsi3, *rotrsi3): Ditto.
16711 * config/nds32/predicates.md (nds32_rimm5u_operand, nds32_and_operand,
16712 nds32_ior_operand, nds32_xor_operand): New predicates.
16713
16714 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
16715
16716 * config/nds32/nds32.md (add<mode>3, sub<mode>3): Rename to ...
16717 (addsi3, subsi3): ... this.
16718
16719 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
16720
16721 * config/nds32/nds32.md (*sub_srli, *and_slli): Fine-tune predicator.
16722
16723 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
16724
16725 * config/nds32/nds32.md: Adjust indention.
16726
16727 2018-04-05 Kito Cheng <kito.cheng@gmail.com>
16728
16729 * config/nds32/nds32.md (feature): New attribute.
16730
16731 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
16732
16733 * config/nds32/nds32.md (subtype): New attribute.
16734
16735 2018-04-04 Thomas Preud'homme <thomas.preudhomme@arm.com>
16736
16737 PR target/85203
16738 * config/arm/arm-builtins.c (arm_expand_builtin): Change
16739 expansion to perform a bitwise AND of the argument followed by a
16740 boolean negation of the result.
16741
16742 2018-04-04 Peter Bergner <bergner@vnet.ibm.com>
16743
16744 PR rtl-optimization/84878
16745 * ddg.c (add_cross_iteration_register_deps): Use DF_REF_BB to determine
16746 the basic block. Assert the use reference is not artificial and that
16747 it has an associated insn.
16748
16749 2018-04-04 Michael Matz <matz@suse.de>
16750
16751 * builtins.c (compute_objsize): Pass correct operand
16752 to array_at_struct_end_p.
16753
16754 2018-04-04 Richard Biener <rguenther@suse.de>
16755
16756 PR lto/85176
16757 * dwarf2out.c (dwarf2out_register_external_die): Peel namespaces
16758 from contexts for DINFO_LEVEL_TERSE and below.
16759
16760 2018-04-04 Kito Cheng <kito.cheng@gmail.com>
16761
16762 * config/nds32/nds32-doubleword.md (move_<mode>): Require
16763 resiter_operand condition.
16764 * config/nds32/nds32.md (*move<mode>): Ditto.
16765
16766 2018-04-04 Kito Cheng <kito.cheng@gmail.com>
16767 Monk Chiang <sh.chiang04@gmail.com>
16768
16769 * config/nds32/nds32.md (movmisalign<mode>): New pattern.
16770
16771 2018-04-04 Chung-Ju Wu <jasonwucj@gmail.com>
16772
16773 * config/nds32/nds32.md (movqi, movhi): Merge into mov<mode>.
16774
16775 2018-04-04 Chung-Ju Wu <jasonwucj@gmail.com>
16776 Kito Cheng <kito.cheng@gmail.com>
16777
16778 * config/nds32/nds32-md-auxiliary.c (nds32_inverse_cond_code,
16779 nds32_cond_code_str, output_cond_branch,
16780 output_cond_branch_compare_zero, nds32_expand_cbranch,
16781 nds32_expand_cstore, nds32_expand_movcc,
16782 nds32_output_cbranchsi4_equality_zero,
16783 nds32_output_cbranchsi4_equality_reg,
16784 nds32_output_cbranchsi4_equality_reg_or_const_int,
16785 nds32_output_cbranchsi4_greater_less_zero: New functions.
16786 * config/nds32/nds32-protos.h (nds32_expand_cbranch,
16787 nds32_expand_cstore, nds32_expand_movcc,
16788 nds32_output_cbranchsi4_equality_zero,
16789 nds32_output_cbranchsi4_equality_reg,
16790 nds32_output_cbranchsi4_equality_reg_or_const_int,
16791 nds32_output_cbranchsi4_greater_less_zero): Declare.
16792 * config/nds32/predicates.md (nds32_movecc_comparison_operator,
16793 nds32_rimm11s_operand): New predicates.
16794 * config/nds32/nds32.h (nds32_expand_result_type): New enum type.
16795 * config/nds32/nds32.md: Rewrite all the branch and conditional move
16796 patterns.
16797
16798 2018-04-04 Kito Cheng <kito.cheng@gmail.com>
16799
16800 * config/nds32/nds32-doubleword.md: Refine all the instruction type.
16801 * config/nds32/nds32.md: Ditto.
16802 * config/nds32/pipelines.md: Ditto.
16803
16804 2018-04-04 Richard Biener <rguenther@suse.de>
16805
16806 PR tree-optimization/85168
16807 * tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address): Avoid
16808 propagating abnormals.
16809
16810 2018-04-04 Chung-Ju Wu <jasonwucj@gmail.com>
16811
16812 * config/nds32/nds32.md (enabled): Use yes/no for this attribute.
16813
16814 2018-04-04 Chung-Ju Wu <jasonwucj@gmail.com>
16815 Kito Cheng <kito.cheng@gmail.com>
16816
16817 * config/nds32/nds32-md-auxiliary.c (nds32_long_call_p): New function.
16818 * config/nds32/nds32-protos.h (nds32_long_call_p): Declare.
16819 * config/nds32/nds32.c (nds32_function_ok_for_sibcall): New function.
16820 (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
16821 * config/nds32/nds32.md (sibcall_internal): New.
16822 (sibcall_register): Remove.
16823 (sibcall_immediate): Remove.
16824 (sibcall_value_internal): New.
16825 (sibcall_value_register): Remove.
16826 (sibcall_value_immediate): Remove.
16827 * config/nds32/predicates.md (nds32_general_register_operand): New.
16828 (nds32_call_address_operand): New.
16829
16830 2018-04-03 Jakub Jelinek <jakub@redhat.com>
16831
16832 PR rtl-optimization/85167
16833 * shrink-wrap.c (move_insn_for_shrink_wrap): Don't set bb_uses and
16834 bb_defs if *split_p, instead preinitialize it to NULL.
16835
16836 PR tree-optimization/85156
16837 * builtins.c (fold_builtin_expect): Use save_expr on arg1 to avoid
16838 evaluating the argument multiple times.
16839
16840 2018-04-03 Bill Schmidt <wschmidt@linux.ibm.com>
16841
16842 * config/rs6000/emmintrin.h (_mm_cvtpd_epi32): Use __vector rather
16843 than vector.
16844 (_mm_cvtpd_ps): Likewise.
16845 (_mm_cvttpd_epi32): Likewise.
16846 * config/rs6000/mmintrin.h (_mm_unpacklo_pi8): Likewise.
16847 * config/rs6000/xmmintrin.h: For strict-ANSI C++ or C11, undefine
16848 vector, pixel, and bool following altivec.h include.
16849
16850 2018-04-03 Martin Sebor <msebor@redhat.com>
16851
16852 * doc/extend.texi (Common Function Attributes): Clarify.
16853 (const attribute): Likewise.
16854 (pure attribute): Likewise.
16855
16856 2018-04-03 Jakub Jelinek <jakub@redhat.com>
16857
16858 PR target/85169
16859 * config/i386/i386.c (ix86_expand_vector_set): Use
16860 HOST_WIDE_INT_1U << elt instead of 1 << elt. Formatting fix.
16861
16862 2018-04-03 Uros Bizjak <ubizjak@gmail.com>
16863
16864 * config/i386/i386.c (emit_i387_cw_initialization): Always use logic
16865 instructions when changing rounding bits to preserve precision bits
16866 in the x87 control word.
16867
16868 2018-04-03 Martin Liska <mliska@suse.cz>
16869
16870 PR tree-optimization/82491
16871 * rtl.h (strip_offset_and_add): Replace += suboffset with
16872 poly_uint64 () + suboffset.
16873
16874 2018-03-29 Martin Liska <mliska@suse.cz>
16875 Martin Jambor <mjambor@suse.cz>
16876
16877 PR ipa/84947
16878 * ipa-cp.c (propagate_bits_across_jump_function): Bail out if
16879 param_type is not an integral or pointer type.
16880
16881 2018-04-03 Richard Biener <rguenther@suse.de>
16882
16883 * sese.h (recompute_all_dominators): Remove.
16884
16885 2018-04-02 Martin Sebor <msebor@redhat.com>
16886
16887 * doc/invoke.texi (-Wrestrict): Fix typos.
16888
16889 2018-04-02 Jim Wilson <jimw@sifive.com>
16890
16891 * config/riscv/riscv.h (SHIFT_COUNT_TRUNCATED): Set to zero.
16892 * config/riscv/riscv.md (<optab>si3): Use QImode shift count.
16893 (<optab>di3, <optab>si3_extend): Likewise.
16894 (<optab>si3_mask, <optab>si3_mask_1): New.
16895 (<optab>di3_mask, <optab>di3_mask_1): New.
16896 (<optab>si3_extend_mask, <optab>si3_extend_mask_1): New.
16897 (lshrsi3_zero_extend_1): Use VOIDmode shift count.
16898 * config/riscv/sync.md (atomic_test_and_set): Emit QImode shift count.
16899
16900 2018-04-02 Gerald Pfeifer <gerald@pfeifer.com>
16901
16902 * doc/cpp.texi (Variadic Macros): Fix line continuation in an
16903 example.
16904
16905 2018-04-02 Chung-Ju Wu <jasonwucj@gmail.com>
16906
16907 * config/nds32/nds32.c (TARGET_CANONICALIZE_COMPARISON): Define.
16908 (nds32_canonicalize_comparison): New function.
16909
16910 2018-04-01 Chung-Ju Wu <jasonwucj@gmail.com>
16911 Kito Cheng <kito.cheng@gmail.com>
16912 Kuan-Lin Chen <kuanlinchentw@gmail.com>
16913
16914 * config.gcc (nds32): Add nds32-relax-opt.o into extra_objs.
16915 * config/nds32/constants.md (unspec_volatile_element): Add
16916 UNSPEC_VOLATILE_RELAX_GROUP.
16917 * config/nds32/nds32-relax-opt.c: New file.
16918 * config/nds32/nds32-predicates.c
16919 (nds32_symbol_load_store_p): New function.
16920 * config/nds32/nds32-protos.h
16921 (nds32_symbol_load_store_p): Declare function.
16922 (make_pass_nds32_relax_opt): Declare new rtl pass function.
16923 * config/nds32/nds32.c
16924 (nds32_register_pass): New function to register pass.
16925 (nds32_register_passes): New function to register passes.
16926 * config/nds32/nds32.md (relax_group): New pattern.
16927 * config/nds32/nds32.opt (mrelax-hint): New option.
16928 * config/nds32/t-nds32 (nds32-relax-opt.o): New dependency.
16929
16930 2018-04-01 Kito Cheng <kito.cheng@gmail.com>
16931
16932 * config/nds32/t-nds32: Modify files dependency.
16933
16934 2018-04-01 Chung-Ju Wu <jasonwucj@gmail.com>
16935
16936 * config/nds32/nds32.h (FUNCTION_PROFILER): Output newline character.
16937 (PROFILE_HOOK): Define its implementation.
16938
16939 2018-04-01 Chung-Ju Wu <jasonwucj@gmail.com>
16940
16941 * config/nds32/nds32.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Use unsigned int
16942 type and 32-bit size.
16943
16944 2018-04-01 Jakub Jelinek <jakub@redhat.com>
16945
16946 PR middle-end/85090
16947 * config/i386/sse.md (V): Add V64QI and V32HI for TARGET_AVX512F.
16948 (V_128_256): New mode iterator.
16949 (*avx512dq_vextract<shuffletype>64x2_1 splitter): New define_split.
16950 (*avx512f_vextract<shuffletype>32x4_1 splitter): Likewise.
16951 (xop_pcmov_<mode><avxsizesuffix>): Use V_128_256 mode iterator instead
16952 of V.
16953 * config/i386/i386.c (ix86_expand_vector_set): Improve V32HImode and
16954 V64QImode expansion for !TARGET_AVX512BW && TARGET_AVX512F.
16955
16956 2018-03-31 Segher Boessenkool <segher@kernel.crashing.org>
16957
16958 PR target/83315
16959 * config/rs6000/xmmintrin.h (_mm_set_ps, _mm_max_ps): Handle (quiet)
16960 NaN inputs correctly.
16961
16962 2018-03-30 Peter Bergner <bergner@vnet.ibm.com>
16963
16964 PR target/80546
16965 * config/rs6000/vsx.md (??r): New mode attribute.
16966 (*vsx_mov<mode>_64bit): Use it.
16967 (*vsx_mov<mode>_32bit): Likewise.
16968
16969 2018-03-30 Martin Sebor <msebor@redhat.com>
16970
16971 PR tree-optimization/84818
16972 * builtins.c (check_access): Use warning_n.
16973
16974 2018-03-30 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
16975
16976 PR target/83822
16977 * config/rs6000/rs6000-string.c (expand_compare_loop): Fix redundant
16978 condition.
16979 * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Fix redundant
16980 condition.
16981
16982 2018-03-30 Julia Koval <julia.koval@intel.com>
16983
16984 PR target/84413
16985 * x86-tune.def (movx, partial_reg_dependency): Enable for
16986 m_SKYLAKE_AVX512.
16987
16988 2018-03-29 Vladimir Makarov <vmakarov@redhat.com>
16989
16990 PR inline-asm/84985
16991 * lra-constraints.c (process_alt_operands): Move setting
16992 this_alternative_matches below.
16993
16994 2018-03-29 Martin Liska <mliska@suse.cz>
16995
16996 PR lto/84995.
16997 * doc/invoke.texi: Document how LTO works with debug info.
16998 Describe auto-load support of binutils. Mention 'x86-64'
16999 as valid option value of -march option.
17000
17001 2018-03-29 Jakub Jelinek <jakub@redhat.com>
17002
17003 * config/i386/sse.md (<avx512>_blendm<mode>): Use <sseintprefix>.
17004
17005 PR c/85094
17006 * fold-const.c (operand_equal_p): Handle DEBUG_BEGIN_STMT.
17007 For STATEMENT_LIST, pass down OEP_LEXICOGRAPHIC and maybe
17008 OEP_NO_HASH_CHECK for recursive call, to avoid exponential
17009 checking.
17010
17011 2018-03-28 Peter Bergner <bergner@vnet.ibm.com>
17012
17013 PR target/84912
17014 * config/rs6000/rs6000.h (RS6000_BTM_POWERPC64): New define.
17015 (RS6000_BTM_COMMON): Add RS6000_BTM_POWERPC64.
17016 * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add support
17017 for RS6000_BTM_POWERPC64.
17018 (rs6000_invalid_builtin): Add handling for RS6000_BTM_POWERPC64
17019 (rs6000_builtin_mask_names): Add RS6000_BTM_POWERPC64.
17020 * config/rs6000/rs6000-builtin.def (BU_P7_POWERPC64_MISC_2): New macro
17021 definition.
17022 (DIVDE): Use it.
17023 (DIVDEU): Likewise.
17024
17025 2018-03-28 Carl Love <cel@us.ibm.com>
17026
17027 Revert
17028 2017-09-27 Carl Love <cel@us.ibm.com>
17029
17030 * config/rs6000/rs6000-builtin.def (BU_FP_1MISC_1): Add define macro.
17031 (FCTID, FCTIW): Add BU_FP_MISC_1 macro expansion for builtins.
17032 * config/rs6000/rs6000.md (lrintsfsi2): Add define_insn for the
17033 fctiw instruction.
17034
17035 2018-03-28 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
17036
17037 * config/rs6000/xmmintrin.h (_mm_max_pi16): Use __vector __bool
17038 instead of __vector bool.
17039 (_mm_max_pu8): Likewise.
17040 (_mm_min_pi16): Likewise.
17041
17042 2018-03-28 Peter Bergner <bergner@vnet.ibm.com>
17043
17044 PR target/84912
17045 * config/rs6000/rs6000-builtin.def (DIVWEO): Delete macro expansion.
17046 (DIVWEUO): Likewise.
17047 (DIVDEO): Likewise.
17048 (DIVDEUO): Likewise.
17049 * config/rs6000/rs6000.c (builtin_function_type): Remove support for
17050 DIVWEUO and DIVDEUO.
17051 * config/rs6000/rs6000.md (UNSPEC_DIVEO, UNSPEC_DIVEUO): Delete unspecs.
17052 (UNSPEC_DIV_EXTEND): Remove deleted unspecs.
17053 (div_extend): Likewise.
17054 * doc/extend.texi (__builtin_divweo): Remove documentation for deleted
17055 builtin function.
17056 (__builtin_divweuo): Likewise.
17057 (__builtin_divdeo): Likewise.
17058 (__builtin_divdeuo): Likewise.
17059
17060 2018-03-28 Jakub Jelinek <jakub@redhat.com>
17061
17062 PR target/85095
17063 * config/i386/i386.md (*add<mode>3_carry_0, *addsi3_carry_zext_0,
17064 *sub<mode>3_carry_0, *subsi3_carry_zext_0): New patterns.
17065
17066 PR tree-optimization/82004
17067 * gimple-match-head.c (optimize_pow_to_exp): New function.
17068 * match.pd (pow(C,x) -> exp(log(C)*x)): Wrap with #if GIMPLE.
17069 Don't fold to exp if optimize_pow_to_exp is false.
17070
17071 2018-03-28 Martin Liska <mliska@suse.cz>
17072
17073 PR other/84819
17074 * calls.c (initialize_argument_information): Fix trailing space.
17075 * common.opt: Fix typo and provide better explanation for
17076 -fsanitize-coverage option.
17077 * config/i386/i386.opt: Fix typo.
17078
17079 2018-03-28 Jakub Jelinek <jakub@redhat.com>
17080 Martin Liska <mliska@suse.cz>
17081
17082 PR sanitizer/85081
17083 * gimplify.c (asan_poison_variable): Don't do the check for
17084 gimplify_omp_ctxp here.
17085 (gimplify_decl_expr): Do it here.
17086 (gimplify_target_expr): Likewise.
17087
17088 2018-03-28 Martin Liska <mliska@suse.cz>
17089
17090 PR target/84988
17091 * config/i386/i386.c (ix86_function_arg_advance): Do not call
17092 chkp_type_bounds_count if MPX is not enabled.
17093
17094 2018-03-27 Chung-Ju Wu <jasonwucj@gmail.com>
17095
17096 * config/nds32/nds32.h (BRANCH_COST): Adjust cost.
17097
17098 2018-03-27 Michael Meissner <meissner@linux.vnet.ibm.com>
17099
17100 PR target/84914
17101 * config/rs6000/rs6000.c (create_complex_muldiv): New helper
17102 function to create the function decl for complex long double
17103 multiply and divide for -mabi=ieeelongdouble.
17104 (init_float128_ieee): Call it.
17105
17106 2018-03-27 H.J. Lu <hongjiu.lu@intel.com>
17107
17108 PR target/85044
17109 * config/i386/i386.c (ix86_trampoline_init): Insert ENDBR for
17110 -fcf-protection=branch -mibt.
17111 * config/i386/i386.h (TRAMPOLINE_SIZE): Increased by 4 bytes.
17112
17113 2018-03-27 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
17114
17115 PR target/81863
17116 * config/arm/arm.c (arm_valid_symbolic_address): Handle
17117 arm_word_relocations.
17118
17119 2018-03-27 Cesar Philippidis <cesar@codesourcery.com>
17120
17121 PR target/85056
17122 * config/nvptx/nvptx.c (nvptx_assemble_decl_begin): Add '[]' to
17123 extern array declarations.
17124
17125 2018-03-27 Richard Biener <rguenther@suse.de>
17126
17127 PR middle-end/84067
17128 * match.pd ((A * C) +- (B * C) -> (A+-B) * C): Guard with
17129 explicit single_use checks.
17130
17131 2018-03-27 Richard Biener <rguenther@suse.de>
17132
17133 PR tree-optimization/85082
17134 * tree-ssa-sccvn.c (vn_reference_lookup_or_insert_for_pieces):
17135 Valueize the VUSE.
17136
17137 2018-03-27 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
17138
17139 * config.gcc (aarch64*-*-linux*): New TARGET_DEFAULT_ASYNC_UNWIND_TABLES
17140 * common/config/aarch64/aarch64-common.c (aarch64_optimization_table[]):
17141 Turn on fasynchronous-unwind-tables and funwind-tables.
17142
17143 2018-03-26 Uros Bizjak <ubizjak@gmail.com>
17144
17145 PR target/85073
17146 * config/i386/i386.md (*bmi_blsr_<mode>_cmp): New insn pattern.
17147 (*bmi_blsr_<mode>_ccz): Ditto.
17148
17149 2018-03-26 Tom de Vries <tom@codesourcery.com>
17150
17151 PR tree-optimization/85063
17152 * omp-general.c (offloading_function_p): New function. Factor out
17153 of ...
17154 * omp-offload.c (pass_omp_target_link::gate): ... here.
17155 * omp-general.h (offloading_function_p): Declare.
17156 * tree-switch-conversion.c (build_one_array): Mark CSWTCH.x variable
17157 with attribute omp declare target for offloading functions.
17158
17159 2018-03-24 Richard Sandiford <richard.sandiford@linaro.org>
17160
17161 PR tree-optimization/84005
17162 * tree-data-ref.h (get_base_for_alignment): Declare.
17163 * tree-data-ref.c (get_base_for_alignment_1): New function.
17164 (get_base_for_alignment): Likewise.
17165 * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Use
17166 get_base_for_alignment to find a suitable base object, instead
17167 of always using drb->base_address.
17168
17169 2018-03-23 Jakub Jelinek <jakub@redhat.com>
17170
17171 PR inline-asm/85022
17172 * emit-rtl.c (init_emit_regs): Indicate that VOIDmode MEMs don't have
17173 known size by default.
17174
17175 2018-03-23 Vladimir Makarov <vmakarov@redhat.com>
17176
17177 PR inline-asm/85030
17178 * lra-constraints.c (process_alt_operands): Don't match BLKmode
17179 and non BLKmode operands.
17180
17181 2018-03-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
17182
17183 PR target/85026
17184 * config/arm/arm.md (unaligned_loadhis): Remove first alternative.
17185 Clean up attributes.
17186
17187 2018-03-23 Richard Biener <rguenther@suse.de>
17188
17189 PR debug/85020
17190 * dwarf2out.c (rtl_for_decl_location): Do not generate RTL early when
17191 we are going to emit early debug for LTO.
17192
17193 2018-03-23 Jakub Jelinek <jakub@redhat.com>
17194
17195 PR inline-asm/85034
17196 * function.c (match_asm_constraints_1): Don't optimize if input
17197 doesn't satisfy general_operand predicate for output's mode.
17198
17199 PR inline-asm/85022
17200 * alias.c (write_dependence_p): Don't require for x_canonicalized
17201 non-VOIDmode if x has VOIDmode.
17202
17203 PR sanitizer/85029
17204 * sanopt.c (maybe_optimize_ubsan_ptr_ifn): If DECL_REGISTER (base),
17205 just don't try to optimize it rather than assert it never happens.
17206
17207 2018-03-22 Kelvin Nilsen <kelvin@gcc.gnu.org>
17208
17209 * config/rs6000/rs6000-builtin.def: Remove various BU_ALTIVEC_X
17210 macro expansions for definition of ST_INTERNAL_<mode> and
17211 LD_INTERNAL_<mode> builtins.
17212 * config/rs6000/rs6000-protos.h (rs6000_address_for_altivec):
17213 Remove prototype.
17214 * config/rs6000/rs6000.c (altivec_expand_ld_builtin): Delete this
17215 function.
17216 (altivec_expand_st_builtin): Likewise.
17217 (altivec_expand_builtin): Remove calls to deleted functions.
17218 (rs6000_address_for_altivec): Delete this function.
17219 * config/rs6000/vector.md: Remove expands for
17220 vector_altivec_load_<mode> and vector_altivec_store_<mode>.
17221
17222 2018-03-22 Sudakshina Das <sudi.das@arm.com>
17223
17224 PR target/84826
17225 * config/arm/arm.h (machine_function): Add static_chain_stack_bytes.
17226 * config/arm/arm.c (arm_compute_static_chain_stack_bytes): Avoid
17227 re-computing once computed.
17228 (arm_expand_prologue): Compute machine->static_chain_stack_bytes.
17229 (arm_init_machine_status): Initialize
17230 machine->static_chain_stack_bytes.
17231
17232 2018-03-22 Kelvin Nilsen <kelvin@gcc.gnu.org>
17233
17234 PR target/84760
17235 * doc/extend.texi: Add four new prototypes for vec_ld.
17236 * config/rs6000/rs6000-builtin.def (LVX_V1TI): Reorder symbol
17237 definitions for more logical presentation.
17238 * config/rs6000/rs6000-c.c: (altivec_overloaded_builtins): Add
17239 entries for V1TI variants of __builtin_altivec_ld builtin.
17240 * config/rs6000/rs6000.c: (altivec_expand_lv_builtin): Add test and
17241 handling of V1TI variant of LVX icode pattern.
17242 (altivec_expand_builtin): Add case for ALTIVEC_BUILTIN_LVX_V1TI.
17243 (rs6000_gimple_fold_builtin): Likewise.
17244 (altivec_init_builtins): Add code to define
17245 __builtin_altivec_lvx_v1ti function.
17246
17247 2018-03-22 Jakub Jelinek <jakub@redhat.com>
17248
17249 PR inline-asm/84941
17250 * function.c (match_asm_constraints_1): Don't do the optimization
17251 if input isn't a REG, SUBREG, MEM or constant.
17252
17253 2018-03-22 Tom de Vries <tom@codesourcery.com>
17254
17255 PR tree-optimization/84956
17256 * tree-ssa-tail-merge.c (find_clusters_1): Skip bbs with
17257 bb_has_abnormal_pred.
17258
17259 2018-03-22 Jakub Jelinek <jakub@redhat.com>
17260
17261 PR sanitizer/85018
17262 * dwarf2asm.c (dw2_output_indirect_constant_1): Set
17263 DECL_INITIAL (decl) to decl at the end.
17264 * varasm.c (use_blocks_for_decl_p): Revert the 2018-03-20 change,
17265 adjust the comment.
17266
17267 2018-03-21 Joseph Myers <joseph@codesourcery.com>
17268
17269 * doc/extend.texi (__builtin_tgmath): Document when complex
17270 integer types are treated as _Complex _Float64.
17271
17272 2018-03-21 Tom de Vries <tom@codesourcery.com>
17273
17274 * doc/extend.texi (__builtin_extend_pointer): Remove pasto.
17275
17276 2018-03-21 Jakub Jelinek <jakub@redhat.com>
17277
17278 PR tree-optimization/84960
17279 * tree-cfg.c (remove_bb): Don't move forced labels into bb->prev_bb
17280 if it is ENTRY block, move them into single succ of ENTRY in that case.
17281
17282 2018-03-21 Richard Sandiford <richard.sandiford@linaro.org>
17283
17284 PR tree-optimization/84811
17285 * poly-int.h (poly_span_traits): Remove the T3 parameter and
17286 promote HOST_WIDE_INT T2 - T1 results to unsigned HOST_WIDE_INT.
17287 (maybe_in_range_p, known_in_range_p, ranges_known_overlap_p):
17288 (known_subrange_p): Update accordingly. Cast each value involved
17289 in the size comparison, rather than casting the result of the
17290 subtraction.
17291
17292 2018-03-21 Jakub Jelinek <jakub@redhat.com>
17293
17294 PR tree-optimization/84982
17295 * gimple-ssa-store-merging.c (invert_op): Handle boolean inversion
17296 by flipping the least significant bit rather than all bits from
17297 bitpos to bitpos + bitsize - 1.
17298
17299 2018-03-21 Nathan Sidwell <nathan@acm.org>
17300
17301 * doc/extend.texi (Deprecated Features): Remove mention of
17302 long-deleted deprecations.
17303
17304 2018-03-21 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
17305
17306 PR jit/84288
17307 * configure.ac (gcc_cv_ld_soname) <*-*-solaris2*>: Set.
17308 * configure: Regenerate.
17309
17310 2018-03-21 Tom de Vries <tom@codesourcery.com>
17311
17312 PR tree-optimization/83126
17313 * tree-parloops.c (num_phis): New function.
17314 (gen_parallel_loop): Detect and handle canonicalize_loop_ivs failure.
17315
17316 2018-03-21 Nathan Sidwell <nathan@acm.org>
17317
17318 * doc/extend.texi (Deprecated Features): Update deprecated flags,
17319 mention anon-struct/union members and trailing attributes.
17320
17321 2018-03-21 Bin Cheng <bin.cheng@arm.com>
17322
17323 PR tree-optimization/84969
17324 * tree-loop-distribution.c (fuse_memset_builtins): Don't reorder
17325 builtin memset partitions if they set different rhs values.
17326
17327 2018-03-21 Jakub Jelinek <jakub@redhat.com>
17328
17329 PR rtl-optimization/84989
17330 * simplify-rtx.c (simplify_unary_operation_1): Don't try to simplify
17331 VEC_DUPLICATE with scalar result mode.
17332
17333 2018-03-21 Martin Liska <mliska@suse.cz>
17334
17335 PR ipa/84963
17336 * ipa-icf.c (sem_item_optimizer::fixup_points_to_sets): Remove
17337 not intended return statement.
17338
17339 2018-03-21 Martin Liska <mliska@suse.cz>
17340
17341 PR target/84988
17342 * tree-chkp.c (CHKP_ARRAY_MAX_CHECK_STEPS): Define a new macro.
17343 (chkp_find_bound_slots_1): Limit number of iterations.
17344
17345 2018-03-20 David H. Gutteridge <dhgutteridge@sympatico.ca>
17346
17347 PR target/84838
17348 * Minor grammar fixes for x86 options.
17349
17350 2018-03-20 Jakub Jelinek <jakub@redhat.com>
17351
17352 PR debug/84875
17353 * dce.c (delete_unmarked_insns): Don't remove frame related noop moves
17354 holding REG_CFA_RESTORE notes, instead turn them into a USE.
17355
17356 2018-03-20 Peter Bergner <bergner@vnet.ibm.com>
17357
17358 PR target/83789
17359 * config/rs6000/altivec.md (altivec_lvx_<mode>_2op): Delete define_insn.
17360 (altivec_lvx_<mode>_1op): Likewise.
17361 (altivec_stvx_<mode>_2op): Likewise.
17362 (altivec_stvx_<mode>_1op): Likewise.
17363 (altivec_lvx_<VM2:mode>): New define_expand.
17364 (altivec_stvx_<VM2:mode>): Likewise.
17365 (altivec_lvx_<VM2:mode>_2op_<P:mptrsize>): New define_insn.
17366 (altivec_lvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
17367 (altivec_stvx_<VM2:mode>_2op_<P:mptrsize>): Likewise.
17368 (altivec_stvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
17369 * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Use new expanders.
17370 (rs6000_gen_lvx): Likewise.
17371 * config/rs6000/rs6000.c (altivec_expand_lv_builtin): Likewise.
17372 (altivec_expand_stv_builtin): Likewise.
17373 (altivec_expand_builtin): Likewise.
17374 * config/rs6000/vector.md: Likewise.
17375
17376 2018-03-20 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
17377
17378 PR target/82518
17379 * config/arm/arm.c (arm_array_mode_supported_p): Return false for
17380 BYTES_BIG_ENDIAN.
17381
17382 2018-03-20 Richard Biener <rguenther@suse.de>
17383
17384 PR target/84986
17385 * config/i386/i386.c (ix86_add_stmt_cost): Only cost
17386 sign-conversions as zero, fall back to standard scalar_stmt
17387 cost for the rest.
17388
17389 2018-03-20 Martin Liska <mliska@suse.cz>
17390
17391 PR ipa/84825
17392 * predict.c (rebuild_frequencies): Handle case when we have
17393 PROFILE_ABSENT, but flag_guess_branch_prob is false.
17394
17395 2018-03-20 Jakub Jelinek <jakub@redhat.com>
17396
17397 PR target/84990
17398 * dwarf2asm.c (dw2_output_indirect_constant_1): Temporarily turn off
17399 flag_section_anchors.
17400 * varasm.c (use_blocks_for_decl_p): Remove hack for
17401 dw2_force_const_mem.
17402
17403 PR target/84845
17404 * config/aarch64/aarch64.md (*aarch64_reg_<mode>3_neg_mask2): Rename
17405 to ...
17406 (*aarch64_<optab>_reg_<mode>3_neg_mask2): ... this. If pseudos can't
17407 be created, use lowpart_subreg of operands[0] rather than operands[0]
17408 itself.
17409 (*aarch64_reg_<mode>3_minus_mask): Rename to ...
17410 (*aarch64_ashl_reg_<mode>3_minus_mask): ... this.
17411 (*aarch64_<optab>_reg_di3_mask2): Use const_int_operand predicate
17412 and n constraint instead of aarch64_shift_imm_di and Usd.
17413 (*aarch64_reg_<optab>_minus<mode>3): Rename to ...
17414 (*aarch64_<optab>_reg_minus<mode>3): ... this.
17415
17416 2018-03-20 Sudakshina Das <sudi.das@arm.com>
17417
17418 PR target/82989
17419 * config/arm/neon.md (ashldi3_neon): Update ?s for constraints
17420 to favor GPR over NEON registers.
17421 (<shift>di3_neon): Likewise.
17422
17423 2018-03-20 Tom de Vries <tom@codesourcery.com>
17424
17425 PR target/84952
17426 * config/nvptx/nvptx.c (nvptx_single): Don't neuter bar.sync.
17427 (nvptx_process_pars): Emit bar.sync asap and alap.
17428
17429 2018-03-20 Tom de Vries <tom@codesourcery.com>
17430
17431 PR target/84954
17432 * config/nvptx/nvptx.c (prevent_branch_around_nothing): Also update
17433 seen_label if seen_label is already set.
17434
17435 2018-03-20 Jakub Jelinek <jakub@redhat.com>
17436
17437 PR target/84945
17438 * config/i386/i386.c (fold_builtin_cpu): For features above 31
17439 use __cpu_features2 variable instead of __cpu_model.__cpu_features[0].
17440 Use 1U instead of 1. Formatting fixes.
17441
17442 PR c/84953
17443 * builtins.c (fold_builtin_strpbrk): For strpbrk(x, "") use type
17444 instead of TREE_TYPE (s1) for the return value.
17445
17446 2018-03-19 Jakub Jelinek <jakub@redhat.com>
17447
17448 PR tree-optimization/84946
17449 * gimple-ssa-store-merging.c (mem_valid_for_store_merging): Compute
17450 bitsize + bitsize in poly_uint64 rather than poly_int64.
17451
17452 PR sanitizer/78651
17453 * dwarf2asm.c: Include fold-const.c.
17454 (dw2_output_indirect_constant_1): Set DECL_INITIAL (decl) to ADDR_EXPR
17455 of decl rather than decl itself.
17456
17457 PR rtl-optimization/84643
17458 * memmodel.h (enum memmodel): Add MEMMODEL_MAX enumerator.
17459
17460 2018-03-19 Maxim Ostapenko <m.ostapenko@samsung.com>
17461
17462 PR sanitizer/78651
17463 * dwarf2asm.c (dw2_output_indirect_constant_1): Disable ASan before
17464 calling assemble_variable.
17465
17466 2018-03-19 Sudakshina Das <sudi.das@arm.com>
17467
17468 PR target/81647
17469 * config/aarch64/aarch64-simd.md (vec_cmp<mode><v_int_equiv>): Modify
17470 instructions for UNLT, UNLE, UNGT, UNGE, UNEQ, UNORDERED and ORDERED.
17471
17472 2018-03-19 Jim Wilson <jimw@sifive.com>
17473
17474 PR bootstrap/84856
17475 * config/riscv/riscv.c (riscv_function_arg_boundary): Use
17476 PREFERRED_STACK_BOUNDARY instead of STACK_BOUNDARY.
17477 (riscv_first_stack_step): Likewise.
17478 (riscv_option_override): Use STACK_BOUNDARY instead of
17479 MIN_STACK_BOUNDARY.
17480 * config/riscv/riscv.h (STACK_BOUNDARY): Renamed from
17481 MIN_STACK_BOUNDARY.
17482 (BIGGEST_ALIGNMENT): Set to 128.
17483 (PREFERRED_STACK_BOUNDARY): Renamed from STACK_BOUNDARY.
17484 (RISCV_STACK_ALIGN): Use PREFERRED_STACK_BOUNDARY instead of
17485 STACK_BOUNDARY.
17486
17487 2018-03-19 Richard Biener <rguenther@suse.de>
17488
17489 PR tree-optimization/84933
17490 * tree-vrp.c (set_and_canonicalize_value_range): Treat out-of-bound
17491 values as -INF/INF when canonicalizing an ANTI_RANGE to a RANGE.
17492
17493 2018-03-19 Richard Biener <rguenther@suse.de>
17494
17495 PR tree-optimization/84859
17496 * tree-ssa-phiopt.c (single_trailing_store_in_bb): New function.
17497 (cond_if_else_store_replacement): Perform sinking operation on
17498 single-store BBs regardless of MAX_STORES_TO_SINK setting.
17499 Generalize what a BB with a single eligible store is.
17500
17501 2018-03-19 Richard Biener <rguenther@suse.de>
17502
17503 PR tree-optimization/84929
17504 * tree-data-ref.c (analyze_siv_subscript_cst_affine): Guard
17505 chrec_is_positive against non-chrec arg.
17506
17507 2018-03-19 Tamar Christina <tamar.christina@arm.com>
17508
17509 PR target/84711
17510 * config/arm/arm.c (arm_can_change_mode_class): revert r258554.
17511
17512 2018-03-18 Martin Liska <mliska@suse.cz>
17513
17514 PR rtl-optimization/84635
17515 * regrename.c (build_def_use): Use matches_mode only when
17516 matches >= 0.
17517
17518 2018-03-18 Richard Sandiford <richard.sandiford@linaro.org>
17519
17520 PR tree-optimization/84913
17521 * tree-vect-loop.c (vectorizable_reduction): Don't try to
17522 vectorize chains of COND_EXPRs.
17523
17524 2018-03-18 Chung-Ju Wu <jasonwucj@gmail.com>
17525
17526 * config/nds32/nds32.h (MAX_REGS_PER_ADDRESS): Fix the value.
17527
17528 2018-03-18 Chung-Ju Wu <jasonwucj@gmail.com>
17529
17530 * config/nds32/nds32.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Define.
17531
17532 2018-03-18 Chung-Ju Wu <jasonwucj@gmail.com>
17533
17534 * config/nds32/nds32.h (CLZ_DEFINED_VALUE_AT_ZERO): Define.
17535
17536 2018-03-17 Chung-Ju Wu <jasonwucj@gmail.com>
17537 Kito Cheng <kito.cheng@gmail.com>
17538
17539 * config/nds32/nds32-protos.h (nds32_adjust_reg_alloc_order): Declare.
17540 * config/nds32/nds32.c (nds32_reg_alloc_order_for_speed): New array.
17541 (nds32_adjust_reg_alloc_order): New function.
17542 * config/nds32/nds32.h (ADJUST_REG_ALLOC_ORDER): Define.
17543
17544 2018-03-17 Kito Cheng <kito.cheng@gmail.com>
17545
17546 * config/nds32/nds32.c (nds32_asm_output_mi_thunk,
17547 nds32_print_operand, nds32_print_operand_address): Use
17548 HOST_WIDE_INT_PRINT_DEC instead.
17549
17550 2018-03-17 Chung-Ju Wu <jasonwucj@gmail.com>
17551
17552 * config/nds32/nds32.c (nds32_register_priority): Modify cost.
17553
17554 2018-03-17 Jakub Jelinek <jakub@redhat.com>
17555
17556 PR target/84902
17557 * config/i386/i386.c (initial_ix86_tune_features,
17558 initial_ix86_arch_features): Use unsigned HOST_WIDE_INT rather than
17559 unsigned long long.
17560 (set_ix86_tune_features): Change ix86_tune_mask from unsigned int
17561 to unsigned HOST_WIDE_INT, initialize to HOST_WIDE_INT_1U << ix86_tune
17562 rather than 1u << ix86_tune. Formatting fix.
17563 (ix86_option_override_internal): Change ix86_arch_mask from
17564 unsigned int to unsigned HOST_WIDE_INT, initialize to
17565 HOST_WIDE_INT_1U << ix86_arch rather than 1u << ix86_arch.
17566 (ix86_function_specific_restore): Likewise.
17567
17568 2018-03-16 Jakub Jelinek <jakub@redhat.com>
17569
17570 PR target/84899
17571 * postreload.c (reload_combine_recognize_pattern): Perform
17572 INTVAL addition in unsigned HOST_WIDE_INT type to avoid UB and
17573 truncate_int_for_mode the result for the destination's mode.
17574
17575 PR c/84909
17576 * hsa-gen.c (mem_type_for_type): Fix comment typo.
17577 * tree-vect-loop-manip.c (vect_create_cond_for_niters_checks):
17578 Likewise.
17579 * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
17580 Likewise.
17581
17582 2018-03-16 Vladimir Makarov <vmakarov@redhat.com>
17583
17584 PR target/84876
17585 * lra-assigns.c (lra_split_hard_reg_for): Don't use
17586 regno_allocno_class_array and sorted_pseudos.
17587 * lra-constraints.c (spill_hard_reg_in_range): Ignore hard regs in
17588 insns where regno is used.
17589
17590 2018-03-16 Martin Liska <mliska@suse.cz>
17591
17592 PR ipa/84833
17593 * multiple_target.c (create_dispatcher_calls): Redirect
17594 reference in the symbol table.
17595
17596 2018-03-16 Martin Liska <mliska@suse.cz>
17597
17598 PR ipa/84722
17599 * multiple_target.c (create_dispatcher_calls): Redirect also
17600 an alias.
17601
17602 2018-03-16 Jakub Jelinek <jakub@redhat.com>
17603
17604 PR c++/79937
17605 PR c++/82410
17606 * tree.h (TARGET_EXPR_NO_ELIDE): Define.
17607 * gimplify.c (gimplify_modify_expr_rhs): Don't elide TARGET_EXPRs with
17608 TARGET_EXPR_NO_ELIDE flag set unless *expr_p is INIT_EXPR.
17609
17610 2018-03-16 Julia Koval <julia.koval@intel.com>
17611
17612 * doc/invoke.texi (Skylake Server): Add CLWB.
17613 Cannonlake): Remove CLWB.
17614
17615 2018-03-16 Jakub Jelinek <jakub@redhat.com>
17616
17617 PR tree-optimization/84841
17618 * tree-ssa-reassoc.c (INTEGER_CONST_TYPE): Change to 1 << 4 from
17619 1 << 3.
17620 (FLOAT_ONE_CONST_TYPE): Define.
17621 (constant_type): Return FLOAT_ONE_CONST_TYPE for -1.0 and 1.0.
17622 (sort_by_operand_rank): Put entries with higher constant_type last
17623 rather than first to match comments.
17624
17625 2018-03-15 Sandra Loosemore <sandra@codesourcery.com>
17626
17627 * config/nios2/nios2.md (movsi_internal): Fix thinko in
17628 split predicate.
17629
17630 2018-03-15 Jakub Jelinek <jakub@redhat.com>
17631
17632 PR c++/79085
17633 * calls.c (expand_call): For TREE_ADDRESSABLE rettype ignore alignment
17634 check and use address of target always.
17635
17636 2018-03-15 H.J. Lu <hongjiu.lu@intel.com>
17637
17638 PR target/84574
17639 * config/i386/i386.c (indirect_thunk_needed): Update comments.
17640 (indirect_thunk_bnd_needed): Likewise.
17641 (indirect_thunks_used): Likewise.
17642 (indirect_thunks_bnd_used): Likewise.
17643 (indirect_return_needed): New.
17644 (indirect_return_bnd_needed): Likewise.
17645 (output_indirect_thunk_function): Add a bool argument for
17646 function return.
17647 (output_indirect_thunk_function): Don't generate alias for
17648 function return thunk.
17649 (ix86_code_end): Call output_indirect_thunk_function to generate
17650 function return thunks.
17651 (ix86_output_function_return): Set indirect_return_bnd_needed
17652 and indirect_return_needed instead of indirect_thunk_bnd_needed
17653 and indirect_thunk_needed.
17654
17655 2018-03-15 Olga Makhotina <olga.makhotina@intel.com>
17656
17657 * config/i386/sgxintrin.h (_enclv_u32): New intrinsic.
17658 (__enclv_bc, __enclv_cd, __enclv_generic): New definitions.
17659 (ERDINFO, ETRACKC, ELDBC, ELDUC): New leaves.
17660
17661 2018-03-15 David Malcolm <dmalcolm@redhat.com>
17662 Paul Hua <paul.hua.gm@gmail.com>
17663
17664 PR c/84852
17665 * gcc.dg/fixits-pr84852-1.c: Fix filename in dg-regexp.
17666
17667 2018-03-15 Segher Boessenkool <segher@kernel.crashing.org>
17668
17669 * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add back the
17670 TARGET_DOUBLE_FLOAT and TARGET_SINGLE_FLOAT conditions on the DFmode
17671 resp. SFmode cases.
17672
17673 2018-03-15 Tamar Christina <tamar.christina@arm.com>
17674
17675 PR target/84711
17676 * config/arm/arm.c (arm_can_change_mode_class): Use GET_MODE_UNIT_SIZE
17677 instead of GET_MODE_SIZE when comparing Units.
17678
17679 2018-03-15 Vladimir Mezentsev <vladimir.mezentsev@oracle.com>
17680
17681 PR target/68256
17682 * varasm.c (hash_section): Return an unchangeble hash value
17683 * config/aarch64/aarch64.c (aarch64_use_blocks_for_constant_p):
17684 Return !aarch64_can_use_per_function_literal_pools_p ().
17685
17686 2018-03-15 Jakub Jelinek <jakub@redhat.com>
17687
17688 PR target/84860
17689 * optabs.c (emit_conditional_move): Pass address of cmode's copy
17690 rather than address of cmode as last argument to prepare_cmp_insn.
17691
17692 2018-03-15 Julia Koval <julia.koval@intel.com>
17693
17694 * config/i386/i386.c (F_AVX512VBMI2, F_GFNI, F_VPCLMULQDQ,
17695 F_AVX512VNNI, F_AVX512BITALG): New.
17696
17697 2018-03-14 John David Anglin <danglin@gcc.gnu.org>
17698
17699 PR target/83451
17700 * config/pa/pa.c (pa_emit_move_sequence): Always emit secondary reload
17701 insn for floating-point loads and stores.
17702
17703 2018-03-14 Carl Love <cel@us.ibm.com>
17704
17705 * config/rs6000/rs6000-c.c: Add macro definitions for
17706 ALTIVEC_BUILTIN_VEC_PERMXOR.
17707 * config/rs6000/rs6000.h: Add #define for vec_permxor builtin.
17708 * config/rs6000/rs6000-builtin.def: Add macro expansions for VPERMXOR.
17709 * config/rs6000/altivec.md (altivec_vpermxor): New define expand.
17710 * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Add case
17711 UNSPEC_VPERMXOR.
17712 * config/doc/extend.texi: Add prototypes for vec_permxor.
17713
17714 2018-03-14 David Malcolm <dmalcolm@redhat.com>
17715
17716 PR c/84852
17717 * diagnostic-show-locus.c (class layout_point): Convert m_line
17718 from int to linenum_type.
17719 (line_span::comparator): Use linenum "compare" function when
17720 comparing line numbers.
17721 (test_line_span): New function.
17722 (layout_range::contains_point): Convert param "row" from int to
17723 linenum_type.
17724 (layout_range::intersects_line_p): Likewise.
17725 (layout::will_show_line_p): Likewise.
17726 (layout::print_source_line): Likewise.
17727 (layout::should_print_annotation_line_p): Likewise.
17728 (layout::print_annotation_line): Likewise.
17729 (layout::print_leading_fixits): Likewise.
17730 (layout::annotation_line_showed_range_p): Likewise.
17731 (struct line_corrections): Likewise for field m_row.
17732 (line_corrections::line_corrections): Likewise for param "row".
17733 (layout::print_trailing_fixits): Likewise.
17734 (layout::get_state_at_point): Likewise.
17735 (layout::get_x_bound_for_row): Likewise.
17736 (layout::print_line): Likewise.
17737 (diagnostic_show_locus): Likewise for locals "last_line" and "row".
17738 (selftest::diagnostic_show_locus_c_tests): Call test_line_span.
17739 * input.c (selftest::test_linenum_comparisons): New function.
17740 (selftest::input_c_tests): Call it.
17741 * selftest.c (selftest::test_assertions): Test ASSERT_GT,
17742 ASSERT_GT_AT, ASSERT_LT, and ASSERT_LT_AT.
17743 * selftest.h (ASSERT_GT): New macro.
17744 (ASSERT_GT_AT): New macro.
17745 (ASSERT_LT): New macro.
17746 (ASSERT_LT_AT): New macro.
17747
17748 2018-03-14 Segher Boessenkool <segher@kernel.crashing.org>
17749
17750 PR rtl-optimization/84780
17751 * combine.c (distribute_links): Don't make a link based on pc_rtx.
17752
17753 2018-03-14 Martin Liska <mliska@suse.cz>
17754
17755 * tree.c (record_node_allocation_statistics): Use
17756 get_stats_node_kind.
17757 (get_stats_node_kind): New function extracted from
17758 record_node_allocation_statistics.
17759 (free_node): Use get_stats_node_kind.
17760
17761 2018-03-14 Richard Biener <rguenther@suse.de>
17762
17763 * tree-ssa-pre.c (compute_antic_aux): Remove code that asserts
17764 that the value-set of ANTIC_IN doesn't grow.
17765
17766 Revert
17767 * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
17768 member.
17769 (BB_VISITED_WITH_VISITED_SUCCS): New define.
17770 (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
17771
17772 2018-03-14 Julia Koval <julia.koval@intel.com>
17773
17774 * config.gcc (icelake-client, icelake-server): New.
17775 (icelake): Remove.
17776 * config/i386/i386.c (initial_ix86_tune_features): Extend to 64 bit.
17777 (initial_ix86_arch_features): Ditto.
17778 (PTA_SKYLAKE): Add SGX.
17779 (PTA_ICELAKE): Remove.
17780 (PTA_ICELAKE_CLIENT): New.
17781 (PTA_ICELAKE_SERVER): New.
17782 (ix86_option_override_internal): Split up icelake on icelake client and
17783 icelake server.
17784 (get_builtin_code_for_version): Ditto.
17785 (fold_builtin_cpu): Ditto.
17786 * config/i386/driver-i386.c (config/i386/driver-i386.c): Ditto.
17787 * config/i386/i386-c.c (ix86_target_macros_internal): Ditto
17788 * config/i386/i386.h (processor_type): Ditto.
17789 * doc/invoke.texi: Ditto.
17790
17791 2018-03-14 Jakub Jelinek <jakub@redhat.com>
17792
17793 PR sanitizer/83392
17794 * sanopt.c (maybe_optimize_ubsan_ptr_ifn): Handle also
17795 INTEGER_CST offset, add it together with bitpos / 8 and
17796 sign extend based on POINTER_SIZE.
17797
17798 PR target/84844
17799 Revert
17800 2017-04-20 Uros Bizjak <ubizjak@gmail.com>
17801
17802 PR target/78090
17803 * config/i386/constraints.md (Yc): New register constraint.
17804 * config/i386/i386.md (*float<SWI48:mode><MODEF:mode>2_mixed):
17805 Use Yc constraint for alternative 2 of operand 0. Remove
17806 preferred_for_speed attribute.
17807
17808 2018-03-14 Richard Biener <rguenther@suse.de>
17809
17810 PR tree-optimization/84830
17811 * tree-ssa-pre.c (compute_antic_aux): Intersect the new ANTIC_IN
17812 with the old one to avoid oscillations.
17813
17814 2018-03-13 Vladimir Makarov <vmakarov@redhat.com>
17815
17816 PR target/83712
17817 * lra-assigns.c (find_all_spills_for): Ignore uninteresting
17818 pseudos.
17819 (assign_by_spills): Return a flag of reload assignment failure.
17820 Do not process the reload assignment failures. Do not spill other
17821 reload pseudos if they has the same reg class. Update n if
17822 necessary.
17823 (lra_assign): Add a return arg. Set up from the result of
17824 assign_by_spills call.
17825 (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
17826 * lra-constraints.c (split_reg): Add a new arg. Use it instead of
17827 usage_insns if it is not NULL.
17828 (spill_hard_reg_in_range): New function.
17829 (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
17830 * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
17831 function prototypes.
17832 (lra_assign): Change prototype.
17833 * lra.c (lra): Add code to deal with fails by splitting hard reg
17834 live ranges.
17835
17836 2018-03-01 Palmer Dabbelt <palmer@sifive.com>
17837
17838 * config/riscv/riscv.opt (mrelax): New option.
17839 * config/riscv/riscv.c (riscv_file_start): Emit ".option
17840 "norelax" when riscv_mrelax is disabled.
17841 * doc/invoke.texi (RISC-V): Document "-mrelax" and "-mno-relax".
17842
17843 2018-03-13 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
17844
17845 PR target/84743
17846 * config/rs6000/rs6000.c (rs6000_reassociation_width): Disable parallel
17847 reassociation for int modes.
17848
17849 2018-03-13 Richard Sandiford <richard.sandiford@linaro.org>
17850
17851 * tree-vect-loop-manip.c (vect_maybe_permute_loop_masks):
17852 Reverse the choice between VEC_UNPACK_LO_EXPR and VEC_UNPACK_HI_EXPR
17853 for big-endian.
17854 * config/aarch64/iterators.md (hi_lanes_optab): New int attribute.
17855 * config/aarch64/aarch64-sve.md
17856 (*aarch64_sve_<perm_insn><perm_hilo><mode>): Rename to...
17857 (aarch64_sve_<perm_insn><perm_hilo><mode>): ...this.
17858 (*extend<mode><Vwide>2): Rename to...
17859 (aarch64_sve_extend<mode><Vwide>2): ...this.
17860 (vec_unpack<su>_<perm_hilo>_<mode>): Turn into a define_expand,
17861 renaming the old pattern to...
17862 (aarch64_sve_punpk<perm_hilo>_<mode>): ...this. Only define
17863 unsigned packs.
17864 (vec_unpack<su>_<perm_hilo>_<SVE_BHSI:mode>): Turn into a
17865 define_expand, renaming the old pattern to...
17866 (aarch64_sve_<su>unpk<perm_hilo>_<SVE_BHSI:mode>): ...this.
17867 (*vec_unpacku_<perm_hilo>_<mode>_no_convert): Delete.
17868 (vec_unpacks_<perm_hilo>_<mode>): Take BYTES_BIG_ENDIAN into
17869 account when deciding which SVE instruction the optab should use.
17870 (vec_unpack<su_optab>_float_<perm_hilo>_vnx4si): Likewise.
17871
17872 2018-03-13 Richard Sandiford <richard.sandiford@linaro.org>
17873
17874 * config/aarch64/aarch64.md (V4_REGNUM, V8_REGNUM, V12_REGNUM)
17875 (V20_REGNUM, V24_REGNUM, V28_REGNUM, P1_REGNUM, P2_REGNUM, P3_REGNUM)
17876 (P4_REGNUM, P5_REGNUM, P6_REGNUM, P8_REGNUM, P9_REGNUM, P10_REGNUM)
17877 (P11_REGNUM, P12_REGNUM, P13_REGNUM, P14_REGNUM): New define_constants.
17878 (tlsdesc_small_<mode>): Turn a define_expand and use
17879 tlsdesc_small_sve_<mode> for SVE. Rename original define_insn to...
17880 (tlsdesc_small_advsimd_<mode>): ...this.
17881 (tlsdesc_small_sve_<mode>): New pattern.
17882
17883 2018-03-13 Richard Sandiford <richard.sandiford@linaro.org>
17884
17885 * config/aarch64/iterators.md (UNSPEC_SMUL_HIGHPART)
17886 (UNSPEC_UMUL_HIGHPART): New constants.
17887 (MUL_HIGHPART): New int iteraor.
17888 (su): Handle UNSPEC_SMUL_HIGHPART and UNSPEC_UMUL_HIGHPART.
17889 * config/aarch64/aarch64-sve.md (<su>mul<mode>3_highpart): New
17890 define_expand.
17891 (*<su>mul<mode>3_highpart): New define_insn.
17892
17893 2018-03-13 Eric Botcazou <ebotcazou@adacore.com>
17894
17895 PR lto/84805
17896 * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
17897 incomplete types.
17898
17899 2018-03-13 Martin Liska <mliska@suse.cz>
17900
17901 PR ipa/84658.
17902 * (sem_item_optimizer::sem_item_optimizer): Initialize new
17903 vector.
17904 (sem_item_optimizer::~sem_item_optimizer): Release it.
17905 (sem_item_optimizer::merge_classes): Register variable aliases.
17906 (sem_item_optimizer::fixup_pt_set): New function.
17907 (sem_item_optimizer::fixup_points_to_sets): Likewise.
17908 * ipa-icf.h: Declare new variables and functions.
17909
17910 2018-03-13 Jakub Jelinek <jakub@redhat.com>
17911
17912 PR middle-end/84834
17913 * match.pd ((A & C) != 0 ? D : 0): Use INTEGER_CST@2 instead of
17914 integer_pow2p@2 and test integer_pow2p in condition.
17915 (A < 0 ? C : 0): Similarly for @1.
17916
17917 PR middle-end/84831
17918 * stmt.c (parse_output_constraint): If the CONSTRAINT_LEN (*p, p)
17919 characters starting at p contain '\0' character, don't look beyond
17920 that.
17921
17922 PR target/84827
17923 * config/i386/i386.md (round<mode>2): For 387 fancy math, disable
17924 pattern if -ftrapping-math -fno-fp-int-builtin-inexact.
17925
17926 PR target/84828
17927 * reg-stack.c (change_stack): Change update_end var from int to
17928 rtx_insn *, if non-NULL don't update just BB_END (current_block), but
17929 also call set_block_for_insn on the newly added insns and rescan.
17930
17931 PR target/84786
17932 * config/i386/sse.md (sse2_loadhpd): Use Yv constraint rather than v
17933 on the last operand.
17934
17935 PR c++/84704
17936 * tree.c (stabilize_reference_1): Return save_expr (e) for
17937 STATEMENT_LIST even if it doesn't have side-effects.
17938
17939 2018-03-12 Jonathan Wakely <jwakely@redhat.com>
17940
17941 * doc/invoke.texi (-mclflushopt): Fix spelling of option.
17942
17943 2018-03-12 Renlin Li <renlin.li@arm.com>
17944
17945 * config/aarch64/aarch64.md (movhf_aarch64): Fix mode argument to
17946 aarch64_output_scalar_simd_mov_immediate.
17947
17948 2018-03-12 Martin Sebor <msebor@redhat.com>
17949
17950 PR tree-optimization/83456
17951 * gimple-fold.c (gimple_fold_builtin_memory_op): Avoid warning
17952 for perfectly overlapping calls to memcpy.
17953 (gimple_fold_builtin_memory_chk): Same.
17954 (gimple_fold_builtin_strcpy): Handle no-warning.
17955 (gimple_fold_builtin_stxcpy_chk): Same.
17956 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Handle no-warning.
17957
17958 2018-03-12 Segher Boessenkool <segher@kernel.crashing.org>
17959
17960 * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add bool "named"
17961 parameter. Use it for SFmode.
17962 (rs6000_function_arg_advance_1): Adjust.
17963 (rs6000_function_arg): Adjust.
17964 (rs6000_gimplify_va_arg): Pass false for that new parameter.
17965
17966 2018-03-12 Segher Boessenkool <segher@kernel.crashing.org>
17967
17968 PR rtl-optimization/84169
17969 PR rtl-optimization/84780
17970 * combine.c (can_combine_p): Check for a 2-insn combination whether
17971 the destination register is used between the two insns, too.
17972
17973 2018-03-12 Richard Biener <rguenther@suse.de>
17974
17975 PR tree-optimization/84803
17976 * tree-if-conv.c (ifcvt_memrefs_wont_trap): Don't do anything
17977 for refs DR analysis didn't process.
17978
17979 2018-03-12 Richard Biener <rguenther@suse.de>
17980
17981 PR tree-optimization/84777
17982 * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): For
17983 force-vectorize loops ignore whether we are optimizing for size.
17984
17985 2018-03-12 Chung-Ju Wu <jasonwucj@gmail.com>
17986
17987 * config/nds32/nds32.c (nds32_md_asm_adjust): New function.
17988 (TARGET_MD_ASM_ADJUST): Define.
17989
17990 2018-03-12 Monk Chiang <sh.chiang04@gmail.com>
17991 Kito Cheng <kito.cheng@gmail.com>
17992 Chung-Ju Wu <jasonwucj@gmail.com>
17993
17994 * config/nds32/nds32.c (nds32_compute_stack_frame,
17995 nds32_emit_stack_push_multiple, nds32_emit_stack_pop_multiple,
17996 nds32_emit_stack_v3push, nds32_emit_stack_v3pop,
17997 nds32_emit_adjust_frame, nds32_expand_prologue, nds32_expand_epilogue,
17998 nds32_expand_prologue_v3push, nds32_expand_epilogue_v3pop): Refine.
17999 * config/nds32/nds32.h (NDS32_FIRST_CALLEE_SAVE_GPR_REGNUM,
18000 NDS32_LAST_CALLEE_SAVE_GPR_REGNUM, NDS32_V3PUSH_AVAILABLE_P): New.
18001 * config/nds32/nds32.md (prologue, epilogue): Use macro
18002 NDS32_V3PUSH_AVAILABLE_P to do checking.
18003
18004 2018-03-11 Jakub Jelinek <jakub@redhat.com>
18005
18006 PR debug/58150
18007 * dwarf2out.c (gen_enumeration_type_die): Don't guard adding
18008 DW_AT_declaration for ENUM_IS_OPAQUE on -gdwarf-4 or -gno-strict-dwarf,
18009 but on TYPE_SIZE. Don't do anything for ENUM_IS_OPAQUE if not creating
18010 a new die. Don't set TREE_ASM_WRITTEN if ENUM_IS_OPAQUE. Guard
18011 addition of most attributes on !orig_type_die or the attribute not
18012 being present already. Assert TYPE_VALUES is NULL for ENUM_IS_OPAQUE.
18013
18014 2018-03-11 Kito Cheng <kito.cheng@gmail.com>
18015 Chung-Ju Wu <jasonwucj@gmail.com>
18016
18017 * config/nds32/nds32.c (nds32_cpu_cpp_builtins): Modify to define
18018 __NDS32_VH__ macro.
18019 * config/nds32/nds32.opt (mvh): New option.
18020
18021 2018-03-11 Kito Cheng <kito.cheng@gmail.com>
18022 Chung-Ju Wu <jasonwucj@gmail.com>
18023
18024 * config/nds32/nds32-protos.h (nds32_cpu_cpp_builtins): Declare
18025 function.
18026 * config/nds32/nds32.c (nds32_cpu_cpp_builtins): New function.
18027 * config/nds32/nds32.h (TARGET_CPU_CPP_BUILTINS): Modify its
18028 definition.
18029
18030 2018-03-11 Kito Cheng <kito.cheng@gmail.com>
18031 Chung-Ju Wu <jasonwucj@gmail.com>
18032
18033 * config/nds32/nds32-memory-manipulation.c (nds32_expand_strlen): New
18034 function.
18035 * config/nds32/nds32-multiple.md (strlensi): New pattern.
18036 * config/nds32/nds32-protos.h (nds32_expand_strlen): Declare function.
18037
18038 2018-03-11 Monk Chiang <sh.chiang04@gmail.com>
18039 Kito Cheng <kito.cheng@gmail.com>
18040 Chung-Ju Wu <jasonwucj@gmail.com>
18041
18042 * config/nds32/constants.md (unspec_element): Add UNSPEC_FFB,
18043 UNSPEC_FFMISM and UNSPEC_FLMISM.
18044 * config/nds32/nds32-intrinsic.c (bdesc_2arg): Add builtin description
18045 for ffb, ffmism and flmism.
18046 * config/nds32/nds32-intrinsic.md (unspec_ffb): Define new pattern.
18047 (unspec_ffmism): Ditto.
18048 (unspec_flmism): Ditto.
18049 (nds32_expand_builtin_impl): Check if string extension is available.
18050 * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FFB,
18051 NDS32_BUILTIN_FFMISM and NDS32_BUILTIN_FLMISM.
18052
18053 2018-03-10 Vladimir Makarov <vmakarov@redhat.com>
18054
18055 Reverting patch:
18056 2018-03-09 Vladimir Makarov <vmakarov@redhat.com>
18057
18058 PR target/83712
18059 * lra-assigns.c (assign_by_spills): Return a flag of reload
18060 assignment failure. Do not process the reload assignment
18061 failures. Do not spill other reload pseudos if they has the same
18062 reg class.
18063 (lra_assign): Add a return arg. Set up from the result of
18064 assign_by_spills call.
18065 (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
18066 * lra-constraints.c (split_reg): Add a new arg. Use it instead of
18067 usage_insns if it is not NULL.
18068 (spill_hard_reg_in_range): New function.
18069 (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
18070 * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
18071 function prototypes.
18072 (lra_assign): Change prototype.
18073 * lra.c (lra): Add code to deal with fails by splitting hard reg
18074 live ranges.
18075
18076 2018-03-10 H.J. Lu <hongjiu.lu@intel.com>
18077
18078 PR target/84807
18079 * config/i386/i386.opt: Replace Enforcment with Enforcement.
18080
18081 2018-03-10 Alexandre Oliva <aoliva@redhat.com>
18082
18083 PR debug/84620
18084 * dwarf2out.h (dw_val_class): Add dw_val_class_symview.
18085 (dw_val_node): Add val_symbolic_view.
18086 * dwarf2out.c (dw_line_info_table): Add symviews_since_reset.
18087 (symview_upper_bound): New.
18088 (new_line_info_table): Initialize symviews_since_reset.
18089 (dwarf2out_source_line): Count symviews_since_reset and set
18090 symview_upper_bound.
18091 (dw_val_equal_p): Handle symview.
18092 (add_AT_symview): New.
18093 (print_dw_val): Handle symview.
18094 (attr_checksum, attr_checksum_ordered): Likewise.
18095 (same_dw_val_p, size_of_die): Likewise.
18096 (value_format, output_die): Likewise.
18097 (add_high_low_attributes): Use add_AT_symview for entry_view.
18098 (dwarf2out_finish): Reset symview_upper_bound, clear
18099 zero_view_p.
18100
18101 2018-03-09 Peter Bergner <bergner@vnet.ibm.com>
18102
18103 PR target/83969
18104 * config/rs6000/rs6000.c (rs6000_offsettable_memref_p): New prototype.
18105 Add strict argument and use it.
18106 (rs6000_split_multireg_move): Update for new strict argument.
18107 (mem_operand_gpr): Disallow all non-offsettable addresses.
18108 * config/rs6000/rs6000.md (*movdi_internal64): Use YZ constraint.
18109
18110 2018-03-09 Jakub Jelinek <jakub@redhat.com>
18111
18112 PR target/84772
18113 * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Mark va_arg_tmp
18114 temporary TREE_ADDRESSABLE before gimplification of BUILT_IN_MEMCPY.
18115 * config/powerpcspe/powerpcspe.c (rs6000_gimplify_va_arg): Likewise.
18116
18117 PR c++/84767
18118 * tree-inline.c (copy_tree_body_r): For INDIRECT_REF of a remapped
18119 decl, use remap_type if we want to use the type.
18120
18121 2018-03-09 Martin Sebor <msebor@redhat.com>
18122
18123 PR tree-optimization/84526
18124 * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
18125 Remove dead code.
18126 (builtin_access::generic_overlap): Be prepared to handle non-array
18127 base objects.
18128
18129 2018-03-09 Alexandre Oliva <aoliva@redhat.com>
18130
18131 PR rtl-optimization/84682
18132 * lra-constraints.c (process_address_1): Check is_address flag
18133 for address constraints.
18134 (process_alt_operands): Likewise.
18135 * lra.c (lra_set_insn_recog_data): Pass asm operand locs to
18136 preprocess_constraints.
18137 * recog.h (preprocess_constraints): Add oploc parameter.
18138 Adjust callers.
18139 * recog.c (preprocess_constraints): Test address_operand for
18140 CT_ADDRESS constraints.
18141
18142 2018-03-09 Vladimir Makarov <vmakarov@redhat.com>
18143
18144 PR target/83712
18145 * lra-assigns.c (assign_by_spills): Return a flag of reload
18146 assignment failure. Do not process the reload assignment
18147 failures. Do not spill other reload pseudos if they has the same
18148 reg class.
18149 (lra_assign): Add a return arg. Set up from the result of
18150 assign_by_spills call.
18151 (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
18152 * lra-constraints.c (split_reg): Add a new arg. Use it instead of
18153 usage_insns if it is not NULL.
18154 (spill_hard_reg_in_range): New function.
18155 (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
18156 * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
18157 function prototypes.
18158 (lra_assign): Change prototype.
18159 * lra.c (lra): Add code to deal with fails by splitting hard reg
18160 live ranges.
18161
18162 2018-03-09 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
18163
18164 PR target/83193
18165 * common/config/arm/arm-common.c (arm_parse_arch_option_name):
18166 Accept complain bool parameter. Only emit errors if it is true.
18167 (arm_parse_cpu_option_name): Likewise.
18168 (arm_target_thumb_only): Adjust callers of the above.
18169 * config/arm/arm-protos.h (arm_parse_cpu_option_name): Adjust
18170 prototype to take a default true bool parameter.
18171 (arm_parse_arch_option_name): Likewise.
18172
18173 2018-03-09 David Malcolm <dmalcolm@redhat.com>
18174 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
18175
18176 PR jit/64089
18177 PR jit/84288
18178 * Makefile.in (LD_VERSION_SCRIPT_OPTION, LD_SONAME_OPTION): New.
18179 * configure: Regenerate.
18180 * configure.ac ("linker --version-script option"): New.
18181 ("linker soname option"): New.
18182
18183 2018-03-09 Richard Biener <rguenther@suse.de>
18184
18185 PR tree-optimization/84775
18186 * tree-if-conv.c (add_bb_predicate_gimplified_stmts): Delink
18187 immediate uses of predicate stmts and mark them modified.
18188
18189 Revert
18190 PR tree-optimization/84178
18191 * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
18192 to caller.
18193 (version_loop_for_if_conversion): Delay update_ssa call.
18194 (tree_if_conversion): Delay update_ssa until after predicate
18195 insertion.
18196
18197 2018-03-09 Eric Botcazou <ebotcazou@adacore.com>
18198
18199 PR target/84763
18200 * config/i386/winnt.c (i386_pe_seh_cold_init): Use small pre-allocation
18201 when the function accesses prior frames.
18202
18203 2018-03-08 Jakub Jelinek <jakub@redhat.com>
18204
18205 PR debug/84456
18206 * dwarf2out.c (dw_loc_list): If list && loc_list->first->next, call
18207 gen_llsym, otherwise call maybe_gen_llsym.
18208
18209 PR inline-asm/84742
18210 * recog.c (asm_operand_ok): Return 0 if multi-character constraint
18211 has ',' character inside of it.
18212
18213 2018-03-08 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
18214
18215 PR target/84748
18216 * config/aarch64/aarch64.md (*compare_cstore<mode>_insn): Mark pattern
18217 as clobbering CC_REGNUM.
18218
18219 2018-03-08 Richard Biener <rguenther@suse.de>
18220
18221 PR middle-end/84552
18222 * tree-scalar-evolution.c: Include tree-into-ssa.h.
18223 (follow_copies_to_constant): Do not follow SSA names registered
18224 for update.
18225
18226 2018-03-08 Richard Biener <rguenther@suse.de>
18227
18228 PR tree-optimization/84178
18229 * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
18230 to caller.
18231 (version_loop_for_if_conversion): Delay update_ssa call.
18232 (tree_if_conversion): Delay update_ssa until after predicate
18233 insertion.
18234
18235 2018-03-08 David Malcolm <dmalcolm@redhat.com>
18236
18237 PR tree-optimization/84178
18238 * tree-if-conv.c (release_bb_predicate): Remove the
18239 the assertion that the stmts have NULL use_ops.
18240 Discard the statements, asserting that they haven't
18241 yet been added to a BB.
18242
18243 2018-03-08 Richard Biener <rguenther@suse.de>
18244
18245 PR tree-optimization/84746
18246 * tree-ssa-pre.c (find_leader_in_sets): Deal with SET1 being NULL.
18247 (phi_translate): Pass in destination ANTIC_OUT set.
18248 (phi_translate_1): Likewise. For a simplified result lookup
18249 a leader in ANTIC_OUT and AVAIL_OUT, not the ANTIC_IN sets.
18250 (phi_translate_set): Adjust.
18251 (do_pre_regular_insertion): Likewise.
18252 (do_pre_partial_partial_insertion): Likewise.
18253
18254 2018-03-08 Martin Liska <mliska@suse.cz>
18255
18256 PR gcov-profile/84735
18257 * doc/gcov.texi: Document usage of profile files.
18258 * gcov-io.h: Document changes in the format.
18259
18260 2018-03-08 Alexandre Oliva <aoliva@redhat.com>
18261
18262 PR debug/84404
18263 PR debug/84408
18264 * dwarf2out.c (struct dw_line_info_table): Update comments for
18265 view == -1.
18266 (FORCE_RESET_NEXT_VIEW): New.
18267 (FORCE_RESETTING_VIEW_P): New.
18268 (RESETTING_VIEW_P): Check for -1 too.
18269 (ZERO_VIEW_P): Likewise.
18270 (new_line_info_table): Force-reset next view.
18271 (dwarf2out_begin_function): Likewise.
18272 (dwarf2out_source_line): Simplify zero_view_p initialization.
18273 Test FORCE_RESETTING_VIEW_P and RESETTING_VIEW_P instead of
18274 view directly. Omit view when omitting .loc at line 0.
18275
18276 2018-03-08 Jakub Jelinek <jakub@redhat.com>
18277
18278 PR tree-optimization/84740
18279 * tree-switch-conversion.c (process_switch): Call build_constructors
18280 only if info.phi_count is non-zero.
18281
18282 PR tree-optimization/84739
18283 * tree-tailcall.c (find_tail_calls): Check call arguments against
18284 DECL_ARGUMENTS (current_function_decl) rather than
18285 DECL_ARGUMENTS (func) when checking for tail recursion.
18286
18287 2018-03-07 Jakub Jelinek <jakub@redhat.com>
18288
18289 * doc/contrib.texi: Add entries for Martin Liska, David Malcolm,
18290 Marek Polacek, extend Vladimir Makarov's, Jonathan Wakely's and
18291 Volker Reichelt's entry and add entries for people that perform
18292 GCC fuzzy testing and report numerous bugs.
18293
18294 2018-03-07 Segher Boessenkool <segher@kernel.crashing.org>
18295
18296 PR target/82411
18297 * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Don't put
18298 readonly data in sdata, if that is disabled.
18299 * config/rs6000/sysv4.opt (mreadonly-in-sdata): New option.
18300 * doc/invoke.texi (RS/6000 and PowerPC Options): Document
18301 -mreadonly-in-sdata option.
18302
18303 2018-03-07 Martin Sebor <msebor@redhat.com>
18304
18305 PR tree-optimization/84468
18306 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Consider successor
18307 basic block when looking for nul assignment.
18308
18309 2018-03-07 Eric Botcazou <ebotcazou@adacore.com>
18310
18311 PR target/84277
18312 * except.h (output_function_exception_table): Adjust prototype.
18313 * except.c (output_function_exception_table): Remove FNNAME parameter
18314 and add SECTION parameter. Ouput one part of the table at a time.
18315 * final.c (final_scan_insn_1) <NOTE_INSN_SWITCH_TEXT_SECTIONS>: Output
18316 the first part of the exception table and emit unwind directives.
18317 * config/i386/i386-protos.h (i386_pe_end_cold_function): Declare.
18318 (i386_pe_seh_cold_init): Likewise.
18319 * config/i386/cygming.h (ASM_DECLARE_COLD_FUNCTION_NAME): New macro.
18320 (ASM_DECLARE_COLD_FUNCTION_SIZE): Likewise.
18321 * config/i386/i386.c (x86_expand_epilogue): Fix wording in comment.
18322 (ix86_output_call_insn): Emit a nop in one more case for SEH.
18323 * config/i386/winnt.c: Include except.h.
18324 (struct seh_frame_state): Add reg_offset, after_prologue and
18325 in_cold_section fields.
18326 (i386_pe_seh_end_prologue): Set seh->after_prologue.
18327 (i386_pe_seh_cold_init): New function.
18328 (i386_pe_seh_fini): Add COLD parameter and bail out if it is not equal
18329 to seh->in_cold_section.
18330 (seh_emit_push): Record the offset of the push.
18331 (seh_emit_save): Record the offet of the save.
18332 (i386_pe_seh_unwind_emit): Deal with NOTE_INSN_SWITCH_TEXT_SECTIONS.
18333 Test seh->after_prologue to disregard the epilogue.
18334 (i386_pe_end_function): Pass FALSE to i386_pe_seh_fini.
18335 (i386_pe_end_cold_function): New function.
18336
18337 2018-03-07 Jakub Jelinek <jakub@redhat.com>
18338
18339 PR fortran/84565
18340 * config/aarch64/predicates.md (aarch64_simd_reg_or_zero): Use
18341 aarch64_simd_or_scalar_imm_zero rather than aarch64_simd_imm_zero.
18342
18343 PR c++/84704
18344 * gimple-expr.c (create_tmp_var_raw): Set DECL_NAMELESS flag
18345 on tmp_var.
18346 * tree-pretty-print.c (dump_decl_name): For TDF_COMPARE_DEBUG,
18347 don't print names of DECL_NAMELESS DECL_IGNORED_P decls.
18348
18349 PR middle-end/84723
18350 * multiple_target.c: Include tree-inline.h and intl.h.
18351 (expand_target_clones): Diagnose and fail if node->definition and
18352 !tree_versionable_function_p (node->decl).
18353
18354 2018-03-06 John David Anglin <danglin@gcc.gnu.org>
18355
18356 * config/pa/pa.h (ASM_GENERATE_INTERNAL_LABEL): Revise to use
18357 sprint_ul.
18358 (ASM_OUTPUT_ADDR_VEC_ELT): Revise for above change.
18359 (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
18360 * config/pa/pa64-hpux.h (ASM_GENERATE_INTERNAL_LABEL): Revise as above.
18361
18362 2018-03-06 Jakub Jelinek <jakub@redhat.com>
18363
18364 PR target/84710
18365 * combine.c (try_combine): Use reg_or_subregno instead of handling
18366 just paradoxical SUBREGs and REGs.
18367
18368 2018-03-06 Claudiu Zissulescu <claziss@synopsys.com>
18369
18370 * config/arc/arc.c (arc_finalize_pic): Remove function.
18371 (arc_must_save_register): We use single base PIC register, remove
18372 checks to save/restore the PIC register.
18373 (arc_expand_prologue): Likewise.
18374 * config/arc/arc-protos.h (arc_set_default_type_attributes):
18375 Remove.
18376 (arc_verify_short): Likewise.
18377 (arc_attr_type): Likewise.
18378 * config/arc/arc.c (arc_set_default_type_attributes): Remove.
18379 (walk_stores): Likewise.
18380 (arc_address_cost): Make it static.
18381 (arc_verify_short): Likewise.
18382 (branch_dest): Likewise.
18383 (arc_attr_type): Likewise.
18384 * config/arc/arc.c (TARGET_ADJUST_INSN_LENGTH): Remove.
18385 (TARGET_INSN_LENGTH_PARAMETERS): Likewise.
18386 (arc_final_prescan_insn): Remove inserting the nops due to
18387 hardware hazards. It is done in reorg step.
18388 (insn_length_variant_t): Remove.
18389 (insn_length_parameters_t): Likewise.
18390 (arc_insn_length_parameters): Likewise.
18391 (arc_get_insn_variants): Likewise.
18392 * config/arc/arc.h (TARGET_UPSIZE_DBR): Remove.
18393
18394 2018-03-06 Jakub Jelinek <jakub@redhat.com>
18395
18396 PR inline-asm/84683
18397 * reg-stack.c (move_for_stack_reg): If any_malformed_asm, avoid
18398 assertion failure.
18399
18400 PR tree-optimization/84687
18401 * omp-simd-clone.c (simd_clone_create): Clear DECL_BUILT_IN_CLASS
18402 on new_node->decl.
18403 * match.pd (pow(C,x)*expN(y) -> expN(logN(C)*x+y)): New optimization.
18404
18405 2018-03-05 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
18406
18407 * config/rs6000/rs6000-builtin.def (rs6000_speculation_barrier):
18408 Rename to ppc_speculation_barrier.
18409 * config/rs6000/rs6000.c (rs6000_init_builtins): Rename builtin to
18410 __builtin_ppc_speculation_barrier.
18411
18412 2018-03-05 Jakub Jelinek <jakub@redhat.com>
18413
18414 PR target/84700
18415 * combine.c (combine_simplify_rtx): Don't try to simplify if
18416 if_then_else_cond returned non-NULL, but either true_rtx or false_rtx
18417 are equal to x.
18418
18419 2018-03-05 Segher Boessenkool <segher@kernel.crashing.org>
18420
18421 * config/rs6000/rs6000.c (rs6000_loop_align): Don't align tiny loops
18422 to 32 bytes when compiling for POWER9.
18423
18424 2018-03-05 Jakub Jelinek <jakub@redhat.com>
18425
18426 PR target/84564
18427 * config/i386/i386.c (ix86_function_ok_for_sibcall): Check for
18428 regparm >= 3 with no arg reg available also for calls with
18429 flag_force_indirect_call. Pass decl to ix86_function_regparm.
18430
18431 PR target/84524
18432 * config/i386/sse.md (*<code><mode>3): Replace <mask_prefix3> with
18433 orig,vex.
18434 (*<plusminus_insn><mode>3): Likewise. Remove <mask_operand3> uses.
18435
18436 2018-03-05 Peter Bergner <bergner@vnet.ibm.com>
18437
18438 PR target/84264
18439 * config/rs6000/vector.md (mov<mode>): Disallow altivec memory operands.
18440
18441 2018-03-05 Richard Biener <rguenther@suse.de>
18442
18443 PR tree-optimization/84486
18444 * tree-ssa-pre.c (create_expression_by_pieces): Remove dead code.
18445 When inserting a __builtin_assume_aligned call set the LHS
18446 SSA name alignment info accordingly.
18447
18448 2018-03-05 Wilco Dijkstra <wdijkstr@arm.com>
18449
18450 PR tree-optimization/84114
18451 * config/aarch64/aarch64.c (aarch64_reassociation_width)
18452 Avoid reassociation of FLOAT_MODE addition.
18453
18454 2018-03-05 Olga Makhotina <olga.makhotina@intel.com>
18455
18456 * common/config/i386/i386-common.c (OPTION_MASK_ISA_PCONFIG_SET,
18457 OPTION_MASK_ISA_PCONFIG_UNSET, OPTION_MASK_ISA_WBNOINVD_SET,
18458 OPTION_MASK_ISA_WBNOINVD_UNSET): New definitions.
18459 (ix86_handle_option): Handle -mpconfig and -mwbnoinvd.
18460 * config.gcc (pconfigintrin.h, wbnoinvdintrin.h) : Add headers.
18461 * config/i386/cpuid.h (bit_PCONFIG, bit_WBNOINVD): New.
18462 * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mpconfig
18463 and -mwbnoinvd.
18464 * config/i386/i386-builtin.def (__builtin_ia32_wbnoinvd,
18465 __builtin_ia32_wbinvd): New builtins.
18466 (SPECIAL_ARGS2): New.
18467 * config/i386/i386-c.c (__WBNOINVD__, __PCONFIG__): New.
18468 (SPECIAL_ARGS2): New.
18469 * config/i386/i386.c (ix86_target_string): Add -mpconfig and -mwbnoinvd.
18470 (ix86_valid_target_attribute_inner_p): Ditto.
18471 (ix86_init_mmx_sse_builtins): Add special_args2.
18472 * config/i386/i386.h (TARGET_PCONFIG, TARGET_PCONFIG_P, TARGET_WBNOINVD,
18473 TARGET_WBNOINVD_P): New.
18474 * config/i386/i386.md (UNSPECV_WBINVD, UNSPECV_WBNOINVD): New.
18475 (define_insn "wbinvd", define_insn "wbnoinvd"): New.
18476 * config/i386/i386.opt: Add -mpconfig and -mwbnoinvd.
18477 * config/i386/immintrin.h (_wbinvd): New intrinsic.
18478 * config/i386/pconfigintrin.h: New file.
18479 * config/i386/wbnoinvdintrin.h: Ditto.
18480 * config/i386/x86intrin.h: Add headers pconfigintrin.h and
18481 wbnoinvdintrin.h.
18482 * doc/invoke.texi (-mpconfig, -mwbnoinvd): New.
18483
18484 2018-03-05 Richard Biener <rguenther@suse.de>
18485
18486 PR tree-optimization/84670
18487 * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
18488 member.
18489 (BB_VISITED_WITH_VISITED_SUCCS): New define.
18490 (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
18491 (compute_antic_aux): Only assert the number of values in ANTIC_IN
18492 doesn't grow if all successors (recursively) were visited at least
18493 once.
18494
18495 2018-03-05 Richard Biener <rguenther@suse.de>
18496
18497 PR tree-optimization/84650
18498 * tree-ssa-loop-im.c (pass_lim::execute): Reset the SCEV cache
18499 if executed in the loop pipeline.
18500
18501 2018-03-05 Sandra Loosemore <sandra@codesourcery.com>
18502
18503 * doc/configfiles.texi (Configuration Files): Move info about
18504 conditionalizing $target-protos.h to...
18505 * doc/sourcebuild.texi (Back End): Here. Explain how $target.h
18506 differs from $target-protos.h.
18507
18508 2018-03-05 Kito Cheng <kito.cheng@gmail.com>
18509 Chung-Ju Wu <jasonwucj@gmail.com>
18510
18511 * config/nds32/nds32-protos.h (nds32_expand_setmem): Declare.
18512 * config/nds32/nds32-multiple.md (setmemsi): Define.
18513 * config/nds32/nds32-memory-manipulation.c
18514 (nds32_gen_dup_4_byte_to_word_value): New.
18515 (emit_setmem_word_loop): New.
18516 (emit_setmem_byte_loop): New.
18517 (nds32_expand_setmem_loop): New.
18518 (nds32_expand_setmem_loop_v3m): New.
18519 (nds32_expand_setmem_unroll): New.
18520 (nds32_expand_setmem): New.
18521
18522 2018-03-04 Kito Cheng <kito.cheng@gmail.com>
18523 Chung-Ju Wu <jasonwucj@gmail.com>
18524
18525 * config/nds32/nds32-memory-manipulation.c
18526 (nds32_emit_load_store): New.
18527 (nds32_emit_post_inc_load_store): New.
18528 (nds32_emit_mem_move): New.
18529 (nds32_emit_mem_move_block): New.
18530 (nds32_expand_movmemsi_loop_unknown_size): New.
18531 (nds32_expand_movmemsi_loop_known_size): New.
18532 (nds32_expand_movmemsi_loop): New.
18533 (nds32_expand_movmemsi_unroll): New.
18534 (nds32_expand_movmemqi): Rename ...
18535 (nds32_expand_movmemsi): ... to this.
18536 * config/nds32/nds32-multiple.md (movmemqi): Rename ...
18537 (movmemsi): ... to this.
18538 * config/nds32/nds32-protos.h (nds32_expand_movmemqi): Rename ...
18539 (nds32_expand_movmemsi): ... to this.
18540
18541 2018-03-04 Kito Cheng <kito.cheng@gmail.com>
18542 Monk Chiang <sh.chiang04@gmail.com>
18543 Chung-Ju Wu <jasonwucj@gmail.com>
18544
18545 * config/nds32/nds32-protos.h
18546 (nds32_expand_load_multiple): New arguments.
18547 (nds32_expand_store_multiple): Ditto.
18548 (nds32_valid_multiple_load_store): Rename ...
18549 (nds32_valid_multiple_load_store_p): ... to this.
18550 * config/nds32/nds32-memory-manipulation.c
18551 (nds32_expand_load_multiple): Refine implementation.
18552 (nds32_expand_store_multiple): Ditto.
18553 * config/nds32/nds32-multiple.md
18554 (load_multiple): Update nds32_expand_load_multiple interface.
18555 (store_multiple): Update nds32_expand_store_multiple interface.
18556 * config/nds32/nds32-predicates.c
18557 (nds32_valid_multiple_load_store): Rename ...
18558 (nds32_valid_multiple_load_store_p): ... to this and refine
18559 implementation.
18560 * config/nds32/predicates.md
18561 (nds32_load_multiple_and_update_address_operation): New predicate.
18562 (nds32_store_multiple_and_update_address_operation): New predicate.
18563
18564 2018-03-04 Kito Cheng <kito.cheng@gmail.com>
18565 Chung-Ju Wu <jasonwucj@gmail.com>
18566
18567 * config/nds32/nds32.md (type): Add load_multiple and store_multiple.
18568 (combo): New attribute.
18569 * config/nds32/nds32-multiple.md: Refine patterns with new attributes.
18570
18571 2018-03-03 Chung-Ju Wu <jasonwucj@gmail.com>
18572
18573 * config/nds32/nds32.opt: Change -mcmodel= default value.
18574
18575 2018-03-03 Kito Cheng <kito.cheng@gmail.com>
18576 Monk Chiang <sh.chiang04@gmail.com>
18577 Chung-Ju Wu <jasonwucj@gmail.com>
18578
18579 * config/nds32/constants.md (unspec_element): New enum.
18580 * config/nds32/constraints.md (Umw): New constraint.
18581 * config/nds32/nds32-intrinsic.c: Add more builtin functions.
18582 * config/nds32/nds32-intrinsic.md: Likewise.
18583 * config/nds32/nds32-md-auxiliary.c (nds32_regno_to_enable4): New.
18584 (nds32_valid_smw_lwm_base_p): New.
18585 (nds32_output_smw_single_word): New.
18586 (nds32_output_lmw_single_word): New.
18587 (nds32_expand_unaligned_load): New.
18588 (nds32_expand_unaligned_store): New.
18589 * config/nds32/nds32-protos.h (nds32_valid_smw_lwm_base_p): Declare.
18590 (nds32_output_smw_single_word): Declare.
18591 (nds32_output_lmw_single_word): Declare.
18592 (nds32_expand_unaligned_load): Declare.
18593 (nds32_expand_unaligned_store): Declare.
18594 * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_UALOAD_HW,
18595 NDS32_BUILTIN_UALOAD_W, NDS32_BUILTIN_UALOAD_DW,
18596 NDS32_BUILTIN_UASTORE_HW, NDS32_BUILTIN_UASTORE_W,
18597 NDS32_BUILTIN_UASTORE_DW.
18598 * config/nds32/predicates.md (nds32_lmw_smw_base_operand): New
18599 predicate.
18600
18601 2018-03-03 Monk Chiang <sh.chiang04@gmail.com>
18602 Kito Cheng <kito.cheng@gmail.com>
18603 Chung-Ju Wu <jasonwucj@gmail.com>
18604
18605 * config/nds32/nds32-intrinsic.c
18606 (nds32_expand_builtin_null_ftype_reg): Delete.
18607 (nds32_expand_builtin_reg_ftype_imm): Ditto.
18608 (nds32_expand_builtin_null_ftype_reg_imm): Ditto.
18609 (nds32_read_argument): New.
18610 (nds32_legitimize_target): Ditto.
18611 (nds32_legitimize_argument): Ditto.
18612 (nds32_check_constant_argument): Ditto.
18613 (nds32_expand_unop_builtin): Ditto.
18614 (nds32_expand_unopimm_builtin): Ditto.
18615 (nds32_expand_binop_builtin): Ditto.
18616 (nds32_builtin_decl_impl): Ditto.
18617 (builtin_description): Ditto.
18618 (nds32_expand_builtin_impl): Rewrite with new infrastructure.
18619 (nds32_init_builtins_impl): Ditto.
18620 * config/nds32/nds32.c (TARGET_BUILTIN_DECL): Define.
18621 (nds32_builtin_decl): New.
18622 * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_COUNT.
18623 * config/nds32/nds32-protos.h (nds32_builtin_decl_impl): Declare.
18624
18625 2018-03-02 Jeff Law <law@redhat.com>
18626
18627 * reorg.c (stop_search_p): Handle DEBUG_INSN.
18628 (redundant_insn, fill_simple_delay_slots): Likewise.
18629 (fill_slots_from_thread): Likewise.
18630 * resource.c (mark_referenced_resources): Likewise.
18631 (mark_set_resources, find_dead_or_set_registers): Likewise.
18632
18633 2018-03-02 Jakub Jelinek <jakub@redhat.com>
18634
18635 * substring-locations.h (format_warning_va): Formatting fix for
18636 ATTRIBUTE_GCC_DIAG.
18637 (format_warning_at_substring): Fix up ATTRIBUTE_GCC_DIAG second
18638 argument.
18639 (format_warning_n_va, format_warning_at_substring_n): New prototypes.
18640 * substring-locations.c: Include intl.h.
18641 (format_warning_va): Turned into small wrapper around
18642 format_warning_n_va, renamed to ...
18643 (format_warning_n_va): ... this, add N and PLURAL_GMSGID arguments,
18644 rename GMSGID to SINGULAR_GMSGID, if SINGULAR_GMSGID != PLURAL_GMSGID,
18645 use ngettext.
18646 (format_warning_at_substring_n): New function.
18647 * gimple-ssa-sprintf.c: Remove GCC diagnostic ignored pragma.
18648 (fmtwarn): Add ATTRIBUTE_GCC_DIAG. Turn into a copy of
18649 format_warning_at_substring with just a shorter name instead of
18650 const function pointer.
18651 (fmtwarn_n): New function.
18652 (maybe_warn, format_directive, parse_directive): Use fmtwarn_n where
18653 appropriate, get rid of all the fmtstr temporaries, move conditionals
18654 with G_() wrapped string literals directly into fmtwarn arguments,
18655 cast dir.len to (int), formatting fixes.
18656
18657 2018-03-02 Thomas Schwinge <thomas@codesourcery.com>
18658
18659 * doc/invoke.texi: Remove "Cilk Plus" references.
18660
18661 2018-03-02 Jakub Jelinek <jakub@redhat.com>
18662 Richard Biener <rguenther@suse.de>
18663
18664 PR ipa/84628
18665 * expr.c (expand_expr_real_1) <case CALL_EXPR>: Don't emit diagnostics
18666 for error or warning attributes if CALL_FROM_THUNK_P is set.
18667 Formatting fixes.
18668
18669 2018-03-02 Jakub Jelinek <jakub@redhat.com>
18670
18671 PR target/56540
18672 * config/pa/pa.h (TARGET_CPU_CPP_BUILTINS): Predefine
18673 __SIZEOF_128__ macro if HPUX_LONG_DOUBLE_LIBRARY.
18674
18675 PR target/56540
18676 * config/ia64/ia64.h (TARGET_CPU_CPP_BUILTINS): Predefine
18677 __SIZEOF_{FPREG,FLOAT{80,128}}__ macros.
18678
18679 * predict.c (test_prediction_value_range): Use PROB_UNINITIALIZED
18680 instead of -1U in last predictors element's probability member.
18681
18682 2018-03-02 Eric Botcazou <ebotcazou@adacore.com>
18683
18684 PR ipa/83983
18685 * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
18686 arguments if they are comparable.
18687
18688 2018-03-02 Richard Sandiford <richard.sandiford@linaro.org>
18689
18690 PR tree-optimization/84634
18691 * tree-vect-stmts.c (vectorizable_store, vectorizable_load): Replace
18692 masks and masked_loop_p with a single loop_masks, making sure it's
18693 null for bb vectorization.
18694
18695 2018-03-02 Richard Sandiford <richard.sandiford@linaro.org>
18696
18697 * tree-vect-data-refs.c (vect_analyze_data_ref_dependence)
18698 (vect_analyze_data_ref_access): Use loop->safe_len rather than
18699 loop->force_vectorize to check whether there is no alias.
18700
18701 2018-03-02 Jakub Jelinek <jakub@redhat.com>
18702
18703 PR target/84614
18704 * rtl.h (prev_real_nondebug_insn, next_real_nondebug_insn): New
18705 prototypes.
18706 * emit-rtl.c (next_real_insn, prev_real_insn): Fix up function
18707 comments.
18708 (next_real_nondebug_insn, prev_real_nondebug_insn): New functions.
18709 * cfgcleanup.c (try_head_merge_bb): Use prev_real_nondebug_insn
18710 instead of a loop around prev_real_insn.
18711 * combine.c (move_deaths): Use prev_real_nondebug_insn instead of
18712 prev_real_insn.
18713
18714 PR inline-asm/84625
18715 * config/i386/i386.c (ix86_print_operand): Use conditional
18716 output_operand_lossage instead of gcc_assert if CONST_VECTOR is not
18717 zero vector.
18718
18719 2018-03-02 Richard Biener <rguenther@suse.de>
18720
18721 PR tree-optimization/84427
18722 * tree-ssa-pre.c (bitmap_remove_expr_from_set): Remove.
18723 (bitmap_set_subtract_values): Rewrite to handle multiple
18724 exprs per value.
18725 (clean): Likewise.
18726 (prune_clobbered_mems): Likewise.
18727 (phi_translate): Take edge instead of pred/phiblock.
18728 (phi_translate_1): Likewise.
18729 (phi_translate_set): Likewise. Insert all translated
18730 exprs for a value into the set, keeping possibly multiple
18731 expressions per value.
18732 (compute_antic_aux): Adjust for phi_translate changes.
18733 When intersecting union the expressions and prune those
18734 not in the final value set, keeping possibly multiple
18735 expressions per value. Do not use value-insertion
18736 for unioning ANTIC_OUT U EXP_GEN - TMP_GEN but merge
18737 all expressions. Add verification that the value-sets
18738 only shrink during iteration.
18739 (compute_partial_antic_aux): Adjust for the phi_translate changes.
18740 (do_pre_regular_insertion): Likewise.
18741 (do_pre_partial_partial_insertion): Likewise.
18742
18743 2018-03-02 Richard Biener <rguenther@suse.de>
18744
18745 PR target/82005
18746 * config/darwin.c (saved_debug_info_level): New static global.
18747 (darwin_asm_lto_start): Disable debug info generation for LTO out.
18748 (darwin_asm_lto_end): Restore debug info generation settings.
18749
18750 2018-03-01 Martin Liska <mliska@suse.cz>
18751
18752 PR sanitizer/82484
18753 * sanopt.c (sanitize_rewrite_addressable_params): Do not handle
18754 volatile arguments.
18755
18756 2018-03-01 Richard Biener <rguenther@suse.de>
18757
18758 PR debug/84645
18759 * dwarf2out.c (gen_variable_die): Properly handle late VLA
18760 type annotation with LTO when debug was disabled at compile-time.
18761
18762 2018-03-01 Matthew Fortune <mfortune@gmail.com>
18763
18764 * config/mips/mips.c (mips_final_prescan_insn): Fix incorrect
18765 XINT with INTVAL.
18766 (mips_final_postscan_insn): Likewise.
18767
18768 2018-03-01 Richard Sandiford <richard.sandiford@linaro.org>
18769
18770 PR rtl-optimization/84528
18771 * alias.c (init_alias_target): Add commentary.
18772 (init_alias_analysis): Only give HARD_FRAME_POINTER_REGNUM
18773 a unique base value if the frame pointer is not eliminated
18774 to the stack pointer.
18775
18776 2018-03-01 Tom de Vries <tom@codesourcery.com>
18777
18778 PR rtl-optimization/83327
18779 * lra-int.h (hard_regs_spilled_into): Declare.
18780 * lra.c (hard_regs_spilled_into): Define.
18781 (init_reg_info): Init hard_regs_spilled_into.
18782 * lra-spills.c (assign_spill_hard_regs): Update hard_regs_spilled_into.
18783 * lra-lives.c (make_hard_regno_born, make_hard_regno_dead)
18784 (process_bb_lives): Handle hard_regs_spilled_into.
18785 (lra_create_live_ranges_1): Before doing liveness propagation, clear
18786 regs in all_hard_regs_bitmap if set in hard_regs_spilled_into.
18787
18788 2018-02-28 David Edelsohn <dje.gcc@gmail.com>
18789
18790 * config.gcc (powerpc-ibm-aix7.1.*): New stanza.
18791 (powerpc-ibm-aix[789]*): Default to AIX 7.2.
18792 * config/rs6000/aix71.h (TARGET_DEFAULT): Revert to Power4 ISA.
18793 * config/rs6000/aix72.h: New file.
18794
18795 2018-02-28 Jakub Jelinek <jakub@redhat.com>
18796
18797 * gimple-ssa-warn-restrict.c (maybe_diag_overlap): Use warning_n
18798 instead of warning_at with conditional singular and plural messages
18799 where possible.
18800
18801 PR target/52991
18802 * stor-layout.c (update_alignment_for_field): For
18803 targetm.ms_bitfield_layout_p (rli->t), if !is_bitfield
18804 && !DECL_PACKED (field), do the alignment update, just use
18805 only desired_align instead of MAX (type_align, desired_align)
18806 as the alignment.
18807 (place_field): Don't do known_align < desired_align handling
18808 early if targetm.ms_bitfield_layout_p (rli->t) and rli->prev_field
18809 is non-NULL, instead do it after rli->prev_field handling and
18810 only if not within a bitfield word. For DECL_PACKED (field)
18811 use type_align of BITS_PER_UNIT.
18812
18813 2018-02-28 Eric Botcazou <ebotcazou@adacore.com>
18814
18815 * config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Remove
18816 superfluous parentheses and trailing spaces.
18817
18818 2018-02-28 Richard Biener <rguenther@suse.de>
18819
18820 PR tree-optimization/84584
18821 * graphite-scop-detection.c (scop_detection::add_scop): Discard
18822 SCoPs with fake exit edge.
18823
18824 2018-02-28 Martin Liska <mliska@suse.cz>
18825
18826 PR testsuite/84597
18827 * timevar.c (timer::print): Fix format to properly print 100%
18828 values.
18829
18830 2018-02-28 Richard Biener <rguenther@suse.de>
18831
18832 PR middle-end/84607
18833 * genmatch.c (capture_info::walk_match): Do not mark
18834 captured expressions without operands as expr_p given
18835 they act more like predicates and should be subject to
18836 "lost tail" side-effect preserving.
18837
18838 2018-02-28 Alexandre Oliva <aoliva@redhat.com>
18839
18840 PR rtl-optimization/81611
18841 * auto-inc-dec.c (attempt_change): Move dead note from
18842 mem_insn if it's the next use of regno
18843 (find_address): Take address use of reg holding
18844 non-incremented value. Add parm to limit search to the named
18845 reg only.
18846 (merge_in_block): Attempt to use a mem insn that is the next
18847 use of the original regno.
18848
18849 2018-02-27 Martin Sebor <msebor@redhat.com>
18850
18851 PR c++/83871
18852 * doc/invoke.texi (-Wmissing-attributes): New option.
18853 * print-tree.c (print_node): Handle DECL_UNINLINABLE.
18854
18855 2018-02-27 Martin Sebor <msebor@redhat.com>
18856
18857 PR translation/84207
18858 * diagnostic-core.h (warning_n, error_n, inform_n): Change
18859 n argument to unsigned HOST_WIDE_INT.
18860 * diagnostic.c (warning_n, error_n, inform_n): Ditto.
18861 (diagnostic_n_impl): Ditto. Handle arguments in excess of LONG_MAX.
18862 * gimple-ssa-sprintf.c (format_directive): Simplify inform_n call.
18863 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Use warning_n.
18864
18865 2018-02-27 Richard Biener <rguenther@suse.de>
18866
18867 PR tree-optimization/84512
18868 * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost):
18869 Do not use the estimate returned from record_stmt_cost for
18870 the scalar iteration cost but sum properly using add_stmt_cost.
18871
18872 2018-02-27 Richard Biener <rguenther@suse.de>
18873
18874 PR tree-optimization/84466
18875 * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
18876 Adjust last change to less strictly validate use operands.
18877
18878 2018-02-27 Martin Liska <mliska@suse.cz>
18879
18880 PR gcov-profile/84548
18881 * gcov.c (process_file): Allow partial overlap and consider it
18882 also as group functions.
18883 (output_lines): Properly calculate range of lines for a group.
18884
18885 2018-02-27 Martin Liska <mliska@suse.cz>
18886
18887 * timevar.c (timer::print_row): Remove 'usr', 'sys', 'wall' and
18888 'ggc' suffixes. Change first column width.
18889 (timer::print): Fix formatting of the column.
18890
18891 2018-02-27 Alexandre Oliva <aoliva@redhat.com>
18892
18893 * tree-ssa-live.c (remove_unused_scope_block_p): Do not
18894 preserve inline entry blocks for the sake of debug inline
18895 entry point markers alone.
18896 (remove_unused_locals): Suggest in comments a better place to
18897 force the preservation of inline entry blocks that are
18898 otherwise unused, but do not preserve them.
18899
18900 2018-02-26 H.J. Lu <hongjiu.lu@intel.com>
18901
18902 * config/i386/i386.c (ix86_output_indirect_jmp): Update comments.
18903
18904 2018-02-26 H.J. Lu <hongjiu.lu@intel.com>
18905
18906 PR target/84039
18907 * config/i386/constraints.md (Bs): Replace
18908 ix86_indirect_branch_register with
18909 TARGET_INDIRECT_BRANCH_REGISTER.
18910 (Bw): Likewise.
18911 * config/i386/i386.md (indirect_jump): Likewise.
18912 (tablejump): Likewise.
18913 (*sibcall_memory): Likewise.
18914 (*sibcall_value_memory): Likewise.
18915 Peepholes of indirect call and jump via memory: Likewise.
18916 (*sibcall_GOT_32): Disallowed for TARGET_INDIRECT_BRANCH_REGISTER.
18917 (*sibcall_value_GOT_32): Likewise.
18918 * config/i386/predicates.md (indirect_branch_operand): Likewise.
18919 (GOT_memory_operand): Likewise.
18920 (call_insn_operand): Likewise.
18921 (sibcall_insn_operand): Likewise.
18922 (GOT32_symbol_operand): Likewise.
18923 * config/i386/i386.h (TARGET_INDIRECT_BRANCH_REGISTER): New.
18924
18925 2018-02-26 Eric Botcazou <ebotcazou@adacore.com>
18926
18927 PR rtl-optimization/83496
18928 * reorg.c (steal_delay_list_from_target): Change REDUNDANT array from
18929 booleans to RTXes. Call fix_reg_dead_note on every non-null element.
18930 (steal_delay_list_from_fallthrough): Call fix_reg_dead_note on a
18931 redundant insn, if any.
18932 (relax_delay_slots): Likewise.
18933 (update_reg_unused_notes): Rename REDUNDANT_INSN to OTHER_INSN.
18934
18935 2018-02-26 Richard Sandiford <richard.sandiford@linaro.org>
18936
18937 PR tree-optimization/83965
18938 * tree-vect-patterns.c (vect_reassociating_reduction_p): Assume
18939 that grouped statements are part of a reduction chain. Return
18940 true if the statement is not marked as a reduction itself but
18941 is part of a group.
18942 (vect_recog_dot_prod_pattern): Don't check whether the statement
18943 is part of a group here.
18944 (vect_recog_sad_pattern): Likewise.
18945 (vect_recog_widen_sum_pattern): Likewise.
18946
18947 2018-02-26 Eric Botcazou <ebotcazou@adacore.com>
18948
18949 PR debug/84545
18950 * final.c (rest_of_clean_state): Also look for calls inside sequences.
18951
18952 2018-02-26 H.J. Lu <hongjiu.lu@intel.com>
18953
18954 PR target/84530
18955 * config/i386/i386-protos.h (ix86_output_indirect_jmp): Remove
18956 the bool argument.
18957 (ix86_output_indirect_function_return): New prototype.
18958 (ix86_split_simple_return_pop_internal): Likewise.
18959 * config/i386/i386.c (indirect_return_via_cx): New.
18960 (indirect_return_via_cx_bnd): Likewise.
18961 (indirect_thunk_name): Handle return va CX_REG.
18962 (output_indirect_thunk_function): Create alias for
18963 __x86_return_thunk_[re]cx and __x86_return_thunk_[re]cx_bnd.
18964 (ix86_output_indirect_jmp): Remove the bool argument.
18965 (ix86_output_indirect_function_return): New function.
18966 (ix86_split_simple_return_pop_internal): Likewise.
18967 * config/i386/i386.md (*indirect_jump): Don't pass false
18968 to ix86_output_indirect_jmp.
18969 (*tablejump_1): Likewise.
18970 (simple_return_pop_internal): Change it to define_insn_and_split.
18971 Call ix86_split_simple_return_pop_internal to split it for
18972 -mfunction-return=.
18973 (simple_return_indirect_internal): Call
18974 ix86_output_indirect_function_return instead of
18975 ix86_output_indirect_jmp.
18976
18977 2018-02-26 Jakub Jelinek <jakub@redhat.com>
18978
18979 PR bootstrap/84405
18980 * vec.h (vec_default_construct): For BROKEN_VALUE_INITIALIZATION use
18981 memset and value initialization afterwards.
18982
18983 2018-02-26 Christophe Lyon <christophe.lyon@linaro.org>
18984
18985 * Makefile.in (lto-wrapper): Use ALL_LINKERFLAGS.
18986
18987 2018-02-26 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
18988
18989 PR target/84521
18990 * common/config/aarch64/aarch64-common.c
18991 (aarch_option_optimization_table[]): Switch
18992 off fomit-frame-pointer
18993
18994 2018-02-26 Kito Cheng <kito.cheng@gmail.com>
18995 Chung-Ju Wu <jasonwucj@gmail.com>
18996
18997 * config/nds32/nds32-multiple.md (load_multiple): Disallow
18998 volatile memory.
18999 (store_multiple): Ditto.
19000
19001 2018-02-26 Kito Cheng <kito.cheng@gmail.com>
19002
19003 * config.gcc: Add --with-cpu support for nds32 target.
19004 * config/nds32/nds32-opts.h (nds32_cpu_type): New.
19005 * config/nds32/nds32.opt: Add -mcpu= option.
19006
19007 2018-02-25 Segher Boessenkool <segher@kernel.crashing.org>
19008
19009 * config/rs6000/rs6000.opt (mvrsave=no, mvrsave=yes, isel=no,
19010 isel=yes): Warn for these deprecated options.
19011
19012 2018-02-23 David Edelsohn <dje.gcc@gmail.com>
19013
19014 * config/rs6000/aix71.h (TARGET_DEFAULT): Change to
19015 ISA_2_5_MASKS_EMBEDDED.
19016
19017 2018-02-23 Jakub Jelinek <jakub@redhat.com>
19018
19019 * ipa-prop.c (ipa_vr_ggc_hash_traits::hash): Hash p->min and
19020 p->max as pointers rather than using iterative_hash_expr.
19021
19022 2018-02-23 Carl Love <cel@us.ibm.com>
19023
19024 * config/rs6000/rs6000-builtin.def: Change VSIGNED2 and VUNSIGNED2
19025 macro expansions from BU_VSX_2 to BU_P8V_VSX_2 and BU_VSX_OVERLOAD_2 to
19026 BU_P8V_OVERLOAD_2.
19027 * config/rs6000/rs6000-c.c: Change VSX_BUILTIN_VEC_VSIGNED2 to
19028 P8V_BUILTIN_VEC_VSIGNED2. Change VSX_BUILTIN_VEC_VUNSIGNED2 to
19029 P8V_BUILTIN_VEC_VUNSIGNED2.
19030
19031 2018-02-22 Vladimir Makarov <vmakarov@redhat.com>
19032
19033 PR target/81572
19034 * lra-int.h (LRA_UNKNOWN_ALT, LRA_NON_CLOBBERED_ALT): New macros.
19035 * lra.c (lra_set_insn_recog_data, lra_update_insn_recog_data): Use
19036 LRA_UNKNOWN_ALT.
19037 * lra-constraints.c (curr_insn_transform): Set up
19038 LRA_NON_CLOBBERED_ALT for moves processed on the fast path. Use
19039 LRA_UNKNOWN_ALT.
19040 (remove_inheritance_pseudos): Use LRA_UNKNOWN_ALT.
19041 * lra-eliminations.c (spill_pseudos): Ditto.
19042 (process_insn_for_elimination): Ditto.
19043 * lra-lives.c (reg_early_clobber_p): Use the new macros.
19044 * lra-spills.c (spill_pseudos): Use LRA_UNKNOWN_ALT and
19045 LRA_NON_CLOBBERED_ALT.
19046
19047 2018-02-22 Martin Sebor <msebor@redhat.com>
19048
19049 PR tree-optimization/84480
19050 * gimple-fold.c (gimple_fold_builtin_strcpy): Move warnings
19051 to maybe_diag_stxncpy_trunc. Call it.
19052 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Integrate warnings
19053 from gimple_fold_builtin_strcpy. Print inlining stack.
19054 (handle_builtin_stxncpy): Print inlining stack.
19055 * tree-ssa-strlen.h (maybe_diag_stxncpy_trunc): Declare.
19056
19057 2018-02-22 H.J. Lu <hongjiu.lu@intel.com>
19058
19059 PR target/84176
19060 * config/i386/i386.c (ix86_set_indirect_branch_type): Issue an
19061 error when -mindirect-branch=thunk-extern, -fcf-protection=branch
19062 and -fcheck-pointer-bounds are used together.
19063 (indirect_thunk_prefix): New enum.
19064 (indirect_thunk_need_prefix): New function.
19065 (indirect_thunk_name): Replace need_bnd_p with need_prefix. Use
19066 "_nt" instead of "_bnd" for NOTRACK prefix.
19067 (output_indirect_thunk): Replace need_bnd_p with need_prefix.
19068 (output_indirect_thunk_function): Likewise.
19069 (): Likewise.
19070 (ix86_code_end): Update output_indirect_thunk_function calls.
19071 (ix86_output_indirect_branch_via_reg): Replace
19072 ix86_bnd_prefixed_insn_p with indirect_thunk_need_prefix.
19073 (ix86_output_indirect_branch_via_push): Likewise.
19074 (ix86_output_function_return): Likewise.
19075 * doc/invoke.texi: Document -mindirect-branch=thunk-extern is
19076 incompatible with -fcf-protection=branch and
19077 -fcheck-pointer-bounds.
19078
19079 2018-02-22 Steve Ellcey <sellcey@cavium.com>
19080
19081 PR target/83335
19082 * config/aarch64/aarch64.c (aarch64_print_address_internal):
19083 Change gcc_assert call to output_operand_lossage.
19084
19085 2018-02-22 Steve Ellcey <sellcey@cavium.com>
19086
19087 * doc/extend.texi (__builtin_extend_pointer): Document builtin.
19088
19089 2018-02-22 DJ Delorie <dj@redhat.com>
19090 Sebastian Perta <sebastian.perta@renesas.com>
19091 Oleg Endo <olegendo@gcc.gnu.org>
19092
19093 * config/rx/rx.c (rx_rtx_costs): New function.
19094 (TARGET_RTX_COSTS): Override to use rx_rtx_costs.
19095
19096 2018-02-22 Thomas Preud'homme <thomas.preudhomme@arm.com>
19097
19098 * config/arm/t-multilib: Map Armv8-R to Armv7 multilibs.
19099
19100 2018-02-22 Martin Liska <mliska@suse.cz>
19101
19102 PR driver/83193
19103 * common/config/arm/arm-common.c (arm_print_hint_for_cpu_option):
19104 Add "native" as a possible value.
19105
19106 2018-02-22 Martin Liska <mliska@suse.cz>
19107
19108 PR driver/83193
19109 * config/i386/i386.c (ix86_option_override_internal):
19110 Add "native" as a possible value for -march and -mtune.
19111
19112 2018-02-22 Jakub Jelinek <jakub@redhat.com>
19113
19114 PR target/84502
19115 * stor-layout.c (finalize_type_size): Propagate TYPE_EMPTY_P flag
19116 to all type variants.
19117
19118 PR tree-optimization/84503
19119 * gimple-ssa-store-merging.c (merged_store_group::merge_into): Compute
19120 width as info->bitpos + info->bitsize - start.
19121 (merged_store_group::merge_overlapping): Simplify width computation.
19122 (check_no_overlap): New function.
19123 (imm_store_chain_info::try_coalesce_bswap): Compute expected
19124 start + width and last_order of the group, fail if check_no_overlap
19125 fails.
19126 (imm_store_chain_info::coalesce_immediate_stores): Don't merge info
19127 to group if check_no_overlap fails.
19128
19129 2018-02-21 Segher Boessenkool <segher@kernel.crashing.org>
19130
19131 * config/rs6000/altivec.md: Delete contraint arguments to
19132 define_expand, define_split, and define_peephole2, and in
19133 define_insn_and_split if always unused.
19134 * config/rs6000/darwin.md: Ditto.
19135 * config/rs6000/dfp.md: Ditto.
19136 * config/rs6000/rs6000.md: Ditto.
19137 * config/rs6000/sync.md: Ditto.
19138 * config/rs6000/vector.md: Ditto.
19139 * config/rs6000/vsx.md: Ditto.
19140
19141 2018-02-21 Segher Boessenkool <segher@kernel.crashing.org>
19142
19143 * config/rs6000/altivec.md: Write output control strings as braced
19144 blocks instead of double-quoted strings.
19145 * config/rs6000/darwin.md: Ditto.
19146 * config/rs6000/rs6000.md: Ditto.
19147 * config/rs6000/vector.md: Ditto.
19148 * config/rs6000/vsx.md: Ditto.
19149
19150 2018-02-21 Jason Merrill <jason@redhat.com>
19151
19152 PR c++/84314 - ICE with templates and fastcall attribute.
19153 * attribs.c (build_type_attribute_qual_variant): Remove assert.
19154
19155 2018-02-21 Jan Hubicka <hubicka@ucw.cz>
19156
19157 * ipa-cp.c (determine_versionability): Fix comment typos.
19158
19159 2018-02-21 Jan Hubicka <hubicka@ucw.cz>
19160
19161 PR c/84229
19162 * ipa-cp.c (determine_versionability): Do not version functions caling
19163 va_arg_pack.
19164
19165 2018-02-21 Martin Liska <mliska@suse.cz>
19166
19167 PR driver/83193
19168 * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch):
19169 Add "native" as a possible value.
19170 * config/aarch64/aarch64.h (HAVE_LOCAL_CPU_DETECT): Define
19171 the macro when native cpu detection is available.
19172
19173 2018-02-21 Martin Liska <mliska@suse.cz>
19174
19175 PR driver/83193
19176 * common/config/arm/arm-common.c (arm_print_hint_for_arch_option):
19177 Add "native" as a possible value.
19178 * config/arm/arm.h (HAVE_LOCAL_CPU_DETECT): Define the macro
19179 when native cpu detection is available.
19180
19181 2018-02-21 Jakub Jelinek <jakub@redhat.com>
19182 Martin Sebor <msebor@redhat.com>
19183
19184 PR tree-optimization/84478
19185 * gimple-fold.h (get_range_strlen): Add a bool argument defaulted to
19186 false.
19187 * gimple-fold.c (get_range_strlen): Make minlen const and assume it
19188 can't be NULL. Change FUZZY from bool to int, for 1 add PHI/COND_EXPR
19189 support which is conservatively correct, for 2 only stay conservative
19190 for maxlen. Formatting and comment capitalization fixes. Add STRICT
19191 argument to the 2 argument get_range_strlen, adjust 6 arg
19192 get_range_strlen caller and clear minmaxlen[0] and [1] if it returned
19193 false.
19194 (get_maxval_strlen): Adjust 6 arg get_range_strlen caller.
19195 (gimple_fold_builtin_strlen): Pass true as last argument to
19196 get_range_strlen.
19197
19198 2018-02-20 Martin Sebor <msebor@redhat.com>
19199
19200 PR middle-end/84095
19201 * gimple-ssa-warn-restrict.c (builtin_memref::extend_offset_range): New.
19202 (builtin_memref::set_base_and_offset): Same. Handle inner references.
19203 (builtin_memref::builtin_memref): Factor out parts into
19204 set_base_and_offset and call it.
19205
19206 2018-02-20 Richard Sandiford <richard.sandiford@linaro.org>
19207
19208 PR middle-end/84406
19209 * optabs-query.c (find_widening_optab_handler_and_mode): If from_mode
19210 is a scalar_int_mode, assert that to_mode is a scalar_int_mode with
19211 greater precision. If to_mode is a MODE_PARTIAL_INT, stop the
19212 search at the associated MODE_INT.
19213
19214 2018-02-20 Jeff Law <law@redhat.com>
19215
19216 PR middle-end/82123
19217 PR tree-optimization/81592
19218 PR middle-end/79257
19219 * gimple-ssa-sprintf.c (format_integer): Query EVRP range analyzer
19220 for range data rather than using global data.
19221 * gimple-ssa-sprintf.c (get_int_range): Query EVRP range analyzer for
19222 range data rather than using global data.
19223 * gimple-ssa-sprintf.c (get_int_range): Accept vr_values parameter
19224 pass it to children as needed.
19225 (struct directive::fmtresult): Similarly.
19226 (struct directive::set_width): Similarly.
19227 (struct directive::set_precision): Similarly.
19228 (format_integer, format_directive, parse_directive): Similarly.
19229 (format_none): Accept unnamed vr_values parameter.
19230 (format_percent, format_floating, format_character): Similarly.
19231 (format_string, format_plain): Similarly.
19232 * gimple-ssa-sprintf.c (sprintf_dom_walker::handle_gimple_call): Query
19233 the EVRP range analyzer for range data rather than using global data.
19234 * gimple-ssa-sprintf.c: Include alloc-pool.h, vr-values.h and
19235 gimple-ssa-evrp-analyze.h
19236 (class sprintf_dom_walker): Add after_dom_children member function.
19237 Add evrp_range_analyzer member.
19238 (sprintf_dom_walker::before_dom_children): Call into the EVRP
19239 range analyzer as needed.
19240 (sprintf_dom_walker::after_dom_children): New member function.
19241 * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::enter): Do nothing
19242 if not optimizing.
19243 (evrp_range_analyzer::record_ranges_from_stmt): Likewise.
19244 (evrp_range_analyzer::pop_to_marker): Likewise.
19245
19246 2018-02-20 Richard Sandiford <richard.sandiford@linaro.org>
19247
19248 PR tree-optimization/84419
19249 * internal-fn.c (expand_call_mem_ref): Create a TARGET_MEM_REF
19250 with the required type if its current type is compatible but
19251 different.
19252
19253 2018-02-20 Jakub Jelinek <jakub@redhat.com>
19254
19255 PR middle-end/82004
19256 * match.pd (pow(C,x) -> exp(log(C)*x)): Delay all folding until
19257 after vectorization.
19258
19259 2018-02-20 Martin Liska <mliska@suse.cz>
19260
19261 PR driver/83193
19262 * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch): Print
19263 possible values if we don't have a hint.
19264
19265 2018-02-20 Martin Liska <mliska@suse.cz>
19266
19267 PR c/84310
19268 PR target/79747
19269 * final.c (shorten_branches): Build align_tab array with one
19270 more element.
19271 * opts.c (finish_options): Add alignment option limit check.
19272 (MAX_CODE_ALIGN): Likewise.
19273 (MAX_CODE_ALIGN_VALUE): Likewise.
19274 * doc/invoke.texi: Document maximum allowed option value for
19275 all -falign-* options.
19276
19277 2018-02-19 Jakub Jelinek <jakub@redhat.com>
19278
19279 PR target/84146
19280 * reg-notes.def (REG_CALL_ARG_LOCATION): New reg note.
19281 * insn-notes.def (NOTE_INSN_CALL_ARG_LOCATION): Remove.
19282 * var-tracking.c (emit_note_insn_var_location): Remove all references
19283 to NOTE_INSN_CALL_ARG_LOCATION.
19284 (emit_notes_in_bb): Emit arguments as REG_CALL_ARG_LOCATION note on
19285 the CALL_INSN rather than separate NOTE_INSN_CALL_ARG_LOCATION note.
19286 Use copy_rtx_if_shared.
19287 * dwarf2out.c (gen_subprogram_die): Use XEXP with 0 instead of
19288 NOTE_VAR_LOCATION on ca_loc->call_arg_loc_note.
19289 (dwarf2out_var_location): Remove handling of
19290 NOTE_INSN_CALL_ARG_LOCATION, instead handle REG_CALL_ARG_LOCATION note
19291 on call_insn.
19292 * final.c (final_scan_insn): Remove all references to
19293 NOTE_INSN_CALL_ARG_LOCATION.
19294 (rest_of_clean_state): Likewise. Remove REG_CALL_ARG_LOCATION notes
19295 before dumping final insns.
19296 * except.c (emit_note_eh_region_end): Remove all references to
19297 NOTE_INSN_CALL_ARG_LOCATION.
19298 * config/alpha/alpha.c (alpha_pad_function_end): Likewise.
19299 * config/c6x/c6x.c (c6x_gen_bundles): Likewise.
19300 * config/arc/arc.c (hwloop_optimize): Likewise.
19301 * config/arm/arm.c (create_fix_barrier): Likewise.
19302 * config/s390/s390.c (s390_chunkify_start): Likewise.
19303 * config/sh/sh.c (find_barrier): Likewise.
19304 * config/i386/i386.c (rest_of_insert_endbranch,
19305 ix86_seh_fixup_eh_fallthru): Likewise.
19306 * config/xtensa/xtensa.c (hwloop_optimize): Likewise.
19307 * config/iq2000/iq2000.c (final_prescan_insn): Likewise.
19308 * config/frv/frv.c (frv_function_prologue): Likewise.
19309 * emit-rtl.c (try_split): Likewise. Copy over REG_CALL_ARG_LOCATION
19310 reg note.
19311 (note_outside_basic_block_p): Remove all references to
19312 NOTE_INSN_CALL_ARG_LOCATION.
19313 * gengtype.c (adjust_field_rtx_def): Likewise.
19314 * print-rtl.c (rtx_writer::print_rtx_operand_code_0, print_insn):
19315 Likewise.
19316 * jump.c (cleanup_barriers, delete_related_insns): Likewise.
19317 * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
19318
19319 PR c++/84444
19320 * builtins.c (builtin_mathfn_code): Don't check if CALL_EXPR_FN (t)
19321 is ADDR_EXPR.
19322
19323 PR tree-optimization/84452
19324 * tree-vect-patterns.c (vect_recog_pow_pattern): Don't call
19325 expand_simd_clones if targetm.simd_clone.compute_vecsize_and_simdlen
19326 is NULL.
19327
19328 2018-02-19 Martin Liska <mliska@suse.cz>
19329
19330 PR sanitizer/82183
19331 * passes.def: Put pass_sancov_O0 before pass_lower_switch with -O0.
19332
19333 2018-02-19 Martin Liska <mliska@suse.cz>
19334 Richard Sandiford <richard.sandiford@linaro.org>
19335
19336 PR tree-optimization/82491
19337 * gimple-fold.c (get_base_constructor): Make earlier bail out
19338 to prevent ubsan.
19339
19340 2018-02-19 Carl Love <cel@us.ibm.com>
19341
19342 * config/rs6000/rs6000-builtin.def: Change NEG macro expansions from
19343 BU_ALTIVEC_A to BU_P8V_AV_1 and BU_ALTIVEC_OVERLOAD_1 to
19344 BU_P8V_OVERLOAD_1.
19345 * config/rs6000/rs6000-c.c: Change ALTIVEC_BUILTIN_VEC_NEG to
19346 P8V_BUILTIN_VEC_NEG.
19347
19348 2018-02-19 Sebastian Perta <sebastian.perta@renesas.com>
19349
19350 * config/rl78/rl78.md (movdf): New define expand.
19351
19352 2018-02-19 Martin Liska <mliska@suse.cz>
19353
19354 PR other/80589
19355 * doc/invoke.texi: Fix typo.
19356 * params.def (PARAM_MAX_LOOP_HEADER_INSNS): Likewise.
19357
19358 2018-02-18 Segher Boessenkool <segher@kernel.crashing.org>
19359
19360 * config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
19361 handle rs6000_single_float and rs6000_double_float specially for
19362 e500 family CPUs.
19363
19364 2018-02-16 Jeff Law <law@redhat.com>
19365
19366 * config/rx/rx.c (add_pop_cfi_notes): New function.;
19367 (pop_regs): Use it.
19368
19369 2018-02-16 Jakub Jelinek <jakub@redhat.com>
19370
19371 PR ipa/84425
19372 * ipa-inline.c (inline_small_functions): Fix a typo.
19373
19374 2018-02-16 Nathan Sidwell <nathan@acm.org>
19375
19376 * doc/extend.texi (Backwards Compatibility): Americanize 'behaviour'.
19377
19378 2018-02-16 Carl Love <cel@us.ibm.com>
19379
19380 * config/rs6000/rs6000-builtin.def: Add BU_P8V_VSX_2 macro definition.
19381 Change FLOAT2 expansions from BU_VSX_2 to BU_P8V_VSX_2 and
19382 from BU_VSX_OVERLOAD_2 to BU_P8V_OVERLOAD_2.
19383 * config/rs6000/rs6000-c.c: Changed macro VSX_BUILTIN_VEC_FLOAT2
19384 expansion to P8V_BUILTIN_VEC_FLOAT2.
19385
19386 2018-02-16 Vladimir Makarov <vmakarov@redhat.com>
19387
19388 PR rtl-optimization/70023
19389 * lra-constraints.c (inherit_in_ebb): Take hard reg mode of
19390 src_regno into account.
19391
19392 2018-02-16 Carl Love <cel@us.ibm.com>
19393
19394 * config/rs6000/altivec.h: Remove vec_vextract4b and vec_vinsert4b.
19395 * config/rs6000/rs6000-builtin.def: Remove macro expansion for
19396 VEXTRACT4B, VINSERT4B, VINSERT4B_DI and VEXTRACT4B.
19397 * config/rs6000/rs6000.c: Remove case statements for
19398 P9V_BUILTIN_VEXTRACT4B, P9V_BUILTIN_VEC_VEXTRACT4B,
19399 P9V_BUILTIN_VINSERT4B, P9V_BUILTIN_VINSERT4B_DI,
19400 and P9V_BUILTIN_VEC_VINSERT4B.
19401 * config/rs6000/rs6000-c.c (altivec_expand_builtin): Remove entries for
19402 P9V_BUILTIN_VEC_VEXTRACT4B and P9V_BUILTIN_VEC_VINSERT4B.
19403 * config/rs6000/vsx.md:
19404 * doc/extend.texi: Remove vec_vextract4b, non ABI definitions for
19405 vec_insert4b.
19406
19407 2018-02-16 Carl Love <cel@us.ibm.com>
19408
19409 * config/rs6000/altivec.h: Add builtin names vec_extract4b
19410 vec_insert4b.
19411 * config/rs6000/rs6000-builtin.def: Add INSERT4B and EXTRACT4B
19412 definitions.
19413 * config/rs6000/rs6000-c.c: Add the definitions for
19414 P9V_BUILTIN_VEC_EXTRACT4B and P9V_BUILTIN_VEC_INSERT4B.
19415 * config/rs6000/rs6000.c (altivec_expand_builtin): Add
19416 P9V_BUILTIN_EXTRACT4B and P9V_BUILTIN_INSERT4B case statements.
19417 * config/rs6000/vsx.md: Add define_insn extract4b. Add define_expand
19418 definition for insert4b and define insn *insert3b_internal.
19419 * doc/extend.texi: Add documentation for vec_extract4b.
19420
19421 2018-02-16 Nathan Sidwell <nathan@acm.org>
19422
19423 * doc/extend.texi (Backwards Compatibility): Mention friend
19424 injection. Note for-scope is deprecated.
19425 * doc/invoke.texi (-ffriend-injection): Deprecate.
19426
19427 2018-02-16 Segher Boessenkool <segher@kernel.crashing.org>
19428
19429 * combine.c (try_combine): When adjusting LOG_LINKS for the destination
19430 that moved to I2, also allow destinations that are a paradoxical
19431 subreg (instead of a normal reg).
19432
19433 2018-02-16 Oleg Endo <olegendo@gcc.gnu.org>
19434
19435 PR target/83831
19436 * config/rx/rx.c (rx_fuse_in_memory_bitop): Convert shift operand
19437 to QImode.
19438
19439 2018-02-16 Richard Biener <rguenther@suse.de>
19440
19441 PR tree-optimization/84037
19442 PR tree-optimization/84016
19443 PR target/82862
19444 * config/i386/i386.c (ix86_builtin_vectorization_cost):
19445 Adjust vec_construct for the fact we need additional higher latency
19446 128bit inserts for AVX256 and AVX512 vector builds.
19447 (ix86_add_stmt_cost): Scale vector construction cost for
19448 elementwise loads.
19449
19450 2018-02-16 Richard Biener <rguenther@suse.de>
19451
19452 PR tree-optimization/84417
19453 * tree-ssa.c (non_rewritable_mem_ref_base): Properly constrain
19454 the MEM_REF offset when conversion to BIT_FIELD_REF is desired.
19455 (non_rewritable_lvalue_p): Likewise, use poly-ints.
19456
19457 2018-02-16 Martin Liska <mliska@suse.cz>
19458
19459 PR sanitizer/84307
19460 * internal-fn.def (ASAN_CHECK): Set proper flags.
19461 (ASAN_MARK): Likewise.
19462
19463 2018-02-16 Julia Koval <julia.koval@intel.com>
19464
19465 * config/i386/i386.c (ix86_option_override_internal): Remove PTA_CLWB
19466 from PTA_CANNONLAKE.
19467
19468 2018-02-16 Jakub Jelinek <jakub@redhat.com>
19469
19470 PR target/84272
19471 * config/aarch64/cortex-a57-fma-steering.c (fma_forest::merge_forest):
19472 Use ++iter rather than iter++ for std::list iterators.
19473 (func_fma_steering::dfs): Likewise. Don't delete nodes right away,
19474 defer deleting them until all nodes in the forest are processed. Do
19475 free even leaf nodes. Change to_process into auto_vec.
19476
19477 PR bootstrap/84405
19478 * system.h (BROKEN_VALUE_INITIALIZATION): Define for GCC < 4.3.
19479 * vec.h (vec_default_construct): Use memset instead of placement new
19480 if BROKEN_VALUE_INITIALIZATION is defined.
19481 * hash-table.h (hash_table<Descriptor, Allocator>::empty_slow): Use
19482 memset instead of value initialization if BROKEN_VALUE_INITIALIZATION
19483 is defined.
19484
19485 PR rtl-optimization/83723
19486 * lra-int.h (lra_substitute_pseudo): Add DEBUG_P argument.
19487 * lra.c (lra_substitute_pseudo): Likewise. If true, use
19488 gen_rtx_raw_SUBREG instead of gen_rtx_SUBREG. Pass DEBUG_P to
19489 recursive calls.
19490 (lra_substitute_pseudo_within_insn): Adjust lra_substitute_pseudo
19491 callers.
19492 * lra-constraints.c (inherit_reload_reg, split_reg): Likewise.
19493
19494 2018-02-16 Eric Botcazou <ebotcazou@adacore.com>
19495
19496 PR rtl-optimization/81443
19497 * rtlanal.c (num_sign_bit_copies1) <SUBREG>: Do not propagate results
19498 from inner REGs to paradoxical SUBREGs.
19499
19500 2018-02-16 Richard Biener <rguenther@suse.de>
19501
19502 PR tree-optimization/84399
19503 * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
19504 For operands we can analyze at their definition make sure we can
19505 analyze them at each use as well.
19506
19507 2018-02-16 Richard Biener <rguenther@suse.de>
19508
19509 PR tree-optimization/84190
19510 * tree-ssa.c (non_rewritable_mem_ref_base): Do not touch
19511 volatile accesses if the decl isn't volatile.
19512
19513 2018-02-15 Jason Merrill <jason@redhat.com>
19514
19515 PR c++/84314 - ICE with templates and fastcall attribute.
19516 * attribs.c (build_type_attribute_qual_variant): Don't clobber
19517 TYPE_CANONICAL on an existing type.
19518
19519 2018-02-15 Jakub Jelinek <jakub@redhat.com>
19520
19521 PR tree-optimization/84383
19522 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Don't look at
19523 dstoff nor call operand_equal_p if dstbase is NULL.
19524
19525 PR tree-optimization/84334
19526 * match.pd ((A +- CST1) +- CST2 -> A + CST3): If A is
19527 also a CONSTANT_CLASS_P, punt.
19528
19529 2018-02-14 Jim Wilson <jimw@sifive.com>
19530
19531 * config/riscv/riscv.c (riscv_first_stack_step): Move locals after
19532 first SMALL_OPERAND check. New local min_second_step. Move assert
19533 to where locals are set. Add TARGET_RVC support.
19534 * config/riscv/riscv.h (C_SxSP_BITS, SWSP_REACH, SDSP_REACH): New.
19535
19536 2018-02-14 Indu Bhagat <indu.bhagat@oracle.com>
19537
19538 * doc/invoke.texi: Correct -Wformat-overflow code sample.
19539
19540 2018-02-14 Martin Sebor <msebor@redhat.com>
19541
19542 PR tree-optimization/83698
19543 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For
19544 arrays constrain the offset range to their bounds.
19545 (builtin_access::strcat_overlap): Adjust the bounds of overlap offset.
19546 (builtin_access::overlap): Avoid setting the size of overlap if it's
19547 already been set.
19548 (maybe_diag_overlap): Also consider arrays when deciding what values
19549 of offsets to include in diagnostics.
19550
19551 2018-02-14 Martin Sebor <msebor@redhat.com>
19552
19553 PR c/84108
19554 * attribs.c (diag_attr_exclusions): Consider the exclusion(s)
19555 that correspond to the kind of a declaration.
19556
19557 2018-02-14 John David Anglin <danglin@gcc.gnu.org>
19558
19559 PR target/83984
19560 * config/pa/pa.md: Load address of PIC label using the linkage table
19561 if the label is nonlocal.
19562
19563 2018-02-14 Kelvin Nilsen <kelvin@gcc.gnu.org>
19564
19565 * config/rs6000/rs6000.c (rs6000_option_override_internal): Issue
19566 warning message if user requests -maltivec=be.
19567 * doc/invoke.texi: Document deprecation of -maltivec=be.
19568
19569 2018-02-14 Will Schmidt <will_schmidt@vnet.ibm.com>
19570
19571 PR target/84220
19572 * config/rs6000/rs6000-c.c: Update definitions for
19573 ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VEC_SLDW,
19574 VEC_XXSLDWI and ALTIVEC_BUILTIN_VEC_XXPERMDI builtins.
19575
19576 2018-02-14 Igor Tsimbalist <igor.v.tsimbalist@intel.com>
19577
19578 PR target/84239
19579 * config/i386/cetintrin.h: Remove _rdssp[d|q] and
19580 add _get_ssp intrinsics. Remove argument from
19581 __builtin_ia32_rdssp[d|q].
19582 * config/i386/i386-builtin-types.def: Add UINT_FTYPE_VOID.
19583 * config/i386/i386-builtin.def: Remove argument from
19584 __builtin_ia32_rdssp[d|q].
19585 * config/i386/i386.c: Use UINT_FTYPE_VOID. Use
19586 ix86_expand_special_args_builtin for _rdssp[d|q].
19587 * config/i386/i386.md: Remove argument from rdssp[si|di] insn.
19588 Clear register before usage.
19589 * doc/extend.texi: Remove argument from __builtin_ia32_rdssp[d|q].
19590 Add documentation for new _get_ssp and _inc_ssp intrinsics.
19591
19592 2018-02-14 Richard Sandiford <richard.sandiford@linaro.org>
19593
19594 PR tree-optimization/84357
19595 * tree-data-ref.c (object_address_invariant_in_loop_p): Check
19596 operand 1 of an ARRAY_REF too.
19597
19598 2018-02-14 Oleg Endo <olegendo@gcc.gnu.org>
19599
19600 PR target/83831
19601 * config/rx/rx-protos.h (rx_reg_dead_or_unused_after_insn,
19602 rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
19603 declarations.
19604 (set_of_reg): New struct.
19605 (rx_find_set_of_reg, rx_find_use_of_reg): New functions.
19606 * config/rx/rx.c (rx_reg_dead_or_unused_after_insn,
19607 rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
19608 functions.
19609 * config/rx/rx.md (andsi3, iorsi3, xorsi3): Convert to insn_and_split.
19610 Split into bitclr, bitset, bitinvert patterns if appropriate.
19611 (*bitset, *bitinvert, *bitclr): Convert to named insn_and_split and
19612 use rx_fuse_in_memory_bitop.
19613 (*bitset_in_memory, *bitinvert_in_memory, *bitclr_in_memory): Convert
19614 to named insn, correct maximum insn length.
19615
19616 2018-02-14 Jozef Lawrynowicz <jozefl.gcc@gmail.com>
19617
19618 PR target/79242
19619 * machmode.def: Define a complex mode for PARTIAL_INT.
19620 * genmodes.c (complex_class): Return MODE_COMPLEX_INT for
19621 MODE_PARTIAL_INT.
19622 * doc/rtl.texi: Document CSPImode.
19623 * config/msp430/msp430.c (msp430_hard_regno_nregs): Add CPSImode
19624 handling.
19625 (msp430_hard_regno_nregs_with_padding): Likewise.
19626
19627 2018-02-13 Peter Bergner <bergner@vnet.ibm.com>
19628
19629 PR target/84279
19630 * config/rs6000/rs6000.c (mem_operand_gpr): Disallow altivec addresses.
19631
19632 2018-02-13 Segher Boessenkool <segher@kernel.crashing.org>
19633
19634 PR rtl-optimization/84169
19635 * combine.c (try_combine): New variable split_i2i3. Set it to true if
19636 we generated a parallel as new i3 and we split that to new i2 and i3
19637 instructions. Handle split_i2i3 similar to swap_i2i3: scan the
19638 LOG_LINKs of i3 to see which of those need to link to i2 now. Link
19639 those to i2, not i1. Partially rewrite this scan code.
19640
19641 2018-02-13 Jakub Jelinek <jakub@redhat.com>
19642
19643 PR c/82210
19644 * stor-layout.c (place_field): For variable length fields, adjust
19645 offset_align afterwards not just based on the field's alignment,
19646 but also on the size.
19647
19648 PR middle-end/84309
19649 * match.pd (pow(C,x) -> exp(log(C)*x)): Use exp2s and log2s instead
19650 of exps and logs in the use_exp2 case.
19651
19652 2018-02-13 Jeff Law <law@redhat.com>
19653
19654 * config/rl/rl78.c (rl78_attribute_table): Fix terminator and
19655 entry for "vector".
19656
19657 * config/rl78/rl78.c (rl78_handle_func_attribute): Mark
19658 ARGS as unused.
19659
19660 2018-02-13 Alexandre Oliva <aoliva@redhat.com>
19661
19662 PR debug/84342
19663 PR debug/84319
19664 * common.opt (gas-loc-support, gas-locview-support): New.
19665 (ginline-points, ginternal-reset-location-views): New.
19666 * doc/invoke.texi: Document them. Use @itemx where intended.
19667 (gvariable-location-views): Adjust.
19668 * target.def (reset_location_view): New.
19669 * doc/tm.texi.in (DWARF2_ASM_VIEW_DEBUG_INFO): New.
19670 (TARGET_RESET_LOCATION_VIEW): New.
19671 * doc/tm.texi: Rebuilt.
19672 * dwarf2out.c (dwarf2out_default_as_loc_support): New.
19673 (dwarf2out_default_as_locview_support): New.
19674 (output_asm_line_debug_info): Use option variables.
19675 (dwarf2out_maybe_output_loclist_view_pair): Likewise.
19676 (output_loc_list): Likewise.
19677 (add_high_low_attributes): Check option variables.
19678 Don't output entry view attribute in strict mode.
19679 (gen_inlined_subroutine_die): Check option variables.
19680 (dwarf2out_inline_entry): Likewise.
19681 (init_sections_and_labels): Likewise.
19682 (dwarf2out_early_finish): Likewise.
19683 (maybe_reset_location_view): New, from...
19684 (dwarf2out_var_location): ... here. Call it.
19685 * debug.h (dwarf2out_default_as_loc_support): Declare.
19686 (dwarf2out_default_as_locview_support): Declare.
19687 * hooks.c (hook_int_rtx_insn_0): New.
19688 * hooks.h (hook_int_rtx_insn_0): Declare.
19689 * toplev.c (process_options): Take -gas-loc-support and
19690 -gas-locview-support from dwarf2out. Enable
19691 -gvariable-location-views by default only with locview
19692 assembler support. Enable -ginternal-reset-location-views by
19693 default only if the target defines the corresponding hook.
19694 Enable -ginline-points by default if location views are
19695 enabled; force it disabled if statement frontiers are
19696 disabled.
19697 * tree-inline.c (expand_call_inline): Check option variables.
19698 * tree-ssa-live.c (remove_unused_scope_block_p): Likewise.
19699
19700 2018-02-13 Richard Sandiford <richard.sandiford@linaro.org>
19701
19702 PR tree-optimization/84321
19703 * tree-vrp.c (intersect_range_with_nonzero_bits): Fix VR_ANTI_RANGE
19704 handling. Also check whether the anti-range contains any values
19705 that satisfy the mask; switch to a VR_RANGE if not.
19706
19707 2018-02-13 Paolo Bonzini <bonzini@gnu.org>
19708
19709 PR sanitizer/84340
19710 * internal-fn.def (ASAN_CHECK, ASAN_MARK): Revert changes to fnspec.
19711
19712 2018-02-13 Martin Jambor <mjambor@suse.cz>
19713
19714 PR c++/83990
19715 * ipa-param-manipulation.c (ipa_modify_call_arguments): Use location
19716 of call statements, also set location of a load to a temporary.
19717
19718 2018-02-13 Sebastian Perta <sebastian.perta@renesas.com>
19719
19720 * config/rl78/rl78.c (add_vector_labels): New function.
19721 * config/rl78/rl78.c (rl78_handle_vector_attribute): New function.
19722 * config/rl78/rl78.c (rl78_start_function): Call add_vector_labels.
19723 * config/rl78/rl78.c (rl78_handle_func_attribute): Removed the assert
19724 which checks that no arguments are passed.
19725 * config/rl78/rl78.c (rl78_attribute_table): Add "vector" attribute.
19726 * doc/extend.texi: Documentation for the new attribute.
19727
19728 2018-02-13 Andreas Schwab <schwab@suse.de>
19729
19730 * config/riscv/linux.h (CPP_SPEC): Define.
19731
19732 2018-02-13 Jakub Jelinek <jakub@redhat.com>
19733
19734 PR target/84335
19735 * config/i386/i386.c (ix86_init_mmx_sse_builtins): Pass
19736 OPTION_MASK_ISA_AES | OPTION_MASK_ISA_SSE2 instead of
19737 OPTION_MASK_ISA_AES as first argument to def_builtin_const
19738 for AES builtins. Pass OPTION_MASK_ISA_PCLMUL | OPTION_MASK_ISA_SSE2
19739 instead of OPTION_MASK_ISA_PCLMUL as first argument to
19740 def_builtin_const for __builtin_ia32_pclmulqdq128 builtin.
19741 * config/i386/wmmintrin.h: If __SSE2__ is not defined, enable it
19742 temporarily for AES and PCLMUL builtins.
19743
19744 PR tree-optimization/84339
19745 * gimple-fold.c (get_range_strlen): Set *FLEXP to true when handling
19746 ARRAY_REF where first operand is array_at_struct_end_p COMPONENT_REF.
19747 Formatting fixes.
19748
19749 PR middle-end/84309
19750 * match.pd (pow(C,x) -> exp(log(C)*x)): Optimize instead into
19751 exp2(log2(C)*x) if C is a power of 2 and c99 runtime is available.
19752 * generic-match-head.c (canonicalize_math_after_vectorization_p): New
19753 inline function.
19754 * gimple-match-head.c (canonicalize_math_after_vectorization_p): New
19755 inline function.
19756 * omp-simd-clone.h: New file.
19757 * omp-simd-clone.c: Include omp-simd-clone.h.
19758 (expand_simd_clones): No longer static.
19759 * tree-vect-patterns.c: Include fold-const-call.h, attribs.h,
19760 cgraph.h and omp-simd-clone.h.
19761 (vect_recog_pow_pattern): Optimize pow(C,x) to exp(log(C)*x).
19762 (vect_recog_widen_shift_pattern): Formatting fix.
19763 (vect_pattern_recog_1): Don't check optab for calls.
19764
19765 PR target/84336
19766 * config/i386/sse.md (<avx512>_vpermi2var<mode>3_mask): Force
19767 operands[2] into a REG before using gen_lowpart on it.
19768
19769 2018-02-12 Jeff Law <law@redhat.com>
19770
19771 PR target/83760
19772 * config/sh/sh.c (find_barrier): Consider a sibling call
19773 a barrier as well.
19774
19775 * cse.c (try_back_substitute_reg): Move any REG_ARGS_SIZE note when
19776 successfully back substituting a reg.
19777
19778 2018-02-12 Richard Biener <rguenther@suse.de>
19779
19780 PR tree-optimization/84037
19781 * tree-vect-slp.c (vect_analyze_slp_cost): Add visited
19782 parameter, move visited init to caller.
19783 (vect_slp_analyze_operations): Separate cost from validity
19784 check, initialize visited once for all instances.
19785 (vect_schedule_slp): Analyze map to CSE vectorized nodes once
19786 for all instances.
19787 * tree-vect-stmts.c (vect_model_simple_cost): Make early
19788 out an assert.
19789 (vect_model_promotion_demotion_cost): Likewise.
19790 (vectorizable_bswap): Guard cost modeling with !slp_node
19791 instead of !PURE_SLP_STMT to avoid double-counting on hybrid
19792 SLP stmts.
19793 (vectorizable_call): Likewise.
19794 (vectorizable_conversion): Likewise.
19795 (vectorizable_assignment): Likewise.
19796 (vectorizable_shift): Likewise.
19797 (vectorizable_operation): Likewise.
19798 (vectorizable_store): Likewise.
19799 (vectorizable_load): Likewise.
19800 (vectorizable_condition): Likewise.
19801 (vectorizable_comparison): Likewise.
19802
19803 2018-02-12 Paolo Bonzini <bonzini@gnu.org>
19804
19805 PR sanitizer/84307
19806 * internal-fn.def (ASAN_CHECK): Fix fnspec to account for return value.
19807 (ASAN_MARK): Fix fnspec to account for return value, change pointer
19808 argument from 'R' to 'W' so that the pointed-to datum is clobbered.
19809
19810 2018-02-08 Jan Hubicka <hubicka@ucw.cz>
19811
19812 PR middle-end/83665
19813 * params.def (inline-min-speedup): Increase from 8 to 15.
19814 (max-inline-insns-auto): Decrease from 40 to 30.
19815 * ipa-split.c (consider_split): Add some buffer for function to
19816 be considered inlining candidate.
19817 * invoke.texi (max-inline-insns-auto, inline-min-speedup): UPdate
19818 default values.
19819
19820 2018-02-12 Richard Biener <rguenther@suse.de>
19821
19822 PR tree-optimization/84037
19823 * tree-vect-slp.c (vect_build_slp_tree_2): Try swapping the
19824 matched stmts if we cannot swap the non-matched ones.
19825
19826 2018-02-12 Olga Makhotina <olga.makhotina@intel.com>
19827
19828 * config/i386/avx512fintrin.h (_mm_mask_scalef_round_sd,
19829 _mm_maskz_scalef_round_sd, _mm_mask_scalef_round_ss,
19830 _mm_maskz_scalef_round_ss): New intrinsics.
19831 (__builtin_ia32_scalefsd_round, __builtin_ia32_scalefss_round): Fix.
19832 * config/i386/i386-builtin.def (__builtin_ia32_scalefsd_round,
19833 __builtin_ia32_scalefss_round): Remove.
19834 (__builtin_ia32_scalefsd_mask_round,
19835 __builtin_ia32_scalefss_mask_round): New intrinsics.
19836 * config/i386/sse.md (vmscalef<mode><round_name>): Renamed to ...
19837 (vmscalef<mode><mask_scalar_name><round_scalar_name>): ... this.
19838 ((match_operand:VF_128 2 "<round_nimm_predicate>"
19839 "<round_constraint>")): Changed to ...
19840 ((match_operand:VF_128 2 "<round_scalar_nimm_predicate>"
19841 "<round_scalar_constraint>")): ... this.
19842 ("vscalef<ssescalarmodesuffix>\t{<round_op3>%2, %1, %0|
19843 %0, %1, %2<round_op3>}"): Changed to ...
19844 ("vscalef<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%2, %1,
19845 %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %1,
19846 %2<round_scalar_mask_op3>}"): ... this.
19847 * config/i386/subst.md (round_scalar_nimm_predicate): New.
19848
19849 2018-02-12 Olga Makhotina <olga.makhotina@intel.com>
19850
19851 * config/i386/avx512fintrin.h (_mm_mask_sqrt_round_sd)
19852 (_mm_maskz_sqrt_round_sd, _mm_mask_sqrt_round_ss)
19853 (_mm_maskz_sqrt_round_ss): New intrinsics.
19854 (__builtin_ia32_sqrtsd_round, __builtin_ia32_sqrtss_round): Remove.
19855 (__builtin_ia32_sqrtsd_mask_round)
19856 (__builtin_ia32_sqrtss_mask_round): New builtins.
19857 * config/i386/i386-builtin.def (__builtin_ia32_sqrtsd_round)
19858 (__builtin_ia32_sqrtss_round): Remove.
19859 (__builtin_ia32_sqrtsd_mask_round)
19860 (__builtin_ia32_sqrtss_mask_round): New builtins.
19861 * config/i386/sse.md (vmsqrt<mode>2<round_name>): Renamed to ...
19862 (vmsqrt<mode>2<mask_scalar_name><round_scalar_name>): ... this.
19863 ((match_operand:VF_128 1 "vector_operand"
19864 "xBm,<round_constraint>")): Changed to ...
19865 ((match_operand:VF_128 1 "vector_operand"
19866 "xBm,<round_scalar_constraint>")): ... this.
19867 (vsqrt<ssescalarmodesuffix>\t{<round_op3>%1, %2, %0|
19868 %0, %2, %<iptr>1<round_op3>}): Changed to ...
19869 (vsqrt<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%1, %2,
19870 %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %2,
19871 %<iptr>1<round_scalar_mask_op3>}): ... this.
19872 ((set_attr "prefix" "<round_prefix>")): Changed to ...
19873 ((set_attr "prefix" "<round_scalar_prefix>")): ... this.
19874
19875 2018-02-11 Steven Munroe <munroesj@gcc.gnu.org>
19876
19877 PR target/84266
19878 * config/rs6000/mmintrin.h (_mm_cmpeq_pi32 [_ARCH_PWR9]):
19879 Cast vec_cmpeq result to correct type.
19880 * config/rs6000/mmintrin.h (_mm_cmpgt_pi32 [_ARCH_PWR9]):
19881 Cast vec_cmpgt result to correct type.
19882
19883 2018-02-11 Alexandre Oliva <aoliva@redhat.com>
19884
19885 * final.c (final_scan_insn_1): Renamed from...
19886 (final_scan_insn): ... this. New wrapper, to recover
19887 seen from the outermost call in recursive ones.
19888 * config/sparc/sparc.c (output_return): Drop seen from call.
19889 (output_sibcall): Likewise.
19890 * config/visium/visium.c (output_branch): Likewise.
19891
19892 2018-02-10 John David Anglin <danglin@gcc.gnu.org>
19893
19894 * config/pa/pa.c (hppa_profile_hook): Mark SYMBOL_REF for _mcount as
19895 function label.
19896
19897 2018-02-10 Alan Modra <amodra@gmail.com>
19898
19899 PR target/84300
19900 * config/rs6000/rs6000.md (split_stack_return): Remove (use ..).
19901 Specify LR as an input.
19902
19903 2018-02-10 Jakub Jelinek <jakub@redhat.com>
19904
19905 PR sanitizer/83987
19906 * omp-low.c (maybe_remove_omp_member_access_dummy_vars,
19907 remove_member_access_dummy_vars): New functions.
19908 (lower_omp_for, lower_omp_taskreg, lower_omp_target,
19909 lower_omp_1, execute_lower_omp): Use them.
19910
19911 PR rtl-optimization/84308
19912 * shrink-wrap.c (spread_components): Release todo vector.
19913
19914 2018-02-09 Vladimir Makarov <vmakarov@redhat.com>
19915
19916 PR rtl-optimization/57193
19917 * ira-color.c (struct allocno_color_data): Add member
19918 conflict_allocno_hard_prefs.
19919 (update_conflict_allocno_hard_prefs): New.
19920 (bucket_allocno_compare_func): Add a preference based on
19921 conflict_allocno_hard_prefs.
19922 (push_allocno_to_stack): Update conflict_allocno_hard_prefs.
19923 (color_allocnos): Remove a dead code. Initiate
19924 conflict_allocno_hard_prefs. Call update_costs_from_prefs.
19925
19926 2018-02-09 Jakub Jelinek <jakub@redhat.com>
19927
19928 PR target/84226
19929 * config/rs6000/vsx.md (p9_xxbrq_v16qi): Change input operand
19930 constraint from =wa to wa. Avoid a subreg on the output operand,
19931 instead use a pseudo and subreg it in a move.
19932 (p9_xxbrd_<mode>): Changed to ...
19933 (p9_xxbrd_v2di): ... this insn, without VSX_D iterator.
19934 (p9_xxbrd_v2df): New expander.
19935 (p9_xxbrw_<mode>): Changed to ...
19936 (p9_xxbrw_v4si): ... this insn, without VSX_W iterator.
19937 (p9_xxbrw_v4sf): New expander.
19938
19939 2018-02-09 Sebastian Perta <sebastian.perta@renesas.com>
19940
19941 * config/rx/rx.md (movsicc): Update expander to be matched by GCC.
19942
19943 2018-02-09 Peter Bergner <bergner@vnet.ibm.com>
19944
19945 PR target/83926
19946 * config/rs6000/vsx.md (vsx_mul_v2di): Handle generating a 64-bit
19947 multiply in 32-bit mode.
19948 (vsx_div_v2di): Handle generating a 64-bit signed divide in 32-bit mode.
19949 (vsx_udiv_v2di): Handle generating a 64-bit unsigned divide in 32-bit
19950 mode.
19951
19952 2018-02-09 Sebastian Perta <sebastian.perta@renesas.com>
19953
19954 * config/rx/constraints.md (CALL_OP_SYMBOL_REF): Added new constraint
19955 to allow or block "symbol_ref" depending on the value of TARGET_JSR.
19956 * config/rx/rx.md (call_internal): Use CALL_OP_SYMBOL_REF.
19957 * config/rx/rx.md (call_value_internal): Use CALL_OP_SYMBOL_REF.
19958
19959 2018-02-09 Pierre-Marie de Rodat <derodat@adacore.com>
19960
19961 PR lto/84213
19962 * dwarf2out.c (is_trivial_indirect_ref): New function.
19963 (dwarf2out_late_global_decl): Do not generate a location
19964 attribute for variables that have a non-trivial DECL_VALUE_EXPR
19965 and that are not defined in the current unit.
19966
19967 2018-02-09 Eric Botcazou <ebotcazou@adacore.com>
19968
19969 * optabs.c (prepare_cmp_insn): Try harder to emit a direct comparison
19970 instead of a libcall for UNORDERED.
19971
19972 2018-02-09 Tamar Christina <tamar.christina@arm.com>
19973
19974 PR target/82641
19975 * config/arm/arm-c.c (arm_cpu_builtins): Un-define __ARM_FEATURE_LDREX,
19976 __ARM_ARCH_PROFILE, __ARM_ARCH_ISA_THUMB, __ARM_FP and __ARM_NEON_FP.
19977
19978 2018-02-09 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
19979
19980 PR target/PR84295
19981 * config/s390/s390.c (s390_set_current_function): Invoke
19982 s390_indirect_branch_settings also if fndecl didn't change.
19983
19984 2018-02-09 Alexandre Oliva <aoliva@redhat.com>
19985
19986 * config/rs6000/rs6000.md (blockage): Set length to zero.
19987
19988 2018-02-09 Eric Botcazou <ebotcazou@adacore.com>
19989
19990 * expr.c (optimize_bitfield_assignment_op): Remove obsolete assertion.
19991
19992 2018-02-09 Jakub Jelinek <jakub@redhat.com>
19993
19994 PR sanitizer/84285
19995 * gcc.c (STATIC_LIBASAN_LIBS, STATIC_LIBTSAN_LIBS,
19996 STATIC_LIBLSAN_LIBS, STATIC_LIBUBSAN_LIBS): Handle -static like
19997 -static-lib*san.
19998
19999 PR debug/84252
20000 * var-tracking.c (vt_add_function_parameter): Punt for non-onepart
20001 PARALLEL incoming that failed vt_get_decl_and_offset check.
20002
20003 PR middle-end/84237
20004 * output.h (bss_initializer_p): Add NAMED argument, defaulted to false.
20005 * varasm.c (bss_initializer_p): Add NAMED argument, if true, ignore
20006 TREE_READONLY bit.
20007 (get_variable_section): For decls in named .bss* sections pass true as
20008 second argument to bss_initializer_p.
20009
20010 2018-02-09 Marek Polacek <polacek@redhat.com>
20011 Jakub Jelinek <jakub@redhat.com>
20012
20013 PR c++/83659
20014 * fold-const.c (fold_indirect_ref_1): Use VECTOR_TYPE_P macro.
20015 Formatting fixes. Verify first that tree_fits_poly_int64_p (op01).
20016 Sync some changes from cxx_fold_indirect_ref.
20017
20018 2018-02-09 Alexandre Oliva <aoliva@redhat.com>
20019
20020 * cfgexpand.c (expand_gimple_basic_block): Handle inline entry
20021 markers.
20022 * dwarf2out.c (dwarf2_debug_hooks): Enable inline_entry hook.
20023 (BLOCK_INLINE_ENTRY_LABEL): New.
20024 (dwarf2out_var_location): Disregard inline entry markers.
20025 (inline_entry_data): New struct.
20026 (inline_entry_data_hasher): New hashtable type.
20027 (inline_entry_data_hasher::hash): New.
20028 (inline_entry_data_hasher::equal): New.
20029 (inline_entry_data_table): New variable.
20030 (add_high_low_attributes): Add DW_AT_entry_pc and
20031 DW_AT_GNU_entry_view attributes if a pending entry is found
20032 in inline_entry_data_table. Add old entry_pc attribute only
20033 if debug nonbinding markers are disabled.
20034 (gen_inlined_subroutine_die): Set BLOCK_DIE if nonbinding
20035 markers are enabled.
20036 (block_within_block_p, dwarf2out_inline_entry): New.
20037 (dwarf2out_finish): Check that no entries remained in
20038 inline_entry_data_table.
20039 * final.c (reemit_insn_block_notes): Handle inline entry notes.
20040 (final_scan_insn, notice_source_line): Likewise.
20041 (rest_of_clean_state): Skip inline entry markers.
20042 * gimple-pretty-print.c (dump_gimple_debug): Handle inline entry
20043 markers.
20044 * gimple.c (gimple_build_debug_inline_entry): New.
20045 * gimple.h (enum gimple_debug_subcode): Add
20046 GIMPLE_DEBUG_INLINE_ENTRY.
20047 (gimple_build_debug_inline_entry): Declare.
20048 (gimple_debug_inline_entry_p): New.
20049 (gimple_debug_nonbind_marker_p): Adjust.
20050 * insn-notes.def (INLINE_ENTRY): New.
20051 * print-rtl.c (rtx_writer::print_rtx_operand_code_0): Handle
20052 inline entry marker notes.
20053 (print_insn): Likewise.
20054 * rtl.h (NOTE_MARKER_P): Add INLINE_ENTRY support.
20055 (INSN_DEBUG_MARKER_KIND): Likewise.
20056 (GEN_RTX_DEBUG_MARKER_INLINE_ENTRY_PAT): New.
20057 * tree-inline.c (expand_call_inline): Build and insert
20058 debug_inline_entry stmt.
20059 * tree-ssa-live.c (remove_unused_scope_block_p): Preserve
20060 inline entry blocks early, if nonbind markers are enabled.
20061 (dump_scope_block): Dump fragment info.
20062 * var-tracking.c (reemit_marker_as_note): Handle inline entry note.
20063 * doc/gimple.texi (gimple_debug_inline_entry_p): New.
20064 (gimple_build_debug_inline_entry): New.
20065 * doc/invoke.texi (gstatement-frontiers, gno-statement-frontiers):
20066 Enable/disable inline entry points too.
20067 * doc/rtl.texi (NOTE_INSN_INLINE_ENTRY): New.
20068 (DEBUG_INSN): Describe inline entry markers.
20069
20070 * common.opt (gvariable-location-views): New.
20071 (gvariable-location-views=incompat5): New.
20072 * config.in: Rebuilt.
20073 * configure: Rebuilt.
20074 * configure.ac: Test assembler for view support.
20075 * dwarf2asm.c (dw2_asm_output_symname_uleb128): New.
20076 * dwarf2asm.h (dw2_asm_output_symname_uleb128): Declare.
20077 * dwarf2out.c (var_loc_view): New typedef.
20078 (struct dw_loc_list_struct): Add vl_symbol, vbegin, vend.
20079 (dwarf2out_locviews_in_attribute): New.
20080 (dwarf2out_locviews_in_loclist): New.
20081 (dw_val_equal_p): Compare val_view_list of dw_val_class_view_lists.
20082 (enum dw_line_info_opcode): Add LI_adv_address.
20083 (struct dw_line_info_table): Add view.
20084 (RESET_NEXT_VIEW, RESETTING_VIEW_P): New macros.
20085 (DWARF2_ASM_VIEW_DEBUG_INFO): Define default.
20086 (zero_view_p): New variable.
20087 (ZERO_VIEW_P): New macro.
20088 (output_asm_line_debug_info): New.
20089 (struct var_loc_node): Add view.
20090 (add_AT_view_list, AT_loc_list): New.
20091 (add_var_loc_to_decl): Add view param. Test it against last.
20092 (new_loc_list): Add view params. Record them.
20093 (AT_loc_list_ptr): Handle loc and view lists.
20094 (view_list_to_loc_list_val_node): New.
20095 (print_dw_val): Handle dw_val_class_view_list.
20096 (size_of_die): Likewise.
20097 (value_format): Likewise.
20098 (loc_list_has_views): New.
20099 (gen_llsym): Set vl_symbol too.
20100 (maybe_gen_llsym, skip_loc_list_entry): New.
20101 (dwarf2out_maybe_output_loclist_view_pair): New.
20102 (output_loc_list): Output view list or entries too.
20103 (output_view_list_offset): New.
20104 (output_die): Handle dw_val_class_view_list.
20105 (output_dwarf_version): New.
20106 (output_compilation_unit_header): Use it.
20107 (output_skeleton_debug_sections): Likewise.
20108 (output_rnglists, output_line_info): Likewise.
20109 (output_pubnames, output_aranges): Update version comments.
20110 (output_one_line_info_table): Output view numbers in asm comments.
20111 (dw_loc_list): Determine current endview, pass it to new_loc_list.
20112 Call maybe_gen_llsym.
20113 (loc_list_from_tree_1): Adjust.
20114 (add_AT_location_description): Create view list attribute if
20115 needed, check it's absent otherwise.
20116 (convert_cfa_to_fb_loc_list): Adjust.
20117 (maybe_emit_file): Call output_asm_line_debug_info for test.
20118 (dwarf2out_var_location): Reset views as needed. Precompute
20119 add_var_loc_to_decl args. Call get_attr_min_length only if we have the
20120 attribute. Set view.
20121 (new_line_info_table): Reset next view.
20122 (set_cur_line_info_table): Call output_asm_line_debug_info for test.
20123 (dwarf2out_source_line): Likewise. Output view resets and labels to
20124 the assembler, or select appropriate line info opcodes.
20125 (prune_unused_types_walk_attribs): Handle dw_val_class_view_list.
20126 (optimize_string_length): Catch it. Adjust.
20127 (resolve_addr): Copy vl_symbol along with ll_symbol. Handle
20128 dw_val_class_view_list, and remove it if no longer needed.
20129 (hash_loc_list): Hash view numbers.
20130 (loc_list_hasher::equal): Compare them.
20131 (optimize_location_lists): Check whether a view list symbol is
20132 needed, and whether the locview attribute is present, and
20133 whether they match. Remove the locview attribute if no longer
20134 needed.
20135 (index_location_lists): Call skip_loc_list_entry for test.
20136 (dwarf2out_finish): Call output_asm_line_debug_info for test.
20137 Use output_dwarf_version.
20138 * dwarf2out.h (enum dw_val_class): Add dw_val_class_view_list.
20139 (struct dw_val_node): Add val_view_list.
20140 * final.c (SEEN_NEXT_VIEW): New.
20141 (set_next_view_needed): New.
20142 (clear_next_view_needed): New.
20143 (maybe_output_next_view): New.
20144 (final_start_function): Rename to...
20145 (final_start_function_1): ... this. Take pointer to FIRST,
20146 add SEEN parameter. Emit param bindings in the initial view.
20147 (final_start_function): Reintroduce SEEN-less interface.
20148 (final): Rename to...
20149 (final_1): ... this. Take SEEN parameter. Output final pending
20150 next view at the end.
20151 (final): Reintroduce seen-less interface.
20152 (final_scan_insn): Output pending next view before switching
20153 sections or ending a block. Mark the next view as needed when
20154 outputting variable locations. Notify debug backend of section
20155 changes, and of location view changes.
20156 (rest_of_handle_final): Adjust.
20157 * toplev.c (process_options): Autodetect value for debug variable
20158 location views option. Warn on incompat5 without -gdwarf-5.
20159 * doc/invoke.texi (gvariable-location-views): New.
20160 (gvariable-location-views=incompat5): New.
20161 (gno-variable-location-views): New.
20162
20163 2018-02-08 David Malcolm <dmalcolm@redhat.com>
20164
20165 PR tree-optimization/84136
20166 * tree-cfg.c (find_taken_edge_computed_goto): Remove assertion
20167 that the result of find_edge is non-NULL.
20168
20169 2018-02-08 Sergey Shalnov <sergey.shalnov@intel.com>
20170
20171 PR target/83008
20172 * config/i386/x86-tune-costs.h (skylake_cost): Fix cost of
20173 storing integer register in SImode. Fix cost of 256 and 512
20174 byte aligned SSE register store.
20175
20176 2018-02-08 Sergey Shalnov <sergey.shalnov@intel.com>
20177
20178 * config/i386/i386.c (ix86_multiplication_cost): Fix
20179 multiplication cost for TARGET_AVX512DQ.
20180
20181 2018-02-08 Marek Polacek <polacek@redhat.com>
20182
20183 PR tree-optimization/84238
20184 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Verify the result of
20185 get_range_strlen.
20186
20187 2018-02-08 Richard Sandiford <richard.sandiford@linaro.org>
20188
20189 PR tree-optimization/84265
20190 * tree-vect-stmts.c (vectorizable_store): Don't treat
20191 VMAT_CONTIGUOUS accesses as grouped.
20192 (vectorizable_load): Likewise.
20193
20194 2018-02-08 Richard Sandiford <richard.sandiford@linaro.org>
20195
20196 PR tree-optimization/81635
20197 * wide-int.h (wi::round_down_for_mask, wi::round_up_for_mask): Declare.
20198 * wide-int.cc (wi::round_down_for_mask, wi::round_up_for_mask)
20199 (test_round_for_mask): New functions.
20200 (wide_int_cc_tests): Call test_round_for_mask.
20201 * tree-vrp.h (intersect_range_with_nonzero_bits): Declare.
20202 * tree-vrp.c (intersect_range_with_nonzero_bits): New function.
20203 * tree-data-ref.c (split_constant_offset_1): Use it to refine the
20204 range returned by get_range_info.
20205
20206 2018-02-08 Jan Hubicka <hubicka@ucw.cz>
20207
20208 PR ipa/81360
20209 * cgraph.h (symtab_node::output_to_lto_symbol_table_p): Declare
20210 * symtab.c: Include builtins.h
20211 (symtab_node::output_to_lto_symbol_table_p): Move here
20212 from lto-streamer-out.c:output_symbol_p.
20213 * lto-streamer-out.c (write_symbol): Turn early exit to assert.
20214 (output_symbol_p): Move all logic to symtab.c
20215 (produce_symtab): Update.
20216
20217 2018-02-08 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
20218
20219 * config/s390/s390-opts.h (enum indirect_branch): Define.
20220 * config/s390/s390-protos.h (s390_return_addr_from_memory)
20221 (s390_indirect_branch_via_thunk)
20222 (s390_indirect_branch_via_inline_thunk): Add function prototypes.
20223 (enum s390_indirect_branch_type): Define.
20224 * config/s390/s390.c (struct s390_frame_layout, struct
20225 machine_function): Remove.
20226 (indirect_branch_prez10thunk_mask, indirect_branch_z10thunk_mask)
20227 (indirect_branch_table_label_no, indirect_branch_table_name):
20228 Define variables.
20229 (INDIRECT_BRANCH_NUM_OPTIONS): Define macro.
20230 (enum s390_indirect_branch_option): Define.
20231 (s390_return_addr_from_memory): New function.
20232 (s390_handle_string_attribute): New function.
20233 (s390_attribute_table): Add new attribute handler.
20234 (s390_execute_label): Handle UNSPEC_EXECUTE_JUMP patterns.
20235 (s390_indirect_branch_via_thunk): New function.
20236 (s390_indirect_branch_via_inline_thunk): New function.
20237 (s390_function_ok_for_sibcall): When jumping via thunk disallow
20238 sibling call optimization for non z10 compiles.
20239 (s390_emit_call): Force indirect branch target to be a single
20240 register. Add r1 clobber for non-z10 compiles.
20241 (s390_emit_epilogue): Emit return jump via return_use expander.
20242 (s390_reorg): Handle JUMP_INSNs as execute targets.
20243 (s390_option_override_internal): Perform validity checks for the
20244 new command line options.
20245 (s390_indirect_branch_attrvalue): New function.
20246 (s390_indirect_branch_settings): New function.
20247 (s390_set_current_function): Invoke s390_indirect_branch_settings.
20248 (s390_output_indirect_thunk_function): New function.
20249 (s390_code_end): Implement target hook.
20250 (s390_case_values_threshold): Implement target hook.
20251 (TARGET_ASM_CODE_END, TARGET_CASE_VALUES_THRESHOLD): Define target
20252 macros.
20253 * config/s390/s390.h (struct s390_frame_layout)
20254 (struct machine_function): Move here from s390.c.
20255 (TARGET_INDIRECT_BRANCH_NOBP_RET)
20256 (TARGET_INDIRECT_BRANCH_NOBP_JUMP)
20257 (TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK)
20258 (TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK)
20259 (TARGET_INDIRECT_BRANCH_NOBP_CALL)
20260 (TARGET_DEFAULT_INDIRECT_BRANCH_TABLE)
20261 (TARGET_INDIRECT_BRANCH_THUNK_NAME_EXRL)
20262 (TARGET_INDIRECT_BRANCH_THUNK_NAME_EX)
20263 (TARGET_INDIRECT_BRANCH_TABLE): Define macros.
20264 * config/s390/s390.md (UNSPEC_EXECUTE_JUMP)
20265 (INDIRECT_BRANCH_THUNK_REGNUM): Define constants.
20266 (mnemonic attribute): Add values which aren't recognized
20267 automatically.
20268 ("*cjump_long", "*icjump_long", "*basr", "*basr_r"): Disable
20269 pattern for branch conversion. Fix mnemonic attribute.
20270 ("*c<code>", "*sibcall_br", "*sibcall_value_br", "*return"): Emit
20271 indirect branch via thunk if requested.
20272 ("indirect_jump", "<code>"): Expand patterns for branch conversion.
20273 ("*indirect_jump"): Disable for branch conversion using out of
20274 line thunks.
20275 ("indirect_jump_via_thunk<mode>_z10")
20276 ("indirect_jump_via_thunk<mode>")
20277 ("indirect_jump_via_inlinethunk<mode>_z10")
20278 ("indirect_jump_via_inlinethunk<mode>", "*casesi_jump")
20279 ("casesi_jump_via_thunk<mode>_z10", "casesi_jump_via_thunk<mode>")
20280 ("casesi_jump_via_inlinethunk<mode>_z10")
20281 ("casesi_jump_via_inlinethunk<mode>", "*basr_via_thunk<mode>_z10")
20282 ("*basr_via_thunk<mode>", "*basr_r_via_thunk_z10")
20283 ("*basr_r_via_thunk", "return<mode>_prez10"): New pattern.
20284 ("*indirect2_jump"): Disable for branch conversion.
20285 ("casesi_jump"): Turn into expander and expand patterns for branch
20286 conversion.
20287 ("return_use"): New expander.
20288 ("*return"): Emit return via thunk and rename it to ...
20289 ("*return<mode>"): ... this one.
20290 * config/s390/s390.opt: Add new options and and enum for the
20291 option values.
20292
20293 2018-02-08 Richard Sandiford <richard.sandiford@linaro.org>
20294
20295 * lra-constraints.c (match_reload): Unconditionally use
20296 gen_lowpart_SUBREG, rather than selecting between that
20297 and equivalent gen_rtx_SUBREG code.
20298
20299 2018-02-08 Richard Biener <rguenther@suse.de>
20300
20301 PR tree-optimization/84233
20302 * tree-ssa-phiprop.c (propagate_with_phi): Use separate
20303 changed flag instead of boguously re-using phi_inserted.
20304
20305 2018-02-08 Martin Jambor <mjambor@suse.cz>
20306
20307 * hsa-gen.c (get_symbol_for_decl): Set program allocation for
20308 static local variables.
20309
20310 2018-02-08 Richard Biener <rguenther@suse.de>
20311
20312 PR tree-optimization/84278
20313 * tree-vect-stmts.c (vectorizable_store): When looking for
20314 smaller vector types to perform grouped strided loads/stores
20315 make sure the mode is supported by the target.
20316 (vectorizable_load): Likewise.
20317
20318 2018-02-08 Wilco Dijkstra <wdijkstr@arm.com>
20319
20320 * config/aarch64/aarch64.c (aarch64_components_for_bb):
20321 Increase LDP/STP opportunities by adding adjacent callee-saves.
20322
20323 2018-02-08 Wilco Dijkstra <wdijkstr@arm.com>
20324
20325 PR rtl-optimization/84068
20326 PR rtl-optimization/83459
20327 * haifa-sched.c (rank_for_schedule): Fix SCHED_PRESSURE_MODEL sorting.
20328
20329 2018-02-08 Aldy Hernandez <aldyh@redhat.com>
20330
20331 PR tree-optimization/84224
20332 * gimple-ssa-warn-alloca.c (pass_walloca::execute): Remove assert.
20333 * calls.c (gimple_alloca_call_p): Only return TRUE when we have
20334 non-zero arguments.
20335
20336 2018-02-07 Iain Sandoe <iain@codesourcery.com>
20337
20338 PR target/84113
20339 * config/rs6000/altivec.md (*restore_world): Remove LR use.
20340 * config/rs6000/predicates.md (restore_world_operation): Adjust op
20341 count, remove one USE.
20342
20343 2018-02-07 Michael Meissner <meissner@linux.vnet.ibm.com>
20344
20345 * doc/install.texi (Configuration): Document the
20346 --with-long-double-format={ibm,ieee} PowerPC configuration
20347 options.
20348
20349 PR target/84154
20350 * config/rs6000/rs6000.md (fix_trunc<SFDF:mode><QHI:mode>2):
20351 Convert from define_expand to be define_insn_and_split. Rework
20352 float/double/_Float128 conversions to QI/HI/SImode to work with
20353 both ISA 2.07 (power8) or ISA 3.0 (power9). Fix regression where
20354 conversions to QI/HImode types did a store and then a load to
20355 truncate the value. For conversions to VSX registers, don't split
20356 the insn, instead emit the code directly. Use the code iterator
20357 any_fix to combine signed and unsigned conversions.
20358 (fix<uns>_trunc<SFDF:mode>si2_p8): Likewise.
20359 (fixuns_trunc<SFDF:mode><QHI:mode>2): Likewise.
20360 (fix_trunc<IEEE128:mode><QHI:mode>2): Likewise.
20361 (fix<uns>_trunc<SFDF:mode><QHI:mode>2): Likewise.
20362 (fix_<mode>di2_hw): Likewise.
20363 (fixuns_<mode>di2_hw): Likewise.
20364 (fix_<mode>si2_hw): Likewise.
20365 (fixuns_<mode>si2_hw): Likewise.
20366 (fix<uns>_<IEEE128:mode><SDI:mode>2_hw): Likewise.
20367 (fix<uns>_trunc<IEEE128:mode><QHI:mode>2): Likewise.
20368 (fctiw<u>z_<mode>_smallint): Rename fctiw<u>z_<mode>_smallint to
20369 fix<uns>_trunc<SFDF:mode>si2_p8.
20370 (fix_trunc<SFDF:mode><QHI:mode>2_internal): Delete, no longer used.
20371 (fixuns_trunc<SFDF:mode><QHI:mode>2_internal): Likewise.
20372 (fix<uns>_<mode>_mem): Likewise.
20373 (fctiw<u>z_<mode>_mem): Likewise.
20374 (fix<uns>_<mode>_mem): Likewise.
20375 (fix<uns>_trunc<SFDF:mode><QHSI:mode>2_mem): On ISA 3.0, prevent
20376 the register allocator from doing a direct move to the GPRs to do
20377 a store, and instead use the ISA 3.0 store byte/half-word from
20378 vector register instruction. For IEEE 128-bit floating point,
20379 also optimize stores of 32-bit ints.
20380 (fix<uns>_trunc<IEEE128:mode><QHSI:mode>2_mem): Likewise.
20381
20382 2018-02-07 Alan Hayward <alan.hayward@arm.com>
20383
20384 * genextract.c (push_pathstr_operand): New function to support
20385 [a-zA-Z].
20386 (walk_rtx): Call push_pathstr_operand.
20387 (print_path): Support [a-zA-Z].
20388
20389 2018-02-07 Richard Biener <rguenther@suse.de>
20390
20391 PR tree-optimization/84037
20392 * tree-vectorizer.h (struct _loop_vec_info): Add ivexpr_map member.
20393 (cse_and_gimplify_to_preheader): Declare.
20394 (vect_get_place_in_interleaving_chain): Likewise.
20395 * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
20396 ivexpr_map.
20397 (_loop_vec_info::~_loop_vec_info): Delete it.
20398 (cse_and_gimplify_to_preheader): New function.
20399 * tree-vect-slp.c (vect_get_place_in_interleaving_chain): Export.
20400 * tree-vect-stmts.c (vectorizable_store): CSE base and steps.
20401 (vectorizable_load): Likewise. For grouped stores always base
20402 the IV on the first element.
20403 * tree-vect-loop-manip.c (vect_loop_versioning): Unshare versioning
20404 condition before gimplifying.
20405
20406 2018-02-07 Jakub Jelinek <jakub@redhat.com>
20407
20408 * tree-eh.c (operation_could_trap_helper_p): Ignore honor_trapv for
20409 *DIV_EXPR and *MOD_EXPR.
20410
20411 2018-02-07 H.J. Lu <hongjiu.lu@intel.com>
20412
20413 PR target/84248
20414 * config/i386/i386.c (ix86_option_override_internal): Mask out
20415 the CF_SET bit when checking -fcf-protection.
20416
20417 2018-02-07 Tom de Vries <tom@codesourcery.com>
20418
20419 PR libgomp/84217
20420 * omp-expand.c (expand_oacc_collapse_init): Ensure diff_type is large
20421 enough.
20422
20423 2018-02-07 Richard Biener <rguenther@suse.de>
20424
20425 PR tree-optimization/84204
20426 * tree-chrec.c (chrec_fold_plus_1): Remove size limiting in
20427 this place.
20428
20429 PR tree-optimization/84205
20430 * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Also
20431 special-case isl_ast_op_zdiv_r.
20432
20433 PR tree-optimization/84223
20434 * graphite-scop-detection.c (gather_bbs::before_dom_children):
20435 Only add conditions from within the region.
20436 (gather_bbs::after_dom_children): Adjust.
20437
20438 2018-02-07 Georg-Johann Lay <avr@gjlay.de>
20439
20440 PR target/84209
20441 * config/avr/avr.h (GENERAL_REGNO_P, GENERAL_REG_P): New macros.
20442 * config/avr/avr.md: Only post-reload split REG-REG moves if
20443 either register is GENERAL_REG_P.
20444
20445 2018-02-07 Jakub Jelinek <jakub@redhat.com>
20446
20447 PR tree-optimization/84235
20448 * tree-ssa-scopedtables.c
20449 (avail_exprs_stack::simplify_binary_operation): Fir MINUS_EXPR, punt
20450 if the subtraction is performed in floating point type where NaNs are
20451 honored. For *DIV_EXPR, punt for ALL_FRACT_MODE_Ps where we can't
20452 build 1. Formatting fix.
20453
20454 2018-02-06 Jakub Jelinek <jakub@redhat.com>
20455
20456 PR target/84146
20457 * config/i386/i386.c (rest_of_insert_endbranch): Only skip
20458 NOTE_INSN_CALL_ARG_LOCATION after a call, not anything else,
20459 and skip it regardless of bb boundaries. Use CALL_P macro,
20460 don't test INSN_P (insn) together with CALL_P or JUMP_P check
20461 unnecessarily, formatting fix.
20462
20463 2018-02-06 Michael Collison <michael.collison@arm.com>
20464
20465 * config/arm/thumb2.md:
20466 (*thumb2_mov_negscc): Split only if TARGET_THUMB2 && !arm_restrict_it.
20467 (*thumb_mov_notscc): Ditto.
20468
20469 2018-02-06 Michael Meissner <meissner@linux.vnet.ibm.com>
20470
20471 PR target/84154
20472 * config/rs6000/rs6000.md (su code attribute): Use "u" for
20473 unsigned_fix, not "s".
20474
20475 2018-02-06 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
20476
20477 * configure.ac (gcc_fn_eh_frame_ro): New function.
20478 (gcc_cv_as_cfi_directive): Check both 32 and 64-bit assembler for
20479 correct .eh_frame permissions.
20480 * configure: Regenerate.
20481
20482 2018-02-06 Andrew Jenner <andrew@codeourcery.com>
20483
20484 * doc/invoke.texi: Add section for the PowerPC SPE backend. Remove
20485 irrelevant options.
20486
20487 2018-02-06 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
20488
20489 * config/rs6000/rs6000.c (rs6000_option_override_internal):
20490 Display warning message for -mno-speculate-indirect-jumps.
20491
20492 2018-02-06 Andrew Jenner <andrew@codesourcery.com>
20493
20494 * config/powerpcspe/powerpcspe.opt: (msimple-fpu, mfpu) Add
20495 Undocumented.
20496 * config/powerpcspe/sysv4.opt (mbit-align): Likewise.
20497
20498 2018-02-06 Aldy Hernandez <aldyh@redhat.com>
20499
20500 PR tree-optimization/84225
20501 * tree-eh.c (find_trapping_overflow): Only call
20502 operation_no_trapping_overflow when ANY_INTEGRAL_TYPE_P.
20503
20504 2018-02-06 Igor Tsimbalist <igor.v.tsimbalist@intel.com>
20505
20506 PR target/84145
20507 * config/i386/i386.c: Reimplement the check of possible options
20508 -mibt/-mshstk conbination. Change error messages.
20509 * doc/invoke.texi: Fix a typo: remove extra '='.
20510
20511 2018-02-06 Marek Polacek <polacek@redhat.com>
20512
20513 PR tree-optimization/84228
20514 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Skip debug statements.
20515
20516 2018-02-06 Tamar Christina <tamar.christina@arm.com>
20517
20518 PR target/82641
20519 * config/arm/arm.c (arm_print_asm_arch_directives): Record already
20520 emitted arch directives.
20521 * config/arm/arm-c.c (arm_cpu_builtins): Undefine __ARM_ARCH and
20522 __ARM_FEATURE_COPROC before changing architectures.
20523
20524 2018-02-06 Richard Biener <rguenther@suse.de>
20525
20526 * config/i386/i386.c (print_reg): Fix typo.
20527 (ix86_loop_unroll_adjust): Do not unroll beyond the original nunroll.
20528
20529 2018-02-06 Eric Botcazou <ebotcazou@adacore.com>
20530
20531 * configure: Regenerate.
20532
20533 2018-02-05 Martin Sebor <msebor@redhat.com>
20534
20535 PR tree-optimization/83369
20536 * tree-ssa-ccp.c (pass_post_ipa_warn::execute): Use %G to print
20537 inlining context.
20538
20539 2018-02-05 Martin Liska <mliska@suse.cz>
20540
20541 * doc/invoke.texi: Cherry-pick upstream r323995.
20542
20543 2018-02-05 Richard Sandiford <richard.sandiford@linaro.org>
20544
20545 * ira.c (ira_init_register_move_cost): Adjust comment.
20546
20547 2018-02-05 Martin Liska <mliska@suse.cz>
20548
20549 PR gcov-profile/84137
20550 * doc/gcov.texi: Fix typo in documentation.
20551
20552 2018-02-05 Martin Liska <mliska@suse.cz>
20553
20554 PR gcov-profile/83879
20555 * doc/gcov.texi: Document necessity of --dynamic-list-data when
20556 using dlopen functionality.
20557
20558 2018-02-05 Olga Makhotina <olga.makhotina@intel.com>
20559
20560 * config/i386/avx512dqintrin.h (_mm_mask_range_sd, _mm_maskz_range_sd,
20561 _mm_mask_range_round_sd, _mm_maskz_range_round_sd, _mm_mask_range_ss,
20562 _mm_maskz_range_ss, _mm_mask_range_round_ss,
20563 _mm_maskz_range_round_ss): New intrinsics.
20564 (__builtin_ia32_rangesd128_round)
20565 (__builtin_ia32_rangess128_round): Remove.
20566 (__builtin_ia32_rangesd128_mask_round,
20567 __builtin_ia32_rangess128_mask_round): New builtins.
20568 * config/i386/i386-builtin.def (__builtin_ia32_rangesd128_round,
20569 __builtin_ia32_rangess128_round): Remove.
20570 (__builtin_ia32_rangesd128_mask_round,
20571 __builtin_ia32_rangess128_mask_round): New builtins.
20572 * config/i386/sse.md (ranges<mode><round_saeonly_name>): Renamed to ...
20573 (ranges<mode><mask_scalar_name><round_saeonly_scalar_name>): ... this.
20574 ((match_operand:VF_128 2 "<round_saeonly_nimm_predicate>"
20575 "<round_saeonly_constraint>")): Changed to ...
20576 ((match_operand:VF_128 2 "<round_saeonly_scalar_nimm_predicate>"
20577 "<round_saeonly_scalar_constraint>")): ... this.
20578 ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_op4>%2, %1, %0|
20579 %0, %1, %2<round_saeonly_op4>, %3}"): Changed to ...
20580 ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_scalar_mask_op4>%2,
20581 %1, %0<mask_scalar_operand4>|%0<mask_scalar_operand4>, %1,
20582 %2<round_saeonly_scalar_mask_op4>, %3}"): ... this.
20583
20584 2018-02-02 Andrew Jenner <andrew@codesourcery.com>
20585
20586 * config/powerpcspe/powerpcspe.opt: Add Undocumented to irrelevant
20587 options.
20588 * config/powerpcspe/powerpcspe-tables.opt (rs6000_cpu_opt_value):
20589 Remove all values except native, 8540 and 8548.
20590
20591 2018-02-02 H.J. Lu <hongjiu.lu@intel.com>
20592
20593 * config/i386/i386.c (ix86_output_function_return): Pass
20594 INVALID_REGNUM, instead of -1, as invalid register number to
20595 indirect_thunk_name and output_indirect_thunk.
20596
20597 2018-02-02 Julia Koval <julia.koval@intel.com>
20598
20599 * config.gcc: Add -march=icelake.
20600 * config/i386/driver-i386.c (host_detect_local_cpu): Detect icelake.
20601 * config/i386/i386-c.c (ix86_target_macros_internal): Handle icelake.
20602 * config/i386/i386.c (processor_costs): Add m_ICELAKE.
20603 (PTA_ICELAKE, PTA_AVX512VNNI, PTA_GFNI, PTA_VAES, PTA_AVX512VBMI2,
20604 PTA_VPCLMULQDQ, PTA_RDPID, PTA_AVX512BITALG): New.
20605 (processor_target_table): Add icelake.
20606 (ix86_option_override_internal): Handle new PTAs.
20607 (get_builtin_code_for_version): Handle icelake.
20608 (M_INTEL_COREI7_ICELAKE): New.
20609 (fold_builtin_cpu): Handle icelake.
20610 * config/i386/i386.h (TARGET_ICELAKE, PROCESSOR_ICELAKE): New.
20611 * doc/invoke.texi: Add -march=icelake.
20612
20613 2018-02-02 Julia Koval <julia.koval@intel.com>
20614
20615 * config/i386/i386.c (ix86_option_override_internal): Change flags type
20616 to wide_int_bitmask.
20617 * wide-int-bitmask.h: New.
20618
20619 2018-02-02 Igor Tsimbalist <igor.v.tsimbalist@intel.com>
20620
20621 PR target/84066
20622 * config/i386/i386.md: Replace Pmode with word_mode in
20623 builtin_setjmp_setup and builtin_longjmp to support x32.
20624
20625 2018-02-01 Peter Bergner <bergner@vnet.ibm.com>
20626
20627 PR target/56010
20628 PR target/83743
20629 * config/rs6000/driver-rs6000.c: #include "diagnostic.h".
20630 #include "opts.h".
20631 (rs6000_supported_cpu_names): New static variable.
20632 (linux_cpu_translation_table): Likewise.
20633 (elf_platform) <cpu>: Define new static variable and use it.
20634 Translate kernel AT_PLATFORM name to canonical name if needed.
20635 Error if platform name is unknown.
20636
20637 2018-02-01 Aldy Hernandez <aldyh@redhat.com>
20638
20639 PR target/84089
20640 * config/pa/predicates.md (base14_operand): Handle E_VOIDmode.
20641
20642 2018-02-01 Jeff Law <law@redhat.com>
20643
20644 PR target/84128
20645 * config/i386/i386.c (release_scratch_register_on_entry): Add new
20646 OFFSET and RELEASE_VIA_POP arguments. Use SP+OFFSET to restore
20647 the scratch if RELEASE_VIA_POP is false.
20648 (ix86_adjust_stack_and_probe_stack_clash): Un-constify SIZE.
20649 If we have to save a temporary register, decrement SIZE appropriately.
20650 Pass new arguments to release_scratch_register_on_entry.
20651 (ix86_adjust_stack_and_probe): Likewise.
20652 (ix86_emit_probe_stack_range): Pass new arguments to
20653 release_scratch_register_on_entry.
20654
20655 2018-02-01 Uros Bizjak <ubizjak@gmail.com>
20656
20657 PR rtl-optimization/84157
20658 * combine.c (change_zero_ext): Use REG_P predicate in
20659 front of HARD_REGISTER_P predicate.
20660
20661 2018-02-01 Georg-Johann Lay <avr@gjlay.de>
20662
20663 * config/avr/avr.c (avr_option_override): Move disabling of
20664 -fdelete-null-pointer-checks to...
20665 * common/config/avr/avr-common.c (avr_option_optimization_table):
20666 ...here.
20667
20668 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
20669
20670 PR tree-optimization/81635
20671 * tree-data-ref.c (split_constant_offset_1): For types that
20672 wrap on overflow, try to use range info to prove that wrapping
20673 cannot occur.
20674
20675 2018-02-01 Renlin Li <renlin.li@arm.com>
20676
20677 PR target/83370
20678 * config/aarch64/aarch64.c (aarch64_class_max_nregs): Handle
20679 TAILCALL_ADDR_REGS.
20680 (aarch64_register_move_cost): Likewise.
20681 * config/aarch64/aarch64.h (reg_class): Rename CALLER_SAVE_REGS to
20682 TAILCALL_ADDR_REGS.
20683 (REG_CLASS_NAMES): Likewise.
20684 (REG_CLASS_CONTENTS): Rename CALLER_SAVE_REGS to
20685 TAILCALL_ADDR_REGS. Remove IP registers.
20686 * config/aarch64/aarch64.md (Ucs): Update register constraint.
20687
20688 2018-02-01 Richard Biener <rguenther@suse.de>
20689
20690 * domwalk.h (dom_walker::dom_walker): Add additional constructor
20691 for specifying RPO order and allow NULL for that.
20692 * domwalk.c (dom_walker::dom_walker): Likewise.
20693 (dom_walker::walk): Handle NULL RPO order.
20694 * tree-into-ssa.c (rewrite_dom_walker): Do not walk dom children
20695 in RPO order.
20696 (rewrite_update_dom_walker): Likewise.
20697 (mark_def_dom_walker): Likewise.
20698
20699 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
20700
20701 * config/aarch64/aarch64-protos.h (aarch64_split_sve_subreg_move)
20702 (aarch64_maybe_expand_sve_subreg_move): Declare.
20703 * config/aarch64/aarch64.md (UNSPEC_REV_SUBREG): New unspec.
20704 * config/aarch64/predicates.md (aarch64_any_register_operand): New
20705 predicate.
20706 * config/aarch64/aarch64-sve.md (mov<mode>): Optimize subreg moves
20707 that are semantically a reverse operation.
20708 (*aarch64_sve_mov<mode>_subreg_be): New pattern.
20709 * config/aarch64/aarch64.c (aarch64_maybe_expand_sve_subreg_move):
20710 (aarch64_replace_reg_mode, aarch64_split_sve_subreg_move): New
20711 functions.
20712 (aarch64_can_change_mode_class): For big-endian, forbid changes
20713 between two SVE modes if they have different element sizes.
20714
20715 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
20716
20717 * config/aarch64/aarch64.c (aarch64_expand_sve_const_vector): Prefer
20718 the TImode handling for big-endian targets.
20719
20720 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
20721
20722 * config/aarch64/aarch64-sve.md (sve_ld1rq): Replace with...
20723 (*sve_ld1rq<Vesize>): ... this new pattern. Handle all element sizes,
20724 not just bytes.
20725 * config/aarch64/aarch64.c (aarch64_expand_sve_widened_duplicate):
20726 Remove BSWAP handing for big-endian targets and use the form of
20727 LD1RQ appropariate for the mode.
20728
20729 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
20730
20731 * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Handle
20732 all CONST_VECTOR_DUPLICATE_P vectors, not just those with a single
20733 duplicated element.
20734
20735 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
20736
20737 PR tearget/83845
20738 * config/aarch64/aarch64.c (aarch64_secondary_reload): Tighten
20739 check for operands that need to go through aarch64_sve_reload_be.
20740
20741 2018-02-01 Jakub Jelinek <jakub@redhat.com>
20742
20743 PR tree-optimization/81661
20744 PR tree-optimization/84117
20745 * tree-eh.h (rewrite_to_non_trapping_overflow): Declare.
20746 * tree-eh.c: Include gimplify.h.
20747 (find_trapping_overflow, replace_trapping_overflow,
20748 rewrite_to_non_trapping_overflow): New functions.
20749 * tree-vect-loop.c: Include tree-eh.h.
20750 (vect_get_loop_niters): Use rewrite_to_non_trapping_overflow.
20751 * tree-data-ref.c: Include tree-eh.h.
20752 (get_segment_min_max): Use rewrite_to_non_trapping_overflow.
20753
20754 2018-01-31 Uros Bizjak <ubizjak@gmail.com>
20755
20756 PR rtl-optimization/84123
20757 * combine.c (change_zero_ext): Check if hard register satisfies
20758 can_change_dest_mode before calling gen_lowpart_SUBREG.
20759
20760 2018-01-31 Vladimir Makarov <vmakarov@redhat.com>
20761
20762 PR target/82444
20763 * ira.c (ira_init_register_move_cost): Remove assert.
20764
20765 2018-01-31 Eric Botcazou <ebotcazou@adacore.com>
20766
20767 PR rtl-optimization/84071
20768 * doc/tm.texi.in (WORD_REGISTER_OPERATIONS): Add explicit case.
20769 * doc/tm.texi: Regenerate.
20770
20771 2018-01-31 Richard Biener <rguenther@suse.de>
20772
20773 PR tree-optimization/84132
20774 * tree-data-ref.c (analyze_miv_subscript): Properly
20775 check whether evolution_function_is_affine_multivariate_p
20776 before calling gcd_of_steps_may_divide_p.
20777
20778 2018-01-31 Julia Koval <julia.koval@intel.com>
20779
20780 PR target/83618
20781 * config/i386/i386.c (ix86_expand_builtin): Handle IX86_BUILTIN_RDPID.
20782 * config/i386/i386.md (rdpid_rex64) New.
20783 (rdpid): Make 32bit only.
20784
20785 2018-01-29 Aldy Hernandez <aldyh@redhat.com>
20786
20787 PR lto/84105
20788 * tree-pretty-print.c (dump_generic_node): Handle a TYPE_NAME with
20789 an IDENTIFIER_NODE for FUNCTION_TYPE's.
20790
20791 2018-01-31 Eric Botcazou <ebotcazou@adacore.com>
20792
20793 Revert
20794 2018-01-12 Eric Botcazou <ebotcazou@adacore.com>
20795
20796 * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
20797
20798 2018-01-31 Eric Botcazou <ebotcazou@adacore.com>
20799
20800 PR rtl-optimization/84071
20801 * combine.c (record_dead_and_set_regs_1): Record the source unmodified
20802 for a paradoxical SUBREG on a WORD_REGISTER_OPERATIONS target.
20803
20804 2018-01-31 Claudiu Zissulescu <claziss@synopsys.com>
20805
20806 * config/arc/arc.c (arc_handle_aux_attribute): New function.
20807 (arc_attribute_table): Add 'aux' attribute.
20808 (arc_in_small_data_p): Consider aux like variables.
20809 (arc_is_aux_reg_p): New function.
20810 (arc_asm_output_aligned_decl_local): Ignore 'aux' like variables.
20811 (arc_get_aux_arg): New function.
20812 (prepare_move_operands): Handle aux-register access.
20813 (arc_handle_aux_attribute): New function.
20814 * doc/extend.texi (ARC Variable attributes): Add subsection.
20815
20816 2018-01-31 Claudiu Zissulescu <claziss@synopsys.com>
20817
20818 * config/arc/arc-protos.h (arc_is_uncached_mem_p): Function proto.
20819 * config/arc/arc.c (arc_handle_uncached_attribute): New function.
20820 (arc_attribute_table): Add 'uncached' attribute.
20821 (arc_print_operand): Print '.di' flag for uncached memory
20822 accesses.
20823 (arc_in_small_data_p): Do not consider for small data the uncached
20824 types.
20825 (arc_is_uncached_mem_p): New function.
20826 * config/arc/predicates.md (compact_store_memory_operand): Check
20827 for uncached memory accesses.
20828 (nonvol_nonimm_operand): Likewise.
20829 * doc/extend.texi (ARC Type Attribute): New subsection.
20830
20831 2018-01-31 Jakub Jelinek <jakub@redhat.com>
20832
20833 PR c/84100
20834 * common.opt (falign-functions=, falign-jumps=, falign-labels=,
20835 falign-loops=): Add Optimization flag.
20836
20837 2018-01-30 Jeff Law <law@redhat.com>
20838
20839 PR target/84064
20840 * i386.c (ix86_adjust_stack_and_probe_stack_clash): New argument
20841 INT_REGISTERS_SAVED. Check it prior to calling
20842 get_scratch_register_on_entry.
20843 (ix86_adjust_stack_and_probe): Similarly.
20844 (ix86_emit_probe_stack_range): Similarly.
20845 (ix86_expand_prologue): Corresponding changes.
20846
20847 2018-01-30 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
20848
20849 PR target/40411
20850 * config/sol2.h (STARTFILE_ARCH_SPEC): Use -std=c*,
20851 -std=iso9899:199409 instead of -pedantic to select values-Xc.o.
20852
20853 2018-01-30 Vladimir Makarov <vmakarov@redhat.com>
20854
20855 PR target/84112
20856 * lra-constraints.c (curr_insn_transform): Process AND in the
20857 address.
20858
20859 2018-01-30 Jakub Jelinek <jakub@redhat.com>
20860
20861 PR rtl-optimization/83986
20862 * sched-deps.c (sched_analyze_insn): For frame related insns, add anti
20863 dependence against last_pending_memory_flush in addition to
20864 pending_jump_insns.
20865
20866 2018-01-30 Alexandre Oliva <aoliva@redhat.com>
20867
20868 PR tree-optimization/81611
20869 * tree-ssa-dom.c (simple_iv_increment_p): Skip intervening
20870 copies.
20871
20872 2018-01-30 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
20873
20874 PR target/83758
20875 * config/rs6000/rs6000.c (rs6000_internal_arg_pointer): Only return
20876 a reg rtx.
20877
20878 2018-01-30 Richard Biener <rguenther@suse.de>
20879 Jakub Jelinek <jakub@redhat.com>
20880
20881 PR tree-optimization/84111
20882 * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1): Skip
20883 inner loops added during recursion, as they don't have up-to-date
20884 SSA form.
20885
20886 2018-01-30 Jan Hubicka <hubicka@ucw.cz>
20887
20888 PR ipa/81360
20889 * ipa-inline.c (can_inline_edge_p): Break out late tests to...
20890 (can_inline_edge_by_limits_p): ... here.
20891 (can_early_inline_edge_p, check_callers,
20892 update_caller_keys, update_callee_keys, recursive_inlining,
20893 add_new_edges_to_heap, speculation_useful_p,
20894 inline_small_functions,
20895 inline_small_functions, flatten_function,
20896 inline_to_all_callers_1): Update.
20897
20898 2018-01-30 Jan Hubicka <hubicka@ucw.cz>
20899
20900 * profile-count.c (profile_count::combine_with_ipa_count): Handle
20901 zeros correctly.
20902
20903 2018-01-30 Richard Biener <rguenther@suse.de>
20904
20905 PR tree-optimization/83008
20906 * tree-vect-slp.c (vect_analyze_slp_cost_1): Properly cost
20907 invariant and constant vector uses in stmts when they need
20908 more than one stmt.
20909
20910 2018-01-30 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
20911
20912 PR bootstrap/84017
20913 * configure.ac (gcc_cv_as_shf_merge): Disable on Solaris 10/x86.
20914 * configure: Regenerate.
20915
20916 2018-01-30 Richard Sandiford <richard.sandiford@linaro.org>
20917
20918 * config/aarch64/aarch64-sve.md (*vec_extract<mode><Vel>_0): New
20919 pattern.
20920 (*vec_extract<mode><Vel>_v128): Require a nonzero lane number.
20921 Use gen_rtx_REG rather than gen_lowpart.
20922
20923 2018-01-30 Richard Sandiford <richard.sandiford@linaro.org>
20924
20925 * lra-constraints.c (match_reload): Use subreg_lowpart_offset
20926 rather than 0 when creating partial subregs.
20927
20928 2018-01-30 Richard Sandiford <richard.sandiford@linaro.org>
20929
20930 * vec-perm-indices.c (vec_perm_indices::series_p): Give examples
20931 of usage.
20932
20933 2018-01-29 Michael Meissner <meissner@linux.vnet.ibm.com>
20934
20935 PR target/81550
20936 * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): If DFmode
20937 and SFmode can go in Altivec registers (-mcpu=power7 for DFmode,
20938 -mcpu=power8 for SFmode) don't set the PRE_INCDEC or PRE_MODIFY
20939 flags. This restores the settings used before the 2017-07-24.
20940 Turning off pre increment/decrement/modify allows IVOPTS to
20941 optimize DF/SF loops where the index is an int.
20942
20943 2018-01-29 Richard Biener <rguenther@suse.de>
20944 Kelvin Nilsen <kelvin@gcc.gnu.org>
20945
20946 PR bootstrap/80867
20947 * tree-vect-stmts.c (vectorizable_call): Don't call
20948 targetm.vectorize_builtin_md_vectorized_function if callee is
20949 NULL.
20950
20951 2018-01-22 Carl Love <cel@us.ibm.com>
20952
20953 * doc/extend.tex: Fix typo in second arg in
20954 __builtin_bcdadd_{lt|eq|gt|ov} and __builtin_bcdsub_{lt|eq|gt|ov}.
20955
20956 2018-01-29 Richard Biener <rguenther@suse.de>
20957
20958 PR tree-optimization/84086
20959 * tree-ssanames.c: Include cfgloop.h and tree-scalar-evolution.h.
20960 (flush_ssaname_freelist): When SSA names were released reset
20961 the SCEV hash table.
20962
20963 2018-01-29 Richard Biener <rguenther@suse.de>
20964
20965 PR tree-optimization/84057
20966 * tree-ssa-loop-ivcanon.c (unloop_loops): Deal with already
20967 removed paths when removing edges.
20968
20969 2018-01-27 H.J. Lu <hongjiu.lu@intel.com>
20970
20971 * doc/invoke.texi: Replace -mfunction-return==@var{choice} with
20972 -mfunction-return=@var{choice}.
20973
20974 2018-01-27 Bernd Edlinger <bernd.edlinger@hotmail.de>
20975
20976 PR diagnostic/84034
20977 * diagnostic-show-locus.c (get_line_width_without_trailing_whitespace):
20978 Handle CR like TAB.
20979 (layout::print_source_line): Likewise.
20980 (test_get_line_width_without_trailing_whitespace): Add test cases.
20981
20982 2018-01-27 Jakub Jelinek <jakub@redhat.com>
20983
20984 PR middle-end/84040
20985 * sched-deps.c (sched_macro_fuse_insns): Return immediately for
20986 debug insns.
20987
20988 2018-01-26 Jim Wilson <jimw@sifive.com>
20989
20990 * config/riscv/riscv.h (MAX_FIXED_MODE_SIZE): New.
20991
20992 * config/riscv/elf.h (LIB_SPEC): Don't include -lgloss when nosys.specs
20993 specified.
20994
20995 2018-01-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
20996
20997 * config/aarch64/aarch64.md: Add peepholes for CMP + SUB -> SUBS
20998 and CMP + SUB-immediate -> SUBS.
20999
21000 2018-01-26 Martin Sebor <msebor@redhat.com>
21001
21002 PR tree-optimization/83896
21003 * tree-ssa-strlen.c (get_string_len): Rename...
21004 (get_string_cst_length): ...to this. Return HOST_WIDE_INT.
21005 Avoid assuming length is constant.
21006 (handle_char_store): Use HOST_WIDE_INT for string length.
21007
21008 2018-01-26 Uros Bizjak <ubizjak@gmail.com>
21009
21010 PR target/81763
21011 * config/i386/i386.md (*andndi3_doubleword): Add earlyclobber
21012 to (=&r,r,rm) alternative. Add (=r,0,rm) and (=r,r,0) alternatives.
21013
21014 2018-01-26 Richard Biener <rguenther@suse.de>
21015
21016 PR rtl-optimization/84003
21017 * dse.c (record_store): Only record redundant stores when
21018 the earlier store aliases at least all accesses the later one does.
21019
21020 2018-01-26 Jakub Jelinek <jakub@redhat.com>
21021
21022 PR rtl-optimization/83985
21023 * dce.c (deletable_insn_p): Return false for separate shrink wrapping
21024 REG_CFA_RESTORE insns.
21025 (delete_unmarked_insns): Don't ignore separate shrink wrapping
21026 REG_CFA_RESTORE insns here.
21027
21028 PR c/83989
21029 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Don't
21030 use SSA_NAME_VAR as base for SSA_NAMEs with non-NULL SSA_NAME_VAR.
21031
21032 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
21033
21034 * config/arc/arc-arch.h (arc_tune_attr): Add ARC_TUNE_CORE_3.
21035 * config/arc/arc.c (arc_sched_issue_rate): Use ARC_TUNE_... .
21036 (arc_init): Likewise.
21037 (arc_override_options): Likewise.
21038 (arc_file_start): Choose Tag_ARC_CPU_variation based on arc_tune
21039 value.
21040 (hwloop_fail): Use TARGET_DBNZ when we want to check for dbnz insn
21041 support.
21042 * config/arc/arc.h (TARGET_DBNZ): Define.
21043 * config/arc/arc.md (attr tune): Add core_3, use ARC_TUNE_... to
21044 properly set the tune attribute.
21045 (dbnz): Use TARGET_DBNZ guard.
21046 * config/arc/arc.opt (mtune): Add core3 option.
21047
21048 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
21049
21050 * config/arc/arc.c (arc_delegitimize_address_0): Refactored to
21051 recognize new pic like addresses.
21052 (arc_delegitimize_address): Clean up.
21053
21054 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
21055
21056 * config/arc/arc-arches.def: Option mrf16 valid for all
21057 architectures.
21058 * config/arc/arc-c.def (__ARC_RF16__): New predefined macro.
21059 * config/arc/arc-cpus.def (em_mini): New cpu with rf16 on.
21060 * config/arc/arc-options.def (FL_RF16): Add mrf16 option.
21061 * config/arc/arc-tables.opt: Regenerate.
21062 * config/arc/arc.c (arc_conditional_register_usage): Handle
21063 reduced register file case.
21064 (arc_file_start): Set must have build attributes.
21065 * config/arc/arc.h (MAX_ARC_PARM_REGS): Conditional define using
21066 mrf16 option value.
21067 * config/arc/arc.opt (mrf16): Add new option.
21068 * config/arc/elf.h (ATTRIBUTE_PCS): Define.
21069 * config/arc/genmultilib.awk: Handle new mrf16 option.
21070 * config/arc/linux.h (ATTRIBUTE_PCS): Define.
21071 * config/arc/t-multilib: Regenerate.
21072 * doc/invoke.texi (ARC Options): Document mrf16 option.
21073
21074 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
21075
21076 * config/arc/arc-protos.h: Add arc_is_secure_call_p proto.
21077 * config/arc/arc.c (arc_handle_secure_attribute): New function.
21078 (arc_attribute_table): Add 'secure_call' attribute.
21079 (arc_print_operand): Print secure call operand.
21080 (arc_function_ok_for_sibcall): Don't optimize tail calls when
21081 secure.
21082 (arc_is_secure_call_p): New function. * config/arc/arc.md
21083 (call_i): Add support for sjli instruction.
21084 (call_value_i): Likewise.
21085 * config/arc/constraints.md (Csc): New constraint.
21086
21087 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
21088 John Eric Martin <John.Martin@emmicro-us.com>
21089
21090 * config/arc/arc-protos.h: Add arc_is_jli_call_p proto.
21091 * config/arc/arc.c (_arc_jli_section): New struct.
21092 (arc_jli_section): New type.
21093 (rc_jli_sections): New static variable.
21094 (arc_handle_jli_attribute): New function.
21095 (arc_attribute_table): Add jli_always and jli_fixed attribute.
21096 (arc_file_end): New function.
21097 (TARGET_ASM_FILE_END): Define.
21098 (arc_print_operand): Reuse 'S' letter for JLI output instruction.
21099 (arc_add_jli_section): New function.
21100 (jli_call_scan): Likewise.
21101 (arc_reorg): Call jli_call_scan.
21102 (arc_output_addsi): Remove 'S' from printing asm operand.
21103 (arc_is_jli_call_p): New function.
21104 * config/arc/arc.md (movqi_insn): Remove 'S' from printing asm
21105 operand.
21106 (movhi_insn): Likewise.
21107 (movsi_insn): Likewise.
21108 (movsi_set_cc_insn): Likewise.
21109 (loadqi_update): Likewise.
21110 (load_zeroextendqisi_update): Likewise.
21111 (load_signextendqisi_update): Likewise.
21112 (loadhi_update): Likewise.
21113 (load_zeroextendhisi_update): Likewise.
21114 (load_signextendhisi_update): Likewise.
21115 (loadsi_update): Likewise.
21116 (loadsf_update): Likewise.
21117 (movsicc_insn): Likewise.
21118 (bset_insn): Likewise.
21119 (bxor_insn): Likewise.
21120 (bclr_insn): Likewise.
21121 (bmsk_insn): Likewise.
21122 (bicsi3_insn): Likewise.
21123 (cmpsi_cc_c_insn): Likewise.
21124 (movsi_ne): Likewise.
21125 (movsi_cond_exec): Likewise.
21126 (clrsbsi2): Likewise.
21127 (norm_f): Likewise.
21128 (normw): Likewise.
21129 (swap): Likewise.
21130 (divaw): Likewise.
21131 (flag): Likewise.
21132 (sr): Likewise.
21133 (kflag): Likewise.
21134 (ffs): Likewise.
21135 (ffs_f): Likewise.
21136 (fls): Likewise.
21137 (call_i): Remove 'S' asm letter, add jli instruction.
21138 (call_value_i): Likewise.
21139 * config/arc/arc.op (mjli-always): New option.
21140 * config/arc/constraints.md (Cji): New constraint.
21141 * config/arc/fpx.md (addsf3_fpx): Remove 'S' from printing asm
21142 operand.
21143 (subsf3_fpx): Likewise.
21144 (mulsf3_fpx): Likewise.
21145 * config/arc/simdext.md (vendrec_insn): Remove 'S' from printing
21146 asm operand.
21147 * doc/extend.texi (ARC): Document 'jli-always' and 'jli-fixed'
21148 function attrbutes.
21149 * doc/invoke.texi (ARC): Document mjli-always option.
21150
21151 2018-01-26 Sebastian Perta <sebastian.perta@renesas.com>
21152
21153 * config/rl78/rl78.c (rl78_addsi3_internal): If operand 2 is const
21154 avoid addition with 0 and use incw and decw where possible.
21155
21156 2018-01-26 Richard Biener <rguenther@suse.de>
21157
21158 PR tree-optimization/81082
21159 * fold-const.c (fold_plusminus_mult_expr): Do not perform the
21160 association if it requires casting to unsigned.
21161 * match.pd ((A * C) +- (B * C) -> (A+-B)): New patterns derived
21162 from fold_plusminus_mult_expr to catch important cases late when
21163 range info is available.
21164
21165 2018-01-26 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
21166
21167 * config/i386/sol2.h (USE_HIDDEN_LINKONCE): Remove.
21168 * configure.ac (hidden_linkonce): New test.
21169 * configure: Regenerate.
21170 * config.in: Regenerate.
21171
21172 2018-01-26 Julia Koval <julia.koval@intel.com>
21173
21174 * config/i386/avx512bitalgintrin.h (_mm512_bitshuffle_epi64_mask,
21175 _mm512_mask_bitshuffle_epi64_mask, _mm256_bitshuffle_epi64_mask,
21176 _mm256_mask_bitshuffle_epi64_mask, _mm_bitshuffle_epi64_mask,
21177 _mm_mask_bitshuffle_epi64_mask): Fix type.
21178 * config/i386/i386-builtin-types.def (UHI_FTYPE_V2DI_V2DI_UHI,
21179 USI_FTYPE_V4DI_V4DI_USI): Remove.
21180 * config/i386/i386-builtin.def (__builtin_ia32_vpshufbitqmb512_mask,
21181 __builtin_ia32_vpshufbitqmb256_mask,
21182 __builtin_ia32_vpshufbitqmb128_mask): Fix types.
21183 * config/i386/i386.c (ix86_expand_args_builtin): Remove old types.
21184 * config/i386/sse.md (VI1_AVX512VLBW): Change types.
21185
21186 2018-01-26 Alan Modra <amodra@gmail.com>
21187
21188 PR target/84033
21189 * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Exclude
21190 UNSPEC_VBPERMQ. Sort other unspecs.
21191
21192 2018-01-25 David Edelsohn <dje.gcc@gmail.com>
21193
21194 * doc/invoke.texi (PowerPC Options): Document 'native' cpu type.
21195
21196 2018-01-25 Jan Hubicka <hubicka@ucw.cz>
21197
21198 PR middle-end/83055
21199 * predict.c (drop_profile): Do not push/pop cfun; update also
21200 node->count.
21201 (handle_missing_profiles): Fix logic looking for zero profiles.
21202
21203 2018-01-25 Jakub Jelinek <jakub@redhat.com>
21204
21205 PR middle-end/83977
21206 * ipa-fnsummary.c (compute_fn_summary): Clear can_change_signature
21207 on functions with #pragma omp declare simd or functions with simd
21208 attribute.
21209 * omp-simd-clone.c (expand_simd_clones): Revert 2018-01-24 change.
21210 * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen):
21211 Remove trailing \n from warning_at calls.
21212
21213 2018-01-25 Tom de Vries <tom@codesourcery.com>
21214
21215 PR target/84028
21216 * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
21217 for neutered workers.
21218
21219 2018-01-24 Joseph Myers <joseph@codesourcery.com>
21220
21221 PR target/68467
21222 * config/m68k/m68k.c (m68k_promote_function_mode): New function.
21223 (TARGET_PROMOTE_FUNCTION_MODE): New macro.
21224
21225 2018-01-24 Jeff Law <law@redhat.com>
21226
21227 PR target/83994
21228 * i386.c (get_probe_interval): Move to earlier point.
21229 (ix86_compute_frame_layout): If -fstack-clash-protection and
21230 the frame is larger than the probe interval, then use pushes
21231 to save registers rather than reg->mem moves.
21232 (ix86_expand_prologue): Remove conditional for int_registers_saved
21233 assertion.
21234
21235 2018-01-24 Vladimir Makarov <vmakarov@redhat.com>
21236
21237 PR target/84014
21238 * ira-build.c (setup_min_max_allocno_live_range_point): Set up
21239 min/max for never referenced object.
21240
21241 2018-01-24 Jakub Jelinek <jakub@redhat.com>
21242
21243 PR middle-end/83977
21244 * tree.c (free_lang_data_in_decl): Don't clear DECL_ABSTRACT_ORIGIN
21245 here.
21246 * omp-low.c (create_omp_child_function): Remove "omp declare simd"
21247 attributes from DECL_ATTRIBUTES (decl) without affecting
21248 DECL_ATTRIBUTES (current_function_decl).
21249 * omp-simd-clone.c (expand_simd_clones): Ignore DECL_ARTIFICIAL
21250 functions with non-NULL DECL_ABSTRACT_ORIGIN.
21251
21252 2018-01-24 Richard Sandiford <richard.sandiford@linaro.org>
21253
21254 PR tree-optimization/83979
21255 * fold-const.c (fold_comparison): Use constant_boolean_node
21256 instead of boolean_{true,false}_node.
21257
21258 2018-01-24 Jan Hubicka <hubicka@ucw.cz>
21259
21260 * ipa-profile.c (ipa_propagate_frequency_1): Fix logic skipping calls
21261 with zero counts.
21262
21263 2018-01-24 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
21264
21265 * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
21266 Simplify the clause that sets the length attribute.
21267 (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
21268 (*sibcall_nonlocal_sysv<mode>): Clean up code block; simplify the
21269 clause that sets the length attribute.
21270 (*sibcall_value_nonlocal_sysv<mode>): Likewise.
21271
21272 2018-01-24 Tom de Vries <tom@codesourcery.com>
21273
21274 PR target/83589
21275 * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_2): Define to 1.
21276 (nvptx_pc_set, nvptx_condjump_label): New function. Copy from jump.c.
21277 Add strict parameter.
21278 (prevent_branch_around_nothing): Insert dummy insn between branch to
21279 label and label with no ptx insn inbetween.
21280 * config/nvptx/nvptx.md (define_insn "fake_nop"): New insn.
21281
21282 2018-01-24 Tom de Vries <tom@codesourcery.com>
21283
21284 PR target/81352
21285 * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
21286 for neutered threads in warp.
21287 * config/nvptx/nvptx.md (define_insn "exit"): New insn.
21288
21289 2018-01-24 Richard Biener <rguenther@suse.de>
21290
21291 PR tree-optimization/83176
21292 * tree-chrec.c (chrec_fold_plus_1): Handle (signed T){(T) .. }
21293 operands.
21294
21295 2018-01-24 Richard Biener <rguenther@suse.de>
21296
21297 PR tree-optimization/82819
21298 * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Avoid
21299 code generating pluses that are no-ops in the target precision.
21300
21301 2018-01-24 Richard Biener <rguenther@suse.de>
21302
21303 PR middle-end/84000
21304 * tree-cfg.c (replace_loop_annotate): Handle annot_expr_parallel_kind.
21305
21306 2018-01-23 Jan Hubicka <hubicka@ucw.cz>
21307
21308 * cfgcleanup.c (try_crossjump_to_edge): Use combine_with_count
21309 to merge probabilities.
21310 * predict.c (probably_never_executed): Also mark as cold functions
21311 with global 0 profile and guessed local profile.
21312 * profile-count.c (profile_probability::combine_with_count): New
21313 member function.
21314 * profile-count.h (profile_probability::operator*,
21315 profile_probability::operator*=, profile_probability::operator/,
21316 profile_probability::operator/=): Reduce precision to adjusted
21317 and set value to guessed on contradictory divisions.
21318 (profile_probability::combine_with_freq): Remove.
21319 (profile_probability::combine_wiht_count): Declare.
21320 (profile_count::force_nonzero):: Set to adjusted.
21321 (profile_count::probability_in):: Set quality to adjusted.
21322 * tree-ssa-tail-merge.c (replace_block_by): Use
21323 combine_with_count.
21324
21325 2018-01-23 Andrew Waterman <andrew@sifive.com>
21326 Jim Wilson <jimw@sifive.com>
21327
21328 * config/riscv/riscv.c (riscv_stack_boundary): New.
21329 (riscv_option_override): Set riscv_stack_boundary. Handle
21330 riscv_preferred_stack_boundary_arg.
21331 * config/riscv/riscv.h (MIN_STACK_BOUNDARY, ABI_STACK_BOUNDARY): New.
21332 (BIGGEST_ALIGNMENT): Set to STACK_BOUNDARY.
21333 (STACK_BOUNDARY): Set to riscv_stack_boundary.
21334 (RISCV_STACK_ALIGN): Use STACK_BOUNDARY.
21335 * config/riscv/riscv.opt (mpreferred-stack-boundary): New.
21336 * doc/invoke.tex (RISC-V Options): Add -mpreferred-stack-boundary.
21337
21338 2018-01-23 H.J. Lu <hongjiu.lu@intel.com>
21339
21340 PR target/83905
21341 * config/i386/i386.c (ix86_expand_prologue): Use cost reference
21342 of struct ix86_frame.
21343 (ix86_expand_epilogue): Likewise. Add a local variable for
21344 the reg_save_offset field in struct ix86_frame.
21345
21346 2018-01-23 Bin Cheng <bin.cheng@arm.com>
21347
21348 PR tree-optimization/82604
21349 * tree-loop-distribution.c (enum partition_kind): New enum item
21350 PKIND_PARTIAL_MEMSET.
21351 (partition_builtin_p): Support above new enum item.
21352 (generate_code_for_partition): Ditto.
21353 (compute_access_range): Differentiate cases that equality can be
21354 proven at all loops, the innermost loops or no loops.
21355 (classify_builtin_st, classify_builtin_ldst): Adjust call to above
21356 function. Set PKIND_PARTIAL_MEMSET for partition appropriately.
21357 (finalize_partitions, distribute_loop): Don't fuse partition of
21358 PKIND_PARTIAL_MEMSET kind when distributing 3-level loop nest.
21359 (prepare_perfect_loop_nest): Distribute 3-level loop nest only if
21360 parloop is enabled.
21361
21362 2018-01-23 Martin Liska <mliska@suse.cz>
21363
21364 * predict.def (PRED_INDIR_CALL): Set probability to PROB_EVEN in
21365 order to ignore the predictor.
21366 (PRED_POLYMORPHIC_CALL): Likewise.
21367 (PRED_RECURSIVE_CALL): Likewise.
21368
21369 2018-01-23 Martin Liska <mliska@suse.cz>
21370
21371 * tree-profile.c (tree_profiling): Print function header to
21372 aware reader which function we are working on.
21373 * value-prof.c (gimple_find_values_to_profile): Do not print
21374 not interesting value histograms.
21375
21376 2018-01-23 Martin Liska <mliska@suse.cz>
21377
21378 * profile-count.h (enum profile_quality): Add
21379 profile_uninitialized as the first value. Do not number values
21380 as they are zero based.
21381 (profile_count::verify): Update sanity check.
21382 (profile_probability::verify): Likewise.
21383
21384 2018-01-23 Nathan Sidwell <nathan@acm.org>
21385
21386 * doc/invoke.texi (ffor-scope): Deprecate.
21387
21388 2018-01-23 David Malcolm <dmalcolm@redhat.com>
21389
21390 PR tree-optimization/83510
21391 * domwalk.c (set_all_edges_as_executable): New function.
21392 (dom_walker::dom_walker): Convert bool param
21393 "skip_unreachable_blocks" to enum reachability. Move setup of
21394 edge flags to set_all_edges_as_executable and only do it when
21395 reachability is REACHABLE_BLOCKS.
21396 * domwalk.h (enum dom_walker::reachability): New enum.
21397 (dom_walker::dom_walker): Convert bool param
21398 "skip_unreachable_blocks" to enum reachability.
21399 (set_all_edges_as_executable): New decl.
21400 * graphite-scop-detection.c (gather_bbs::gather_bbs): Convert
21401 from false for "skip_unreachable_blocks" to ALL_BLOCKS for
21402 "reachability".
21403 * tree-ssa-dom.c (dom_opt_dom_walker::dom_opt_dom_walker): Likewise,
21404 but converting true to REACHABLE_BLOCKS.
21405 * tree-ssa-sccvn.c (sccvn_dom_walker::sccvn_dom_walker): Likewise.
21406 * tree-vrp.c
21407 (check_array_bounds_dom_walker::check_array_bounds_dom_walker):
21408 Likewise, but converting it to REACHABLE_BLOCKS_PRESERVING_FLAGS.
21409 (vrp_dom_walker::vrp_dom_walker): Likewise, but converting it to
21410 REACHABLE_BLOCKS.
21411 (vrp_prop::vrp_finalize): Call set_all_edges_as_executable
21412 if check_all_array_refs will be called.
21413
21414 2018-01-23 David Malcolm <dmalcolm@redhat.com>
21415
21416 * tree.c (selftest::test_location_wrappers): Add more test
21417 coverage.
21418
21419 2018-01-23 David Malcolm <dmalcolm@redhat.com>
21420
21421 * sbitmap.c (selftest::test_set_range): Fix memory leaks.
21422 (selftest::test_bit_in_range): Likewise.
21423
21424 2018-01-23 Richard Sandiford <richard.sandiford@linaro.org>
21425
21426 PR testsuite/83888
21427 * doc/sourcebuild.texi (vect_float): Say that the selector
21428 only describes the situation when -funsafe-math-optimizations is on.
21429 (vect_float_strict): Document.
21430
21431 2018-01-23 Richard Sandiford <richard.sandiford@linaro.org>
21432
21433 PR tree-optimization/83965
21434 * tree-vect-patterns.c (vect_reassociating_reduction_p): New function.
21435 (vect_recog_dot_prod_pattern, vect_recog_sad_pattern): Use it
21436 instead of checking only for a reduction.
21437 (vect_recog_widen_sum_pattern): Likewise.
21438
21439 2018-01-23 Jan Hubicka <hubicka@ucw.cz>
21440
21441 * predict.c (probably_never_executed): Only use precise profile info.
21442 (compute_function_frequency): Skip after inlining hack since we now
21443 have quality checking.
21444
21445 2018-01-23 Jan Hubicka <hubicka@ucw.cz>
21446
21447 * profile-count.h (profile_probability::very_unlikely,
21448 profile_probability::unlikely, profile_probability::even): Set
21449 precision to guessed.
21450
21451 2018-01-23 Richard Biener <rguenther@suse.de>
21452
21453 PR tree-optimization/83963
21454 * graphite-scop-detection.c (scop_detection::harmful_loop_in_region):
21455 Properly terminate dominator walk when crossing the exit edge not
21456 when visiting its source block.
21457
21458 2018-01-23 Jakub Jelinek <jakub@redhat.com>
21459
21460 PR c++/83918
21461 * tree.c (maybe_wrap_with_location): Use NON_LVALUE_EXPR rather than
21462 VIEW_CONVERT_EXPR to wrap CONST_DECLs.
21463
21464 2018-01-22 Jakub Jelinek <jakub@redhat.com>
21465
21466 PR tree-optimization/83957
21467 * omp-expand.c (expand_omp_for_generic): Ignore virtual PHIs. Remove
21468 semicolon after for body surrounded by braces.
21469
21470 PR tree-optimization/83081
21471 * profile-count.h (profile_probability::split): New method.
21472 * dojump.c (do_jump_1) <case TRUTH_ANDIF_EXPR, case TRUTH_ORIF_EXPR>:
21473 Use profile_probability::split.
21474 (do_compare_rtx_and_jump): Fix adjustment of probabilities
21475 when splitting a single conditional jump into 2.
21476
21477 2018-01-22 David Malcolm <dmalcolm@redhat.com>
21478
21479 PR tree-optimization/69452
21480 * tree-ssa-loop-im.c (class move_computations_dom_walker): Remove
21481 decl.
21482
21483 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
21484
21485 * config/rl78/rl78-expand.md (bswaphi2): New define_expand.
21486 * config/rl78/rl78-virt.md (*bswaphi2_virt): New define_insn.
21487 * config/rl78/rl78-real.md (*bswaphi2_real): New define_insn.
21488
21489 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
21490
21491 * config/rl78/rl78-protos.h (rl78_split_movdi): New function
21492 declaration.
21493 * config/rl78/rl78.md (movdi): New define_expand.
21494 * config/rl78/rl78.c (rl78_split_movdi): New function.
21495
21496 2018-01-22 Michael Meissner <meissner@linux.vnet.ibm.com>
21497
21498 PR target/83862
21499 * config/rs6000/rs6000-protos.h (rs6000_split_signbit): Delete,
21500 no longer used.
21501 * config/rs6000/rs6000.c (rs6000_split_signbit): Likewise.
21502 * config/rs6000/rs6000.md (signbit<mode>2): Change code for IEEE
21503 128-bit to produce an UNSPEC move to get the double word with the
21504 signbit and then a shift directly to do signbit.
21505 (signbit<mode>2_dm): Replace old IEEE 128-bit signbit
21506 implementation with a new version that just does either a direct
21507 move or a regular move. Move memory interface to separate insns.
21508 Move insns so they are next to the expander.
21509 (signbit<mode>2_dm_mem_be): New combiner insns to combine load
21510 with signbit move. Split big and little endian case.
21511 (signbit<mode>2_dm_mem_le): Likewise.
21512 (signbit<mode>2_dm_<su>ext): Delete, no longer used.
21513 (signbit<mode>2_dm2): Likewise.
21514
21515 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
21516
21517 * config/rl78/rl78.md (anddi3): New define_expand.
21518
21519 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
21520
21521 * config/rl78/rl78.md (umindi3): New define_expand.
21522
21523 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
21524
21525 * config/rl78/rl78.md (smindi3): New define_expand.
21526
21527 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
21528
21529 * config/rl78/rl78.md (smaxdi3): New define_expand.
21530
21531 2018-01-22 Carl Love <cel@us.ibm.com>
21532
21533 * config/rs6000/rs6000-builtin.def (ST_ELEMREV_V1TI, LD_ELEMREV_V1TI,
21534 LVX_V1TI): Add macro expansion.
21535 * config/rs6000/rs6000-c.c (altivec_builtin_types): Add argument
21536 definitions for VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_VEC_ST,
21537 VSX_BUILTIN_VEC_XL, LD_ELEMREV_V1TI builtins.
21538 * config/rs6000/rs6000-p8swap.c (insn_is_swappable_p);
21539 Change check to determine if the instruction is a byte reversing
21540 entry. Fix typo in comment.
21541 * config/rs6000/rs6000.c (altivec_expand_builtin): Add case entry
21542 for VSX_BUILTIN_ST_ELEMREV_V1TI and VSX_BUILTIN_LD_ELEMREV_V1TI.
21543 Add def_builtin calls for new builtins.
21544 * config/rs6000/vsx.md (vsx_st_elemrev_v1ti, vsx_ld_elemrev_v1ti):
21545 Add define_insn expansion.
21546
21547 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
21548
21549 * config/rl78/rl78.md (umaxdi3): New define_expand.
21550
21551 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
21552
21553 * config/rl78/rl78.c (rl78_note_reg_set): Fixed dead reg check
21554 for non-QImode registers.
21555
21556 2018-01-22 Richard Biener <rguenther@suse.de>
21557
21558 PR tree-optimization/83963
21559 * graphite-scop-detection.c (scop_detection::get_sese): Delay
21560 including the loop exit block.
21561 (scop_detection::merge_sese): Likewise.
21562 (scop_detection::add_scop): Do it here instead.
21563
21564 2018-01-22 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
21565
21566 * doc/sourcebuild.texi (arm_softfloat): Document.
21567
21568 2018-01-21 John David Anglin <danglin@gcc.gnu.org>
21569
21570 PR gcc/77734
21571 * config/pa/pa.c (pa_function_ok_for_sibcall): Use
21572 targetm.binds_local_p instead of TREE_PUBLIC to check local binding.
21573 Move TARGET_PORTABLE_RUNTIME check after TARGET_64BIT check.
21574
21575 2018-01-21 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
21576 David Edelsohn <dje.gcc@gmail.com>
21577
21578 PR target/83946
21579 * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
21580 Change "crset eq" to "crset 2".
21581 (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
21582 (*call_indirect_aix<mode>_nospec): Likewise.
21583 (*call_value_indirect_aix<mode>_nospec): Likewise.
21584 (*call_indirect_elfv2<mode>_nospec): Likewise.
21585 (*call_value_indirect_elfv2<mode>_nospec): Likewise.
21586 (*sibcall_nonlocal_sysv<mode>): Change "crset eq" to "crset 2";
21587 change assembly output from . to $.
21588 (*sibcall_value_nonlocal_sysv<mode>): Likewise.
21589 (indirect_jump<mode>_nospec): Change assembly output from . to $.
21590 (*tablejump<mode>_internal1_nospec): Likewise.
21591
21592 2018-01-21 Oleg Endo <olegendo@gcc.gnu.org>
21593
21594 PR target/80870
21595 * config/sh/sh_optimize_sett_clrt.cc:
21596 Use INCLUDE_ALGORITHM and INCLUDE_VECTOR instead of direct includes.
21597
21598 2018-01-20 Richard Sandiford <richard.sandiford@linaro.org>
21599
21600 PR tree-optimization/83940
21601 * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): Set
21602 offset_dt to vect_constant_def rather than vect_unknown_def_type.
21603 (vect_check_load_store_mask): Add a mask_dt_out parameter and
21604 use it to pass back the definition type.
21605 (vect_check_store_rhs): Likewise rhs_dt_out.
21606 (vect_build_gather_load_calls): Add a mask_dt argument and use
21607 it instead of a call to vect_is_simple_use.
21608 (vectorizable_store): Update calls to vect_check_load_store_mask
21609 and vect_check_store_rhs. Use the dt returned by the latter instead
21610 of scatter_src_dt. Use the cached mask_dt and gs_info.offset_dt
21611 instead of calls to vect_is_simple_use. Pass the scalar rather
21612 than the vector operand to vect_is_simple_use when handling
21613 second and subsequent copies of an rhs value.
21614 (vectorizable_load): Update calls to vect_check_load_store_mask
21615 and vect_build_gather_load_calls. Use the cached mask_dt and
21616 gs_info.offset_dt instead of calls to vect_is_simple_use.
21617
21618 2018-01-20 Jakub Jelinek <jakub@redhat.com>
21619
21620 PR middle-end/83945
21621 * tree-emutls.c: Include gimplify.h.
21622 (lower_emutls_2): New function.
21623 (lower_emutls_1): If ADDR_EXPR is a gimple invariant and walk_tree
21624 with lower_emutls_2 callback finds some TLS decl in it, unshare_expr
21625 it before further processing.
21626
21627 PR target/83930
21628 * simplify-rtx.c (simplify_binary_operation_1) <case UMOD>: Use
21629 UINTVAL (trueop1) instead of INTVAL (op1).
21630
21631 2018-01-19 Jakub Jelinek <jakub@redhat.com>
21632
21633 PR debug/81570
21634 PR debug/83728
21635 * dwarf2cfi.c (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define to
21636 INCOMING_FRAME_SP_OFFSET if not defined.
21637 (scan_trace): Add ENTRY argument. If true and
21638 DEFAULT_INCOMING_FRAME_SP_OFFSET != INCOMING_FRAME_SP_OFFSET,
21639 emit a note to adjust the CFA offset.
21640 (create_cfi_notes): Adjust scan_trace callers.
21641 (create_cie_data): Use DEFAULT_INCOMING_FRAME_SP_OFFSET rather than
21642 INCOMING_FRAME_SP_OFFSET in the CIE.
21643 * config/i386/i386.h (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define.
21644 * config/stormy16/stormy16.h (DEFAULT_INCOMING_FRAME_SP_OFFSET):
21645 Likewise.
21646 * doc/tm.texi.in (DEFAULT_INCOMING_FRAME_SP_OFFSET): Document.
21647 * doc/tm.texi: Regenerated.
21648
21649 2018-01-19 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
21650
21651 PR rtl-optimization/83147
21652 * lra-constraints.c (remove_inheritance_pseudos): Use
21653 lra_substitute_pseudo_within_insn.
21654
21655 2018-01-19 Tom de Vries <tom@codesourcery.com>
21656 Cesar Philippidis <cesar@codesourcery.com>
21657
21658 PR target/83920
21659 * config/nvptx/nvptx.c (nvptx_single): Fix jit workaround.
21660
21661 2018-01-19 Cesar Philippidis <cesar@codesourcery.com>
21662
21663 PR target/83790
21664 * config/nvptx/nvptx.c (output_init_frag): Don't use generic address
21665 spaces for function labels.
21666
21667 2018-01-19 Martin Liska <mliska@suse.cz>
21668
21669 * predict.def (PRED_LOOP_EXIT): Change from 85 to 89.
21670 (PRED_LOOP_EXIT_WITH_RECURSION): Change from 72 to 78.
21671 (PRED_LOOP_EXTRA_EXIT): Change from 83 to 67.
21672 (PRED_OPCODE_POSITIVE): Change from 64 to 59.
21673 (PRED_TREE_OPCODE_POSITIVE): Change from 64 to 59.
21674 (PRED_CONST_RETURN): Change from 69 to 65.
21675 (PRED_NULL_RETURN): Change from 91 to 71.
21676 (PRED_LOOP_IV_COMPARE_GUESS): Change from 98 to 64.
21677 (PRED_LOOP_GUARD): Change from 66 to 73.
21678
21679 2018-01-19 Martin Liska <mliska@suse.cz>
21680
21681 * predict.c (predict_insn_def): Add new assert.
21682 (struct branch_predictor): Change type to signed integer.
21683 (test_prediction_value_range): Amend test to cover
21684 PROB_UNINITIALIZED.
21685 * predict.def (PRED_LOOP_ITERATIONS): Use the new constant.
21686 (PRED_LOOP_ITERATIONS_GUESSED): Likewise.
21687 (PRED_LOOP_ITERATIONS_MAX): Likewise.
21688 (PRED_LOOP_IV_COMPARE): Likewise.
21689 * predict.h (PROB_UNINITIALIZED): Define new constant.
21690
21691 2018-01-19 Martin Liska <mliska@suse.cz>
21692
21693 * predict.c (dump_prediction): Add new format for
21694 analyze_brprob.py script which is enabled with -details
21695 suboption.
21696 * profile-count.h (precise_p): New function.
21697
21698 2018-01-19 Richard Sandiford <richard.sandiford@linaro.org>
21699
21700 PR tree-optimization/83922
21701 * tree-vect-loop.c (vect_verify_full_masking): Return false if
21702 there are no statements that need masking.
21703 (vect_active_double_reduction_p): New function.
21704 (vect_analyze_loop_operations): Use it when handling phis that
21705 are not in the loop header.
21706
21707 2018-01-19 Richard Sandiford <richard.sandiford@linaro.org>
21708
21709 PR tree-optimization/83914
21710 * tree-vect-loop.c (vectorizable_induction): Don't convert
21711 init_expr or apply the peeling adjustment for inductions
21712 that are nested within the vectorized loop.
21713
21714 2018-01-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
21715
21716 * config/arm/thumb2.md (*thumb2_negsi2_short): Use RSB mnemonic
21717 instead of NEG.
21718
21719 2018-01-18 Jakub Jelinek <jakub@redhat.com>
21720
21721 PR sanitizer/81715
21722 PR testsuite/83882
21723 * function.h (gimplify_parameters): Add gimple_seq * argument.
21724 * function.c: Include gimple.h and options.h.
21725 (gimplify_parameters): Add cleanup argument, add CLOBBER stmts
21726 for the added local temporaries if needed.
21727 * gimplify.c (gimplify_body): Adjust gimplify_parameters caller,
21728 if there are any parameter cleanups, wrap whole body into a
21729 try/finally with the cleanups.
21730
21731 2018-01-18 Wilco Dijkstra <wdijkstr@arm.com>
21732
21733 PR target/82964
21734 * config/aarch64/aarch64.c (aarch64_legitimate_constant_p):
21735 Use GET_MODE_CLASS for scalar floating point.
21736
21737 2018-01-18 Jan Hubicka <hubicka@ucw.cz>
21738
21739 PR ipa/82256
21740 patch by PaX Team
21741 * cgraphclones.c (cgraph_node::create_version_clone_with_body):
21742 Fix call of call_cgraph_insertion_hooks.
21743
21744 2018-01-18 Martin Sebor <msebor@redhat.com>
21745
21746 * doc/invoke.texi (-Wclass-memaccess): Tweak text.
21747
21748 2018-01-18 Jan Hubicka <hubicka@ucw.cz>
21749
21750 PR ipa/83619
21751 * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Update edge
21752 frequencies.
21753
21754 2018-01-18 Boris Kolpackov <boris@codesynthesis.com>
21755
21756 PR other/70268
21757 * common.opt: (-ffile-prefix-map): New option.
21758 * opts.c (common_handle_option): Defer it.
21759 * opts-global.c (handle_common_deferred_options): Handle it.
21760 * debug.h (remap_debug_filename, add_debug_prefix_map): Move to...
21761 * file-prefix-map.h: New file.
21762 (remap_debug_filename, add_debug_prefix_map): ...here.
21763 (add_macro_prefix_map, add_file_prefix_map, remap_macro_filename): New.
21764 * final.c (debug_prefix_map, add_debug_prefix_map
21765 remap_debug_filename): Move to...
21766 * file-prefix-map.c: New file.
21767 (file_prefix_map, add_prefix_map, remap_filename) ...here and rename,
21768 generalize, get rid of alloca(), use strrchr() instead of strchr().
21769 (add_macro_prefix_map, add_debug_prefix_map, add_file_prefix_map):
21770 Implement in terms of add_prefix_map().
21771 (remap_macro_filename, remap_debug_filename): Implement in term of
21772 remap_filename().
21773 * Makefile.in (OBJS, PLUGIN_HEADERS): Add new files.
21774 * builtins.c (fold_builtin_FILE): Call remap_macro_filename().
21775 * dbxout.c: Include file-prefix-map.h.
21776 * varasm.c: Likewise.
21777 * vmsdbgout.c: Likewise.
21778 * xcoffout.c: Likewise.
21779 * dwarf2out.c: Likewise plus omit new options from DW_AT_producer.
21780 * doc/cppopts.texi (-fmacro-prefix-map): Document.
21781 * doc/invoke.texi (-ffile-prefix-map): Document.
21782 (-fdebug-prefix-map): Update description.
21783
21784 2018-01-18 Martin Liska <mliska@suse.cz>
21785
21786 * config/i386/i386.c (indirect_thunk_name): Document that also
21787 lfence is emitted.
21788 (output_indirect_thunk): Document why both instructions
21789 (pause and lfence) are generated.
21790
21791 2018-01-18 Richard Biener <rguenther@suse.de>
21792
21793 PR tree-optimization/83887
21794 * graphite-scop-detection.c
21795 (scop_detection::get_nearest_dom_with_single_entry): Remove.
21796 (scop_detection::get_nearest_pdom_with_single_exit): Likewise.
21797 (scop_detection::merge_sese): Re-implement with a flood-fill
21798 algorithm that properly finds a SESE region if it exists.
21799
21800 2018-01-18 Jakub Jelinek <jakub@redhat.com>
21801
21802 PR c/61240
21803 * match.pd ((P + A) - P, P - (P + A), (P + A) - (P + B)): For
21804 pointer_diff optimizations use view_convert instead of convert.
21805
21806 2018-01-17 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
21807
21808 * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
21809 Generate different code for -mno-speculate-indirect-jumps.
21810 (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
21811 (*call_indirect_aix<mode>): Disable for
21812 -mno-speculate-indirect-jumps.
21813 (*call_indirect_aix<mode>_nospec): New define_insn.
21814 (*call_value_indirect_aix<mode>): Disable for
21815 -mno-speculate-indirect-jumps.
21816 (*call_value_indirect_aix<mode>_nospec): New define_insn.
21817 (*sibcall_nonlocal_sysv<mode>): Generate different code for
21818 -mno-speculate-indirect-jumps.
21819 (*sibcall_value_nonlocal_sysv<mode>): Likewise.
21820
21821 2018-01-17 Michael Meissner <meissner@linux.vnet.ibm.com>
21822
21823 * config/rs6000/rs6000.c (rs6000_emit_move): If we load or store a
21824 long double type, set the flags for noting the default long double
21825 type, even if we don't pass or return a long double type.
21826
21827 2018-01-17 Jan Hubicka <hubicka@ucw.cz>
21828
21829 PR ipa/83051
21830 * ipa-inline.c (flatten_function): Do not overwrite final inlining
21831 failure.
21832
21833 2018-01-17 Will Schmidt <will_schmidt@vnet.ibm.com>
21834
21835 * config/rs6000/rs6000.c (rs6000_gimple_builtin): Add gimple folding
21836 support for merge[hl].
21837 (fold_mergehl_helper): New helper function.
21838 (tree-vector-builder.h): New #include for tree_vector_builder usage.
21839 * config/rs6000/altivec.md (altivec_vmrghw_direct): Add xxmrghw insn.
21840 (altivec_vmrglw_direct): Add xxmrglw insn.
21841
21842 2018-01-17 Andrew Waterman <andrew@sifive.com>
21843
21844 * config/riscv/riscv.c (riscv_conditional_register_usage): If
21845 UNITS_PER_FP_ARG is 0, set call_used_regs to 1 for all FP regs.
21846
21847 2018-01-17 David Malcolm <dmalcolm@redhat.com>
21848
21849 PR lto/83121
21850 * ipa-devirt.c (add_type_duplicate): When comparing memory layout,
21851 call the lto_location_cache before reading the
21852 DECL_SOURCE_LOCATION of the types.
21853
21854 2018-01-17 Wilco Dijkstra <wdijkstr@arm.com>
21855 Richard Sandiford <richard.sandiford@linaro.org>
21856
21857 * config/aarch64/aarch64.md (movti_aarch64): Use Uti constraint.
21858 * config/aarch64/aarch64.c (aarch64_mov128_immediate): New function.
21859 (aarch64_legitimate_constant_p): Just support CONST_DOUBLE
21860 SF/DF/TF mode to avoid creating illegal CONST_WIDE_INT immediates.
21861 * config/aarch64/aarch64-protos.h (aarch64_mov128_immediate):
21862 Add declaration.
21863 * config/aarch64/constraints.md (aarch64_movti_operand):
21864 Limit immediates.
21865 * config/aarch64/predicates.md (Uti): Add new constraint.
21866
21867 2018-01-17 Carl Love <cel@us.ibm.com>
21868
21869 * config/rs6000/vsx.md (define_expand xl_len_r,
21870 define_expand stxvl, define_expand *stxvl): Add match_dup argument.
21871 (define_insn): Add, match_dup 1 argument to define_insn stxvll and
21872 lxvll.
21873 (define_expand, define_insn): Move the shift left from the
21874 define_insn to the define_expand for lxvl and stxvl instructions.
21875 * config/rs6000/rs6000-builtin.def (BU_P9V_64BIT_VSX_2): Change LXVL
21876 and XL_LEN_R definitions to PURE.
21877
21878 2018-01-17 Uros Bizjak <ubizjak@gmail.com>
21879
21880 * config/i386/i386.c (indirect_thunk_name): Declare regno
21881 as unsigned int. Compare regno with INVALID_REGNUM.
21882 (output_indirect_thunk): Ditto.
21883 (output_indirect_thunk_function): Ditto.
21884 (ix86_code_end): Declare regno as unsigned int. Use INVALID_REGNUM
21885 in the call to output_indirect_thunk_function.
21886
21887 2018-01-17 Richard Sandiford <richard.sandiford@linaro.org>
21888
21889 PR middle-end/83884
21890 * expr.c (expand_expr_real_1): Use the size of GET_MODE (op0)
21891 rather than the size of inner_type to determine the stack slot size
21892 when handling VIEW_CONVERT_EXPRs on strict-alignment targets.
21893
21894 2018-01-16 Sebastian Peryt <sebastian.peryt@intel.com>
21895
21896 PR target/83546
21897 * config/i386/i386.c (ix86_option_override_internal): Add PTA_RDRND
21898 to PTA_SILVERMONT.
21899
21900 2018-01-16 Michael Meissner <meissner@linux.vnet.ibm.com>
21901
21902 * config.gcc (powerpc*-linux*-*): Add support for 64-bit little
21903 endian Linux systems to optionally enable multilibs for selecting
21904 the long double type if the user configured an explicit type.
21905 * config/rs6000/rs6000.h (TARGET_IEEEQUAD_MULTILIB): Indicate we
21906 have no long double multilibs if not defined.
21907 * config/rs6000/rs6000.c (rs6000_option_override_internal): Do not
21908 warn if the user used -mabi={ieee,ibm}longdouble and we built
21909 multilibs for long double.
21910 * config/rs6000/linux64.h (MULTILIB_DEFAULTS_IEEE): Define as the
21911 appropriate multilib option.
21912 (MULTILIB_DEFAULTS): Add MULTILIB_DEFAULTS_IEEE to the default
21913 multilib options.
21914 * config/rs6000/t-ldouble-linux64le-ibm: New configuration files
21915 for building long double multilibs.
21916 * config/rs6000/t-ldouble-linux64le-ieee: Likewise.
21917
21918 2018-01-16 John David Anglin <danglin@gcc.gnu.org>
21919
21920 * config.gcc (hppa*-*-linux*): Change callee copies ABI to caller
21921 copies.
21922
21923 * config/pa.h (MALLOC_ABI_ALIGNMENT): Set 32-bit alignment default to
21924 64 bits.
21925 * config/pa/pa32-linux.h (MALLOC_ABI_ALIGNMENT): Set alignment to
21926 128 bits.
21927
21928 * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Cleanup type and mode
21929 variables.
21930
21931 * config/pa/pa.c (pa_function_arg_size): Apply CEIL to GET_MODE_SIZE
21932 return value.
21933
21934 2018-01-16 Eric Botcazou <ebotcazou@adacore.com>
21935
21936 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For an
21937 ADDR_EXPR, do not count the offset of a COMPONENT_REF twice.
21938
21939 2018-01-16 Kelvin Nilsen <kelvin@gcc.gnu.org>
21940
21941 * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Generate
21942 different rtl trees depending on TARGET_64BIT.
21943 (rs6000_gen_lvx): Likewise.
21944
21945 2018-01-16 Eric Botcazou <ebotcazou@adacore.com>
21946
21947 * config/visium/visium.md (nop): Tweak comment.
21948 (hazard_nop): Likewise.
21949
21950 2018-01-16 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
21951
21952 * config/rs6000/rs6000.c (rs6000_opt_vars): Add entry for
21953 -mspeculate-indirect-jumps.
21954 * config/rs6000/rs6000.md (*call_indirect_elfv2<mode>): Disable
21955 for -mno-speculate-indirect-jumps.
21956 (*call_indirect_elfv2<mode>_nospec): New define_insn.
21957 (*call_value_indirect_elfv2<mode>): Disable for
21958 -mno-speculate-indirect-jumps.
21959 (*call_value_indirect_elfv2<mode>_nospec): New define_insn.
21960 (indirect_jump): Emit different RTL for
21961 -mno-speculate-indirect-jumps.
21962 (*indirect_jump<mode>): Disable for
21963 -mno-speculate-indirect-jumps.
21964 (*indirect_jump<mode>_nospec): New define_insn.
21965 (tablejump): Emit different RTL for
21966 -mno-speculate-indirect-jumps.
21967 (tablejumpsi): Disable for -mno-speculate-indirect-jumps.
21968 (tablejumpsi_nospec): New define_expand.
21969 (tablejumpdi): Disable for -mno-speculate-indirect-jumps.
21970 (tablejumpdi_nospec): New define_expand.
21971 (*tablejump<mode>_internal1): Disable for
21972 -mno-speculate-indirect-jumps.
21973 (*tablejump<mode>_internal1_nospec): New define_insn.
21974 * config/rs6000/rs6000.opt (mspeculate-indirect-jumps): New
21975 option.
21976
21977 2018-01-16 Artyom Skrobov tyomitch@gmail.com
21978
21979 * caller-save.c (insert_save): Drop unnecessary parameter. All
21980 callers updated.
21981
21982 2018-01-16 Jakub Jelinek <jakub@redhat.com>
21983 Richard Biener <rguenth@suse.de>
21984
21985 PR libgomp/83590
21986 * gimplify.c (gimplify_one_sizepos): For is_gimple_constant (expr)
21987 return early, inline manually is_gimple_sizepos. Make sure if we
21988 call gimplify_expr we don't end up with a gimple constant.
21989 * tree.c (variably_modified_type_p): Don't return true for
21990 is_gimple_constant (_t). Inline manually is_gimple_sizepos.
21991 * gimplify.h (is_gimple_sizepos): Remove.
21992
21993 2018-01-16 Richard Sandiford <richard.sandiford@linaro.org>
21994
21995 PR tree-optimization/83857
21996 * tree-vect-loop.c (vect_analyze_loop_operations): Don't call
21997 vectorizable_live_operation for pure SLP statements.
21998 (vectorizable_live_operation): Handle PHIs.
21999
22000 2018-01-16 Richard Biener <rguenther@suse.de>
22001
22002 PR tree-optimization/83867
22003 * tree-vect-stmts.c (vect_transform_stmt): Precompute
22004 nested_in_vect_loop_p since the scalar stmt may get invalidated.
22005
22006 2018-01-16 Jakub Jelinek <jakub@redhat.com>
22007
22008 PR c/83844
22009 * stor-layout.c (handle_warn_if_not_align): Use byte_position and
22010 multiple_of_p instead of unchecked tree_to_uhwi and UHWI check.
22011 If off is not INTEGER_CST, issue a may not be aligned warning
22012 rather than isn't aligned. Use isn%'t rather than isn't.
22013 * fold-const.c (multiple_of_p) <case BIT_AND_EXPR>: Don't fall through
22014 into MULT_EXPR.
22015 <case MULT_EXPR>: Improve the case when bottom and one of the
22016 MULT_EXPR operands are INTEGER_CSTs and bottom is multiple of that
22017 operand, in that case check if the other operand is multiple of
22018 bottom divided by the INTEGER_CST operand.
22019
22020 2018-01-16 Richard Sandiford <richard.sandiford@linaro.org>
22021
22022 PR target/83858
22023 * config/pa/pa.h (FUNCTION_ARG_SIZE): Delete.
22024 * config/pa/pa-protos.h (pa_function_arg_size): Declare.
22025 * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Use
22026 pa_function_arg_size instead of FUNCTION_ARG_SIZE.
22027 * config/pa/pa.c (pa_function_arg_advance): Likewise.
22028 (pa_function_arg, pa_arg_partial_bytes): Likewise.
22029 (pa_function_arg_size): New function.
22030
22031 2018-01-16 Richard Sandiford <richard.sandiford@linaro.org>
22032
22033 * fold-const.c (fold_ternary_loc): Construct the vec_perm_indices
22034 in a separate statement.
22035
22036 2018-01-16 Richard Sandiford <richard.sandiford@linaro.org>
22037
22038 PR tree-optimization/83847
22039 * tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Don't
22040 group gathers and scatters.
22041
22042 2018-01-16 Jakub Jelinek <jakub@redhat.com>
22043
22044 PR rtl-optimization/86620
22045 * params.def (max-sched-ready-insns): Bump minimum value to 1.
22046
22047 PR rtl-optimization/83213
22048 * recog.c (peep2_attempt): Copy over CROSSING_JUMP_P from peepinsn
22049 to last if both are JUMP_INSNs.
22050
22051 PR tree-optimization/83843
22052 * gimple-ssa-store-merging.c
22053 (imm_store_chain_info::output_merged_store): Handle bit_not_p on
22054 store_immediate_info for bswap/nop orig_stores.
22055
22056 2018-01-15 Andrew Waterman <andrew@sifive.com>
22057
22058 * config/riscv/riscv.c (riscv_rtx_costs) <MULT>: Increase cost if
22059 !TARGET_MUL.
22060 <UDIV>: Increase cost if !TARGET_DIV.
22061
22062 2018-01-15 Segher Boessenkool <segher@kernel.crashing.org>
22063
22064 * config/rs6000/rs6000.md (define_attr "type"): Remove delayed_cr.
22065 (define_attr "cr_logical_3op"): New.
22066 (cceq_ior_compare): Adjust.
22067 (cceq_ior_compare_complement): Adjust.
22068 (*cceq_rev_compare): Adjust.
22069 * config/rs6000/rs6000.c (rs6000_adjust_cost): Adjust.
22070 (is_cracked_insn): Adjust.
22071 (insn_must_be_first_in_group): Adjust.
22072 * config/rs6000/40x.md: Adjust.
22073 * config/rs6000/440.md: Adjust.
22074 * config/rs6000/476.md: Adjust.
22075 * config/rs6000/601.md: Adjust.
22076 * config/rs6000/603.md: Adjust.
22077 * config/rs6000/6xx.md: Adjust.
22078 * config/rs6000/7450.md: Adjust.
22079 * config/rs6000/7xx.md: Adjust.
22080 * config/rs6000/8540.md: Adjust.
22081 * config/rs6000/cell.md: Adjust.
22082 * config/rs6000/e300c2c3.md: Adjust.
22083 * config/rs6000/e500mc.md: Adjust.
22084 * config/rs6000/e500mc64.md: Adjust.
22085 * config/rs6000/e5500.md: Adjust.
22086 * config/rs6000/e6500.md: Adjust.
22087 * config/rs6000/mpc.md: Adjust.
22088 * config/rs6000/power4.md: Adjust.
22089 * config/rs6000/power5.md: Adjust.
22090 * config/rs6000/power6.md: Adjust.
22091 * config/rs6000/power7.md: Adjust.
22092 * config/rs6000/power8.md: Adjust.
22093 * config/rs6000/power9.md: Adjust.
22094 * config/rs6000/rs64.md: Adjust.
22095 * config/rs6000/titan.md: Adjust.
22096
22097 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
22098
22099 * config/i386/predicates.md (indirect_branch_operand): Rewrite
22100 ix86_indirect_branch_register logic.
22101
22102 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
22103
22104 * config/i386/constraints.md (Bs): Update
22105 ix86_indirect_branch_register check. Don't check
22106 ix86_indirect_branch_register with GOT_memory_operand.
22107 (Bw): Likewise.
22108 * config/i386/predicates.md (GOT_memory_operand): Don't check
22109 ix86_indirect_branch_register here.
22110 (GOT32_symbol_operand): Likewise.
22111
22112 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
22113
22114 * config/i386/predicates.md (constant_call_address_operand):
22115 Rewrite ix86_indirect_branch_register logic.
22116 (sibcall_insn_operand): Likewise.
22117
22118 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
22119
22120 * config/i386/constraints.md (Bs): Replace
22121 ix86_indirect_branch_thunk_register with
22122 ix86_indirect_branch_register.
22123 (Bw): Likewise.
22124 * config/i386/i386.md (indirect_jump): Likewise.
22125 (tablejump): Likewise.
22126 (*sibcall_memory): Likewise.
22127 (*sibcall_value_memory): Likewise.
22128 Peepholes of indirect call and jump via memory: Likewise.
22129 * config/i386/i386.opt: Likewise.
22130 * config/i386/predicates.md (indirect_branch_operand): Likewise.
22131 (GOT_memory_operand): Likewise.
22132 (call_insn_operand): Likewise.
22133 (sibcall_insn_operand): Likewise.
22134 (GOT32_symbol_operand): Likewise.
22135
22136 2018-01-15 Jakub Jelinek <jakub@redhat.com>
22137
22138 PR middle-end/83837
22139 * omp-expand.c (expand_omp_atomic_pipeline): Use loaded_val
22140 type rather than type addr's type points to.
22141 (expand_omp_atomic_mutex): Likewise.
22142 (expand_omp_atomic): Likewise.
22143
22144 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
22145
22146 PR target/83839
22147 * config/i386/i386.c (output_indirect_thunk_function): Use
22148 ASM_OUTPUT_LABEL, instead of ASM_OUTPUT_DEF, for TARGET_MACHO
22149 for __x86_return_thunk.
22150
22151 2018-01-15 Richard Biener <rguenther@suse.de>
22152
22153 PR middle-end/83850
22154 * expmed.c (extract_bit_field_1): Fix typo.
22155
22156 2018-01-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
22157
22158 PR target/83687
22159 * config/arm/iterators.md (VF): New mode iterator.
22160 * config/arm/neon.md (neon_vabd<mode>_2): Use the above.
22161 Remove integer-related logic from pattern.
22162 (neon_vabd<mode>_3): Likewise.
22163
22164 2018-01-15 Jakub Jelinek <jakub@redhat.com>
22165
22166 PR middle-end/82694
22167 * common.opt (fstrict-overflow): No longer an alias.
22168 (fwrapv-pointer): New option.
22169 * tree.h (TYPE_OVERFLOW_WRAPS, TYPE_OVERFLOW_UNDEFINED): Define
22170 also for pointer types based on flag_wrapv_pointer.
22171 * opts.c (common_handle_option) <case OPT_fstrict_overflow>: Set
22172 opts->x_flag_wrap[pv] to !value, clear opts->x_flag_trapv if
22173 opts->x_flag_wrapv got set.
22174 * fold-const.c (fold_comparison, fold_binary_loc): Revert 2017-08-01
22175 changes, just use TYPE_OVERFLOW_UNDEFINED on pointer type instead of
22176 POINTER_TYPE_OVERFLOW_UNDEFINED.
22177 * match.pd: Likewise in address comparison pattern.
22178 * doc/invoke.texi: Document -fwrapv and -fstrict-overflow.
22179
22180 2018-01-15 Richard Biener <rguenther@suse.de>
22181
22182 PR lto/83804
22183 * tree.c (free_lang_data_in_type): Always unlink TYPE_DECLs
22184 from TYPE_FIELDS. Free TYPE_BINFO if not used by devirtualization.
22185 Reset type names to their identifier if their TYPE_DECL doesn't
22186 have linkage (and thus is used for ODR and devirt).
22187 (save_debug_info_for_decl): Remove.
22188 (save_debug_info_for_type): Likewise.
22189 (add_tree_to_fld_list): Adjust.
22190 * tree-pretty-print.c (dump_generic_node): Make dumping of
22191 type names more robust.
22192
22193 2018-01-15 Richard Biener <rguenther@suse.de>
22194
22195 * BASE-VER: Bump to 8.0.1.
22196
22197 2018-01-14 Martin Sebor <msebor@redhat.com>
22198
22199 PR other/83508
22200 * builtins.c (check_access): Avoid warning when the no-warning bit
22201 is set.
22202
22203 2018-01-14 Cory Fields <cory-nospam-@coryfields.com>
22204
22205 * tree-ssa-loop-im.c (sort_bbs_in_loop_postorder_cmp): Stabilize sort.
22206 * ira-color (allocno_hard_regs_compare): Likewise.
22207
22208 2018-01-14 Nathan Rossi <nathan@nathanrossi.com>
22209
22210 PR target/83013
22211 * config/microblaze/microblaze.c (microblaze_asm_output_ident):
22212 Use .pushsection/.popsection.
22213
22214 2018-01-14 Martin Sebor <msebor@redhat.com>
22215
22216 PR c++/81327
22217 * doc/invoke.texi (-Wlass-memaccess): Document suppression by casting.
22218
22219 2018-01-14 Jakub Jelinek <jakub@redhat.com>
22220
22221 * config.gcc (i[34567]86-*-*): Remove one duplicate gfniintrin.h
22222 entry from extra_headers.
22223 (x86_64-*-*): Remove two duplicate gfniintrin.h entries from
22224 extra_headers, make the list bitwise identical to the i?86-*-* one.
22225
22226 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
22227
22228 * config/i386/i386.c (ix86_set_indirect_branch_type): Disallow
22229 -mcmodel=large with -mindirect-branch=thunk,
22230 -mindirect-branch=thunk-extern, -mfunction-return=thunk and
22231 -mfunction-return=thunk-extern.
22232 * doc/invoke.texi: Document -mcmodel=large is incompatible with
22233 -mindirect-branch=thunk, -mindirect-branch=thunk-extern,
22234 -mfunction-return=thunk and -mfunction-return=thunk-extern.
22235
22236 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
22237
22238 * config/i386/i386.c (print_reg): Print the name of the full
22239 integer register without '%'.
22240 (ix86_print_operand): Handle 'V'.
22241 * doc/extend.texi: Document 'V' modifier.
22242
22243 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
22244
22245 * config/i386/constraints.md (Bs): Disallow memory operand for
22246 -mindirect-branch-register.
22247 (Bw): Likewise.
22248 * config/i386/predicates.md (indirect_branch_operand): Likewise.
22249 (GOT_memory_operand): Likewise.
22250 (call_insn_operand): Likewise.
22251 (sibcall_insn_operand): Likewise.
22252 (GOT32_symbol_operand): Likewise.
22253 * config/i386/i386.md (indirect_jump): Call convert_memory_address
22254 for -mindirect-branch-register.
22255 (tablejump): Likewise.
22256 (*sibcall_memory): Likewise.
22257 (*sibcall_value_memory): Likewise.
22258 Disallow peepholes of indirect call and jump via memory for
22259 -mindirect-branch-register.
22260 (*call_pop): Replace m with Bw.
22261 (*call_value_pop): Likewise.
22262 (*sibcall_pop_memory): Replace m with Bs.
22263 * config/i386/i386.opt (mindirect-branch-register): New option.
22264 * doc/invoke.texi: Document -mindirect-branch-register option.
22265
22266 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
22267
22268 * config/i386/i386-protos.h (ix86_output_function_return): New.
22269 * config/i386/i386.c (ix86_set_indirect_branch_type): Also
22270 set function_return_type.
22271 (indirect_thunk_name): Add ret_p to indicate thunk for function
22272 return.
22273 (output_indirect_thunk_function): Pass false to
22274 indirect_thunk_name.
22275 (ix86_output_indirect_branch_via_reg): Likewise.
22276 (ix86_output_indirect_branch_via_push): Likewise.
22277 (output_indirect_thunk_function): Create alias for function
22278 return thunk if regno < 0.
22279 (ix86_output_function_return): New function.
22280 (ix86_handle_fndecl_attribute): Handle function_return.
22281 (ix86_attribute_table): Add function_return.
22282 * config/i386/i386.h (machine_function): Add
22283 function_return_type.
22284 * config/i386/i386.md (simple_return_internal): Use
22285 ix86_output_function_return.
22286 (simple_return_internal_long): Likewise.
22287 * config/i386/i386.opt (mfunction-return=): New option.
22288 (indirect_branch): Mention -mfunction-return=.
22289 * doc/extend.texi: Document function_return function attribute.
22290 * doc/invoke.texi: Document -mfunction-return= option.
22291
22292 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
22293
22294 * config/i386/i386-opts.h (indirect_branch): New.
22295 * config/i386/i386-protos.h (ix86_output_indirect_jmp): Likewise.
22296 * config/i386/i386.c (ix86_using_red_zone): Disallow red-zone
22297 with local indirect jump when converting indirect call and jump.
22298 (ix86_set_indirect_branch_type): New.
22299 (ix86_set_current_function): Call ix86_set_indirect_branch_type.
22300 (indirectlabelno): New.
22301 (indirect_thunk_needed): Likewise.
22302 (indirect_thunk_bnd_needed): Likewise.
22303 (indirect_thunks_used): Likewise.
22304 (indirect_thunks_bnd_used): Likewise.
22305 (INDIRECT_LABEL): Likewise.
22306 (indirect_thunk_name): Likewise.
22307 (output_indirect_thunk): Likewise.
22308 (output_indirect_thunk_function): Likewise.
22309 (ix86_output_indirect_branch_via_reg): Likewise.
22310 (ix86_output_indirect_branch_via_push): Likewise.
22311 (ix86_output_indirect_branch): Likewise.
22312 (ix86_output_indirect_jmp): Likewise.
22313 (ix86_code_end): Call output_indirect_thunk_function if needed.
22314 (ix86_output_call_insn): Call ix86_output_indirect_branch if
22315 needed.
22316 (ix86_handle_fndecl_attribute): Handle indirect_branch.
22317 (ix86_attribute_table): Add indirect_branch.
22318 * config/i386/i386.h (machine_function): Add indirect_branch_type
22319 and has_local_indirect_jump.
22320 * config/i386/i386.md (indirect_jump): Set has_local_indirect_jump
22321 to true.
22322 (tablejump): Likewise.
22323 (*indirect_jump): Use ix86_output_indirect_jmp.
22324 (*tablejump_1): Likewise.
22325 (simple_return_indirect_internal): Likewise.
22326 * config/i386/i386.opt (mindirect-branch=): New option.
22327 (indirect_branch): New.
22328 (keep): Likewise.
22329 (thunk): Likewise.
22330 (thunk-inline): Likewise.
22331 (thunk-extern): Likewise.
22332 * doc/extend.texi: Document indirect_branch function attribute.
22333 * doc/invoke.texi: Document -mindirect-branch= option.
22334
22335 2018-01-14 Jan Hubicka <hubicka@ucw.cz>
22336
22337 PR ipa/83051
22338 * ipa-inline.c (edge_badness): Tolerate roundoff errors.
22339
22340 2018-01-14 Richard Sandiford <richard.sandiford@linaro.org>
22341
22342 * ipa-inline.c (want_inline_small_function_p): Return false if
22343 inlining has already failed with CIF_FINAL_ERROR.
22344 (update_caller_keys): Call want_inline_small_function_p before
22345 can_inline_edge_p.
22346 (update_callee_keys): Likewise.
22347
22348 2018-01-10 Kelvin Nilsen <kelvin@gcc.gnu.org>
22349
22350 * config/rs6000/rs6000-p8swap.c (rs6000_sum_of_two_registers_p):
22351 New function.
22352 (rs6000_quadword_masked_address_p): Likewise.
22353 (quad_aligned_load_p): Likewise.
22354 (quad_aligned_store_p): Likewise.
22355 (const_load_sequence_p): Add comment to describe the outer-most loop.
22356 (mimic_memory_attributes_and_flags): New function.
22357 (rs6000_gen_stvx): Likewise.
22358 (replace_swapped_aligned_store): Likewise.
22359 (rs6000_gen_lvx): Likewise.
22360 (replace_swapped_aligned_load): Likewise.
22361 (replace_swapped_load_constant): Capitalize argument name in
22362 comment describing this function.
22363 (rs6000_analyze_swaps): Add a third pass to search for vector loads
22364 and stores that access quad-word aligned addresses and replace
22365 with stvx or lvx instructions when appropriate.
22366 * config/rs6000/rs6000-protos.h (rs6000_sum_of_two_registers_p):
22367 New function prototype.
22368 (rs6000_quadword_masked_address_p): Likewise.
22369 (rs6000_gen_lvx): Likewise.
22370 (rs6000_gen_stvx): Likewise.
22371 * config/rs6000/vsx.md (*vsx_le_perm_load_<mode>): For modes
22372 VSX_D (V2DF, V2DI), modify this split to select lvx instruction
22373 when memory address is aligned.
22374 (*vsx_le_perm_load_<mode>): For modes VSX_W (V4SF, V4SI), modify
22375 this split to select lvx instruction when memory address is aligned.
22376 (*vsx_le_perm_load_v8hi): Modify this split to select lvx
22377 instruction when memory address is aligned.
22378 (*vsx_le_perm_load_v16qi): Likewise.
22379 (four unnamed splitters): Modify to select the stvx instruction
22380 when memory is aligned.
22381
22382 2018-01-13 Jan Hubicka <hubicka@ucw.cz>
22383
22384 * predict.c (determine_unlikely_bbs): Handle correctly BBs
22385 which appears in the queue multiple times.
22386
22387 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
22388 Alan Hayward <alan.hayward@arm.com>
22389 David Sherwood <david.sherwood@arm.com>
22390
22391 * tree-vectorizer.h (vec_lower_bound): New structure.
22392 (_loop_vec_info): Add check_nonzero and lower_bounds.
22393 (LOOP_VINFO_CHECK_NONZERO): New macro.
22394 (LOOP_VINFO_LOWER_BOUNDS): Likewise.
22395 (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Check lower_bounds too.
22396 * tree-data-ref.h (dr_with_seg_len): Add access_size and align
22397 fields. Make seg_len the distance travelled, not including the
22398 access size.
22399 (dr_direction_indicator): Declare.
22400 (dr_zero_step_indicator): Likewise.
22401 (dr_known_forward_stride_p): Likewise.
22402 * tree-data-ref.c: Include stringpool.h, tree-vrp.h and
22403 tree-ssanames.h.
22404 (runtime_alias_check_p): Allow runtime alias checks with
22405 variable strides.
22406 (operator ==): Compare access_size and align.
22407 (prune_runtime_alias_test_list): Rework for new distinction between
22408 the access_size and seg_len.
22409 (create_intersect_range_checks_index): Likewise. Cope with polynomial
22410 segment lengths.
22411 (get_segment_min_max): New function.
22412 (create_intersect_range_checks): Use it.
22413 (dr_step_indicator): New function.
22414 (dr_direction_indicator): Likewise.
22415 (dr_zero_step_indicator): Likewise.
22416 (dr_known_forward_stride_p): Likewise.
22417 * tree-loop-distribution.c (data_ref_segment_size): Return
22418 DR_STEP * (niters - 1).
22419 (compute_alias_check_pairs): Update call to the dr_with_seg_len
22420 constructor.
22421 * tree-vect-data-refs.c (vect_check_nonzero_value): New function.
22422 (vect_preserves_scalar_order_p): New function, split out from...
22423 (vect_analyze_data_ref_dependence): ...here. Check for zero steps.
22424 (vect_vfa_segment_size): Return DR_STEP * (length_factor - 1).
22425 (vect_vfa_access_size): New function.
22426 (vect_vfa_align): Likewise.
22427 (vect_compile_time_alias): Take access_size_a and access_b arguments.
22428 (dump_lower_bound): New function.
22429 (vect_check_lower_bound): Likewise.
22430 (vect_small_gap_p): Likewise.
22431 (vectorizable_with_step_bound_p): Likewise.
22432 (vect_prune_runtime_alias_test_list): Ignore cross-iteration
22433 depencies if the vectorization factor is 1. Convert the checks
22434 for nonzero steps into checks on the bounds of DR_STEP. Try using
22435 a bunds check for variable steps if the minimum required step is
22436 relatively small. Update calls to the dr_with_seg_len
22437 constructor and to vect_compile_time_alias.
22438 * tree-vect-loop-manip.c (vect_create_cond_for_lower_bounds): New
22439 function.
22440 (vect_loop_versioning): Call it.
22441 * tree-vect-loop.c (vect_analyze_loop_2): Clear LOOP_VINFO_LOWER_BOUNDS
22442 when retrying.
22443 (vect_estimate_min_profitable_iters): Account for any bounds checks.
22444
22445 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
22446 Alan Hayward <alan.hayward@arm.com>
22447 David Sherwood <david.sherwood@arm.com>
22448
22449 * doc/sourcebuild.texi (vect_scatter_store): Document.
22450 * optabs.def (scatter_store_optab, mask_scatter_store_optab): New
22451 optabs.
22452 * doc/md.texi (scatter_store@var{m}, mask_scatter_store@var{m}):
22453 Document.
22454 * genopinit.c (main): Add supports_vec_scatter_store and
22455 supports_vec_scatter_store_cached to target_optabs.
22456 * gimple.h (gimple_expr_type): Handle IFN_SCATTER_STORE and
22457 IFN_MASK_SCATTER_STORE.
22458 * internal-fn.def (SCATTER_STORE, MASK_SCATTER_STORE): New internal
22459 functions.
22460 * internal-fn.h (internal_store_fn_p): Declare.
22461 (internal_fn_stored_value_index): Likewise.
22462 * internal-fn.c (scatter_store_direct): New macro.
22463 (expand_scatter_store_optab_fn): New function.
22464 (direct_scatter_store_optab_supported_p): New macro.
22465 (internal_store_fn_p): New function.
22466 (internal_gather_scatter_fn_p): Handle IFN_SCATTER_STORE and
22467 IFN_MASK_SCATTER_STORE.
22468 (internal_fn_mask_index): Likewise.
22469 (internal_fn_stored_value_index): New function.
22470 (internal_gather_scatter_fn_supported_p): Adjust operand numbers
22471 for scatter stores.
22472 * optabs-query.h (supports_vec_scatter_store_p): Declare.
22473 * optabs-query.c (supports_vec_scatter_store_p): New function.
22474 * tree-vectorizer.h (vect_get_store_rhs): Declare.
22475 * tree-vect-data-refs.c (vect_analyze_data_ref_access): Return
22476 true for scatter stores.
22477 (vect_gather_scatter_fn_p): Handle scatter stores too.
22478 (vect_check_gather_scatter): Consider using scatter stores if
22479 supports_vec_scatter_store_p.
22480 * tree-vect-patterns.c (vect_try_gather_scatter_pattern): Handle
22481 scatter stores too.
22482 * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
22483 internal_fn_stored_value_index.
22484 (check_load_store_masking): Handle scatter stores too.
22485 (vect_get_store_rhs): Make public.
22486 (vectorizable_call): Use internal_store_fn_p.
22487 (vectorizable_store): Handle scatter store internal functions.
22488 (vect_transform_stmt): Compare GROUP_STORE_COUNT with GROUP_SIZE
22489 when deciding whether the end of the group has been reached.
22490 * config/aarch64/aarch64.md (UNSPEC_ST1_SCATTER): New unspec.
22491 * config/aarch64/aarch64-sve.md (scatter_store<mode>): New expander.
22492 (mask_scatter_store<mode>): New insns.
22493
22494 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
22495 Alan Hayward <alan.hayward@arm.com>
22496 David Sherwood <david.sherwood@arm.com>
22497
22498 * tree-vectorizer.h (vect_gather_scatter_fn_p): Declare.
22499 * tree-vect-data-refs.c (vect_gather_scatter_fn_p): Make public.
22500 * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): New
22501 function.
22502 (vect_use_strided_gather_scatters_p): Take a masked_p argument.
22503 Use vect_truncate_gather_scatter_offset if we can't treat the
22504 operation as a normal gather load or scatter store.
22505 (get_group_load_store_type): Take the gather_scatter_info
22506 as argument. Try using a gather load or scatter store for
22507 single-element groups.
22508 (get_load_store_type): Update calls to get_group_load_store_type
22509 and vect_use_strided_gather_scatters_p.
22510
22511 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
22512 Alan Hayward <alan.hayward@arm.com>
22513 David Sherwood <david.sherwood@arm.com>
22514
22515 * tree-vectorizer.h (vect_create_data_ref_ptr): Take an extra
22516 optional tree argument.
22517 * tree-vect-data-refs.c (vect_check_gather_scatter): Check for
22518 null target hooks.
22519 (vect_create_data_ref_ptr): Take the iv_step as an optional argument,
22520 but continue to use the current value as a fallback.
22521 (bump_vector_ptr): Use operand_equal_p rather than tree_int_cst_compare
22522 to compare the updates.
22523 * tree-vect-stmts.c (vect_use_strided_gather_scatters_p): New function.
22524 (get_load_store_type): Use it when handling a strided access.
22525 (vect_get_strided_load_store_ops): New function.
22526 (vect_get_data_ptr_increment): Likewise.
22527 (vectorizable_load): Handle strided gather loads. Always pass
22528 a step to vect_create_data_ref_ptr and bump_vector_ptr.
22529
22530 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
22531 Alan Hayward <alan.hayward@arm.com>
22532 David Sherwood <david.sherwood@arm.com>
22533
22534 * doc/md.texi (gather_load@var{m}): Document.
22535 (mask_gather_load@var{m}): Likewise.
22536 * genopinit.c (main): Add supports_vec_gather_load and
22537 supports_vec_gather_load_cached to target_optabs.
22538 * optabs-tree.c (init_tree_optimization_optabs): Use
22539 ggc_cleared_alloc to allocate target_optabs.
22540 * optabs.def (gather_load_optab, mask_gather_laod_optab): New optabs.
22541 * internal-fn.def (GATHER_LOAD, MASK_GATHER_LOAD): New internal
22542 functions.
22543 * internal-fn.h (internal_load_fn_p): Declare.
22544 (internal_gather_scatter_fn_p): Likewise.
22545 (internal_fn_mask_index): Likewise.
22546 (internal_gather_scatter_fn_supported_p): Likewise.
22547 * internal-fn.c (gather_load_direct): New macro.
22548 (expand_gather_load_optab_fn): New function.
22549 (direct_gather_load_optab_supported_p): New macro.
22550 (direct_internal_fn_optab): New function.
22551 (internal_load_fn_p): Likewise.
22552 (internal_gather_scatter_fn_p): Likewise.
22553 (internal_fn_mask_index): Likewise.
22554 (internal_gather_scatter_fn_supported_p): Likewise.
22555 * optabs-query.c (supports_at_least_one_mode_p): New function.
22556 (supports_vec_gather_load_p): Likewise.
22557 * optabs-query.h (supports_vec_gather_load_p): Declare.
22558 * tree-vectorizer.h (gather_scatter_info): Add ifn, element_type
22559 and memory_type field.
22560 (NUM_PATTERNS): Bump to 15.
22561 * tree-vect-data-refs.c: Include internal-fn.h.
22562 (vect_gather_scatter_fn_p): New function.
22563 (vect_describe_gather_scatter_call): Likewise.
22564 (vect_check_gather_scatter): Try using internal functions for
22565 gather loads. Recognize existing calls to a gather load function.
22566 (vect_analyze_data_refs): Consider using gather loads if
22567 supports_vec_gather_load_p.
22568 * tree-vect-patterns.c (vect_get_load_store_mask): New function.
22569 (vect_get_gather_scatter_offset_type): Likewise.
22570 (vect_convert_mask_for_vectype): Likewise.
22571 (vect_add_conversion_to_patterm): Likewise.
22572 (vect_try_gather_scatter_pattern): Likewise.
22573 (vect_recog_gather_scatter_pattern): New pattern recognizer.
22574 (vect_vect_recog_func_ptrs): Add it.
22575 * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
22576 internal_fn_mask_index and internal_gather_scatter_fn_p.
22577 (check_load_store_masking): Take the gather_scatter_info as an
22578 argument and handle gather loads.
22579 (vect_get_gather_scatter_ops): New function.
22580 (vectorizable_call): Check internal_load_fn_p.
22581 (vectorizable_load): Likewise. Handle gather load internal
22582 functions.
22583 (vectorizable_store): Update call to check_load_store_masking.
22584 * config/aarch64/aarch64.md (UNSPEC_LD1_GATHER): New unspec.
22585 * config/aarch64/iterators.md (SVE_S, SVE_D): New mode iterators.
22586 * config/aarch64/predicates.md (aarch64_gather_scale_operand_w)
22587 (aarch64_gather_scale_operand_d): New predicates.
22588 * config/aarch64/aarch64-sve.md (gather_load<mode>): New expander.
22589 (mask_gather_load<mode>): New insns.
22590
22591 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
22592 Alan Hayward <alan.hayward@arm.com>
22593 David Sherwood <david.sherwood@arm.com>
22594
22595 * optabs.def (fold_left_plus_optab): New optab.
22596 * doc/md.texi (fold_left_plus_@var{m}): Document.
22597 * internal-fn.def (IFN_FOLD_LEFT_PLUS): New internal function.
22598 * internal-fn.c (fold_left_direct): Define.
22599 (expand_fold_left_optab_fn): Likewise.
22600 (direct_fold_left_optab_supported_p): Likewise.
22601 * fold-const-call.c (fold_const_fold_left): New function.
22602 (fold_const_call): Use it to fold CFN_FOLD_LEFT_PLUS.
22603 * tree-parloops.c (valid_reduction_p): New function.
22604 (gather_scalar_reductions): Use it.
22605 * tree-vectorizer.h (FOLD_LEFT_REDUCTION): New vect_reduction_type.
22606 (vect_finish_replace_stmt): Declare.
22607 * tree-vect-loop.c (fold_left_reduction_fn): New function.
22608 (needs_fold_left_reduction_p): New function, split out from...
22609 (vect_is_simple_reduction): ...here. Accept reductions that
22610 forbid reassociation, but give them type FOLD_LEFT_REDUCTION.
22611 (vect_force_simple_reduction): Also store the reduction type in
22612 the assignment's STMT_VINFO_REDUC_TYPE.
22613 (vect_model_reduction_cost): Handle FOLD_LEFT_REDUCTION.
22614 (merge_with_identity): New function.
22615 (vect_expand_fold_left): Likewise.
22616 (vectorize_fold_left_reduction): Likewise.
22617 (vectorizable_reduction): Handle FOLD_LEFT_REDUCTION. Leave the
22618 scalar phi in place for it. Check for target support and reject
22619 cases that would reassociate the operation. Defer the transform
22620 phase to vectorize_fold_left_reduction.
22621 * config/aarch64/aarch64.md (UNSPEC_FADDA): New unspec.
22622 * config/aarch64/aarch64-sve.md (fold_left_plus_<mode>): New expander.
22623 (*fold_left_plus_<mode>, *pred_fold_left_plus_<mode>): New insns.
22624
22625 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
22626
22627 * tree-if-conv.c (predicate_mem_writes): Remove redundant
22628 call to ifc_temp_var.
22629
22630 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
22631 Alan Hayward <alan.hayward@arm.com>
22632 David Sherwood <david.sherwood@arm.com>
22633
22634 * target.def (legitimize_address_displacement): Take the original
22635 offset as a poly_int.
22636 * targhooks.h (default_legitimize_address_displacement): Update
22637 accordingly.
22638 * targhooks.c (default_legitimize_address_displacement): Likewise.
22639 * doc/tm.texi: Regenerate.
22640 * lra-constraints.c (base_plus_disp_to_reg): Take the displacement
22641 as an argument, moving assert of ad->disp == ad->disp_term to...
22642 (process_address_1): ...here. Update calls to base_plus_disp_to_reg.
22643 Try calling targetm.legitimize_address_displacement before expanding
22644 the address rather than afterwards, and adjust for the new interface.
22645 * config/aarch64/aarch64.c (aarch64_legitimize_address_displacement):
22646 Match the new hook interface. Handle SVE addresses.
22647 * config/sh/sh.c (sh_legitimize_address_displacement): Make the
22648 new hook interface.
22649
22650 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
22651
22652 * Makefile.in (OBJS): Add early-remat.o.
22653 * target.def (select_early_remat_modes): New hook.
22654 * doc/tm.texi.in (TARGET_SELECT_EARLY_REMAT_MODES): New hook.
22655 * doc/tm.texi: Regenerate.
22656 * targhooks.h (default_select_early_remat_modes): Declare.
22657 * targhooks.c (default_select_early_remat_modes): New function.
22658 * timevar.def (TV_EARLY_REMAT): New timevar.
22659 * passes.def (pass_early_remat): New pass.
22660 * tree-pass.h (make_pass_early_remat): Declare.
22661 * early-remat.c: New file.
22662 * config/aarch64/aarch64.c (aarch64_select_early_remat_modes): New
22663 function.
22664 (TARGET_SELECT_EARLY_REMAT_MODES): Define.
22665
22666 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
22667 Alan Hayward <alan.hayward@arm.com>
22668 David Sherwood <david.sherwood@arm.com>
22669
22670 * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Replace
22671 vfm1 with a bound_epilog parameter.
22672 (vect_do_peeling): Update calls accordingly, and move the prologue
22673 call earlier in the function. Treat the base bound_epilog as 0 for
22674 fully-masked loops and retain vf - 1 for other loops. Add 1 to
22675 this base when peeling for gaps.
22676 * tree-vect-loop.c (vect_analyze_loop_2): Allow peeling for gaps
22677 with fully-masked loops.
22678 (vect_estimate_min_profitable_iters): Handle the single peeled
22679 iteration in that case.
22680
22681 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
22682 Alan Hayward <alan.hayward@arm.com>
22683 David Sherwood <david.sherwood@arm.com>
22684
22685 * tree-vect-data-refs.c (vect_analyze_group_access_1): Allow
22686 single-element interleaving even if the size is not a power of 2.
22687 * tree-vect-stmts.c (get_load_store_type): Disallow elementwise
22688 accesses for single-element interleaving if the group size is
22689 not a power of 2.
22690
22691 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
22692 Alan Hayward <alan.hayward@arm.com>
22693 David Sherwood <david.sherwood@arm.com>
22694
22695 * doc/md.texi (fold_extract_last_@var{m}): Document.
22696 * doc/sourcebuild.texi (vect_fold_extract_last): Likewise.
22697 * optabs.def (fold_extract_last_optab): New optab.
22698 * internal-fn.def (FOLD_EXTRACT_LAST): New internal function.
22699 * internal-fn.c (fold_extract_direct): New macro.
22700 (expand_fold_extract_optab_fn): Likewise.
22701 (direct_fold_extract_optab_supported_p): Likewise.
22702 * tree-vectorizer.h (EXTRACT_LAST_REDUCTION): New vect_reduction_type.
22703 * tree-vect-loop.c (vect_model_reduction_cost): Handle
22704 EXTRACT_LAST_REDUCTION.
22705 (get_initial_def_for_reduction): Do not create an initial vector
22706 for EXTRACT_LAST_REDUCTION reductions.
22707 (vectorizable_reduction): Leave the scalar phi in place for
22708 EXTRACT_LAST_REDUCTIONs. Try using EXTRACT_LAST_REDUCTION
22709 ahead of INTEGER_INDUC_COND_REDUCTION. Do not check for an
22710 epilogue code for EXTRACT_LAST_REDUCTION and defer the
22711 transform phase to vectorizable_condition.
22712 * tree-vect-stmts.c (vect_finish_stmt_generation_1): New function,
22713 split out from...
22714 (vect_finish_stmt_generation): ...here.
22715 (vect_finish_replace_stmt): New function.
22716 (vectorizable_condition): Handle EXTRACT_LAST_REDUCTION.
22717 * config/aarch64/aarch64-sve.md (fold_extract_last_<mode>): New
22718 pattern.
22719 * config/aarch64/aarch64.md (UNSPEC_CLASTB): New unspec.
22720
22721 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
22722 Alan Hayward <alan.hayward@arm.com>
22723 David Sherwood <david.sherwood@arm.com>
22724
22725 * doc/md.texi (extract_last_@var{m}): Document.
22726 * optabs.def (extract_last_optab): New optab.
22727 * internal-fn.def (EXTRACT_LAST): New internal function.
22728 * internal-fn.c (cond_unary_direct): New macro.
22729 (expand_cond_unary_optab_fn): Likewise.
22730 (direct_cond_unary_optab_supported_p): Likewise.
22731 * tree-vect-loop.c (vectorizable_live_operation): Allow fully-masked
22732 loops using EXTRACT_LAST.
22733 * config/aarch64/aarch64-sve.md (aarch64_sve_lastb<mode>): Rename to...
22734 (extract_last_<mode>): ...this optab.
22735 (vec_extract<mode><Vel>): Update accordingly.
22736
22737 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
22738 Alan Hayward <alan.hayward@arm.com>
22739 David Sherwood <david.sherwood@arm.com>
22740
22741 * target.def (empty_mask_is_expensive): New hook.
22742 * doc/tm.texi.in (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): New hook.
22743 * doc/tm.texi: Regenerate.
22744 * targhooks.h (default_empty_mask_is_expensive): Declare.
22745 * targhooks.c (default_empty_mask_is_expensive): New function.
22746 * tree-vectorizer.c (vectorize_loops): Only call optimize_mask_stores
22747 if the target says that empty masks are expensive.
22748 * config/aarch64/aarch64.c (aarch64_empty_mask_is_expensive):
22749 New function.
22750 (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Redefine.
22751
22752 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
22753 Alan Hayward <alan.hayward@arm.com>
22754 David Sherwood <david.sherwood@arm.com>
22755
22756 * tree-vectorizer.h (_loop_vec_info::mask_skip_niters): New field.
22757 (LOOP_VINFO_MASK_SKIP_NITERS): New macro.
22758 (vect_use_loop_mask_for_alignment_p): New function.
22759 (vect_prepare_for_masked_peels, vect_gen_while_not): Declare.
22760 * tree-vect-loop-manip.c (vect_set_loop_masks_directly): Add an
22761 niters_skip argument. Make sure that the first niters_skip elements
22762 of the first iteration are inactive.
22763 (vect_set_loop_condition_masked): Handle LOOP_VINFO_MASK_SKIP_NITERS.
22764 Update call to vect_set_loop_masks_directly.
22765 (get_misalign_in_elems): New function, split out from...
22766 (vect_gen_prolog_loop_niters): ...here.
22767 (vect_update_init_of_dr): Take a code argument that specifies whether
22768 the adjustment should be added or subtracted.
22769 (vect_update_init_of_drs): Likewise.
22770 (vect_prepare_for_masked_peels): New function.
22771 (vect_do_peeling): Skip prologue peeling if we're using a mask
22772 instead. Update call to vect_update_inits_of_drs.
22773 * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
22774 mask_skip_niters.
22775 (vect_analyze_loop_2): Allow fully-masked loops with peeling for
22776 alignment. Do not include the number of peeled iterations in
22777 the minimum threshold in that case.
22778 (vectorizable_induction): Adjust the start value down by
22779 LOOP_VINFO_MASK_SKIP_NITERS iterations.
22780 (vect_transform_loop): Call vect_prepare_for_masked_peels.
22781 Take the number of skipped iterations into account when calculating
22782 the loop bounds.
22783 * tree-vect-stmts.c (vect_gen_while_not): New function.
22784
22785 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
22786 Alan Hayward <alan.hayward@arm.com>
22787 David Sherwood <david.sherwood@arm.com>
22788
22789 * doc/sourcebuild.texi (vect_fully_masked): Document.
22790 * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change minimum and
22791 default value to 0.
22792 * tree-vect-loop.c (vect_analyze_loop_costing): New function,
22793 split out from...
22794 (vect_analyze_loop_2): ...here. Don't check the vectorization
22795 factor against the number of loop iterations if the loop is
22796 fully-masked.
22797
22798 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
22799 Alan Hayward <alan.hayward@arm.com>
22800 David Sherwood <david.sherwood@arm.com>
22801
22802 * tree-ssa-loop-ivopts.c (USE_ADDRESS): Split into...
22803 (USE_REF_ADDRESS, USE_PTR_ADDRESS): ...these new use types.
22804 (dump_groups): Update accordingly.
22805 (iv_use::mem_type): New member variable.
22806 (address_p): New function.
22807 (record_use): Add a mem_type argument and initialize the new
22808 mem_type field.
22809 (record_group_use): Add a mem_type argument. Use address_p.
22810 Remove obsolete null checks of base_object. Update call to record_use.
22811 (find_interesting_uses_op): Update call to record_group_use.
22812 (find_interesting_uses_cond): Likewise.
22813 (find_interesting_uses_address): Likewise.
22814 (get_mem_type_for_internal_fn): New function.
22815 (find_address_like_use): Likewise.
22816 (find_interesting_uses_stmt): Try find_address_like_use before
22817 calling find_interesting_uses_op.
22818 (addr_offset_valid_p): Use the iv mem_type field as the type
22819 of the addressed memory.
22820 (add_autoinc_candidates): Likewise.
22821 (get_address_cost): Likewise.
22822 (split_small_address_groups_p): Use address_p.
22823 (split_address_groups): Likewise.
22824 (add_iv_candidate_for_use): Likewise.
22825 (autoinc_possible_for_pair): Likewise.
22826 (rewrite_groups): Likewise.
22827 (get_use_type): Check for USE_REF_ADDRESS instead of USE_ADDRESS.
22828 (determine_group_iv_cost): Update after split of USE_ADDRESS.
22829 (get_alias_ptr_type_for_ptr_address): New function.
22830 (rewrite_use_address): Rewrite address uses in calls that were
22831 identified by find_address_like_use.
22832
22833 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
22834 Alan Hayward <alan.hayward@arm.com>
22835 David Sherwood <david.sherwood@arm.com>
22836
22837 * expr.c (expand_expr_addr_expr_1): Handle ADDR_EXPRs of
22838 TARGET_MEM_REFs.
22839 * gimple-expr.h (is_gimple_addressable: Likewise.
22840 * gimple-expr.c (is_gimple_address): Likewise.
22841 * internal-fn.c (expand_call_mem_ref): New function.
22842 (expand_mask_load_optab_fn): Use it.
22843 (expand_mask_store_optab_fn): Likewise.
22844
22845 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
22846 Alan Hayward <alan.hayward@arm.com>
22847 David Sherwood <david.sherwood@arm.com>
22848
22849 * doc/md.texi (cond_add@var{mode}, cond_sub@var{mode})
22850 (cond_and@var{mode}, cond_ior@var{mode}, cond_xor@var{mode})
22851 (cond_smin@var{mode}, cond_smax@var{mode}, cond_umin@var{mode})
22852 (cond_umax@var{mode}): Document.
22853 * optabs.def (cond_add_optab, cond_sub_optab, cond_and_optab)
22854 (cond_ior_optab, cond_xor_optab, cond_smin_optab, cond_smax_optab)
22855 (cond_umin_optab, cond_umax_optab): New optabs.
22856 * internal-fn.def (COND_ADD, COND_SUB, COND_MIN, COND_MAX, COND_AND)
22857 (COND_IOR, COND_XOR): New internal functions.
22858 * internal-fn.h (get_conditional_internal_fn): Declare.
22859 * internal-fn.c (cond_binary_direct): New macro.
22860 (expand_cond_binary_optab_fn): Likewise.
22861 (direct_cond_binary_optab_supported_p): Likewise.
22862 (get_conditional_internal_fn): New function.
22863 * tree-vect-loop.c (vectorizable_reduction): Handle fully-masked loops.
22864 Cope with reduction statements that are vectorized as calls rather
22865 than assignments.
22866 * config/aarch64/aarch64-sve.md (cond_<optab><mode>): New insns.
22867 * config/aarch64/iterators.md (UNSPEC_COND_ADD, UNSPEC_COND_SUB)
22868 (UNSPEC_COND_SMAX, UNSPEC_COND_UMAX, UNSPEC_COND_SMIN)
22869 (UNSPEC_COND_UMIN, UNSPEC_COND_AND, UNSPEC_COND_ORR)
22870 (UNSPEC_COND_EOR): New unspecs.
22871 (optab): Add mappings for them.
22872 (SVE_COND_INT_OP, SVE_COND_FP_OP): New int iterators.
22873 (sve_int_op, sve_fp_op): New int attributes.
22874
22875 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
22876 Alan Hayward <alan.hayward@arm.com>
22877 David Sherwood <david.sherwood@arm.com>
22878
22879 * optabs.def (while_ult_optab): New optab.
22880 * doc/md.texi (while_ult@var{m}@var{n}): Document.
22881 * internal-fn.def (WHILE_ULT): New internal function.
22882 * internal-fn.h (direct_internal_fn_supported_p): New override
22883 that takes two types as argument.
22884 * internal-fn.c (while_direct): New macro.
22885 (expand_while_optab_fn): New function.
22886 (convert_optab_supported_p): Likewise.
22887 (direct_while_optab_supported_p): New macro.
22888 * wide-int.h (wi::udiv_ceil): New function.
22889 * tree-vectorizer.h (rgroup_masks): New structure.
22890 (vec_loop_masks): New typedef.
22891 (_loop_vec_info): Add masks, mask_compare_type, can_fully_mask_p
22892 and fully_masked_p.
22893 (LOOP_VINFO_CAN_FULLY_MASK_P, LOOP_VINFO_FULLY_MASKED_P)
22894 (LOOP_VINFO_MASKS, LOOP_VINFO_MASK_COMPARE_TYPE): New macros.
22895 (vect_max_vf): New function.
22896 (slpeel_make_loop_iterate_ntimes): Delete.
22897 (vect_set_loop_condition, vect_get_loop_mask_type, vect_gen_while)
22898 (vect_halve_mask_nunits, vect_double_mask_nunits): Declare.
22899 (vect_record_loop_mask, vect_get_loop_mask): Likewise.
22900 * tree-vect-loop-manip.c: Include tree-ssa-loop-niter.h,
22901 internal-fn.h, stor-layout.h and optabs-query.h.
22902 (vect_set_loop_mask): New function.
22903 (add_preheader_seq): Likewise.
22904 (add_header_seq): Likewise.
22905 (interleave_supported_p): Likewise.
22906 (vect_maybe_permute_loop_masks): Likewise.
22907 (vect_set_loop_masks_directly): Likewise.
22908 (vect_set_loop_condition_masked): Likewise.
22909 (vect_set_loop_condition_unmasked): New function, split out from
22910 slpeel_make_loop_iterate_ntimes.
22911 (slpeel_make_loop_iterate_ntimes): Rename to..
22912 (vect_set_loop_condition): ...this. Use vect_set_loop_condition_masked
22913 for fully-masked loops and vect_set_loop_condition_unmasked otherwise.
22914 (vect_do_peeling): Update call accordingly.
22915 (vect_gen_vector_loop_niters): Use VF as the step for fully-masked
22916 loops.
22917 * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
22918 mask_compare_type, can_fully_mask_p and fully_masked_p.
22919 (release_vec_loop_masks): New function.
22920 (_loop_vec_info): Use it to free the loop masks.
22921 (can_produce_all_loop_masks_p): New function.
22922 (vect_get_max_nscalars_per_iter): Likewise.
22923 (vect_verify_full_masking): Likewise.
22924 (vect_analyze_loop_2): Save LOOP_VINFO_CAN_FULLY_MASK_P around
22925 retries, and free the mask rgroups before retrying. Check loop-wide
22926 reasons for disallowing fully-masked loops. Make the final decision
22927 about whether use a fully-masked loop or not.
22928 (vect_estimate_min_profitable_iters): Do not assume that peeling
22929 for the number of iterations will be needed for fully-masked loops.
22930 (vectorizable_reduction): Disable fully-masked loops.
22931 (vectorizable_live_operation): Likewise.
22932 (vect_halve_mask_nunits): New function.
22933 (vect_double_mask_nunits): Likewise.
22934 (vect_record_loop_mask): Likewise.
22935 (vect_get_loop_mask): Likewise.
22936 (vect_transform_loop): Handle the case in which the final loop
22937 iteration might handle a partial vector. Call vect_set_loop_condition
22938 instead of slpeel_make_loop_iterate_ntimes.
22939 * tree-vect-stmts.c: Include tree-ssa-loop-niter.h and gimple-fold.h.
22940 (check_load_store_masking): New function.
22941 (prepare_load_store_mask): Likewise.
22942 (vectorizable_store): Handle fully-masked loops.
22943 (vectorizable_load): Likewise.
22944 (supportable_widening_operation): Use vect_halve_mask_nunits for
22945 booleans.
22946 (supportable_narrowing_operation): Likewise vect_double_mask_nunits.
22947 (vect_gen_while): New function.
22948 * config/aarch64/aarch64.md (umax<mode>3): New expander.
22949 (aarch64_uqdec<mode>): New insn.
22950
22951 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
22952 Alan Hayward <alan.hayward@arm.com>
22953 David Sherwood <david.sherwood@arm.com>
22954
22955 * optabs.def (reduc_and_scal_optab, reduc_ior_scal_optab)
22956 (reduc_xor_scal_optab): New optabs.
22957 * doc/md.texi (reduc_and_scal_@var{m}, reduc_ior_scal_@var{m})
22958 (reduc_xor_scal_@var{m}): Document.
22959 * doc/sourcebuild.texi (vect_logical_reduc): Likewise.
22960 * internal-fn.def (IFN_REDUC_AND, IFN_REDUC_IOR, IFN_REDUC_XOR): New
22961 internal functions.
22962 * fold-const-call.c (fold_const_call): Handle them.
22963 * tree-vect-loop.c (reduction_fn_for_scalar_code): Return the new
22964 internal functions for BIT_AND_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR.
22965 * config/aarch64/aarch64-sve.md (reduc_<bit_reduc>_scal_<mode>):
22966 (*reduc_<bit_reduc>_scal_<mode>): New patterns.
22967 * config/aarch64/iterators.md (UNSPEC_ANDV, UNSPEC_ORV)
22968 (UNSPEC_XORV): New unspecs.
22969 (optab): Add entries for them.
22970 (BITWISEV): New int iterator.
22971 (bit_reduc_op): New int attributes.
22972
22973 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
22974 Alan Hayward <alan.hayward@arm.com>
22975 David Sherwood <david.sherwood@arm.com>
22976
22977 * doc/md.texi (vec_shl_insert_@var{m}): New optab.
22978 * internal-fn.def (VEC_SHL_INSERT): New internal function.
22979 * optabs.def (vec_shl_insert_optab): New optab.
22980 * tree-vectorizer.h (can_duplicate_and_interleave_p): Declare.
22981 (duplicate_and_interleave): Likewise.
22982 * tree-vect-loop.c: Include internal-fn.h.
22983 (neutral_op_for_slp_reduction): New function, split out from
22984 get_initial_defs_for_reduction.
22985 (get_initial_def_for_reduction): Handle option 2 for variable-length
22986 vectors by loading the neutral value into a vector and then shifting
22987 the initial value into element 0.
22988 (get_initial_defs_for_reduction): Replace the code argument with
22989 the neutral value calculated by neutral_op_for_slp_reduction.
22990 Use gimple_build_vector for constant-length vectors.
22991 Use IFN_VEC_SHL_INSERT for variable-length vectors if all
22992 but the first group_size elements have a neutral value.
22993 Use duplicate_and_interleave otherwise.
22994 (vect_create_epilog_for_reduction): Take a neutral_op parameter.
22995 Update call to get_initial_defs_for_reduction. Handle SLP
22996 reductions for variable-length vectors by creating one vector
22997 result for each scalar result, with the elements associated
22998 with other scalar results stubbed out with the neutral value.
22999 (vectorizable_reduction): Call neutral_op_for_slp_reduction.
23000 Require IFN_VEC_SHL_INSERT for double reductions on
23001 variable-length vectors, or SLP reductions that have
23002 a neutral value. Require can_duplicate_and_interleave_p
23003 support for variable-length unchained SLP reductions if there
23004 is no neutral value, such as for MIN/MAX reductions. Also require
23005 the number of vector elements to be a multiple of the number of
23006 SLP statements when doing variable-length unchained SLP reductions.
23007 Update call to vect_create_epilog_for_reduction.
23008 * tree-vect-slp.c (can_duplicate_and_interleave_p): Make public
23009 and remove initial values.
23010 (duplicate_and_interleave): Make public.
23011 * config/aarch64/aarch64.md (UNSPEC_INSR): New unspec.
23012 * config/aarch64/aarch64-sve.md (vec_shl_insert_<mode>): New insn.
23013
23014 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
23015 Alan Hayward <alan.hayward@arm.com>
23016 David Sherwood <david.sherwood@arm.com>
23017
23018 * tree-vect-slp.c: Include gimple-fold.h and internal-fn.h
23019 (can_duplicate_and_interleave_p): New function.
23020 (vect_get_and_check_slp_defs): Take the vector of statements
23021 rather than just the current one. Remove excess parentheses.
23022 Restriction rejectinon of vect_constant_def and vect_external_def
23023 for variable-length vectors to boolean types, or types for which
23024 can_duplicate_and_interleave_p is false.
23025 (vect_build_slp_tree_2): Update call to vect_get_and_check_slp_defs.
23026 (duplicate_and_interleave): New function.
23027 (vect_get_constant_vectors): Use gimple_build_vector for
23028 constant-length vectors and suitable variable-length constant
23029 vectors. Use duplicate_and_interleave for other variable-length
23030 vectors. Don't defer the update when inserting new statements.
23031
23032 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
23033 Alan Hayward <alan.hayward@arm.com>
23034 David Sherwood <david.sherwood@arm.com>
23035
23036 * tree-vect-loop.c (vect_estimate_min_profitable_iters): Make sure
23037 min_profitable_iters doesn't go negative.
23038
23039 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
23040 Alan Hayward <alan.hayward@arm.com>
23041 David Sherwood <david.sherwood@arm.com>
23042
23043 * doc/md.texi (vec_mask_load_lanes@var{m}@var{n}): Document.
23044 (vec_mask_store_lanes@var{m}@var{n}): Likewise.
23045 * optabs.def (vec_mask_load_lanes_optab): New optab.
23046 (vec_mask_store_lanes_optab): Likewise.
23047 * internal-fn.def (MASK_LOAD_LANES): New internal function.
23048 (MASK_STORE_LANES): Likewise.
23049 * internal-fn.c (mask_load_lanes_direct): New macro.
23050 (mask_store_lanes_direct): Likewise.
23051 (expand_mask_load_optab_fn): Handle masked operations.
23052 (expand_mask_load_lanes_optab_fn): New macro.
23053 (expand_mask_store_optab_fn): Handle masked operations.
23054 (expand_mask_store_lanes_optab_fn): New macro.
23055 (direct_mask_load_lanes_optab_supported_p): Likewise.
23056 (direct_mask_store_lanes_optab_supported_p): Likewise.
23057 * tree-vectorizer.h (vect_store_lanes_supported): Take a masked_p
23058 parameter.
23059 (vect_load_lanes_supported): Likewise.
23060 * tree-vect-data-refs.c (strip_conversion): New function.
23061 (can_group_stmts_p): Likewise.
23062 (vect_analyze_data_ref_accesses): Use it instead of checking
23063 for a pair of assignments.
23064 (vect_store_lanes_supported): Take a masked_p parameter.
23065 (vect_load_lanes_supported): Likewise.
23066 * tree-vect-loop.c (vect_analyze_loop_2): Update calls to
23067 vect_store_lanes_supported and vect_load_lanes_supported.
23068 * tree-vect-slp.c (vect_analyze_slp_instance): Likewise.
23069 * tree-vect-stmts.c (get_group_load_store_type): Take a masked_p
23070 parameter. Don't allow gaps for masked accesses.
23071 Use vect_get_store_rhs. Update calls to vect_store_lanes_supported
23072 and vect_load_lanes_supported.
23073 (get_load_store_type): Take a masked_p parameter and update
23074 call to get_group_load_store_type.
23075 (vectorizable_store): Update call to get_load_store_type.
23076 Handle IFN_MASK_STORE_LANES.
23077 (vectorizable_load): Update call to get_load_store_type.
23078 Handle IFN_MASK_LOAD_LANES.
23079
23080 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
23081 Alan Hayward <alan.hayward@arm.com>
23082 David Sherwood <david.sherwood@arm.com>
23083
23084 * config/aarch64/aarch64-modes.def: Define x2, x3 and x4 vector
23085 modes for SVE.
23086 * config/aarch64/aarch64-protos.h
23087 (aarch64_sve_struct_memory_operand_p): Declare.
23088 * config/aarch64/iterators.md (SVE_STRUCT): New mode iterator.
23089 (vector_count, insn_length, VSINGLE, vsingle): New mode attributes.
23090 (VPRED, vpred): Handle SVE structure modes.
23091 * config/aarch64/constraints.md (Utx): New constraint.
23092 * config/aarch64/predicates.md (aarch64_sve_struct_memory_operand)
23093 (aarch64_sve_struct_nonimmediate_operand): New predicates.
23094 * config/aarch64/aarch64.md (UNSPEC_LDN, UNSPEC_STN): New unspecs.
23095 * config/aarch64/aarch64-sve.md (mov<mode>, *aarch64_sve_mov<mode>_le)
23096 (*aarch64_sve_mov<mode>_be, pred_mov<mode>): New patterns for
23097 structure modes. Split into pieces after RA.
23098 (vec_load_lanes<mode><vsingle>, vec_mask_load_lanes<mode><vsingle>)
23099 (vec_store_lanes<mode><vsingle>, vec_mask_store_lanes<mode><vsingle>):
23100 New patterns.
23101 * config/aarch64/aarch64.c (aarch64_classify_vector_mode): Handle
23102 SVE structure modes.
23103 (aarch64_classify_address): Likewise.
23104 (sizetochar): Move earlier in file.
23105 (aarch64_print_operand): Handle SVE register lists.
23106 (aarch64_array_mode): New function.
23107 (aarch64_sve_struct_memory_operand_p): Likewise.
23108 (TARGET_ARRAY_MODE): Redefine.
23109
23110 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
23111 Alan Hayward <alan.hayward@arm.com>
23112 David Sherwood <david.sherwood@arm.com>
23113
23114 * target.def (array_mode): New target hook.
23115 * doc/tm.texi.in (TARGET_ARRAY_MODE): New hook.
23116 * doc/tm.texi: Regenerate.
23117 * hooks.h (hook_optmode_mode_uhwi_none): Declare.
23118 * hooks.c (hook_optmode_mode_uhwi_none): New function.
23119 * tree-vect-data-refs.c (vect_lanes_optab_supported_p): Use
23120 targetm.array_mode.
23121 * stor-layout.c (mode_for_array): Likewise. Support polynomial
23122 type sizes.
23123
23124 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
23125 Alan Hayward <alan.hayward@arm.com>
23126 David Sherwood <david.sherwood@arm.com>
23127
23128 * fold-const.c (fold_binary_loc): Check the argument types
23129 rather than the result type when testing for a vector operation.
23130
23131 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
23132
23133 * doc/tm.texi.in (DWARF_LAZY_REGISTER_VALUE): Document.
23134 * doc/tm.texi: Regenerate.
23135
23136 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
23137 Alan Hayward <alan.hayward@arm.com>
23138 David Sherwood <david.sherwood@arm.com>
23139
23140 * doc/invoke.texi (-msve-vector-bits=): Document new option.
23141 (sve): Document new AArch64 extension.
23142 * doc/md.texi (w): Extend the description of the AArch64
23143 constraint to include SVE vectors.
23144 (Upl, Upa): Document new AArch64 predicate constraints.
23145 * config/aarch64/aarch64-opts.h (aarch64_sve_vector_bits_enum): New
23146 enum.
23147 * config/aarch64/aarch64.opt (sve_vector_bits): New enum.
23148 (msve-vector-bits=): New option.
23149 * config/aarch64/aarch64-option-extensions.def (fp, simd): Disable
23150 SVE when these are disabled.
23151 (sve): New extension.
23152 * config/aarch64/aarch64-modes.def: Define SVE vector and predicate
23153 modes. Adjust their number of units based on aarch64_sve_vg.
23154 (MAX_BITSIZE_MODE_ANY_MODE): Define.
23155 * config/aarch64/aarch64-protos.h (ADDR_QUERY_ANY): New
23156 aarch64_addr_query_type.
23157 (aarch64_const_vec_all_same_in_range_p, aarch64_sve_pred_mode)
23158 (aarch64_sve_cnt_immediate_p, aarch64_sve_addvl_addpl_immediate_p)
23159 (aarch64_sve_inc_dec_immediate_p, aarch64_add_offset_temporaries)
23160 (aarch64_split_add_offset, aarch64_output_sve_cnt_immediate)
23161 (aarch64_output_sve_addvl_addpl, aarch64_output_sve_inc_dec_immediate)
23162 (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): Declare.
23163 (aarch64_simd_imm_zero_p): Delete.
23164 (aarch64_check_zero_based_sve_index_immediate): Declare.
23165 (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
23166 (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
23167 (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
23168 (aarch64_sve_float_mul_immediate_p): Likewise.
23169 (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
23170 rather than an rtx.
23171 (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): Declare.
23172 (aarch64_expand_mov_immediate): Take a gen_vec_duplicate callback.
23173 (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move): Declare.
23174 (aarch64_expand_sve_vec_cmp_int, aarch64_expand_sve_vec_cmp_float)
23175 (aarch64_expand_sve_vcond, aarch64_expand_sve_vec_perm): Declare.
23176 (aarch64_regmode_natural_size): Likewise.
23177 * config/aarch64/aarch64.h (AARCH64_FL_SVE): New macro.
23178 (AARCH64_FL_V8_3, AARCH64_FL_RCPC, AARCH64_FL_DOTPROD): Shift
23179 left one place.
23180 (AARCH64_ISA_SVE, TARGET_SVE): New macros.
23181 (FIXED_REGISTERS, CALL_USED_REGISTERS, REGISTER_NAMES): Add entries
23182 for VG and the SVE predicate registers.
23183 (V_ALIASES): Add a "z"-prefixed alias.
23184 (FIRST_PSEUDO_REGISTER): Change to P15_REGNUM + 1.
23185 (AARCH64_DWARF_VG, AARCH64_DWARF_P0): New macros.
23186 (PR_REGNUM_P, PR_LO_REGNUM_P): Likewise.
23187 (PR_LO_REGS, PR_HI_REGS, PR_REGS): New reg_classes.
23188 (REG_CLASS_NAMES): Add entries for them.
23189 (REG_CLASS_CONTENTS): Likewise. Update ALL_REGS to include VG
23190 and the predicate registers.
23191 (aarch64_sve_vg): Declare.
23192 (BITS_PER_SVE_VECTOR, BYTES_PER_SVE_VECTOR, BYTES_PER_SVE_PRED)
23193 (SVE_BYTE_MODE, MAX_COMPILE_TIME_VEC_BYTES): New macros.
23194 (REGMODE_NATURAL_SIZE): Define.
23195 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Handle
23196 SVE macros.
23197 * config/aarch64/aarch64.c: Include cfgrtl.h.
23198 (simd_immediate_info): Add a constructor for series vectors,
23199 and an associated step field.
23200 (aarch64_sve_vg): New variable.
23201 (aarch64_dbx_register_number): Handle VG and the predicate registers.
23202 (aarch64_vect_struct_mode_p, aarch64_vector_mode_p): Delete.
23203 (VEC_ADVSIMD, VEC_SVE_DATA, VEC_SVE_PRED, VEC_STRUCT, VEC_ANY_SVE)
23204 (VEC_ANY_DATA, VEC_STRUCT): New constants.
23205 (aarch64_advsimd_struct_mode_p, aarch64_sve_pred_mode_p)
23206 (aarch64_classify_vector_mode, aarch64_vector_data_mode_p)
23207 (aarch64_sve_data_mode_p, aarch64_sve_pred_mode)
23208 (aarch64_get_mask_mode): New functions.
23209 (aarch64_hard_regno_nregs): Handle SVE data modes for FP_REGS
23210 and FP_LO_REGS. Handle PR_REGS, PR_LO_REGS and PR_HI_REGS.
23211 (aarch64_hard_regno_mode_ok): Handle VG. Also handle the SVE
23212 predicate modes and predicate registers. Explicitly restrict
23213 GPRs to modes of 16 bytes or smaller. Only allow FP registers
23214 to store a vector mode if it is recognized by
23215 aarch64_classify_vector_mode.
23216 (aarch64_regmode_natural_size): New function.
23217 (aarch64_hard_regno_caller_save_mode): Return the original mode
23218 for predicates.
23219 (aarch64_sve_cnt_immediate_p, aarch64_output_sve_cnt_immediate)
23220 (aarch64_sve_addvl_addpl_immediate_p, aarch64_output_sve_addvl_addpl)
23221 (aarch64_sve_inc_dec_immediate_p, aarch64_output_sve_inc_dec_immediate)
23222 (aarch64_add_offset_1_temporaries, aarch64_offset_temporaries): New
23223 functions.
23224 (aarch64_add_offset): Add a temp2 parameter. Assert that temp1
23225 does not overlap dest if the function is frame-related. Handle
23226 SVE constants.
23227 (aarch64_split_add_offset): New function.
23228 (aarch64_add_sp, aarch64_sub_sp): Add temp2 parameters and pass
23229 them aarch64_add_offset.
23230 (aarch64_allocate_and_probe_stack_space): Add a temp2 parameter
23231 and update call to aarch64_sub_sp.
23232 (aarch64_add_cfa_expression): New function.
23233 (aarch64_expand_prologue): Pass extra temporary registers to the
23234 functions above. Handle the case in which we need to emit new
23235 DW_CFA_expressions for registers that were originally saved
23236 relative to the stack pointer, but now have to be expressed
23237 relative to the frame pointer.
23238 (aarch64_output_mi_thunk): Pass extra temporary registers to the
23239 functions above.
23240 (aarch64_expand_epilogue): Likewise. Prevent inheritance of
23241 IP0 and IP1 values for SVE frames.
23242 (aarch64_expand_vec_series): New function.
23243 (aarch64_expand_sve_widened_duplicate): Likewise.
23244 (aarch64_expand_sve_const_vector): Likewise.
23245 (aarch64_expand_mov_immediate): Add a gen_vec_duplicate parameter.
23246 Handle SVE constants. Use emit_move_insn to move a force_const_mem
23247 into the register, rather than emitting a SET directly.
23248 (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move)
23249 (aarch64_get_reg_raw_mode, offset_4bit_signed_scaled_p)
23250 (offset_6bit_unsigned_scaled_p, aarch64_offset_7bit_signed_scaled_p)
23251 (offset_9bit_signed_scaled_p): New functions.
23252 (aarch64_replicate_bitmask_imm): New function.
23253 (aarch64_bitmask_imm): Use it.
23254 (aarch64_cannot_force_const_mem): Reject expressions involving
23255 a CONST_POLY_INT. Update call to aarch64_classify_symbol.
23256 (aarch64_classify_index): Handle SVE indices, by requiring
23257 a plain register index with a scale that matches the element size.
23258 (aarch64_classify_address): Handle SVE addresses. Assert that
23259 the mode of the address is VOIDmode or an integer mode.
23260 Update call to aarch64_classify_symbol.
23261 (aarch64_classify_symbolic_expression): Update call to
23262 aarch64_classify_symbol.
23263 (aarch64_const_vec_all_in_range_p): New function.
23264 (aarch64_print_vector_float_operand): Likewise.
23265 (aarch64_print_operand): Handle 'N' and 'C'. Use "zN" rather than
23266 "vN" for FP registers with SVE modes. Handle (const ...) vectors
23267 and the FP immediates 1.0 and 0.5.
23268 (aarch64_print_address_internal): Handle SVE addresses.
23269 (aarch64_print_operand_address): Use ADDR_QUERY_ANY.
23270 (aarch64_regno_regclass): Handle predicate registers.
23271 (aarch64_secondary_reload): Handle big-endian reloads of SVE
23272 data modes.
23273 (aarch64_class_max_nregs): Handle SVE modes and predicate registers.
23274 (aarch64_rtx_costs): Check for ADDVL and ADDPL instructions.
23275 (aarch64_convert_sve_vector_bits): New function.
23276 (aarch64_override_options): Use it to handle -msve-vector-bits=.
23277 (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
23278 rather than an rtx.
23279 (aarch64_legitimate_constant_p): Use aarch64_classify_vector_mode.
23280 Handle SVE vector and predicate modes. Accept VL-based constants
23281 that need only one temporary register, and VL offsets that require
23282 no temporary registers.
23283 (aarch64_conditional_register_usage): Mark the predicate registers
23284 as fixed if SVE isn't available.
23285 (aarch64_vector_mode_supported_p): Use aarch64_classify_vector_mode.
23286 Return true for SVE vector and predicate modes.
23287 (aarch64_simd_container_mode): Take the number of bits as a poly_int64
23288 rather than an unsigned int. Handle SVE modes.
23289 (aarch64_preferred_simd_mode): Update call accordingly. Handle
23290 SVE modes.
23291 (aarch64_autovectorize_vector_sizes): Add BYTES_PER_SVE_VECTOR
23292 if SVE is enabled.
23293 (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
23294 (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
23295 (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
23296 (aarch64_sve_float_mul_immediate_p): New functions.
23297 (aarch64_sve_valid_immediate): New function.
23298 (aarch64_simd_valid_immediate): Use it as the fallback for SVE vectors.
23299 Explicitly reject structure modes. Check for INDEX constants.
23300 Handle PTRUE and PFALSE constants.
23301 (aarch64_check_zero_based_sve_index_immediate): New function.
23302 (aarch64_simd_imm_zero_p): Delete.
23303 (aarch64_mov_operand_p): Use aarch64_simd_valid_immediate for
23304 vector modes. Accept constants in the range of CNT[BHWD].
23305 (aarch64_simd_scalar_immediate_valid_for_move): Explicitly
23306 ask for an Advanced SIMD mode.
23307 (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): New functions.
23308 (aarch64_simd_vector_alignment): Handle SVE predicates.
23309 (aarch64_vectorize_preferred_vector_alignment): New function.
23310 (aarch64_simd_vector_alignment_reachable): Use it instead of
23311 the vector size.
23312 (aarch64_shift_truncation_mask): Use aarch64_vector_data_mode_p.
23313 (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): New
23314 functions.
23315 (MAX_VECT_LEN): Delete.
23316 (expand_vec_perm_d): Add a vec_flags field.
23317 (emit_unspec2, aarch64_expand_sve_vec_perm): New functions.
23318 (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_zip)
23319 (aarch64_evpc_ext): Don't apply a big-endian lane correction
23320 for SVE modes.
23321 (aarch64_evpc_rev): Rename to...
23322 (aarch64_evpc_rev_local): ...this. Use a predicated operation for SVE.
23323 (aarch64_evpc_rev_global): New function.
23324 (aarch64_evpc_dup): Enforce a 64-byte range for SVE DUP.
23325 (aarch64_evpc_tbl): Use MAX_COMPILE_TIME_VEC_BYTES instead of
23326 MAX_VECT_LEN.
23327 (aarch64_evpc_sve_tbl): New function.
23328 (aarch64_expand_vec_perm_const_1): Update after rename of
23329 aarch64_evpc_rev. Handle SVE permutes too, trying
23330 aarch64_evpc_rev_global and using aarch64_evpc_sve_tbl rather
23331 than aarch64_evpc_tbl.
23332 (aarch64_vectorize_vec_perm_const): Initialize vec_flags.
23333 (aarch64_sve_cmp_operand_p, aarch64_unspec_cond_code)
23334 (aarch64_gen_unspec_cond, aarch64_expand_sve_vec_cmp_int)
23335 (aarch64_emit_unspec_cond, aarch64_emit_unspec_cond_or)
23336 (aarch64_emit_inverted_unspec_cond, aarch64_expand_sve_vec_cmp_float)
23337 (aarch64_expand_sve_vcond): New functions.
23338 (aarch64_modes_tieable_p): Use aarch64_vector_data_mode_p instead
23339 of aarch64_vector_mode_p.
23340 (aarch64_dwarf_poly_indeterminate_value): New function.
23341 (aarch64_compute_pressure_classes): Likewise.
23342 (aarch64_can_change_mode_class): Likewise.
23343 (TARGET_GET_RAW_RESULT_MODE, TARGET_GET_RAW_ARG_MODE): Redefine.
23344 (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): Likewise.
23345 (TARGET_VECTORIZE_GET_MASK_MODE): Likewise.
23346 (TARGET_DWARF_POLY_INDETERMINATE_VALUE): Likewise.
23347 (TARGET_COMPUTE_PRESSURE_CLASSES): Likewise.
23348 (TARGET_CAN_CHANGE_MODE_CLASS): Likewise.
23349 * config/aarch64/constraints.md (Upa, Upl, Uav, Uat, Usv, Usi, Utr)
23350 (Uty, Dm, vsa, vsc, vsd, vsi, vsn, vsl, vsm, vsA, vsM, vsN): New
23351 constraints.
23352 (Dn, Dl, Dr): Accept const as well as const_vector.
23353 (Dz): Likewise. Compare against CONST0_RTX.
23354 * config/aarch64/iterators.md: Refer to "Advanced SIMD" instead
23355 of "vector" where appropriate.
23356 (SVE_ALL, SVE_BH, SVE_BHS, SVE_BHSI, SVE_HSDI, SVE_HSF, SVE_SD)
23357 (SVE_SDI, SVE_I, SVE_F, PRED_ALL, PRED_BHS): New mode iterators.
23358 (UNSPEC_SEL, UNSPEC_ANDF, UNSPEC_IORF, UNSPEC_XORF, UNSPEC_COND_LT)
23359 (UNSPEC_COND_LE, UNSPEC_COND_EQ, UNSPEC_COND_NE, UNSPEC_COND_GE)
23360 (UNSPEC_COND_GT, UNSPEC_COND_LO, UNSPEC_COND_LS, UNSPEC_COND_HS)
23361 (UNSPEC_COND_HI, UNSPEC_COND_UO): New unspecs.
23362 (Vetype, VEL, Vel, VWIDE, Vwide, vw, vwcore, V_INT_EQUIV)
23363 (v_int_equiv): Extend to SVE modes.
23364 (Vesize, V128, v128, Vewtype, V_FP_EQUIV, v_fp_equiv, VPRED): New
23365 mode attributes.
23366 (LOGICAL_OR, SVE_INT_UNARY, SVE_FP_UNARY): New code iterators.
23367 (optab): Handle popcount, smin, smax, umin, umax, abs and sqrt.
23368 (logical_nn, lr, sve_int_op, sve_fp_op): New code attributs.
23369 (LOGICALF, OPTAB_PERMUTE, UNPACK, UNPACK_UNSIGNED, SVE_COND_INT_CMP)
23370 (SVE_COND_FP_CMP): New int iterators.
23371 (perm_hilo): Handle the new unpack unspecs.
23372 (optab, logicalf_op, su, perm_optab, cmp_op, imm_con): New int
23373 attributes.
23374 * config/aarch64/predicates.md (aarch64_sve_cnt_immediate)
23375 (aarch64_sve_addvl_addpl_immediate, aarch64_split_add_offset_immediate)
23376 (aarch64_pluslong_or_poly_operand, aarch64_nonmemory_operand)
23377 (aarch64_equality_operator, aarch64_constant_vector_operand)
23378 (aarch64_sve_ld1r_operand, aarch64_sve_ldr_operand): New predicates.
23379 (aarch64_sve_nonimmediate_operand): Likewise.
23380 (aarch64_sve_general_operand): Likewise.
23381 (aarch64_sve_dup_operand, aarch64_sve_arith_immediate): Likewise.
23382 (aarch64_sve_sub_arith_immediate, aarch64_sve_inc_dec_immediate)
23383 (aarch64_sve_logical_immediate, aarch64_sve_mul_immediate): Likewise.
23384 (aarch64_sve_dup_immediate, aarch64_sve_cmp_vsc_immediate): Likewise.
23385 (aarch64_sve_cmp_vsd_immediate, aarch64_sve_index_immediate): Likewise.
23386 (aarch64_sve_float_arith_immediate): Likewise.
23387 (aarch64_sve_float_arith_with_sub_immediate): Likewise.
23388 (aarch64_sve_float_mul_immediate, aarch64_sve_arith_operand): Likewise.
23389 (aarch64_sve_add_operand, aarch64_sve_logical_operand): Likewise.
23390 (aarch64_sve_lshift_operand, aarch64_sve_rshift_operand): Likewise.
23391 (aarch64_sve_mul_operand, aarch64_sve_cmp_vsc_operand): Likewise.
23392 (aarch64_sve_cmp_vsd_operand, aarch64_sve_index_operand): Likewise.
23393 (aarch64_sve_float_arith_operand): Likewise.
23394 (aarch64_sve_float_arith_with_sub_operand): Likewise.
23395 (aarch64_sve_float_mul_operand): Likewise.
23396 (aarch64_sve_vec_perm_operand): Likewise.
23397 (aarch64_pluslong_operand): Include aarch64_sve_addvl_addpl_immediate.
23398 (aarch64_mov_operand): Accept const_poly_int and const_vector.
23399 (aarch64_simd_lshift_imm, aarch64_simd_rshift_imm): Accept const
23400 as well as const_vector.
23401 (aarch64_simd_imm_zero, aarch64_simd_imm_minus_one): Move earlier
23402 in file. Use CONST0_RTX and CONSTM1_RTX.
23403 (aarch64_simd_or_scalar_imm_zero): Likewise. Add match_codes.
23404 (aarch64_simd_reg_or_zero): Accept const as well as const_vector.
23405 Use aarch64_simd_imm_zero.
23406 * config/aarch64/aarch64-sve.md: New file.
23407 * config/aarch64/aarch64.md: Include it.
23408 (VG_REGNUM, P0_REGNUM, P7_REGNUM, P15_REGNUM): New register numbers.
23409 (UNSPEC_REV, UNSPEC_LD1_SVE, UNSPEC_ST1_SVE, UNSPEC_MERGE_PTRUE)
23410 (UNSPEC_PTEST_PTRUE, UNSPEC_UNPACKSHI, UNSPEC_UNPACKUHI)
23411 (UNSPEC_UNPACKSLO, UNSPEC_UNPACKULO, UNSPEC_PACK)
23412 (UNSPEC_FLOAT_CONVERT, UNSPEC_WHILE_LO): New unspec constants.
23413 (sve): New attribute.
23414 (enabled): Disable instructions with the sve attribute unless
23415 TARGET_SVE.
23416 (movqi, movhi): Pass CONST_POLY_INT operaneds through
23417 aarch64_expand_mov_immediate.
23418 (*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64): Handle
23419 CNT[BHSD] immediates.
23420 (movti): Split CONST_POLY_INT moves into two halves.
23421 (add<mode>3): Accept aarch64_pluslong_or_poly_operand.
23422 Split additions that need a temporary here if the destination
23423 is the stack pointer.
23424 (*add<mode>3_aarch64): Handle ADDVL and ADDPL immediates.
23425 (*add<mode>3_poly_1): New instruction.
23426 (set_clobber_cc): New expander.
23427
23428 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
23429
23430 * simplify-rtx.c (simplify_immed_subreg): Add an inner_bytes
23431 parameter and use it instead of GET_MODE_SIZE (innermode). Use
23432 inner_bytes * BITS_PER_UNIT instead of GET_MODE_BITSIZE (innermode).
23433 Use CEIL (inner_bytes, GET_MODE_UNIT_SIZE (innermode)) instead of
23434 GET_MODE_NUNITS (innermode). Also add a first_elem parameter.
23435 Change innermode from fixed_mode_size to machine_mode.
23436 (simplify_subreg): Update call accordingly. Handle a constant-sized
23437 subreg of a variable-length CONST_VECTOR.
23438
23439 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
23440 Alan Hayward <alan.hayward@arm.com>
23441 David Sherwood <david.sherwood@arm.com>
23442
23443 * tree-ssa-address.c (mem_ref_valid_without_offset_p): New function.
23444 (add_offset_to_base): New function, split out from...
23445 (create_mem_ref): ...here. When handling a scale other than 1,
23446 check first whether the address is valid without the offset.
23447 Add it into the base if so, leaving the index and scale as-is.
23448
23449 2018-01-12 Jakub Jelinek <jakub@redhat.com>
23450
23451 PR c++/83778
23452 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Call
23453 fold_for_warn before checking if arg2 is INTEGER_CST.
23454
23455 2018-01-12 Segher Boessenkool <segher@kernel.crashing.org>
23456
23457 * config/rs6000/predicates.md (load_multiple_operation): Delete.
23458 (store_multiple_operation): Delete.
23459 * config/rs6000/rs6000-cpus.def (601): Remove MASK_STRING.
23460 * config/rs6000/rs6000-protos.h (rs6000_output_load_multiple): Delete.
23461 * config/rs6000/rs6000-string.c (expand_block_move): Delete everything
23462 guarded by TARGET_STRING.
23463 (rs6000_output_load_multiple): Delete.
23464 * config/rs6000/rs6000.c (rs6000_option_override_internal): Delete
23465 OPTION_MASK_STRING / TARGET_STRING handling.
23466 (print_operand) <'N', 'O'>: Add comment that these are unused now.
23467 (const rs6000_opt_masks) <"string">: Change mask to 0.
23468 * config/rs6000/rs6000.h (TARGET_DEFAULT): Remove MASK_STRING.
23469 (MASK_STRING): Delete.
23470 * config/rs6000/rs6000.md (*mov<mode>_string): Delete TARGET_STRING
23471 parts. Simplify.
23472 (load_multiple): Delete.
23473 (*ldmsi8): Delete.
23474 (*ldmsi7): Delete.
23475 (*ldmsi6): Delete.
23476 (*ldmsi5): Delete.
23477 (*ldmsi4): Delete.
23478 (*ldmsi3): Delete.
23479 (store_multiple): Delete.
23480 (*stmsi8): Delete.
23481 (*stmsi7): Delete.
23482 (*stmsi6): Delete.
23483 (*stmsi5): Delete.
23484 (*stmsi4): Delete.
23485 (*stmsi3): Delete.
23486 (movmemsi_8reg): Delete.
23487 (corresponding unnamed define_insn): Delete.
23488 (movmemsi_6reg): Delete.
23489 (corresponding unnamed define_insn): Delete.
23490 (movmemsi_4reg): Delete.
23491 (corresponding unnamed define_insn): Delete.
23492 (movmemsi_2reg): Delete.
23493 (corresponding unnamed define_insn): Delete.
23494 (movmemsi_1reg): Delete.
23495 (corresponding unnamed define_insn): Delete.
23496 * config/rs6000/rs6000.opt (mno-string): New.
23497 (mstring): Replace by deprecation warning stub.
23498 * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mstring.
23499
23500 2018-01-12 Jakub Jelinek <jakub@redhat.com>
23501
23502 * regrename.c (regrename_do_replace): If replacing the same
23503 reg multiple times, try to reuse last created gen_raw_REG.
23504
23505 PR debug/81155
23506 * bb-reorder.c (pass_partition_blocks::gate): In lto don't partition
23507 main to workaround a bug in GDB.
23508
23509 2018-01-12 Tom de Vries <tom@codesourcery.com>
23510
23511 PR target/83737
23512 * config.gcc (nvptx*-*-*): Set use_gcc_stdint=wrap.
23513
23514 2018-01-12 Vladimir Makarov <vmakarov@redhat.com>
23515
23516 PR rtl-optimization/80481
23517 * ira-color.c (get_cap_member): New function.
23518 (allocnos_conflict_by_live_ranges_p): Use it.
23519 (slot_coalesced_allocno_live_ranges_intersect_p): Add assert.
23520 (setup_slot_coalesced_allocno_live_ranges): Ditto.
23521
23522 2018-01-12 Uros Bizjak <ubizjak@gmail.com>
23523
23524 PR target/83628
23525 * config/alpha/alpha.md (*saddsi_1): New insn_ans_split pattern.
23526 (*saddl_se_1): Ditto.
23527 (*ssubsi_1): Ditto.
23528 (*ssubl_se_1): Ditto.
23529
23530 2018-01-12 Richard Sandiford <richard.sandiford@linaro.org>
23531
23532 * tree-predcom.c (aff_combination_dr_offset): Use wi::to_poly_widest
23533 rather than wi::to_widest for DR_INITs.
23534 * tree-vect-data-refs.c (vect_find_same_alignment_drs): Use
23535 wi::to_poly_offset rather than wi::to_offset for DR_INIT.
23536 (vect_analyze_data_ref_accesses): Require both DR_INITs to be
23537 INTEGER_CSTs.
23538 (vect_analyze_group_access_1): Note that here.
23539
23540 2018-01-12 Richard Sandiford <richard.sandiford@linaro.org>
23541
23542 * tree-vectorizer.c (get_vec_alignment_for_array_type): Handle
23543 polynomial type sizes.
23544
23545 2018-01-12 Richard Sandiford <richard.sandiford@linaro.org>
23546
23547 * gimplify.c (gimple_add_tmp_var_fn): Allow variables to have a
23548 poly_uint64 size, rather than requiring an unsigned HOST_WIDE_INT size.
23549 (gimple_add_tmp_var): Likewise.
23550
23551 2018-01-12 Martin Liska <mliska@suse.cz>
23552
23553 * gimple.c (gimple_alloc_counts): Use uint64_t instead of int.
23554 (gimple_alloc_sizes): Likewise.
23555 (dump_gimple_statistics): Use PRIu64 in printf format.
23556 * gimple.h: Change uint64_t to int.
23557
23558 2018-01-12 Martin Liska <mliska@suse.cz>
23559
23560 * tree-core.h: Use uint64_t instead of int.
23561 * tree.c (tree_node_counts): Likewise.
23562 (tree_node_sizes): Likewise.
23563 (dump_tree_statistics): Use PRIu64 in printf format.
23564
23565 2018-01-12 Martin Liska <mliska@suse.cz>
23566
23567 * Makefile.in: As qsort_chk is implemented in vec.c, add
23568 vec.o to linkage of gencfn-macros.
23569 * tree.c (build_new_poly_int_cst): Add CXX_MEM_STAT_INFO as it's
23570 passing the info to record_node_allocation_statistics.
23571 (test_vector_cst_patterns): Add CXX_MEM_STAT_INFO to declaration
23572 and pass the info.
23573 * ggc-common.c (struct ggc_usage): Add operator== and use
23574 it in operator< and compare function.
23575 * mem-stats.h (struct mem_usage): Likewise.
23576 * vec.c (struct vec_usage): Remove operator< and compare
23577 function. Can be simply inherited.
23578
23579 2018-01-12 Martin Jambor <mjambor@suse.cz>
23580
23581 PR target/81616
23582 * params.def: New parameter PARAM_AVOID_FMA_MAX_BITS.
23583 * tree-ssa-math-opts.c: Include domwalk.h.
23584 (convert_mult_to_fma_1): New function.
23585 (fma_transformation_info): New type.
23586 (fma_deferring_state): Likewise.
23587 (cancel_fma_deferring): New function.
23588 (result_of_phi): Likewise.
23589 (last_fma_candidate_feeds_initial_phi): Likewise.
23590 (convert_mult_to_fma): Added deferring logic, split actual
23591 transformation to convert_mult_to_fma_1.
23592 (math_opts_dom_walker): New type.
23593 (math_opts_dom_walker::after_dom_children): New method, body moved
23594 here from pass_optimize_widening_mul::execute, added deferring logic
23595 bits.
23596 (pass_optimize_widening_mul::execute): Moved most of code to
23597 math_opts_dom_walker::after_dom_children.
23598 * config/i386/x86-tune.def (X86_TUNE_AVOID_128FMA_CHAINS): New.
23599 * config/i386/i386.c (ix86_option_override_internal): Added
23600 maybe_setting of PARAM_AVOID_FMA_MAX_BITS.
23601
23602 2018-01-12 Richard Biener <rguenther@suse.de>
23603
23604 PR debug/83157
23605 * dwarf2out.c (gen_variable_die): Do not reset old_die for
23606 inline instance vars.
23607
23608 2018-01-12 Oleg Endo <olegendo@gcc.gnu.org>
23609
23610 PR target/81819
23611 * config/rx/rx.c (rx_is_restricted_memory_address):
23612 Handle SUBREG case.
23613
23614 2018-01-12 Richard Biener <rguenther@suse.de>
23615
23616 PR tree-optimization/80846
23617 * target.def (split_reduction): New target hook.
23618 * targhooks.c (default_split_reduction): New function.
23619 * targhooks.h (default_split_reduction): Declare.
23620 * tree-vect-loop.c (vect_create_epilog_for_reduction): If the
23621 target requests first reduce vectors by combining low and high
23622 parts.
23623 * tree-vect-stmts.c (vect_gen_perm_mask_any): Adjust.
23624 (get_vectype_for_scalar_type_and_size): Export.
23625 * tree-vectorizer.h (get_vectype_for_scalar_type_and_size): Declare.
23626 * doc/tm.texi.in (TARGET_VECTORIZE_SPLIT_REDUCTION): Document.
23627 * doc/tm.texi: Regenerate.
23628 * config/i386/i386.c (ix86_split_reduction): Implement
23629 TARGET_VECTORIZE_SPLIT_REDUCTION.
23630
23631 2018-01-12 Eric Botcazou <ebotcazou@adacore.com>
23632
23633 PR target/83368
23634 * config/sparc/sparc.h (PIC_OFFSET_TABLE_REGNUM): Set to INVALID_REGNUM
23635 in PIC mode except for TARGET_VXWORKS_RTP.
23636 * config/sparc/sparc.c: Include cfgrtl.h.
23637 (TARGET_INIT_PIC_REG): Define.
23638 (TARGET_USE_PSEUDO_PIC_REG): Likewise.
23639 (sparc_pic_register_p): New predicate.
23640 (sparc_legitimate_address_p): Use it.
23641 (sparc_legitimize_pic_address): Likewise.
23642 (sparc_delegitimize_address): Likewise.
23643 (sparc_mode_dependent_address_p): Likewise.
23644 (gen_load_pcrel_sym): Remove 4th parameter.
23645 (load_got_register): Adjust call to above. Remove obsolete stuff.
23646 (sparc_expand_prologue): Do not call load_got_register here.
23647 (sparc_flat_expand_prologue): Likewise.
23648 (sparc_output_mi_thunk): Set the pic_offset_table_rtx object.
23649 (sparc_use_pseudo_pic_reg): New function.
23650 (sparc_init_pic_reg): Likewise.
23651 * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
23652 (builtin_setjmp_receiver): Enable only for TARGET_VXWORKS_RTP.
23653
23654 2018-01-12 Christophe Lyon <christophe.lyon@linaro.org>
23655
23656 * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
23657 Add item for branch_cost.
23658
23659 2018-01-12 Eric Botcazou <ebotcazou@adacore.com>
23660
23661 PR rtl-optimization/83565
23662 * rtlanal.c (nonzero_bits1): On WORD_REGISTER_OPERATIONS machines, do
23663 not extend the result to a larger mode for rotate operations.
23664 (num_sign_bit_copies1): Likewise.
23665
23666 2018-01-12 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
23667
23668 PR target/40411
23669 * config/sol2.h (STARTFILE_ARCH_SPEC): Don't use with -shared or
23670 -symbolic.
23671 Use values-Xc.o for -pedantic.
23672 Link with values-xpg4.o for C90, values-xpg6.o otherwise.
23673
23674 2018-01-12 Martin Liska <mliska@suse.cz>
23675
23676 PR ipa/83054
23677 * ipa-devirt.c (final_warning_record::grow_type_warnings):
23678 New function.
23679 (possible_polymorphic_call_targets): Use it.
23680 (ipa_devirt): Likewise.
23681
23682 2018-01-12 Martin Liska <mliska@suse.cz>
23683
23684 * profile-count.h (enum profile_quality): Use 0 as invalid
23685 enum value of profile_quality.
23686
23687 2018-01-12 Chung-Ju Wu <jasonwucj@gmail.com>
23688
23689 * doc/invoke.texi (NDS32 Options): Add -mext-perf, -mext-perf2 and
23690 -mext-string options.
23691
23692 2018-01-12 Richard Biener <rguenther@suse.de>
23693
23694 * lto-streamer-out.c (DFS::DFS_write_tree_body): Process
23695 DECL_DEBUG_EXPR conditional on DECL_HAS_DEBUG_EXPR_P.
23696 * tree-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
23697 Likewise.
23698 * tree-streamer-out.c (write_ts_decl_common_tree_pointers): Likewise.
23699
23700 2018-01-11 Michael Meissner <meissner@linux.vnet.ibm.com>
23701
23702 * configure.ac (--with-long-double-format): Add support for the
23703 configuration option to change the default long double format on
23704 PowerPC systems.
23705 * config.gcc (powerpc*-linux*-*): Likewise.
23706 * configure: Regenerate.
23707 * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): If long
23708 double is IEEE, define __KC__ and __KF__ to allow floatn.h to be
23709 used without modification.
23710
23711 2018-01-11 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
23712
23713 * config/rs6000/rs6000-builtin.def (BU_P7_MISC_X): New #define.
23714 (SPEC_BARRIER): New instantiation of BU_P7_MISC_X.
23715 * config/rs6000/rs6000.c (rs6000_expand_builtin): Handle
23716 MISC_BUILTIN_SPEC_BARRIER.
23717 (rs6000_init_builtins): Likewise.
23718 * config/rs6000/rs6000.md (UNSPECV_SPEC_BARRIER): New UNSPECV
23719 enum value.
23720 (speculation_barrier): New define_insn.
23721 * doc/extend.texi: Document __builtin_speculation_barrier.
23722
23723 2018-01-11 Jakub Jelinek <jakub@redhat.com>
23724
23725 PR target/83203
23726 * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): If one_var
23727 is 0, for V{8,16}S[IF] and V[48]D[IF]mode use gen_vec_set<mode>_0.
23728 * config/i386/sse.md (VI8_AVX_AVX512F, VI4F_256_512): New mode
23729 iterators.
23730 (ssescalarmodesuffix): Add 512-bit vectors. Use "d" or "q" for
23731 integral modes instead of "ss" and "sd".
23732 (vec_set<mode>_0): New define_insns for 256-bit and 512-bit
23733 vectors with 32-bit and 64-bit elements.
23734 (vecdupssescalarmodesuffix): New mode attribute.
23735 (vec_dup<mode>): Use it.
23736
23737 2018-01-11 H.J. Lu <hongjiu.lu@intel.com>
23738
23739 PR target/83330
23740 * config/i386/i386.c (ix86_compute_frame_layout): Align stack
23741 frame if argument is passed on stack.
23742
23743 2018-01-11 Jakub Jelinek <jakub@redhat.com>
23744
23745 PR target/82682
23746 * ree.c (combine_reaching_defs): Optimize also
23747 reg2=exp; reg1=reg2; reg2=any_extend(reg1); into
23748 reg2=any_extend(exp); reg1=reg2;, formatting fix.
23749
23750 2018-01-11 Jan Hubicka <hubicka@ucw.cz>
23751
23752 PR middle-end/83189
23753 * gimple-ssa-isolate-paths.c (isolate_path): Fix profile update.
23754
23755 2018-01-11 Jan Hubicka <hubicka@ucw.cz>
23756
23757 PR middle-end/83718
23758 * tree-inline.c (copy_cfg_body): Adjust num&den for scaling
23759 after they are computed.
23760
23761 2018-01-11 Bin Cheng <bin.cheng@arm.com>
23762
23763 PR tree-optimization/83695
23764 * gimple-loop-linterchange.cc
23765 (tree_loop_interchange::interchange_loops): Call scev_reset_htab to
23766 reset cached scev information after interchange.
23767 (pass_linterchange::execute): Remove call to scev_reset_htab.
23768
23769 2018-01-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
23770
23771 * config/arm/arm_neon.h (vfmlal_lane_low_u32, vfmlal_lane_high_u32,
23772 vfmlalq_laneq_low_u32, vfmlalq_lane_low_u32, vfmlal_laneq_low_u32,
23773 vfmlalq_laneq_high_u32, vfmlalq_lane_high_u32, vfmlal_laneq_high_u32,
23774 vfmlsl_lane_low_u32, vfmlsl_lane_high_u32, vfmlslq_laneq_low_u32,
23775 vfmlslq_lane_low_u32, vfmlsl_laneq_low_u32, vfmlslq_laneq_high_u32,
23776 vfmlslq_lane_high_u32, vfmlsl_laneq_high_u32): Define.
23777 * config/arm/arm_neon_builtins.def (vfmal_lane_low,
23778 vfmal_lane_lowv4hf, vfmal_lane_lowv8hf, vfmal_lane_high,
23779 vfmal_lane_highv4hf, vfmal_lane_highv8hf, vfmsl_lane_low,
23780 vfmsl_lane_lowv4hf, vfmsl_lane_lowv8hf, vfmsl_lane_high,
23781 vfmsl_lane_highv4hf, vfmsl_lane_highv8hf): New sets of builtins.
23782 * config/arm/iterators.md (VFMLSEL2, vfmlsel2): New mode attributes.
23783 (V_lane_reg): Likewise.
23784 * config/arm/neon.md (neon_vfm<vfml_op>l_lane_<vfml_half><VCVTF:mode>):
23785 New define_expand.
23786 (neon_vfm<vfml_op>l_lane_<vfml_half><vfmlsel2><mode>): Likewise.
23787 (vfmal_lane_low<mode>_intrinsic,
23788 vfmal_lane_low<vfmlsel2><mode>_intrinsic,
23789 vfmal_lane_high<vfmlsel2><mode>_intrinsic,
23790 vfmal_lane_high<mode>_intrinsic, vfmsl_lane_low<mode>_intrinsic,
23791 vfmsl_lane_low<vfmlsel2><mode>_intrinsic,
23792 vfmsl_lane_high<vfmlsel2><mode>_intrinsic,
23793 vfmsl_lane_high<mode>_intrinsic): New define_insns.
23794
23795 2018-01-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
23796
23797 * config/arm/arm-cpus.in (fp16fml): New feature.
23798 (ALL_SIMD): Add fp16fml.
23799 (armv8.2-a): Add fp16fml as an option.
23800 (armv8.3-a): Likewise.
23801 (armv8.4-a): Add fp16fml as part of fp16.
23802 * config/arm/arm.h (TARGET_FP16FML): Define.
23803 * config/arm/arm-c.c (arm_cpu_builtins): Define __ARM_FEATURE_FP16_FML
23804 when appropriate.
23805 * config/arm/arm-modes.def (V2HF): Define.
23806 * config/arm/arm_neon.h (vfmlal_low_u32, vfmlsl_low_u32,
23807 vfmlal_high_u32, vfmlsl_high_u32, vfmlalq_low_u32,
23808 vfmlslq_low_u32, vfmlalq_high_u32, vfmlslq_high_u32): Define.
23809 * config/arm/arm_neon_builtins.def (vfmal_low, vfmal_high,
23810 vfmsl_low, vfmsl_high): New set of builtins.
23811 * config/arm/iterators.md (PLUSMINUS): New code iterator.
23812 (vfml_op): New code attribute.
23813 (VFMLHALVES): New int iterator.
23814 (VFML, VFMLSEL): New mode attributes.
23815 (V_reg): Define mapping for V2HF.
23816 (V_hi, V_lo): New mode attributes.
23817 (VF_constraint): Likewise.
23818 (vfml_half, vfml_half_selector): New int attributes.
23819 * config/arm/neon.md (neon_vfm<vfml_op>l_<vfml_half><mode>): New
23820 define_expand.
23821 (vfmal_low<mode>_intrinsic, vfmsl_high<mode>_intrinsic,
23822 vfmal_high<mode>_intrinsic, vfmsl_low<mode>_intrinsic):
23823 New define_insn.
23824 * config/arm/t-arm-elf (v8_fps): Add fp16fml.
23825 * config/arm/t-multilib (v8_2_a_simd_variants): Add fp16fml.
23826 * config/arm/unspecs.md (UNSPEC_VFML_LO, UNSPEC_VFML_HI): New unspecs.
23827 * doc/invoke.texi (ARM Options): Document fp16fml. Update armv8.4-a
23828 documentation.
23829 * doc/sourcebuild.texi (arm_fp16fml_neon_ok, arm_fp16fml_neon):
23830 Document new effective target and option set.
23831
23832 2018-01-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
23833
23834 * config/arm/arm-cpus.in (armv8_4): New feature.
23835 (ARMv8_4a): New fgroup.
23836 (armv8.4-a): New arch.
23837 * config/arm/arm-tables.opt: Regenerate.
23838 * config/arm/t-aprofile: Add matching rules for -march=armv8.4-a.
23839 * config/arm/t-arm-elf (all_v8_archs): Add armv8.4-a.
23840 * config/arm/t-multilib (v8_4_a_simd_variants): New variable.
23841 Add matching rules for -march=armv8.4-a and extensions.
23842 * doc/invoke.texi (ARM Options): Document -march=armv8.4-a.
23843
23844 2018-01-11 Oleg Endo <olegendo@gcc.gnu.org>
23845
23846 PR target/81821
23847 * config/rx/rx.md (BW): New mode attribute.
23848 (sync_lock_test_and_setsi): Add mode suffix to insn output.
23849
23850 2018-01-11 Richard Biener <rguenther@suse.de>
23851
23852 PR tree-optimization/83435
23853 * graphite.c (canonicalize_loop_form): Ignore fake loop exit edges.
23854 * graphite-scop-detection.c (scop_detection::get_sese): Likewise.
23855 * tree-vrp.c (add_assert_info): Drop TREE_OVERFLOW if they appear.
23856
23857 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
23858 Alan Hayward <alan.hayward@arm.com>
23859 David Sherwood <david.sherwood@arm.com>
23860
23861 * config/aarch64/aarch64.c (aarch64_address_info): Add a const_offset
23862 field.
23863 (aarch64_classify_address): Initialize it. Track polynomial offsets.
23864 (aarch64_print_address_internal): Use it to check for a zero offset.
23865
23866 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
23867 Alan Hayward <alan.hayward@arm.com>
23868 David Sherwood <david.sherwood@arm.com>
23869
23870 * config/aarch64/aarch64-modes.def (NUM_POLY_INT_COEFFS): Set to 2.
23871 * config/aarch64/aarch64-protos.h (aarch64_initial_elimination_offset):
23872 Return a poly_int64 rather than a HOST_WIDE_INT.
23873 (aarch64_offset_7bit_signed_scaled_p): Take the offset as a poly_int64
23874 rather than a HOST_WIDE_INT.
23875 * config/aarch64/aarch64.h (aarch64_frame): Protect with
23876 HAVE_POLY_INT_H rather than HOST_WIDE_INT. Change locals_offset,
23877 hard_fp_offset, frame_size, initial_adjust, callee_offset and
23878 final_offset from HOST_WIDE_INT to poly_int64.
23879 * config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args): Use
23880 to_constant when getting the number of units in an Advanced SIMD
23881 mode.
23882 (aarch64_builtin_vectorized_function): Check for a constant number
23883 of units.
23884 * config/aarch64/aarch64-simd.md (mov<mode>): Handle polynomial
23885 GET_MODE_SIZE.
23886 (aarch64_ld<VSTRUCT:nregs>_lane<VALLDIF:mode>): Use the nunits
23887 attribute instead of GET_MODE_NUNITS.
23888 * config/aarch64/aarch64.c (aarch64_hard_regno_nregs)
23889 (aarch64_class_max_nregs): Use the constant_lowest_bound of the
23890 GET_MODE_SIZE for fixed-size registers.
23891 (aarch64_const_vec_all_same_in_range_p): Use const_vec_duplicate_p.
23892 (aarch64_hard_regno_call_part_clobbered, aarch64_classify_index)
23893 (aarch64_mode_valid_for_sched_fusion_p, aarch64_classify_address)
23894 (aarch64_legitimize_address_displacement, aarch64_secondary_reload)
23895 (aarch64_print_operand, aarch64_print_address_internal)
23896 (aarch64_address_cost, aarch64_rtx_costs, aarch64_register_move_cost)
23897 (aarch64_short_vector_p, aapcs_vfp_sub_candidate)
23898 (aarch64_simd_attr_length_rglist, aarch64_operands_ok_for_ldpstp):
23899 Handle polynomial GET_MODE_SIZE.
23900 (aarch64_hard_regno_caller_save_mode): Likewise. Return modes
23901 wider than SImode without modification.
23902 (tls_symbolic_operand_type): Use strip_offset instead of split_const.
23903 (aarch64_pass_by_reference, aarch64_layout_arg, aarch64_pad_reg_upward)
23904 (aarch64_gimplify_va_arg_expr): Assert that we don't yet handle
23905 passing and returning SVE modes.
23906 (aarch64_function_value, aarch64_layout_arg): Use gen_int_mode
23907 rather than GEN_INT.
23908 (aarch64_emit_probe_stack_range): Take the size as a poly_int64
23909 rather than a HOST_WIDE_INT, but call sorry if it isn't constant.
23910 (aarch64_allocate_and_probe_stack_space): Likewise.
23911 (aarch64_layout_frame): Cope with polynomial offsets.
23912 (aarch64_save_callee_saves, aarch64_restore_callee_saves): Take the
23913 start_offset as a poly_int64 rather than a HOST_WIDE_INT. Track
23914 polynomial offsets.
23915 (offset_9bit_signed_unscaled_p, offset_12bit_unsigned_scaled_p)
23916 (aarch64_offset_7bit_signed_scaled_p): Take the offset as a
23917 poly_int64 rather than a HOST_WIDE_INT.
23918 (aarch64_get_separate_components, aarch64_process_components)
23919 (aarch64_expand_prologue, aarch64_expand_epilogue)
23920 (aarch64_use_return_insn_p): Handle polynomial frame offsets.
23921 (aarch64_anchor_offset): New function, split out from...
23922 (aarch64_legitimize_address): ...here.
23923 (aarch64_builtin_vectorization_cost): Handle polynomial
23924 TYPE_VECTOR_SUBPARTS.
23925 (aarch64_simd_check_vect_par_cnst_half): Handle polynomial
23926 GET_MODE_NUNITS.
23927 (aarch64_simd_make_constant, aarch64_expand_vector_init): Get the
23928 number of elements from the PARALLEL rather than the mode.
23929 (aarch64_shift_truncation_mask): Use GET_MODE_UNIT_BITSIZE
23930 rather than GET_MODE_BITSIZE.
23931 (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_ext)
23932 (aarch64_evpc_rev, aarch64_evpc_dup, aarch64_evpc_zip)
23933 (aarch64_expand_vec_perm_const_1): Handle polynomial
23934 d->perm.length () and d->perm elements.
23935 (aarch64_evpc_tbl): Likewise. Use nelt rather than GET_MODE_NUNITS.
23936 Apply to_constant to d->perm elements.
23937 (aarch64_simd_valid_immediate, aarch64_vec_fpconst_pow_of_2): Handle
23938 polynomial CONST_VECTOR_NUNITS.
23939 (aarch64_move_pointer): Take amount as a poly_int64 rather
23940 than an int.
23941 (aarch64_progress_pointer): Avoid temporary variable.
23942 * config/aarch64/aarch64.md (aarch64_<crc_variant>): Use
23943 the mode attribute instead of GET_MODE.
23944
23945 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
23946 Alan Hayward <alan.hayward@arm.com>
23947 David Sherwood <david.sherwood@arm.com>
23948
23949 * config/aarch64/aarch64.c (aarch64_force_temporary): Assert that
23950 x exists before using it.
23951 (aarch64_add_constant_internal): Rename to...
23952 (aarch64_add_offset_1): ...this. Replace regnum with separate
23953 src and dest rtxes. Handle the case in which they're different,
23954 including when the offset is zero. Replace scratchreg with an rtx.
23955 Use 2 additions if there is no spare register into which we can
23956 move a 16-bit constant.
23957 (aarch64_add_constant): Delete.
23958 (aarch64_add_offset): Replace reg with separate src and dest
23959 rtxes. Take a poly_int64 offset instead of a HOST_WIDE_INT.
23960 Use aarch64_add_offset_1.
23961 (aarch64_add_sp, aarch64_sub_sp): Take the scratch register as
23962 an rtx rather than an int. Take the delta as a poly_int64
23963 rather than a HOST_WIDE_INT. Use aarch64_add_offset.
23964 (aarch64_expand_mov_immediate): Update uses of aarch64_add_offset.
23965 (aarch64_expand_prologue): Update calls to aarch64_sub_sp,
23966 aarch64_allocate_and_probe_stack_space and aarch64_add_offset.
23967 (aarch64_expand_epilogue): Update calls to aarch64_add_offset
23968 and aarch64_add_sp.
23969 (aarch64_output_mi_thunk): Use aarch64_add_offset rather than
23970 aarch64_add_constant.
23971
23972 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
23973
23974 * config/aarch64/aarch64.c (aarch64_reinterpret_float_as_int):
23975 Use scalar_float_mode.
23976
23977 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
23978
23979 * config/aarch64/aarch64-simd.md
23980 (aarch64_fml<f16mac1>l<f16quad>_low<mode>): Avoid GET_MODE_NUNITS.
23981 (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Likewise.
23982 (aarch64_fml<f16mac1>l_lane_lowv2sf): Likewise.
23983 (aarch64_fml<f16mac1>l_lane_highv2sf): Likewise.
23984 (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Likewise.
23985 (aarch64_fml<f16mac1>lq_laneq_highv4sf): Likewise.
23986 (aarch64_fml<f16mac1>l_laneq_lowv2sf): Likewise.
23987 (aarch64_fml<f16mac1>l_laneq_highv2sf): Likewise.
23988 (aarch64_fml<f16mac1>lq_lane_lowv4sf): Likewise.
23989 (aarch64_fml<f16mac1>lq_lane_highv4sf): Likewise.
23990
23991 2018-01-11 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
23992
23993 PR target/83514
23994 * config/arm/arm.c (arm_declare_function_name): Set arch_to_print if
23995 targ_options->x_arm_arch_string is non NULL.
23996
23997 2018-01-11 Tamar Christina <tamar.christina@arm.com>
23998
23999 * config/aarch64/aarch64.h
24000 (AARCH64_FL_FOR_ARCH8_4): Add AARCH64_FL_DOTPROD.
24001
24002 2018-01-11 Sudakshina Das <sudi.das@arm.com>
24003
24004 PR target/82096
24005 * expmed.c (emit_store_flag_force): Swap if const op0
24006 and change VOIDmode to mode of op0.
24007
24008 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
24009
24010 PR rtl-optimization/83761
24011 * caller-save.c (replace_reg_with_saved_mem): Pass bits rather
24012 than bytes to mode_for_size.
24013
24014 2018-01-10 Jan Hubicka <hubicka@ucw.cz>
24015
24016 PR middle-end/83189
24017 * gfortran.fortran-torture/compile/pr83189.f90: New testcase.
24018 * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Handle zero
24019 profile.
24020
24021 2018-01-10 Jan Hubicka <hubicka@ucw.cz>
24022
24023 PR middle-end/83575
24024 * cfgrtl.c (rtl_verify_edges): Only verify fixability of partition
24025 when in layout mode.
24026 (cfg_layout_finalize): Do not verify cfg before we are out of layout.
24027 * cfgcleanup.c (try_optimize_cfg): Only verify flow info when doing
24028 partition fixup.
24029
24030 2018-01-10 Michael Collison <michael.collison@arm.com>
24031
24032 * config/aarch64/aarch64-modes.def (V2HF): New VECTOR_MODE.
24033 * config/aarch64/aarch64-option-extension.def: Add
24034 AARCH64_OPT_EXTENSION of 'fp16fml'.
24035 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
24036 (__ARM_FEATURE_FP16_FML): Define if TARGET_F16FML is true.
24037 * config/aarch64/predicates.md (aarch64_lane_imm3): New predicate.
24038 * config/aarch64/constraints.md (Ui7): New constraint.
24039 * config/aarch64/iterators.md (VFMLA_W): New mode iterator.
24040 (VFMLA_SEL_W): Ditto.
24041 (f16quad): Ditto.
24042 (f16mac1): Ditto.
24043 (VFMLA16_LOW): New int iterator.
24044 (VFMLA16_HIGH): Ditto.
24045 (UNSPEC_FMLAL): New unspec.
24046 (UNSPEC_FMLSL): Ditto.
24047 (UNSPEC_FMLAL2): Ditto.
24048 (UNSPEC_FMLSL2): Ditto.
24049 (f16mac): New code attribute.
24050 * config/aarch64/aarch64-simd-builtins.def
24051 (aarch64_fmlal_lowv2sf): Ditto.
24052 (aarch64_fmlsl_lowv2sf): Ditto.
24053 (aarch64_fmlalq_lowv4sf): Ditto.
24054 (aarch64_fmlslq_lowv4sf): Ditto.
24055 (aarch64_fmlal_highv2sf): Ditto.
24056 (aarch64_fmlsl_highv2sf): Ditto.
24057 (aarch64_fmlalq_highv4sf): Ditto.
24058 (aarch64_fmlslq_highv4sf): Ditto.
24059 (aarch64_fmlal_lane_lowv2sf): Ditto.
24060 (aarch64_fmlsl_lane_lowv2sf): Ditto.
24061 (aarch64_fmlal_laneq_lowv2sf): Ditto.
24062 (aarch64_fmlsl_laneq_lowv2sf): Ditto.
24063 (aarch64_fmlalq_lane_lowv4sf): Ditto.
24064 (aarch64_fmlsl_lane_lowv4sf): Ditto.
24065 (aarch64_fmlalq_laneq_lowv4sf): Ditto.
24066 (aarch64_fmlsl_laneq_lowv4sf): Ditto.
24067 (aarch64_fmlal_lane_highv2sf): Ditto.
24068 (aarch64_fmlsl_lane_highv2sf): Ditto.
24069 (aarch64_fmlal_laneq_highv2sf): Ditto.
24070 (aarch64_fmlsl_laneq_highv2sf): Ditto.
24071 (aarch64_fmlalq_lane_highv4sf): Ditto.
24072 (aarch64_fmlsl_lane_highv4sf): Ditto.
24073 (aarch64_fmlalq_laneq_highv4sf): Ditto.
24074 (aarch64_fmlsl_laneq_highv4sf): Ditto.
24075 * config/aarch64/aarch64-simd.md:
24076 (aarch64_fml<f16mac1>l<f16quad>_low<mode>): New pattern.
24077 (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
24078 (aarch64_simd_fml<f16mac1>l<f16quad>_low<mode>): Ditto.
24079 (aarch64_simd_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
24080 (aarch64_fml<f16mac1>l_lane_lowv2sf): Ditto.
24081 (aarch64_fml<f16mac1>l_lane_highv2sf): Ditto.
24082 (aarch64_simd_fml<f16mac>l_lane_lowv2sf): Ditto.
24083 (aarch64_simd_fml<f16mac>l_lane_highv2sf): Ditto.
24084 (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Ditto.
24085 (aarch64_fml<f16mac1>lq_laneq_highv4sf): Ditto.
24086 (aarch64_simd_fml<f16mac>lq_laneq_lowv4sf): Ditto.
24087 (aarch64_simd_fml<f16mac>lq_laneq_highv4sf): Ditto.
24088 (aarch64_fml<f16mac1>l_laneq_lowv2sf): Ditto.
24089 (aarch64_fml<f16mac1>l_laneq_highv2sf): Ditto.
24090 (aarch64_simd_fml<f16mac>l_laneq_lowv2sf): Ditto.
24091 (aarch64_simd_fml<f16mac>l_laneq_highv2sf): Ditto.
24092 (aarch64_fml<f16mac1>lq_lane_lowv4sf): Ditto.
24093 (aarch64_fml<f16mac1>lq_lane_highv4sf): Ditto.
24094 (aarch64_simd_fml<f16mac>lq_lane_lowv4sf): Ditto.
24095 (aarch64_simd_fml<f16mac>lq_lane_highv4sf): Ditto.
24096 * config/aarch64/arm_neon.h (vfmlal_low_u32): New intrinsic.
24097 (vfmlsl_low_u32): Ditto.
24098 (vfmlalq_low_u32): Ditto.
24099 (vfmlslq_low_u32): Ditto.
24100 (vfmlal_high_u32): Ditto.
24101 (vfmlsl_high_u32): Ditto.
24102 (vfmlalq_high_u32): Ditto.
24103 (vfmlslq_high_u32): Ditto.
24104 (vfmlal_lane_low_u32): Ditto.
24105 (vfmlsl_lane_low_u32): Ditto.
24106 (vfmlal_laneq_low_u32): Ditto.
24107 (vfmlsl_laneq_low_u32): Ditto.
24108 (vfmlalq_lane_low_u32): Ditto.
24109 (vfmlslq_lane_low_u32): Ditto.
24110 (vfmlalq_laneq_low_u32): Ditto.
24111 (vfmlslq_laneq_low_u32): Ditto.
24112 (vfmlal_lane_high_u32): Ditto.
24113 (vfmlsl_lane_high_u32): Ditto.
24114 (vfmlal_laneq_high_u32): Ditto.
24115 (vfmlsl_laneq_high_u32): Ditto.
24116 (vfmlalq_lane_high_u32): Ditto.
24117 (vfmlslq_lane_high_u32): Ditto.
24118 (vfmlalq_laneq_high_u32): Ditto.
24119 (vfmlslq_laneq_high_u32): Ditto.
24120 * config/aarch64/aarch64.h (AARCH64_FL_F16SML): New flag.
24121 (AARCH64_FL_FOR_ARCH8_4): New.
24122 (AARCH64_ISA_F16FML): New ISA flag.
24123 (TARGET_F16FML): New feature flag for fp16fml.
24124 (doc/invoke.texi): Document new fp16fml option.
24125
24126 2018-01-10 Michael Collison <michael.collison@arm.com>
24127
24128 * config/aarch64/aarch64-builtins.c:
24129 (aarch64_types_ternopu_imm_qualifiers, TYPES_TERNOPUI): New.
24130 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
24131 (__ARM_FEATURE_SHA3): Define if TARGET_SHA3 is true.
24132 * config/aarch64/aarch64.h (AARCH64_FL_SHA3): New flags.
24133 (AARCH64_ISA_SHA3): New ISA flag.
24134 (TARGET_SHA3): New feature flag for sha3.
24135 * config/aarch64/iterators.md (sha512_op): New int attribute.
24136 (CRYPTO_SHA512): New int iterator.
24137 (UNSPEC_SHA512H): New unspec.
24138 (UNSPEC_SHA512H2): Ditto.
24139 (UNSPEC_SHA512SU0): Ditto.
24140 (UNSPEC_SHA512SU1): Ditto.
24141 * config/aarch64/aarch64-simd-builtins.def
24142 (aarch64_crypto_sha512hqv2di): New builtin.
24143 (aarch64_crypto_sha512h2qv2di): Ditto.
24144 (aarch64_crypto_sha512su0qv2di): Ditto.
24145 (aarch64_crypto_sha512su1qv2di): Ditto.
24146 (aarch64_eor3qv8hi): Ditto.
24147 (aarch64_rax1qv2di): Ditto.
24148 (aarch64_xarqv2di): Ditto.
24149 (aarch64_bcaxqv8hi): Ditto.
24150 * config/aarch64/aarch64-simd.md:
24151 (aarch64_crypto_sha512h<sha512_op>qv2di): New pattern.
24152 (aarch64_crypto_sha512su0qv2di): Ditto.
24153 (aarch64_crypto_sha512su1qv2di): Ditto.
24154 (aarch64_eor3qv8hi): Ditto.
24155 (aarch64_rax1qv2di): Ditto.
24156 (aarch64_xarqv2di): Ditto.
24157 (aarch64_bcaxqv8hi): Ditto.
24158 * config/aarch64/arm_neon.h (vsha512hq_u64): New intrinsic.
24159 (vsha512h2q_u64): Ditto.
24160 (vsha512su0q_u64): Ditto.
24161 (vsha512su1q_u64): Ditto.
24162 (veor3q_u16): Ditto.
24163 (vrax1q_u64): Ditto.
24164 (vxarq_u64): Ditto.
24165 (vbcaxq_u16): Ditto.
24166 * config/arm/types.md (crypto_sha512): New type attribute.
24167 (crypto_sha3): Ditto.
24168 (doc/invoke.texi): Document new sha3 option.
24169
24170 2018-01-10 Michael Collison <michael.collison@arm.com>
24171
24172 * config/aarch64/aarch64-builtins.c:
24173 (aarch64_types_quadopu_imm_qualifiers, TYPES_QUADOPUI): New.
24174 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
24175 (__ARM_FEATURE_SM3): Define if TARGET_SM4 is true.
24176 (__ARM_FEATURE_SM4): Define if TARGET_SM4 is true.
24177 * config/aarch64/aarch64.h (AARCH64_FL_SM4): New flags.
24178 (AARCH64_ISA_SM4): New ISA flag.
24179 (TARGET_SM4): New feature flag for sm4.
24180 * config/aarch64/aarch64-simd-builtins.def
24181 (aarch64_sm3ss1qv4si): Ditto.
24182 (aarch64_sm3tt1aq4si): Ditto.
24183 (aarch64_sm3tt1bq4si): Ditto.
24184 (aarch64_sm3tt2aq4si): Ditto.
24185 (aarch64_sm3tt2bq4si): Ditto.
24186 (aarch64_sm3partw1qv4si): Ditto.
24187 (aarch64_sm3partw2qv4si): Ditto.
24188 (aarch64_sm4eqv4si): Ditto.
24189 (aarch64_sm4ekeyqv4si): Ditto.
24190 * config/aarch64/aarch64-simd.md:
24191 (aarch64_sm3ss1qv4si): Ditto.
24192 (aarch64_sm3tt<sm3tt_op>qv4si): Ditto.
24193 (aarch64_sm3partw<sm3part_op>qv4si): Ditto.
24194 (aarch64_sm4eqv4si): Ditto.
24195 (aarch64_sm4ekeyqv4si): Ditto.
24196 * config/aarch64/iterators.md (sm3tt_op): New int iterator.
24197 (sm3part_op): Ditto.
24198 (CRYPTO_SM3TT): Ditto.
24199 (CRYPTO_SM3PART): Ditto.
24200 (UNSPEC_SM3SS1): New unspec.
24201 (UNSPEC_SM3TT1A): Ditto.
24202 (UNSPEC_SM3TT1B): Ditto.
24203 (UNSPEC_SM3TT2A): Ditto.
24204 (UNSPEC_SM3TT2B): Ditto.
24205 (UNSPEC_SM3PARTW1): Ditto.
24206 (UNSPEC_SM3PARTW2): Ditto.
24207 (UNSPEC_SM4E): Ditto.
24208 (UNSPEC_SM4EKEY): Ditto.
24209 * config/aarch64/constraints.md (Ui2): New constraint.
24210 * config/aarch64/predicates.md (aarch64_imm2): New predicate.
24211 * config/arm/types.md (crypto_sm3): New type attribute.
24212 (crypto_sm4): Ditto.
24213 * config/aarch64/arm_neon.h (vsm3ss1q_u32): New intrinsic.
24214 (vsm3tt1aq_u32): Ditto.
24215 (vsm3tt1bq_u32): Ditto.
24216 (vsm3tt2aq_u32): Ditto.
24217 (vsm3tt2bq_u32): Ditto.
24218 (vsm3partw1q_u32): Ditto.
24219 (vsm3partw2q_u32): Ditto.
24220 (vsm4eq_u32): Ditto.
24221 (vsm4ekeyq_u32): Ditto.
24222 (doc/invoke.texi): Document new sm4 option.
24223
24224 2018-01-10 Michael Collison <michael.collison@arm.com>
24225
24226 * config/aarch64/aarch64-arches.def (armv8.4-a): New architecture.
24227 * config/aarch64/aarch64.h (AARCH64_ISA_V8_4): New ISA flag.
24228 (AARCH64_FL_FOR_ARCH8_4): New.
24229 (AARCH64_FL_V8_4): New flag.
24230 (doc/invoke.texi): Document new armv8.4-a option.
24231
24232 2018-01-10 Michael Collison <michael.collison@arm.com>
24233
24234 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
24235 (__ARM_FEATURE_AES): Define if TARGET_AES is true.
24236 (__ARM_FEATURE_SHA2): Define if TARGET_SHA2 is true.
24237 * config/aarch64/aarch64-option-extension.def: Add
24238 AARCH64_OPT_EXTENSION of 'sha2'.
24239 (aes): Add AARCH64_OPT_EXTENSION of 'aes'.
24240 (crypto): Disable sha2 and aes if crypto disabled.
24241 (crypto): Enable aes and sha2 if enabled.
24242 (simd): Disable sha2 and aes if simd disabled.
24243 * config/aarch64/aarch64.h (AARCH64_FL_AES, AARCH64_FL_SHA2):
24244 New flags.
24245 (AARCH64_ISA_AES, AARCH64_ISA_SHA2): New ISA flags.
24246 (TARGET_SHA2): New feature flag for sha2.
24247 (TARGET_AES): New feature flag for aes.
24248 * config/aarch64/aarch64-simd.md:
24249 (aarch64_crypto_aes<aes_op>v16qi): Make pattern
24250 conditional on TARGET_AES.
24251 (aarch64_crypto_aes<aesmc_op>v16qi): Ditto.
24252 (aarch64_crypto_sha1hsi): Make pattern conditional
24253 on TARGET_SHA2.
24254 (aarch64_crypto_sha1hv4si): Ditto.
24255 (aarch64_be_crypto_sha1hv4si): Ditto.
24256 (aarch64_crypto_sha1su1v4si): Ditto.
24257 (aarch64_crypto_sha1<sha1_op>v4si): Ditto.
24258 (aarch64_crypto_sha1su0v4si): Ditto.
24259 (aarch64_crypto_sha256h<sha256_op>v4si): Ditto.
24260 (aarch64_crypto_sha256su0v4si): Ditto.
24261 (aarch64_crypto_sha256su1v4si): Ditto.
24262 (doc/invoke.texi): Document new aes and sha2 options.
24263
24264 2018-01-10 Martin Sebor <msebor@redhat.com>
24265
24266 PR tree-optimization/83781
24267 * gimple-fold.c (get_range_strlen): Avoid treating arrays of pointers
24268 as string arrays.
24269
24270 2018-01-11 Martin Sebor <msebor@gmail.com>
24271 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
24272
24273 PR tree-optimization/83501
24274 PR tree-optimization/81703
24275
24276 * tree-ssa-strlen.c (get_string_cst): Rename...
24277 (get_string_len): ...to this. Handle global constants.
24278 (handle_char_store): Adjust.
24279
24280 2018-01-10 Kito Cheng <kito.cheng@gmail.com>
24281 Jim Wilson <jimw@sifive.com>
24282
24283 * config/riscv/riscv-protos.h (riscv_output_return): New.
24284 * config/riscv/riscv.c (struct machine_function): New naked_p field.
24285 (riscv_attribute_table, riscv_output_return),
24286 (riscv_handle_fndecl_attribute, riscv_naked_function_p),
24287 (riscv_allocate_stack_slots_for_args, riscv_warn_func_return): New.
24288 (riscv_compute_frame_info): Only compute frame->mask if not a naked
24289 function.
24290 (riscv_expand_prologue): Add early return for naked function.
24291 (riscv_expand_epilogue): Likewise.
24292 (riscv_function_ok_for_sibcall): Return false for naked function.
24293 (riscv_set_current_function): New.
24294 (TARGET_SET_CURRENT_FUNCTION, TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS),
24295 (TARGET_ATTRIBUTE_TABLE, TARGET_WARN_FUNC_RETURN): New.
24296 * config/riscv/riscv.md (simple_return): Call riscv_output_return.
24297 * doc/extend.texi (RISC-V Function Attributes): New.
24298
24299 2018-01-10 Michael Meissner <meissner@linux.vnet.ibm.com>
24300
24301 * config/rs6000/rs6000.c (is_complex_IBM_long_double): Explicitly
24302 check for 128-bit long double before checking TCmode.
24303 * config/rs6000/rs6000.h (FLOAT128_IEEE_P): Explicitly check for
24304 128-bit long doubles before checking TFmode or TCmode.
24305 (FLOAT128_IBM_P): Likewise.
24306
24307 2018-01-10 Martin Sebor <msebor@redhat.com>
24308
24309 PR tree-optimization/83671
24310 * builtins.c (c_strlen): Unconditionally return zero for the empty
24311 string.
24312 Use -Warray-bounds for warnings.
24313 * gimple-fold.c (get_range_strlen): Handle non-constant lengths
24314 for non-constant array indices with COMPONENT_REF, arrays of
24315 arrays, and pointers to arrays.
24316 (gimple_fold_builtin_strlen): Determine and set length range for
24317 non-constant character arrays.
24318
24319 2018-01-10 Aldy Hernandez <aldyh@redhat.com>
24320
24321 PR middle-end/81897
24322 * tree-ssa-uninit.c (convert_control_dep_chain_into_preds): Skip
24323 empty blocks.
24324
24325 2018-01-10 Eric Botcazou <ebotcazou@adacore.com>
24326
24327 * dwarf2out.c (dwarf2out_var_location): Do not pass NULL to fprintf.
24328
24329 2018-01-10 Peter Bergner <bergner@vnet.ibm.com>
24330
24331 PR target/83399
24332 * config/rs6000/rs6000.c (print_operand) <'y'>: Use
24333 VECTOR_MEM_ALTIVEC_OR_VSX_P.
24334 * config/rs6000/vsx.md (*vsx_le_perm_load_<mode> for VSX_D): Use
24335 indexed_or_indirect_operand predicate.
24336 (*vsx_le_perm_load_<mode> for VSX_W): Likewise.
24337 (*vsx_le_perm_load_v8hi): Likewise.
24338 (*vsx_le_perm_load_v16qi): Likewise.
24339 (*vsx_le_perm_store_<mode> for VSX_D): Likewise.
24340 (*vsx_le_perm_store_<mode> for VSX_W): Likewise.
24341 (*vsx_le_perm_store_v8hi): Likewise.
24342 (*vsx_le_perm_store_v16qi): Likewise.
24343 (eight unnamed splitters): Likewise.
24344
24345 2018-01-10 Peter Bergner <bergner@vnet.ibm.com>
24346
24347 * config/rs6000/x86intrin.h: Change #warning to #error. Update message.
24348 * config/rs6000/emmintrin.h: Likewise.
24349 * config/rs6000/mmintrin.h: Likewise.
24350 * config/rs6000/xmmintrin.h: Likewise.
24351
24352 2018-01-10 David Malcolm <dmalcolm@redhat.com>
24353
24354 PR c++/43486
24355 * tree-core.h: Document EXPR_LOCATION_WRAPPER_P's usage of
24356 "public_flag".
24357 * tree.c (tree_nop_conversion): Return true for location wrapper
24358 nodes.
24359 (maybe_wrap_with_location): New function.
24360 (selftest::check_strip_nops): New function.
24361 (selftest::test_location_wrappers): New function.
24362 (selftest::tree_c_tests): Call it.
24363 * tree.h (STRIP_ANY_LOCATION_WRAPPER): New macro.
24364 (maybe_wrap_with_location): New decl.
24365 (EXPR_LOCATION_WRAPPER_P): New macro.
24366 (location_wrapper_p): New inline function.
24367 (tree_strip_any_location_wrapper): New inline function.
24368
24369 2018-01-10 H.J. Lu <hongjiu.lu@intel.com>
24370
24371 PR target/83735
24372 * config/i386/i386.c (ix86_compute_frame_layout): Always adjust
24373 stack_realign_offset for the largest alignment of stack slot
24374 actually used.
24375 (ix86_find_max_used_stack_alignment): New function.
24376 (ix86_finalize_stack_frame_flags): Use it. Set
24377 max_used_stack_alignment if we don't realign stack.
24378 * config/i386/i386.h (machine_function): Add
24379 max_used_stack_alignment.
24380
24381 2018-01-10 Christophe Lyon <christophe.lyon@linaro.org>
24382
24383 * config/arm/arm.opt (-mbranch-cost): New option.
24384 * config/arm/arm.h (BRANCH_COST): Take arm_branch_cost into
24385 account.
24386
24387 2018-01-10 Segher Boessenkool <segher@kernel.crashing.org>
24388
24389 PR target/83629
24390 * config/rs6000/rs6000.md (load_toc_v4_PIC_2, load_toc_v4_PIC_3b,
24391 load_toc_v4_PIC_3c): Wrap const term in CONST RTL.
24392
24393 2018-01-10 Richard Biener <rguenther@suse.de>
24394
24395 PR debug/83765
24396 * dwarf2out.c (gen_subprogram_die): Hoist old_die && declaration
24397 early out so it also covers the case where we have a non-NULL
24398 origin.
24399
24400 2018-01-10 Richard Sandiford <richard.sandiford@linaro.org>
24401
24402 PR tree-optimization/83753
24403 * tree-vect-stmts.c (get_group_load_store_type): Use VMAT_CONTIGUOUS
24404 for non-strided grouped accesses if the number of elements is 1.
24405
24406 2018-01-10 Jan Hubicka <hubicka@ucw.cz>
24407
24408 PR target/81616
24409 * i386.c (ix86_vectorize_builtin_gather): Check TARGET_USE_GATHER.
24410 * i386.h (TARGET_USE_GATHER): Define.
24411 * x86-tune.def (X86_TUNE_USE_GATHER): New.
24412
24413 2018-01-10 Martin Liska <mliska@suse.cz>
24414
24415 PR bootstrap/82831
24416 * basic-block.h (CLEANUP_NO_PARTITIONING): New define.
24417 * bb-reorder.c (pass_reorder_blocks::execute): Do not clean up
24418 partitioning.
24419 * cfgcleanup.c (try_optimize_cfg): Fix up partitioning if
24420 CLEANUP_NO_PARTITIONING is not set.
24421
24422 2018-01-10 Richard Sandiford <richard.sandiford@linaro.org>
24423
24424 * doc/rtl.texi: Remove documentation of (const ...) wrappers
24425 for vectors, as a partial revert of r254296.
24426 * rtl.h (const_vec_p): Delete.
24427 (const_vec_duplicate_p): Don't test for vector CONSTs.
24428 (unwrap_const_vec_duplicate, const_vec_series_p): Likewise.
24429 * expmed.c (make_tree): Likewise.
24430
24431 Revert:
24432 * common.md (E, F): Use CONSTANT_P instead of checking for
24433 CONST_VECTOR.
24434 * emit-rtl.c (gen_lowpart_common): Use const_vec_p instead of
24435 checking for CONST_VECTOR.
24436
24437 2018-01-09 Jan Hubicka <hubicka@ucw.cz>
24438
24439 PR middle-end/83575
24440 * predict.c (force_edge_cold): Handle in more sane way edges
24441 with no prediction.
24442
24443 2018-01-09 Carl Love <cel@us.ibm.com>
24444
24445 * config/rs6002/altivec.md (p8_vmrgow): Add support for V2DI, V2DF,
24446 V4SI, V4SF types.
24447 (p8_vmrgew): Add support for V2DI, V2DF, V4SF types.
24448 * config/rs6000/rs6000-builtin.def: Add definitions for FLOAT2_V2DF,
24449 VMRGEW_V2DI, VMRGEW_V2DF, VMRGEW_V4SF, VMRGOW_V4SI, VMRGOW_V4SF,
24450 VMRGOW_V2DI, VMRGOW_V2DF. Remove definition for VMRGOW.
24451 * config/rs6000/rs6000-c.c (VSX_BUILTIN_VEC_FLOAT2,
24452 P8V_BUILTIN_VEC_VMRGEW, P8V_BUILTIN_VEC_VMRGOW): Add definitions.
24453 * config/rs6000/rs6000-protos.h: Add extern defition for
24454 rs6000_generate_float2_double_code.
24455 * config/rs6000/rs6000.c (rs6000_generate_float2_double_code): Add
24456 function.
24457 * config/rs6000/vsx.md (vsx_xvcdpsp): Add define_insn.
24458 (float2_v2df): Add define_expand.
24459
24460 2018-01-09 Uros Bizjak <ubizjak@gmail.com>
24461
24462 PR target/83628
24463 * combine.c (force_int_to_mode) <case ASHIFT>: Use mode instead of
24464 op_mode in the force_to_mode call.
24465
24466 2018-01-09 Richard Sandiford <richard.sandiford@linaro.org>
24467
24468 * config/aarch64/aarch64.c (aarch64_evpc_trn): Use d.perm.series_p
24469 instead of checking each element individually.
24470 (aarch64_evpc_uzp): Likewise.
24471 (aarch64_evpc_zip): Likewise.
24472 (aarch64_evpc_ext): Likewise.
24473 (aarch64_evpc_rev): Likewise.
24474 (aarch64_evpc_dup): Test the encoding for a single duplicated element,
24475 instead of checking each element individually. Return true without
24476 generating rtl if
24477 (aarch64_vectorize_vec_perm_const): Use all_from_input_p to test
24478 whether all selected elements come from the same input, instead of
24479 checking each element individually. Remove calls to gen_rtx_REG,
24480 start_sequence and end_sequence and instead assert that no rtl is
24481 generated.
24482
24483 2018-01-09 Richard Sandiford <richard.sandiford@linaro.org>
24484
24485 * config/aarch64/aarch64.c (aarch64_legitimate_constant_p): Fix
24486 order of HIGH and CONST checks.
24487
24488 2018-01-09 Richard Sandiford <richard.sandiford@linaro.org>
24489
24490 * tree-vect-stmts.c (permute_vec_elements): Create a fresh variable
24491 if the destination isn't an SSA_NAME.
24492
24493 2018-01-09 Richard Biener <rguenther@suse.de>
24494
24495 PR tree-optimization/83668
24496 * graphite.c (canonicalize_loop_closed_ssa): Add edge argument,
24497 move prologue...
24498 (canonicalize_loop_form): ... here, renamed from ...
24499 (canonicalize_loop_closed_ssa_form): ... this and amended to
24500 swap successor edges for loop exit blocks to make us use
24501 the RPO order we need for initial schedule generation.
24502
24503 2018-01-09 Joseph Myers <joseph@codesourcery.com>
24504
24505 PR tree-optimization/64811
24506 * match.pd: When optimizing comparisons with Inf, avoid
24507 introducing or losing exceptions from comparisons with NaN.
24508
24509 2018-01-09 Martin Liska <mliska@suse.cz>
24510
24511 PR sanitizer/82517
24512 * asan.c (shadow_mem_size): Add gcc_assert.
24513
24514 2018-01-09 Georg-Johann Lay <avr@gjlay.de>
24515
24516 Don't save registers in main().
24517
24518 PR target/83738
24519 * doc/invoke.texi (AVR Options) [-mmain-is-OS_task]: Document it.
24520 * config/avr/avr.opt (-mmain-is-OS_task): New target option.
24521 * config/avr/avr.c (avr_set_current_function): Don't error if
24522 naked, OS_task or OS_main are specified at the same time.
24523 (avr_function_ok_for_sibcall): Don't disable sibcalls for OS_task,
24524 OS_main.
24525 (avr_insert_attributes) [-mmain-is-OS_task] <main>: Add OS_task
24526 attribute.
24527 * common/config/avr/avr-common.c (avr_option_optimization_table):
24528 Switch on -mmain-is-OS_task for optimizing compilations.
24529
24530 2018-01-09 Richard Biener <rguenther@suse.de>
24531
24532 PR tree-optimization/83572
24533 * graphite.c: Include cfganal.h.
24534 (graphite_transform_loops): Connect infinite loops to exit
24535 and remove fake edges at the end.
24536
24537 2018-01-09 Jan Hubicka <hubicka@ucw.cz>
24538
24539 * ipa-inline.c (edge_badness): Revert accidental checkin.
24540
24541 2018-01-09 Jan Hubicka <hubicka@ucw.cz>
24542
24543 PR ipa/80763
24544 * ipa-comdats.c (set_comdat_group): Only set comdat group of real
24545 symbols; not inline clones.
24546
24547 2018-01-09 Jakub Jelinek <jakub@redhat.com>
24548
24549 PR target/83507
24550 * modulo-sched.c (schedule_reg_moves): Punt if we'd need to move
24551 hard registers. Formatting fixes.
24552
24553 PR preprocessor/83722
24554 * gcc.c (try_generate_repro): Pass
24555 &temp_stderr_files[RETRY_ICE_ATTEMPTS - 1] rather than
24556 &temp_stdout_files[RETRY_ICE_ATTEMPTS - 1] as last argument to
24557 do_report_bug.
24558
24559 2018-01-08 Monk Chiang <sh.chiang04@gmail.com>
24560 Kito Cheng <kito.cheng@gmail.com>
24561
24562 * config/riscv/riscv.c (machine_function::is_leaf): Remove field.
24563 (riscv_leaf_function_p): Delete.
24564 (riscv_function_ok_for_sibcall): Return false when TARGET_SAVE_RESTORE.
24565
24566 2018-01-08 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
24567
24568 * config/rs6000/rs6000-string.c (do_load_for_compare_from_addr): New
24569 function.
24570 (do_ifelse): New function.
24571 (do_isel): New function.
24572 (do_sub3): New function.
24573 (do_add3): New function.
24574 (do_load_mask_compare): New function.
24575 (do_overlap_load_compare): New function.
24576 (expand_compare_loop): New function.
24577 (expand_block_compare): Call expand_compare_loop() when appropriate.
24578 * config/rs6000/rs6000.opt (-mblock-compare-inline-limit): Change
24579 option description.
24580 (-mblock-compare-inline-loop-limit): New option.
24581
24582 2018-01-08 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
24583
24584 PR target/83677
24585 * config/rs6000/altivec.md (*altivec_vpermr_<mode>_internal):
24586 Reverse order of second and third operands in first alternative.
24587 * config/rs6000/rs6000.c (rs6000_expand_vector_set): Reverse order
24588 of first and second elements in UNSPEC_VPERMR vector.
24589 (altivec_expand_vec_perm_le): Likewise.
24590
24591 2018-01-08 Jeff Law <law@redhat.com>
24592
24593 PR rtl-optimizatin/81308
24594 * tree-switch-conversion.c (cfg_altered): New file scoped static.
24595 (process_switch): If group_case_labels makes a change, then set
24596 cfg_altered.
24597 (pass_convert_switch::execute): If a switch is converted, then
24598 set cfg_altered. Return TODO_cfg_cleanup if cfg_altered is true.
24599
24600 PR rtl-optimization/81308
24601 * recog.c (split_all_insns): Conditionally cleanup the CFG after
24602 splitting insns.
24603
24604 2018-01-08 Vidya Praveen <vidyapraveen@arm.com>
24605
24606 PR target/83663 - Revert r255946
24607 * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify code
24608 generation for cases where splatting a value is not useful.
24609 * simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge
24610 across a vec_duplicate and a paradoxical subreg forming a vector
24611 mode to a vec_concat.
24612
24613 2018-01-08 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
24614
24615 * config/arm/t-aprofile (MULTILIB_MATCHES): Add mapping rules for
24616 -march=armv8.3-a variants.
24617 * config/arm/t-multilib: Likewise.
24618 * config/arm/t-arm-elf: Likewise. Handle dotprod extension.
24619
24620 2018-01-08 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
24621
24622 * config/rs6000/rs6000.md (cceq_ior_compare): Remove * so I can use it
24623 to generate rtl.
24624 (cceq_ior_compare_complement): Give it a name so I can use it, and
24625 change boolean_or_operator predicate to boolean_operator so it can
24626 be used to generate a crand.
24627 (eqne): New code iterator.
24628 (bd/bd_neg): New code_attrs.
24629 (<bd>_<mode>): New name for ctr<mode>_internal[12] now combined into
24630 a single define_insn.
24631 (<bd>tf_<mode>): A new insn pattern for the conditional form branch
24632 decrement (bdnzt/bdnzf/bdzt/bdzf).
24633 * config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Updated
24634 with the new names of the branch decrement patterns, and added the
24635 names of the branch decrement conditional patterns.
24636
24637 2018-01-08 Richard Biener <rguenther@suse.de>
24638
24639 PR tree-optimization/83563
24640 * graphite.c (canonicalize_loop_closed_ssa_form): Reset the SCEV
24641 cache.
24642
24643 2018-01-08 Richard Biener <rguenther@suse.de>
24644
24645 PR middle-end/83713
24646 * convert.c (do_narrow): Properly guard TYPE_OVERFLOW_WRAPS checks.
24647
24648 2018-01-08 Richard Biener <rguenther@suse.de>
24649
24650 PR tree-optimization/83685
24651 * tree-ssa-pre.c (create_expression_by_pieces): Do not insert
24652 references to abnormals.
24653
24654 2018-01-08 Richard Biener <rguenther@suse.de>
24655
24656 PR lto/83719
24657 * dwarf2out.c (output_indirect_strings): Handle empty
24658 skeleton_debug_str_hash.
24659 (dwarf2out_early_finish): Index strings for -gsplit-dwarf.
24660
24661 2018-01-08 Claudiu Zissulescu <claziss@synopsys.com>
24662
24663 * config/arc/arc.c (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Delete.
24664 (emit_store_direct): Likewise.
24665 (arc_trampoline_adjust_address): Likewise.
24666 (arc_asm_trampoline_template): New function.
24667 (arc_initialize_trampoline): Use asm_trampoline_template.
24668 (TARGET_ASM_TRAMPOLINE_TEMPLATE): Define.
24669 * config/arc/arc.h (TRAMPOLINE_SIZE): Adjust to 16.
24670 * config/arc/arc.md (flush_icache): Delete pattern.
24671
24672 2018-01-08 Claudiu Zissulescu <claziss@synopsys.com>
24673
24674 * config/arc/arc-c.def (__ARC_UNALIGNED__): New define.
24675 * config/arc/arc.h (STRICT_ALIGNMENT): Control this macro using
24676 munaligned-access.
24677
24678 2018-01-08 Sebastian Huber <sebastian.huber@embedded-brains.de>
24679
24680 PR target/83681
24681 * config/epiphany/epiphany.h (make_pass_mode_switch_use): Guard
24682 by not USED_FOR_TARGET.
24683 (make_pass_resolve_sw_modes): Likewise.
24684
24685 2018-01-08 Sebastian Huber <sebastian.huber@embedded-brains.de>
24686
24687 * config/nios2/nios2.h (nios2_section_threshold): Guard by not
24688 USED_FOR_TARGET.
24689
24690 2018-01-08 Richard Biener <rguenther@suse.de>
24691
24692 PR middle-end/83580
24693 * tree-data-ref.c (split_constant_offset): Remove STRIP_NOPS.
24694
24695 2018-01-08 Richard Biener <rguenther@suse.de>
24696
24697 PR middle-end/83517
24698 * match.pd ((t * 2) / 2) -> t): Add missing :c.
24699
24700 2018-01-06 Aldy Hernandez <aldyh@redhat.com>
24701
24702 PR middle-end/81897
24703 * tree-ssa-uninit.c (compute_control_dep_chain): Do not bail on
24704 basic blocks with a small number of successors.
24705 (convert_control_dep_chain_into_preds): Improve handling of
24706 forwarder blocks.
24707 (dump_predicates): Split apart into...
24708 (dump_pred_chain): ...here...
24709 (dump_pred_info): ...and here.
24710 (can_one_predicate_be_invalidated_p): Add debugging printfs.
24711 (can_chain_union_be_invalidated_p): Improve check for invalidation
24712 of paths.
24713 (uninit_uses_cannot_happen): Avoid unnecessary if
24714 convert_control_dep_chain_into_preds yielded nothing.
24715
24716 2018-01-06 Martin Sebor <msebor@redhat.com>
24717
24718 PR tree-optimization/83640
24719 * gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Avoid
24720 subtracting negative offset from size.
24721 (builtin_access::overlap): Adjust offset bounds of the access to fall
24722 within the size of the object if possible.
24723
24724 2018-01-06 Richard Sandiford <richard.sandiford@linaro.org>
24725
24726 PR rtl-optimization/83699
24727 * expmed.c (extract_bit_field_1): Restrict the vector usage of
24728 extract_bit_field_as_subreg to cases in which the extracted
24729 value is also a vector.
24730
24731 * lra-constraints.c (process_alt_operands): Test for the equivalence
24732 substitutions when detecting a possible reload cycle.
24733
24734 2018-01-06 Jakub Jelinek <jakub@redhat.com>
24735
24736 PR debug/83480
24737 * toplev.c (process_options): Don't enable debug_nonbind_markers_p
24738 by default if flag_selective_schedling{,2}. Formatting fixes.
24739
24740 PR rtl-optimization/83682
24741 * rtl.h (const_vec_duplicate_p): Only return true for VEC_DUPLICATE
24742 if it has non-VECTOR_MODE element mode.
24743 (vec_duplicate_p): Likewise.
24744
24745 PR middle-end/83694
24746 * cfgexpand.c (expand_debug_expr): Punt if mode1 is VOIDmode
24747 and bitsize might be greater than MAX_BITSIZE_MODE_ANY_INT.
24748
24749 2018-01-05 Jakub Jelinek <jakub@redhat.com>
24750
24751 PR target/83604
24752 * config/i386/i386-builtin.def
24753 (__builtin_ia32_vgf2p8affineinvqb_v64qi,
24754 __builtin_ia32_vgf2p8affineqb_v64qi, __builtin_ia32_vgf2p8mulb_v64qi):
24755 Require also OPTION_MASK_ISA_AVX512F in addition to
24756 OPTION_MASK_ISA_GFNI.
24757 (__builtin_ia32_vgf2p8affineinvqb_v16qi_mask,
24758 __builtin_ia32_vgf2p8affineqb_v16qi_mask): Require
24759 OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_SSE in addition
24760 to OPTION_MASK_ISA_GFNI.
24761 (__builtin_ia32_vgf2p8mulb_v32qi_mask): Require
24762 OPTION_MASK_ISA_AVX512VL in addition to OPTION_MASK_ISA_GFNI and
24763 OPTION_MASK_ISA_AVX512BW.
24764 (__builtin_ia32_vgf2p8mulb_v16qi_mask): Require
24765 OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_AVX512BW in
24766 addition to OPTION_MASK_ISA_GFNI.
24767 (__builtin_ia32_vgf2p8affineinvqb_v16qi,
24768 __builtin_ia32_vgf2p8affineqb_v16qi, __builtin_ia32_vgf2p8mulb_v16qi):
24769 Require OPTION_MASK_ISA_SSE2 instead of OPTION_MASK_ISA_SSE in addition
24770 to OPTION_MASK_ISA_GFNI.
24771 * config/i386/i386.c (def_builtin): Change to builtin isa/isa2 being
24772 a requirement for all ISAs rather than any of them with a few
24773 exceptions.
24774 (ix86_add_new_builtins): Clear OPTION_MASK_ISA_64BIT from isa before
24775 processing.
24776 (ix86_expand_builtin): Require all ISAs from builtin's isa and isa2
24777 bitmasks to be enabled with 3 exceptions, instead of requiring any
24778 enabled ISA with lots of exceptions.
24779 * config/i386/sse.md (vgf2p8affineinvqb_<mode><mask_name>,
24780 vgf2p8affineqb_<mode><mask_name>, vgf2p8mulb_<mode><mask_name>):
24781 Change avx512bw in isa attribute to avx512f.
24782 * config/i386/sgxintrin.h: Add license boilerplate.
24783 * config/i386/vaesintrin.h: Likewise. Fix macro spelling __AVX512F
24784 to __AVX512F__ and __AVX512VL to __AVX512VL__.
24785 (_mm256_aesdec_epi128, _mm256_aesdeclast_epi128, _mm256_aesenc_epi128,
24786 _mm256_aesenclast_epi128): Enable temporarily avx if __AVX__ is not
24787 defined.
24788 * config/i386/gfniintrin.h (_mm_gf2p8mul_epi8,
24789 _mm_gf2p8affineinv_epi64_epi8, _mm_gf2p8affine_epi64_epi8): Enable
24790 temporarily sse2 rather than sse if not enabled already.
24791
24792 PR target/83604
24793 * config/i386/sse.md (VI248_VLBW): Rename to ...
24794 (VI248_AVX512VL): ... this. Don't guard V32HI with TARGET_AVX512BW.
24795 (vpshrd_<mode><mask_name>, vpshld_<mode><mask_name>,
24796 vpshrdv_<mode>, vpshrdv_<mode>_mask, vpshrdv_<mode>_maskz,
24797 vpshrdv_<mode>_maskz_1, vpshldv_<mode>, vpshldv_<mode>_mask,
24798 vpshldv_<mode>_maskz, vpshldv_<mode>_maskz_1): Use VI248_AVX512VL
24799 mode iterator instead of VI248_VLBW.
24800
24801 2018-01-05 Jan Hubicka <hubicka@ucw.cz>
24802
24803 * ipa-fnsummary.c (record_modified_bb_info): Add OP.
24804 (record_modified): Skip clobbers; add debug output.
24805 (param_change_prob): Use sreal frequencies.
24806
24807 2018-01-05 Richard Sandiford <richard.sandiford@linaro.org>
24808
24809 * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Don't
24810 punt for user-aligned variables.
24811
24812 2018-01-05 Richard Sandiford <richard.sandiford@linaro.org>
24813
24814 * tree-chrec.c (chrec_contains_symbols): Return true for
24815 POLY_INT_CST.
24816
24817 2018-01-05 Sudakshina Das <sudi.das@arm.com>
24818
24819 PR target/82439
24820 * simplify-rtx.c (simplify_relational_operation_1): Add simplifications
24821 of (x|y) == x for BICS pattern.
24822
24823 2018-01-05 Jakub Jelinek <jakub@redhat.com>
24824
24825 PR tree-optimization/83605
24826 * gimple-ssa-strength-reduction.c: Include tree-eh.h.
24827 (find_candidates_dom_walker::before_dom_children): Ignore stmts that
24828 can throw.
24829
24830 2018-01-05 Sebastian Huber <sebastian.huber@embedded-brains.de>
24831
24832 * config.gcc (epiphany-*-elf*): Add (epiphany-*-rtems*) configuration.
24833 * config/epiphany/rtems.h: New file.
24834
24835 2018-01-04 Jakub Jelinek <jakub@redhat.com>
24836 Uros Bizjak <ubizjak@gmail.com>
24837
24838 PR target/83554
24839 * config/i386/i386.md (*<rotate_insn>hi3_1 splitter): Use
24840 QIreg_operand instead of register_operand predicate.
24841 * config/i386/i386.c (ix86_rop_should_change_byte_p,
24842 set_rop_modrm_reg_bits, ix86_mitigate_rop): Use -mmitigate-rop in
24843 comments instead of -fmitigate[-_]rop.
24844
24845 2018-01-04 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
24846
24847 PR bootstrap/81926
24848 * cgraphunit.c (symbol_table::compile): Switch to text_section
24849 before calling assembly_start debug hook.
24850 * run-rtl-passes.c (run_rtl_passes): Likewise.
24851 Include output.h.
24852
24853 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
24854
24855 * tree-vrp.c (extract_range_from_binary_expr_1): Check
24856 range_int_cst_p rather than !symbolic_range_p before calling
24857 extract_range_from_multiplicative_op_1.
24858
24859 2018-01-04 Jeff Law <law@redhat.com>
24860
24861 * tree-ssa-math-opts.c (execute_cse_reciprocals_1): Remove
24862 redundant test in assertion.
24863
24864 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
24865
24866 * doc/rtl.texi: Document machine_mode wrapper classes.
24867
24868 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
24869
24870 * fold-const.c (fold_ternary_loc): Check tree_fits_uhwi_p before
24871 using tree_to_uhwi.
24872
24873 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
24874
24875 * tree-ssa-forwprop.c (is_combined_permutation_identity): Allow
24876 the VEC_PERM_EXPR fold to fail.
24877
24878 2018-01-04 Jakub Jelinek <jakub@redhat.com>
24879
24880 PR debug/83585
24881 * bb-reorder.c (insert_section_boundary_note): Set has_bb_partition
24882 to switched_sections.
24883
24884 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
24885
24886 PR target/83680
24887 * config/arm/arm.c (arm_vectorize_vec_perm_const): Fix inverted
24888 test for d.testing.
24889
24890 2018-01-04 Peter Bergner <bergner@vnet.ibm.com>
24891
24892 PR target/83387
24893 * config/rs6000/rs6000.c (rs6000_discover_homogeneous_aggregate): Do not
24894 allow arguments in FP registers if TARGET_HARD_FLOAT is false.
24895
24896 2018-01-04 Jakub Jelinek <jakub@redhat.com>
24897
24898 PR debug/83666
24899 * cfgexpand.c (expand_debug_expr) <case BIT_FIELD_REF>: Punt if mode
24900 is BLKmode and bitpos not zero or mode change is needed.
24901
24902 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
24903
24904 PR target/83675
24905 * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): Require
24906 TARGET_VIS2.
24907
24908 2018-01-04 Uros Bizjak <ubizjak@gmail.com>
24909
24910 PR target/83628
24911 * config/alpha/alpha.md (*sadd<modesuffix>): Use ASHIFT
24912 instead of MULT rtx. Update all corresponding splitters.
24913 (*saddl_se): Ditto.
24914 (*ssub<modesuffix>): Ditto.
24915 (*ssubl_se): Ditto.
24916 (*cmp_sadd_di): Update split patterns.
24917 (*cmp_sadd_si): Ditto.
24918 (*cmp_sadd_sidi): Ditto.
24919 (*cmp_ssub_di): Ditto.
24920 (*cmp_ssub_si): Ditto.
24921 (*cmp_ssub_sidi): Ditto.
24922 * config/alpha/predicates.md (const23_operand): New predicate.
24923 * config/alpha/alpha.c (alpha_rtx_costs) [PLUS, MINUS]:
24924 Look for ASHIFT, not MULT inner operand.
24925 (alpha_split_conditional_move): Update for *sadd<modesuffix> change.
24926
24927 2018-01-04 Martin Liska <mliska@suse.cz>
24928
24929 PR gcov-profile/83669
24930 * gcov.c (output_intermediate_file): Add version to intermediate
24931 gcov file.
24932 * doc/gcov.texi: Document new field 'version' in intermediate
24933 file format. Fix location of '-k' option of gcov command.
24934
24935 2018-01-04 Martin Liska <mliska@suse.cz>
24936
24937 PR ipa/82352
24938 * ipa-icf.c (sem_function::merge): Do not cross comdat boundary.
24939
24940 2018-01-04 Jakub Jelinek <jakub@redhat.com>
24941
24942 * gimple-ssa-sprintf.c (parse_directive): Cast second dir.len to uhwi.
24943
24944 2018-01-03 Martin Sebor <msebor@redhat.com>
24945
24946 PR tree-optimization/83655
24947 * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call): Avoid
24948 checking calls with invalid arguments.
24949
24950 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
24951
24952 * tree-vect-stmts.c (vect_get_store_rhs): New function.
24953 (vectorizable_mask_load_store): Delete.
24954 (vectorizable_call): Return false for masked loads and stores.
24955 (vectorizable_store): Handle IFN_MASK_STORE. Use vect_get_store_rhs
24956 instead of gimple_assign_rhs1.
24957 (vectorizable_load): Handle IFN_MASK_LOAD.
24958 (vect_transform_stmt): Don't set is_store for call_vec_info_type.
24959
24960 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
24961
24962 * tree-vect-stmts.c (vect_build_gather_load_calls): New function,
24963 split out from..,
24964 (vectorizable_mask_load_store): ...here.
24965 (vectorizable_load): ...and here.
24966
24967 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
24968
24969 * tree-vect-stmts.c (vect_build_all_ones_mask)
24970 (vect_build_zero_merge_argument): New functions, split out from...
24971 (vectorizable_load): ...here.
24972
24973 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
24974
24975 * tree-vect-stmts.c (vect_check_store_rhs): New function,
24976 split out from...
24977 (vectorizable_mask_load_store): ...here.
24978 (vectorizable_store): ...and here.
24979
24980 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
24981
24982 * tree-vect-stmts.c (vect_check_load_store_mask): New function,
24983 split out from...
24984 (vectorizable_mask_load_store): ...here.
24985
24986 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
24987
24988 * tree-vectorizer.h (vec_load_store_type): Moved from tree-vec-stmts.c
24989 (vect_model_store_cost): Take a vec_load_store_type instead of a
24990 vect_def_type.
24991 * tree-vect-stmts.c (vec_load_store_type): Move to tree-vectorizer.h.
24992 (vect_model_store_cost): Take a vec_load_store_type instead of a
24993 vect_def_type.
24994 (vectorizable_mask_load_store): Update accordingly.
24995 (vectorizable_store): Likewise.
24996 * tree-vect-slp.c (vect_analyze_slp_cost_1): Update accordingly.
24997
24998 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
24999
25000 * tree-vect-loop.c (vect_transform_loop): Stub out scalar
25001 IFN_MASK_LOAD calls here rather than...
25002 * tree-vect-stmts.c (vectorizable_mask_load_store): ...here.
25003
25004 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25005 Alan Hayward <alan.hayward@arm.com>
25006 David Sherwood <david.sherwood@arm.com>
25007
25008 * expmed.c (extract_bit_field_1): For vector extracts,
25009 fall back to extract_bit_field_as_subreg if vec_extract
25010 isn't available.
25011
25012 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25013 Alan Hayward <alan.hayward@arm.com>
25014 David Sherwood <david.sherwood@arm.com>
25015
25016 * lra-spills.c (pseudo_reg_slot_compare): Sort slots by whether
25017 they are variable or constant sized.
25018 (assign_stack_slot_num_and_sort_pseudos): Don't reuse variable-sized
25019 slots for constant-sized data.
25020
25021 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25022 Alan Hayward <alan.hayward@arm.com>
25023 David Sherwood <david.sherwood@arm.com>
25024
25025 * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): When
25026 handling COND_EXPRs with boolean comparisons, try to find a better
25027 basis for the mask type than the boolean itself.
25028
25029 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25030
25031 * doc/rtl.texi (MAX_BITSIZE_MODE_ANY_MODE): Describe how the default
25032 is calculated and how it can be overridden.
25033 * genmodes.c (max_bitsize_mode_any_mode): New variable.
25034 (create_modes): Initialize it from MAX_BITSIZE_MODE_ANY_MODE,
25035 if defined.
25036 (emit_max_int): Use it to set the output MAX_BITSIZE_MODE_ANY_MODE,
25037 if nonzero.
25038
25039 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25040 Alan Hayward <alan.hayward@arm.com>
25041 David Sherwood <david.sherwood@arm.com>
25042
25043 * config/aarch64/aarch64-protos.h (aarch64_output_simd_mov_immediate):
25044 Remove the mode argument.
25045 (aarch64_simd_valid_immediate): Remove the mode and inverse
25046 arguments.
25047 * config/aarch64/iterators.md (bitsize): New iterator.
25048 * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>, and<mode>3)
25049 (ior<mode>3): Update calls to aarch64_output_simd_mov_immediate.
25050 * config/aarch64/constraints.md (Do, Db, Dn): Update calls to
25051 aarch64_simd_valid_immediate.
25052 * config/aarch64/predicates.md (aarch64_reg_or_orr_imm): Likewise.
25053 (aarch64_reg_or_bic_imm): Likewise.
25054 * config/aarch64/aarch64.c (simd_immediate_info): Replace mvn
25055 with an insn_type enum and msl with a modifier_type enum.
25056 Replace element_width with a scalar_mode. Change the shift
25057 to unsigned int. Add constructors for scalar_float_mode and
25058 scalar_int_mode elements.
25059 (aarch64_vect_float_const_representable_p): Delete.
25060 (aarch64_can_const_movi_rtx_p)
25061 (aarch64_simd_scalar_immediate_valid_for_move)
25062 (aarch64_simd_make_constant): Update call to
25063 aarch64_simd_valid_immediate.
25064 (aarch64_advsimd_valid_immediate_hs): New function.
25065 (aarch64_advsimd_valid_immediate): Likewise.
25066 (aarch64_simd_valid_immediate): Remove mode and inverse
25067 arguments. Rewrite to use the above. Use const_vec_duplicate_p
25068 to detect duplicated constants and use aarch64_float_const_zero_rtx_p
25069 and aarch64_float_const_representable_p on the result.
25070 (aarch64_output_simd_mov_immediate): Remove mode argument.
25071 Update call to aarch64_simd_valid_immediate and use of
25072 simd_immediate_info.
25073 (aarch64_output_scalar_simd_mov_immediate): Update call
25074 accordingly.
25075
25076 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25077 Alan Hayward <alan.hayward@arm.com>
25078 David Sherwood <david.sherwood@arm.com>
25079
25080 * machmode.h (mode_precision): Prefix with CONST_MODE_PRECISION.
25081 (mode_nunits): Likewise CONST_MODE_NUNITS.
25082 * machmode.def (ADJUST_NUNITS): Document.
25083 * genmodes.c (mode_data::need_nunits_adj): New field.
25084 (blank_mode): Update accordingly.
25085 (adj_nunits): New variable.
25086 (print_maybe_const_decl): Replace CATEGORY with a NEEDS_ADJ
25087 parameter.
25088 (emit_mode_size_inline): Set need_bytesize_adj for all modes
25089 listed in adj_nunits.
25090 (emit_mode_nunits_inline): Set need_nunits_adj for all modes
25091 listed in adj_nunits. Don't emit case statements for such modes.
25092 (emit_insn_modes_h): Emit definitions of CONST_MODE_NUNITS
25093 and CONST_MODE_PRECISION. Make CONST_MODE_SIZE expand to
25094 nothing if adj_nunits is nonnull.
25095 (emit_mode_precision, emit_mode_nunits): Use print_maybe_const_decl.
25096 (emit_mode_unit_size, emit_mode_base_align, emit_mode_ibit)
25097 (emit_mode_fbit): Update use of print_maybe_const_decl.
25098 (emit_move_size): Likewise. Treat the array as non-const
25099 if adj_nunits.
25100 (emit_mode_adjustments): Handle adj_nunits.
25101
25102 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25103
25104 * machmode.def (VECTOR_MODES_WITH_PREFIX): Document.
25105 * genmodes.c (VECTOR_MODES_WITH_PREFIX): New macro.
25106 (VECTOR_MODES): Use it.
25107 (make_vector_modes): Take the prefix as an argument.
25108
25109 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25110 Alan Hayward <alan.hayward@arm.com>
25111 David Sherwood <david.sherwood@arm.com>
25112
25113 * mode-classes.def (MODE_VECTOR_BOOL): New mode class.
25114 * machmode.h (INTEGRAL_MODE_P, VECTOR_MODE_P): Return true
25115 for MODE_VECTOR_BOOL.
25116 * machmode.def (VECTOR_BOOL_MODE): Document.
25117 * genmodes.c (VECTOR_BOOL_MODE): New macro.
25118 (make_vector_bool_mode): New function.
25119 (complete_mode, emit_mode_wider, emit_mode_adjustments): Handle
25120 MODE_VECTOR_BOOL.
25121 * lto-streamer-in.c (lto_input_mode_table): Likewise.
25122 * rtx-vector-builder.c (rtx_vector_builder::find_cached_value):
25123 Likewise.
25124 * stor-layout.c (int_mode_for_mode): Likewise.
25125 * tree.c (build_vector_type_for_mode): Likewise.
25126 * varasm.c (output_constant_pool_2): Likewise.
25127 * emit-rtl.c (init_emit_once): Make sure that CONST1_RTX (BImode) and
25128 CONSTM1_RTX (BImode) are the same thing. Initialize const_tiny_rtx
25129 for MODE_VECTOR_BOOL.
25130 * expr.c (expand_expr_real_1): Use VECTOR_MODE_P instead of a list
25131 of mode class checks.
25132 * tree-vect-generic.c (expand_vector_operation): Use VECTOR_MODE_P
25133 instead of a list of mode class checks.
25134 (expand_vector_scalar_condition): Likewise.
25135 (type_for_widest_vector_mode): Handle BImode as an inner mode.
25136
25137 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25138 Alan Hayward <alan.hayward@arm.com>
25139 David Sherwood <david.sherwood@arm.com>
25140
25141 * machmode.h (mode_size): Change from unsigned short to
25142 poly_uint16_pod.
25143 (mode_to_bytes): Return a poly_uint16 rather than an unsigned short.
25144 (GET_MODE_SIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
25145 or if measurement_type is not polynomial.
25146 (fixed_size_mode::includes_p): Check for constant-sized modes.
25147 * genmodes.c (emit_mode_size_inline): Make mode_size_inline
25148 return a poly_uint16 rather than an unsigned short.
25149 (emit_mode_size): Change the type of mode_size from unsigned short
25150 to poly_uint16_pod. Use ZERO_COEFFS for the initializer.
25151 (emit_mode_adjustments): Cope with polynomial vector sizes.
25152 * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
25153 for GET_MODE_SIZE.
25154 * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
25155 for GET_MODE_SIZE.
25156 * auto-inc-dec.c (try_merge): Treat GET_MODE_SIZE as polynomial.
25157 * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Likewise.
25158 * caller-save.c (setup_save_areas): Likewise.
25159 (replace_reg_with_saved_mem): Likewise.
25160 * calls.c (emit_library_call_value_1): Likewise.
25161 * combine-stack-adj.c (combine_stack_adjustments_for_block): Likewise.
25162 * combine.c (simplify_set, make_extraction, simplify_shift_const_1)
25163 (gen_lowpart_for_combine): Likewise.
25164 * convert.c (convert_to_integer_1): Likewise.
25165 * cse.c (equiv_constant, cse_insn): Likewise.
25166 * cselib.c (autoinc_split, cselib_hash_rtx): Likewise.
25167 (cselib_subst_to_values): Likewise.
25168 * dce.c (word_dce_process_block): Likewise.
25169 * df-problems.c (df_word_lr_mark_ref): Likewise.
25170 * dwarf2cfi.c (init_one_dwarf_reg_size): Likewise.
25171 * dwarf2out.c (multiple_reg_loc_descriptor, mem_loc_descriptor)
25172 (concat_loc_descriptor, concatn_loc_descriptor, loc_descriptor)
25173 (rtl_for_decl_location): Likewise.
25174 * emit-rtl.c (gen_highpart, widen_memory_access): Likewise.
25175 * expmed.c (extract_bit_field_1, extract_integral_bit_field): Likewise.
25176 * expr.c (emit_group_load_1, clear_storage_hints): Likewise.
25177 (emit_move_complex, emit_move_multi_word, emit_push_insn): Likewise.
25178 (expand_expr_real_1): Likewise.
25179 * function.c (assign_parm_setup_block_p, assign_parm_setup_block)
25180 (pad_below): Likewise.
25181 * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
25182 * gimple-ssa-store-merging.c (rhs_valid_for_store_merging_p): Likewise.
25183 * ira.c (get_subreg_tracking_sizes): Likewise.
25184 * ira-build.c (ira_create_allocno_objects): Likewise.
25185 * ira-color.c (coalesced_pseudo_reg_slot_compare): Likewise.
25186 (ira_sort_regnos_for_alter_reg): Likewise.
25187 * ira-costs.c (record_operand_costs): Likewise.
25188 * lower-subreg.c (interesting_mode_p, simplify_gen_subreg_concatn)
25189 (resolve_simple_move): Likewise.
25190 * lra-constraints.c (get_reload_reg, operands_match_p): Likewise.
25191 (process_addr_reg, simplify_operand_subreg, curr_insn_transform)
25192 (lra_constraints): Likewise.
25193 (CONST_POOL_OK_P): Reject variable-sized modes.
25194 * lra-spills.c (slot, assign_mem_slot, pseudo_reg_slot_compare)
25195 (add_pseudo_to_slot, lra_spill): Likewise.
25196 * omp-low.c (omp_clause_aligned_alignment): Likewise.
25197 * optabs-query.c (get_best_extraction_insn): Likewise.
25198 * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
25199 * optabs.c (expand_vec_perm_var, expand_vec_cond_expr): Likewise.
25200 (expand_mult_highpart, valid_multiword_target_p): Likewise.
25201 * recog.c (offsettable_address_addr_space_p): Likewise.
25202 * regcprop.c (maybe_mode_change): Likewise.
25203 * reginfo.c (choose_hard_reg_mode, record_subregs_of_mode): Likewise.
25204 * regrename.c (build_def_use): Likewise.
25205 * regstat.c (dump_reg_info): Likewise.
25206 * reload.c (complex_word_subreg_p, push_reload, find_dummy_reload)
25207 (find_reloads, find_reloads_subreg_address): Likewise.
25208 * reload1.c (eliminate_regs_1): Likewise.
25209 * rtlanal.c (for_each_inc_dec_find_inc_dec, rtx_cost): Likewise.
25210 * simplify-rtx.c (avoid_constant_pool_reference): Likewise.
25211 (simplify_binary_operation_1, simplify_subreg): Likewise.
25212 * targhooks.c (default_function_arg_padding): Likewise.
25213 (default_hard_regno_nregs, default_class_max_nregs): Likewise.
25214 * tree-cfg.c (verify_gimple_assign_binary): Likewise.
25215 (verify_gimple_assign_ternary): Likewise.
25216 * tree-inline.c (estimate_move_cost): Likewise.
25217 * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
25218 * tree-ssa-loop-ivopts.c (add_autoinc_candidates): Likewise.
25219 (get_address_cost_ainc): Likewise.
25220 * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
25221 (vect_supportable_dr_alignment): Likewise.
25222 * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
25223 (vectorizable_reduction): Likewise.
25224 * tree-vect-stmts.c (vectorizable_assignment, vectorizable_shift)
25225 (vectorizable_operation, vectorizable_load): Likewise.
25226 * tree.c (build_same_sized_truth_vector_type): Likewise.
25227 * valtrack.c (cleanup_auto_inc_dec): Likewise.
25228 * var-tracking.c (emit_note_insn_var_location): Likewise.
25229 * config/arc/arc.h (ASM_OUTPUT_CASE_END): Use as_a <scalar_int_mode>.
25230 (ADDR_VEC_ALIGN): Likewise.
25231
25232 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25233 Alan Hayward <alan.hayward@arm.com>
25234 David Sherwood <david.sherwood@arm.com>
25235
25236 * machmode.h (mode_to_bits): Return a poly_uint16 rather than an
25237 unsigned short.
25238 (GET_MODE_BITSIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
25239 or if measurement_type is polynomial.
25240 * calls.c (shift_return_value): Treat GET_MODE_BITSIZE as polynomial.
25241 * combine.c (make_extraction): Likewise.
25242 * dse.c (find_shift_sequence): Likewise.
25243 * dwarf2out.c (mem_loc_descriptor): Likewise.
25244 * expmed.c (store_integral_bit_field, extract_bit_field_1): Likewise.
25245 (extract_bit_field, extract_low_bits): Likewise.
25246 * expr.c (convert_move, convert_modes, emit_move_insn_1): Likewise.
25247 (optimize_bitfield_assignment_op, expand_assignment): Likewise.
25248 (store_expr_with_bounds, store_field, expand_expr_real_1): Likewise.
25249 * fold-const.c (optimize_bit_field_compare, merge_ranges): Likewise.
25250 * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
25251 * reload.c (find_reloads): Likewise.
25252 * reload1.c (alter_reg): Likewise.
25253 * stor-layout.c (bitwise_mode_for_mode, compute_record_mode): Likewise.
25254 * targhooks.c (default_secondary_memory_needed_mode): Likewise.
25255 * tree-if-conv.c (predicate_mem_writes): Likewise.
25256 * tree-ssa-strlen.c (handle_builtin_memcmp): Likewise.
25257 * tree-vect-patterns.c (adjust_bool_pattern): Likewise.
25258 * tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise.
25259 * valtrack.c (dead_debug_insert_temp): Likewise.
25260 * varasm.c (mergeable_constant_section): Likewise.
25261 * config/sh/sh.h (LOCAL_ALIGNMENT): Use as_a <fixed_size_mode>.
25262
25263 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25264 Alan Hayward <alan.hayward@arm.com>
25265 David Sherwood <david.sherwood@arm.com>
25266
25267 * expr.c (expand_assignment): Cope with polynomial mode sizes
25268 when assigning to a CONCAT.
25269
25270 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25271 Alan Hayward <alan.hayward@arm.com>
25272 David Sherwood <david.sherwood@arm.com>
25273
25274 * machmode.h (mode_precision): Change from unsigned short to
25275 poly_uint16_pod.
25276 (mode_to_precision): Return a poly_uint16 rather than an unsigned
25277 short.
25278 (GET_MODE_PRECISION): Return a constant if ONLY_FIXED_SIZE_MODES,
25279 or if measurement_type is not polynomial.
25280 (HWI_COMPUTABLE_MODE_P): Turn into a function. Optimize the case
25281 in which the mode is already known to be a scalar_int_mode.
25282 * genmodes.c (emit_mode_precision): Change the type of mode_precision
25283 from unsigned short to poly_uint16_pod. Use ZERO_COEFFS for the
25284 initializer.
25285 * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
25286 for GET_MODE_PRECISION.
25287 * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
25288 for GET_MODE_PRECISION.
25289 * combine.c (update_rsp_from_reg_equal): Treat GET_MODE_PRECISION
25290 as polynomial.
25291 (try_combine, find_split_point, combine_simplify_rtx): Likewise.
25292 (expand_field_assignment, make_extraction): Likewise.
25293 (make_compound_operation_int, record_dead_and_set_regs_1): Likewise.
25294 (get_last_value): Likewise.
25295 * convert.c (convert_to_integer_1): Likewise.
25296 * cse.c (cse_insn): Likewise.
25297 * expr.c (expand_expr_real_1): Likewise.
25298 * lra-constraints.c (simplify_operand_subreg): Likewise.
25299 * optabs-query.c (can_atomic_load_p): Likewise.
25300 * optabs.c (expand_atomic_load): Likewise.
25301 (expand_atomic_store): Likewise.
25302 * ree.c (combine_reaching_defs): Likewise.
25303 * rtl.h (partial_subreg_p, paradoxical_subreg_p): Likewise.
25304 * rtlanal.c (nonzero_bits1, lsb_bitfield_op_p): Likewise.
25305 * tree.h (type_has_mode_precision_p): Likewise.
25306 * ubsan.c (instrument_si_overflow): Likewise.
25307
25308 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25309 Alan Hayward <alan.hayward@arm.com>
25310 David Sherwood <david.sherwood@arm.com>
25311
25312 * tree.h (TYPE_VECTOR_SUBPARTS): Turn into a function and handle
25313 polynomial numbers of units.
25314 (SET_TYPE_VECTOR_SUBPARTS): Likewise.
25315 (valid_vector_subparts_p): New function.
25316 (build_vector_type): Remove temporary shim and take the number
25317 of units as a poly_uint64 rather than an int.
25318 (build_opaque_vector_type): Take the number of units as a
25319 poly_uint64 rather than an int.
25320 * tree.c (build_vector_from_ctor): Handle polynomial
25321 TYPE_VECTOR_SUBPARTS.
25322 (type_hash_canon_hash, type_cache_hasher::equal): Likewise.
25323 (uniform_vector_p, vector_type_mode, build_vector): Likewise.
25324 (build_vector_from_val): If the number of units is variable,
25325 use build_vec_duplicate_cst for constant operands and
25326 VEC_DUPLICATE_EXPR otherwise.
25327 (make_vector_type): Remove temporary is_constant ().
25328 (build_vector_type, build_opaque_vector_type): Take the number of
25329 units as a poly_uint64 rather than an int.
25330 (check_vector_cst): Handle polynomial TYPE_VECTOR_SUBPARTS and
25331 VECTOR_CST_NELTS.
25332 * cfgexpand.c (expand_debug_expr): Likewise.
25333 * expr.c (count_type_elements, categorize_ctor_elements_1): Likewise.
25334 (store_constructor, expand_expr_real_1): Likewise.
25335 (const_scalar_mask_from_tree): Likewise.
25336 * fold-const-call.c (fold_const_reduction): Likewise.
25337 * fold-const.c (const_binop, const_unop, fold_convert_const): Likewise.
25338 (operand_equal_p, fold_vec_perm, fold_ternary_loc): Likewise.
25339 (native_encode_vector, vec_cst_ctor_to_array): Likewise.
25340 (fold_relational_const): Likewise.
25341 (native_interpret_vector): Likewise. Change the size from an
25342 int to an unsigned int.
25343 * gimple-fold.c (gimple_fold_stmt_to_constant_1): Handle polynomial
25344 TYPE_VECTOR_SUBPARTS.
25345 (gimple_fold_indirect_ref, gimple_build_vector): Likewise.
25346 (gimple_build_vector_from_val): Use VEC_DUPLICATE_EXPR when
25347 duplicating a non-constant operand into a variable-length vector.
25348 * hsa-brig.c (hsa_op_immed::emit_to_buffer): Handle polynomial
25349 TYPE_VECTOR_SUBPARTS and VECTOR_CST_NELTS.
25350 * ipa-icf.c (sem_variable::equals): Likewise.
25351 * match.pd: Likewise.
25352 * omp-simd-clone.c (simd_clone_subparts): Likewise.
25353 * print-tree.c (print_node): Likewise.
25354 * stor-layout.c (layout_type): Likewise.
25355 * targhooks.c (default_builtin_vectorization_cost): Likewise.
25356 * tree-cfg.c (verify_gimple_comparison): Likewise.
25357 (verify_gimple_assign_binary): Likewise.
25358 (verify_gimple_assign_ternary): Likewise.
25359 (verify_gimple_assign_single): Likewise.
25360 * tree-pretty-print.c (dump_generic_node): Likewise.
25361 * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
25362 (simplify_bitfield_ref, is_combined_permutation_identity): Likewise.
25363 * tree-vect-data-refs.c (vect_permute_store_chain): Likewise.
25364 (vect_grouped_load_supported, vect_permute_load_chain): Likewise.
25365 (vect_shift_permute_load_chain): Likewise.
25366 * tree-vect-generic.c (nunits_for_known_piecewise_op): Likewise.
25367 (expand_vector_condition, optimize_vector_constructor): Likewise.
25368 (lower_vec_perm, get_compute_type): Likewise.
25369 * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
25370 (get_initial_defs_for_reduction, vect_transform_loop): Likewise.
25371 * tree-vect-patterns.c (vect_recog_bool_pattern): Likewise.
25372 (vect_recog_mask_conversion_pattern): Likewise.
25373 * tree-vect-slp.c (vect_supported_load_permutation_p): Likewise.
25374 (vect_get_constant_vectors, vect_transform_slp_perm_load): Likewise.
25375 * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
25376 (get_group_load_store_type, vectorizable_mask_load_store): Likewise.
25377 (vectorizable_bswap, simd_clone_subparts, vectorizable_assignment)
25378 (vectorizable_shift, vectorizable_operation, vectorizable_store)
25379 (vectorizable_load, vect_is_simple_cond, vectorizable_comparison)
25380 (supportable_widening_operation): Likewise.
25381 (supportable_narrowing_operation): Likewise.
25382 * tree-vector-builder.c (tree_vector_builder::binary_encoded_nelts):
25383 Likewise.
25384 * varasm.c (output_constant): Likewise.
25385
25386 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25387 Alan Hayward <alan.hayward@arm.com>
25388 David Sherwood <david.sherwood@arm.com>
25389
25390 * tree-vect-data-refs.c (vect_permute_store_chain): Reorganize
25391 so that both the length == 3 and length != 3 cases set up their
25392 own permute vectors. Add comments explaining why we know the
25393 number of elements is constant.
25394 (vect_permute_load_chain): Likewise.
25395
25396 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25397 Alan Hayward <alan.hayward@arm.com>
25398 David Sherwood <david.sherwood@arm.com>
25399
25400 * machmode.h (mode_nunits): Change from unsigned char to
25401 poly_uint16_pod.
25402 (ONLY_FIXED_SIZE_MODES): New macro.
25403 (pod_mode::measurement_type, scalar_int_mode::measurement_type)
25404 (scalar_float_mode::measurement_type, scalar_mode::measurement_type)
25405 (complex_mode::measurement_type, fixed_size_mode::measurement_type):
25406 New typedefs.
25407 (mode_to_nunits): Return a poly_uint16 rather than an unsigned short.
25408 (GET_MODE_NUNITS): Return a constant if ONLY_FIXED_SIZE_MODES,
25409 or if measurement_type is not polynomial.
25410 * genmodes.c (ZERO_COEFFS): New macro.
25411 (emit_mode_nunits_inline): Make mode_nunits_inline return a
25412 poly_uint16.
25413 (emit_mode_nunits): Change the type of mode_nunits to poly_uint16_pod.
25414 Use ZERO_COEFFS when emitting initializers.
25415 * data-streamer.h (bp_pack_poly_value): New function.
25416 (bp_unpack_poly_value): Likewise.
25417 * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
25418 for GET_MODE_NUNITS.
25419 * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
25420 for GET_MODE_NUNITS.
25421 * tree.c (make_vector_type): Remove temporary shim and make
25422 the real function take the number of units as a poly_uint64
25423 rather than an int.
25424 (build_vector_type_for_mode): Handle polynomial nunits.
25425 * dwarf2out.c (loc_descriptor, add_const_value_attribute): Likewise.
25426 * emit-rtl.c (const_vec_series_p_1): Likewise.
25427 (gen_rtx_CONST_VECTOR): Likewise.
25428 * fold-const.c (test_vec_duplicate_folding): Likewise.
25429 * genrecog.c (validate_pattern): Likewise.
25430 * optabs-query.c (can_vec_perm_var_p, can_mult_highpart_p): Likewise.
25431 * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
25432 * optabs.c (expand_vector_broadcast, expand_binop_directly): Likewise.
25433 (shift_amt_for_vec_perm_mask, expand_vec_perm_var): Likewise.
25434 (expand_vec_cond_expr, expand_mult_highpart): Likewise.
25435 * rtlanal.c (subreg_get_info): Likewise.
25436 * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
25437 (vect_grouped_load_supported): Likewise.
25438 * tree-vect-generic.c (type_for_widest_vector_mode): Likewise.
25439 * tree-vect-loop.c (have_whole_vector_shift): Likewise.
25440 * simplify-rtx.c (simplify_unary_operation_1): Likewise.
25441 (simplify_const_unary_operation, simplify_binary_operation_1)
25442 (simplify_const_binary_operation, simplify_ternary_operation)
25443 (test_vector_ops_duplicate, test_vector_ops): Likewise.
25444 (simplify_immed_subreg): Use GET_MODE_NUNITS on a fixed_size_mode
25445 instead of CONST_VECTOR_NUNITS.
25446 * varasm.c (output_constant_pool_2): Likewise.
25447 * rtx-vector-builder.c (rtx_vector_builder::build): Only include the
25448 explicit-encoded elements in the XVEC for variable-length vectors.
25449
25450 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25451
25452 * lra-constraints.c (curr_insn_transform): Use partial_subreg_p.
25453
25454 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25455 Alan Hayward <alan.hayward@arm.com>
25456 David Sherwood <david.sherwood@arm.com>
25457
25458 * coretypes.h (fixed_size_mode): Declare.
25459 (fixed_size_mode_pod): New typedef.
25460 * builtins.h (target_builtins::x_apply_args_mode)
25461 (target_builtins::x_apply_result_mode): Change type to
25462 fixed_size_mode_pod.
25463 * builtins.c (apply_args_size, apply_result_size, result_vector)
25464 (expand_builtin_apply_args_1, expand_builtin_apply)
25465 (expand_builtin_return): Update accordingly.
25466
25467 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25468
25469 * cse.c (hash_rtx_cb): Hash only the encoded elements.
25470 * cselib.c (cselib_hash_rtx): Likewise.
25471 * expmed.c (make_tree): Build VECTOR_CSTs directly from the
25472 CONST_VECTOR encoding.
25473
25474 2018-01-03 Jakub Jelinek <jakub@redhat.com>
25475 Jeff Law <law@redhat.com>
25476
25477 PR target/83641
25478 * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): For
25479 noreturn probe, use gen_pop instead of ix86_emit_restore_reg_using_pop,
25480 only set RTX_FRAME_RELATED_P on both the push and pop if cfa_reg is sp
25481 and add REG_CFA_ADJUST_CFA notes in that case to both insns.
25482
25483 PR target/83641
25484 * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): Do not
25485 explicitly probe *sp in a noreturn function if there were any callee
25486 register saves or frame pointer is needed.
25487
25488 2018-01-03 Jakub Jelinek <jakub@redhat.com>
25489
25490 PR debug/83621
25491 * cfgexpand.c (expand_debug_expr): Return NULL if mode is
25492 BLKmode for ternary, binary or unary expressions.
25493
25494 PR debug/83645
25495 * var-tracking.c (delete_vta_debug_insn): New inline function.
25496 (delete_vta_debug_insns): Add USE_CFG argument, if true, walk just
25497 insns from get_insns () to NULL instead of each bb separately.
25498 Use delete_vta_debug_insn. No longer static.
25499 (vt_debug_insns_local, variable_tracking_main_1): Adjust
25500 delete_vta_debug_insns callers.
25501 * rtl.h (delete_vta_debug_insns): Declare.
25502 * final.c (rest_of_handle_final): Call delete_vta_debug_insns
25503 instead of variable_tracking_main.
25504
25505 2018-01-03 Martin Sebor <msebor@redhat.com>
25506
25507 PR tree-optimization/83603
25508 * calls.c (maybe_warn_nonstring_arg): Avoid accessing function
25509 arguments past the endof the argument list in functions declared
25510 without a prototype.
25511 * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call):
25512 Avoid checking when arguments are null.
25513
25514 2018-01-03 Martin Sebor <msebor@redhat.com>
25515
25516 PR c/83559
25517 * doc/extend.texi (attribute const): Fix a typo.
25518 * ipa-pure-const.c ((warn_function_const, warn_function_pure): Avoid
25519 issuing -Wsuggest-attribute for void functions.
25520
25521 2018-01-03 Martin Sebor <msebor@redhat.com>
25522
25523 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Use
25524 offset_int::from instead of wide_int::to_shwi.
25525 (maybe_diag_overlap): Remove assertion.
25526 Use HOST_WIDE_INT_PRINT_DEC instead of %lli.
25527 * gimple-ssa-sprintf.c (format_directive): Same.
25528 (parse_directive): Same.
25529 (sprintf_dom_walker::compute_format_length): Same.
25530 (try_substitute_return_value): Same.
25531
25532 2018-01-03 Jeff Law <law@redhat.com>
25533
25534 PR middle-end/83654
25535 * explow.c (anti_adjust_stack_and_probe_stack_clash): Test a
25536 non-constant residual for zero at runtime and avoid probing in
25537 that case. Reorganize code for trailing problem to mirror handling
25538 of the residual.
25539
25540 2018-01-03 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
25541
25542 PR tree-optimization/83501
25543 * tree-ssa-strlen.c (get_string_cst): New.
25544 (handle_char_store): Call get_string_cst.
25545
25546 2018-01-03 Martin Liska <mliska@suse.cz>
25547
25548 PR tree-optimization/83593
25549 * tree-ssa-strlen.c: Include tree-cfg.h.
25550 (strlen_check_and_optimize_stmt): Add new argument cleanup_eh.
25551 (strlen_dom_walker): Add new member variable m_cleanup_cfg.
25552 (strlen_dom_walker::strlen_dom_walker): Initialize m_cleanup_cfg
25553 to false.
25554 (strlen_dom_walker::before_dom_children): Call
25555 gimple_purge_dead_eh_edges. Dump tranformation with details
25556 dump flags.
25557 (strlen_dom_walker::before_dom_children): Update call by adding
25558 new argument cleanup_eh.
25559 (pass_strlen::execute): Return TODO_cleanup_cfg if needed.
25560
25561 2018-01-03 Martin Liska <mliska@suse.cz>
25562
25563 PR ipa/83549
25564 * cif-code.def (VARIADIC_THUNK): New enum value.
25565 * ipa-fnsummary.c (compute_fn_summary): Do not inline variadic
25566 thunks.
25567
25568 2018-01-03 Jan Beulich <jbeulich@suse.com>
25569
25570 * sse.md (mov<mode>_internal): Tighten condition for when to use
25571 vmovdqu<ssescalarsize> for TI and OI modes.
25572
25573 2018-01-03 Jakub Jelinek <jakub@redhat.com>
25574
25575 Update copyright years.
25576
25577 2018-01-03 Martin Liska <mliska@suse.cz>
25578
25579 PR ipa/83594
25580 * ipa-visibility.c (function_and_variable_visibility): Skip
25581 functions with noipa attribure.
25582
25583 2018-01-03 Jakub Jelinek <jakub@redhat.com>
25584
25585 * gcc.c (process_command): Update copyright notice dates.
25586 * gcov-dump.c (print_version): Ditto.
25587 * gcov.c (print_version): Ditto.
25588 * gcov-tool.c (print_version): Ditto.
25589 * gengtype.c (create_file): Ditto.
25590 * doc/cpp.texi: Bump @copying's copyright year.
25591 * doc/cppinternals.texi: Ditto.
25592 * doc/gcc.texi: Ditto.
25593 * doc/gccint.texi: Ditto.
25594 * doc/gcov.texi: Ditto.
25595 * doc/install.texi: Ditto.
25596 * doc/invoke.texi: Ditto.
25597
25598 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25599
25600 * vector-builder.h (vector_builder::m_full_nelts): Change from
25601 unsigned int to poly_uint64.
25602 (vector_builder::full_nelts): Update prototype accordingly.
25603 (vector_builder::new_vector): Likewise.
25604 (vector_builder::encoded_full_vector_p): Handle polynomial full_nelts.
25605 (vector_builder::operator ==): Likewise.
25606 (vector_builder::finalize): Likewise.
25607 * int-vector-builder.h (int_vector_builder::int_vector_builder):
25608 Take the number of elements as a poly_uint64 rather than an
25609 unsigned int.
25610 * vec-perm-indices.h (vec_perm_indices::m_nelts_per_input): Change
25611 from unsigned int to poly_uint64.
25612 (vec_perm_indices::vec_perm_indices): Update prototype accordingly.
25613 (vec_perm_indices::new_vector): Likewise.
25614 (vec_perm_indices::length): Likewise.
25615 (vec_perm_indices::nelts_per_input): Likewise.
25616 (vec_perm_indices::input_nelts): Likewise.
25617 * vec-perm-indices.c (vec_perm_indices::new_vector): Take the
25618 number of elements per input as a poly_uint64 rather than an
25619 unsigned int. Use the original encoding for variable-length
25620 vectors, rather than clamping each individual element.
25621 For the second and subsequent elements in each pattern,
25622 clamp the step and base before clamping their sum.
25623 (vec_perm_indices::series_p): Handle polynomial element counts.
25624 (vec_perm_indices::all_in_range_p): Likewise.
25625 (vec_perm_indices_to_tree): Likewise.
25626 (vec_perm_indices_to_rtx): Likewise.
25627 * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise.
25628 * tree-vector-builder.c (tree_vector_builder::new_unary_operation)
25629 (tree_vector_builder::new_binary_operation): Handle polynomial
25630 element counts. Return false if we need to know the number
25631 of elements at compile time.
25632 * fold-const.c (fold_vec_perm): Punt if the number of elements
25633 isn't known at compile time.
25634
25635 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25636
25637 * vec-perm-indices.h (vec_perm_builder): Change element type
25638 from HOST_WIDE_INT to poly_int64.
25639 (vec_perm_indices::element_type): Update accordingly.
25640 (vec_perm_indices::clamp): Handle polynomial element_types.
25641 * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
25642 (vec_perm_indices::all_in_range_p): Likewise.
25643 (tree_to_vec_perm_builder): Check for poly_int64 trees rather
25644 than shwi trees.
25645 * vector-builder.h (vector_builder::stepped_sequence_p): Handle
25646 polynomial vec_perm_indices element types.
25647 * int-vector-builder.h (int_vector_builder::equal_p): Likewise.
25648 * fold-const.c (fold_vec_perm): Likewise.
25649 * optabs.c (shift_amt_for_vec_perm_mask): Likewise.
25650 * tree-vect-generic.c (lower_vec_perm): Likewise.
25651 * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
25652 * config/aarch64/aarch64.c (aarch64_evpc_tbl): Cast d->perm
25653 element type to HOST_WIDE_INT.
25654
25655 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25656 Alan Hayward <alan.hayward@arm.com>
25657 David Sherwood <david.sherwood@arm.com>
25658
25659 * alias.c (addr_side_effect_eval): Take the size as a poly_int64
25660 rather than an int. Use plus_constant.
25661 (memrefs_conflict_p): Take the sizes as poly_int64s rather than ints.
25662 Take the offset "c" as a poly_int64 rather than a HOST_WIDE_INT.
25663
25664 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25665 Alan Hayward <alan.hayward@arm.com>
25666 David Sherwood <david.sherwood@arm.com>
25667
25668 * calls.c (emit_call_1, expand_call): Change struct_value_size from
25669 a HOST_WIDE_INT to a poly_int64.
25670
25671 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25672 Alan Hayward <alan.hayward@arm.com>
25673 David Sherwood <david.sherwood@arm.com>
25674
25675 * calls.c (load_register_parameters): Cope with polynomial
25676 mode sizes. Require a constant size for BLKmode parameters
25677 that aren't described by a PARALLEL. If BLOCK_REG_PADDING
25678 forces a parameter to be padded at the lsb end in order to
25679 fill a complete number of words, require the parameter size
25680 to be ordered wrt UNITS_PER_WORD.
25681
25682 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25683 Alan Hayward <alan.hayward@arm.com>
25684 David Sherwood <david.sherwood@arm.com>
25685
25686 * reload1.c (spill_stack_slot_width): Change element type
25687 from unsigned int to poly_uint64_pod.
25688 (alter_reg): Treat mode sizes as polynomial.
25689
25690 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25691 Alan Hayward <alan.hayward@arm.com>
25692 David Sherwood <david.sherwood@arm.com>
25693
25694 * reload.c (complex_word_subreg_p): New function.
25695 (reload_inner_reg_of_subreg, push_reload): Use it.
25696
25697 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25698 Alan Hayward <alan.hayward@arm.com>
25699 David Sherwood <david.sherwood@arm.com>
25700
25701 * lra-constraints.c (process_alt_operands): Reject matched
25702 operands whose sizes aren't ordered.
25703 (match_reload): Refer to this check here.
25704
25705 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25706 Alan Hayward <alan.hayward@arm.com>
25707 David Sherwood <david.sherwood@arm.com>
25708
25709 * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Assert
25710 that the mode size is in the set {1, 2, 4, 8, 16}.
25711
25712 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25713 Alan Hayward <alan.hayward@arm.com>
25714 David Sherwood <david.sherwood@arm.com>
25715
25716 * var-tracking.c (adjust_mems): Treat mode sizes as polynomial.
25717 Use plus_constant instead of gen_rtx_PLUS.
25718
25719 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25720 Alan Hayward <alan.hayward@arm.com>
25721 David Sherwood <david.sherwood@arm.com>
25722
25723 * config/cr16/cr16-protos.h (cr16_push_rounding): Declare.
25724 * config/cr16/cr16.h (PUSH_ROUNDING): Move implementation to...
25725 * config/cr16/cr16.c (cr16_push_rounding): ...this new function.
25726 * config/h8300/h8300-protos.h (h8300_push_rounding): Declare.
25727 * config/h8300/h8300.h (PUSH_ROUNDING): Move implementation to...
25728 * config/h8300/h8300.c (h8300_push_rounding): ...this new function.
25729 * config/i386/i386-protos.h (ix86_push_rounding): Declare.
25730 * config/i386/i386.h (PUSH_ROUNDING): Move implementation to...
25731 * config/i386/i386.c (ix86_push_rounding): ...this new function.
25732 * config/m32c/m32c-protos.h (m32c_push_rounding): Take and return
25733 a poly_int64.
25734 * config/m32c/m32c.c (m32c_push_rounding): Likewise.
25735 * config/m68k/m68k-protos.h (m68k_push_rounding): Declare.
25736 * config/m68k/m68k.h (PUSH_ROUNDING): Move implementation to...
25737 * config/m68k/m68k.c (m68k_push_rounding): ...this new function.
25738 * config/pdp11/pdp11-protos.h (pdp11_push_rounding): Declare.
25739 * config/pdp11/pdp11.h (PUSH_ROUNDING): Move implementation to...
25740 * config/pdp11/pdp11.c (pdp11_push_rounding): ...this new function.
25741 * config/stormy16/stormy16-protos.h (xstormy16_push_rounding): Declare.
25742 * config/stormy16/stormy16.h (PUSH_ROUNDING): Move implementation to...
25743 * config/stormy16/stormy16.c (xstormy16_push_rounding): ...this new
25744 function.
25745 * expr.c (emit_move_resolve_push): Treat the input and result
25746 of PUSH_ROUNDING as a poly_int64.
25747 (emit_move_complex_push, emit_single_push_insn_1): Likewise.
25748 (emit_push_insn): Likewise.
25749 * lra-eliminations.c (mark_not_eliminable): Likewise.
25750 * recog.c (push_operand): Likewise.
25751 * reload1.c (elimination_effects): Likewise.
25752 * rtlanal.c (nonzero_bits1): Likewise.
25753 * calls.c (store_one_arg): Likewise. Require the padding to be
25754 known at compile time.
25755
25756 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25757 Alan Hayward <alan.hayward@arm.com>
25758 David Sherwood <david.sherwood@arm.com>
25759
25760 * expr.c (emit_single_push_insn_1): Treat mode sizes as polynomial.
25761 Use plus_constant instead of gen_rtx_PLUS.
25762
25763 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25764 Alan Hayward <alan.hayward@arm.com>
25765 David Sherwood <david.sherwood@arm.com>
25766
25767 * auto-inc-dec.c (set_inc_state): Take the mode size as a poly_int64
25768 rather than an int.
25769
25770 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25771 Alan Hayward <alan.hayward@arm.com>
25772 David Sherwood <david.sherwood@arm.com>
25773
25774 * expr.c (expand_expr_real_1): Use tree_to_poly_uint64
25775 instead of int_size_in_bytes when handling VIEW_CONVERT_EXPRs
25776 via stack temporaries. Treat the mode size as polynomial too.
25777
25778 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25779 Alan Hayward <alan.hayward@arm.com>
25780 David Sherwood <david.sherwood@arm.com>
25781
25782 * expr.c (expand_expr_real_2): When handling conversions involving
25783 unions, apply tree_to_poly_uint64 to the TYPE_SIZE rather than
25784 multiplying int_size_in_bytes by BITS_PER_UNIT. Treat GET_MODE_BISIZE
25785 as a poly_uint64 too.
25786
25787 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25788 Alan Hayward <alan.hayward@arm.com>
25789 David Sherwood <david.sherwood@arm.com>
25790
25791 * rtlanal.c (subreg_get_info): Handle polynomial mode sizes.
25792
25793 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25794 Alan Hayward <alan.hayward@arm.com>
25795 David Sherwood <david.sherwood@arm.com>
25796
25797 * combine.c (can_change_dest_mode): Handle polynomial
25798 REGMODE_NATURAL_SIZE.
25799 * expmed.c (store_bit_field_1): Likewise.
25800 * expr.c (store_constructor): Likewise.
25801 * emit-rtl.c (validate_subreg): Operate on polynomial mode sizes
25802 and polynomial REGMODE_NATURAL_SIZE.
25803 (gen_lowpart_common): Likewise.
25804 * reginfo.c (record_subregs_of_mode): Likewise.
25805 * rtlanal.c (read_modify_subreg_p): Likewise.
25806
25807 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25808 Alan Hayward <alan.hayward@arm.com>
25809 David Sherwood <david.sherwood@arm.com>
25810
25811 * internal-fn.c (expand_vector_ubsan_overflow): Handle polynomial
25812 numbers of elements.
25813
25814 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25815 Alan Hayward <alan.hayward@arm.com>
25816 David Sherwood <david.sherwood@arm.com>
25817
25818 * match.pd: Cope with polynomial numbers of vector elements.
25819
25820 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25821 Alan Hayward <alan.hayward@arm.com>
25822 David Sherwood <david.sherwood@arm.com>
25823
25824 * fold-const.c (fold_indirect_ref_1): Handle polynomial offsets
25825 in a POINTER_PLUS_EXPR.
25826
25827 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25828 Alan Hayward <alan.hayward@arm.com>
25829 David Sherwood <david.sherwood@arm.com>
25830
25831 * omp-simd-clone.c (simd_clone_subparts): New function.
25832 (simd_clone_init_simd_arrays): Use it instead of TYPE_VECTOR_SUBPARTS.
25833 (ipa_simd_modify_function_body): Likewise.
25834
25835 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25836 Alan Hayward <alan.hayward@arm.com>
25837 David Sherwood <david.sherwood@arm.com>
25838
25839 * tree-vect-generic.c (nunits_for_known_piecewise_op): New function.
25840 (expand_vector_piecewise): Use it instead of TYPE_VECTOR_SUBPARTS.
25841 (expand_vector_addition, add_rshift, expand_vector_divmod): Likewise.
25842 (expand_vector_condition, vector_element): Likewise.
25843 (subparts_gt): New function.
25844 (get_compute_type): Use subparts_gt.
25845 (count_type_subparts): Delete.
25846 (expand_vector_operations_1): Use subparts_gt instead of
25847 count_type_subparts.
25848
25849 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25850 Alan Hayward <alan.hayward@arm.com>
25851 David Sherwood <david.sherwood@arm.com>
25852
25853 * tree-vect-data-refs.c (vect_no_alias_p): Replace with...
25854 (vect_compile_time_alias): ...this new function. Do the calculation
25855 on poly_ints rather than trees.
25856 (vect_prune_runtime_alias_test_list): Update call accordingly.
25857
25858 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25859 Alan Hayward <alan.hayward@arm.com>
25860 David Sherwood <david.sherwood@arm.com>
25861
25862 * tree-vect-slp.c (vect_build_slp_tree_1): Handle polynomial
25863 numbers of units.
25864 (vect_schedule_slp_instance): Likewise.
25865
25866 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25867 Alan Hayward <alan.hayward@arm.com>
25868 David Sherwood <david.sherwood@arm.com>
25869
25870 * tree-vect-slp.c (vect_get_and_check_slp_defs): Reject
25871 constant and extern definitions for variable-length vectors.
25872 (vect_get_constant_vectors): Note that the number of units
25873 is known to be constant.
25874
25875 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25876 Alan Hayward <alan.hayward@arm.com>
25877 David Sherwood <david.sherwood@arm.com>
25878
25879 * tree-vect-stmts.c (vectorizable_conversion): Treat the number
25880 of units as polynomial. Choose between WIDE and NARROW based
25881 on multiple_p.
25882
25883 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25884 Alan Hayward <alan.hayward@arm.com>
25885 David Sherwood <david.sherwood@arm.com>
25886
25887 * tree-vect-stmts.c (simd_clone_subparts): New function.
25888 (vectorizable_simd_clone_call): Use it instead of TYPE_VECTOR_SUBPARTS.
25889
25890 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25891 Alan Hayward <alan.hayward@arm.com>
25892 David Sherwood <david.sherwood@arm.com>
25893
25894 * tree-vect-stmts.c (vectorizable_call): Treat the number of
25895 vectors as polynomial. Use build_index_vector for
25896 IFN_GOMP_SIMD_LANE.
25897
25898 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25899 Alan Hayward <alan.hayward@arm.com>
25900 David Sherwood <david.sherwood@arm.com>
25901
25902 * tree-vect-stmts.c (get_load_store_type): Treat the number of
25903 units as polynomial. Reject VMAT_ELEMENTWISE and VMAT_STRIDED_SLP
25904 for variable-length vectors.
25905 (vectorizable_mask_load_store): Treat the number of units as
25906 polynomial, asserting that it is constant if the condition has
25907 already been enforced.
25908 (vectorizable_store, vectorizable_load): Likewise.
25909
25910 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25911 Alan Hayward <alan.hayward@arm.com>
25912 David Sherwood <david.sherwood@arm.com>
25913
25914 * tree-vect-loop.c (vectorizable_live_operation): Treat the number
25915 of units as polynomial. Punt if we can't tell at compile time
25916 which vector contains the final result.
25917
25918 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25919 Alan Hayward <alan.hayward@arm.com>
25920 David Sherwood <david.sherwood@arm.com>
25921
25922 * tree-vect-loop.c (vectorizable_induction): Treat the number
25923 of units as polynomial. Punt on SLP inductions. Use an integer
25924 VEC_SERIES_EXPR for variable-length integer reductions. Use a
25925 cast of such a series for variable-length floating-point
25926 reductions.
25927
25928 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25929 Alan Hayward <alan.hayward@arm.com>
25930 David Sherwood <david.sherwood@arm.com>
25931
25932 * tree.h (build_index_vector): Declare.
25933 * tree.c (build_index_vector): New function.
25934 * tree-vect-loop.c (get_initial_defs_for_reduction): Treat the number
25935 of units as polynomial, forcibly converting it to a constant if
25936 vectorizable_reduction has already enforced the condition.
25937 (vect_create_epilog_for_reduction): Likewise. Use build_index_vector
25938 to create a {1,2,3,...} vector.
25939 (vectorizable_reduction): Treat the number of units as polynomial.
25940 Choose vectype_in based on the largest scalar element size rather
25941 than the smallest number of units. Enforce the restrictions
25942 relied on above.
25943
25944 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25945 Alan Hayward <alan.hayward@arm.com>
25946 David Sherwood <david.sherwood@arm.com>
25947
25948 * tree-vect-data-refs.c (vector_alignment_reachable_p): Treat the
25949 number of units as polynomial.
25950
25951 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25952 Alan Hayward <alan.hayward@arm.com>
25953 David Sherwood <david.sherwood@arm.com>
25954
25955 * target.h (vector_sizes, auto_vector_sizes): New typedefs.
25956 * target.def (autovectorize_vector_sizes): Return the vector sizes
25957 by pointer, using vector_sizes rather than a bitmask.
25958 * targhooks.h (default_autovectorize_vector_sizes): Update accordingly.
25959 * targhooks.c (default_autovectorize_vector_sizes): Likewise.
25960 * config/aarch64/aarch64.c (aarch64_autovectorize_vector_sizes):
25961 Likewise.
25962 * config/arc/arc.c (arc_autovectorize_vector_sizes): Likewise.
25963 * config/arm/arm.c (arm_autovectorize_vector_sizes): Likewise.
25964 * config/i386/i386.c (ix86_autovectorize_vector_sizes): Likewise.
25965 * config/mips/mips.c (mips_autovectorize_vector_sizes): Likewise.
25966 * omp-general.c (omp_max_vf): Likewise.
25967 * omp-low.c (omp_clause_aligned_alignment): Likewise.
25968 * optabs-query.c (can_vec_mask_load_store_p): Likewise.
25969 * tree-vect-loop.c (vect_analyze_loop): Likewise.
25970 * tree-vect-slp.c (vect_slp_bb): Likewise.
25971 * doc/tm.texi: Regenerate.
25972 * tree-vectorizer.h (current_vector_size): Change from an unsigned int
25973 to a poly_uint64.
25974 * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Take
25975 the vector size as a poly_uint64 rather than an unsigned int.
25976 (current_vector_size): Change from an unsigned int to a poly_uint64.
25977 (get_vectype_for_scalar_type): Update accordingly.
25978 * tree.h (build_truth_vector_type): Take the size and number of
25979 units as a poly_uint64 rather than an unsigned int.
25980 (build_vector_type): Add a temporary overload that takes
25981 the number of units as a poly_uint64 rather than an unsigned int.
25982 * tree.c (make_vector_type): Likewise.
25983 (build_truth_vector_type): Take the number of units as a poly_uint64
25984 rather than an unsigned int.
25985
25986 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25987 Alan Hayward <alan.hayward@arm.com>
25988 David Sherwood <david.sherwood@arm.com>
25989
25990 * target.def (get_mask_mode): Take the number of units and length
25991 as poly_uint64s rather than unsigned ints.
25992 * targhooks.h (default_get_mask_mode): Update accordingly.
25993 * targhooks.c (default_get_mask_mode): Likewise.
25994 * config/i386/i386.c (ix86_get_mask_mode): Likewise.
25995 * doc/tm.texi: Regenerate.
25996
25997 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
25998 Alan Hayward <alan.hayward@arm.com>
25999 David Sherwood <david.sherwood@arm.com>
26000
26001 * omp-general.h (omp_max_vf): Return a poly_uint64 instead of an int.
26002 * omp-general.c (omp_max_vf): Likewise.
26003 * omp-expand.c (omp_adjust_chunk_size): Update call to omp_max_vf.
26004 (expand_omp_simd): Handle polynomial safelen.
26005 * omp-low.c (omplow_simd_context): Add a default constructor.
26006 (omplow_simd_context::max_vf): Change from int to poly_uint64.
26007 (lower_rec_simd_input_clauses): Update accordingly.
26008 (lower_rec_input_clauses): Likewise.
26009
26010 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
26011 Alan Hayward <alan.hayward@arm.com>
26012 David Sherwood <david.sherwood@arm.com>
26013
26014 * tree-vectorizer.h (vect_nunits_for_cost): New function.
26015 * tree-vect-loop.c (vect_model_reduction_cost): Use it.
26016 * tree-vect-slp.c (vect_analyze_slp_cost_1): Likewise.
26017 (vect_analyze_slp_cost): Likewise.
26018 * tree-vect-stmts.c (vect_model_store_cost): Likewise.
26019 (vect_model_load_cost): Likewise.
26020
26021 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
26022 Alan Hayward <alan.hayward@arm.com>
26023 David Sherwood <david.sherwood@arm.com>
26024
26025 * tree-vect-slp.c (vect_record_max_nunits, vect_build_slp_tree_1)
26026 (vect_build_slp_tree_2, vect_build_slp_tree): Change max_nunits
26027 from an unsigned int * to a poly_uint64_pod *.
26028 (calculate_unrolling_factor): New function.
26029 (vect_analyze_slp_instance): Use it. Track polynomial max_nunits.
26030
26031 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
26032 Alan Hayward <alan.hayward@arm.com>
26033 David Sherwood <david.sherwood@arm.com>
26034
26035 * tree-vectorizer.h (_slp_instance::unrolling_factor): Change
26036 from an unsigned int to a poly_uint64.
26037 (_loop_vec_info::slp_unrolling_factor): Likewise.
26038 (_loop_vec_info::vectorization_factor): Change from an int
26039 to a poly_uint64.
26040 (MAX_VECTORIZATION_FACTOR): Bump from 64 to INT_MAX.
26041 (vect_get_num_vectors): New function.
26042 (vect_update_max_nunits, vect_vf_for_cost): Likewise.
26043 (vect_get_num_copies): Use vect_get_num_vectors.
26044 (vect_analyze_data_ref_dependences): Change max_vf from an int *
26045 to an unsigned int *.
26046 (vect_analyze_data_refs): Change min_vf from an int * to a
26047 poly_uint64 *.
26048 (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
26049 than an unsigned HOST_WIDE_INT.
26050 * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr)
26051 (vect_analyze_data_ref_dependence): Change max_vf from an int *
26052 to an unsigned int *.
26053 (vect_analyze_data_ref_dependences): Likewise.
26054 (vect_compute_data_ref_alignment): Handle polynomial vf.
26055 (vect_enhance_data_refs_alignment): Likewise.
26056 (vect_prune_runtime_alias_test_list): Likewise.
26057 (vect_shift_permute_load_chain): Likewise.
26058 (vect_supportable_dr_alignment): Likewise.
26059 (dependence_distance_ge_vf): Take the vectorization factor as a
26060 poly_uint64 rather than an unsigned HOST_WIDE_INT.
26061 (vect_analyze_data_refs): Change min_vf from an int * to a
26062 poly_uint64 *.
26063 * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Take
26064 vfm1 as a poly_uint64 rather than an int. Make the same change
26065 for the returned bound_scalar.
26066 (vect_gen_vector_loop_niters): Handle polynomial vf.
26067 (vect_do_peeling): Likewise. Update call to
26068 vect_gen_scalar_loop_niters and handle polynomial bound_scalars.
26069 (vect_gen_vector_loop_niters_mult_vf): Assert that the vf must
26070 be constant.
26071 * tree-vect-loop.c (vect_determine_vectorization_factor)
26072 (vect_update_vf_for_slp, vect_analyze_loop_2): Handle polynomial vf.
26073 (vect_get_known_peeling_cost): Likewise.
26074 (vect_estimate_min_profitable_iters, vectorizable_reduction): Likewise.
26075 (vect_worthwhile_without_simd_p, vectorizable_induction): Likewise.
26076 (vect_transform_loop): Likewise. Use the lowest possible VF when
26077 updating the upper bounds of the loop.
26078 (vect_min_worthwhile_factor): Make static. Return an unsigned int
26079 rather than an int.
26080 * tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Cope with
26081 polynomial unroll factors.
26082 (vect_analyze_slp_cost_1, vect_analyze_slp_instance): Likewise.
26083 (vect_make_slp_decision): Likewise.
26084 (vect_supported_load_permutation_p): Likewise, and polynomial
26085 vf too.
26086 (vect_analyze_slp_cost): Handle polynomial vf.
26087 (vect_slp_analyze_node_operations): Likewise.
26088 (vect_slp_analyze_bb_1): Likewise.
26089 (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
26090 than an unsigned HOST_WIDE_INT.
26091 * tree-vect-stmts.c (vectorizable_simd_clone_call, vectorizable_store)
26092 (vectorizable_load): Handle polynomial vf.
26093 * tree-vectorizer.c (simduid_to_vf::vf): Change from an int to
26094 a poly_uint64.
26095 (adjust_simduid_builtins, shrink_simd_arrays): Update accordingly.
26096
26097 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
26098 Alan Hayward <alan.hayward@arm.com>
26099 David Sherwood <david.sherwood@arm.com>
26100
26101 * match.pd: Handle bit operations involving three constants
26102 and try to fold one pair.
26103
26104 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
26105
26106 * tree-vect-loop-manip.c: Include gimple-fold.h.
26107 (slpeel_make_loop_iterate_ntimes): Add step, final_iv and
26108 niters_maybe_zero parameters. Handle other cases besides a step of 1.
26109 (vect_gen_vector_loop_niters): Add a step_vector_ptr parameter.
26110 Add a path that uses a step of VF instead of 1, but disable it
26111 for now.
26112 (vect_do_peeling): Add step_vector, niters_vector_mult_vf_var
26113 and niters_no_overflow parameters. Update calls to
26114 slpeel_make_loop_iterate_ntimes and vect_gen_vector_loop_niters.
26115 Create a new SSA name if the latter choses to use a ste other
26116 than zero, and return it via niters_vector_mult_vf_var.
26117 * tree-vect-loop.c (vect_transform_loop): Update calls to
26118 vect_do_peeling, vect_gen_vector_loop_niters and
26119 slpeel_make_loop_iterate_ntimes.
26120 * tree-vectorizer.h (slpeel_make_loop_iterate_ntimes, vect_do_peeling)
26121 (vect_gen_vector_loop_niters): Update declarations after above changes.
26122
26123 2018-01-02 Michael Meissner <meissner@linux.vnet.ibm.com>
26124
26125 * config/rs6000/rs6000.md (floor<mode>2): Add support for IEEE
26126 128-bit round to integer instructions.
26127 (ceil<mode>2): Likewise.
26128 (btrunc<mode>2): Likewise.
26129 (round<mode>2): Likewise.
26130
26131 2018-01-02 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
26132
26133 * config/rs6000/rs6000-string.c (expand_block_move): Allow the use of
26134 unaligned VSX load/store on P8/P9.
26135 (expand_block_clear): Allow the use of unaligned VSX
26136 load/store on P8/P9.
26137
26138 2018-01-02 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
26139
26140 * config/rs6000/rs6000-p8swap.c (swap_feeds_both_load_and_store):
26141 New function.
26142 (rs6000_analyze_swaps): Mark a web unoptimizable if it contains a
26143 swap associated with both a load and a store.
26144
26145 2018-01-02 Andrew Waterman <andrew@sifive.com>
26146
26147 * config/riscv/linux.h (ICACHE_FLUSH_FUNC): New.
26148 * config/riscv/riscv.md (clear_cache): Use it.
26149
26150 2018-01-02 Artyom Skrobov <tyomitch@gmail.com>
26151
26152 * web.c: Remove out-of-date comment.
26153
26154 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
26155
26156 * expr.c (fixup_args_size_notes): Check that any existing
26157 REG_ARGS_SIZE notes are correct, and don't try to re-add them.
26158 (emit_single_push_insn_1): Move stack_pointer_delta adjustment to...
26159 (emit_single_push_insn): ...here.
26160
26161 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
26162
26163 * rtl.h (CONST_VECTOR_ELT): Redefine to const_vector_elt.
26164 (const_vector_encoded_nelts): New function.
26165 (CONST_VECTOR_NUNITS): Redefine to use GET_MODE_NUNITS.
26166 (const_vector_int_elt, const_vector_elt): Declare.
26167 * emit-rtl.c (const_vector_int_elt_1): New function.
26168 (const_vector_elt): Likewise.
26169 * simplify-rtx.c (simplify_immed_subreg): Avoid taking the address
26170 of CONST_VECTOR_ELT.
26171
26172 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
26173
26174 * expr.c: Include rtx-vector-builder.h.
26175 (const_vector_mask_from_tree): Use rtx_vector_builder and operate
26176 directly on the tree encoding.
26177 (const_vector_from_tree): Likewise.
26178 * optabs.c: Include rtx-vector-builder.h.
26179 (expand_vec_perm_var): Use rtx_vector_builder and create a repeating
26180 sequence of "u" values.
26181 * vec-perm-indices.c: Include rtx-vector-builder.h.
26182 (vec_perm_indices_to_rtx): Use rtx_vector_builder and operate
26183 directly on the vec_perm_indices encoding.
26184
26185 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
26186
26187 * doc/rtl.texi (const_vector): Describe new encoding scheme.
26188 * Makefile.in (OBJS): Add rtx-vector-builder.o.
26189 * rtx-vector-builder.h: New file.
26190 * rtx-vector-builder.c: Likewise.
26191 * rtl.h (rtx_def::u2): Add a const_vector field.
26192 (CONST_VECTOR_NPATTERNS): New macro.
26193 (CONST_VECTOR_NELTS_PER_PATTERN): Likewise.
26194 (CONST_VECTOR_DUPLICATE_P): Likewise.
26195 (CONST_VECTOR_STEPPED_P): Likewise.
26196 (CONST_VECTOR_ENCODED_ELT): Likewise.
26197 (const_vec_duplicate_p): Check for a duplicated vector encoding.
26198 (unwrap_const_vec_duplicate): Likewise.
26199 (const_vec_series_p): Check for a non-duplicated vector encoding.
26200 Say that the function only returns true for integer vectors.
26201 * emit-rtl.c: Include rtx-vector-builder.h.
26202 (gen_const_vec_duplicate_1): Delete.
26203 (gen_const_vector): Call gen_const_vec_duplicate instead of
26204 gen_const_vec_duplicate_1.
26205 (const_vec_series_p_1): Operate directly on the CONST_VECTOR encoding.
26206 (gen_const_vec_duplicate): Use rtx_vector_builder.
26207 (gen_const_vec_series): Likewise.
26208 (gen_rtx_CONST_VECTOR): Likewise.
26209 * config/powerpcspe/powerpcspe.c: Include rtx-vector-builder.h.
26210 (swap_const_vector_halves): Take an rtx pointer rather than rtx.
26211 Build a new vector rather than modifying a CONST_VECTOR in-place.
26212 (handle_special_swappables): Update call accordingly.
26213 * config/rs6000/rs6000-p8swap.c: Include rtx-vector-builder.h.
26214 (swap_const_vector_halves): Take an rtx pointer rather than rtx.
26215 Build a new vector rather than modifying a CONST_VECTOR in-place.
26216 (handle_special_swappables): Update call accordingly.
26217
26218 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
26219
26220 * simplify-rtx.c (simplify_const_binary_operation): Use
26221 CONST_VECTOR_ELT instead of XVECEXP.
26222
26223 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
26224
26225 * tree-cfg.c (verify_gimple_assign_ternary): Allow the size of
26226 the selector elements to be different from the data elements
26227 if the selector is a VECTOR_CST.
26228 * tree-vect-stmts.c (vect_gen_perm_mask_any): Use a vector of
26229 ssizetype for the selector.
26230
26231 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
26232
26233 * optabs.c (shift_amt_for_vec_perm_mask): Try using series_p
26234 before testing each element individually.
26235 * tree-vect-generic.c (lower_vec_perm): Likewise.
26236
26237 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
26238
26239 * selftest.h (selftest::vec_perm_indices_c_tests): Declare.
26240 * selftest-run-tests.c (selftest::run_tests): Call it.
26241 * vector-builder.h (vector_builder::operator ==): New function.
26242 (vector_builder::operator !=): Likewise.
26243 * vec-perm-indices.h (vec_perm_indices::series_p): Declare.
26244 (vec_perm_indices::all_from_input_p): New function.
26245 * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
26246 (test_vec_perm_12, selftest::vec_perm_indices_c_tests): Likewise.
26247 * fold-const.c (fold_ternary_loc): Use tree_to_vec_perm_builder
26248 instead of reading the VECTOR_CST directly. Detect whether both
26249 vector inputs are the same before constructing the vec_perm_indices,
26250 and update the number of inputs argument accordingly. Use the
26251 utility functions added above. Only construct sel2 if we need to.
26252
26253 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
26254
26255 * optabs.c (expand_vec_perm_var): Use an explicit encoding for
26256 the broadcast of the low byte.
26257 (expand_mult_highpart): Use an explicit encoding for the permutes.
26258 * optabs-query.c (can_mult_highpart_p): Likewise.
26259 * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Likewise.
26260 * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
26261 (vectorizable_bswap): Likewise.
26262 * tree-vect-data-refs.c (vect_grouped_store_supported): Use an
26263 explicit encoding for the power-of-2 permutes.
26264 (vect_permute_store_chain): Likewise.
26265 (vect_grouped_load_supported): Likewise.
26266 (vect_permute_load_chain): Likewise.
26267
26268 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
26269
26270 * vec-perm-indices.h (vec_perm_indices_to_tree): Declare.
26271 * vec-perm-indices.c (vec_perm_indices_to_tree): New function.
26272 * tree-ssa-forwprop.c (simplify_vector_constructor): Use it.
26273 * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
26274 * tree-vect-stmts.c (vectorizable_bswap): Likewise.
26275 (vect_gen_perm_mask_any): Likewise.
26276
26277 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
26278
26279 * int-vector-builder.h: New file.
26280 * vec-perm-indices.h: Include int-vector-builder.h.
26281 (vec_perm_indices): Redefine as an int_vector_builder.
26282 (auto_vec_perm_indices): Delete.
26283 (vec_perm_builder): Redefine as a stand-alone class.
26284 (vec_perm_indices::vec_perm_indices): New function.
26285 (vec_perm_indices::clamp): Likewise.
26286 * vec-perm-indices.c: Include fold-const.h and tree-vector-builder.h.
26287 (vec_perm_indices::new_vector): New function.
26288 (vec_perm_indices::new_expanded_vector): Update for new
26289 vec_perm_indices class.
26290 (vec_perm_indices::rotate_inputs): New function.
26291 (vec_perm_indices::all_in_range_p): Operate directly on the
26292 encoded form, without computing elided elements.
26293 (tree_to_vec_perm_builder): Operate directly on the VECTOR_CST
26294 encoding. Update for new vec_perm_indices class.
26295 * optabs.c (expand_vec_perm_const): Create a vec_perm_indices for
26296 the given vec_perm_builder.
26297 (expand_vec_perm_var): Update vec_perm_builder constructor.
26298 (expand_mult_highpart): Use vec_perm_builder instead of
26299 auto_vec_perm_indices.
26300 * optabs-query.c (can_mult_highpart_p): Use vec_perm_builder and
26301 vec_perm_indices instead of auto_vec_perm_indices. Use a single
26302 or double series encoding as appropriate.
26303 * fold-const.c (fold_ternary_loc): Use vec_perm_builder and
26304 vec_perm_indices instead of auto_vec_perm_indices.
26305 * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
26306 * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
26307 (vect_permute_store_chain): Likewise.
26308 (vect_grouped_load_supported): Likewise.
26309 (vect_permute_load_chain): Likewise.
26310 (vect_shift_permute_load_chain): Likewise.
26311 * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
26312 (vect_transform_slp_perm_load): Likewise.
26313 (vect_schedule_slp_instance): Likewise.
26314 * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
26315 (vectorizable_mask_load_store): Likewise.
26316 (vectorizable_bswap): Likewise.
26317 (vectorizable_store): Likewise.
26318 (vectorizable_load): Likewise.
26319 * tree-vect-generic.c (lower_vec_perm): Use vec_perm_builder and
26320 vec_perm_indices instead of auto_vec_perm_indices. Use
26321 tree_to_vec_perm_builder to read the vector from a tree.
26322 * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Take a
26323 vec_perm_builder instead of a vec_perm_indices.
26324 (have_whole_vector_shift): Use vec_perm_builder and
26325 vec_perm_indices instead of auto_vec_perm_indices. Leave the
26326 truncation to calc_vec_perm_mask_for_shift.
26327 (vect_create_epilog_for_reduction): Likewise.
26328 * config/aarch64/aarch64.c (expand_vec_perm_d::perm): Change
26329 from auto_vec_perm_indices to vec_perm_indices.
26330 (aarch64_expand_vec_perm_const_1): Use rotate_inputs on d.perm
26331 instead of changing individual elements.
26332 (aarch64_vectorize_vec_perm_const): Use new_vector to install
26333 the vector in d.perm.
26334 * config/arm/arm.c (expand_vec_perm_d::perm): Change
26335 from auto_vec_perm_indices to vec_perm_indices.
26336 (arm_expand_vec_perm_const_1): Use rotate_inputs on d.perm
26337 instead of changing individual elements.
26338 (arm_vectorize_vec_perm_const): Use new_vector to install
26339 the vector in d.perm.
26340 * config/powerpcspe/powerpcspe.c (rs6000_expand_extract_even):
26341 Update vec_perm_builder constructor.
26342 (rs6000_expand_interleave): Likewise.
26343 * config/rs6000/rs6000.c (rs6000_expand_extract_even): Likewise.
26344 (rs6000_expand_interleave): Likewise.
26345
26346 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
26347
26348 * optabs-query.c (can_vec_perm_var_p): Check whether lowering
26349 to qimode could truncate the indices.
26350 * optabs.c (expand_vec_perm_var): Likewise.
26351
26352 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
26353
26354 * Makefile.in (OBJS): Add vec-perm-indices.o.
26355 * vec-perm-indices.h: New file.
26356 * vec-perm-indices.c: Likewise.
26357 * target.h (vec_perm_indices): Replace with a forward class
26358 declaration.
26359 (auto_vec_perm_indices): Move to vec-perm-indices.h.
26360 * optabs.h: Include vec-perm-indices.h.
26361 (expand_vec_perm): Delete.
26362 (selector_fits_mode_p, expand_vec_perm_var): Declare.
26363 (expand_vec_perm_const): Declare.
26364 * target.def (vec_perm_const_ok): Replace with...
26365 (vec_perm_const): ...this new hook.
26366 * doc/tm.texi.in (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Replace with...
26367 (TARGET_VECTORIZE_VEC_PERM_CONST): ...this new hook.
26368 * doc/tm.texi: Regenerate.
26369 * optabs.def (vec_perm_const): Delete.
26370 * doc/md.texi (vec_perm_const): Likewise.
26371 (vec_perm): Refer to TARGET_VECTORIZE_VEC_PERM_CONST.
26372 * expr.c (expand_expr_real_2): Use expand_vec_perm_const rather than
26373 expand_vec_perm for constant permutation vectors. Assert that
26374 the mode of variable permutation vectors is the integer equivalent
26375 of the mode that is being permuted.
26376 * optabs-query.h (selector_fits_mode_p): Declare.
26377 * optabs-query.c: Include vec-perm-indices.h.
26378 (selector_fits_mode_p): New function.
26379 (can_vec_perm_const_p): Check whether targetm.vectorize.vec_perm_const
26380 is defined, instead of checking whether the vec_perm_const_optab
26381 exists. Use targetm.vectorize.vec_perm_const instead of
26382 targetm.vectorize.vec_perm_const_ok. Check whether the indices
26383 fit in the vector mode before using a variable permute.
26384 * optabs.c (shift_amt_for_vec_perm_mask): Take a mode and a
26385 vec_perm_indices instead of an rtx.
26386 (expand_vec_perm): Replace with...
26387 (expand_vec_perm_const): ...this new function. Take the selector
26388 as a vec_perm_indices rather than an rtx. Also take the mode of
26389 the selector. Update call to shift_amt_for_vec_perm_mask.
26390 Use targetm.vectorize.vec_perm_const instead of vec_perm_const_optab.
26391 Use vec_perm_indices::new_expanded_vector to expand the original
26392 selector into bytes. Check whether the indices fit in the vector
26393 mode before using a variable permute.
26394 (expand_vec_perm_var): Make global.
26395 (expand_mult_highpart): Use expand_vec_perm_const.
26396 * fold-const.c: Includes vec-perm-indices.h.
26397 * tree-ssa-forwprop.c: Likewise.
26398 * tree-vect-data-refs.c: Likewise.
26399 * tree-vect-generic.c: Likewise.
26400 * tree-vect-loop.c: Likewise.
26401 * tree-vect-slp.c: Likewise.
26402 * tree-vect-stmts.c: Likewise.
26403 * config/aarch64/aarch64-protos.h (aarch64_expand_vec_perm_const):
26404 Delete.
26405 * config/aarch64/aarch64-simd.md (vec_perm_const<mode>): Delete.
26406 * config/aarch64/aarch64.c (aarch64_expand_vec_perm_const)
26407 (aarch64_vectorize_vec_perm_const_ok): Fuse into...
26408 (aarch64_vectorize_vec_perm_const): ...this new function.
26409 (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
26410 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
26411 * config/arm/arm-protos.h (arm_expand_vec_perm_const): Delete.
26412 * config/arm/vec-common.md (vec_perm_const<mode>): Delete.
26413 * config/arm/arm.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
26414 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
26415 (arm_expand_vec_perm_const, arm_vectorize_vec_perm_const_ok): Merge
26416 into...
26417 (arm_vectorize_vec_perm_const): ...this new function. Explicitly
26418 check for NEON modes.
26419 * config/i386/i386-protos.h (ix86_expand_vec_perm_const): Delete.
26420 * config/i386/sse.md (VEC_PERM_CONST, vec_perm_const<mode>): Delete.
26421 * config/i386/i386.c (ix86_expand_vec_perm_const_1): Update comment.
26422 (ix86_expand_vec_perm_const, ix86_vectorize_vec_perm_const_ok): Merge
26423 into...
26424 (ix86_vectorize_vec_perm_const): ...this new function. Incorporate
26425 the old VEC_PERM_CONST conditions.
26426 * config/ia64/ia64-protos.h (ia64_expand_vec_perm_const): Delete.
26427 * config/ia64/vect.md (vec_perm_const<mode>): Delete.
26428 * config/ia64/ia64.c (ia64_expand_vec_perm_const)
26429 (ia64_vectorize_vec_perm_const_ok): Merge into...
26430 (ia64_vectorize_vec_perm_const): ...this new function.
26431 * config/mips/loongson.md (vec_perm_const<mode>): Delete.
26432 * config/mips/mips-msa.md (vec_perm_const<mode>): Delete.
26433 * config/mips/mips-ps-3d.md (vec_perm_constv2sf): Delete.
26434 * config/mips/mips-protos.h (mips_expand_vec_perm_const): Delete.
26435 * config/mips/mips.c (mips_expand_vec_perm_const)
26436 (mips_vectorize_vec_perm_const_ok): Merge into...
26437 (mips_vectorize_vec_perm_const): ...this new function.
26438 * config/powerpcspe/altivec.md (vec_perm_constv16qi): Delete.
26439 * config/powerpcspe/paired.md (vec_perm_constv2sf): Delete.
26440 * config/powerpcspe/spe.md (vec_perm_constv2si): Delete.
26441 * config/powerpcspe/vsx.md (vec_perm_const<mode>): Delete.
26442 * config/powerpcspe/powerpcspe-protos.h (altivec_expand_vec_perm_const)
26443 (rs6000_expand_vec_perm_const): Delete.
26444 * config/powerpcspe/powerpcspe.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK):
26445 Delete.
26446 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
26447 (altivec_expand_vec_perm_const_le): Take each operand individually.
26448 Operate on constant selectors rather than rtxes.
26449 (altivec_expand_vec_perm_const): Likewise. Update call to
26450 altivec_expand_vec_perm_const_le.
26451 (rs6000_expand_vec_perm_const): Delete.
26452 (rs6000_vectorize_vec_perm_const_ok): Delete.
26453 (rs6000_vectorize_vec_perm_const): New function.
26454 (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
26455 an element count and rtx array.
26456 (rs6000_expand_extract_even): Update call accordingly.
26457 (rs6000_expand_interleave): Likewise.
26458 * config/rs6000/altivec.md (vec_perm_constv16qi): Delete.
26459 * config/rs6000/paired.md (vec_perm_constv2sf): Delete.
26460 * config/rs6000/vsx.md (vec_perm_const<mode>): Delete.
26461 * config/rs6000/rs6000-protos.h (altivec_expand_vec_perm_const)
26462 (rs6000_expand_vec_perm_const): Delete.
26463 * config/rs6000/rs6000.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
26464 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
26465 (altivec_expand_vec_perm_const_le): Take each operand individually.
26466 Operate on constant selectors rather than rtxes.
26467 (altivec_expand_vec_perm_const): Likewise. Update call to
26468 altivec_expand_vec_perm_const_le.
26469 (rs6000_expand_vec_perm_const): Delete.
26470 (rs6000_vectorize_vec_perm_const_ok): Delete.
26471 (rs6000_vectorize_vec_perm_const): New function. Remove stray
26472 reference to the SPE evmerge intructions.
26473 (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
26474 an element count and rtx array.
26475 (rs6000_expand_extract_even): Update call accordingly.
26476 (rs6000_expand_interleave): Likewise.
26477 * config/sparc/sparc.md (vec_perm_constv8qi): Delete in favor of...
26478 * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): ...this
26479 new function.
26480 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
26481
26482 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
26483
26484 * optabs.c (expand_vec_perm_1): Assert that SEL has an integer
26485 vector mode and that that mode matches the mode of the data
26486 being permuted.
26487 (expand_vec_perm): Split handling of non-CONST_VECTOR selectors
26488 out into expand_vec_perm_var. Do all CONST_VECTOR handling here,
26489 directly using expand_vec_perm_1 when forcing selectors into
26490 registers.
26491 (expand_vec_perm_var): New function, split out from expand_vec_perm.
26492
26493 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
26494
26495 * optabs-query.h (can_vec_perm_p): Delete.
26496 (can_vec_perm_var_p, can_vec_perm_const_p): Declare.
26497 * optabs-query.c (can_vec_perm_p): Split into...
26498 (can_vec_perm_var_p, can_vec_perm_const_p): ...these two functions.
26499 (can_mult_highpart_p): Use can_vec_perm_const_p to test whether a
26500 particular selector is valid.
26501 * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
26502 * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
26503 (vect_grouped_load_supported): Likewise.
26504 (vect_shift_permute_load_chain): Likewise.
26505 * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
26506 (vect_transform_slp_perm_load): Likewise.
26507 * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
26508 (vectorizable_bswap): Likewise.
26509 (vect_gen_perm_mask_checked): Likewise.
26510 * fold-const.c (fold_ternary_loc): Likewise. Don't take
26511 implementations of variable permutation vectors into account
26512 when deciding which selector to use.
26513 * tree-vect-loop.c (have_whole_vector_shift): Don't check whether
26514 vec_perm_const_optab is supported; instead use can_vec_perm_const_p
26515 with a false third argument.
26516 * tree-vect-generic.c (lower_vec_perm): Use can_vec_perm_const_p
26517 to test whether the constant selector is valid and can_vec_perm_var_p
26518 to test whether a variable selector is valid.
26519
26520 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
26521
26522 * optabs-query.h (can_vec_perm_p): Take a const vec_perm_indices *.
26523 * optabs-query.c (can_vec_perm_p): Likewise.
26524 * fold-const.c (fold_vec_perm): Take a const vec_perm_indices &
26525 instead of vec_perm_indices.
26526 * tree-vectorizer.h (vect_gen_perm_mask_any): Likewise,
26527 (vect_gen_perm_mask_checked): Likewise,
26528 * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise,
26529 (vect_gen_perm_mask_checked): Likewise,
26530
26531 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
26532
26533 * optabs-query.h (qimode_for_vec_perm): Declare.
26534 * optabs-query.c (can_vec_perm_p): Split out qimode search to...
26535 (qimode_for_vec_perm): ...this new function.
26536 * optabs.c (expand_vec_perm): Use qimode_for_vec_perm.
26537
26538 2018-01-02 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
26539
26540 * rtlanal.c (canonicalize_condition): Return 0 if final rtx
26541 does not have a conditional at the top.
26542
26543 2018-01-02 Richard Biener <rguenther@suse.de>
26544
26545 * ipa-inline.c (big_speedup_p): Fix expression.
26546
26547 2018-01-02 Jan Hubicka <hubicka@ucw.cz>
26548
26549 PR target/81616
26550 * config/i386/x86-tune-costs.h: Increase cost of integer load costs
26551 for generic 4->6.
26552
26553 2018-01-02 Jan Hubicka <hubicka@ucw.cz>
26554
26555 PR target/81616
26556 Generic tuning.
26557 * x86-tune-costs.h (generic_cost): Reduce cost of FDIV 20->17,
26558 cost of sqrt 20->14, DIVSS 18->13, DIVSD 32->17, SQRtSS 30->14
26559 and SQRTsD 58->18, cond_not_taken_branch_cost. 2->1. Increase
26560 cond_taken_branch_cost 3->4.
26561
26562 2018-01-01 Jakub Jelinek <jakub@redhat.com>
26563
26564 PR tree-optimization/83581
26565 * tree-loop-distribution.c (pass_loop_distribution::execute): Return
26566 TODO_cleanup_cfg if any changes have been made.
26567
26568 PR middle-end/83608
26569 * expr.c (store_expr_with_bounds): Use simplify_gen_subreg instead of
26570 convert_modes if target mode has the right side, but different mode
26571 class.
26572
26573 PR middle-end/83609
26574 * expr.c (expand_assignment): Fix up a typo in simplify_gen_subreg
26575 last argument when extracting from CONCAT. If either from_real or
26576 from_imag is NULL, use expansion through memory. If result is not
26577 a CONCAT and simplify_gen_subreg fails, try to simplify_gen_subreg
26578 the parts directly to inner mode, if even that fails, use expansion
26579 through memory.
26580
26581 PR middle-end/83623
26582 * expmed.c (expand_shift_1): For 2-byte rotates by BITS_PER_UNIT,
26583 check for bswap in mode rather than HImode and use that in expand_unop
26584 too.
26585 \f
26586 Copyright (C) 2018 Free Software Foundation, Inc.
26587
26588 Copying and distribution of this file, with or without modification,
26589 are permitted in any medium without royalty provided the copyright
26590 notice and this notice are preserved.