1 2018-12-31 Max Filippov <jcmvbkbc@gmail.com>
4 * config/xtensa/xtensa.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
5 Define to speculation_safe_value_not_needed.
7 2018-12-31 Martin Liska <mliska@suse.cz>
9 * predict.c (set_even_probabilities): Include also
10 unlikely_count in calculation.
11 (combine_predictions_for_bb): Consider also HOT and
12 COLD labels predictions.
13 * predict.def (PRED_HOT_LABEL): Move it just after
14 __builtin_expect_with_probability predictor.
15 (PRED_COLD_LABEL): Likewise.
17 2018-12-30 Jan Hubicka <hubicka@ucw.cz>
19 * x86-tune.def: Enable inter_unit_moves_to_vec for generic.
21 2018-12-30 Martin Sebor <msebor@redhat.com>
22 Jeff Law <law@redhat.com>
24 * gimple-fold.c (get_range_strlen): Minor logic cleanup. Add comments
27 * gimple-fold.c (strlen_range_kind): New enum.
28 (get_range_strlen): Update signature to use strlen_range_kind
29 instead of type+fuzzy.
30 (get_range_strlen_tree): Update signature to use
31 strlen_range_kind instead of type+fuzzy. Pass rkind down to
32 get_range_strlen. Check the rkind enum value instead of
34 (get_range_strlen): Similarly.
35 (get_maxval_strlen): Update signature to make NONSTR argument have
36 a default value and make static. Add asserts to ensure sanity of
37 arguments. Update calls to get_range_strlen.
38 (gimple_fold_builtin_strcpy): Update calls to get_maxval_strlen.
39 (gimple_fold_builtin_strcat, gimple_fold_builtin_fputs): Similarly.
40 (gimple_fold_builtin_memory_chk): Similarly.
41 (gimple_fold_builtin_stxcpy_chk): Similarly.
42 (gimple_fold_builtin_snprintf_chk): Similarly.
43 (gimple_fold_builtin_sprintf, gimple_fold_builtin_snprintf): Similarly.
44 * gimple-fold.h (get_maxval_strlen): Delete prototype.
46 2018-12-29 Jozef Lawrynowicz <jozef.l@mittosystems.com>
48 * config/msp430/msp430.c (msp430_attr): Warn when the critical and
49 interrupt function attributes are used together.
50 * gcc/doc/extend.texi: Update documentation on the critical attribute.
52 2018-12-29 John David Anglin <danglin@gcc.gnu.org>
54 * config.gcc (hppa*64*-*-linux*): Add pa/t-pa to tmake_file. Define
56 (hppa*-*-openbsd*): Likewise.
57 (hppa[12]*-*-hpux10*): Likewise.
58 (hppa*64*-*-hpux11*): Likewise.
59 (hppa[12]*-*-hpux11*): Likewise.
61 2018-12-29 Jakub Jelinek <jakub@redhat.com>
64 * omp-low.c (lower_omp_task_reductions): Set DECL_CONTEXT on field
65 and ifield. Update TYPE_ALIGN from alignment of field, ifield or
68 2018-12-28 Uros Bizjak <ubizjak@gmail.com>
70 * config/i386/i386.h (ADDITIONAL_REGISTER_NAMES): Add
71 sil, dil, bpl and spl aliases.
73 2018-12-28 Martin Sebor <msebor@redhat.com>
75 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Avoid
78 2018-12-28 Thomas Schwinge <thomas@codesourcery.com>
80 * omp-expand.c (expand_omp_target): Restructure OpenACC vs. OpenMP
81 code paths. Update for libgomp OpenACC entry points change.
83 2018-12-28 Thomas Schwinge <thomas@codesourcery.com>
84 Julian Brown <julian@codesourcery.com>
86 * gimplify.c (gimplify_scan_omp_clauses): Fix known_eq typo/bug.
88 2018-12-27 Jan Hubicka <hubicka@ucw.cz>
90 * ipa-devirt.c (polymorphic_call_target_d): Add n_odr_types.
91 (polymorphic_call_target_hasher::hash): Hash it.
92 (polymorphic_call_target_hasher::equal): Compare it.
93 (possible_polymorphic_call_targets): Set it.
94 * tree.c (free_lang_data): Rebuild type inheritance graph even on
97 2018-12-27 Martin Liska <mliska@suse.cz>
100 * gcov.c(source_info::get_functions_at_location):
101 Use newly added line_to_function_map.
102 (source_info::add_function): New.
103 (output_json_intermediate_file): Use a pointer return
104 type for get_functions_at_location.
105 (process_all_functions): Use add_function instead
106 of direct push to a s->functions container.
107 (release_structures): Release ident_to_fn.
108 (read_graph_file): Register function into ident_to_fn.
109 (read_count_file): Use the map.
110 (output_lines): Handle pointer return type of
111 get_functions_at_location.
113 2018-12-27 Martin Liska <mliska@suse.cz>
115 * builtins.c (expand_movstr): Compare with RETURN_BEGIN.
116 * expr.c (move_by_pieces): Likewise.
117 (store_by_pieces): Likewise.
118 (store_expr): Fix GNU coding style.
120 2018-12-26 Andrew Pinski <apinski@marvell.com>
122 * config/aarch64/aarch64-cores.def (octeontx): New.
123 (octeontx81): Likewise.
124 (octeontx83): Likewise.
125 * config/aarch64/aarch64-tune.md: Regenerate.
126 * doc/invoke.texi (AArch64 Options) [mtune]: Add octeontx, octeontx81
129 2018-12-24 Martin Sebor <msebor@redhat.com>
131 * gimple-fold.c (get_range_strlen_tree): Factored out of
132 get_range_strlen. Minor comment updates/additions. Assert
133 argument is not a simple SSA_NAME.
134 (get_range_strlen): Call get_range_strlen_tree as appropriate.
135 Minor comment updates/additions.
137 2018-12-24 Jan Hubicka <hubicka@ucw.cz>
139 * ipa-devirt.c (dump_targets): Cap number of targets printed.
140 (dump_possible_polymorphic_call_targets): Add verbose parameter.
141 (ipa_devirt): Use it.
142 * ipa-utils.h (dump_possible_polymorphic_call_targets): Add verbose
145 2018-12-24 Jan Hubicka <hubicka@ucw.cz>
148 * tree.c (fld_simplified_type): Temporarily disable array
151 2018-12-24 Jan Hubicka <hubicka@ucw.cz>
153 * lto-symtab.c (lto_symtab_merge_decls_2): Do not report ODR violations
154 for method whose basetype was already reported.
155 * ipa-devirt.c (odr_type_violation_reported_p): New.
156 * ipa-utils.h (odr_type_violation_reported_p): Declare.
158 2018-12-24 Iain Sandoe <iain@sandoe.co.uk>
160 * configure.ac (dwarf2_debug_line): Check for the debug_line
161 section using otool when there’s no objdump available.
162 * configure: Regenerate.
164 2018-12-24 Jan Hubicka <hubicka@ucw.cz>
166 * ipa-utils.c (ipa_merge_profiles): Fix updating of fnsummary;
167 also handle rescaling of mismatched profiles.
168 * ipa-fnsummary.c (analyze_function): Handle speculative edges.
170 2018-12-23 Martin Sebor <msebor@redhat.com>
171 Jeff Law <law@redhat.com>
173 * builtins.h (c_strlen_data): Add new fields and comments.
174 * builtins.c (unterminated_array): Change field reference from
175 "len" to "minlen" in c_strlen_data instance.
176 * gimple-fold.c (get_range_strlen): Likewise.
177 * gimple-ssa-sprintf.c (get_string_length): Likewise.
179 * builtins.c (unterminated_array): Rename "data" to "lendata". Fix
181 (expand_builtin_strnlen, expand_builtin_stpcpy_1): Likewise.
182 (fold_builtin_strlen): Likewise.
183 * gimple-fold.c (get_range_strlen): Likewise. Also rename a couple
184 instances of "type" to "optype" and "arg" to "fld".
186 * builtins.c (unterminated_array): Use empty brace initialization
188 (c_strlen, expand_builtin_strnlen): Likewise.
189 (expand_builtin_stpcpy_1, fold_builtin_strlen): Likewise.
190 * gimple-fold.c (get_range_strlen): Likewise.
191 (gimple_fold_builtin_stpcpy): Likewise.
192 * gimple-ssa-sprintf.c (get_string_length): Likewise.
194 2018-12-23 Alan Modra <amodra@gmail.com>
197 * config/rs6000/rs6000.h (ASM_CPU_SPEC): Correct %e message. Handle
198 -mcpu=rs64, not -mcpu=rs64a. Handle -mcpu=powerpc64 and -mcpu=titan.
199 * config/rs6000/driver-rs6000.c (asm_names): Similarly.
200 * config/rs6000/aix71.h (ASM_CPU_SPEC): Delete %e message. Handle
201 -mcpu=rs64, not -mcpu=rs64a.
202 * config/rs6000/aix72.h (ASM_CPU_SPEC): Likewise.
204 2018-12-23 Iain Sandoe <iain@sandoe.co.uk>
206 * lto-wrapper.c (tool_cleanup): Don’t report ficticious temp files.
207 (debug_objcopy): Improve temp filenames. Append the early
208 debug objects to the outfiles. Remove the phase prelinking the
209 early debug. Emit the early debug filenames for ld.
211 2018-12-23 Iain Sandoe <iain@sandoe.co.uk>
213 * config/i386/darwin.h (TARGET_ASM_OUTPUT_IDENT): New.
215 2018-12-23 Iain Sandoe <iain@sandoe.co.uk>
217 * collect2.c (maybe_run_lto_and_relink): Don’t say we have a temp file
218 unless we actually did some LTO.
219 (has_lto_section, is_lto_object_file): New.
220 (maybe_lto_object_file): Remove.
221 (scan_prog_file): Use is_lto_object_file() instead of scanning the
224 2018-12-23 Iain Sandoe <iain@sandoe.co.uk>
226 * collect2.c (main): Parse the output file early so we can make nicer
227 temp names. Respond to “-save-temps” in the GCC OPTIONS.
228 (maybe_unlink): Don’t print “[Leaving…”] for files we never created
231 2018-12-23 Iain Sandoe <iain@sandoe.co.uk>
233 * collect2.c (main): Combine flags from both the command line and
234 COLLECT_GCC_OPTIONS to determine the set in force
236 2018-12-21 Jan Hubicka <hubicka@ucw.cz>
238 * ipa-utils.c (ipa_merge_profiles): Recompute summaries.
240 2018-12-21 Jakub Jelinek <jakub@redhat.com>
244 * omp-expand.c (extract_omp_for_update_vars): Regimplify the condition
246 (expand_omp_for_generic): Don't clobber t temporary for ordered loops.
248 2018-12-15 Jan Hubicka <hubicka@ucw.cz>
251 * ipa-polymorphic-call.c
252 (ipa_polymorphic_call_context::ipa_polymorphic_call_context): Handle
253 arguments of thunks correctly.
254 (ipa_polymorphic_call_context::get_dynamic_context): Be ready for
255 NULL instance pinter.
256 * lto-cgraph.c (lto_output_node): Always stream thunk info.
258 2018-12-21 Andreas Krebbel <krebbel@linux.ibm.com>
260 * config/s390/vector.md ("floatv2div2df2", "floatunsv2div2df2")
261 ("fix_truncv2dfv2di2", "fixuns_truncv2dfv2di2"): New pattern
264 2018-12-21 Eric Botcazou <ebotcazou@adacore.com>
266 PR rtl-optimization/87727
267 * combine.c (cant_combine_insn_p): On a LEAF_REGISTERS target, combine
268 again moves from leaf hard registers.
270 * final.c (final_scan_insn_1) <NOTE_INSN_INLINE_ENTRY>: Minor tweak.
272 2018-12-21 Jakub Jelinek <jakub@redhat.com>
275 * config/i386/sse.md (*avx512pf_gatherpf<mode>sf_mask,
276 *avx512pf_gatherpf<mode>df_mask, *avx512pf_scatterpf<mode>sf_mask,
277 *avx512pf_scatterpf<mode>df_mask): Use %X5 instead of %5 for
279 (gatherq_mode): Remove mode iterator.
280 (*avx512f_gathersi<mode>, *avx512f_gathersi<mode>_2): Use X instead
282 (*avx512f_gatherdi<mode>): Use X instead of <gatherq_mode>.
283 (*avx512f_gatherdi<mode>_2, *avx512f_scattersi<mode>,
284 *avx512f_scatterdi<mode>): Use %X5 for -masm=intel.
286 PR rtl-optimization/88563
287 * expr.c (expand_expr_real_2) <case WIDEN_MULT_EXPR>: Swap innermode
288 and mode arguments to convert_modes. Likewise swap mode and word_mode
289 arguments. Handle both arguments with VOIDmode before convert_modes
290 of one of them. Formatting fixes.
292 2018-12-21 Uros Bizjak <ubizjak@gmail.com>
295 * internal-fn.def (COSH): New.
298 * optabs.def (cosh_optab): New.
301 * config/i386/i386-protos.h (ix86_emit_i387_sinh): New prototype.
302 (ix86_emit_i387_cosh): Ditto.
303 (ix86_emit_i387_tanh): Ditto.
304 * config/i386/i386.c (ix86_emit_i387_sinh): New function.
305 (ix86_emit_i387_cosh): Ditto.
306 (ix86_emit_i387_tanh): Ditto.
307 * config/i386/i386.md (sinhxf2): New expander.
308 (sinh<mode>2): Ditto.
310 (cosh<mode>2): Ditto.
312 (tanh<mode>2): Ditto.
314 2018-12-21 Jakub Jelinek <jakub@redhat.com>
317 * config/i386/i386.c (ix86_expand_int_sse_cmp): Optimize
318 x > y ? 0 : -1 into min (x, y) == x ? -1 : 0.
320 2018-12-21 Jan Beulich <jbeulich@suse.com>
322 * config/i386/sse.md (vaesdec_<mode>, vaesdeclast_<mode>): Allow
325 2018-12-21 Alexandre Oliva <oliva@adacore.com>
327 * config.gcc (tmake_file): Add name to tmake_file for
328 each @name in --with-multilib-list on arm-*-* targets.
329 * doc/install.texi (with-multilib-list): Document it.
331 2018-12-21 Jakub Jelinek <jakub@redhat.com>
333 * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Use
334 DR_TARGET_ALIGNMENT on dr_info rather than dr. Spelling fixes.
336 2018-12-20 Joern Rennecke <joern.rennecke@riscy-ip.com>
338 * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Don't do
339 versioning for data accesses with misaligned step.
341 2018-12-20 H.J. Lu <hongjiu.lu@intel.com>
344 * doc/invoke.texi: Document -Wno-address-of-packed-member.
346 2018-12-20 Vladimir Makarov <vmakarov@redhat.com>
349 * ira-color.c (fast_allocation): Choose the best cost hard reg.
351 2018-12-20 Richard Sandiford <richard.sandiford@arm.com>
353 * config/aarch64/iterators.md (SVE_INT_UNARY, fp_int_op): Add abs.
354 (SVE_FP_UNARY): Sort.
356 2018-12-20 Richard Sandiford <richard.sandiford@arm.com>
358 * config/aarch64/aarch64-sve.md (*cond_<optab><mode>_4): Use
359 sve_fmla_op rather than sve_fmad_op for the movprfx alternative.
361 2018-12-20 Martin Jambor <mjambor@suse.cz>
364 * tree-ssa-alias.c (ao_ref_init_from_ptr_and_size): Assert that
367 2018-12-20 Richard Biener <rguenther@suse.de>
369 PR tree-optimization/84362
370 * tree-ssa-loop-im.c: Include alias.h, builtins.h and tree-dfa.h.
371 (struct im_mem_ref): add ref_canonical flag.
372 (struct mem_ref_hasher): Use ao_ref as compare_type.
373 (mem_ref_hasher::equal): Adjust and add variant comparing ao_ref
375 (mem_ref_alloc): Take ao_ref parameter, initialize ref_canonical
377 (gather_mem_refs_stmt): Set up ao_ref early and do the lookup
378 using it. If we have non-equal refs canonicalize the one
379 in the hashtable used for insertion.
380 (tree_ssa_lim_initialize): Adjust.
382 2018-12-20 Jakub Jelinek <jakub@redhat.com>
385 * config/i386/i386.c (ix86_expand_sse_movcc): For maskcmp, try to
386 emit vpmovm2? instruction perhaps after knot?. Reorganize code
387 so that it doesn't have to test !maskcmp in almost every conditional.
389 2018-12-20 Alan Modra <amodra@gmail.com>
391 * config/rs6000/sysv4.h (GNU_USER_DYNAMIC_LINKER): Define.
393 2018-12-19 Andreas Tobler <andreast@gcc.gnu.org>
395 * config.gcc: Enable TARGET_DEFAULT_ASYNC_UNWIND_TABLES on
398 2018-12-19 Uros Bizjak <ubizjak@gmail.com>
400 * config/i386/i386.md (SWI1248_AVX512BWDQ_64): Rename from
401 SWI1248_AVX512BWDQ2_64. Unconditionally enable HImode.
402 (*cmp<mode>_ccz_1): Emit kortest instead of ktest insn.
403 Use SWI1248_AVX512BWDQ_64 mode iterator and enable only for
406 2018-12-19 Thomas Preud'homme <thomas.preudhomme@linaro.org>
408 * config/arm/elf.h: Update comment about condition that need to
409 match with libgcc/config/arm/lib1funcs.S to also include
410 libgcc/config/arm/t-arm.
411 * doc/sourcebuild.texi (output-exists, output-exists-not): Rename
412 subsubsection these directives are in to "Check for output files".
413 Move scan-symbol to that section and add to it new scan-symbol-not
416 2018-12-19 Tom de Vries <tdevries@suse.de>
418 * config/nvptx/nvptx.c (PTX_CTA_SIZE): Define.
420 2018-12-19 Tom de Vries <tdevries@suse.de>
422 * omp-offload.c (oacc_fn_attrib_level): Remove static.
423 * omp-offload.h (oacc_fn_attrib_level): Declare.
425 2018-12-19 Tom de Vries <tdevries@suse.de>
427 * omp-offload.c (oacc_get_default_dim): New function.
428 * omp-offload.h (oacc_get_default_dim): Declare.
430 2018-12-19 David Malcolm <dmalcolm@redhat.com>
433 * gcc-rich-location.c
434 (maybe_range_label_for_tree_type_mismatch::get_text): Move here from
436 (binary_op_rich_location::binary_op_rich_location): New ctor.
437 (binary_op_rich_location::use_operator_loc_p): New function.
438 * gcc-rich-location.h
439 (class maybe_range_label_for_tree_type_mismatch)): Move here from
441 (struct op_location_t): New forward decl.
442 (class binary_op_rich_location): New class.
443 * tree.h (struct op_location_t): New struct.
445 2018-12-19 David Malcolm <dmalcolm@redhat.com>
449 * convert.c: Include "selftest.h".
450 (preserve_any_location_wrapper): New function.
451 (convert_to_pointer_maybe_fold): Update to handle location
453 (convert_to_real_maybe_fold): Likewise.
454 (convert_to_integer_1): Strip expr when using TREE_OVERFLOW.
455 Handle location wrappers when checking for INTEGER_CST.
456 (convert_to_integer_maybe_fold): Update to handle location
458 (convert_to_complex_maybe_fold): Likewise.
459 (selftest::test_convert_to_integer_maybe_fold): New functions.
460 (selftest::convert_c_tests): New function.
461 * convert.h (preserve_any_location_wrapper): New decl.
462 * fold-const.c (size_binop_loc): Strip location wrappers when
464 (operand_equal_p): Strip any location wrappers.
465 (integer_valued_real_p): Strip any location wrapper.
466 * selftest-run-tests.c (selftest::run_tests): Call
467 selftest::convert_c_tests.
468 * selftest.h (selftest::convert_c_tests): New decl.
469 * tree.c (build_complex): Assert that REAL and IMAG are constants.
470 (integer_zerop): Look through location wrappers.
471 (integer_onep): Likewise.
472 (integer_each_onep): Likewise.
473 (integer_all_onesp): Likewise.
474 (integer_minus_onep): Likewise.
475 (integer_pow2p): Likewise.
476 (integer_nonzerop): Likewise.
477 (integer_truep): Likewise.
478 (fixed_zerop): Likewise.
479 (real_zerop): Likewise.
480 (real_onep): Likewise.
481 (real_minus_onep): Likewise.
482 (tree_int_cst_equal): Likewise.
483 (simple_cst_equal): Treat location wrappers with non-equal source
484 locations as being unequal.
485 (uniform_integer_cst_p): Look through location wrappers.
486 (maybe_wrap_with_location): Don't create wrappers if any
487 auto_suppress_location_wrappers are active.
488 (suppress_location_wrappers): New variable.
489 (selftest::test_predicates): New test.
490 (selftest::tree_c_tests): Call it.
491 * tree.h (CONSTANT_CLASS_OR_WRAPPER_P): New macro.
492 (suppress_location_wrappers): New decl.
493 (class auto_suppress_location_wrappers): New class.
495 2018-12-19 Paul A. Clarke <pc@us.ibm.com>
497 * config/rs6000/tmmintrin.h (_mm_hadds_epi16): Vector lanes swapped.
498 (_mm_hsub_epi32): Likewise.
499 (_mm_shuffle_epi8): Fix reversed interpretation of parameters.
500 (_mm_shuffle_pi8): Likewise.
501 (_mm_addubs_pi16): Likewise.
503 2018-12-19 Thomas Preud'homme <thomas.preudhomme@linaro.org>
505 * config/arm/arm.h (TARGET_HARD_FLOAT): Restrict to TARGET_32BIT
507 * config/arm/arm.c (output_return_instruction): Only check
508 TARGET_HARD_FLOAT to decide whether FP instructions are available.
510 2018-12-19 Tom de Vries <tom@codesourcery.com>
512 * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
513 dump files): Add offload-rtl.
515 2018-12-19 Segher Boessenkool <segher@kernel.crashing.org>
518 * config/rs6000/vsx.md (*vsx_extract_<P:mode>_<VSX_D:mode>_load):
519 Require TARGET_POWERPC64.
521 2018-12-19 Richard Biener <rguenther@suse.de>
523 PR tree-optimization/88533
525 2018-04-30 Richard Biener <rguenther@suse.de>
527 PR tree-optimization/28364
528 PR tree-optimization/85275
529 * tree-ssa-loop-ch.c (ch_base::copy_headers): Stop after
530 copying first exit test.
532 * tree-ssa-loop-ch.c: Include tree-phinodes.h and
534 (should_duplicate_loop_header_p): Track whether stmt compute
535 loop invariants or values based on IVs. Apart from the
536 original loop header only duplicate blocks with exit tests
537 that are based on IVs or invariants.
539 2018-12-19 Tom de Vries <tdevries@suse.de>
541 * config/nvptx/nvptx.c (nvptx_gen_shared_bcast, shared_prop_gen)
542 (nvptx_goacc_expand_accel_var): Use MAX and ROUND_UP.
543 (nvptx_assemble_value, nvptx_output_skip): Use MIN.
544 (nvptx_shared_propagate, nvptx_single, nvptx_expand_shared_addr): Use
547 2018-12-19 Tom de Vries <tdevries@suse.de>
549 * config/nvptx/nvptx.c (nvptx_gen_wcast): Rename as
550 nvptx_gen_warp_bcast.
551 (nvptx_gen_wcast): Rename to nvptx_gen_shared_bcast, add bool
552 vector argument, and update call to nvptx_gen_shared_bcast.
553 (propagator_fn): Add bool argument.
554 (nvptx_propagate): New bool argument, pass bool argument to fn.
555 (vprop_gen): Rename to warp_prop_gen, update call to
556 nvptx_gen_warp_bcast.
557 (nvptx_vpropagate): Rename to nvptx_warp_propagate, update call to
559 (wprop_gen): Rename to shared_prop_gen, update call to
560 nvptx_gen_shared_bcast.
561 (nvptx_wpropagate): Rename to nvptx_shared_propagate, update call
563 (nvptx_wsync): Rename to nvptx_cta_sync.
564 (nvptx_single): Update calls to nvptx_gen_warp_bcast,
565 nvptx_gen_shared_bcast and nvptx_cta_sync.
566 (nvptx_process_pars): Likewise.
567 (write_worker_buffer): Rename as write_shared_buffer.
568 (nvptx_file_end): Update calls to write_shared_buffer.
569 (nvptx_expand_worker_addr): Rename as nvptx_expand_shared_addr.
570 (nvptx_expand_builtin): Update call to nvptx_expand_shared_addr.
571 (nvptx_get_worker_red_addr): Rename as nvptx_get_shared_red_addr.
572 (nvptx_goacc_reduction_setup): Update call to
573 nvptx_get_shared_red_addr.
574 (nvptx_goacc_reduction_fini): Likewise.
575 (nvptx_goacc_reduction_teardown): Likewise.
577 2018-12-19 Tom de Vries <tdevries@suse.de>
579 * config/nvptx/nvptx.c (worker_bcast_size): Rename as
581 (worker_bcast_align): Rename as oacc_bcast_align.
582 (worker_bcast_sym): Rename as oacc_bcast_sym.
583 (nvptx_option_override): Update usage of oacc_bcast_*.
584 (struct wcast_data_t): Rename as broadcast_data_t.
585 (nvptx_gen_wcast): Update type of data argument and usage of
587 (wprop_gen): Update type of data_ and usage of oacc_bcast_align.
588 (nvptx_wpropagate): Update type of data and usage of
589 oacc_bcast_{sym,size}.
590 (nvptx_single): Update type of data and usage of oacc_bcast_size.
591 (nvptx_file_end): Update usage of oacc_bcast_{sym,align,size}.
593 2018-12-19 Tom de Vries <tdevries@suse.de>
595 * config/nvptx/nvptx.md (nvptx_barsync): Add and handle operand.
596 * config/nvptx/nvptx.c (nvptx_wsync): Update call to gen_nvptx_barsync.
598 2018-12-19 Tom de Vries <tdevries@suse.de>
600 * config/nvptx/nvptx.c (nvptx_single): Always pass false to
602 (nvptx_process_pars): Likewise.
604 2018-12-19 Tom de Vries <tdevries@suse.de>
606 * config/nvptx/nvptx.c (nvptx_previous_fndecl): Declare.
607 (nvptx_set_current_function): New function.
608 (TARGET_SET_CURRENT_FUNCTION): Define.
610 2018-12-19 Shaokun Zhang <zhangshaokun@hisilicon.com>
612 * config/aarch64/aarch64-cores.def (tsv110): Fix architecture. This
613 part is really Armv8.2 with some permitted Armv8.4 extensions.
615 2018-12-19 Jakub Jelinek <jakub@redhat.com>
618 * config/i386/vpclmulqdqintrin.h (_mm256_clmulepi64_epi128): Enable
619 for -mavx -mvpclmulqdq rather than just for -mavx512vl -mvpclmulqdq.
621 2018-12-19 Alexandre Oliva <aoliva@redhat.com>
626 (vr_values::vrp_evaluate_conditional_warnv_with_ops): Extend
627 simplification of overflow tests to cover cases in which we
628 can determine the result of the comparison.
630 2018-12-19 Bin Cheng <bin.cheng@linux.alibaba.com>
632 * auto-profile.c (afdo_indirect_call): Skip generating histogram
633 value if we can't find cgraph_node for then indirected callee. Save
634 profile_id of the cgraph_node in histogram value's first counter.
635 * value-prof.c (gimple_value_profile_transformations): Don't skip
636 for flag_auto_profile.
638 2018-12-18 Vladimir Makarov <vmakarov@redhat.com>
640 PR rtl-optimization/87759
641 * lra-assigns.c (lra_split_hard_reg_for): Recalculate
644 2018-12-18 Jakub Jelinek <jakub@redhat.com>
647 * config/i386/i386-builtin-types.def
648 (VOID_FTYPE_PDOUBLE_QI_V8SI_V4DF_INT,
649 VOID_FTYPE_PFLOAT_QI_V4DI_V8SF_INT,
650 VOID_FTYPE_PLONGLONG_QI_V8SI_V4DI_INT,
651 VOID_FTYPE_PINT_QI_V4DI_V8SI_INT,
652 VOID_FTYPE_PDOUBLE_QI_V4SI_V2DF_INT,
653 VOID_FTYPE_PFLOAT_QI_V2DI_V4SF_INT,
654 VOID_FTYPE_PLONGLONG_QI_V4SI_V2DI_INT,
655 VOID_FTYPE_PINT_QI_V2DI_V4SI_INT): New builtin types.
656 * config/i386/i386.c (enum ix86_builtins): Add
657 IX86_BUILTIN_SCATTERALTSIV4DF, IX86_BUILTIN_SCATTERALTDIV8SF,
658 IX86_BUILTIN_SCATTERALTSIV4DI, IX86_BUILTIN_SCATTERALTDIV8SI,
659 IX86_BUILTIN_SCATTERALTSIV2DF, IX86_BUILTIN_SCATTERALTDIV4SF,
660 IX86_BUILTIN_SCATTERALTSIV2DI and IX86_BUILTIN_SCATTERALTDIV4SI.
661 (ix86_init_mmx_sse_builtins): Fix up names of IX86_BUILTIN_GATHERALT*,
662 IX86_BUILTIN_GATHER3ALT* and IX86_BUILTIN_SCATTERALT* builtins to
663 match the IX86_BUILTIN codes. Build IX86_BUILTIN_SCATTERALTSIV4DF,
664 IX86_BUILTIN_SCATTERALTDIV8SF, IX86_BUILTIN_SCATTERALTSIV4DI,
665 IX86_BUILTIN_SCATTERALTDIV8SI, IX86_BUILTIN_SCATTERALTSIV2DF,
666 IX86_BUILTIN_SCATTERALTDIV4SF, IX86_BUILTIN_SCATTERALTSIV2DI and
667 IX86_BUILTIN_SCATTERALTDIV4SI decls.
668 (ix86_vectorize_builtin_scatter): Expand those new builtins.
670 2018-12-18 Bill Schmidt <wschmidt@linux.ibm.com>
672 * doc/extend.texi (PowerPC Altivec/VSX Built-in Functions):
673 Describe when a typedef name can be used as the type specifier for
674 a vector type, and when it cannot.
676 2018-12-18 Jozef Lawrynowicz <jozef.l@mittosystems.com>
678 * config/msp430/msp430.h: Define TARGET_VTABLE_ENTRY_ALIGN.
680 2018-12-18 Jakub Jelinek <jakub@redhat.com>
684 * optabs.def (vec_pack_sbool_trunc_optab, vec_unpacks_sbool_hi_optab,
685 vec_unpacks_sbool_lo_optab): New optabs.
686 * optabs.c (expand_widen_pattern_expr): Use vec_unpacks_sbool_*_optab
687 and pass additional argument if both input and target have the same
688 scalar mode of VECTOR_BOOLEAN_TYPE_P vectors.
689 * expr.c (expand_expr_real_2) <case VEC_PACK_TRUNC_EXPR>: Handle
690 VECTOR_BOOLEAN_TYPE_P pack where result has the same scalar mode
691 as the operands using vec_pack_sbool_trunc_optab.
692 * tree-vect-stmts.c (supportable_widening_operation): Use
693 vec_unpacks_sbool_{lo,hi}_optab for VECTOR_BOOLEAN_TYPE_P conversions
694 where both wider_vectype and vectype have the same scalar mode.
695 (supportable_narrowing_operation): Similarly use
696 vec_pack_sbool_trunc_optab if narrow_vectype and vectype have the same
698 * config/i386/i386.c (ix86_get_builtin)
699 <case IX86_BUILTIN_GATHER3ALTDIV8SF>: Check for VECTOR_MODE_P
700 rather than non-VOIDmode.
701 * config/i386/sse.md (vec_pack_trunc_qi, vec_pack_trunc_<mode>):
702 Remove useless ()s around "register_operand", formatting fixes.
703 (vec_pack_sbool_trunc_qi, vec_unpacks_sbool_lo_qi,
704 vec_unpacks_sbool_hi_qi): New expanders.
705 * doc/md.texi (vec_pack_sbool_trunc_M, vec_unpacks_sbool_hi_M,
706 vec_unpacks_sbool_lo_M): Document.
708 2018-12-18 Jozef Lawrynowicz <jozef.l@mittosystems.com>
710 * combine.c (update_rsp_from_reg_equal): Only look for the nonzero bits
711 of src in nonzero_bits_mode if the mode of src is MODE_INT and
713 (reg_nonzero_bits_for_combine): Add clarification to comment.
715 2018-12-18 Wei Xiao <wei3.xiao@intel.com>
717 * config/i386/driver-i386.c (host_detect_local_cpu): Detect cascadelake.
718 * config/i386/i386.c (fold_builtin_cpu): Handle cascadelake.
719 * doc/extend.texi: Add cascadelake.
720 2018-12-17 Peter Bergner <bergner@linux.ibm.com>
723 * config/rs6000/vsx.md (nW): New mode iterator.
724 (vsx_mov<mode>_64bit): Use it. Remove redundant GPR 0/-1 alternative.
725 Update length attribute for (<??r>, <nW>) alternative.
726 (vsx_mov<mode>_32bit): Likewise.
728 2018-12-17 Tom de Vries <tdevries@suse.de>
730 * config/nvptx/nvptx.c (PTX_VECTOR_LENGTH, PTX_WORKER_LENGTH,
731 PTX_DEFAULT_RUNTIME_DIM): Move to the top of the file.
733 2018-12-17 Tom de Vries <tdevries@suse.de>
735 * config/nvptx/nvptx.c (PTX_WARP_SIZE): Define.
736 (nvptx_simt_vf): Return PTX_WARP_SIZE instead of PTX_VECTOR_LENGTH.
738 2018-12-17 Tom de Vries <tdevries@suse.de>
740 * config/nvptx/nvptx.c (nvptx_single): Fix whitespace.
741 (nvptx_neuter_pars): Likewise.
743 2018-12-17 Tom de Vries <tdevries@suse.de>
745 * config/nvptx/nvptx.c (nvptx_goacc_validate_dims): Work around Fortran
746 bug PR72741 by overriding dims parameter for routines.
748 2018-12-17 Tom de Vries <tdevries@suse.de>
750 * config/nvptx/nvptx.c (nvptx_goacc_validate_dims): Rewrite using
753 2018-12-17 Steve Ellcey <sellcey@cavium.com>
755 * config/aarch64/aarch64-protos.h (aarch64_use_simple_return_insn_p):
757 (aarch64_epilogue_uses): Ditto.
758 * config/aarch64/aarch64.c (aarch64_attribute_table): New array.
759 (aarch64_simd_decl_p): New function.
760 (aarch64_reg_save_mode): New function.
761 (aarch64_function_ok_for_sibcall): Check for simd calls.
762 (aarch64_layout_frame): Check for simd function.
763 (aarch64_gen_storewb_pair): Handle E_TFmode.
764 (aarch64_push_regs): Use aarch64_reg_save_mode to get mode.
765 (aarch64_gen_loadwb_pair): Handle E_TFmode.
766 (aarch64_pop_regs): Use aarch64_reg_save_mode to get mode.
767 (aarch64_gen_store_pair): Handle E_TFmode.
768 (aarch64_gen_load_pair): Ditto.
769 (aarch64_save_callee_saves): Handle different mode sizes.
770 (aarch64_restore_callee_saves): Ditto.
771 (aarch64_components_for_bb): Check for simd function.
772 (aarch64_epilogue_uses): New function.
773 (aarch64_process_components): Check for simd function.
774 (aarch64_expand_prologue): Ditto.
775 (aarch64_expand_epilogue): Ditto.
776 (aarch64_expand_call): Ditto.
777 (aarch64_use_simple_return_insn_p): New function.
778 (TARGET_ATTRIBUTE_TABLE): New define.
779 * config/aarch64/aarch64.h (EPILOGUE_USES): Redefine.
780 (FP_SIMD_SAVED_REGNUM_P): New macro.
781 * config/aarch64/aarch64.md (simple_return): New define_expand.
782 (load_pair_dw_tftf): New instruction.
783 (store_pair_dw_tftf): Ditto.
784 (loadwb_pair<TX:mode>_<P:mode>): Ditto.
785 (storewb_pair<TX:mode>_<P:mode>): Ditto.
787 2018-12-17 Uros Bizjak <ubizjak@gmail.com>
790 * internal-fn.def (ACOSH): New.
793 * optabs.def (acosh_optab): New.
794 (asinh_optab): Ditto.
795 (atanh_optab): Ditto.
796 * config/i386/i386-protos.h (ix86_emit_i387_asinh): New prototype.
797 (ix86_emit_i387_acosh): Ditto.
798 (ix86_emit_i387_atanh): Ditto.
799 * config/i386/i386.c (ix86_emit_i387_asinh): New function.
800 (ix86_emit_i387_acosh): Ditto.
801 (ix86_emit_i387_atanh): Ditto.
802 * config/i386/i386.md (asinhxf2): New expander.
803 (asinh<mode>2): Ditto.
805 (acosh<mode>2): Ditto.
807 (atanh<mode>2): Ditto.
809 2018-12-17 David Edelsohn <dje.gcc@gmail.com>
811 * config.gcc (powerpc-ibm-aix6.*): Delete extra_headers.
812 (powerpc-ibm-aix7.1.*): Same.
813 (powerpc-ibm-aix[789].*): Same.
815 2018-12-17 H.J. Lu <hongjiu.lu@intel.com>
818 * dwarf2out.c (find_AT_string_in_table): Add insert argument
819 defaulting to INSERT and replace INSERT.
820 (find_AT_string): Likewise.
821 (output_macinfo_op): Pass NO_INSERT to find_AT_string.
823 2018-12-15 Jan Hubicka <hubicka@ucw.cz>
825 * coverage.c (struct conts_entry): Add n_counts.
826 (remap_counts_file): Record number of ocunts.
827 (get_coverage_counts): Verify that counts match.
828 * coverage.h (get_coverage_counts): Update prototype.
829 * profile.c (get_exec_counts. compute_value_histograms): Add
832 2018-12-17 Senthil Kumar Selvaraj <senthilkumar.selvaraj@microchip.com>
834 PR rtl-optimization/88253
835 * combine.c (combine_simplify_rtx): Test for side-effects before
836 substituting by zero.
838 2018-12-17 Richard Sandiford <richard.sandiford@arm.com>
840 * doc/invoke.texi (-fversion-loops-for-strides): Document
841 (loop-versioning-group-size, loop-versioning-max-inner-insns)
842 (loop-versioning-max-outer-insns): Document new --params.
843 * Makefile.in (OBJS): Add gimple-loop-versioning.o.
844 * common.opt (fversion-loops-for-strides): New option.
845 * opts.c (default_options_table): Enable fversion-loops-for-strides
847 * params.def (PARAM_LOOP_VERSIONING_GROUP_SIZE)
848 (PARAM_LOOP_VERSIONING_MAX_INNER_INSNS)
849 (PARAM_LOOP_VERSIONING_MAX_OUTER_INSNS): New parameters.
850 * passes.def: Add pass_loop_versioning.
851 * timevar.def (TV_LOOP_VERSIONING): New time variable.
852 * tree-ssa-propagate.h
853 (substitute_and_fold_engine::substitute_and_fold): Add an optional
855 * tree-ssa-propagate.c
856 (substitute_and_fold_engine::substitute_and_fold): Likewise.
857 When passed, only walk blocks dominated by that block.
858 * tree-vrp.h (range_includes_p): Declare.
859 (range_includes_zero_p): Turn into an inline wrapper around
861 * tree-vrp.c (range_includes_p): New function, generalizing...
862 (range_includes_zero_p): ...this.
863 * tree-pass.h (make_pass_loop_versioning): Declare.
864 * gimple-loop-versioning.cc: New file.
866 2018-12-15 Jan Hubicka <hubicka@ucw.cz>
868 * ipa-fnsummary.c (remap_edge_change_prob): Do not ICE when changes
871 2018-12-15 H.J. Lu <hongjiu.lu@intel.com>
874 * config/i386/i386.c (ix86_finalize_stack_frame_flags): Revert
877 2018-12-15 Jan Hubicka <hubicka@ucw.cz>
879 * ipa-fnsummary.c (analyze_function_body): Do not loeak conds and
881 (ipa_fn_summary_generate): Add prevails parameter; do not allocate
882 data when symbol is not prevailing.
883 (inline_read_section): Likewise.
885 2018-12-15 Jan Hubicka <hubicka@ucw.cz>
887 * cgraph.h (cgraph_node): Add predicate prevailing_p.
888 (cgraph_edge): Add predicate possible_call_in_translation_unit_p.
889 * ipa-prop.c (ipa_write_jump_function): Optimize streaming of ADDR_EXPR.
890 (ipa_read_jump_function): Add prevails parameter; optimize streaming.
891 (ipa_read_edge_info): Break out from ...
892 (ipa_read_node_info): ... here; optimize streaming.
893 * cgraph.c (cgraph_edge::possibly_call_in_translation_unit_p): New
896 2018-12-15 Jan Hubicka <hubicka@ucw.cz>
898 * ipa-utils.c (ipa_merge_profiles): Do no merging when source function
901 2018-12-15 Jakub Jelinek <jakub@redhat.com>
903 PR tree-optimization/88464
905 * tree-vect-stmts.c (vect_build_gather_load_calls): For NARROWING
906 and mask with integral masktype, don't try to permute mask vectors,
907 instead emit VEC_UNPACK_{LO,HI}_EXPR. Fix up NOP_EXPR operand.
908 (vectorizable_store): Handle masked scatters with decl and integral
910 (permute_vec_elements): Allow scalar_dest to be NULL.
911 * config/i386/i386.c (ix86_get_builtin)
912 <case IX86_BUILTIN_GATHER3ALTDIV16SF>: Use lowpart_subreg for masks.
913 <case IX86_BUILTIN_GATHER3ALTDIV8SF>: Don't assume mask and src have
916 2018-12-15 Jan Hubicka <hubicka@ucw.cz>
918 * ipa.c (cgraph_build_static_cdtor_1): Add OPTIMIZATION and TARGET
920 (cgraph_build_static_cdtor): Update.
921 (build_cdtor): Use OPTIMIZATION and TARGET of the first real cdtor
924 2018-12-15 Alan Modra <amodra@gmail.com>
926 * config/rs6000/rs6000.c (generate_set_vrsave, rs6000_emit_savres_rtx),
927 (rs6000_emit_prologue, rs6000_call_aix, rs6000_call_sysv),
928 (rs6000_call_darwin_1): Use gen_hard_reg_clobber.
930 2018-12-15 Jakub Jelinek <jakub@redhat.com>
933 * config/i386/sse.md (UNSPEC_SFIXUPIMM): New unspec enumerator.
934 (avx512f_sfixupimm<mode><mask_name><round_saeonly_name>): Use it
935 instead of UNSPEC_FIXUPIMM.
937 PR rtl-optimization/88478
938 * cselib.c (cselib_record_sets): Move sets[i].src_elt tests
939 after REG_P (dest) test.
941 2018-12-14 Martin Sebor <msebor@redhat.com>
943 PR tree-optimization/88372
944 * calls.c (maybe_warn_alloc_args_overflow): Handle function pointers.
945 * tree-object-size.c (alloc_object_size): Same. Simplify.
946 * doc/extend.texi (Object Size Checking): Update.
947 (Other Builtins): Add __builtin_object_size.
948 (Common Type Attributes): Add alloc_size.
949 (Common Variable Attributes): Ditto.
951 2018-12-14 Martin Sebor <msebor@redhat.com>
953 PR rtl-optimization/87096
954 * gimple-ssa-sprintf.c (sprintf_dom_walker::handle_gimple_call): Avoid
955 folding calls whose bound may exceed INT_MAX. Diagnose bound ranges
956 that exceed the limit.
958 2018-12-14 Martin Sebor <msebor@redhat.com>
961 * doc/extend.texi (attribute const, pure): Clarify.
963 2018-12-14 H.J. Lu <hongjiu.lu@intel.com>
965 * config/i386/i386.c (rest_of_insert_endbranch): Insert ENDBR
966 at the function entry only when -mmanual-endbr isn't used or
967 there is cf_check function attribute.
968 (ix86_attribute_table): Add cf_check.
969 * config/i386/i386.opt: Add -mmanual-endbr.
970 * doc/extend.texi: Document cf_check attribute.
971 * doc/invoke.texi: Document -mmanual-endbr.
973 2018-12-14 Thomas Schwinge <thomas@codesourcery.com>
974 Cesar Philippidis <cesar@codesourcery.com>
976 * omp-offload.c (inform_oacc_loop): New function.
977 (execute_oacc_device_lower): Use it to display loop parallelism.
979 2018-12-14 Jakub Jelinek <jakub@redhat.com>
983 * expr.h (categorize_ctor_elements): Add p_unique_nz_elts argument.
984 * expr.c (categorize_ctor_elements_1): Likewise. Compute it like
985 p_nz_elts, except don't multiply it by mult. Adjust recursive call.
986 Fix up COMPLEX_CST handling.
987 (categorize_ctor_elements): Add p_unique_nz_elts argument, initialize
988 it and pass it through to categorize_ctor_elements_1.
989 (mostly_zeros_p, all_zeros_p): Adjust categorize_ctor_elements callers.
990 * gimplify.c (gimplify_init_constructor): Likewise. Don't force
991 ctor into readonly data section if num_unique_nonzero_elements is
992 smaller or equal to 1/8 of num_nonzero_elements and size is >= 64
995 2018-12-14 Thomas Preud'homme <thomas.preudhomme@arm.com>
997 * config/arm/arm.md (arm_movdi): Split if -mslow-flash-data and
998 source is a constant that would be loaded by literal pool.
999 (movsf expander): Generate a no_literal_pool_sf_immediate insn if
1000 -mslow-flash-data is present, targeting hardfloat ABI and source is a
1001 float constant that cannot be loaded via vmov.
1002 (movdf expander): Likewise but generate a no_literal_pool_df_immediate
1004 (arm_movsf_soft_insn): Split if -mslow-flash-data and source is a
1005 float constant that would be loaded by literal pool.
1006 (softfloat constant movsf splitter): Splitter for the above case.
1007 (movdf_soft_insn): Split if -mslow-flash-data and source is a float
1008 constant that would be loaded by literal pool.
1009 (softfloat constant movdf splitter): Splitter for the above case.
1010 * config/arm/constraints.md (Pz): Document existing constraint.
1011 (Ha): Define constraint.
1013 * config/arm/predicates.md (hard_sf_operand): New predicate.
1014 (hard_df_operand): Likewise.
1015 * config/arm/thumb2.md (thumb2_movsi_insn): Split if
1016 -mslow-flash-data and constant would be loaded by literal pool.
1017 * constant/arm/vfp.md (thumb2_movsi_vfp): Likewise and disable constant
1018 load in VFP register.
1019 (movdi_vfp): Likewise.
1020 (thumb2_movsf_vfp): Use hard_sf_operand as predicate for source to
1021 prevent match for a constant load if -mslow-flash-data and constant
1022 cannot be loaded via vmov. Adapt constraint accordingly by
1023 using Ha instead of E for generic floating-point constant load.
1024 (thumb2_movdf_vfp): Likewise using hard_df_operand predicate instead.
1025 (no_literal_pool_df_immediate): Add a clobber to use as the
1026 intermediate general purpose register and also enable it after reload
1027 but disable it constant is a valid FP constant. Add constraints and
1028 generate a DI intermediate load rather than 2 SI loads.
1029 (no_literal_pool_sf_immediate): Add a clobber to use as the
1030 intermediate general purpose register and also enable it after
1033 2018-12-14 Uros Bizjak <ubizjak@gmail.com>
1036 * internal-fn.def (HYPOT): New.
1037 * optabs.def (hypot_optab): New.
1038 * config/i386/i386.md (hypot<mode>3): New expander.
1040 2018-12-14 Jeff Law <law@redhat.com>
1042 * target.def (post_cfi_startproc): Fix text.
1044 2018-12-14 Sam Tebbs <sam.tebbs@arm.com>
1046 * doc/tm.texi (TARGET_ASM_POST_CFI_STARTPROC): Define.
1047 * doc/tm.texi.in (TARGET_ASM_POST_CFI_STARTPROC): Define.
1048 * dwarf2out.c (dwarf2out_do_cfi_startproc): Trigger the hook.
1049 * hooks.c (hook_void_FILEptr_tree): Define.
1050 * hooks.h (hook_void_FILEptr_tree): Define.
1051 * target.def (post_cfi_startproc): Define.
1053 2018-12-14 Tom de Vries <tdevries@suse.de>
1055 * lto-cgraph.c (verify_node_partition): New function.
1056 (input_overwrite_node, input_varpool_node): Use verify_node_partition.
1058 2018-12-14 H.J. Lu <hongjiu.lu@intel.com>
1061 * config/i386/i386.c (ix86_finalize_stack_frame_flags): Don't
1062 use get_frame_size ().
1064 2018-12-14 Andrew Stubbs <ams@codesourcery.com>
1066 * gcc/lra-int.h (lra_register_new_scratch_op): Add third parameter.
1067 * gcc/lra-remat.c (update_scratch_ops): Pass icode to
1068 lra_register_new_scratch_op.
1069 * gcc/lra.c (struct sloc): Add icode field.
1070 (lra_register_new_scratch_op): Add icode parameter.
1071 Use icode to skip insns that have changed beyond recognition.
1073 2018-12-14 Eric Botcazou <ebotcazou@adacore.com>
1075 * dwarf2out.c (analyze_discr_in_predicate): Simplify.
1076 (analyze_variants_discr): Deal with naked boolean discriminants.
1078 2018-12-14 Claudiu Zissulescu <claziss@synopsys.com>
1080 * config/arc/arc.c (arc_restore_callee_milli) Don't clobber off
1083 2018-12-14 Claudiu Zissulescu <claziss@synopsys.com>
1085 * config/arc/arc.h (reg_class): Add SIBCALL_REGS.
1087 2018-12-14 Richard Biener <rguenther@suse.de>
1089 * gimple-ssa-split-paths.c (is_feasible_trace): Remove
1090 duplicated code block.
1092 2018-12-14 Alan Modra <amodra@gmail.com>
1094 PR rtl-optimization/88311
1095 * config/rs6000/rs6000.c (rs6000_call_sysv): Do not mask cookie.
1096 (rs6000_sibcall_sysv): Likewise.
1098 2018-12-14 Segher Boessenkool <segher@kernel.crashing.org>
1100 PR rtl-optimization/88001
1101 * function.c (match_asm_constraints_1): Don't invalidly share RTL.
1103 2018-12-14 Bin Cheng <bin.cheng@linux.alibaba.com>
1105 * auto-profile.c (afdo_annotate_cfg): Call update_max_bb_count even
1106 if autofdo counts are all zeros.
1108 2018-12-14 Bin Cheng <bin.cheng@linux.alibaba.com>
1110 * auto-profile.c (afdo_indirect_call): Skip generating histogram
1111 value for internal call.
1113 2018-12-14 Bin Cheng <bin.cheng@linux.alibaba.com>
1115 * auto-profile.c (AFDO_EINFO): New macro.
1116 (class edge_info): New class.
1117 (is_edge_annotated, set_edge_annotated): Delete.
1118 (afdo_propagate_edge, afdo_propagate_circuit, afdo_propagate): Remove
1119 parameter. Adjust edge count computation and annotation using class
1121 (afdo_calculate_branch_prob, afdo_annotate_cfg): Likewise.
1123 2018-12-13 Michael Ploujnikov <michael.ploujnikov@oracle.com>
1125 * ipa-cp.c (print_all_lattices): Skip cp clones.
1127 * ipa-cp.c: Fix various comment typos.
1129 2018-12-13 Jakub Jelinek <jakub@redhat.com>
1131 PR tree-optimization/88444
1132 * tree-inline.c (fold_marked_statements): Iterate up to
1133 last_basic_block_for_fn rather than n_basic_blocks_for_fn.
1135 PR rtl-optimization/88470
1136 * cfgcleanup.c (outgoing_edges_match): If the function is
1137 shrink-wrapped and bb1 ends with a JUMP_INSN with a single fake
1138 edge to EXIT, return false.
1140 2018-12-13 Martin Sebor <msebor@redhat.com>
1142 * doc/extend.texi: Consistently use @code for const and volatile
1143 qualifiers, the true and false constants, and asm statements.
1145 2018-12-13 Vladimir Makarov <vmakarov@redhat.com>
1147 PR rtl-optimization/88414
1148 * lra-int.h (lra_asm_error_p): New.
1149 * lra-assigns.c (lra_assign): Check lra_asm_error_p for checking
1150 call crossed pseudo assignment correctness.
1151 (lra_split_hard_reg_for): Set up lra_asm_error_p.
1152 * lra-constraints.c (curr_insn_transform): Ditto.
1153 * lra.c (lra_asm_error_p): New.
1154 (lra): Reset lra_asm_error_p.
1156 2018-12-13 Jakub Jelinek <jakub@redhat.com>
1158 PR rtl-optimization/88416
1159 * valtrack.c (cleanup_auto_inc_dec): Handle pre/post-inc/dec/modify
1160 even if !AUTO_INC_DEC.
1162 2018-12-13 David Edelsohn <dje.gcc@gmail.com>
1164 * config/rs6000/rs6000.c (rs6000_function_arg): Ensure type is
1166 (rs6000_arg_partial_bytes): Same.
1168 2018-12-13 Jason Merrill <jason@redhat.com>
1170 * gdbinit.in (pp): New macro.
1173 2018-12-13 Jakub Jelinek <jakub@redhat.com>
1175 PR tree-optimization/88464
1176 * tree-vect-stmts.c (vect_build_gather_load_calls): Handle INTEGER_TYPE
1177 masktype if mask is non-NULL.
1178 (vectorizable_load): Don't reject masked gather loads if masktype
1179 in the decl is INTEGER_TYPE.
1181 2018-12-13 Andreas Krebbel <krebbel@linux.ibm.com>
1183 * config/s390/s390-builtins.def (s390_vec_double_s64): Map to
1184 s390_vec_double_s64 instead of s390_vcdgb.
1185 (s390_vec_double_u64): Map to s390_vec_double_u64 instead of
1188 2018-12-13 Andreas Krebbel <krebbel@linux.ibm.com>
1190 * config/s390/vx-builtins.md ("vec_ctd_s64", "vec_ctd_u64")
1191 ("vec_ctsl", "vec_ctul"): Replace 0 with VEC_NOINEXACT.
1192 ("vec_double_s64", "vec_double_u64"): Replace 4 with VEC_INEXACT.
1194 2018-12-13 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1196 * doc/invoke.texi (-msve-vector-bits): Clarify -msve-vector-bits=128
1199 2018-12-13 Wei Xiao <wei3.xiao@intel.com>
1201 * common/config/i386/i386-common.c (processor_names): Add cascadelake.
1202 (processor_alias_table): Add cascadelake.
1203 * config.gcc: Add -march=cascadelake.
1204 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
1206 * config/i386/i386.c (Add m_CASCADELAKE): New.
1207 (processor_cost_table): Add cascadelake.
1208 (get_builtin_code_for_version): Handle cascadelake.
1209 * config/i386/i386.h (TARGET_CASCADELAKE, PROCESSOR_CASCADELAKE): New.
1210 (PTA_CASCADELAKE): Ditto.
1211 * doc/invoke.texi: Add -march=cascadelake.
1213 2018-12-13 Jakub Jelinek <jakub@redhat.com>
1216 * config/i386/i386.md (*movdi_internal, *movsi_internal,
1217 *movhi_internal, *movqi_internal): Add alternative(s) to load
1218 0 or -1 into k registers using kxor or kxnoq instructions.
1221 * config/i386/sse.md (VI1248_AVX512VLBW, AVX512ZEXTMASK): New
1223 (<avx512>_testm<mode>3<mask_scalar_merge_name>,
1224 <avx512>_testnm<mode>3<mask_scalar_merge_name>): Merge patterns
1225 with VI12_AVX512VL and VI48_AVX512VL iterators into ones with
1226 VI1248_AVX512VLBW iterator.
1227 (*<avx512>_testm<VI1248_AVX512VLBW:mode>3_zext,
1228 *<avx512>_testm<VI1248_AVX512VLBW:mode>3_zext_mask,
1229 *<avx512>_testnm<VI1248_AVX512VLBW:mode>3_zext,
1230 *<avx512>_testnm<VI1248_AVX512VLBW:mode>3_zext_mask): New
1234 * config/i386/i386.md (*zero_extendsidi2, zero_extend<mode>di2,
1235 *zero_extend<mode>si2, *zero_extendqihi2): Add =*k, *km alternatives.
1237 2018-12-12 Tom de Vries <tdevries@suse.de>
1238 Jakub Jelinek <jakub@redhat.com>
1240 * omp-builtins.def (BUILT_IN_GOMP_LOOP_NONMONOTONIC_RUNTIME_START,
1241 BUILT_IN_GOMP_LOOP_MAYBE_NONMONOTONIC_RUNTIME_START,
1242 BUILT_IN_GOMP_LOOP_ULL_NONMONOTONIC_RUNTIME_START,
1243 BUILT_IN_GOMP_LOOP_ULL_MAYBE_NONMONOTONIC_RUNTIME_START,
1244 BUILT_IN_GOMP_PARALLEL_LOOP_NONMONOTONIC_RUNTIME,
1245 BUILT_IN_GOMP_PARALLEL_LOOP_MAYBE_NONMONOTONIC_RUNTIME): Fix up
1246 function types - remove one argument.
1248 2018-12-12 Martin Sebor <msebor@redhat.com>
1250 * doc/extend.texi (attribute copy): Fix typos.
1252 2018-12-12 Martin Sebor <msebor@redhat.com>
1254 * doc/extend.texi (Function Attributes): Clarify C++ aspects.
1255 (Variable Attributes): Same.
1256 (Type Attributes): Same.
1258 2018-12-12 Olivier Hainque <hainque@adacore.com>
1260 * config/aarch64/aarch64.c (aarch64_override_options): Once arch,
1261 cpu and tune were validated, insert SUBTARGET_OVERRIDE_OPTIONS if
1264 2018-12-12 Olivier Hainque <hainque@adacore.com>
1266 * config/aarch64/aarch64.c (PROBE_STACK_FIRST_REG) : Redefine as
1267 R9_REGNUM instead of 9.
1268 (PROBE_STACK_SECOND_REG): Redefine as R10_REGNUM instead of 10.
1270 2018-12-12 Eric Botcazou <ebotcazou@adacore.com>
1273 * config/sparc/sparc.md (unspecv): Add UNSPECV_SPECULATION_BARRIER.
1274 (speculation_barrier): New instruction for V9.
1276 2018-12-12 Segher Boessenkool <segher@kernel.crashing.org>
1277 Iain Sandoe <iain@sandoe.co.uk>
1280 * config/rs6000/rs6000.c (save_reg_p): Do not save the picbase reg
1281 unless it has been used.
1282 (first_reg_to_save): Remove dead code.
1284 2018-12-12 Iain Sandoe <iain@sandoe.co.uk>
1286 * config/rs6000/rs6000-protos.h (rs6000_call_darwin): New.
1287 (rs6000_sibcall_darwin): New. (macho_call_template): Remove.
1288 * config/rs6000/rs6000.c (get_prev_label): Forward declaration.
1289 (rs6000_call_template_1): Handle Darwin.
1290 (macho_call_template): Remove.
1291 (rs6000_call_sysv): Remove handling for Darwin.
1292 (rs6000_call_darwin_1, rs6000_call_darwin): New
1293 (rs6000_sibcall_darwin): New.
1294 * config/rs6000/rs6000.md (define_expand “call”): Handle Darwin
1295 with its own expander. (define_expand “call_value”): Likewise.
1296 (define_expand “sibcall”): Likewise.
1297 (define_expand “sibcall_value”): Likewise.
1298 (call_nonlocal_sysv): Remove Darwin special-casing.
1299 (call_value_nonlocal_sysv): Likewise.
1301 2018-12-12 Iain Sandoe <iain@sandoe.co.uk>
1303 * config/rs6000/darwin.md (call_indirect_nonlocal_darwin64): Remove.
1304 (call_nonlocal_darwin64): Remove.
1305 (call_value_indirect_nonlocal_darwin64): Remove.
1306 (call_value_nonlocal_darwin64): Remove.
1307 * config/rs6000/rs6000.c (rs6000_call_template_1): Handle Darwin with
1308 the same asm output as AIX/ELFv2. (rs6000_call_sysv): Preserve the
1309 CALL_LONG flag when needed for Darwin.
1310 * config/rs6000/rs6000.md (define expand “call”): Expand Darwin as
1312 (define_expand “call_value”): Likewise.
1313 (define_expand “sibcall”): Likewise.
1314 (define_expand “sibcall_value”): Likewise.
1315 (call_indirect_nonlocal_sysv): Mark the clobber mode P.
1316 (call_nonlocal_sysv): Likewise.
1317 (call_nonlocal_sysv_secure): Likewise.
1318 (call_value_indirect_nonlocal_sysv): Likewise.
1319 (call_value_nonlocal_sysv): Likewise.
1320 (call_value_nonlocal_sysv_secure): Likewise.
1321 (call_local64): Mark the clobber DI.
1322 (call_value_local64): Likewise.
1324 2018-12-11 Jakub Jelinek <jakub@redhat.com>
1326 PR tree-optimization/88444
1327 * tree-vrp.c (register_edge_assert_for_2): Only register assertions
1328 for conversions if rhs1 is a SSA_NAME.
1330 2018-12-11 Dimitar Dimitrov <dimitar@dinux.eu>
1332 * cfgexpand.c (asm_clobber_reg_is_valid): Also produce
1333 error when stack pointer is clobbered.
1334 (expand_asm_stmt): Refactor clobber check in separate function.
1336 2018-12-11 Eric Botcazou <ebotcazou@adacore.com>
1338 * config/rs6000/vxworks.h (RS6000_STARTING_FRAME_OFFSET): Define,
1339 accounting for STACK_BOUNDARY 128.
1340 (STACK_DYNAMIC_OFFSET): Likewise.
1342 2018-12-11 Jakub Jelinek <jakub@redhat.com>
1345 * config/i386/i386.md (*x86_mov<SWI48:mode>cc_0_m1_neg_leu<SWI:mode>):
1346 New define_insn_and_split.
1348 2018-12-11 Richard Biener <rguenther@suse.de>
1352 * gimple.c (gimple_assign_set_rhs_with_ops): Revert previous
1354 * tree-complex.c (update_complex_assignment): Properly transfer
1355 or clean EH info around gimple_assign_set_rhs_with_ops.
1357 2018-12-11 Richard Earnshaw <rearnsha@arm.com>
1360 * config/aarch64/iterators.md (sizem1): Add sizes for SFmode and DFmode.
1361 (Vbtype): Add SFmode mapping.
1362 * config/aarch64/aarch64.md (copysigndf3, copysignsf3): Delete.
1363 (copysign<GPF:mode>3): New expand pattern.
1364 (copysign<GPF:mode>3_insn): New insn pattern.
1366 2018-12-11 Richard Biener <rguenther@suse.de>
1368 * ccmp.c (ccmp_candidate_p): Use GIMPLE API properly.
1370 2018-12-11 Jakub Jelinek <jakub@redhat.com>
1373 * doc/sourcebuild.texi (lto_incremental): Document new effective
1376 2018-12-11 Segher Boessenkool <segher@kernel.crashing.org>
1379 * config/rs6000/rs6000.c (rs6000_expand_zeroop_builtin): Use
1380 rs6000_isa_flags instead of rs6000_isa_flags_explicit to decide
1381 whether soft float is enabled.
1382 (rs6000_expand_mtfsb_builtin): Ditto.
1383 (rs6000_expand_set_fpscr_rn_builtin): Ditto.
1384 (rs6000_expand_set_fpscr_drn_builtin): Ditto.
1386 2018-12-10 Jeff Law <law@redhat.com>
1388 PR tree-optimization/80520
1389 * gimple-ssa-split-paths.c (is_feasible_trace): Recognize half
1390 diamonds that are likely if convertable.
1392 2018-12-10 Martin Sebor <msebor@redhat.com>
1394 PR tree-optimization/86196
1395 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Use
1396 base size only of arrays.
1398 2018-12-10 Segher Boessenkool <segher@kernel.crashing.org>
1400 * config.gcc (Obsolete configurations): Delete powerpc*-*-*spe*.
1401 (Unsupported targets): Add powerpc*-*-*spe*.
1402 (powerpc*-*-*spe*): Delete.
1403 (powerpc-*-eabispe*): Delete.
1404 (powerpc-*-rtems*spe*): Delete.
1405 (powerpc*-*-linux*spe*): Delete.
1406 (powerpc*-*-linux*): Do not handle the linux*spe* targets.
1407 (powerpc-wrs-vxworks*spe): Delete.
1408 (with_cpu setting code): Delete powerpc*-*-*spe* handling.
1409 * config.host (target powerpc*-*-*spe*): Delete.
1410 * doc/invoke.texi (PowerPC SPE Options): Delete.
1411 (PowerPC SPE Options): Delete.
1412 * config/powerpcspe: Delete.
1414 2018-12-10 Uros Bizjak <ubizjak@gmail.com>
1417 * config/i386/i386.c (ix86_expand_sse_cmp): For vector modes,
1418 check operand 1 with vector_operand predicate.
1419 (ix86_expand_sse_movcc): For vector modes, check op_true with
1420 vector_operand, not nonimmediate_operand.
1422 2018-12-10 Richard Biener <rguenther@suse.de>
1424 * tree-affine.c (tree_to_aff_combination): Remove unreachable
1426 (aff_combination_expand): Cache on SSA names, not possibly
1427 on conversion trees. Avoid expanding cases we do not handle.
1429 2018-12-10 Richard Biener <rguenther@suse.de>
1431 PR tree-optimization/88427
1432 * vr-values.c (vr_values::extract_range_from_phi_node):
1433 Handle symbolic ranges conservatively when trying to drop
1436 2018-12-10 Martin Jambor <mjambor@suse.cz>
1439 * ipa-prop.c (determine_locally_known_aggregate_parts): Make sure
1440 we check pointers against pointers.
1442 2018-12-10 Richard Biener <rguenther@suse.de>
1445 * gimple.c (gimple_assign_set_rhs_with_ops): Transfer EH
1446 info to a newly allocated stmt.
1448 2018-12-10 Jerome Lambourg <lambourg@adacore.com>
1450 * config/vxworksae.h (TARGET_VXWORKS_HAVE_CTORS_DTORS): Define.
1452 2018-12-10 Fredrik Nyström <fredrik@lysator.liu.se>
1455 * config/sol2.h: Only use libgcc-unwind.map if
1456 ENABLE_SHARED_LIBGCC.
1458 2018-12-10 Bin Cheng <bin.cheng@linux.alibaba.com>
1460 * auto-profile.c (afdo_calculate_branch_prob): Convert profile_count
1461 to afdo precision quality.
1462 (afdo_callsite_hot_enough_for_early_inline): Likewise.
1463 (afdo_annotate_cfg): Set profile_count for exit basic block.
1465 2018-12-10 Bin Cheng <bin.cheng@linux.alibaba.com>
1467 * auto-profile.c (string_table::get_index_by_decl)
1468 (function_instance::get_function_instance_by_decl): Avoid infinite
1469 recursion by using DECL_FROM_INLINE.
1471 2018-12-09 John David Anglin <danglin@gcc.gnu.org>
1473 * config.gcc (hppa*-*-linux*): Add pa/t-pa to tmake_file. Define
1475 * config/pa/pa-protos.h (pa_d_target_versions): New prototype.
1476 * config/pa/pa.h (TARGET_D_CPU_VERSIONS): Define.
1477 * config/pa/pa-d.c: New file.
1478 * config/pa/t-pa: New file.
1480 2018-12-08 Bin Cheng <bin.cheng@linux.alibaba.com>
1482 * ipa-cp.c (update_profiling_info): Call adjust_for_ipa_scaling for
1485 2018-12-08 Jakub Jelinek <jakub@redhat.com>
1488 * tree-nested.c (convert_local_reference_stmt): Handle clobbers where
1489 lhs is not a decl normally, don't call use_pointer_in_frame on that
1492 2018-12-08 Eric Botcazou <ebotcazou@adacore.com>
1494 PR rtl-optimization/88390
1495 * dwarf2cfi.c (struct dw_cfi_row): Add window_save field.
1496 (cfi_row_equal_p): Compare it.
1497 (dwarf2out_frame_debug_cfa_window_save): Add FAKE parameter.
1498 If FAKE is false, set window_save of the current row.
1499 (dwarf2out_frame_debug) <REG_CFA_TOGGLE_RA_MANGLE>: Call above
1500 function with FAKE parameter set to true.
1501 <REG_CFA_WINDOW_SAVE>: Likewise but with FAKE parameter set to false.
1502 (change_cfi_row): Emit a DW_CFA_GNU_window_save if necessary.
1504 2018-12-07 Peter Bergner <bergner@linux.ibm.com>
1507 * config/rs6000/rs6000.c (rs6000_option_override_internal): Disallow
1508 -mabi=ieeelongdouble and -mabi=ibmlongdouble without -mlong-double-128.
1509 Do not error for -mabi=ibmlongdouble and no ISA 2.06 support.
1510 * doc/invoke.texi: Document -mabi=ibmlongdouble and -mabi=ieeelongdouble
1511 require -mlong-double-128.
1513 2018-12-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1515 * config/aarch64/aarch64.c (aarch64_tuning_override_functions): Add
1517 (aarch64_parse_sve_width_string): Define.
1519 2018-12-07 Jeff Law <law@redhat.com>
1522 * gimple-ssa-evrp-analyze.h (class evrp_range_analyzer): Add
1523 m_update_global_ranges member. Add corresponding argument to ctor.
1524 * gimple-ssa-evrp-analyze.c
1525 (evrp_range_analyzer::evrp_range_analyzer): Add new argument and
1526 initialize m_update_global_ranges.
1527 (evrp_range_analyzer::set_ssa_range_info): Assert that we are
1528 updating global ranges.
1529 (evrp_range_analyzer::record_ranges_from_incoming_edge): Only
1530 update global ranges if explicitly requested.
1531 (evrp_range_analyzer::record_ranges_from_phis): Similarly.
1532 (evrp_range_analyzer::record_ranges_from_stmt): Similarly.
1533 * gimple-ssa-evrp.c (evrp_dom_walker): Pass new argument to
1534 evrp_range_analyzer ctor.
1535 * gimple-ssa-sprintf.c (sprintf_dom_walker): Similarly.
1536 * tree-ssa-dom.c (dom_opt_dom_walker): Similarly.
1538 2018-12-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1540 * config/aarch64/aarch64-opts.h (aarch64_sve_vector_bits_enum):
1541 Add SVE_NOT_IMPLEMENTED value.
1542 * config/aarch64/aarch64-protos.h (struct tune_params): Add sve_width
1544 * config/aarch64/aarch64.c (generic_tunings,cortexa35_tunings,
1545 cortexa53_tunings, cortexa57_tunings, cortexa72_tunings,
1546 cortexa73_tunings, exynosm1_tunings, thunderx_tunings,
1547 thunderx_tunings, tsv110_tunings, xgene1_tunings, qdf24xx_tunings,
1548 saphira_tunings, thunderx2t99_tunings, emag_tunings):
1550 (aarch64_estimated_poly_value): Define.
1551 (TARGET_ESTIMATED_POLY_VALUE): Define.
1553 2018-12-07 Paul A. Clarke <pc@us.ibm.com>
1556 * config/rs6000/mmintrin.h (_mm_packs_pu16): Correctly use "__vector".
1558 2018-12-07 Vladimir Makarov <vmakarov@redhat.com>
1560 PR rtl-optimization/88349
1561 * ira-costs.c (record_operand_costs): Check bigger reg class on
1564 2018-12-07 Richard Sandiford <richard.sandiford@arm.com>
1566 * config/aarch64/aarch64-sve.md (*mul<mode>3, *v<optab><mode>3):
1567 Split the patterns after reload if we don't need the predicate
1569 (*post_ra_mul<mode>3, *post_ra_v<optab><mode>3): New patterns.
1571 2018-12-07 Richard Sandiford <richard.sandiford@arm.com>
1573 * config/aarch64/iterators.md (SVE_UNPRED_FP_BINARY): New code
1575 (sve_fp_op): Handle minus and mult.
1576 * config/aarch64/aarch64-sve.md (*add<mode>3, *sub<mode>3)
1577 (*mul<mode>3): Split the patterns after reload if we don't
1578 need the predicate operand.
1579 (*post_ra_<sve_fp_op><mode>3): New pattern.
1581 2018-12-07 Bin Cheng <bin.cheng@linux.alibaba.com>
1583 * profile-count.h (profile_count::oeprator>=): Fix typo by inverting
1584 return condition when *this is precise zero.
1586 2018-12-07 Jakub Jelinek <jakub@redhat.com>
1589 * final.c (rest_of_handle_final): Don't call collect_fn_hard_reg_usage
1590 for functions with naked attribute.
1593 * tree-vrp.c (extract_range_from_binary_expr): For POINTER_PLUS_EXPR
1594 with -fno-delete-null-pointer-checks, set_nonnull only if the pointer
1595 is non-NULL and offset is known to have most significant bit clear.
1596 * vr-values.c (vr_values::vrp_stmt_computes_nonzero): For ADDR_EXPR
1597 of MEM_EXPR, return true if the MEM_EXPR has non-zero offset with
1598 most significant bit clear. If offset does have most significant bit
1599 set and -fno-delete-null-pointer-checks, don't return true even if
1600 the base pointer is non-NULL.
1602 2018-12-06 Alexandre Oliva <aoliva@redhat.com>
1604 * cselib.c (cselib_record_sets): Skip strict low part sets
1607 2018-12-06 Paul A. Clarke <pc@us.ibm.com>
1610 * config/rs6000/smmintrin.h: New file.
1611 * config.gcc: Add smmintrin.h to extra_headers for powerpc*-*-*.
1613 2018-12-06 Paul A. Clarke <pc@us.ibm.com>
1616 * config/rs6000/mmintrin.h (_mm_unpackhi_pi8): Fix for big-endian.
1617 (_mm_unpacklo_pi8): Likewise.
1618 (_mm_mulhi_pi16): Likewise.
1619 (_mm_packs_pi16): Fix for big-endian. Use preferred API.
1620 (_mm_packs_pi32): Likewise.
1621 (_mm_packs_pu16): Likewise.
1622 * config/rs6000/xmmintrin.h (_mm_cvtss_si32): Fix for big-endian.
1623 (_mm_cvtss_si64): Likewise.
1624 (_mm_cvtpi32x2_ps): Likewise.
1625 (_mm_shuffle_ps): Likewise.
1626 (_mm_movemask_pi8): Likewise.
1627 (_mm_mulhi_pu16): Likewise.
1628 (_mm_sad_pu8): Likewise.
1629 (_mm_sad_pu8): Likewise.
1630 (_mm_cvtpu16_ps): Fix for big-endian. Use preferred API.
1631 (_mm_cvtpu8_ps): Likewise.
1632 (_mm_movemask_ps): Better #else case for big-endian (no functional
1634 (_mm_shuffle_pi16): Likewise.
1635 * config/rs6000/emmintrin.h (_mm_movemask_pd): Fix for big-endian.
1636 Better #else case for big-endian (no functional change).
1637 (_mm_movemask_epi8): Likewise.
1638 (_mm_shufflehi_epi16): Likewise.
1639 (_mm_shufflelo_epi16): Likewise.
1640 (_mm_shuffle_epi32): Likewise.
1641 (_mm_mul_epu32): Fix for big-endian.
1642 (_mm_bsrli_si128): Likewise.
1643 (_mm_cvtps_pd): Better #else case for big endian.
1644 (_mm_mulhi_epi16): Likewise.
1645 (_mm_mul_epu32): Likewise.
1646 (_mm_slli_si128): Likewise.
1647 (_mm_sll_epi16): Likewise.
1648 (_mm_sll_epi32): Likewise.
1649 (_mm_sra_epi16): Likewise.
1650 (_mm_sra_epi32): Likewise.
1651 (_mm_srl_epi16): Likewise.
1652 (_mm_srl_epi32): Likewise.
1653 (_mm_mulhi_epu16): Likewise.
1654 (_mm_sad_epu8): Likewise.
1655 * config/rs6000/pmmintrin.h (_mm_hadd_ps): Fix for big-endian.
1656 (_mm_sub_ps): Likewise.
1657 * config/rs6000/mmintrin.h (_mm_cmpeq_pi8): Fix for 32-bit mode.
1658 * gcc/config/rs6000/tmmintrin.h (_mm_alignr_epi8): Use ENDIAN
1659 macros consistently (no functional changes).
1660 (_mm_alignr_pi8): Likewise.
1662 2018-12-06 Iain Sandoe <iain@sandoe.co.uk>
1665 * config/darwin.h (TARGET_WEAK_NOT_IN_ARCHIVE_TOC) Remove, use the
1667 * config/rs6000/darwin7.h (TARGET_WEAK_NOT_IN_ARCHIVE_TOC): New.
1669 2018-12-06 Vladimir Makarov <vmakarov@redhat.com>
1672 * ira.c (ira_init_register_move_cost): Use info from
1673 hard_regno_mode_ok instead of contains_reg_of_mode.
1674 * ira-costs.c (contains_reg_of_mode): Don't use cost from bigger
1675 hard register class for some fixed hard registers.
1677 2018-12-06 Segher Boessenkool <segher@kernel.crashing.org>
1679 * doc/extend.texi (Using Assembly Language with C): Document asm inline.
1680 (Size of an asm): Fix typo. Document asm inline.
1681 * gimple-pretty-print.c (dump_gimple_asm): Handle asm inline.
1682 * gimple.h (enum gf_mask): Add GF_ASM_INLINE.
1683 (gimple_asm_set_volatile): Fix typo.
1684 (gimple_asm_inline_p): New.
1685 (gimple_asm_set_inline): New.
1686 * gimplify.c (gimplify_asm_expr): Propagate the asm inline flag from
1688 * ipa-icf-gimple.c (func_checker::compare_gimple_asm): Compare the
1689 gimple_asm_inline_p flag, too.
1690 * tree-core.h (tree_base): Document that protected_flag is ASM_INLINE_P
1692 * tree-inline.c (estimate_num_insns): If gimple_asm_inline_p return
1693 a minimum size for an asm.
1694 * tree.h (ASM_INLINE_P): New.
1696 2018-12-06 Segher Boessenkool <segher@kernel.crashing.org>
1699 * doc/extend.texi (Basic Asm): Update grammar.
1700 (Extended Asm): Update grammar.
1702 2018-12-06 Iain Sandoe <iain@sandoe.co.uk>
1705 * config/i386/darwin.h (STACK_BOUNDARY): Remove macro.
1706 * config/i386/i386.c (ix86_compute_frame_layout): Ensure at least 128b
1707 stack alignment in non-leaf functions.
1709 2018-12-06 Jakub Jelinek <jakub@redhat.com>
1712 * config/aarch64/aarch64.c (aarch64_print_address_internal): Don't
1713 call output_operand_lossage on VOIDmode CONST_INTs. After
1714 output_operand_lossage do return false.
1716 2018-12-06 Richard Biener <rguenther@suse.de>
1718 * df-problems.c (df_rd_local_compute): Use bitmap_release.
1719 (df_live_free): Likewise.
1720 (df_md_local_compute): Likewise.
1721 (df_md_free): Release df_md_scratch bitmap.
1722 * loop-invariant.c (calculate_loop_reg_pressure): Use
1724 * sched-deps.c (true_dependency_cache, output_dependency_cache,
1725 anti_dependency_cache, control_dependency_cache,
1726 spec_dependency_cache): Use bitmap instead of bitmap_head *.
1727 * sched-ebb.c (schedule_ebbs_init): Initialize non-GTY
1728 dont_calc_deps as bitmap allocated from obstack not GC.
1729 (schedule_ebbs_finish): Use bitmap_release.
1730 * sched-rgn.c (schedule_insns): Initialize non-GTY
1731 not_in_df as bitmap allocated from obstack not GC.
1733 * sel-sched.c (_forced_ebb_heads): Remove premature optimization.
1734 (sel_region_init): Allocate forced_ebb_heads.
1735 (sel_region_finish): Free forced_ebb_heads.
1737 2018-12-06 Richard Biener <rguenther@suse.de>
1739 * bitmap.c (bitmap_head::crashme): Define.
1740 * bitmap.h (bitmap_head): Add constexpr default constructor
1741 poisoning the obstack member.
1742 (bitmap_head::crashme): Declare.
1743 (bitmap_release): New function clearing a bitmap and poisoning
1745 * gengtype.c (main): Make it recognize CONSTEXPR.
1746 * lra-constraints.c (lra_inheritance): Use bitmap_release
1747 instead of bitmap_clear.
1748 * ira.c (ira): Work around class-memaccess warning.
1749 * regrename.c (create_new_chain): Likewise.
1751 2018-12-06 Jakub Jelinek <jakub@redhat.com>
1753 PR tree-optimization/85726
1754 * generic-match-head.c (optimize_successive_divisions_p): New function.
1755 * gimple-match-head.c (optimize_successive_divisions_p): Likewise.
1756 * match.pd: Don't combine successive divisions if they aren't exact
1757 and optimize_successive_divisions_p is false.
1760 * tree-nested.c (convert_nonlocal_reference_stmt): Remove clobbers
1761 for non-local automatic decls.
1763 2018-12-05 David Edelsohn <dje.gcc@gmail.com>
1765 * config/rs6000/aix72.h (ASM_DEFAULT_SPEC): Match Power7 processor
1768 2018-12-05 Uros Bizjak <ubizjak@gmail.com>
1770 * dwarf2out.c (field_byte_offset): Remove
1771 #ifdef PCC_BITFIELD_TYPE_MATTERS check.
1773 2018-12-05 Richard Biener <rguenther@suse.de>
1774 Martin Sebor <msebor@redhat.com>
1777 * calls.c (get_attr_nonstring_decl): Avoid setting *REF to
1779 * gcc/gimple-low.c (lower_stmt): Fold builtin calls here.
1780 * gimplify (maybe_fold_stmt): Avoid folding builtin calls.
1782 2018-12-05 Iain Sandoe <iain@sandoe.co.uk>
1784 * configure.ac (gcc_cv_otool): Set.
1785 * configure: Regenerate.
1787 2018-12-05 Uros Bizjak <ubizjak@gmail.com>
1789 * config/i386/cygming.h (PCC_BITFIELD_TYPE_MATTERS): Remove.
1790 (GROUP_BITFIELDS_BY_ALIGN): Ditto.
1792 2018-12-05 Richard Sandiford <richard.sandiford@arm.com>
1794 PR tree-optimization/88064
1795 * tree-vect-patterns.c (vect_convert_input): Convert the result of
1796 an existing cast if it has the right width but the wrong sign.
1797 Do not test the signedness of the required result when
1798 considering whether to split an existing cast; instead split to
1799 a type with the same signedness as the source of the cast, then
1800 convert it to the opposite signedness where necessary.
1801 (vect_recog_over_widening_pattern): Handle sign changes between
1802 the final PLUS_EXPR and the RSHIFT_EXPR.
1803 (vect_recog_average_pattern): Use an unsigned operation when
1804 truncating an addition, subtraction or multiplication. Cast the
1805 result back to the "real" signedness before promoting.
1807 2018-12-05 Richard Biener <rguenther@suse.de>
1809 PR tree-optimization/86637
1810 * tree-vectorizer.c (pass_slp_vectorize::execute): Reset
1811 vect_location at the end.
1813 2018-12-05 Jakub Jelinek <jakub@redhat.com>
1815 PR tree-optimization/87360
1816 * gimple-loop-jam.c (tree_loop_unroll_and_jam): On failure to analyze
1817 data dependencies, don't return false, just continue. Formatting
1819 (merge_loop_tree, bb_prevents_fusion_p, unroll_jam_possible_p,
1820 fuse_loops): Formatting fixes.
1823 * cfgexpand.c (expand_stack_vars): If asan_vec is empty, start with
1824 aligning frame offset to ASAN_RED_ZONE_SIZE bytes.
1826 2018-12-05 Xianmiao Qu <xianmiao_qu@c-sky.com>
1828 * config.gcc (csky-*-linux-gnu*): Force .init_array support.
1830 2018-12-05 Segher Boessenkool <segher@kernel.crashing.org>
1832 * config/rs6000/rs6000.c (rs6000_function_arg): Only do the special
1833 aggregate handling on actual AIX, not on somewhat similar systems.
1834 (rs6000_arg_partial_bytes): Ditto.
1836 2018-12-04 Vladimir Makarov <vmakarov@redhat.com>
1838 PR rtl-optimization/88317
1839 * lra-constraints.c (split_reg): Don't set up check_only_regs if
1840 we are outside the inheritance pass.
1842 2018-12-04 Jan Hubicka <hubicka@ucw.cz>
1844 * ipa-prop.c (jump_function_useful_p): New.
1845 (ipa_read_node_info): Do not allocated useless jump functions.
1847 2018-12-04 David Malcolm <dmalcolm@redhat.com>
1850 * spellcheck.c (selftest::test_suggestions): Add another assertion.
1852 2018-12-04 Martin Sebor <msebor@redhat.com>
1854 * doc/extend.texi (__builtin_has_attribute): Fix typo.
1856 2018-12-04 Jakub Jelinek <jakub@redhat.com>
1859 * config/rs6000/rs6000.c (ccr_bit): Return -1 instead of assertion
1861 (print_operand): Use REG_P instead of GET_CODE == REG.
1862 <case 'D'>: Also check CR_REGNO_P (REGNO (x)).
1863 <case 't'>: Likewise. Remove GET_MODE check.
1864 * config/rs6000/rs6000.md (scc patterns): Assert ccr_bit didn't
1867 2018-12-04 Martin Sebor <msebor@redhat.com>
1869 * doc/extend.texi (attribute aligned): Expand.
1871 2018-12-04 David Edelsohn <dje.gcc@gmail.com>
1874 * config/rs6000/rs6000.c (rs6000_function_arg): Don't pass aggregates
1876 (rs6000_arg_partial_bytes): Same.
1878 2018-12-04 Vladimir Makarov <vmakarov@redhat.com>
1881 * ira-costs.c (exec): Try bigger class to use smaller register
1884 2018-12-04 Michael Ploujnikov <michael.ploujnikov@oracle.com>
1887 * ipa-cp.c (create_specialized_node): Track clone counters by
1888 node assembler names.
1889 (ipcp_driver): Change type of clone_num_suffixes key to const char*.
1891 2018-12-04 Richard Biener <rguenther@suse.de>
1893 * tree-vect-loop.c (vect_transform_loop): Fix epilogue iterations
1894 for epilogue vectorization.
1896 2018-12-04 Richard Biener <rguenther@suse.de>
1898 PR tree-optimization/88301
1899 * tree-vrp.c (register_edge_assert_for_2): Fix sign-conversion
1900 issues in last commit.
1902 2018-12-04 Richard Biener <rguenther@suse.de>
1904 PR tree-optimization/88315
1905 * tree-vect-loop.c (get_initial_defs_for_reduction): Simplify
1906 and fix initialization vector for SAD and DOT_PROD SLP reductions.
1908 2018-12-03 Sandra Loosemore <sandra@codesourcery.com>
1911 * doc/extend.texi (Nonlocal gotos): New section.
1913 2018-12-03 Uros Bizjak <ubizjak@gmail.com>
1915 * config/i386/sse.md (vec_concatv2df): Change (v,xm,C)
1916 alternative to (v,vm,c).
1918 2018-12-03 Segher Boessenkool <segher@kernel.crashing.org>
1920 * gcc/config.gcc (Unsupported targets): Add powerpc*-*-linux*paired*.
1921 (powerpc*-*-linux*): Don't handle it here.
1923 2018-12-03 Jeff Law <law@redhat.com>
1925 * config/h8300/h8300.md (<code>qi3_1): Add gcc_unreachable to keep
1928 * config/h8300/h8300.md (low byte masking peepholes): Only accept
1929 nonimmediate_operand for the to-be-masked operand.
1931 2018-12-03 Richard Biener <rguenther@suse.de>
1933 * tree-ssa-sccvn.c (eliminate_dom_walker::eliminate_stmt): Only
1934 allow expected function-pointer cast re-instantiation.
1936 2018-12-03 Ilya Leoshkevich <iii@linux.ibm.com>
1938 * common/config/s390/s390-common.c (s390_option_init_struct):
1939 Use section anchors by default.
1940 * config/s390/s390.c (s390_check_symref_alignment): Handle
1942 (TARGET_MAX_ANCHOR_OFFSET): Use short displacement.
1943 * output.h (assemble_align): Pass `align' as unsigned int, so
1944 that the value 0x80000000, which corresponds to `aligned(1 <<
1945 28)', would pass the `align > BITS_PER_UNIT' check.
1946 * varasm.c (assemble_align): Likewise.
1948 2018-12-03 Julian Brown <julian@codesourcery.com>
1950 * tree-pretty-print.c (dump_omp_clause): Make default case
1953 2018-12-03 Richard Biener <rguenther@suse.de>
1955 PR tree-optimization/88301
1956 * tree-vrp.c (register_edge_assert_for_2): Handle conversions
1957 that do not change the value by registering the same assert
1960 2018-12-03 Richard Biener <rguenther@suse.de>
1962 * tree-vect-loop.c (vect_transform_loop): Properly compute
1963 upper bound for the epilogue when doing epilogue vectorization.
1965 2018-12-03 Ilya Leoshkevich <iii@linux.ibm.com>
1968 * cfgcleanup.c (class pass_postreload_jump): New pass.
1969 (pass_postreload_jump::execute): Likewise.
1970 (make_pass_postreload_jump): Likewise.
1971 * passes.def: Add pass_postreload_jump before
1972 pass_postreload_cse.
1973 * tree-pass.h (make_pass_postreload_jump): New pass.
1975 2018-12-02 Uros Bizjak <ubizjak@gmail.com>
1977 * config/i386/i386.c (inline_memory_move_cost): Correctly
1978 compute number of TFmode GPR moves.
1980 2018-12-02 Jakub Jelinek <jakub@redhat.com>
1983 * config/i386/sse.md (*vec_concatv4sf_0, *vec_concatv4si_0): New insns.
1985 2018-12-02 Jeff Law <law@redhat.com>
1987 * config/h8300/h8300.md (call, call_value): Drop mode from
1988 operand containing number of bytes pushed.
1989 (call_insn, call_value_insn): Use mode iterator for number
1990 of bytes pushed operand. Make pattern name vary appropriately.
1992 2018-12-02 Jan Hubicka <jh@suse.cz>
1994 * bb-reorer.c (find_rarely_executed_basic_blocks_and_crossin_edges):
1995 trust precise profiles.
1997 2018-12-02 Jakub Jelinek <jakub@redhat.com>
1999 * tree-nested.c (convert_nonlocal_omp_clauses,
2000 convert_local_omp_clauses): Handle OMP_CLAUSE_IN_REDUCTION,
2001 OMP_CLAUSE_TASK_REDUCTION and OMP_CLAUSE__SIMT_ clauses.
2002 (convert_nonlocal_reference_stmt, convert_local_reference_stmt):
2003 Convert clauses for GIMPLE_OMP_TASKGROUP.
2005 * omp-low.c (check_omp_nesting_restrictions): Allow cancel or
2006 cancellation point with taskgroup clause inside of taskloop. Consider
2007 a taskloop construct without nogroup clause as implicit taskgroup for
2008 diagnostics if cancel/cancellation point with taskgroup clause is
2009 closely nested inside of taskgroup region.
2012 * asan.c (asan_clear_shadow): Move assert that len is multiple of 4
2013 to the start of the function.
2014 (asan_emit_stack_protection): When emitting clearing sequence for
2015 epilogue, align offset down to ASAN_RED_ZONE_SIZE granularity,
2016 add last_size_aligned which is last_size padded to multiples of
2017 ASAN_RED_ZONE_SIZE and emit asan_clear_shadow always on 4 byte
2020 2018-12-01 Jakub Jelinek <jakub@redhat.com>
2023 * asan.c (asan_redzone_buffer::flush_redzone_payload): Fix up
2024 an off-by-one for BYTES_BIG_ENDIAN.
2027 * combine.c (find_split_point): For invalid memory address
2028 nonobj + obj + const, if reg + obj + const is valid addressing
2029 mode, split at nonobj. Use if rather than else if for the
2030 fallback. Comment fixes.
2032 2018-11-30 Indu Bhagat <indu.bhagat@oracle.com>
2034 * coverage.c (get_coverage_counts): Use from_function_decl for precise
2036 * profile-count.c (profile_count::dump): Add handling for precise
2038 * profile.c (compute_branch_probabilities): Rely on exec_counts instead
2039 of profile_info to set profile_status of function.
2040 (branch_prob): Do not set profile_status of function based on
2041 profile_info. Done above based on exec_counts.
2043 2018-11-30 Jakub Jelinek <jakub@redhat.com>
2045 PR tree-optimization/88274
2046 * tree-ssa-reassoc.c (optimize_range_tests_xor,
2047 optimize_range_tests_diff): If type has smaller precision than
2048 corresponding mode or if it has non-standard min/max, compute
2049 everything in a standard type for the precision.
2052 * params.def (PARAM_LOGICAL_OP_NON_SHORT_CIRCUIT): New param.
2053 * tree-ssa-ifcombine.c (ifcombine_ifandif): If
2054 --param logical-op-non-short-circuit is present, override
2055 LOGICAL_OP_NON_SHORT_CIRCUIT value from the param.
2056 * fold-const.c (fold_range_test, fold_truth_andor): Likewise.
2058 2018-11-30 Jeff Law <law@redhat.com>
2060 * optabs.c (expand_binop): Use "machine_mode" rather than
2061 "enum machine mode" in most recent change.
2063 2018-11-30 Wilco Dijkstra <wdijkstr@arm.com>
2066 * builtins.c (expand_builtin_longjmp): Use a temporary when restoring
2068 (expand_builtin_nonlocal_goto): Likewise.
2070 2018-11-30 David Malcolm <dmalcolm@redhat.com>
2072 * diagnostic-core.h (emit_diagnostic): New decl.
2073 * diagnostic.c (emit_diagnostic): New overload, taking a
2076 2018-11-30 David Malcolm <dmalcolm@redhat.com>
2078 * pretty-print.c (class selftest::test_pretty_printer): New
2079 subclass of pretty_printer.
2080 (selftest::test_prefixes_and_wrapping): New test.
2081 (selftest::pretty_print_c_tests): Call it.
2083 2018-11-30 Michael Ploujnikov <michael.ploujnikov@oracle.com>
2085 Minimize clone counter memory usage in create_virtual_clone.
2086 * cgraph.h (clone_function_name): Add a variant that takes a
2088 * cgraph.h (cgraph_node::create_virtual_clone): Add a new
2089 argument: num_suffix.
2090 * cgraphclones.c (cgraph_node::create_virtual_clone): Pass
2091 num_suffix to clone_function_name.
2092 (clone_function_name): Add a variant that takes a tree decl.
2093 * ipa-cp.c (create_specialized_node): Keep track of clone
2094 counters in clone_num_suffixes hash map.
2095 (ipcp_driver): Free the counter hash map.
2096 * ipa-hsa.c (process_hsa_functions): Creates at most one hsa
2099 2018-11-30 Michael Ploujnikov <michael.ploujnikov@oracle.com>
2100 Make function assembly more independent.
2102 This is achieved by having clone_function_name assign unique clone
2103 numbers for each function independently.
2105 * cgraphclones.c: Replaced clone_fn_id_num with clone_fn_ids;
2107 (clone_function_name_numbered): Use clone_fn_ids.
2109 2018-11-30 Vladimir Makarov <vmakarov@redhat.com>
2111 PR rtl-optimization/88179
2112 * lra-constraints.c (address_eliminator::address_eliminator):
2113 Don't eleminate regs in illegitimate address.
2115 2018-11-30 David Malcolm <dmalcolm@redhat.com>
2117 PR preprocessor/88257
2118 * input.c (get_substring_ranges_for_loc): Fix indentation.
2119 Bulletproof against getting a different files back from
2120 linemap_resolve_location and expand_location_to_spelling_point.
2122 2018-11-30 Alexander Monakov <amonakov@ispras.ru>
2124 PR gcov-profile/88279
2125 * tree-profile.c (init_ic_make_global_vars): Call
2126 decl_default_tls_model for variable and not it's type.
2128 2018-11-30 Sam Tebbs <sam.tebbs@arm.com>
2130 * config/arm/arm.h (TARGET_DOTPROD): Add TARGET_VFP5 constraint.
2132 2018-11-30 Martin Liska <mliska@suse.cz>
2135 * asan.c (asan_shadow_cst): Remove, partially transform
2136 into flush_redzone_payload.
2137 (RZ_BUFFER_SIZE): New.
2138 (struct asan_redzone_buffer): New.
2139 (asan_redzone_buffer::emit_redzone_byte): Likewise.
2140 (asan_redzone_buffer::flush_redzone_payload): Likewise.
2141 (asan_redzone_buffer::flush_if_full): Likewise.
2142 (asan_emit_stack_protection): Use asan_redzone_buffer class
2143 that is responsible for proper aligned stores and flushing
2144 of shadow memory payload.
2145 * asan.h (ASAN_MIN_RED_ZONE_SIZE): New.
2146 (asan_var_and_redzone_size): Likewise.
2147 * cfgexpand.c (expand_stack_vars): Use smaller alignment
2148 (ASAN_MIN_RED_ZONE_SIZE) in order to make shadow memory
2149 for automatic variables more compact.
2151 2018-11-30 Alan Modra <amodra@gmail.com>
2153 * config/rs6000/predicates.md (easy_fp_constant): Avoid long
2154 dependent insn sequences.
2155 * config/rs6000/rs6000.c (num_insns_constant): Support long
2157 * config/rs6000/rs6000.md (mov<mode>_softfloat <FMOVE128>): Adjust
2160 2018-11-30 Alan Modra <amodra@gmail.com>
2162 * config/rs6000/rs6000.c (num_insns_constant_gpr): Renamed from
2163 num_insns_constant_wide. Make static. Revise comment.
2164 (num_insns_constant_multi): New function.
2165 (num_insns_constant): Formatting. Correct CONST_WIDE_INT
2166 calculation. Simplify and extract code common to both
2167 CONST_INT and CONST_DOUBLE. Add gcc_unreachable for unhandled
2169 * config/rs6000/rs6000-protos.h (num_insns_const_wide): Delete.
2171 2018-11-30 Richard Biener <rguenther@suse.de>
2173 PR tree-optimization/88274
2174 * tree-vrp.c (ranges_from_anti_range): Fix handling of
2177 2018-11-29 Andi Kleen <ak@linux.intel.com>
2179 * config/i386/i386.c (current_fentry_section): Add.
2180 (x86_function_profiler): Handle fentry section.
2181 (ix86_attribute_table): Add fentry section.
2182 * config/i386/i386.opt: Add -mfentry-section.
2183 * doc/extend.texi: Document fentry_section attribute.
2184 * doc/invoke.texi: Document -mfentry-section.
2186 2018-11-29 Andi Kleen <ak@linux.intel.com>
2188 * config/i386/i386.c (x86_print_call_or_nop): Handle nop name.
2189 (current_fentry_name): Add.
2190 (x86_function_profiler): Handle fentry_name attribute.
2191 (ix86_handle_fentry_name): Add.
2192 (ix86_attribute_table): Add fentry_name.
2193 * config/i386/i386.opt: Add -mfentry-name
2194 * doc/extend.texi: Document fentry_name.
2195 * doc/invoke.texi: Document minstrument-return.
2197 2018-11-29 Andi Kleen <ak@linux.intel.com>
2199 * config/i386/i386-opts.h (enum instrument_return): Add.
2200 * config/i386/i386.c (output_return_instrumentation): Add.
2201 (ix86_output_function_return): Call output_return_instrumentation.
2202 (ix86_output_call_insn): Call output_return_instrumentation.
2203 * config/i386/i386.opt: Add -minstrument-return=.
2204 * doc/invoke.texi (-minstrument-return): Document.
2206 2018-11-29 Eric Botcazou <ebotcazou@adacore.com>
2209 * config/sparc/sparc-modes.def: Minor tweak.
2210 * config/sparc/sparc.c: Minor reordering.
2211 (sparc_pass_by_reference): Move around.
2212 (traverse_record_type): Change offset from HOST_WIDE_INT to int.
2213 (classify_registers): Likewise for bitpos.
2214 (function_arg_slotno): Remove dead test and tweak comments.
2215 <MODE_RANDOM>: Remove useless assertion and test whether the
2216 parameter is named in order to pass it in FP registers. Return
2217 the regno for floating-point vector types.
2218 (compute_int_layout): Change bitpos from HOST_WIDE_INT to int.
2219 (compute_fp_layout): Likewise.
2220 (count_registers): Likewise.
2221 (assign_int_registers): Likewise.
2222 (assign_fp_registers): Likewise.
2223 (assign_registers): Likewise.
2224 (function_arg_record_value): Change size from HOST_WIDE_INT to int
2225 and use CEIL_NWORDS to compute the number of registers.
2226 (function_arg_union_value): Minor tweaks.
2227 (function_arg_vector_value): Add slotno and named parameters, use
2228 CEIL_NWORDS to compute the number of registers.
2229 (sparc_function_arg_1): Rework handling of vector types. Change
2230 size from HOST_WIDE_INT to int.
2231 (sparc_arg_partial_bytes): Rework handling of 32-bit ABI and deal
2232 with vector types for the 64-bt ABI.
2233 (sparc_function_arg_advance): Likewise.
2234 (sparc_return_in_memory): Add reference to -fpcc-struct-return.
2235 (sparc_struct_value_rtx): Return NULL_RTX instead of 0.
2236 (sparc_function_value_1): Rework handling of vector types. Change
2237 size from HOST_WIDE_INT to int.
2239 2018-11-29 Jakub Jelinek <jakub@redhat.com>
2242 * config/i386/sse.md (*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_lt,
2243 *<sse>_movmsk<ssemodesuffix><avxsizesuffix>_zext_lt,
2244 *<sse>_movmsk<ssemodesuffix><avxsizesuffix>_shift,
2245 *<sse>_movmsk<ssemodesuffix><avxsizesuffix>_zext_shift,
2246 *<sse2_avx2>_pmovmskb_lt, *<sse2_avx2>_pmovmskb_zext_lt): New
2247 define_insn_and_split patterns.
2250 * config/i386/sse.md
2251 (*<sse4_1>_blendv<ssemodesuffix><avxsizesuffix>_lt,
2252 *<sse4_1>_blendv<ssefltmodesuffix><avxsizesuffix>_ltint,
2253 *<sse4_1_avx2>_pblendvb_lt): Change define_insn into
2254 define_insn_and_split.
2256 2018-11-29 Peter Bergner <bergner@linux.ibm.com>
2259 * config/rs6000/rs6000.c (rs6000_option_override_internal): Disallow
2260 -mabi=ieeelongdouble without both -mpopcntd and -mvsx.
2262 2018-11-29 Uros Bizjak <ubizjak@gmail.com>
2264 * config/i386/i386.c (inline_memory_move_cost):
2265 Check "in" for 2 in MMX_CLASS_P case.
2266 * config/i386/mmx.md (*mov<mode>_internal): Correct
2267 TARGET_INTER_UNIT_MOVES_FROM_VEC and TARGET_INTER_UNIT_MOVES_TO_VEC
2268 alternatives in preferred_for_speed attribute calculation.
2270 2018-11-29 Martin Sebor <msebor@redhat.com>
2274 * doc/extend.texi (attribute constructor): Clarify.
2276 2018-11-29 Martin Liska <mliska@suse.cz>
2279 * builtins.c (expand_movstr): Fix thinko introduced
2280 when switching to the new enum.
2282 2018-11-29 qing zhao <qing.zhao@oracle.com>
2284 * cif-code.def (EXTERN_LIVE_ONLY_STATIC): New CIF code.
2285 * common.opt: Add -flive-patching flag.
2286 * doc/invoke.texi: Document -flive-patching.
2287 * flag-types.h (enum live_patching_level): New enum.
2288 * ipa-inline.c (can_inline_edge_p): Disable external functions from
2289 inlining when flag_live_patching is LIVE_PATCHING_INLINE_ONLY_STATIC.
2290 * opts.c (control_options_for_live_patching): New function.
2291 (finish_options): Make flag_live_patching incompatible with flag_lto.
2292 Control IPA optimizations based on different levels of
2295 2018-11-29 Giuliano Belinassi <giuliano.belinassi@usp.br>
2297 * match.pd (sinh (atanh (x))): New simplification rules.
2298 (cosh (atanh (x))): Likewise.
2300 2018-11-29 Jakub Jelinek <jakub@redhat.com>
2303 * config/i386/sse.md (ssebytemode): Add V16SI, V8SI and V4SI entries.
2304 (ssefltmodesuffix, ssefltvecmode): New define_mode_attrs.
2305 (*<sse4_1>_blendv<ssemodesuffix><avxsizesuffix>_lt,
2306 *<sse4_1>_blendv<ssefltmodesuffix><avxsizesuffix>_ltint,
2307 *<sse4_1_avx2>_pblendvb_lt): New define_insns.
2310 * tree.h (build_uniform_cst, uniform_integer_cst_p): Declare.
2311 * tree.c (build_uniform_cst, uniform_integer_cst_p): New functions.
2312 * match.pd (define_predicates): Add uniform_integer_cst_p.
2313 (cmp @0 INTEGER_CST@1, cmp (convert?@2 @0) INTEGER_CST@1): Adjust
2314 so that it works also for vector comparisons with uniform constants
2315 with INTEGER_CST element.
2318 * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): For
2319 vec_add and vec_sub builtins, perform PLUS_EXPR or MINUS_EXPR
2320 in unsigned_type_for instead of vector integral type where overflow
2323 2018-11-29 Michael Ploujnikov <michael.ploujnikov@oracle.com>
2325 There can be at most one .resolver clone per function
2326 * config/rs6000/rs6000.c (make_resolver_func): Generate
2327 resolver symbol with clone_function_name instead of
2328 clone_function_name_numbered.
2330 2018-11-29 Richard Biener <rguenther@suse.de>
2332 PR tree-optimization/88243
2333 * tree-vect-patterns.c (vect_mark_pattern_stmts): Set the def
2334 type of all pattern-sequence stmts to vect_internal_def.
2336 2018-11-29 Andre Vieira <andre.simoesdiasvieira@arm.com>
2339 * config/arm/arm-cpus.in (armv7-r): Add FP16conv configurations.
2340 (cortex-r7, cortex-r8): Update default and add new configuration.
2341 * doc/invoke.texi (armv7-r): Add two new vfp options.
2342 (nofp.dp): Add cortex-r7 and cortex-r8 to the list of targets that
2343 support this option.
2345 2018-11-29 Alan Modra <amodra@gmail.com>
2347 * config/rs6000/rs6000.c (rs6000_emit_move): Disable long
2348 double split for targets other than Darwin.
2350 2018-11-29 Alan Modra <amodra@gmail.com>
2352 * config/rs6000/rs6000.md (movdi_internal64): Correct lengths.
2354 2018-11-29 Alan Modra <amodra@gmail.com>
2356 * config/rs6000/predicates.md (easy_fp_constant): Remove code
2357 dealing with integers in const_double. Assert on unexpected
2358 modes. Delete superfluous ABI_V4 test.
2359 * config/rs6000/rs6000.c (rs6000_emit_move): Comment fixes.
2360 Don't call easy_fp_constant for Pmode.
2361 (rs6000_hash_constant): Remove code dealing with integers in
2363 (rs6000_legitimate_constant_p): Likewise.
2364 (output_toc): Formatting, use CONST_DOUBLE_P.
2366 2018-11-29 Alan Modra <amodra@gmail.com>
2368 * config/rs6000/constraints.md (G, H): Comment on purpose of
2369 constraint. Correct mode comments and "G" mode test.
2370 * config/rs6000/rs6000.md (movdi_internal32): Remove "GH" from
2371 alternative handling "F". Add length attr. Formatting.
2372 (mov<mode>_softfloat <FMOVE128>): Delete "GH" from
2373 alternative, and move "F" to separate alternative. Correct
2376 2018-11-29 Alan Modra <amodra@gmail.com>
2378 * config/rs6000/predicates.md (easy_vector_constant): Don't call
2381 2018-11-29 Alan Modra <amodra@gmail.com>
2383 * config.in (HAVE_AS_PLTSEQ): Add.
2384 * config/rs6000/predicates.md (indirect_call_operand): New.
2385 * config/rs6000/rs6000-protos.h (rs6000_pltseq_template),
2386 (rs6000_sibcall_sysv): Declare.
2387 * config/rs6000/rs6000.c (init_cumulative_args): Set cookie
2388 CALL_LONG for -fno-plt.
2389 (print_operand <T, z, 0>): Handle UNSPEC_PLTSEQ.
2390 (rs6000_indirect_call_template_1): Emit .reloc directives for
2391 UNSPEC_PLTSEQ calls.
2392 (rs6000_pltseq_template): New function.
2393 (rs6000_longcall_ref): Add arg parameter. Use PLT16 insns if
2394 relocs supported by assembler. Move SYMBOL_REF test to callers.
2395 (rs6000_call_aix): Adjust rs6000_longcall_ref call. Package
2396 insns in UNSPEC_PLTSEQ, preserving original func_desc.
2397 (rs6000_call_sysv): Likewise.
2398 (rs6000_sibcall_sysv): New function.
2399 * config/rs6000/rs6000.h (HAVE_AS_PLTSEQ): Provide default.
2400 * config/rs6000/rs6000.md (UNSPEC_PLTSEQ, UNSPEC_PLT16_HA,
2401 UNSPEC_PLT16_LO): New.
2402 (pltseq_tocsave, pltseq_plt16_ha, pltseq_plt16_lo, pltseq_mtctr): New.
2403 (call_indirect_nonlocal_sysv): Don't differentiate zero from non-zero
2404 cookie in constraints. Test explicitly for flags in length attr.
2405 Handle unspec operand 1.
2406 (call_value_indirect_nonlocal_sysv): Likewise.
2407 (call_indirect_aix, call_value_indirect_aix): Handle unspec operand 1.
2408 (call_indirect_elfv2, call_value_indirect_elfv2): Likewise.
2409 (sibcall, sibcall_value): Use rs6000_sibcall_sysv.
2410 (sibcall_indirect_nonlocal_sysv): New pattern.
2411 (sibcall_value_indirect_nonlocal_sysv): Likewise.
2412 (sibcall_nonlocal_sysv, sibcall_value_nonlocal_sysv): Remove indirect
2414 * configure.ac: Check for gas plt sequence marker support.
2415 * configure: Regenerate.
2417 2018-11-29 Alan Modra <amodra@gmail.com>
2419 * config/rs6000/predicates.md (unspec_tls): New.
2420 * config/rs6000/rs6000-protos.h (rs6000_call_template),
2421 (rs6000_sibcall_template): Update prototype.
2422 (rs6000_longcall_ref): Delete.
2423 (rs6000_call_sysv): Declare.
2424 * config/rs6000/rs6000.c (edit_tls_call_insn): New function.
2425 (global_tlsarg): New variable.
2426 (rs6000_legitimize_tls_address): Rewrite __tls_get_addr call
2428 (print_operand): Extract UNSPEC_TLSGD address operand.
2429 (rs6000_call_template, rs6000_sibcall_template): Remove arg
2430 parameter, extract from second call operand instead.
2431 (rs6000_longcall_ref): Make static, localize vars.
2432 (rs6000_call_aix): Rename parameter to reflect new usage. Take
2433 tlsarg from global_tlsarg. Don't create unused rtl or nop insns.
2434 (rs6000_sibcall_aix): Rename parameter to reflect new usage. Take
2435 tlsarg from global_tlsarg.
2436 (rs6000_call_sysv): New function.
2437 * config/rs6000/rs6000.md: Adjust rs6000_call_template and
2438 rs6000_sibcall_template throughout.
2439 (tls_gd_aix, tls_gd_sysv, tls_gd_call_aix, tls_gd_call_sysv): Delete.
2440 (tls_ld_aix, tls_ld_sysv, tls_ld_call_aix, tls_ld_call_sysv): Delete.
2441 (tls_gdld_nomark): New insn.
2442 (tls_gd): Swap operand order. Simplify mode selection.
2443 (tls_gd_high, tls_gd_low): Swap operand order.
2444 (tls_ld): Remove const_int 0 vector element from UNSPEC_TLSLD.
2445 Simplify mode selection.
2446 (tls_ld_high, tls_ld_low): Similarly adjust UNSPEC_TLSLD.
2447 (call, call_value): Don't assert for second call operand.
2448 Use rs6000_call_sysv.
2450 2018-11-29 Alan Modra <amodra@gmail.com>
2452 * config/rs6000/darwin.md (call_indirect_nonlocal_darwin64),
2453 (call_nonlocal_darwin64, call_value_indirect_nonlocal_darwin64),
2454 (call_value_nonlocal_darwin64): Remove constraints from second call
2455 arg, the rounded_stack_size_rtx arg.
2456 * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv, tls_gd_call_aix),
2457 (tls_gd_call_sysv, tls_ld_aix, tls_ld_sysv, tls_ld_call_aix),
2458 (tls_ld_call_sysv, call_local32, call_local64, call_value_local32),
2459 (call_value_local64, call_indirect_nonlocal_sysv),
2460 (call_nonlocal_sysv, call_nonlocal_sysv_secure),
2461 (call_value_indirect_nonlocal_sysv, call_value_nonlocal_sysv),
2462 (call_value_nonlocal_sysv_secure, call_local_aix),
2463 (call_value_local_aix, call_nonlocal_aix, call_value_nonlocal_aix),
2464 (call_indirect_aix, call_value_indirect_aix, call_indirect_elfv2),
2465 (call_value_indirect_elfv2, sibcall_local32, sibcall_local64),
2466 (sibcall_value_local32, sibcall_value_local64, sibcall_aix),
2467 (sibcall_value_aix): Likewise.
2469 2018-11-29 Alan Modra <amodra@gmail.com>
2471 * config/rs6000/rs6000.md (TLSmode): Delete mode iterator. Replace
2472 with P throughout except for call mems which should use SI.
2473 (tls_abi_suffix, tls_sysv_suffix, tls_insn_suffix): Delete mode
2474 attributes. Replace with bits, mode and ptrload respectively.
2476 2018-11-29 Alan Modra <amodra@gmail.com>
2478 * config/rs6000/rs6000-protos.h (rs6000_indirect_call_template),
2479 (rs6000_indirect_sibcall_template): Declare.
2480 * config/rs6000/rs6000.c (rs6000_indirect_call_template_1),
2481 (rs6000_indirect_call_template, rs6000_indirect_sibcall_template):
2483 * config/rs6000/rs6000.md (call_indirect_nonlocal_sysv),
2484 (call_value_indirect_nonlocal_sysv, sibcall_nonlocal_sysv),
2485 (call_indirect_aix, call_value_indirect_aix): Use
2486 rs6000_indirect_call_template and rs6000_indirect_sibcall_template.
2487 call_indirect_elfv2, call_value_indirect_elfv2): Likewise, and
2488 handle both speculation and non-speculation cases.
2489 (call_indirect_aix_nospec, call_value_indirect_aix_nospec): Delete.
2490 (call_indirect_elfv2_nospec, call_value_indirect_elfv2_nospec): Delete.
2492 2018-11-29 Alan Modra <amodra@gmail.com>
2494 * config/rs6000/rs6000-protos.h (rs6000_call_template): Declare.
2495 (rs6000_sibcall_template): Declare.
2496 (macho_call_template): Rename from output_call.
2497 * config/rs6000/rs6000.c (rs6000_call_template_1): New function.
2498 (rs6000_call_template, rs6000_sibcall_template): Likewise.
2499 (macho_call_template): Rename from output_call.
2500 * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv),
2501 (tls_gd_call_aix, tls_gd_call_sysv, tls_ld_aix, tls_ld_sysv),
2502 (tls_ld_call_aix, tls_ld_call_sysv, call_nonlocal_sysv),
2503 (call_nonlocal_sysv_secure, call_value_nonlocal_sysv),
2504 (call_value_nonlocal_sysv_secure, call_nonlocal_aix),
2505 (call_value_nonlocal_aix): Use rs6000_call_template and update
2506 occurrences of output_call to macho_call_template.
2507 (sibcall_nonlocal_sysv, sibcall_value_nonlocal_sysv, sibcall_aix),
2508 (sibcall_value_aix): Use rs6000_sibcall_template.
2510 2018-11-28 Aaron Sawdey <acsawdey@linux.ibm.com>
2512 * config/rs6000/rs6000-string.c (expand_block_clear): Change how
2513 we determine if unaligned vsx is ok.
2515 2018-11-28 Jan Hubicka <jh@suse.cz>
2517 * predict.c (determine_unlikely_bbs): Forward declare; also determine
2518 edges that are always known to be taken because it is only likely
2519 edge out of given BB.
2520 (tree_estimate_probability): Call before profile guessing to get bit
2523 2018-11-28 Jan Hubicka <jh@suse.cz>
2525 * tree-ssa-ifcombine.c (update_profile_after_ifcombine): Handle
2526 profile_probability::always better.
2528 2018-11-28 Jan Hubicka <jh@suse.cz>
2530 * profile-count.h (profile_count::split): Give better result when
2531 splitting profile_probability::always.
2533 2018-11-28 Vladimir Makarov <vmakarov@redhat.com>
2536 * ira-costs.c (scan_one_insn): Process subregs when updating costs
2537 for pseudos and allocnos from insn.
2539 2018-11-28 David Edelsohn <dje.gcc@gmail.com>
2541 * config/rs6000/aix72.h: Update to match aix71.h changes.
2543 2018-11-28 Jeff Law <law@redhat.com>
2545 * config/h8300/constraints.md: Add "C" constraint for call insns.
2546 * config/h8300/h8300.md (call, call_value): Turn into a define_expand
2547 and define_insn pair. Move invalid call targets into a register in
2548 the expander and fix constraints in the matching pattern.
2549 * config/h8300/predicates.md (call_expander_operand): Renamed from
2550 call_insn_operand. Reject things we shouldn't be trying to handle.
2551 (call_insn_operand): New predicate for use by the call/call_value
2553 (small_call_insn_operand): Update appropriately.
2555 2018-11-28 Sam Tebbs <sam.tebbs@arm.com>
2557 * config/aarch64/aarch64.c (aarch64_process_target_attr): Replace
2558 calls to strtok with strtok_r.
2560 2018-11-28 Richard Biener <rguenther@suse.de>
2562 PR tree-optimization/88223
2563 * tree-ssa-sccvn.c (vn_reference_lookup_3): When skipping
2564 over a stored-same value may-alias store make sure to consider
2565 partial overlaps which are valid when TBAA reasonings do not
2566 apply and byte-granular overlaps are possible at all.
2568 2018-11-28 Richard Biener <rguenther@suse.de>
2570 PR tree-optimization/88217
2571 * vr-values.c (vr_values::extract_range_from_phi_node): Make
2572 sure to handle results > +INF and < -INF correctly when
2573 trying to drop down to +INF - 1 or -INF + 1.
2575 2018-11-28 Alan Modra <amodra@gmail.com>
2577 * xcoffout.c (do_block): Signed/unsigned warning fix.
2579 2018-11-28 Richard Biener <rguenther@suse.de>
2581 PR tree-optimization/79351
2582 * tree-ssa-sccvn.c (vn_reference_lookup_3): For assignments from
2583 empty CONSTRUCTORs ensure the store is at a constant position.
2585 2018-11-28 Richard Biener <rguenther@suse.de>
2587 PR tree-optimization/88229
2588 * tree-ssa.c (non_rewritable_mem_ref_base): Check DECL_SIZE_UNIT
2589 is an INTEGER_CST before accessing it so.
2591 2018-11-28 Sam Tebbs <sam.tebbs@arm.com>
2593 * doc/invoke.texi (-mtune=): Remove obsolete CPU names.
2595 2018-11-28 Jakub Jelinek <jakub@redhat.com>
2598 * config/i386/i386.c (ix86_expand_sse_movcc): Handle DFmode and
2599 SFmode using sse4_1_blendvs[sd] with TARGET_SSE4_1. Formatting fixes.
2600 * config/i386/sse.md (sse4_1_blendv<ssemodesuffix>): New pattern.
2602 2018-11-27 Martin Liska <mliska@suse.cz>
2604 * gcov.c (generate_results): Append current_working_directory
2607 2018-11-27 Mike Gulick <mgulick@mathworks.com>
2609 PR preprocessor/83173
2610 * input.c (dump_location_info): Dump reason and included_from
2611 fields from line_map_ordinary struct. Fix indentation when
2612 location > 5 digits.
2613 * diagnostic-show-locus.c (num_digits, num_digits): Move to
2614 diagnostic.c to allow it to be utilized by input.c.
2615 * diagnostic.c (num_digits, selftest::test_num_digits): Moved
2617 (selftest::diagnostic_c_tests): Run selftest::test_num_digits.
2618 * diagnostic.h (num_digits): Add extern definition.
2620 2018-11-27 Fredrik Noring <noring@nocrew.org>
2622 * config/mips/mips.c (mips_reorg_process_insns)
2623 (mips_option_override): Handle `-mfix-r5900'.
2624 * config/mips/mips.h (ASM_SPEC): Add `mfix-r5900' and
2626 * config/mips/mips.opt (mfix-r5900): New option.
2627 * doc/invoke.texi: Document the `r5900' processor name, and
2628 `-mfix-r5900' and `-mno-fix-r5900' options.
2630 2018-11-27 Jakub Jelinek <jakub@redhat.com>
2633 * config/rs6000/rs6000.c (print_operand) <case 'D'>: Use
2634 output_operand_lossage instead of gcc_assert.
2635 <case 't'>: Likewise.
2636 <case 'z'>: Likewise.
2637 <case 'V'>: Use output_operand_lossage instead of gcc_unreachable.
2639 2018-11-27 Jeff Law <law@redhat.com>
2641 * config/riscv/riscv (riscv_block_mvoe_straight): Use RETURN_BEGIN
2642 in call to move_by_pieces.
2644 * config/sh/sh-mem.c (expand_block_move): Use RETURN_BEGIN in call
2647 * config/lm32/lm32.c (lm32_block_move_inline): Use RETURN_BEGIN in
2648 call to move_by_pieces.
2650 * config/mips/mips.c (mips_block_move_straight): Use RETURN_BEGIN
2651 in call to move_by_pieces.
2653 * config/microblaze/microblaze.c (microblaze_block_move_straight): Use
2654 RETURN_BEGIN in call to move_by_pieces.
2655 (microblaze_expand_block_move): Likewise.
2657 2018-11-27 Tamar Christina <tamar.christina@arm.com>
2659 * doc/md.texi (xorsign): Document it.
2661 2018-11-27 Martin Liska <mliska@suse.cz>
2663 * config/gnu-user.h (TARGET_F951_OPTIONS): New.
2664 * gcc.c (find_fortran_preinclude_file): New function
2665 to handle Fortran pre-include.
2667 2018-11-27 Martin Liska <mliska@suse.cz>
2669 * asan.c (asan_emit_stack_protection): Use new enum values
2670 instead of int constants.
2671 * builtins.c (expand_builtin_memory_copy_args): Replace int
2672 type with memop_ret enum type.
2673 (expand_builtin_mempcpy_args): Likewise.
2674 (expand_builtin_memcpy): Use new enum values
2675 instead of int constants. Likewise.
2676 (expand_builtin_mempcpy): Likewise.
2677 (expand_movstr): Likewise.
2678 (expand_builtin_strcpy_args): Likewise.
2679 (expand_builtin_stpcpy_1): Likewise.
2680 (expand_builtin_strncpy): Likewise.
2681 (expand_builtin_memset_args): Likewise.
2682 * expr.c (move_by_pieces_d::finish_endp): Rename to ...
2683 (move_by_pieces_d::finish_retmode): ... this.
2684 (move_by_pieces): Change last argument type to memop_ret.
2685 (store_by_pieces): Use new enum values
2686 instead of int constants.
2687 (emit_block_move_hints): Likewise.
2688 (emit_push_insn): Likewise.
2689 (store_expr): Likewise.
2690 * expr.h (store_by_pieces): Change int to newly added enum
2692 * rtl.h (enum memop_ret): Define.
2693 (move_by_pieces): Use the enum type.
2695 2018-11-27 Alan Modra <amodra@gmail.com>
2697 * config/rs6000/aix71.h (ASM_SPEC): Don't select default -maix64
2699 (ASM_CPU_SPEC): Do so here. Rewrite using if .. else if .. specs
2700 form. Error on missing -mcpu case.
2701 * config/rs6000/driver-rs6000.c (asm_names <_AIX>): Update NULL case.
2702 (asm_names <!_AIX>): Add missing cpus. Update NULL case. Apply
2703 PR63177 fix for -mcpu=power8 and -mcpu=powerpc64le.
2704 * config/rs6000/rs6000.h (ASM_CPU_SPEC): Rewrite using if ..
2705 else if .. specs form. Error on missing -mcpu case. Don't output
2706 duplicate -maltivec. Apply PR63177 fix for -mcpu=powerpc64le.
2708 2018-11-26 David Malcolm <dmalcolm@redhat.com>
2710 * dump-context.h (dump_context::dump_loc): Convert 1st param from
2711 dump_flags_t to const dump_metadata_t &. Convert 2nd param from
2712 const dump_location_t & to const dump_user_location_t &.
2713 (dump_context::dump_loc_immediate): Convert 2nd param from
2714 const dump_location_t & to const dump_user_location_t &.
2715 (dump_context::dump_gimple_stmt): Convert 1st param from
2716 dump_flags_t to const dump_metadata_t &.
2717 (dump_context::void dump_gimple_stmt_loc): Likewise; convert
2718 2nd param from const dump_location_t & to
2719 const dump_user_location_t &.
2720 (dump_context::dump_gimple_expr): Convert 1st param from
2721 dump_flags_t to const dump_metadata_t &.
2722 (dump_context::dump_gimple_expr_loc): Likewise; convert
2723 2nd param from const dump_location_t & to
2724 const dump_user_location_t &.
2725 (dump_context::dump_generic_expr): Convert 1st param from
2726 dump_flags_t to const dump_metadata_t &.
2727 (dump_context::dump_generic_expr_loc): Likewise; convert
2728 2nd param from const dump_location_t & to
2729 const dump_user_location_t &.
2730 (dump_context::dump_printf_va): Convert 1st param from
2731 dump_flags_t to const dump_metadata_t &.
2732 (dump_context::dump_printf_loc_va): Likewise; convert
2733 2nd param from const dump_location_t & to
2734 const dump_user_location_t &.
2735 (dump_context::dump_dec): Convert 1st param from
2736 dump_flags_t to const dump_metadata_t &.
2737 (dump_context::dump_symtab_node): Likewise.
2738 (dump_context::begin_scope): Split out 2nd param into
2739 user and impl locations.
2740 (dump_context::ensure_pending_optinfo): Add metadata param.
2741 (dump_context::begin_next_optinfo): Replace dump_location_t param
2742 with metadata and user location.
2743 * dumpfile.c (dump_context::dump_loc): Convert 1st param from
2744 dump_flags_t to const dump_metadata_t &. Convert 2nd param from
2745 const dump_location_t & to const dump_user_location_t &.
2746 (dump_context::dump_loc_immediate): Convert 2nd param from
2747 const dump_location_t & to const dump_user_location_t &.
2748 (dump_context::dump_gimple_stmt): Convert 1st param from
2749 dump_flags_t to const dump_metadata_t &.
2750 (dump_context::void dump_gimple_stmt_loc): Likewise; convert
2751 2nd param from const dump_location_t & to
2752 const dump_user_location_t &.
2753 (dump_context::dump_gimple_expr): Convert 1st param from
2754 dump_flags_t to const dump_metadata_t &.
2755 (dump_context::dump_gimple_expr_loc): Likewise; convert
2756 2nd param from const dump_location_t & to
2757 const dump_user_location_t &.
2758 (dump_context::dump_generic_expr): Convert 1st param from
2759 dump_flags_t to const dump_metadata_t &.
2760 (dump_context::dump_generic_expr_loc): Likewise; convert
2761 2nd param from const dump_location_t & to
2762 const dump_user_location_t &.
2763 (dump_context::dump_printf_va): Convert 1st param from
2764 dump_flags_t to const dump_metadata_t &.
2765 (dump_context::dump_printf_loc_va): Likewise; convert
2766 2nd param from const dump_location_t & to
2767 const dump_user_location_t &.
2768 (dump_context::dump_dec): Convert 1st param from
2769 dump_flags_t to const dump_metadata_t &.
2770 (dump_context::dump_symtab_node): Likewise.
2771 (dump_context::begin_scope): Split out 2nd param into
2772 user and impl locations.
2773 (dump_context::ensure_pending_optinfo): Add metadata param.
2774 (dump_context::begin_next_optinfo): Replace dump_location_t param
2775 with metadata and user location.
2776 (dump_gimple_stmt): Convert 1st param from dump_flags_t to
2777 const dump_metadata_t &.
2778 (dump_gimple_stmt_loc): Likewise; convert 2nd param from
2779 const dump_location_t & to const dump_user_location_t &.
2780 (dump_gimple_expr): Convert 1st param from dump_flags_t to
2781 const dump_metadata_t &.
2782 (dump_gimple_expr_loc): Likewise; convert 2nd param from
2783 const dump_location_t & to const dump_user_location_t &.
2784 (dump_generic_expr): Convert 1st param from dump_flags_t to
2785 const dump_metadata_t &.
2786 (dump_generic_expr_loc): Likewise; convert 2nd param from
2787 const dump_location_t & to const dump_user_location_t &.
2788 (dump_printf): Convert 1st param from dump_flags_t to
2789 const dump_metadata_t &.
2790 (dump_printf_loc): Likewise; convert 2nd param from
2791 const dump_location_t & to const dump_user_location_t &.
2792 (dump_dec): Convert 1st param from dump_flags_t to
2793 const dump_metadata_t &.
2794 (dump_symtab_node): Likewise.
2795 (dump_begin_scope): Split out 2nd param into user and impl
2797 (selftest::assert_impl_location_eq): New function.
2798 (ASSERT_IMPL_LOCATION_EQ): New macro.
2799 (selftest::test_impl_location): Update to use
2800 ASSERT_IMPL_LOCATION_EQ.
2801 (selftest::test_capture_of_dump_calls): Convert "loc" to
2802 dump_user_location_t. Add ASSERT_IMPL_LOCATION_EQ throughout,
2803 verifying line numbers of dump emissions.
2804 * dumpfile.h (class dump_metadata_t): New class.
2805 (dump_printf): Convert 1st param from dump_flags_t to
2806 const dump_metadata_t &.
2807 (dump_printf_loc): Likewise; convert 2nd param from
2808 const dump_location_t & to const dump_user_location_t &.
2809 (dump_generic_expr_loc): Likewise.
2810 (dump_generic_expr): Convert 1st param from dump_flags_t to
2811 const dump_metadata_t &.
2812 (dump_gimple_stmt_loc): Likewise; convert 2nd param from
2813 const dump_location_t & to const dump_user_location_t &.
2814 (dump_gimple_stmt): Convert 1st param from dump_flags_t to
2815 const dump_metadata_t &.
2816 (dump_gimple_expr_loc): Likewise; convert 2nd param from
2817 const dump_location_t & to const dump_user_location_t &.
2818 (dump_gimple_expr): Convert 1st param from dump_flags_t to
2819 const dump_metadata_t &.
2820 (dump_symtab_node): Likewise.
2821 (dump_dec): Likewise.
2822 (dump_begin_scope): Split out 2nd param into user and impl
2824 (auto_dump_scope::auto_dump_scope): Split "loc" param into a user
2825 location and impl_location, and capture the impl_location.
2826 (AUTO_DUMP_SCOPE): Rename param from LOC to USER_LOC.
2827 * loop-unroll.c (report_unroll): Update for changes to
2828 dump_printf_loc and dump_printf.
2829 * opt-problem.cc (opt_problem::opt_problem): Update for change to
2831 * optinfo-emit-json.cc
2832 (selftest::test_building_json_from_dump_calls): Convert "loc" from
2833 dump_location_t to dump_user_location_t.
2834 * optinfo.cc (optinfo::emit_for_opt_problem): Update for change in
2836 * profile.c (compute_branch_probabilities): Update for change to
2838 * selftest.h (ASSERT_STR_CONTAINS_AT): New macro.
2839 * tree-vect-slp.c (vect_print_slp_tree): Update for change to
2842 2018-11-27 Jozef Lawrynowicz <jozef.l@mittosystems.com>
2844 * doc/sourcebuild.texi: Document check_effective_target_int_eq_float
2845 and check_effective_target_ptr_eq_long.
2847 2018-11-27 Alan Modra <amodra@gmail.com>
2849 * config.gcc (powerpc*-*-freebsd*, powerpc-*-netbsd*),
2850 (powerpc-*-eabisimaltivec*, powerpc-*-eabisim*, powerpc-*-elf*),
2851 (powerpc-*-eabialtivec*, powerpc-*-eabi*, powerpc-*-rtems*),
2852 (powerpc-wrs-vxworks*, powerpc-*-lynxos*, powerpcle-*-elf*),
2853 (powerpcle-*-eabisim*, powerpcle-*-eabi*): Add gnu-user.h to tm_file.
2854 * config/rs6000/freebsd.h (CPLUSPLUS_CPP_SPEC),
2855 (LINK_GCC_C_SEQUENCE_SPEC): Undef.
2856 (ASM_APP_ON, ASM_APP_OFF): Don't define.
2857 * config/rs6000/freebsd64.h (ASM_APP_ON, ASM_APP_OFF): Don't define.
2858 * config/rs6000/lynx.h (ASM_APP_ON, ASM_APP_OFF): Don't define.
2859 * config/rs6000/linux64.h (LINK_GCC_C_SEQUENCE_SPEC): Define.
2860 * config/rs6000/netbsd.h (CPLUSPLUS_CPP_SPEC),
2861 (LINK_GCC_C_SEQUENCE_SPEC): Undef.
2862 * config/rs6000/rtems.h (LINK_GCC_C_SEQUENCE_SPEC): Define.
2863 * config/rs6000/sysv4.h (GNU_USER_TARGET_CRTI): Redefine.
2864 (GNU_USER_TARGET_CRTN): Redefine.
2865 (CC1_SPEC): Use GNU_USER_TARGET_CC1_SPEC.
2866 (LIB_LINUX_SPEC): Use GNU_USER_TARGET_LIB_SPEC.
2867 (CRTOFFLOADBEGIN, CRTOFFLOADEND): Don't define.
2868 (STARTFILE_LINUX_SPEC): Define as GNU_USER_TARGET_STARTFILE_SPEC.
2869 (ENDFILE_LINUX_SPEC): Define as GNU_USER_TARGET_ENDFILE_SPEC.
2870 (UCLIBC_DYNAMIC_LINKER, CHOOSE_DYNAMIC_LINKER): Don't define.
2871 (LINK_EH_SPEC): Don't define.
2873 2018-11-26 Martin Sebor <msebor@redhat.com>
2876 * expr.c (string_constant): Handle top-level decls of all character
2877 types and subobjects of narrow character type.
2879 2018-11-27 Alan Modra <amodra@gmail.com>
2881 * config.gcc (powerpc*-*-linux*): Add linux.h to tm_file.
2882 * config/rs6000/linux.h (TARGET_OS_CPP_BUILTINS): Use
2883 GNU_USER_TARGET_OS_CPP_BUILTINS.
2884 (RS6000_ABI_NAME): Define.
2885 * config/rs6000/linux64.h (TARGET_OS_CPP_BUILTINS): Use
2886 GNU_USER_TARGET_OS_CPP_BUILTINS.
2887 (MUSL_DYNAMIC_LINKER32): Undef before defining.
2888 (UCLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER64): Don't define.
2889 (CHOOSE_DYNAMIC_LINKER): Don't define.
2890 (GNU_USER_DYNAMIC_LINKER32, GNU_USER_DYNAMIC_LINKER64): Don't define.
2891 * config/rs6000/sysv4.h (MUSL_DYNAMIC_LINKER): Undef before defining.
2892 (CHOOSE_DYNAMIC_LINKER, GNU_USER_DYNAMIC_LINKER): Only define when
2893 not already defined.
2894 (CPP_OS_LINUX_SPEC): Remove defines and asserts handled by
2895 TARGET_OS_CPP_BUILTINS.
2897 2018-11-26 Jozef Lawrynowicz <jozef.l@mittosystems.com>
2899 * doc/sourcebuild.texi: Document check_effective_target_newlib_nano_io.
2901 2018-11-26 Jakub Jelinek <jakub@redhat.com>
2904 * config/i386/i386.c (def_builtin2): If tcode == VOID_FTYPE_UINT64
2905 and !TARGET_64BIT, return NULL_TREE.
2908 * dwarf2out.c (secname_for_decl): For functions with
2909 DECL_SECTION_NAME if in_cold_section_p, try to return
2910 current_function_section's name if it is a named section.
2912 2018-11-26 Maya Rashish <coypu@sdf.org>
2915 * config.host (*-*-netbsd*): Use x-netbsd and host-netbsd.o.
2916 * config/x-netbsd: New file.
2917 * config/host-netbsd: New file.
2919 2018-11-26 Jozef Lawrynowicz <jozef.l@mittosystems.com>
2921 * doc/sourcebuild.texi: Document check_effective_target_size20plus.
2922 Clarify documentation for check_effective_target_size32plus.
2924 2018-11-26 Aaron Sawdey <acsawdey@linux.ibm.com>
2926 * config/rs6000/rs6000-string.c (expand_cmp_vec_sequence): Rename
2927 and modify expand_strncmp_vec_sequence.
2928 (emit_final_compare_vec): Rename and modify emit_final_str_compare_vec.
2929 (generate_6432_conversion): New function.
2930 (expand_block_compare): Add support for vsx.
2931 (expand_block_compare_gpr): New function.
2932 * config/rs6000/rs6000.opt (rs6000_block_compare_inline_limit): Increase
2933 default limit to 63 because of more compact vsx code.
2935 2018-11-26 Uros Bizjak <ubizjak@gmail.com>
2938 * config/i386/i386.c (dbx_register_map): Use IGNORED_DWARF_REGNUM
2939 for registers for which no debug information can be generated.
2940 Use INVALID_REGNUM for non-existent registers.
2941 (dbx64_register_map): Ditto.
2942 (svr4_dbx_register_map): Ditto.
2944 2018-11-26 Sandra Loosemore <sandra@codesourcery.com>
2947 * doc/invoke.texi (Optimize Options): Document that
2948 -freorder-functions also uses "hot" and "cold" attributes.
2950 2018-11-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2952 * config/aarch64/aarch64.c (aarch64_mangle_type): Fix typo in comment.
2954 2018-11-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2956 * config/arm/types.md (mul64): Rename to...
2957 (widen_mul64): ... This.
2958 * config/arm/arm-generic.md: Rename mul64 to widen_mul64.
2959 * config/arm/cortex-a15.md: Likewise.
2960 * config/arm/cortex-a5.md: Likewise.
2961 * config/arm/cortex-a53.md: Likewise.
2962 * config/arm/cortex-a57.md: Likewise.
2963 * config/arm/cortex-a7.md: Likewise.
2964 * config/arm/cortex-m4.md: Likewise.
2965 * config/arm/exynos-m1.md: Likewise.
2966 * config/arm/marvell-pj4.md: Likewise.
2967 * config/arm/xgene1.md: Likewise.
2969 2018-11-26 Richard Biener <rguenther@suse.de>
2971 PR tree-optimization/88182
2972 * tree-vect-loop.c (vectorizable_reduction): Pick up single
2973 correct reduc_def_info.
2974 * tree-vect-slp.c (vect_analyze_slp_instance): Set
2975 STMT_VINFO_REDUC_DEF of the first stmt.
2977 2018-11-26 Andreas Krebbel <krebbel@linux.ibm.com>
2979 * doc/invoke.texi: Document z14/arch12 -march option.
2981 2018-11-25 Sandra Loosemore <sandra@codesourcery.com>
2984 * doc/invoke.texi (Option Summary): Add -Wmissing-noreturn.
2985 (Warning Options): Likewise.
2987 2018-11-25 Sandra Loosemore <sandra@codesourcery.com>
2990 * doc/extend.texi (Common Function Attributes): Clarify that
2991 functions with "const" attribute can read const global variables.
2993 2018-11-26 Alan Modra <amodra@gmail.com>
2995 * config/rs6000/rs6000.h (OBJECT_PEF, TARGET_MACOS): Delete.
2997 2018-11-25 Sandra Loosemore <sandra@codesourcery.com>
3000 * doc/extend.texi (Common Variable Attributes): Use preferred
3001 placement of type attributes in examples, plus whitespace fixes.
3002 (Type Attributes): Clarify why placement of attributes
3003 immediately after struct/union/enum keyword is preferred.
3004 (Common Type Attributes): Use preferred placement of type
3005 attributes in examples, plus more whitespace fixes.
3007 2018-11-25 Paul Koning <ni1d@arrl.net>
3009 * config/pdp11/pdp11.h (TARGET_HAS_NO_HW_DIVIDE): Define.
3011 2018-11-25 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
3013 * doc/sourcebuild.texi (Effective-Target Keywords, Environment
3014 attributes): Document d_runtime.
3016 2018-11-25 Vladimir Makarov <vmakarov@redhat.com>
3019 * ira-costs.c (record_operand_costs): Initiate register move cost
3022 2018-11-23 Jeff Law <law@redhat.com>
3024 PR rtl-optimization/87468
3025 * tree-ssa-threadupdate.c (create_block_for_threading): Clear
3026 EDGE_IGNORE on all outgoing edges of the duplicate block.
3028 2018-11-23 Vladimir Makarov <vmakarov@redhat.com>
3031 * ira-costs.c (record_operand_costs): Use bigger hard reg class if
3032 its mode does not fit to the original class.
3034 2018-11-23 Martin Sebor <msebor@redhat.com>
3036 PR tree-optimization/87756
3037 * expr.c (string_constant): Synthesize a string literal from
3038 the address of a constant character.
3039 * tree.c (build_string_literal): Add an argument.
3040 * tree.h (build_string_literal): Same.
3042 2018-11-23 Christoph Muellner <christoph.muellner@theobroma-systems.com>
3044 * config/aarch64/aarch64-cores.def: Define emag.
3045 * config/aarch64/aarch64-tune.md: Regenerated with emag.
3046 * config/aarch64/aarch64.c (emag_tunings): New struct.
3047 * doc/invoke.texi: Document mtune value.
3049 2018-11-23 Christoph Muellner <christoph.muellner@theobroma-systems.com>
3050 Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
3052 * config/aarch64/aarch64.c (xgene1_tunings): Optimize Xgene1 tunings
3054 * config/aarch64/aarch64.c (xgene1_tunings): Add Xgene1 specific
3056 * config/aarch64/aarch64.c (xgene1_addrcost_table): Correct the post-modify
3058 * config/arm/aarch-cost-tables.h (xgene1_extra_costs): Update the cost table
3061 2018-11-23 Richard Biener <rguenther@suse.de>
3063 PR tree-optimization/88149
3064 * tree-vect-slp.c (vect_slp_analyze_node_operations): Detect
3065 the case where there are two different def types for the
3066 same operand at different operand position in the same stmt.
3068 2018-23-11 Mihail Ionescu <mihail.ionescu@arm.com>
3070 * config/arm/arm.c (arm_expand_compare_and_swap): Simplify and call
3071 gen_atomic_compare_swap_1.
3072 (arm_evpc_neon_vuzp): Likewise gen_neon_vuzp_internal.
3073 (arm_evpc_neon_vtrn): Likewise gen_neon_vtrn_internal.
3074 (arm_evpc_neon_vext): Likewise gen_neon_vext_internal.
3075 (arm_evpc_neon_vzip): Likewise gen_neon_vzip_internal.
3076 (arm_evpc_neon_vrev): Replace the function pointer and simplify the mode
3078 * config/arm/arm.md (neon_vext<mode>),
3079 (neon_vrev64<mode>, neon_vrev32<mode>),
3080 (neon_vrev16<mode>, neon_vtrn<mode>_internal),
3081 (neon_vzip<mode>_internal, neon_vuzp<mode>_internal): Add an '@'character
3082 before the pattern name.
3083 * config/arm/sync.md:
3084 (atomic_compare_and_swap<CCSI:arch><NARROW:mode>_1),
3085 (atomic_compare_and_swap<CCSI:arch><SIDI:mode>_1): Likewise.
3087 2018-11-23 Jakub Jelinek <jakub@redhat.com>
3089 PR tree-optimization/86614
3090 * gimple-ssa-warn-restrict.c (maybe_diag_offset_bounds): Return early
3091 if TREE_NO_WARNING is set on ref.ref.
3093 2018-11-22 Sandra Loosemore <sandra@codesourcery.com>
3094 Alan Coopersmith <alan.coopersmith@oracle.com>
3097 * doc/extend.texi (Designated Inits): Clarify handling of multiple
3098 initializers for unions.
3100 2018-11-22 Jan Hubicka <jh@suse.cz>
3103 * ipa-devirt.c (type_variants_equivalent_p): Drop warn and warned
3104 parameters; do not warn here.
3105 (odr_subtypes_equivalent_p): Likewise.
3106 (warn_odr): Fix typo.
3107 (warn_types_mismatch): Do not output confused warnings on integer types.
3108 (odr_types_equivalent_p): Update.
3110 2018-11-22 Jakub Jelinek <jakub@redhat.com>
3112 * config/i386/i386.c (ix86_option_override_internal,
3113 ix86_can_inline_p, classify_argument, construct_container,
3114 ix86_expand_prologue, ix86_expand_split_stack_prologue,
3115 ix86_expand_carry_flag_compare, expand_set_or_movmem_via_loop,
3116 expand_setmem_epilogue_via_loop, promote_duplicated_reg,
3117 ix86_expand_set_or_movmem, ix86_init_builtins_va_builtins_abi):
3120 * config/i386/i386.c (ix86_option_override_internal): For
3121 stack_protector_guard related options, use opts_set->x_ instead
3122 of global_options_set. and prefix options with opts->x_ . Move
3123 defaults for offset and reg into else block.
3125 2018-11-22 Uros Bizjak <ubizjak@gmail.com>
3127 * config/i386/i386.c (ix86_check_avx_upper_register):
3128 Return true for all SSE registers with mode bitsize > 128.
3130 2018-11-22 Vladimir Makarov <vmakarov@redhat.com>
3132 PR rtl-optimization/87718
3133 * ira-costs.c: Remove trailing white-spaces.
3134 (record_operand_costs): Add a special treatment for moves
3135 involving a hard register.
3137 2018-11-22 Uros Bizjak <ubizjak@gmail.com>
3139 * config/i386/i386.c (ix86_avx_emit_vzeroupper): Remove.
3140 (ix86_emit_mode_set) <case AVX_U128>: Emit vzeroupper here.
3142 2018-11-22 Martin Liska <mliska@suse.cz>
3144 * common/config/i386/i386-common.c (processor_names): Add
3145 static assert and add missing "znver2".
3146 (ix86_get_valid_option_values): Add checking assert for null
3147 values and add "native" value if feasible.
3148 * config/i386/i386.h: Do not declare size of processor_names.
3149 * common/config/i386/i386-common.c:
3150 * config/i386/i386.c: Add static assert for size
3151 of processor_cost_table.
3153 2018-11-22 Thomas Preud'homme <thomas.preudhomme@linaro.org>
3155 * target-insns.def (stack_protect_combined_set): Define new standard
3157 (stack_protect_combined_test): Likewise.
3158 * cfgexpand.c (stack_protect_prologue): Try new
3159 stack_protect_combined_set pattern first.
3160 * function.c (stack_protect_epilogue): Try new
3161 stack_protect_combined_test pattern first.
3162 * config/arm/arm.c (require_pic_register): Add pic_reg and compute_now
3163 parameters to control which register to use as PIC register and force
3164 reloading PIC register respectively. Insert in the stream of insns if
3166 (legitimize_pic_address): Expose above new parameters in prototype and
3167 adapt recursive calls accordingly. Use pic_reg if non null instead of
3169 (arm_load_pic_register): Add pic_reg parameter and use it if non null.
3170 (arm_legitimize_address): Adapt to new legitimize_pic_address
3172 (thumb_legitimize_address): Likewise.
3173 (arm_emit_call_insn): Adapt to require_pic_register prototype change.
3174 (arm_expand_prologue): Adapt to arm_load_pic_register prototype change.
3175 (thumb1_expand_prologue): Likewise.
3176 * config/arm/arm-protos.h (legitimize_pic_address): Adapt to prototype
3178 (arm_load_pic_register): Likewise.
3179 * config/arm/predicated.md (guard_addr_operand): New predicate.
3180 (guard_operand): New predicate.
3181 * config/arm/arm.md (movsi expander): Adapt to legitimize_pic_address
3183 (builtin_setjmp_receiver expander): Adapt to thumb1_expand_prologue
3185 (stack_protect_combined_set): New expander..
3186 (stack_protect_combined_set_insn): New insn_and_split pattern.
3187 (stack_protect_set_insn): New insn pattern.
3188 (stack_protect_combined_test): New expander.
3189 (stack_protect_combined_test_insn): New insn_and_split pattern.
3190 (arm_stack_protect_test_insn): New insn pattern.
3191 * config/arm/thumb1.md (thumb1_stack_protect_test_insn): New insn pattern.
3192 * config/arm/unspecs.md (UNSPEC_SP_SET): New unspec.
3193 (UNSPEC_SP_TEST): Likewise.
3194 * doc/md.texi (stack_protect_combined_set): Document new standard
3196 (stack_protect_set): Clarify that the operand for guard's address is
3198 (stack_protect_combined_test): Document new standard pattern name.
3199 (stack_protect_test): Clarify that the operand for guard's address is
3202 2018-11-22 Richard Biener <rguenther@suse.de>
3204 PR tree-optimization/88148
3205 * tree-ssa-loop-niter.c (simplify_replace_tree): Get optional
3206 valueization callback parameter and handle it.
3207 * tree-ssa-loop-niter.h (simplify_replace_tree): Export.
3208 * tree-ssa-sccvn.c (process_bb): Eliminate in loop niter trees.
3210 2018-11-22 Richard Biener <rguenther@suse.de>
3214 * lto-streamer-out.c (lto_is_streamable): Allow CALL_EXPRs
3215 which can appear in size expressions.
3216 * tree-streamer-in.c (unpack_ts_base_value_fields): Stream
3217 CALL_EXPR_BY_DESCRIPTOR.
3218 (streamer_read_tree_bitfields): Stream CALL_EXPR_IFN.
3219 * tree-streamer-out.c (pack_ts_base_value_fields): Stream
3220 CALL_EXPR_BY_DESCRIPTOR.
3221 (streamer_write_tree_bitfields): Stream CALL_EXPR_IFN.
3225 * tree.c (free_lang_data_in_one_sizepos): Free non-gimple-val
3228 2018-11-22 Richard Biener <rguenther@suse.de>
3230 PR tree-optimization/88069
3231 * tree-ssa-sccvn.c (visit_phi): Tweak previous fix to not
3232 apply to default defs.
3234 2018-11-22 Jakub Jelinek <jakub@redhat.com>
3238 * config/i386/i386.c (ix86_option_override_internal): Default
3239 ix86_stack_protector_guard to SSP_TLS only if TARGET_THREAD_SSP_OFFSET
3241 * config/i386/i386.md (stack_protect_set, stack_protect_set_<mode>,
3242 stack_protect_test, stack_protect_test_<mode>): Use empty condition
3243 instead of TARGET_SSP_TLS_GUARD.
3245 2018-11-22 Martin Liska <mliska@suse.cz>
3248 * config/i386/i386.c (ix86_option_override_internal): Error
3249 about usage -mabi=ms and -fsanitize=thread.
3251 2018-11-21 Uros Bizjak <ubizjak@gmail.com>
3254 2013-10-26 Vladimir Makarov <vmakarov@redhat.com>
3257 2013-10-25 Vladimir Makarov <vmakarov@redhat.com>
3259 * lra-spills.c (lra_final_code_change): Remove useless move insns.
3261 2018-11-21 Uros Bizjak <ubizjak@gmail.com>
3264 * function.c (expand_function_end): Do not emit extra blockage insn.
3266 2018-11-21 Lokesh Janghel <lokeshjanghel91@gmail.com>
3269 * config/i386/i386.c (function_value_ms_64): Return AX_REG instead
3270 of FIRST_SSE_REG for 4 or 8 byte modes.
3272 2018-11-21 Jan Hubicka <jh@suse.cz>
3275 * tree.c (fld_decl_context): Break out from ...
3276 (free_lang_data_in_decl): ... here; free TREE_PUBLIC, TREE_PRIVATE
3277 DECL_ARTIFICIAL of TYPE_DECL; do not free TREE_TYPE of TYPE_DECL.
3278 (fld_incomplete_type_of): Build copy of TYP_DECL.
3279 * ipa-devirt.c (free_enum_values): Rename to ...
3280 (free_odr_warning_data): ... this one; free also duplicated TYPE_DECLs
3281 and TREE_TYPEs of TYPE_DECLs.
3282 (get_odr_type): Initialize odr_vtable_hash if needed.
3284 2018-11-21 Alexandre Oliva <oliva@adacore.com>
3286 * final.c (compute_discriminator): Declare. Renamed from...
3287 (maybe_set_discriminator): ... this. Set and return a local.
3288 (override_discriminator): New.
3289 (final_scan_insn_1): Set it.
3290 (notice_source_line): Adjust. Always set discriminator.
3292 2018-11-21 Jakub Jelinek <jakub@redhat.com>
3295 * config/aarch64/atomics.md (@aarch64_compare_and_swap<mode>): Use
3296 rIJ constraint for aarch64_plus_operand rather than rn.
3298 2018-11-21 Renlin Li <renlin.li@arm.com>
3301 * explow.h (get_dynamic_stack_size): Declare it as external.
3302 * explow.c (record_new_stack_level): Remove function static attribute.
3303 * function.c (assign_stack_local_1): Dynamically align the stack slot
3304 addr for parameter copy on the stack.
3306 2018-11-21 Richard Biener <rguenther@suse.de>
3309 * bitmap.c (bitmap_last_set_bit): Refactor to avoid warning.
3310 * Makefile.in (bitmap.o-warn): Remove again.
3312 2018-11-20 Jeff Law <law@redhat.com>
3314 PR tree-optimization/88069
3315 * tree-ssa-dom.c (record_equivalences_from_phis): Propagate away
3316 degenerate virtual PHIs.
3318 2018-11-21 H.J. Lu <hongjiu.lu@intel.com>
3321 * config/i386/sse.md (sse4_1_<code>v8qiv8hi2<mask_name>): Replace
3322 nonimmediate_operand with register_operand.
3323 (avx2_<code>v8qiv8si2<mask_name>): Likewise.
3324 (sse4_1_<code>v4qiv4si2<mask_name>): Likewise.
3325 (sse4_1_<code>v4hiv4si2<mask_name>): Likewise.
3326 (sse4_1_<code>v2qiv2di2<mask_name>): Likewise.
3327 (avx512f_<code>v8qiv8di2<mask_name>): Likewise.
3328 (avx2_<code>v4qiv4di2<mask_name>): Likewise.
3329 (avx2_<code>v4hiv4di2<mask_name>): Likewise.
3330 (sse4_1_<code>v2hiv2di2<mask_name>): Likewise.
3331 (sse4_1_<code>v2siv2di2<mask_name>): Likewise.
3332 (*sse4_1_<code>v8qiv8hi2<mask_name>_1): New pattern.
3333 (*sse4_1_<code>v8qiv8hi2<mask_name>_2): Likewise.
3334 (*avx2_<code>v8qiv8si2<mask_name>_1): Likewise.
3335 (*avx2_<code>v8qiv8si2<mask_name>_2): Likewise.
3336 (*sse4_1_<code>v4qiv4si2<mask_name>_1): Likewise.
3337 (*sse4_1_<code>v4qiv4si2<mask_name>_2): Likewise.
3338 (*sse4_1_<code>v4hiv4si2<mask_name>_1): Likewise.
3339 (*sse4_1_<code>v4hiv4si2<mask_name>_2): Likewise.
3340 (*avx512f_<code>v8qiv8di2<mask_name>_1): Likewise.
3341 (*avx512f_<code>v8qiv8di2<mask_name>_2): Likewise.
3342 (*avx2_<code>v4qiv4di2<mask_name>_1): Likewise.
3343 (*avx2_<code>v4qiv4di2<mask_name>_2): Likewise.
3344 (*avx2_<code>v4hiv4di2<mask_name>_1): Likewise.
3345 (*avx2_<code>v4hiv4di2<mask_name>_2): Likewise.
3346 (*sse4_1_<code>v2hiv2di2<mask_name>_1): Likewise.
3347 (*sse4_1_<code>v2hiv2di2<mask_name>_2): Likewise.
3348 (*sse4_1_<code>v2siv2di2<mask_name>_1): Likewise.
3349 (*sse4_1_<code>v2siv2di2<mask_name>_2): Likewise.
3351 2018-11-21 H.J. Lu <hongjiu.lu@intel.com>
3353 * read-rtl.c (apply_subst_iterator): Handle define_split and
3354 define_insn_and_split.
3356 2018-11-21 Jakub Jelinek <jakub@redhat.com>
3358 PR rtl-optimization/87817
3359 * config/i386/i386.md (bmi2_bzhi_<mode>3, *bmi2_bzhi_<mode>3,
3360 *bmi2_bzhi_<mode>3_1, *bmi2_bzhi_<mode>3_1_ccz): Use IF_THEN_ELSE
3361 in the pattern to avoid triggering UB when operands[2] is zero.
3362 (tbm_bextri_<mode>): New expander. Renamed the old define_insn to ...
3363 (*tbm_bextri_<mode>): ... this.
3365 2018-11-21 Tom de Vries <tdevries@suse.de>
3368 * params.def (HOT_BB_COUNT_FRACTION): Terminate help message with
3371 2018-11-21 Andreas Krebbel <krebbel@linux.ibm.com>
3373 * configure.ac: Add check for Binutils to determine whether vector
3374 load/store alignments hints are being supported.
3375 * config.in: Regenerate.
3376 * configure: Regenerate.
3377 * config/s390/s390.c (print_operand): Support new output
3379 * config/s390/s390.md ("movti"): Append alignment hint output
3380 using the new output modifier 'A'.
3381 * config/s390/vector.md ("mov<mode>", "*vec_tf_to_v1tf")
3382 ("*vec_ti_to_v1ti"): Likewise.
3384 2018-11-20 Martin Sebor <msebor@redhat.com>
3386 * doc/extend.texi (Other Builtins): Add __builtin_has_attribute.
3388 2018-11-20 Jan Hubicka <hubicka@ucw.cz>
3391 * ipa-devirt.c (odr_types_equivalent_p): Use operand_equal_p to
3392 compare ENUM values.
3394 2018-11-20 Jakub Jelinek <jakub@redhat.com>
3396 PR tree-optimization/87895
3397 * omp-simd-clone.c (ipa_simd_modify_function_body): When removing
3398 or replacing GIMPLE_RETURN, set EDGE_FALLTHRU on the edge to EXIT.
3399 (simd_clone_adjust): Don't set EDGE_FALLTHRU here. In a loop that
3400 redirects edges to EXIT to edges to incr_bb, iterate while EXIT
3401 has any preds and always use EDGE_PRED (, 0).
3403 2018-11-20 Uros Bizjak <ubizjak@gmail.com>
3406 * mode-switching.c (create_pre_exit): After reload, always split the
3407 fallthrough edge to the exit block.
3409 2018-11-20 Jan Hubicka <hubicka@ucw.cz>
3411 * ipa-devirt.c (add_type_duplicate): Do not ICE on incomplete enums.
3412 * tree.c (build_array_type_1): Forward declare.
3413 (fld_type_variant_equal_p): Add INNER_TYPE parameter.
3414 (fld_type_variant): Likewise.
3415 (fld_simplified_types): New hash.
3416 (fld_process_array_type): New function.
3417 (fld_incomplete_type_of): Handle array and enumeration types.
3418 (fld_simplified_type): Handle simplification of arrays.
3419 (free_lang_data): Allocate and free simplified types hash.
3421 2018-11-20 Jan Hubicka <hubicka@ucw.cz>
3424 * ipa-devirt.c (odr_subtypes_equivalent_p): Report ODR violation
3425 when sybtype already violates ODR.
3426 (get_odr_type): Do not ICE when insert is false and type duplicate
3427 is not registered yet.
3428 (register_odr_type): Be sure to register subtypes first.
3430 2018-11-20 Andreas Krebbel <krebbel@linux.ibm.com>
3432 * config/s390/s390.md ("clztidi2"): Swap the RTX's written to the
3433 DImode parts of the target operand.
3435 2018-11-20 Nathan Sidwell <nathan@acm.org>
3438 * Makefile.in (bitmap.o-warn): Use -Wno-error=array-bounds.
3440 2018-11-20 Jan Hubicka <hubicka@ucw.cz>
3443 * tree.c (free_lang_data_in_cgraph): Add argument fld; break out
3445 (free_lang_data) ... here; update call of free_lang_data_in_cgraph.
3447 2018-11-20 Jan Hubicka <hubicka@ucw.cz>
3450 * ipa-fnsummary.c (pass_ipa_fnsummary): Do not remove functions
3451 * ipa.c (possible_inline_candidate_p): Break out from ..
3452 (process_references): ... here ; drop before_inlining_p;
3453 cleanup handling of alises.
3454 (walk_polymorphic_call_targets): Likewise.
3455 (symbol_table::remove_unreachable_nodes): Likewise.
3456 * passes.c (pass_data_ipa_remove_symbols): New structure.
3457 (pass_ipa_remove_symbols): New pass.
3458 (make_pass_ipa_remove_symbols): New function.
3459 * tree-pass.h (make_pass_ipa_remove_symbols): Declare.
3460 * passes.def (pass_ipa_remove_symbols): Schedule after early passes.
3462 2018-11-20 Richard Biener <rguenther@suse.de>
3464 * tree-vect-stmts.c (vectorizable_condition): Do not get
3465 at else_clause vect def for EXTRACT_LAST_REDUCTION. Remove
3466 pointless vect_is_simple_use calls.
3468 2018-11-20 Richard Biener <rguenther@suse.de>
3470 PR tree-optimization/88074
3471 * tree-ssa-dom.c (pass_dominator::execute): Do not walk
3474 2018-11-20 Richard Biener <rguenther@suse.de>
3476 PR tree-optimization/88069
3477 * tree-ssa-sccvn.c (visit_phi): Do not value-number to unvisited
3478 virtual PHI arguments.
3480 2018-11-20 Ilya Leoshkevich <iii@linux.ibm.com>
3483 * config/s390/s390.md: Skip LT(G) peephole when literal pool is
3485 * rtl.h (contains_constant_pool_address_p): New function.
3486 * rtlanal.c (contains_constant_pool_address_p): Likewise.
3488 2018-11-20 Richard Biener <rguenther@suse.de>
3491 * alias.c (component_uses_parent_alias_set_from): Remove
3492 alias-set zero and TYPE_TYPELESS_STORAGE case both already
3493 handled in other ways.
3495 2018-11-20 Richard Biener <rguenther@suse.de>
3497 PR tree-optimization/88087
3498 * tree-ssa-pre.c (create_expression_by_pieces): Re-materialize
3500 * tree-ssa-sccvn.c (copy_reference_ops_from_call): Remember
3503 2018-11-20 Richard Biener <rguenther@suse.de>
3506 * tree-data-ref.c (lambda_matrix_right_hermite): Use abs_hwi.
3508 2018-11-19 Jan Hubicka <hubicka@ucw.cz>
3511 * ipa-devirt.c (free_enum_values): Do not ICE on ODR vilations.
3513 2018-11-19 Sandra Loosemore <sandra@codesourcery.com>
3516 * doc/invoke.texi (Link Options): Mention shared libraries
3517 in documentation for the -l option. Simplify discussion and
3518 point to the system linker documentation for details.
3520 2018-11-19 Peter Bergner <bergner@linux.ibm.com>
3522 PR rtl-optimization/88033
3523 * ira-lives.c (non_conflicting_reg_copy_p): Skip copies from a register
3524 to itself. Use HARD_REGISTER_NUM_P.
3526 2018-11-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3528 * tree-vect-loop.c (vect_transform_loop): Disable further unrolling
3529 of the loop if vf is non-constant.
3531 2018-11-19 David Malcolm <dmalcolm@redhat.com>
3533 PR tree-optimization/87025
3534 * dumpfile.c (dump_context::begin_scope): Call end_any_optinfo
3535 immediately after creating the scope optinfo.
3536 (selftest::test_pr87025): New function.
3537 (selftest::dumpfile_c_tests): Call it.
3538 * optinfo-emit-json.cc (optrecord_json_writer::pop_scope): Assert
3539 that we're not popping the top-level records array.
3540 * optinfo.cc (optinfo::handle_dump_file_kind): Assert that we're
3541 not changing the kind of a "scope" optinfo.
3543 2018-11-19 David Malcolm <dmalcolm@redhat.com>
3545 PR tree-optimization/87025
3546 * dump-context.h: Include "optinfo.h".
3547 (class optrecord_json_writer): New forward decl.
3548 (dump_context::forcibly_enable_optinfo_p): Delete.
3549 (dump_context::optinfo_enabled_p): New member function.
3550 (dump_context::optimization_records_enabled_p): New member
3552 (dump_context::set_json_writer): New member function.
3553 (dump_context::emit_optinfo): New member function.
3554 (dump_context::m_forcibly_enable_optinfo): Delete.
3555 (dump_context::m_json_writer): New member data.
3556 * dumpfile.c (dump_context::set_json_writer): New member function.
3557 (dump_context::finish_any_json_writer): New member function.
3558 (dump_context::end_scope): Replace call to
3559 optimization_records_maybe_pop_dump_scope with call to
3560 m_json_writer->pop_scope.
3561 (dump_context::optinfo_enabled_p): New member function.
3562 (dump_context::end_any_optinfo): Replace call to optinfo::emit with call
3563 to dump_context::emit_optinfo.
3564 (dump_context::emit_optinfo): New member function.
3565 (temp_dump_context::temp_dump_context): Replace
3566 m_forcibly_enable_optinfo with call to set_json_writer.
3567 (temp_dump_context::~temp_dump_context): Clean up any json writer.
3568 * optinfo-emit-json.cc (class optrecord_json_writer): Move to
3570 (the_json_writer): Delete.
3571 (optimization_records_start): Delete.
3572 (optimization_records_finish): Delete.
3573 (optimization_records_enabled_p): Delete, in favor of
3574 dump_context::optimization_records_enabled_p.
3575 (optimization_records_maybe_record_optinfo): Delete.
3576 (optimization_records_maybe_pop_dump_scope): Delete.
3577 * optinfo-emit-json.h: Include "json.h". Delete forward
3579 (optimization_records_start): Delete.
3580 (optimization_records_finish): Delete.
3581 (optimization_records_enabled_p): Delete.
3582 (optimization_records_maybe_record_optinfo): Delete.
3583 (optimization_records_maybe_pop_dump_scope): Delete.
3584 (class optrecord_json_writer): Move here from
3585 optinfo-emit-json.cc.
3586 * optinfo.cc (optinfo::emit_for_opt_problem): Replace call
3587 to optinfo::emit with call to dump_context::emit_optinfo.
3588 (optinfo::emit): Delete, in favor of dump_context::emit_optinfo.
3589 (optinfo_enabled_p): Delete, in favor of
3590 dump_context::optinfo_enabled_p.
3591 (optinfo_wants_inlining_info_p): Update for conversion o
3592 optimization_records_enabled_p to a member function of
3594 * optinfo.h (optinfo_enabled_p): Delete, in favor of
3595 dump_context::optinfo_enabled_p.
3596 (optinfo::emit): Delete, in favor of dump_context::emit_optinfo.
3597 * toplev.c: Include "dump-context.h".
3598 (compile_file): Replace call to optimization_records_finish with
3599 dump_context::finish_any_json_writer.
3600 (do_compile): Replace call to optimization_records_start with
3601 conditionally creating a optrecord_json_writer for the
3604 2018-11-19 Jakub Jelinek <jakub@redhat.com>
3606 PR tree-optimization/88071
3607 * tree-vect-loop.c (vectorize_fold_left_reduction): Pass true instead
3608 of false as last argument to gsi_remove.
3609 * tree-vect-stmts.c (vect_finish_replace_stmt): Pass true instead of
3610 false as last argument to gsi_replace.
3613 * omp-expand.c: Don't include debug.h.
3614 (adjust_context_and_scope): Add REGION argument. Find DECL_CONTEXT
3615 from innermost outer parallel, task, teams or target that has a
3616 child_fn set, or, if there is no such outer region, use
3617 current_function_decl. Do the DECL_CONTEXT adjustment regardless of
3618 whether a suitable BLOCK is found or not.
3619 (expand_parallel_call, expand_teams_call): Don't call
3620 adjust_context_and_scope here.
3621 (grid_expand_target_grid_body): Revert 2017-01-25 changes.
3622 (expand_omp_taskreg, expand_omp_target): Likewise. Call
3623 adjust_context_and_scope.
3624 * dwarf2out.c (dwarf2out_early_global_decl): For
3625 decl_function_context recurse instead of calling dwarf2out_decl.
3627 2018-11-20 Eric Botcazou <ebotcazou@adacore.com>
3629 PR rtl-optimization/85925
3630 * rtl.h (word_register_operation_p): New predicate.
3631 * combine.c (record_dead_and_set_regs_1): Only apply specific handling
3632 for WORD_REGISTER_OPERATIONS targets to word_register_operation_p RTX.
3633 * rtlanal.c (nonzero_bits1): Likewise. Adjust couple of comments.
3634 (num_sign_bit_copies1): Likewise.
3636 2018-11-19 Richard Biener <rguenther@suse.de>
3639 * tree.c (free_lang_data_in_one_sizepos): Free non-gimple-val
3642 2018-11-19 Eric Botcazou <ebotcazou@adacore.com>
3644 * compare-elim.c (struct comparison): Add not_in_a field.
3645 (is_not): New static function.
3646 (strip_not): Likewise.
3647 (conforming_compare): Handle a NOT in the first operand.
3648 (can_eliminate_compare): Likewise.
3649 (find_comparison_dom_walker::before_dom_children): Likewise.
3650 (try_eliminate_compare): Likewise.
3651 * config/visium/visium.md (negsi2_insn_set_carry): Turn into...
3652 (neg<mode>2_insn_set_carry): ...this and add missing NEG operation.
3654 2018-11-19 Jonathan Wakely <jwakely@redhat.com>
3656 * doc/extend.texi (Common Type Attributes): Fix typos.
3658 2018-11-19 Martin Liska <mliska@suse.cz>
3660 PR gcov-profile/88045
3661 * coverage.c (coverage_begin_function): Add assert.
3663 2018-11-18 Sandra Loosemore <sandra@codesourcery.com>
3666 * doc/extend.texi (Common Function Attributes): Document that
3667 no_instrument_function applies to -p and -pg, too.
3668 * doc/invoke.texi (Instrumentation Options): Add cross-references
3669 to docs for -p, -pg, and -finstrument-functions.
3671 2018-11-18 Alan Modra <amodra@gmail.com>
3673 * config/gnu-user.h (GNU_USER_TARGET_CRTI): Define.
3674 (GNU_USER_TARGET_STARTFILE_SPEC): Use it here.
3675 (GNU_USER_TARGET_CRTN): Define.
3676 (GNU_USER_TARGET_ENDFILE_SPEC): Use it here.
3677 (GNU_USER_TARGET_LINK_GCC_C_SEQUENCE_SPEC): Define.
3679 2018-11-18 Alan Modra <amodra@gmail.com>
3681 * config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Delete
3682 !HAVE_LD_PIE variant.
3683 (GNU_USER_TARGET_ENDFILE_SPEC): Likewise.
3685 2018-11-17 Nick Clifton <nickc@redhat.com>
3686 Sandra Loosemore <sandra@codesourcery.com>
3689 * doc/invoke.texi (Overall Options): Document that --help and
3690 --help=<value> options cannot be combined.
3692 2018-11-17 Jim Wilson <jimw@sifive.com>
3694 * config/riscv/riscv.c (epilogue_cfa_sp_offset): New.
3695 (riscv_restore_reg): If restoring HARD_FRAME_POINTER_REGNUM, and
3696 epilogue_cfa_sp_offset set, then add REG_CFA_DEF_CFA regnote.
3697 (riscv_expand_epilogue): Initialize epilogue_cfa_sp_offset. Set it
3698 to step2 if frame_pointer_needed and step1 is 0.
3700 2018-11-17 Sandra Loosemore <sandra@codesourcery.com>
3703 * doc/cpp.texi (System Headers): Add note about implicit
3704 extern "C" block on targets that define SYSTEM_IMPLICIT_EXTERN_C.
3706 2018-11-17 Sandra Loosemore <sandra@codesourcery.com>
3709 * doc/invoke.texi (C++ Dialect Options): Clarify usage of
3710 -fno-implicit-templates.
3712 2018-11-17 Jakub Jelinek <jakub@redhat.com>
3714 PR tree-optimization/87546
3715 * tree-vect-patterns.c (vect_look_through_possible_promotion): Add
3716 min_precision variable, initially set it to orig_precision, only does
3717 something if op_type's precision is <= min_precision and update
3718 min_precision whenever calling set_op.
3720 2018-11-16 Jan Hubicka <hubicka@ucw.cz>
3723 * ipa-devirt.c (warn_odr): Look for main variant to get TYPE_DECL.
3725 2018-11-16 Sandra Loosemore <sandra@codesourcery.com>
3727 * doc/invoke.texi (Option Summary): Fix whitespace and line
3728 breaks in @gccoptlist environments.
3729 (Warning Options): Likewise.
3730 (Optimize Options): Likewise.
3731 (PowerPC SPE Options): Likewise.
3732 (RS/6000 and PowerPC Options): Likewise.
3734 2018-11-16 Jeff Law <law@redhat.com>
3736 * config/mn10300/mn10300.md (adddi3_degenerate): Remove bogus
3739 2018-11-16 Sandra Loosemore <sandra@codesourcery.com>
3742 * doc/invoke.texi (Optimize Options): Update options enabled by
3743 fprofile-generate, -fprofile-use, and -fauto-profile.
3745 2018-11-16 Jozef Lawrynowicz <jozef.l@mittosystems.com>
3748 * target-def.h: Initialize TARGET_ASM_{,UN}ALIGNED_P{S,D,T}I_OP.
3749 Add them to the TARGET_ASM_{,UN}ALIGNED_INT_OP structs.
3750 * target.def: Enumerate TARGET_ASM_{,UN}ALIGNED_P{S,D,T}I_OP in
3752 * target.h: Add psi, pdi, pti to struct asm_int_op definition.
3753 * targhooks.c (default_print_patchable_function_entry): Assert
3754 asm_int_op does not return a NULL string.
3755 * varasm.c (integer_asm_op): Return the op for a partial int type
3756 when the requested size does not correspond to an integer type.
3757 * config/msp430/msp430.c: Initialize TARGET_ASM_{,UN}ALIGNED_PSI_OP.
3758 * doc/tm.texi: Regenerate.
3760 2018-11-12 Jason Merrill <jason@redhat.com>
3762 * gimplify.c (gimplify_case_label_expr): Handle hot/cold attributes.
3764 2018-11-16 Michael Meissner <meissner@linux.ibm.com>
3766 * config/rs6000/constraints.md (wF constraint): Remove power9
3767 fusion documentation. Just document wF's use for power8 fusion.
3768 * config/rs6000/predicates.md (p9_fusion_reg_operand): Delete.
3769 (fusion_gpr_addis): Delete power9 fusion support. Change power8
3770 fusion support to require the upper 12 bits to be all 0's or all
3772 (fusion_gpr_mem_load): Add comment.
3773 (fusion_addis_mem_combo_load): Remove power9 fusion support.
3774 (fusion_addis_mem_combo_store): Delete.
3775 (fusion_offsettable_mem_operand): Delete.
3776 * config/rs6000/rs6000-cpus.def (ISA_2_7_MASKS_SERVER): Do not set
3778 (ISA_3_0_MASKS_SERVER): Delete power9 fusion.
3779 (POWERPC_MASKS): Delete power9 fusion.
3780 * config/rs6000/rs6000-protos.h (emit_fusion_load_store): Delete.
3781 (fusion_p9_p): Delete.
3782 (expand_fusion_p9_load): Delete.
3783 (expand_fusion_p9_store): Delete.
3784 (emit_fusion_p9_load): Delete.
3785 (emit_fusion_p9_store): Delete.
3786 * config/rs6000/rs6000.c (rs6000_debug_reg_global): Delete power9
3788 (rs6000_option_override_internal): Set power8 fusion based on
3789 whether we are tuning for power8. Delete power9 fusion support.
3790 (rs6000_opt_masks): Delete -mpower9-fusion switch.
3791 (emit_fusion_load): Rename emit_fusion_load_store to
3792 emit_fusion_load, and drop fusion store support. Update callers.
3793 (emit_fusion_load_store): Likewise.
3794 (emit_fusion_gpr_load): Likewise.
3795 (fusion_p9_p): Delete.
3796 (expand_fusion_p9_load): Delete.
3797 (expand_fusion_p9_store): Delete.
3798 (emit_fusion_p9_load): Delete.
3799 (emit_fusion_p9_store): Delete.
3800 * config/rs6000/rs6000.md (UNSPEC_FUSION_P9): Delete.
3801 (GPR_FUSION): Delete.
3802 (FPR_FUSION): Delete.
3803 (power9 fusion peephole2s): Delete.
3804 (fusion_gpr_<P:mode>_<GPR_FUSION:mode>_load): Delete.
3805 (fusion_gpr_<P:mode>_<GPR_FUSION:mode>_store): Delete.
3806 (fusion_vsx_<P:mode>_<FPR_FUSION:mode>_load): Delete.
3807 (fusion_vsx_<P:mode>_<FPR_FUSION:mode>_store): Delete.
3808 (fusion_p9_<mode>_constant): Delete.
3809 * config/rs6000/rs6000.opt (-mpower9-fusion): Delete undocumented
3810 power9 fusion switch.
3811 * doc/md.texi (PowerPC constraints): Update wF constraint
3812 documentation for power8 fusion only.
3814 2018-11-16 Jakub Jelinek <jakub@redhat.com>
3816 PR rtl-optimization/87475
3817 * cfgrtl.c (patch_jump_insn): Allow redirection failure for
3818 CROSSING_JUMP_P insns.
3819 (cfg_layout_redirect_edge_and_branch): Don't ICE if ret is NULL.
3821 2018-11-16 Uros Bizjak <ubizjak@gmail.com>
3824 * config/i386/i386.md (floatunsdidf2): Allow only 64bit AVX512F targets.
3825 * config/i386/sse.md (UNSPEC_MOVDI_TO_SSE): New UNSPEC.
3826 (movdi_to_sse): Rewrite using UNSPEC_MOVDI_TO_SSE unspec.
3828 2018-11-16 Jakub Jelinek <jakub@redhat.com>
3831 * optabs.c (expand_binop): For op0_mode use GET_MODE (op0), unless it
3832 is VOIDmode, in which case use int_mode. Similarly for op1_mode.
3834 2018-11-16 Eric Botcazou <ebotcazou@adacore.com>
3836 * tree-switch-conversion.h (switch_decision_tree::emit_case_nodes): Add
3837 location_t parameter.
3838 (switch_decision_tree::emit_cmp_and_jump_insns): Likewise.
3839 (switch_decision_tree::do_jump_if_equal): Likewise.
3840 * tree-switch-conversion.c (switch_decision_tree::emit): Pass location
3841 of switch statement to emit_case_nodes.
3842 (switch_decision_tree::emit_cmp_and_jump_insns): Add LOC parameter and
3843 set it on the newly built GIMPLE comparison statement.
3844 (switch_decision_tree::do_jump_if_equal): Likewise.
3845 (switch_decision_tree::emit_case_nodes): Add LOC parameter and pass it
3846 in calls to do_jump_if_equal as well as recursive calls.
3848 2018-11-16 Andi Kleen <ak@linux.intel.com>
3850 * config/i386/i386.md: Allow memory operands to ptwrite.
3852 2018-11-16 Michael Matz <matz@suse.de>
3854 * system.h (PRsa): New macro.
3855 (SIZE_AMOUNT): Cast number to uint64_t.
3856 * alloc-pool.h (pool_usage::dump): Don't use %zu but PRsa.
3857 (pool_usage::dump_footer): Likewise and also use PRIu64.
3858 * bitmap.h (bitmap_usage::dump): Likewise.
3859 * ggc-common.c (ggc_usage::dump): Likewise.
3860 * ggc-page.c (ggc_print_statistics): Likewise.
3861 * input.c (dump_line_table_statistics): Likewise.
3862 * mem-stats.h (mem_usage::dump): Likewise.
3863 (mem_usage::dump_footer): Likewise.
3864 * rtl.c (dump_rtx_statistics): Likewise.
3865 * tree-cfg.c (dump_cfg_stats): Likewise.
3866 * tree-dfa.c (dump_dfa_stats): Likewise.
3867 * tree-phinodes.c (phinodes_print_statistics): Likewise.
3868 * tree-ssanames (ssanames_print_statistics): Likewise.
3869 * vec.c (vec_usage::dump): Likewise.
3870 (vec_usage::dump_footer): Likewise.
3872 2018-11-16 Richard Biener <rguenther@suse.de>
3874 PR tree-optimization/88011
3875 * tree-vrp.c (extract_range_from_binary_expr): Fix error in
3876 replacing set_value_range_to_undefined and
3877 set_value_range_to_varying with method calls.
3879 2018-11-16 Ilya Leoshkevich <iii@linux.ibm.com>
3881 * config/s390/s390.md
3882 (*r<noxa>sbg_<mode>_srl_bitmask): Do not delegate arithmetic to
3884 (*r<noxa>sbg_<mode>_sll): Likewise.
3885 (*r<noxa>sbg_<mode>_srl): Likewise.
3886 (*r<noxa>sbg_sidi_srl): New pattern.
3888 2018-11-16 Jerome Lambourg <lambourg@adacore.com>
3890 * config/vxworks.h (TARGET_VXWORKS_HAVE_CTORS_DTORS): New macro.
3891 Default to TARGET_VXWORKS_RTP.
3892 (SUPPORTS_INIT_PRIORITY): Use TARGET_VXWORKS_HAVE_CTORS_DTORS instead
3893 of TARGET_VXWORKS_RTP.
3894 * config/vxworks.c: Use TARGET_VXWORKS_HAVE_CTORS_DTORS instead
3895 of TARGET_VXWORKS_RTP to set targetm.have_ctors_dtors.
3897 2018-11-15 Sandra Loosemore <sandra@codesourcery.com>
3900 * doc/extend.texi (Common Type Attributes): Make it explicit
3901 that attribute "packed" can apply to C++ classes.
3903 2018-11-15 Martin Sebor <msebor@redhat.com>
3907 * tree.c (type_argument_type): New function.
3908 * tree.h (type_argument_type): Declare it.
3909 * gcc/doc/extend.texi (alloc_align): Update and clarify.
3910 (alloc_size, nonnull, sentinel): Same.
3912 2018-11-15 Andrew Stubbs <ams@codesourcery.com>
3913 Kwok Cheung Yeung <kcy@codesourcery.com>
3915 * tree-vect-stmts.c (vectorizable_store): Don't ICE when
3916 int_mode_for_size fails.
3917 (vectorizable_load): Likewise.
3919 2018-11-15 David Malcolm <dmalcolm@redhat.com>
3921 * doc/ux.texi (Group logically-related diagnostics): Move
3922 discussion of auto_diagnostic_group into this new subsection.
3923 Give an example of where this grouping is used.
3925 2018-11-15 David Malcolm <dmalcolm@redhat.com>
3928 * Makefile.in (OBJS): Move json.o to...
3929 (OBJS-libcommon): ...here and add diagnostic-format-json.o.
3930 * common.opt (fdiagnostics-format=): New option.
3931 (diagnostics_output_format): New enum.
3932 * diagnostic-format-json.cc: New file.
3933 * diagnostic.c (default_diagnostic_final_cb): New function, taken
3934 from start of diagnostic_finish.
3935 (diagnostic_initialize): Initialize final_cb to
3936 default_diagnostic_final_cb.
3937 (diagnostic_finish): Move "being treated as errors" messages to
3938 default_diagnostic_final_cb. Call any final_cb.
3939 (default_diagnostic_finalizer): Add diagnostic_t param.
3940 (diagnostic_report_diagnostic): Pass "orig_diag_kind" to
3941 diagnostic_finalizer callback.
3942 * diagnostic.h (enum diagnostics_output_format): New enum.
3943 (diagnostic_finalizer_fn): Reimplement, adding diagnostic_t param.
3944 (struct diagnostic_context): Add "final_cb".
3945 (default_diagnostic_finalizer): Add diagnostic_t param.
3946 (diagnostic_output_format_init): New decl.
3947 * doc/invoke.texi (-fdiagnostics-format): New option.
3948 * dwarf2out.c (gen_producer_string): Ignore
3949 OPT_fdiagnostics_format_.
3950 * gcc.c (driver_handle_option): Handle OPT_fdiagnostics_format_.
3951 * lto-wrapper.c (append_diag_options): Ignore it.
3952 * opts.c (common_handle_option): Handle it.
3954 2018-11-15 David Malcolm <dmalcolm@redhat.com>
3956 PR tree-optimization/88015
3957 * graphite-isl-ast-to-gimple.c
3958 (translate_isl_ast_to_gimple::scop_to_isl_ast): Add missing check
3960 * graphite-sese-to-poly.c (build_poly_scop): Likewise.
3962 2018-11-15 Richard Biener <rguenther@suse.de>
3965 * gimple.c (gimple_call_flags): Union flags from decl, type
3967 * trans-mem.c (is_tm_pure_call): Simplify.
3969 2018-11-15 Richard Biener <rguenther@suse.de>
3971 PR tree-optimization/88031
3972 * tree-vect-loop.c (vectorizable_reduction): Move check
3973 for multiple types earlier so we get the expected dump.
3974 Simplify calls to vectorizable_condition.
3975 * tree-vect-stmts.h (vectorizable_condition): Update prototype.
3976 * tree-vect-stmts.c (vectorizable_condition): Instead of
3977 reduc_def and reduc_index take just a flag. Simplify
3978 code-generation now that we can rely on the defs being set up.
3979 (vectorizable_comparison): Remove unused argument.
3981 2018-11-15 Richard Biener <rguenther@suse.de>
3983 PR tree-optimization/88030
3984 * tree-complex.c (need_eh_cleanup): New global.
3985 (update_complex_assignment): Mark blocks that need EH update.
3986 (expand_complex_comparison): Likewise.
3987 (tree_lower_complex): Allocate and deallocate need_eh_cleanup,
3988 perform EH cleanup and schedule CFG cleanup if that did anything.
3990 2018-11-15 Jakub Jelinek <jakub@redhat.com>
3992 PR rtl-optimization/88018
3993 * cfgrtl.c (fixup_abnormal_edges): Guard moving insns to fallthru edge
3994 on the presence of fallthru edge, rather than if it is a USE or not.
3996 2018-11-15 Richard Biener <rguenther@suse.de>
3999 * tree-data-ref.c (analyze_miv_subscript): Guard calls to
4000 analyze_subscript_affine_affine properly.
4002 2018-11-15 Xianmiao Qu <xianmiao_qu@c-sky.com>
4004 * config/csky/csky-linux-elf.h (LINUX_DYNAMIC_LINKER): Remove.
4005 (GLIBC_DYNAMIC_LINKER): Define.
4006 (LINUX_TARGET_LINK_SPEC): Update the dynamic linker's name.
4008 2018-11-15 Bin Cheng <bin.cheng@linux.alibaba.com>
4010 PR tree-optimization/84648
4011 * tree-ssa-loop-niter.c (adjust_cond_for_loop_until_wrap): New.
4012 (number_of_iterations_cond): Adjust exit cond for loop-until-wrap case
4013 by calling adjust_cond_for_loop_until_wrap.
4015 2018-11-15 Sandra Loosemore <sandra@codesourcery.com>
4018 * doc/extend.texi (Common Function Attributes): Clarify linker
4019 restrictions on "aligned" attribute.
4020 (Common Variable Attributes): Likewise. Mention that linker
4021 restrictions don't apply to stack-allocated variables.
4023 2018-11-15 Joern Rennecke <joern.rennecke@riscy-ip.com>
4025 * gensupport.c (add_predicate_code): Properly handle ZERO_EXTRACT
4028 2018-11-14 Sandra Loosemore <sandra@codesourcery.com>
4032 * doc/invoke.texi (Optimize Options): Remove bad example about
4033 interaction between -flto and -O. Replace it with a note that
4034 you need to compile with -O and not just link. Copy-edit -flto
4035 discussion to reduce verbiage and improve flow.
4037 2018-11-14 Sandra Loosemore <sandra@codesourcery.com>
4040 * doc/invoke.texi (Optimize Options): Clarify that -O0 and -Og
4041 also suppress many optimizations. Alphabetize option lists for
4042 -O1, -O2, and -Os. Add list of options disabled with -Og, and
4043 correct documentation for those options to say that.
4044 * opts.c (default_options_table): Sort table by level and option
4045 name, to make it easier to correlate to the manual.
4047 2018-11-14 Uros Bizjak <ubizjak@gmail.com>
4049 * config/i386/i386.c (ix86_print_operand_address_as): Simplify
4050 printing of the names of segment registers.
4052 2018-11-14 Nathan Sidwell <nathan@acm.org>
4056 * dwarf2out.c (dwarf2out_finish): Apply resolve_addr to comdat
4059 2018-11-14 David Malcolm <dmalcolm@redhat.com>
4061 * Makefile.in (CFLAGS-optinfo-emit-json.o): Add $(ZLIBINC).
4063 2018-11-14 Jakub Jelinek <jakub@redhat.com>
4065 P1236R1 - Signed integers are two's complement
4066 * doc/invoke.texi (Wshift-overflow): Adjust documentation for c++2a.
4069 * hash-map.h (hash_map::iterator::reference_pair): New class.
4070 (hash_map::iterator::operator*): Return it rather than std::pair.
4072 2018-11-14 Jeff Law <law@redhat.com>
4074 * optabs.c (expand_binop): Pass INT_MODE to operand_subword_force
4075 iff the operand is a constant.
4077 2018-11-14 Aldy Hernandez <aldyh@redhat.com>
4079 * gimple-ssa-evrp-analyze.c
4080 (evrp_range_analyzer::record_ranges_from_incoming_edge): Rename
4081 ignore_equivs_equal_p to equal_p.
4082 * ipa-cp.c (meet_with_1): Use equal_p instead of
4083 ignore_equivs_equal_p.
4084 * ipa-prop.c (ipa_vr_ggc_hash_traits::equal): Same.
4085 * tree-vrp.c (value_range::ignore_equivs_equal_p): Remove.
4086 (value_range::operator==): Remove.
4087 (value_range::operator!=): Remove.
4088 (vrp_prop::visit_stmt): Use equal_p.
4089 * tree-vrp.h (value_range): Remove operator==, operator!=,
4090 ignore_equivs_equal_p.
4091 * vr-values.c (update_value_range): Use equal_p.
4093 2018-11-14 Michael Matz <matz@suse.de>
4096 * gimplify.c (collect_fallthrough_labels): Add new argument,
4097 return location via that, don't modify statements.
4098 (warn_implicit_fallthrough_r): Adjust call, don't use
4099 statement location directly.
4101 2018-11-14 Richard Biener <rguenther@suse.de>
4104 * tree-data-ref.c (split_constant_offset): Add wrapper
4105 allocating a cache hash-map.
4106 (split_constant_offset_1): Cache results of expanding
4107 expressions from SSA def stmts.
4109 2018-11-14 Richard Biener <rguenther@suse.de>
4112 * tree-data-ref.c (lambda_matrix_row_add): Change const1 argument
4114 (lambda_vector_mult_const): Likewise.
4115 (lambda_matrix_right_hermite): Use lambda_int temporaries.
4117 2018-11-14 Wilco Dijkstra <wdijkstr@arm.com>
4118 Jackson Woodruff <jackson.woodruff@arm.com>
4120 PR 71026/tree-optimization
4121 * match.pd: Simplify floating point comparisons.
4123 2018-11-14 Jakub Jelinek <jakub@redhat.com>
4125 PR rtl-optimization/87817
4126 * config/i386/i386.c (ix86_fold_builtin): For _bzhi_u{32,64} if
4127 last argument has low 8 bits clear, fold to 0.
4129 2018-11-14 Iain Sandoe <iain@sandoe.co.uk>
4131 * tree-vect-data-refs.c (vect_can_force_dr_alignment_p): Cast
4132 MAX_OFILE_ALIGNMENT as needed.
4134 2018-11-14 Richard Biener <rguenther@suse.de>
4136 PR tree-optimization/88019
4137 * graphite-isl-ast-to-gimple.c (ternary_op_to_tree): Rewrite
4138 COND_EXPR arguments to non-trapping overflow.
4140 2018-11-14 Claudiu Zissulescu <claziss@synopsys.com>
4142 * config/arc/arc.h (reg_class): Reorder registers classes, remove
4143 unused register classes.
4144 (REG_CLASS_NAMES): Likewise.
4145 (REG_CLASS_CONTENTS): Likewise.
4146 (FIXED_REGISTERS): Make lp_count fixed.
4147 (BASE_REG_CLASS): Remove ACC16_BASE_REGS reference.
4148 (PROGRAM_COUNTER_REGNO): Remove.
4149 * config/arc/arc.c (arc_conditional_register_usage): Remove unused
4150 register classes, use constants for register numbers, remove
4151 reg_class_contents references.
4152 (arc_process_double_reg_moves): Add asserts.
4153 (arc_secondary_reload): Remove LPCOUNT_REG reference, use
4154 lra_in_progress predicate.
4155 (arc_init_reg_tables): Remove unused register classes.
4156 (arc_register_move_cost): Likewise.
4157 (arc_preferred_reload_class): Likewise.
4158 (hwloop_optimize): Update rtx patterns involving lp_count register.
4159 (arc_return_address_register): Rename ILINK1, INLINK2 regnums macros.
4160 * config/arc/constraints.md ("c"): Choose between GENERAL_REGS and
4161 CHEAP_CORE_REGS. Former one will be used for LRA.
4162 ("Rac"): Choose between GENERAL_REGS and ALL_CORE_REGS. Former
4163 one will be used for LRA.
4164 ("w"): Choose between GENERAL_REGS and WRITABLE_CORE_REGS. Former
4165 one will be used for LRA.
4166 ("W"): Choose between GENERAL_REGS and MPY_WRITABLE_CORE_REGS.
4167 Former one will be used for LRA.
4168 ("f"): Delete constraint.
4171 ("l"): Change it from register constraint to constraint.
4172 * config/arc/arc.md (movqi_insn): Remove unsed lp_count constraints.
4173 (movhi_insn): Likewise.
4174 (movsi_insn): Update pattern.
4177 (stack_tie): Remove 'b' constraint letter.
4179 (R9_REG, R15_REG, R16_REG, R25_REG): Likewise.
4180 (R32_REG, R40_REG, R41_REG, R42_REG, R43_REG, R44_REG): Likewise.
4181 (R57_REG, R59_REG, PCL_REG): Likewise.
4182 (ILINK1_REGNUM): Renamed to ILINK1_REG.
4183 (ILINK2_REGNUM): Renamed to ILINK2_REG.
4185 (SP_REGS): Likewise.
4186 (Rcw): Remove unused reg classes.
4187 * config/arc/predicates.md (dest_reg_operand): Just default on
4188 register_operand predicate.
4189 (mpy_dest_reg_operand): Likewise.
4190 (move_dest_operand): Use macros instead of constants.
4191 * config/arc/arc.opt (mlra): Switch to lra as default.
4193 2018-11-14 Richard Biener <rguenther@suse.de>
4195 PR tree-optimization/87974
4196 * tree-vect-loop.c (vectorizable_reduction): When computing
4197 the vectorized reduction PHI vector type ignore constant
4200 2018-11-14 Jakub Jelinek <jakub@redhat.com>
4202 PR tree-optimization/87977
4203 * tree-ssa-math-opts.c (optimize_recip_sqrt): Don't reuse division
4204 stmt, build a new one and replace the old one with it. Formatting fix.
4205 Call release_ssa_name (x) if !has_other_use and !delete_div.
4206 (pass_cse_reciprocals::execute): Before calling optimize_recip_sqrt
4207 verify lhs of stmt is still def.
4209 2018-11-13 Peter Bergner <bergner@linux.ibm.com>
4211 PR rtl-optimization/87507
4212 * lower-subreg.c (operand_for_swap_move_operator): New function.
4213 (simple_move): Strip simple operators.
4214 (find_pseudo_copy): Likewise.
4215 (resolve_operand_for_swap_move_operator): New function.
4216 (resolve_simple_move): Strip simple operators and swap operands.
4218 2018-11-13 Jakub Jelinek <jakub@redhat.com>
4220 PR tree-optimization/87898
4221 * omp-simd-clone.c (ipa_simd_modify_stmt_ops): Formatting fix.
4222 (ipa_simd_modify_function_body): Remove debug stmts where the first
4223 argument was changed into a non-decl.
4225 2018-11-13 Peter Bergner <bergner@linux.ibm.com>
4227 PR rtl-optimization/87899
4228 * lra-lives.c (start_living): Update white space in comment.
4229 (enum point_type): New.
4230 (sparseset_contains_pseudos_p): New function.
4231 (update_pseudo_point): Likewise.
4232 (make_hard_regno_live): Use HARD_REGISTER_NUM_P macro.
4233 (make_hard_regno_dead): Likewise. Remove ignore_reg_for_conflicts
4234 handling. Move early exit after adding conflicts.
4235 (mark_pseudo_live): Use HARD_REGISTER_NUM_P macro. Add early exit
4236 if regno is already live. Remove all handling of program points.
4237 (mark_pseudo_dead): Use HARD_REGISTER_NUM_P macro. Add early exit
4238 after adding conflicts. Remove all handling of program points and
4239 ignore_reg_for_conflicts.
4240 (mark_regno_live): Use HARD_REGISTER_NUM_P macro. Remove return value
4241 and do not guard call to mark_pseudo_live.
4242 (mark_regno_dead): Use HARD_REGISTER_NUM_P macro. Remove return value
4243 and do not guard call to mark_pseudo_dead.
4244 (check_pseudos_live_through_calls): Use HARD_REGISTER_NUM_P macro.
4245 (process_bb_lives): Use HARD_REGISTER_NUM_P and HARD_REGISTER_P macros.
4246 Use new function update_pseudo_point. Handle register copies by
4247 removing the source register from the live set. Handle INOUT operands.
4248 Update to the next program point using the unused_set, dead_set and
4250 (lra_create_live_ranges_1): Use HARD_REGISTER_NUM_P macro.
4252 2018-11-13 David Malcolm <dmalcolm@redhat.com>
4254 * builtins.c: Replace "source_location" with "location_t".
4255 * diagnostic-show-locus.c: Likewise.
4256 * diagnostic.c: Likewise.
4257 * dumpfile.c: Likewise.
4258 * gcc-rich-location.h: Likewise.
4259 * genmatch.c: Likewise.
4260 * gimple.h: Likewise.
4261 * gimplify.c: Likewise.
4262 * input.c: Likewise.
4263 * input.h: Likewise. Eliminate the typedef.
4264 * omp-expand.c: Likewise.
4265 * selftest.h: Likewise.
4266 * substring-locations.h (get_source_location_for_substring):
4268 (get_location_within_string): ...this.
4269 * tree-cfg.c: Replace "source_location" with "location_t".
4270 * tree-cfgcleanup.c: Likewise.
4271 * tree-diagnostic.c: Likewise.
4272 * tree-into-ssa.c: Likewise.
4273 * tree-outof-ssa.c: Likewise.
4274 * tree-parloops.c: Likewise.
4275 * tree-phinodes.c: Likewise.
4276 * tree-phinodes.h: Likewise.
4277 * tree-ssa-loop-ivopts.c: Likewise.
4278 * tree-ssa-loop-manip.c: Likewise.
4279 * tree-ssa-phiopt.c: Likewise.
4280 * tree-ssa-phiprop.c: Likewise.
4281 * tree-ssa-threadupdate.c: Likewise.
4282 * tree-ssa.c: Likewise.
4283 * tree-ssa.h: Likewise.
4284 * tree-vect-loop-manip.c: Likewise.
4286 2018-11-13 Michael Ploujnikov <michael.ploujnikov@oracle.com>
4288 * doc/extend.texi: Fix typo in the weakref description.
4290 2018-11-13 Richard Biener <rguenther@suse.de>
4292 PR tree-optimization/86991
4293 * tree-vect-loop.c (vect_is_slp_reduction): Delay reduction
4294 group building until we have successfully detected the SLP
4296 (vect_is_simple_reduction): Remove fixup code here.
4298 2018-11-13 David Malcolm <dmalcolm@redhat.com>
4300 * dumpfile.c (VERIFY_DUMP_ENABLED_P): New macro.
4301 (dump_gimple_stmt): Use it.
4302 (dump_gimple_stmt_loc): Likewise.
4303 (dump_gimple_expr): Likewise.
4304 (dump_gimple_expr_loc): Likewise.
4305 (dump_generic_expr): Likewise.
4306 (dump_generic_expr_loc): Likewise.
4307 (dump_printf): Likewise.
4308 (dump_printf_loc): Likewise.
4309 (dump_dec): Likewise.
4310 (dump_dec): Likewise.
4311 (dump_hex): Likewise.
4312 (dump_symtab_node): Likewise.
4313 * gimple-loop-interchange.cc (tree_loop_interchange::interchange):
4314 Guard dump call with dump_enabled_p.
4315 * graphite-isl-ast-to-gimple.c (graphite_regenerate_ast_isl): Likewise.
4316 * graphite-optimize-isl.c (optimize_isl): Likewise.
4317 * graphite.c (graphite_transform_loops): Likewise.
4318 * tree-loop-distribution.c (pass_loop_distribution::execute): Likewise.
4319 * tree-parloops.c (parallelize_loops): Likewise.
4320 * tree-ssa-loop-niter.c (number_of_iterations_exit): Likewise.
4321 * tree-vect-data-refs.c (vect_analyze_group_access_1): Likewise.
4322 (vect_prune_runtime_alias_test_list): Likewise.
4323 * tree-vect-loop.c (vect_update_vf_for_slp): Likewise.
4324 (vect_estimate_min_profitable_iters): Likewise.
4325 * tree-vect-slp.c (vect_record_max_nunits): Likewise.
4326 (vect_build_slp_tree_2): Likewise.
4327 (vect_supported_load_permutation_p): Likewise.
4328 (vect_slp_analyze_operations): Likewise.
4329 (vect_slp_analyze_bb_1): Likewise.
4330 (vect_slp_bb): Likewise.
4331 * tree-vect-stmts.c (vect_analyze_stmt): Likewise.
4332 * tree-vectorizer.c (try_vectorize_loop_1): Likewise.
4333 (pass_slp_vectorize::execute): Likewise.
4334 (increase_alignment): Likewise.
4336 2018-11-13 David Malcolm <dmalcolm@redhat.com>
4339 * ipa-inline.c (report_inline_failed_reason): Guard calls to
4340 cl_target_option_print_diff and cl_optimization_print_diff with
4343 2018-11-13 David Malcolm <dmalcolm@redhat.com>
4345 * doc/invoke.texi (-fsave-optimization-record): Note that the
4346 output is compressed.
4347 * optinfo-emit-json.cc: Include <zlib.h>.
4348 (optrecord_json_writer::write): Compress the output.
4350 2018-11-13 Aldy Hernandez <aldyh@redhat.com>
4352 * tree-vrp.c (value_range_base::dump): Dump type.
4353 Do not use INF nomenclature for 1-bit types.
4354 (dump_value_range): Group all variants to common dumping code.
4355 (debug): New overloaded functions for value_ranges.
4356 (value_range_base::dump): Remove no argument version.
4357 (value_range::dump): Same.
4359 2018-11-13 Richard Biener <rguenther@suse.de>
4361 PR tree-optimization/87931
4362 * tree-vect-loop.c (vect_is_simple_reduction): Restrict
4363 nested cycles we support to latch computations vectorizable_reduction
4366 2018-11-13 Martin Liska <mliska@suse.cz>
4368 PR tree-optimization/87885
4369 * cfghooks.c (account_profile_record): Rename
4371 (profile_record_check_consistency): ... this.
4372 Calculate missing num_mismatched_freq_in.
4373 (profile_record_account_profile): New function
4374 that calculates time and size of a function.
4375 * cfghooks.h (struct profile_record): Remove
4377 (struct cfg_hooks): Remove after_pass flag.
4378 (account_profile_record): Rename to ...
4379 (profile_record_check_consistency): ... this.
4380 (profile_record_account_profile): New.
4381 * cfgrtl.c (rtl_account_profile_record): Remove
4383 * passes.c (check_profile_consistency): Do only
4385 (account_profile): Calculate size and time of
4387 (pass_manager::dump_profile_report): Reformat
4389 (execute_one_ipa_transform_pass): Call
4390 consistency check before clean upand call account_profile
4391 after a clean up is done.
4392 (execute_one_pass): Call check_profile_consistency and
4393 account_profile instead of using after_pass flag..
4394 * tree-cfg.c (gimple_account_profile_record): Likewise.
4396 2018-11-13 Martin Liska <mliska@suse.cz>
4399 * config/i386/i386.c (ix86_option_override_internal): Error
4400 about usage -mabi=ms and -fsanitize={,kernel-}address.
4402 2018-11-13 Andre Vieira <andre.simoesdiasvieira@arm.com>
4404 * config/aarch64/aarch64.c
4405 (aarch64_vectorize_preferred_vector_alignment): Change return type to
4407 (aarch64_simd_vector_alignment_reachable): Adapt to preferred vector
4408 alignment being a poly int.
4409 * doc/tm.texi (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): Change
4410 return type to poly_uint64.
4411 * target.def (default_preferred_vector_alignment): Likewise.
4412 * targhooks.c (default_preferred_vector_alignment): Likewise.
4413 * targhooks.h (default_preferred_vector_alignment): Likewise.
4414 * tree-vect-data-refs.c (vect_calculate_target_alignment): Likewise.
4415 (vect_compute_data_ref_alignment): Adapt to vector alignment being a
4417 (vect_update_misalignment_for_peel): Likewise.
4418 (vect_enhance_data_refs_alignment): Likewise.
4419 (vect_find_same_alignment_drs): Likewise.
4420 (vect_duplicate_ssa_name_ptr_info): Likewise.
4421 (vect_setup_realignment): Likewise.
4422 (vect_can_force_dr_alignment_p): Change alignment parameter type to
4424 * tree-vect-loop-manip.c (get_misalign_in_elems): Learn to construct a
4425 mask with a compile time variable vector alignment.
4426 (vect_gen_prolog_loop_niters): Adapt to vector alignment being a poly
4428 (vect_do_peeling): Exit early if vector alignment is not constant.
4429 * tree-vect-stmts.c (ensure_base_align): Adapt to vector alignment being
4431 (vectorizable_store): Likewise.
4432 (vectorizable_load): Likweise.
4433 * tree-vectorizer.h (struct dr_vec_info): Make target_alignment field a
4435 (vect_known_alignment_in_bytes): Adapt to vector alignment being a
4437 (vect_can_force_dr_alignment_p): Change alignment parameter type to
4440 2018-11-13 Richard Biener <rguenther@suse.de>
4442 PR tree-optimization/87962
4443 * tree-vect-loop.c (vect_is_simple_reduction): More reliably
4444 detect outer reduction for disqualifying in-loop uses.
4446 2018-11-13 Richard Biener <rguenther@suse.de>
4448 PR tree-optimization/87967
4449 * tree-vect-loop.c (vect_transform_loop): Also copy PHIs
4450 for constants for the scalar loop.
4452 2018-11-13 Alan Modra <amodra@gmail.com>
4454 * config/rs6000/linux64.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Exclude
4455 integer constants when -mcmodel=medium.
4457 2018-11-13 Claudiu Zissulescu <claziss@synopsys.com>
4459 * config/arc/arc.h (FUNCTION_PROFILER): Redefine to empty.
4460 * config/arc/elf.h (PROFILE_HOOK): Define.
4461 * config/arc/linux.h (PROFILE_HOOK): Likewise.
4463 2018-11-13 Claudiu Zissulescu <claziss@synopsys.com>
4465 * config/arc/arc.c (hwloop_optimize): Bailout when detecting a
4466 jump table data in the text section.
4468 2018-11-13 Claudiu Zissulescu <claziss@synopsys.com>
4470 * config/arc/arc.c (arc_eh_return_address_location): Repurpose it
4471 to fit the eh_return pattern.
4472 * config/arc/arc.md (eh_return): Define.
4473 (VUNSPEC_ARC_EH_RETURN): Likewise.
4474 * config/arc/arc-protos.h (arc_eh_return_address_location): Match
4476 * config/arc/arc.h (EH_RETURN_HANDLER_RTX): Remove it.
4479 2018-11-13 Claudiu Zissulescu <claziss@synopsys.com>
4481 * common/config/arc/arc-common.c (arc_option_optimization_table):
4482 Millicode optimization is default on for size optimizations.
4483 * config/arc/arc-protos.h (arc_check_multi): New function.
4484 * config/arc/arc.c (RTX_OK_FOR_OFFSET_P): Rearange.
4485 (ENTER_LEAVE_START_REG): Define.
4486 (ENTER_LEAVE_END_REG): Likewise.
4487 (arc_override_options): Disable millicode when long calls option
4489 (arc_frame_info): Change it from int to bool.
4490 (arc_compute_frame_size): Clean up.
4491 (arc_save_restore): Remove.
4492 (frame_save_reg): New function.
4493 (frame_restore_reg): Likewise.
4494 (arc_enter_leave_p): Likewise.
4495 (arc_save_callee_saves): Likewise.
4496 (arc_restore_callee_saves): Likewise.
4497 (arc_save_callee_enter): Likewise.
4498 (arc_restore_callee_leave): Likewise.
4499 (arc_save_callee_milli): Likewise.
4500 (arc_restore_callee_milli): Likewise.
4501 (arc_expand_prologue): Reimplement to emit enter/leave
4503 (arc_expand_epilogue): Likewise.
4504 (arc_check_multi): New function.
4505 * config/arc/arc.md (push_multi_fp): New pattern.
4506 (push_multi_fp_blink): Likewise.
4507 (pop_multi_fp): Likewise.
4508 (pop_multi_fp_blink): Likewise.
4509 (pop_multi_fp_ret): Likewise.
4510 (pop_multi_fp_blink_ret): Likewise.
4511 * config/arc/arc.opt (mmillicode): Update option.
4512 (mcode-density-frame): New option.
4513 * config/arc/predicates.md (push_multi_operand): New predicate.
4514 (pop_multi_operand): Likewise.
4515 * doc/invoke.texi (ARC): Update ARC options information.
4518 2018-11-13 Claudiu Zissulescu <claziss@synopsys.com>
4520 * config/arc/arc-protos.h (gen_operands_ldd_std): Add.
4521 * config/arc/arc.c (operands_ok_ldd_std): New function.
4522 (mem_ok_for_ldd_std): Likewise.
4523 (gen_operands_ldd_std): Likewise.
4524 * config/arc/arc.md: Add peephole2 rules for std/ldd.
4526 2018-11-13 Eric Botcazou <ebotcazou@adacore.com>
4528 * toplev.c (output_stack_usage): Turn test on flag_stack_usage into
4529 test on stack_usage_file.
4530 (lang_dependent_init): Do not open the .su file if generating LTO.
4532 2018-11-13 Jakub Jelinek <jakub@redhat.com>
4534 PR rtl-optimization/87918
4535 * simplify-rtx.c (simplify_merge_mask): For COMPARISON_P, use
4536 simplify_gen_relational rather than simplify_gen_binary.
4538 2018-11-13 Richard Biener <rguenther@suse.de>
4540 * tree-ssanames.h (set_range_info): Use value_range_base.
4541 (get_range_info): Likewise.
4542 * tree-ssanames.c (set_range_info): Likewise.
4543 (get_range_info): Likewise.
4544 * tree-vrp.c (value_range_base::union_helper): Split
4545 out common parts of value_range[_base]::union_.
4546 (value_range_base::union_): Update.
4547 (value_range::union_): Likewise.
4548 (determine_value_range_1): Use value_range_base.
4549 (determine_value_range): Likewise.
4550 * tree-vrp.h (value_range_base::union_helper): Move ...
4551 (value_range::union_helper): ... from here.
4553 2018-11-13 Alan Modra <amodra@gmail.com>
4555 * config/rs6000/rs6000.c (rs6000_secondary_reload_inner): Negate
4557 (rs6000_secondary_reload_gpr): Don't call find_replacement.
4559 2018-11-13 Sandra Loosemore <sandra@codesourcery.com>
4562 * doc/invoke.texi (Optimize Options): Clarify that the
4563 l1-cache-line-size, l1-cache-size, and l2-cache-size parameters
4564 apply to data cache size.
4566 2018-11-13 Alan Modra <amodra@gmail.com>
4568 * config/rs6000/predicates.md (logical_const_operand),
4569 (logical_operand): Correct comment.
4570 * config/rs6000/rs6000.c (rs6000_emit_prologue): Comment fix.
4572 2018-11-13 Alan Modra <amodra@gmail.com>
4574 * config/rs6000/rs6000.md (addsi3_high): Prefix with '*'.
4576 2018-11-13 Alan Modra <amodra@gmail.com>
4578 * gcc/doc/md.texi (Machine Constraints): Correct rs6000 h constraint
4580 * config/rs6000/rs6000.md (movsi_internal1): Delete MT%0 case
4581 covered by alternative.
4582 (movcc_internal1): Ignore h for register preference.
4583 (mov<mode>_hardfloat64): Likewise.
4584 (mov<mode>_softfloat): Ignore c, l, h for register preference.
4586 2018-11-12 Sandra Loosemore <sandra@codesourcery.com>
4588 PR preprocessor/47823
4589 * doc/cpp.texi (Alternatives to Wrapper #ifndef): Move #pragma once
4592 * doc/extend.texi (Pragmas): Note additional pragmas documented
4595 2018-11-13 Kugan Vivekanandarajah <kuganv@linaro.org>
4599 * tree-scalar-evolution.c (expression_expensive_p): Make
4600 BUILTIN POPCOUNT as expensive when backend does not define it.
4602 2018-11-12 Fredrik Noring <noring@nocrew.org>
4604 * config.gcc: Update with-llsc defaults for MIPS r5900.
4606 2018-11-12 Martin Liska <mliska@suse.cz>
4608 PR gcov-profile/87442
4609 * common.opt: Add -fprofile-filter-files and -fprofile-exclude-files
4611 * doc/invoke.texi: Document them.
4612 * tree-profile.c (parse_profile_filter): New.
4613 (parse_profile_file_filtering): Likewise.
4614 (release_profile_file_filtering): Likewise.
4615 (include_source_file_for_profile): Likewise.
4616 (tree_profiling): Filter source files based on the
4617 newly added options.
4619 2018-11-12 Martin Liska <mliska@suse.cz>
4622 * doc/extend.texi: Add missing values for __builtin_cpu_is and
4623 __builtin_cpu_supports for x86 target.
4625 2018-11-12 Sandra Loosemore <sandra@codesourcery.com>
4628 * doc/rtl.texi (Constants): Clarify that mode of "high" doesn't
4630 (Arithmetic): Likewise for "lo_sum".
4632 2018-11-12 Renlin Li <renlin.li@arm.com>
4635 * dse.c (get_stored_val): Add check for compile-time constantness
4638 2018-11-12 Sudakshina Das <sudi.das@arm.com>
4640 * config/arm/arm-cpus.in (armv8_5, sb, predres): New features.
4641 (ARMv8_5a): New fgroup.
4642 (armv8.5-a): New arch.
4643 (armv8-a, armv8.1-a, armv8.2-a, armv8.3-a, armv8.4-a): New options
4645 * config/arm/arm-tables.opt: Regenerate.
4646 * config/arm/t-aprofile: Add matching rules for -march=armv8.5-a
4647 * config/arm/t-arm-elf (all_v8_archs): Add armv8.5-a.
4648 * config/arm/t-multilib (v8_5_a_simd_variants): New variable.
4649 Add matching rules for -march=armv8.5-a and extensions.
4650 * doc/invoke.texi (ARM options): Document -march=armv8.5-a.
4651 Add sb and predres to all armv8-a except armv8.5-a.
4653 2018-11-12 Richard Biener <rguenther@suse.de>
4655 * tree-vrp.h (value_range[_base]::set): Make public. Provide
4656 overload for single value.
4657 (value_range[_base]::set_nonnull): New.
4658 (value_range[_base]::set_null): Likewise.
4659 (value_range): Document bitmap copying behavior, mark
4660 copy constructor and assignment operator deleted.
4661 (value_range::move): New.
4662 (value_range::set_and_canonicalize): Default bitmap to zero.
4663 (set_value_range_to_nonnull): Remove.
4664 (set_value_range_to_null): Likewise.
4665 (set_value_range): Likewise.
4666 (set_value_range_to_value): Likewise.
4667 (extract_range_from_unary_expr): Work on value_range_base.
4668 (extract_range_from_binary_expr_1): Likewise. Rename to...
4669 (extract_range_from_binary_expr): ... this.
4670 * tree-vrp.c (value_range::update): Clear equiv bitmap
4672 (value_range::move): New, move equiv bitmap.
4673 (value_range_base::set_undefined): Avoid assignment.
4674 (value_range::set_undefined): Likewise.
4675 (value_range_base::set_varying): Likewise.
4676 (value_range::set_varying): Likewise.
4677 (set_value_range): Remove.
4678 (value_range_base::set): New overload for value.
4679 (value_range::set): Likewise.
4680 (set_value_range_to_nonnull): Remove.
4681 (value_range_base::set_nonnull): New.
4682 (value_range::set_nonnull): Likewise.
4683 (set_value_range_to_null): Remove.
4684 (value_range_base::set_null): New.
4685 (value_range::set_null): Likewise.
4686 (range_is_null): Work on value_range_base.
4687 (range_is_nonnull): Likewise.
4688 (ranges_from_anti_range): Likewise.
4689 (extract_range_into_wide_ints): Likewise.
4690 (extract_range_from_multiplicative_op): Likewise.
4691 (extract_range_from_binary_expr): Likewise. Update for API changes.
4692 (extract_range_from_unary_expr): Likewise. Remove OBJ_TYPE_REF
4694 (value_range::intersect_helper): Avoid copy and assignment.
4695 (value_range::union_helper): Likewise.
4696 (determine_value_range_1): Adjust.
4697 * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::try_find_new_range):
4698 Avoid assignment by using move.
4699 (evrp_range_analyzer::record_ranges_from_stmt): Avoid assignment.
4700 * tree-ssa-threadedge.c (record_temporary_equivalences_from_phis):
4702 * tree-ssanames.c (get_range_info): Likewise.
4703 * vr-values.h (vr_values::get_vr_for_comparison): Adjust API.
4704 * vr-values.c (vr_values::get_value_range): Adjust.
4705 (vr_values::update_value_range): Likewise.
4706 (symbolic_range_based_on_p): Work on value_range_base.
4707 (vr_values::extract_range_from_binary_expr): Use value_range_base.
4708 (vr_values::extract_range_from_unary_expr): Likewise.
4709 (vr_values::extract_range_from_cond_expr): Avoid assignment.
4710 (vr_values::extract_range_from_comparison): Adjust.
4711 (vr_values::check_for_binary_op_overflow): Use value_range_base.
4712 (vr_values::extract_range_basic): Adjust.
4713 (vr_values::adjust_range_with_scev): Likewise.
4714 (vr_values::vrp_visit_assignment_or_call): Likewise.
4715 (vr_values::get_vr_for_comparison): Change API to avoid
4716 assignment and copy construction.
4717 (vr_values::compare_name_with_value): Adjust accordingly.
4718 (vr_values::compare_names): Likewise.
4719 (vr_values::extract_range_from_phi_node): Avoid assignment and
4720 bogus in-place modify of equiv bitmap.
4721 (vr_values::simplify_bit_ops_using_ranges): Use value_range_base.
4722 * ipa-prop.c (ipa_compute_jump_functions_for_edge): Adjust
4723 for extract_range_from_unary_expr API change.
4724 * ipa-cp.c (ipa_vr_operation_and_type_effects): Likewise.
4726 2018-11-12 Eric Botcazou <ebotcazou@adacore.com>
4728 * config/mcore/mcore.h (WORD_REGISTER_OPERATIONS): Remove duplicate.
4730 2018-11-12 Richard Biener <rguenther@suse.de>
4732 * tree-vrp.h (value_range_base::symbolic_p,
4733 value_range_base::constant_p, value_range_base::zero_p,
4734 value_range_base::singleton_p): Move from value_range.
4735 (value_range::dump): Add.
4736 * gimple-ssa-evrp-analyze.c
4737 (evrp_range_analyzer::record_ranges_from_phis): Use set_varying.
4738 * ipa-cp.c (ipcp_vr_lattice::print): Use dump_value_range.
4739 * tree-ssa-threadedge.c (record_temporary_equivalences_from_phis):
4741 * tree-vrp.c (value_range::symbolic_p): Move to value_range_base.
4742 (value_range::constant_p): Likewise.
4743 (value_range::singleton_p): Likewise.
4744 (value_range_base::dump): Add.
4745 (set_value_range_to_undefined): Remove.
4746 (set_value_range_to_varying): Likewise.
4747 (range_int_cst_p): Take value_range_base argument.
4748 (range_int_cst_singleton_p): Likewise.
4749 (value_range_constant_singleton): Likewise.
4750 (vrp_set_zero_nonzero_bits): Likewise.
4751 (extract_range_from_multiplicative_op): Use set_varying.
4752 (extract_range_from_binary_expr_1): Likewise. Use set_undefined.
4753 (extract_range_from_unary_expr): Likewise.
4754 (dump_value_range_base): Change to overload of dump_value_range.
4755 (vrp_prop::vrp_initialize): Use set_varying and set_undefined.
4756 (vrp_prop::visit_stmt): Likewise.
4757 (value_range::intersect_helper): Likewise.
4758 (value_range::union_helper): Likewise.
4759 (determine_value_range_1): Likewise.
4761 2018-11-12 Richard Biener <rguenther@suse.de>
4763 * tree-vrp.c (set_value_range_to_nonnull): Clear equiv.
4764 (set_value_range_to_null): Likewise.
4765 * vr-values.c (vr_values::extract_range_from_comparison):
4766 Clear equiv for constant singleton ranges.
4768 2018-11-12 Wei Xiao <wei3.xiao@intel.com>
4770 * config/i386/sse.md: Combine VFIXUPIMM* patterns
4771 (<avx512>_fixupimm<mode>_maskz<round_saeonly_expand_name>): Update.
4772 (<avx512>_fixupimm<mode><sd_maskz_name><round_saeonly_name>): Update.
4773 (<avx512>_fixupimm<mode>_mask<round_saeonly_name>): Remove.
4774 (avx512f_sfixupimm<mode>_maskz<round_saeonly_expand_name>): Update.
4775 (avx512f_sfixupimm<mode><sd_maskz_name><round_saeonly_name>): Update.
4776 (avx512f_sfixupimm<mode>_mask<round_saeonly_name>): Remove.
4778 2018-11-11 Sandra Loosemore <sandra@codesourcery.com>
4781 * doc/extend.texi (Common Type Attributes): For the align type
4782 attribute, copy language about decreasing alignment from the
4783 corresponding variable attribute.
4785 2018-11-11 Xianmiao Qu <xianmiao_qu@c-sky.com>
4787 * config/csky/csky.md (*fpuv2_nmulsf3_1, *fpuv2_nmuldf3_1): Handle
4790 2018-11-11 Sandra Loosemore <sandra@codesourcery.com>
4793 * doc/invoke.texi (C++ Dialect Options): Add warning about mixing
4794 -frtti and -fno-rtti code.
4796 2018-11-11 Sandra Loosemore <sandra@codesourcery.com>
4799 * doc/extend.texi (Other Builtins): Document probability associated
4800 with __builtin_expect.
4802 2018-11-11 Uros Bizjak <ubizjak@gmail.com>
4805 * config/i386/i386.h (STACK_BOUNDARY): Use TARGET_64BIT_MS_ABI
4806 instead of (TARGET_64BIT && ix86_abi == MS_ABI).
4807 * config/i386/darwin.h (STACK_BOUNDARY): Ditto.
4808 * config/i386/cygming.h (STACK_BOUNDARY): Remove.
4810 2018-11-11 Xianmiao Qu <xianmiao_qu@c-sky.com>
4812 * config/csky/csky-linux-elf.h (CC1_SPEC): Support -profile.
4814 2018-11-11 Xianmiao Qu <xianmiao_qu@c-sky.com>
4816 * config/csky/csky.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
4818 2018-11-11 Richard Biener <rguenther@suse.de>
4820 * tree-vrp.h (class value_range_base): New base class for
4821 value_range containing all but the m_equiv member.
4822 (dump_value_range_base): Add.
4823 (range_includes_zero_p): Work on value_range_base.
4824 * tree-vrp.c (value_range_base::set): Split out base handling
4826 (value_range::set): this.
4827 (value_range::set_equiv): New.
4828 (value_range_base::value_range_base): New constructors.
4829 (value_range_base::check): Split out base handling from...
4830 (value_range::check): this.
4831 (value_range::equal_p): Refactor in terms of
4832 ignore_equivs_equal_p which is now member of the base.
4833 (value_range_base::set_undefined): New.
4834 (value_range_base::set_varying): Likewise.
4835 (value_range_base::dump):Split out base handling from...
4836 (value_range::dump): this.
4837 (value_range_base::set_and_canonicalize): Split out base handling
4839 (value_range::set_and_canonicalize): this.
4840 (value_range_base::union_): New.
4841 * ipa-prop.h (struct ipa_jump_func): Use value_range_base *
4843 * ipa-cp.c (class ipcp_vr_lattice): Use value_range_base
4844 instead of value_range everywhere.
4845 (ipcp_vr_lattice::print): Use dump_value_range_base.
4846 (ipcp_vr_lattice::meet_with): Adjust.
4847 (ipcp_vr_lattice::meet_with_1): Likewise.
4848 (ipa_vr_operation_and_type_effects): Likewise.
4849 (propagate_vr_across_jump_function): Likewise.
4850 * ipa-prop.c (struct ipa_vr_ggc_hash_traits): Likewise.
4851 (ipa_get_value_range): Likewise.
4852 (ipa_set_jfunc_vr): Likewise.
4853 (ipa_compute_jump_functions_for_edge): Likewise.
4855 2018-11-10 Sandra Loosemore <sandra@codesourcery.com>
4858 * doc/invoke.texi (Optimize Options): Add @opindex entries
4859 for the positive forms of -fno-xxx and -mno-xxx options
4860 that were lacking them.
4862 2018-11-10 Segher Boessenkool <segher@kernel.crashing.org>
4864 * combine.c (make_more_copies): Only make an intermediate copy if the
4865 dest of a move is a pseudo.
4867 2018-11-09 Maya Rashish <coypu@sdf.org>
4870 * config/netbsd-elf.h (NETBSD_STARTFILE_SPEC): Use crtbeginS.o for PIE.
4871 (NETBSD_ENDFILE_SPEC): Use crtendS.o for PIE.
4873 2018-11-09 Sandra Loosemore <sandra@codesourcery.com>
4877 * doc/invoke.texi (Optimize Options): Clarify default behavior
4878 for -fno-toplevel-reorder, -fno-defer-pop, and -fno-branch-count-reg.
4880 2018-11-09 Bernd Edlinger <bernd.edlinger@hotmail.de>
4882 PR tree-optimization/87940
4883 * expr.c (string_constant): Don't strip NOPS in subexpressions.
4884 Fold PLUS_EXPR correctly.
4886 2018-11-09 Ilya Leoshkevich <iii@linux.ibm.com>
4889 * config/s390/s390.c (s390_safe_relative_long_p): New function.
4890 (annotate_constant_pool_refs): Skip insns which support
4891 relative addressing.
4892 (annotate_constant_pool_refs_1): New helper function.
4893 (find_constant_pool_ref): Skip insns which support relative
4895 (find_constant_pool_ref_1): New helper function.
4896 (replace_constant_pool_ref): Skip insns which support
4897 relative addressing.
4898 (replace_constant_pool_ref_1): New helper function.
4899 (s390_mainpool_start): Adapt to the new signature.
4900 (s390_mainpool_finish): Likewise.
4901 (s390_chunkify_start): Likewise.
4902 (s390_chunkify_finish): Likewise.
4903 (pass_s390_early_mach::execute): Likewise.
4904 (s390_prologue_plus_offset): Likewise.
4905 (s390_emit_prologue): Likewise.
4906 (s390_emit_epilogue): Likewise.
4908 2018-11-09 Jakub Jelinek <jakub@redhat.com>
4910 * gimplify.c (gimplify_scan_omp_clauses): Call sorry_at for valid
4911 but unsupported lastprivate with conditional modifier.
4913 2018-11-09 Jeff Law <law@redhat.com>
4915 * config/mips/mips.c (mips_loongson_ext2_prefetch_cookie): Handle
4916 unused argument better. Add gcc_unreachable to silence warning.
4918 2018-11-09 Martin Sebor <msebor@redhat.com>
4921 * attribs.c (has_attribute): New helper function.
4922 (decls_mismatched_attributes, maybe_diag_alias_attributes): Same.
4923 * attribs.h (decls_mismatched_attributes): Declare.
4924 * cgraphunit.c (handle_alias_pairs): Call maybe_diag_alias_attributes.
4925 (maybe_diag_incompatible_alias): Use OPT_Wattribute_alias_.
4926 * common.opt (-Wattribute-alias): Take an argument.
4927 (-Wno-attribute-alias): New option.
4928 * doc/extend.texi (Common Function Attributes): Document copy.
4929 (Common Variable Attributes): Same.
4930 * doc/invoke.texi (-Wmissing-attributes): Document enhancement.
4931 (-Wattribute-alias): Document new option argument.
4933 2018-11-09 Richard Earnshaw <rearnsha@arm.com>
4935 * config/arm/parsecpu.awk (/alias/): Tighten invisible alias
4936 matching criteria. Remove unused array initializer.
4938 2018-11-09 Bill Schmidt <wschmidt@linux.ibm.com>
4939 Jinsong Ji <jji@us.ibm.com>
4941 * config/rs6000/xmmintrin.h (_mm_cvtss_si32): Fix incorrect
4942 constraints by introducing a new temporary.
4943 (_mm_cvtss_si64): Likewise.
4945 2018-11-09 Martin Liska <mliska@suse.cz>
4947 * common.opt: Add -fipa-stack-alignment flag.
4948 * doc/invoke.texi: Document it.
4949 * final.c (rest_of_clean_state): Guard stack
4950 shrinking with flag.
4952 2018-11-09 Martin Liska <mliska@suse.cz>
4954 * cgraph.h (ipa_discover_readonly_nonaddressable_vars): Rename
4956 (ipa_discover_variable_flags): ... this.
4957 * common.opt: Come up with new flag -fipa-reference-addressable.
4958 * doc/invoke.texi: Document it.
4959 * ipa-reference.c (propagate): Call the renamed fn.
4960 * ipa-visibility.c (whole_program_function_and_variable_visibility):
4962 * ipa.c (ipa_discover_readonly_nonaddressable_vars): Renamed to
4964 (ipa_discover_variable_flags): ... this. Discover
4965 non-addressable variables only with the newly added flag.
4966 * opts.c: Enable the newly added flag with -O1 and higher
4969 2018-11-09 David Malcolm <dmalcolm@redhat.com>
4971 * json.cc (selftest::test_writing_literals): Fix comment.
4973 2018-11-09 Martin Liska <mliska@suse.cz>
4975 * config/aarch64/aarch64.c (aarch64_parse_arch): Do not copy
4976 string to a stack buffer.
4977 (aarch64_parse_cpu): Likewise.
4978 (aarch64_parse_tune): Likewise.
4980 2018-11-09 Richard Biener <rguenther@suse.de>
4982 PR tree-optimization/87953
4983 * tree-vect-loop.c (vectorizable_reduction): For analysis
4984 always pass ops[0] to vectorizable_condition.
4986 2018-11-09 Stafford Horne <shorne@gmail.com>
4987 Richard Henderson <rth@twiddle.net>
4988 Joel Sherrill <joel@rtems.org>
4990 * common/config/or1k/or1k-common.c: New file.
4991 * config/or1k/*: New.
4992 * config.gcc (or1k*-*-*): New.
4993 * configure.ac (or1k*-*-*): New test for openrisc tls.
4994 * configure: Regenerated.
4995 * doc/install.texi: Document OpenRISC triplets.
4996 * doc/invoke.texi: Document OpenRISC arguments.
4997 * doc/md.texi: Document OpenRISC.
4999 2018-11-09 Richard Earnshaw <rearnsha@arm.com>
5001 * config/arm/arm-cpus.in (arm7tdmi): Add an alias for arm7tdmi-s.
5002 (arm7tdmi-s): Delete CPU.
5003 (arm710t): Add aliases for arm720t and arm740t.
5004 (arm720t, arm740t): Delete CPUs.
5005 (arm920t): Add aliases for arm920, arm922t and arm940t.
5006 (arm920, arm922t, arm940t): Delete CPUs.
5007 (arm10tdmi): Add alias for arm1020t.
5008 (arm1020t): Delete CPU.
5009 (arm9e): Add aliases for arm946e-s, arm966e-s and arm968e-s.
5010 (arm946e-s, arm966e-s, arm968e-s): Delete CPUs.
5011 (arm10e): Add aliases for arm1020e and arm1022e.
5012 (arm1020e, arm1022e): Delete CPU.
5013 * config/arm/arm.md (generic_sched): Remove entries that are now
5015 (generic_vfp): Likewise.
5016 * config/arm/arm1020e.md: Simplify tuning selection based on alias
5018 * config/arm/arm-tune.md: Regenerated.
5019 * config/arm/arm-tables.opt: Regenerated.
5021 2018-11-09 Richard Biener <rguenther@suse.de>
5023 PR tree-optimization/87621
5024 * tree-vect-loop.c (vectorizable_reduction): Handle reduction
5025 op with only phi inputs.
5026 * tree-ssa-loop-ch.c: Include tree-ssa-sccvn.h.
5027 (ch_base::copy_headers): Run CSE on copied loop headers.
5028 (pass_ch_vect::process_loop_p): Simplify.
5030 2018-11-09 Alexandre Oliva <oliva@adacore.com>
5032 * config/i386/mingw32.h (LINK_SPEC_LARGE_ADDR_AWARE): Adjust
5033 for non-w64 x86_64 biarch.
5035 2018-11-09 Alexandre Oliva <aoliva@redhat.com>
5037 PR rtl-optimization/86438
5038 * compare-elim.c (try_eliminate_compare): Use SET_SRC instead
5039 of in_b for the compare if in_b is SET_DEST.
5042 * config/i386/i386.c (ix86_const_not_ok_for_debug_p): Reject
5043 non-toplevel UNSPEC.
5045 2018-11-08 Aldy Hernandez <aldyh@redhat.com>
5047 * tree-vrp.c (value_range::check): Do not access internals
5049 (value_range::singleton_p): Same.
5050 (value_range::type): Same.
5051 (vrp_finalize): Use value_range API.
5053 2018-11-08 Aldy Hernandez <aldyh@redhat.com>
5055 * tree-vrp.c (may_contain_p): Do not access m_min/m_max directly.
5057 2018-11-08 Aldy Hernandez <aldyh@redhat.com>
5059 * vr-values.c (vr_values::get_value_range): Use value_range API
5060 instead of piecing together ranges.
5061 (vr_values::update_value_range): Same.
5063 2018-11-08 Aldy Hernandez <aldyh@redhat.com>
5065 * gimple-fold.c (size_must_be_zero_p): Use value_range API instead
5066 of performing ad-hoc calculations.
5067 * tree-ssanames.c (set_range_info): New overloaded function
5068 accepting value_range &.
5069 (get_range_info): Same.
5070 * tree-ssanames.h (set_range_info_raw): Remove.
5071 (set_range_info): New prototype.
5072 (get_range_info): Same.
5073 * tree-vrp.h (value_range::null_p): Rename to zero_p.
5074 * tree-vrp.c (value_range::null_p): Same.
5076 2018-11-09 Jan Hubicka <jh@suse.cz>
5078 * tree.c (fld_type_variant_equal_p): Test user align flag.
5079 (flt_type_variant): Copy user align flag.
5080 (fld_incomplete_type_of): Clear it.
5082 2018-11-09 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
5084 * config/arm/neon.md (div<mode>3): New pattern.
5086 2018-11-08 Andi Kleen <ak@linux.intel.com>
5088 * common/config/i386/i386-common.c (OPTION_MASK_ISA_PTWRITE_SET): New.
5089 (OPTION_MASK_ISA_PTWRITE_UNSET): New.
5090 (ix86_handle_option): Handle OPT_mptwrite.
5091 * config/i386/cpuid.h (bit_PTWRITE): Add.
5092 * config/i386/driver-i386.c (host_detect_local_cpu): Detect ptwrite.
5093 * config/i386/i386-builtin.def (BDESC): Add ptwrite32/64.
5094 * config/i386/i386-c.c (ix86_target_macros_internal): Define __PTWRITE__.
5095 * config/i386/i386.c (ix86_target_string): Handle ptwrite.
5096 (ix86_option_override_internal): Handle PTA_PTWRITE.
5097 (ix86_valid_target_attribute_inner_p): Define ptwrite.
5098 (def_builtin2): Force UINT64 to be 64bit only.
5099 * config/i386/i386.h (TARGET_PTWRITE): Add.
5100 (TARGET_PTWRITE_P): Add.
5102 * config/i386/i386.md: Define ptwrite.
5103 * config/i386/i386.opt: Add -mptwrite.
5104 * config/i386/immintrin.h (_ptwrite64): Add.
5106 * doc/extend.texi: Document __builtin_ia32_ptwrite*.
5107 * doc/invoke.texi: Document -mptwrite.
5109 2018-11-08 Peter Bergner <bergner@linux.ibm.com>
5111 PR rtl-optimization/87600
5112 * cfgexpand.c (expand_asm_stmt): Catch illegal asm constraint usage.
5113 * lra-constraints.c (process_alt_operands): Skip illegal hard
5114 register usage. Prefer reloading non hard register operands.
5116 2018-11-08 Sandra Loosemore <sandra@codesourcery.com>
5119 * doc/invoke.texi (Optimize Options): Clarify default behavior
5120 for -fno-sched-interblock and -fno-sched-spec.
5122 2018-11-08 Roman Geissler <roman.geissler@amadeus.com>
5124 * collect2.c (linker_select): Add USE_LLD_LD.
5125 (ld_suffixes): Add ld.lld.
5126 (main): Handle -fuse-ld=lld.
5127 * common.opt (-fuse-ld=lld): New option.
5128 * doc/invoke.texi (-fuse-ld=lld): Document.
5129 * opts.c (common_handle_option): Handle OPT_fuse_ld_lld.
5131 2018-11-08 Paul Koning <ni1d@arrl.net>
5133 * config/pdp11/constraints.md: Add "Z" series constraints for use
5134 with pre-dec and post-inc addressing.
5135 * config/pdp11/pdp11-protos.m (expand_block_move): Delete.
5136 (pdp11_expand_operands): Add int argument (word count).
5137 (pdp11_sp_frame_offset): Delete.
5138 (pdp11_cmp_length): New function.
5139 (pushpop_regeq): New function.
5140 * config/pdp11/pdp11.c (TARGET_STACK_PROTECT_RUNTIME_ENABLED_P):
5142 (pdp11_expand_prologue, pdp11_expand_epilogue): Rewrite for new
5144 (pdp11_initial_elimination_offset): Ditto.
5145 (pdp11_expand_operands): Add word count argument. Bugfixes.
5146 (output_move_multiple): Change how pointer adjustment is done.
5147 (pdp11_gen_int_label): Correct format.
5148 (output_ascii): Ditto.
5149 (pdp11_asm_output_var): Add code for DEC assembler case.
5150 (pdp11_asm_print_operand): Bugfix for CONST_DOUBLE holding integer
5152 (legitimate_const_double_p): Ditto.
5153 (pdp11_register_move_cost): Adjust for new register classes.
5154 (pdp11_regno_reg_class): Ditto.
5155 (expand_block_move): Delete.
5156 (pushpop_regeq): New function.
5157 (pdp11_legitimate_address_p): Bugfix in check for constant
5159 (pdp11_sp_frame_offset): Delete.
5160 (pdp11_reg_save_size): New helper function for new frame layout.
5161 (output_addr_const_pdp11): Remove CONST_DOUBLE case.
5162 (pdp11_expand_shift): Bugfix in check for constant shift count.
5163 (pdp11_shift_length): Ditto.
5164 (pdp11_assemble_shift): Copy input to pdp11_expand_operands.
5165 (pdp11_cmp_length): New function.
5166 * config/pdp11/pdp11.h (TARGET_CPU_CPP_BUILTINS): Add macros for
5167 some compile options.
5168 (FIXED_REGISTERS): Remove HARD_FRAME_POINTER_REGNUM.
5169 (CALL_USED_REGISTERS): Ditto.
5170 (ELIMINABLE_REGS): Ditto.
5171 (REGISTER_NAMES): Ditto.
5172 (reg_class): Add classes NOTR0_REG through NOTSP_REG for use by Z
5174 (REG_CLASS_NAMES): Ditto.
5175 (REG_CLASS_CONTENTS): Ditto. Also remove
5176 HARD_FRAME_POINTER_REGNUM.
5177 (CPU_REG_CLASS): New macro.
5178 (CLASS_MAX_NREGS): Adjust for new register classes.
5179 (FUNCTION_PROFILER): Make no-op.
5180 (may_call_alloca): Remove unused declaration.
5181 (ASM_OUTPUT_ALIGN): Add workaround for PR87795.
5182 (ASM_OUTPUT_SKIP): Fix format.
5183 * config/pdp11/pdp11.md (unspecv): Add UNSPECV_MOVMEM.
5184 (HARD_FRAME_POINTER_REGNUM): Remove.
5186 (*rts): Rename. Remove epilogue related checks.
5187 (cmpsi, cmpdi): New insn.
5188 (cbranch<mode>4): Change to apply to SI and DI modes as well.
5189 (mov<mode>): Change constraints to enforce that push/pop
5190 destination cannot use the same register as source.
5191 (*mov<mode><cc_cc>): Ditto.
5192 (movmemhi, movmemhi1, movmemhi_nocc): Change to expand block move
5193 at assembly output rather than as RTL expander.
5194 (zero_extendqihi2): Bugfix in check for same registers.
5195 (adddi3_nocc): Bugfix in check for constant operand.
5196 (addsi3_nocc): Ditto.
5197 (subdi3_nocc): Ditto.
5198 (subsi3_nocc): Ditto.
5199 (negdi2_nocc): Copy input to pdp11_expand_operands.
5200 (negsi2_nocc): Ditto.
5201 (bswap2_nocc): Ditto.
5202 * config/pdp11/pdp11.opt (mlra): Fix documentation.
5203 * config/pdp11/t-pdp11: Use -Os.
5205 2018-11-08 Richard Earnshaw <rearnsha@arm.com>
5207 * config/arm/parsecpu.awk (/alias/): New parsing rule.
5208 (/begin cpu/): Check that the cpu name hasn't been previously defined.
5209 (gen_comm_data): Print out CPU alias tables.
5210 (check_cpu): Match aliases when checking the CPU name.
5211 * config/arm/arm-protos.h (cpu_alias): New structure.
5212 (cpu_option): Add entry for aliases.
5213 * config/arm/arm-cpus.in (strongarm): Add aliases for strongarm110
5214 strongarm1100 and strongarm1110.
5215 (strongarm110, strongarm1100, strongarm1110): Delete CPU entries.
5216 (config/arm/arm-generic.md): Remove redundant references to
5217 strongarm110, strongarm1100 and strongarm1110.
5218 * common/config/arm/arm-common.c (arm_print_hint_for_cpu_option):
5219 Scan aliases for additional hints.
5220 (arm_parse_cpu_option_name): Also match a cpu name against the list
5222 * config/arm/arm-tables.opt: Regenerated.
5223 * config/arm/arm-tune.md: Regenerated.
5225 2018-11-08 Jakub Jelinek <jakub@redhat.com>
5227 * builtin-types.def (BT_FN_VOID_BOOL, BT_FN_VOID_SIZE_SIZE_PTR,
5228 BT_FN_UINT_UINT_PTR_PTR, BT_FN_UINT_OMPFN_PTR_UINT_UINT,
5229 BT_FN_BOOL_UINT_LONGPTR_LONG_LONG_LONGPTR_LONGPTR_PTR_PTR,
5230 BT_FN_BOOL_UINT_ULLPTR_LONG_ULL_ULLPTR_ULLPTR_PTR_PTR,
5231 BT_FN_BOOL_LONG_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR_PTR_PTR,
5232 BT_FN_BOOL_BOOL_ULL_ULL_ULL_LONG_ULL_ULLPTR_ULLPTR_PTR_PTR): New.
5233 * gengtype.c (open_base_files): Add omp-general.h.
5234 * gimple.c (gimple_build_omp_critical):
5235 (gimple_build_omp_taskgroup): Add CLAUSES argument. Call
5236 gimple_omp_taskgroup_set_clauses.
5237 (gimple_build_omp_atomic_load): Add mo argument, call
5238 gimple_omp_atomic_set_memory_order.
5239 (gimple_build_omp_atomic_store): Likewise.
5240 (gimple_copy): Adjust handling of GIMPLE_OMP_TASKGROUP.
5241 * gimple.def (GIMPLE_OMP_TASKGROUP): Use GSS_OMP_SINGLE_LAYOUT
5243 (GIMPLE_OMP_TEAMS): Use GSS_OMP_PARALLEL_LAYOUT instead
5244 of GSS_OMP_SINGLE_LAYOUT, adjust comments.
5245 * gimple.h (enum gf_mask): Add GF_OMP_TEAMS_HOST, GF_OMP_TASK_TASKWAIT
5246 and GF_OMP_ATOMIC_MEMORY_ORDER. Remove GF_OMP_ATOMIC_SEQ_CST, use
5247 different value for GF_OMP_ATOMIC_NEED_VALUE.
5248 (struct gimple_statement_omp_taskreg): Add GIMPLE_OMP_TEAMS to
5250 (struct gimple_statement_omp_single_layout): And remove here.
5251 (struct gomp_teams): Inherit from gimple_statement_omp_taskreg rather
5252 than gimple_statement_omp_single_layout.
5253 (is_a_helper <gimple_statement_omp_taskreg *>::test): Allow
5255 (is_a_helper <const gimple_statement_omp_taskreg *>::test): Likewise.
5256 (gimple_omp_subcode): Formatting fix.
5257 (gimple_omp_teams_child_fn, gimple_omp_teams_child_fn_ptr,
5258 gimple_omp_teams_set_child_fn, gimple_omp_teams_data_arg,
5259 gimple_omp_teams_data_arg_ptr, gimple_omp_teams_set_data_arg,
5260 gimple_omp_teams_host, gimple_omp_teams_set_host,
5261 gimple_omp_task_taskwait_p, gimple_omp_task_set_taskwait_p,
5262 gimple_omp_taskgroup_clauses, gimple_omp_taskgroup_clauses_ptr,
5263 gimple_omp_taskgroup_set_clauses): New inline functions.
5264 (gimple_build_omp_atomic_load): Add enum omp_memory_order argument.
5265 (gimple_build_omp_atomic_store): Likewise.
5266 (gimple_omp_atomic_seq_cst_p): Remove.
5267 (gimple_omp_atomic_memory_order): New function.
5268 (gimple_omp_atomic_set_seq_cst): Remove.
5269 (gimple_omp_atomic_set_memory_order): New function.
5270 (gimple_build_omp_taskgroup): Add clauses argument.
5271 * gimple-pretty-print.c (dump_gimple_omp_taskgroup): New function.
5272 (dump_gimple_omp_task): Print taskwait with depend clauses.
5273 (dump_gimple_omp_atomic_load, dump_gimple_omp_atomic_store): Use
5274 dump_omp_atomic_memory_order.
5275 (pp_gimple_stmt_1): Handle GIMPLE_OMP_TASKGROUP.
5276 * gimplify.c (enum gimplify_omp_var_data): Add GOVD_MAP_ALLOC_ONLY,
5277 GOVD_MAP_FROM_ONLY and GOVD_NONTEMPORAL.
5278 (enum omp_region_type): Reserve bits 1 and 2 for auxiliary flags,
5279 renumber values of most of ORT_* enumerators, add ORT_HOST_TEAMS,
5280 ORT_COMBINED_HOST_TEAMS, ORT_TASKGROUP, ORT_TASKLOOP and
5281 ORT_UNTIED_TASKLOOP enumerators.
5282 (enum gimplify_defaultmap_kind): New.
5283 (struct gimplify_omp_ctx): Remove target_map_scalars_firstprivate and
5284 target_map_pointers_as_0len_arrays members, add defaultmap.
5285 (new_omp_context): Initialize defaultmap member.
5286 (gimple_add_tmp_var): Handle ORT_TASKGROUP like ORT_WORKSHARE.
5287 (maybe_fold_stmt): Don't fold even in host teams regions.
5288 (omp_firstprivatize_variable): Handle ORT_TASKGROUP like
5289 ORT_WORKSHARE. Test ctx->defaultmap[GDMK_SCALAR] instead of
5290 ctx->omp_firstprivatize_variable.
5291 (omp_add_variable): Don't add private/firstprivate for VLAs in
5293 (omp_default_clause): Print "taskloop" rather than "task" if
5295 (omp_notice_variable): Handle ORT_TASKGROUP like ORT_WORKSHARE.
5296 Handle new defaultmap clause kinds.
5297 (omp_is_private): Handle ORT_TASKGROUP like ORT_WORKSHARE. Allow simd
5298 iterator to be lastprivate or private. Fix up diagnostics if linear
5299 is used on collapse>1 simd iterator.
5300 (omp_check_private): Handle ORT_TASKGROUP like ORT_WORKSHARE.
5301 (gimplify_omp_depend): New function.
5302 (gimplify_scan_omp_clauses): Add shared clause on parallel for
5303 combined parallel master taskloop{, simd} if taskloop has
5304 firstprivate, lastprivate or reduction clause. Handle
5305 OMP_CLAUSE_REDUCTION_TASK diagnostics. Adjust tests for
5306 ORT_COMBINED_TEAMS. Gimplify depend clauses with iterators. Handle
5307 cancel and simd OMP_CLAUSE_IF_MODIFIERs. Handle
5308 OMP_CLAUSE_NONTEMPORAL. Handle new defaultmap clause kinds. Handle
5309 OMP_CLAUSE_{TASK,IN}_REDUCTION. Diagnose invalid conditional
5311 (gimplify_adjust_omp_clauses_1): Ignore GOVD_NONTEMPORAL. Handle
5312 GOVD_MAP_ALLOC_ONLY and GOVD_MAP_FROM_ONLY.
5313 (gimplify_adjust_omp_clauses): Handle OMP_CLAUSE_NONTEMPORAL. Handle
5314 OMP_CLAUSE_{TASK,IN}_REDUCTION.
5315 (gimplify_omp_task): Handle taskwait with depend clauses.
5316 (gimplify_omp_for): Add shared clause on parallel for combined
5317 parallel master taskloop{, simd} if taskloop has firstprivate,
5318 lastprivate or reduction clause. Use ORT_TASKLOOP or
5319 ORT_UNTIED_TASKLOOP instead of ORT_TASK or ORT_UNTIED_TASK. Adjust
5320 tests for ORT_COMBINED_TEAMS. Handle C++ range for loops with
5321 NULL TREE_PURPOSE in OMP_FOR_ORIG_DECLS. Firstprivatize
5322 __for_end and __for_range temporaries on OMP_PARALLEL for
5323 distribute parallel for{, simd}. Move OMP_CLAUSE_REDUCTION
5324 and OMP_CLAUSE_IN_REDUCTION from taskloop to the task construct
5325 sandwiched in between two taskloops.
5326 (computable_teams_clause): Test ctx->defaultmap[GDMK_SCALAR]
5327 instead of ctx->omp_firstprivatize_variable.
5328 (gimplify_omp_workshare): Set ort to ORT_HOST_TEAMS or
5329 ORT_COMBINED_HOST_TEAMS if not inside of target construct. If
5330 host teams, use gimplify_and_return_first etc. for body like
5331 for target or target data constructs, and at the end call
5332 gimple_omp_teams_set_host on the GIMPLE_OMP_TEAMS object.
5333 (gimplify_omp_atomic): Use OMP_ATOMIC_MEMORY_ORDER instead
5334 of OMP_ATOMIC_SEQ_CST, pass it as new argument to
5335 gimple_build_omp_atomic_load and gimple_build_omp_atomic_store, remove
5336 gimple_omp_atomic_set_seq_cst calls.
5337 (gimplify_expr) <case OMP_TASKGROUP>: Move handling into a separate
5338 case, handle taskgroup clauses.
5339 * lto-streamer-out.c (hash_tree): Handle
5340 OMP_CLAUSE_{TASK,IN}_REDUCTION.
5341 * Makefile.in (GTFILES): Add omp-general.h.
5342 * omp-builtins.def (BUILT_IN_GOMP_TASKWAIT_DEPEND,
5343 BUILT_IN_GOMP_LOOP_NONMONOTONIC_RUNTIME_START,
5344 BUILT_IN_GOMP_LOOP_MAYBE_NONMONOTONIC_RUNTIME_START,
5345 BUILT_IN_GOMP_LOOP_START, BUILT_IN_GOMP_LOOP_ORDERED_START,
5346 BUILT_IN_GOMP_LOOP_DOACROSS_START,
5347 BUILT_IN_GOMP_LOOP_NONMONOTONIC_RUNTIME_NEXT,
5348 BUILT_IN_GOMP_LOOP_MAYBE_NONMONOTONIC_RUNTIME_NEXT,
5349 BUILT_IN_GOMP_LOOP_ULL_NONMONOTONIC_RUNTIME_START,
5350 BUILT_IN_GOMP_LOOP_ULL_MAYBE_NONMONOTONIC_RUNTIME_START,
5351 BUILT_IN_GOMP_LOOP_ULL_START, BUILT_IN_GOMP_LOOP_ULL_ORDERED_START,
5352 BUILT_IN_GOMP_LOOP_ULL_DOACROSS_START,
5353 BUILT_IN_GOMP_LOOP_ULL_NONMONOTONIC_RUNTIME_NEXT,
5354 BUILT_IN_GOMP_LOOP_ULL_MAYBE_NONMONOTONIC_RUNTIME_NEXT,
5355 BUILT_IN_GOMP_PARALLEL_LOOP_NONMONOTONIC_RUNTIME,
5356 BUILT_IN_GOMP_PARALLEL_LOOP_MAYBE_NONMONOTONIC_RUNTIME,
5357 BUILT_IN_GOMP_PARALLEL_REDUCTIONS, BUILT_IN_GOMP_SECTIONS2_START,
5358 BUILT_IN_GOMP_TEAMS_REG, BUILT_IN_GOMP_TASKGROUP_REDUCTION_REGISTER,
5359 BUILT_IN_GOMP_TASKGROUP_REDUCTION_UNREGISTER,
5360 BUILT_IN_GOMP_TASK_REDUCTION_REMAP,
5361 BUILT_IN_GOMP_WORKSHARE_TASK_REDUCTION_UNREGISTER): New builtins.
5362 * omp-expand.c (workshare_safe_to_combine_p): Return false for
5363 non-worksharing loops.
5364 (omp_adjust_chunk_size): Don't adjust anything if chunk_size is zero.
5365 (determine_parallel_type): Don't combine parallel with worksharing
5366 which has _reductemp_ clause.
5367 (expand_parallel_call): Emit the GOMP_*nonmonotonic_runtime* or
5368 GOMP_*maybe_nonmonotonic_runtime* builtins instead of GOMP_*runtime*
5369 if there is nonmonotonic modifier or if there is no modifier and no
5370 ordered clause. For dynamic and guided schedule without monotonic
5371 and nonmonotonic modifier, default to nonmonotonic.
5372 (expand_omp_for): Likewise. Adjust expand_omp_for_generic caller, use
5373 GOMP_loop{,_ull}{,_ordered,_doacross}_start builtins if there are
5375 (expand_task_call): Add GOMP_TASK_FLAG_REDUCTION flag to flags if
5376 there are any reduction clauses.
5377 (expand_taskwait_call): New function.
5378 (expand_teams_call): New function.
5379 (expand_omp_taskreg): Allow GIMPLE_OMP_TEAMS and call
5380 expand_teams_call for it. Formatting fix. Handle taskwait with
5382 (expand_omp_for_generic): Add SCHED_ARG argument. Handle expansion
5383 of worksharing loops with task reductions.
5384 (expand_omp_for_static_nochunk, expand_omp_for_static_chunk): Handle
5385 expansion of worksharing loops with task reductions.
5386 (expand_omp_sections): Handle expansion of sections with task
5388 (expand_omp_synch): For host teams call expand_omp_taskreg.
5389 (omp_memory_order_to_memmodel): New function.
5390 (expand_omp_atomic_load, expand_omp_atomic_store,
5391 expand_omp_atomic_fetch_op): Use it and gimple_omp_atomic_memory_order
5392 instead of gimple_omp_atomic_seq_cst_p.
5393 (build_omp_regions_1, omp_make_gimple_edges): Treat taskwait with
5394 depend clauses as a standalone directive.
5395 * omp-general.c (enum omp_requires): New variable.
5396 (omp_extract_for_data): Initialize have_reductemp member. Allow
5397 NE_EXPR even in OpenMP loops, transform them into LT_EXPR or
5398 GT_EXPR loops depending on incr sign. Formatting fixes.
5399 * omp-general.h (struct omp_for_data): Add have_reductemp member.
5400 (enum omp_requires): New enum.
5401 (omp_requires_mask): Declare.
5402 * omp-grid.c (grid_eliminate_combined_simd_part): Formatting fix.
5404 * omp-low.c (struct omp_context): Add task_reductions and
5405 task_reduction_map fields.
5406 (is_host_teams_ctx): New function.
5407 (is_taskreg_ctx): Return true also if is_host_teams_ctx.
5408 (use_pointer_for_field): Use is_global_var instead of
5409 TREE_STATIC || DECL_EXTERNAL, and apply only if not privatized
5411 (build_outer_var_ref): Ignore taskgroup outer contexts.
5412 (delete_omp_context): Release task_reductions and task_reduction_map.
5413 (scan_sharing_clauses): Don't add any fields for reduction clause on
5414 taskloop. Handle OMP_CLAUSE__REDUCTEMP_. Handle
5415 OMP_CLAUSE_{IN,TASK}_REDUCTION and OMP_CLAUSE_REDUCTION with task
5416 modifier. Don't ignore shared clauses in is_host_teams_ctx contexts.
5417 Handle OMP_CLAUSE_NONTEMPORAL.
5418 (add_taskreg_looptemp_clauses): Add OMP_CLAUSE__REDUCTEMP_ clause if
5420 (scan_omp_parallel): Add _reductemp_ clause if there are any reduction
5421 clauses with task modifier.
5422 (scan_omp_task): Handle taskwait with depend clauses.
5423 (finish_taskreg_scan): Move field corresponding to _reductemp_ clause
5424 first. Move also OMP_CLAUSE__REDUCTEMP_ clause in front if present.
5425 Handle GIMPLE_OMP_TEAMS like GIMPLE_OMP_PARALLEL.
5426 (scan_omp_for): Fix comment formatting.
5427 (scan_omp_teams): Handle host teams constructs.
5428 (check_omp_nesting_restrictions): Allow teams with no outer
5429 OpenMP context. Adjust diagnostics for teams strictly nested into
5430 some explicit OpenMP construct other than target. Allow OpenMP atomics
5431 inside of simd regions.
5432 (scan_omp_1_stmt): Call scan_sharing_clauses for taskgroups.
5433 (scan_omp_1_stmt) <case GIMPLE_OMP_TEAMS>: Temporarily bump
5434 taskreg_nesting_level while scanning host teams construct.
5435 (task_reduction_read): New function.
5436 (lower_rec_input_clauses): Handle OMP_CLAUSE_REDUCTION on taskloop
5437 construct. Handle OMP_CLAUSE_IN_REDUCTION and OMP_CLAUSE__REDUCTEMP_
5438 clauses. Handle OMP_CLAUSE_REDUCTION with task modifier. Remove
5439 second argument create_tmp_var if it is NULL. Don't ignore shared
5440 clauses in is_host_teams_ctx contexts. Handle
5441 OMP_CLAUSE_FIRSTPRIVATE_NO_REFERENCE on OMP_CLAUSE_FIRSTPRIVATE
5443 (lower_reduction_clauses): Ignore reduction clauses with task
5444 modifier. Remove second argument create_tmp_var if it is NULL.
5445 Initialize OMP_ATOMIC_MEMORY_ORDER to relaxed.
5446 (lower_send_clauses): Ignore reduction clauses with task modifier.
5447 Handle OMP_CLAUSE__REDUCTEMP_. Don't send anything for
5448 OMP_CLAUSE_REDUCTION on taskloop. Handle OMP_CLAUSE_IN_REDUCTION.
5449 (maybe_add_implicit_barrier_cancel): Add OMP_RETURN argument, don't
5450 rely that it is the last stmt in body so far. Ignore outer taskgroup
5452 (omp_task_reductions_find_first, omp_task_reduction_iterate,
5453 lower_omp_task_reductions): New functions.
5454 (lower_omp_sections): Handle reduction clauses with taskgroup
5455 modifiers. Adjust maybe_add_implicit_barrier_cancel caller.
5456 (lower_omp_single): Adjust maybe_add_implicit_barrier_cancel caller.
5457 (lower_omp_for): Likewise. Handle reduction clauses with taskgroup
5459 (lower_omp_taskgroup): Handle taskgroup reductions.
5460 (create_task_copyfn): Copy over OMP_CLAUSE__REDUCTEMP_ pointer.
5461 Handle OMP_CLAUSE_IN_REDUCTION and OMP_CLAUSE_REDUCTION clauses.
5462 (lower_depend_clauses): If there are any
5463 OMP_CLAUSE_DEPEND_DEPOBJ or OMP_CLAUSE_DEPEND_MUTEXINOUTSET
5464 depend clauses, use a new array format. If OMP_CLAUSE_DEPEND_LAST is
5465 seen, assume lowering is done already and return early. Set kind
5466 on artificial depend clause to OMP_CLAUSE_DEPEND_LAST.
5467 (lower_omp_taskreg): Handle reduction clauses with task modifier on
5468 parallel construct. Handle reduction clause on taskloop construct.
5469 Handle taskwait with depend clauses.
5470 (lower_omp_1): Use lower_omp_taskreg instead of lower_omp_teams
5471 for host teams constructs.
5472 * tree.c (omp_clause_num_ops): Add in_reduction, task_reduction,
5473 nontemporal and _reductemp_ clause entries.
5474 (omp_clause_code_name): Likewise.
5475 (walk_tree_1): Handle OMP_CLAUSE_{IN,TASK}_REDUCTION,
5476 OMP_CLAUSE_NONTEMPORAL and OMP_CLAUSE__REDUCTEMP_.
5477 * tree-core.h (enum omp_clause_code): Add
5478 OMP_CLAUSE_{{IN,TASK}_REDUCTION,NONTEMPORAL,_REDUCTEMP_}.
5479 (enum omp_clause_defaultmap_kind, enum omp_memory_order): New.
5480 (struct tree_base): Add omp_atomic_memory_order field into union.
5481 Remove OMP_ATOMIC_SEQ_CST comment.
5482 (enum omp_clause_depend_kind): Add OMP_CLAUSE_DEPEND_MUTEXINOUTSET
5483 and OMP_CLAUSE_DEPEND_DEPOBJ.
5484 (struct tree_omp_clause): Add subcode.defaultmap_kind.
5485 * tree.def (OMP_TASKGROUP): Add another operand, move next to other
5486 OpenMP constructs with body and clauses operands.
5487 * tree.h (OMP_BODY): Use OMP_MASTER instead of OMP_TASKGROUP.
5488 (OMP_CLAUSES): Use OMP_TASKGROUP instead of OMP_SINGLE.
5489 (OMP_TASKGROUP_CLAUSES): Define.
5490 (OMP_CLAUSE_DECL): Use OMP_CLAUSE__REDUCTEMP_ instead of
5491 OMP_CLAUSE__LOOPTEMP_.
5492 (OMP_ATOMIC_SEQ_CST): Remove.
5493 (OMP_ATOMIC_MEMORY_ORDER, OMP_CLAUSE_FIRSTPRIVATE_NO_REFERENCE,
5494 OMP_CLAUSE_LASTPRIVATE_CONDITIONAL): Define.
5495 (OMP_CLAUSE_REDUCTION_CODE, OMP_CLAUSE_REDUCTION_INIT,
5496 OMP_CLAUSE_REDUCTION_MERGE, OMP_CLAUSE_REDUCTION_PLACEHOLDER,
5497 OMP_CLAUSE_REDUCTION_DECL_PLACEHOLDER,
5498 OMP_CLAUSE_REDUCTION_OMP_ORIG_REF): Handle
5499 OMP_CLAUSE_{,IN_,TASK_}REDUCTION.
5500 (OMP_CLAUSE_REDUCTION_TASK, OMP_CLAUSE_REDUCTION_INSCAN,
5501 OMP_CLAUSE_DEFAULTMAP_KIND, OMP_CLAUSE_DEFAULTMAP_CATEGORY,
5502 OMP_CLAUSE_DEFAULTMAP_BEHAVIOR, OMP_CLAUSE_DEFAULTMAP_SET_KIND):
5504 * tree-inline.c (remap_gimple_stmt): Remap taskgroup clauses.
5505 * tree-nested.c (convert_nonlocal_omp_clauses): Handle
5506 OMP_CLAUSE__REDUCTEMP_, OMP_CLAUSE_NONTEMPORAL.
5507 (convert_local_omp_clauses): Likewise. Remove useless test.
5508 * tree-parloops.c (create_call_for_reduction_1): Pass
5509 OMP_MEMORY_ORDER_RELAXED as new argument to
5510 dump_gimple_omp_atomic_load and dump_gimple_omp_atomic_store.
5511 * tree-pretty-print.c (dump_omp_iterators): New function.
5512 (dump_omp_clause): Handle OMP_CLAUSE__REDUCTEMP_,
5513 OMP_CLAUSE_NONTEMPORAL, OMP_CLAUSE_{TASK,IN}_REDUCTION. Print
5514 reduction modifiers. Handle OMP_CLAUSE_DEPEND_DEPOBJ and
5515 OMP_CLAUSE_DEPEND_MUTEXINOUTSET. Print iterators in depend clauses.
5516 Print __internal__ for OMP_CLAUSE_DEPEND_LAST. Handle cancel and
5517 simd OMP_CLAUSE_IF_MODIFIERs. Handle new kinds of
5518 OMP_CLAUSE_DEFAULTMAP. Print conditional: for
5519 OMP_CLAUSE_LASTPRIVATE_CONDITIONAL.
5520 (dump_omp_atomic_memory_order): New function.
5521 (dump_generic_node): Use it. Print taskgroup clauses. Print
5522 taskwait with depend clauses.
5523 * tree-pretty-print.h (dump_omp_atomic_memory_order): Declare.
5524 * tree-streamer-in.c (unpack_ts_omp_clause_value_fields):
5525 Handle OMP_CLAUSE_{TASK,IN}_REDUCTION.
5526 * tree-streamer-out.c (pack_ts_omp_clause_value_fields,
5527 write_ts_omp_clause_tree_pointers): Likewise.
5529 2018-11-08 David Malcolm <dmalcolm@redhat.com>
5532 * doc/invoke.texi (-fdump-ipa-): Document the "-optimized",
5533 "-missed", "-note", and "-all" sub-options.
5534 * ipa-inline.c (caller_growth_limits): Port from fprintf to dump
5536 (can_early_inline_edge_p): Likewise.
5537 (want_early_inline_function_p): Likewise.
5538 (want_inline_self_recursive_call_p): Likewise.
5539 (recursive_inlining): Likewise.
5540 (inline_small_functions): Likewise.
5541 (flatten_function): Likewise.
5542 (ipa_inline): Likewise.
5543 (inline_always_inline_functions): Likewise.
5544 (early_inline_small_functions): Likewise.
5545 (early_inliner): Likewise.
5546 * tree-inline.c (expand_call_inline): Likewise.
5548 2018-11-08 David Malcolm <dmalcolm@redhat.com>
5550 * pretty-print.c (pp_format): Handle %f.
5551 (selftest::test_pp_format): Add test of %f.
5552 * pretty-print.h (pp_double): New macro.
5554 2018-11-08 David Malcolm <dmalcolm@redhat.com>
5556 * dump-context.h (ASSERT_IS_CGRAPH_NODE): New macro.
5557 * dumpfile.c (make_item_for_dump_cgraph_node): Move to before...
5558 (dump_pretty_printer::decode_format): Implement "%C" for
5560 (selftest::test_capture_of_dump_calls): Rename "where" to
5561 "stmt_loc". Convert test_decl to a function decl and set its
5562 location. Add a symbol_table_test RAII instance and a
5563 cgraph_node, using it to test "%C" and dump_symtab_node.
5565 2018-11-08 Eric Botcazou <ebotcazou@adacore.com>
5568 * cgraphclones.c (duplicate_thunk_for_node): Also set DECL_IGNORED_P.
5570 2018-11-08 David Malcolm <dmalcolm@redhat.com>
5572 * cgraph.c: Include "selftest.h".
5573 (saved_symtab): New variable.
5574 (selftest::symbol_table_test::symbol_table_test): New ctor.
5575 (selftest::symbol_table_test::~symbol_table_test): New dtor.
5576 (selftest::test_symbol_table_test): New test.
5577 (selftest::cgraph_c_tests): New.
5578 * cgraph.h (saved_symtab): New decl.
5579 (selftest::symbol_table_test): New class.
5580 * selftest-run-tests.c (selftest::run_tests): Call
5581 selftest::cgraph_c_tests.
5582 * selftest.h (selftest::cgraph_c_tests): New decl.
5584 2018-11-08 Richard Biener <rguenther@suse.de>
5586 * tree-data-ref.h (lambda_int): New typedef.
5587 (lambda_vector_gcd): Adjust.
5588 (lambda_vector_new): Likewise.
5589 (lambda_matrix_new): Likewise.
5590 * tree-data-ref.c (print_lambda_vector): Adjust.
5592 2018-11-08 Richard Biener <rguenther@suse.de>
5594 PR tree-optimization/87929
5595 * tree-complex.c (expand_complex_comparison): Clean EH.
5597 2018-11-08 Martin Liska <mliska@suse.cz>
5599 * doc/extend.texi: Reword.
5600 * predict.c (expr_expected_value_1): Likewise.
5602 2018-11-08 Richard Biener <rguenther@suse.de>
5604 PR tree-optimization/87913
5605 * tree-ssa-phiopt.c (minmax_replacement): Turn EQ/NE compares
5606 of extreme values to ordered comparisons.
5608 2018-11-07 Sandra Loosemore <sandra@codesourcery.com>
5611 * doc/invoke.texi (Code Gen Options): Clarify -fno-common behavior.
5613 2018-11-07 Sandra Loosemore <sandra@codesourcery.com>
5615 * doc/invoke.texi: Remove leading dash from @opindex entries
5616 throughout the file.
5618 2018-11-07 Sandra Loosemore <sandra@codesourcery.com>
5621 * doc/invoke.texi (Option Summary): Add -e and --entry.
5622 (Link Options): Likewise.
5624 2018-11-07 Nathan Sidwell <nathan@acm.org>
5627 * Makefile.in (bitmap.o-warn): Add -Wno-error to unbreak
5628 --disable-checking bootstrap.
5630 2018-11-07 Hafiz Abid Qadeer <abidh@codesourcery.com>
5632 * configure: Regenerated.
5634 2018-11-07 Jozef Lawrynowicz <jozef.l@mittosystems.com>
5637 * stor-layout.c (compute_record_mode): Set TYPE_MODE of UNION_TYPE
5638 to the mode of the widest field iff the widest field has mode class
5639 MODE_INT, or MODE_PARTIAL_INT and the union would be passed by
5642 2018-11-07 Nikolai Merinov <n.merinov@inango-systems.com>
5644 * common.opt: Add -Wattribute-warning.
5645 * doc/invoke.texi: Add documentation for -Wno-attribute-warning.
5646 * expr.c (expand_expr_real_1): Add new attribute to warning_at
5647 call to allow user configure behavior of "warning" attribute.
5649 2018-11-07 Segher Boessenkool <segher@kernel.crashing.org>
5651 * target.def: Put @: after every vs., e.g., and i.e. where it is
5652 followed by whitespace.
5653 * doc/extend.texi: Ditto.
5654 * doc/fragments.texi: Ditto.
5655 * doc/gimple.texi: Ditto.
5656 * doc/implement-c.texi: Ditto.
5657 * doc/install.texi: Ditto.
5658 * doc/invoke.texi: Ditto.
5659 * doc/md.texi: Ditto.
5660 * doc/plugins.texi: Ditto.
5661 * doc/rtl.texi: Ditto.
5662 * doc/sourcebuild.texi: Ditto.
5663 * doc/tm.texi.in: Ditto.
5664 * doc/ux.texi: Ditto.
5665 * doc/tm.texi: Regenerate.
5667 2018-11-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5669 * config/arm/arm-cpus.in (ares): New entry.
5670 * config/arm/arm-tables.opt: Regenerate.
5671 * config/arm/arm-tune.md: Likewise.
5672 * doc/invoke.texi (ARM Options): Document ares.
5674 2018-11-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5676 * config/aarch64/aarch64-cores.def (ares): Define.
5677 * config/aarch64/aarch64-tune.md: Regenerate.
5678 * doc/invoke.texi (AArch64 Options): Document ares value for mtune.
5680 2018-11-07 Jan Hubicka <jh@suse.cz>
5682 * tree.c (fld_incomplete_type_of): Clear TREE_ADDRESSABLE.
5683 (free_lang_data_in_decl): Set TREE_ADDRESSABLE for public vars and
5684 functions; clear TYPE_DECL_SUPPRESS_DEBUG and DECL_MODE for
5687 2018-11-07 Richard Biener <rguenther@suse.de>
5689 PR tree-optimization/87914
5690 * tree-vect-loop.c (vect_is_simple_reduction): Improve detection
5692 (vectorizable_reduction): Handle shifts and rotates by dispatching
5693 to vectorizable_shift.
5694 * tree-vect-stmts.c (vect_get_vec_def_for_operand_1): Handle
5695 in-loop uses of vect_nested_cycle defs. Merge cycle and internal
5697 (vectorizable_shift): Export and handle being called as
5699 (vect_analyze_stmt): Call vectorizable_shift after
5700 vectorizable_reduction.
5701 * tree-vectorizer.h (vectorizable_shift): Declare.
5703 2018-11-07 Jan Hubicka <jh@suse.cz>
5705 * ipa-devirt.c (odr_types_equivalent_p): Expect constants
5706 than const decls in TREE_VALUE of enum.
5707 (dump_type_inheritance_graph): Improve duplicate dumping.
5708 (free_enum_values): New.
5709 (build_type_inheritance_graph): Use it.
5710 * tree.c (free_lang_data_in_type): Free TYPE_VALUES of enums
5711 which are not main variants or not ODR types.
5712 (verify_type_variant): Expect variants to have no TYPE_VALUES.
5714 2018-11-07 Richard Biener <rguenther@suse.de>
5716 * ipa-inline.c (want_inline_small_function_p): Compute
5717 big_speedup_p lazily and last.
5719 2018-11-07 Jan Hubicka <jh@suse.cz>
5721 * tree.c (fld_type_variant_equal_p): Skip TYPE_ALIGN check when
5722 building incomplete variant of complete type.
5723 (fld_type_variant): Do not copy TYPE_ALIGN when building incomplete
5724 variant of complete type.
5726 2018-11-07 Chenghua Xu <paul.hua.gm@gmail.com>
5728 * config/mips/mips.c: Fix typo in documentation of
5729 mips_loongson_ext2_prefetch_cookie.
5730 (mips_option_override): fix brain twister logical.
5731 * config/mips/mips.h: Fix typo in documentation of
5732 ISA_HAS_CTZ_CTO and define pattern.
5733 * config/mips/mips.md (prefetch): Hoist EXT2 above
5735 (prefetch_indexed): Hoist EXT2 above the EXT block.
5737 2018-11-07 Jan Hubicka <jh@suse.cz>
5739 * tree.c (free_lang_data_in_type): Add fld parameter; simplify
5740 return and parameter types of function and method types.
5741 (free_lang_data_in_cgraph): Update.
5743 2018-11-07 Martin Liska <mliska@suse.cz>
5745 PR rtl-optimization/87868
5746 * postreload-gcse.c (eliminate_partially_redundant_load): Set
5747 threshold to max_count if we would overflow.
5748 * profile-count.h: Make max_count a public constant.
5750 2018-11-07 Martin Liska <mliska@suse.cz>
5752 * mem-stats.h: Fix GNU coding style.
5754 2018-11-07 Chenghua Xu <paul.hua.gm@gmail.com>
5756 * config/mips/gs264e.md: New.
5757 * config/mips/mips-cpus.def: Define gs264e.
5758 * config/mips/mips-tables.opt: Regenerate.
5759 * config/mips/mips.c (mips_rtx_cost_data): Add DEFAULT_COSTS for
5761 (mips_issue_rate): Add support for gs264e.
5762 (mips_multipass_dfa_lookahead): Likewise.
5763 * config/mips/mips.h: Define TARGET_GS264E and TUNE_GS264E.
5764 (MIPS_ISA_LEVEL_SPEC): Infer mips64r2 from gs264e.
5765 (MIPS_ASE_MSA_SPEC): New.
5766 (BASE_DRIVER_SELF_SPECS): march=gs264e implies -mmsa.
5767 (ISA_HAS_FUSED_MADD4): Enable for TARGET_GS264E.
5768 (ISA_HAS_UNFUSED_MADD4): Exclude TARGET_GS264E.
5769 * config/mips/mips.md: Include gs264e.md.
5770 (processor): Add gs264e.
5771 * config/mips/mips.opt (MSA): Use Mask instead of Var.
5772 * doc/invoke.texi: Add gs264e to supported architectures.
5774 2018-11-07 Chenghua Xu <paul.hua.gm@gmail.com>
5776 * config/mips/gs464e.md: New.
5777 * config/mips/mips-cpus.def: Define gs464e.
5778 * config/mips/mips-tables.opt: Regenerate.
5779 * config/mips/mips.c (mips_rtx_cost_data): Add DEFAULT_COSTS for
5781 (mips_issue_rate): Add support for gs464e.
5782 (mips_multipass_dfa_lookahead): Likewise.
5783 (mips_option_override): Enable MMI, EXT and EXT2 for gs464e.
5784 * config/mips/mips.h: Define TARGET_GS464E and TUNE_GS464E.
5785 (MIPS_ISA_LEVEL_SPEC): Infer mips64r2 from gs464e.
5786 (ISA_HAS_FUSED_MADD4): Enable for TARGET_GS464E.
5787 (ISA_HAS_UNFUSED_MADD4): Exclude TARGET_GS464E.
5788 * config/mips/mips.md: Include gs464e.md.
5789 (processor): Add gs464e.
5790 * doc/invoke.texi: Add gs464e to supported architectures.
5792 2018-11-07 Chenghua Xu <paul.hua.gm@gmail.com>
5794 * config/mips/loongson3a.md: Rename to ...
5795 * config/mips/gs464.md: ... here.
5796 * config/mips/mips-cpus.def: Define gs464; Add loongson3a
5797 as an alias of gs464 processor.
5798 * config/mips/mips-tables.opt: Regenerate.
5799 * config/mips/mips.c (mips_issue_rate): Use PROCESSOR_GS464
5800 instead of PROCESSOR_LOONGSON_3A.
5801 (mips_multipass_dfa_lookahead): Use TUNE_GS464 instead of
5803 (mips_option_override): Enable MMI and EXT for gs464.
5804 * config/mips/mips.h: Rename TARGET_LOONGSON_3A to TARGET_GS464;
5805 Rename TUNE_LOONGSON_3A to TUNE_GS464.
5806 (MIPS_ISA_LEVEL_SPEC): Infer mips64r2 from gs464.
5807 (ISA_HAS_ODD_SPREG, ISA_AVOID_DIV_HILO, ISA_HAS_FUSED_MADD4,
5808 ISA_HAS_UNFUSED_MADD4): Use TARGET_GS464 instead of
5810 * config/mips/mips.md: Include gs464.md instead of loongson3a.md.
5811 (processor): Add gs464;
5812 * doc/invoke.texi: Add gs464 to supported architectures.
5814 2018-11-07 Chenghua Xu <paul.hua.gm@gmail.com>
5816 * config/mips/mips-protos.h
5817 (mips_loongson_ext2_prefetch_cookie): New prototype.
5818 * config/mips/mips.c (mips_loongson_ext2_prefetch_cookie): New.
5819 (mips_option_override): Enable TARGET_LOONGSON_EXT when
5820 TARGET_LOONGSON_EXT2 is true.
5821 * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
5822 __mips_loongson_ext2, __mips_loongson_ext_rev=2.
5823 (ISA_HAS_CTZ_CTO): New, true if TARGET_LOONGSON_EXT2.
5824 (ISA_HAS_PREFETCH): Include TARGET_LOONGSON_EXT and
5825 TARGET_LOONGSON_EXT2.
5826 (ASM_SPEC): Add mloongson-ext2 and mno-loongson-ext2.
5827 (define_insn "ctz<mode>2"): New insn pattern.
5828 (define_insn "prefetch"): Include TARGET_LOONGSON_EXT2.
5829 (define_insn "prefetch_indexed_<mode>"): Include
5830 TARGET_LOONGSON_EXT and TARGET_LOONGSON_EXT2.
5831 * config/mips/mips.opt (-mloongson-ext2): Add option.
5832 * gcc/doc/invoke.texi (-mloongson-ext2): Document.
5834 2018-11-07 Chenghua Xu <paul.hua.gm@gmail.com>
5836 * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Add
5837 __mips_loongson_ext.
5838 (MIPS_ASE_LOONGSON_EXT_SPEC): New.
5839 (BASE_DRIVER_SELF_SPECS): march=loongson3a implies
5841 (ASM_SPEC): Add mloongson-ext and mno-loongson-ext.
5842 * config/mips/mips.md (mul<mode>3, mul<mode>3_mul3_nohilo,
5843 <u>div<mode>3, <u>mod<mode>3, prefetch): Use TARGET_LOONGSON_EXT
5844 instead of TARGET_LOONGSON_3A.
5845 * config/mips/mips.opt (-mloongson-ext): Add option.
5846 * gcc/doc/invoke.texi (-mloongson-ext): Document.
5848 2018-11-07 Chenghua Xu <paul.hua.gm@gmail.com>
5850 * config.gcc (extra_headers): Add loongson-mmiintrin.h.
5851 * config/mips/loongson.md: Move to ...
5852 * config/mips/loongson-mmi.md: here; Adjustment.
5853 * config/mips/loongson.h: Move to ...
5854 State as deprecated. Include loongson-mmiintrin.h for back
5855 compatibility and warning.
5856 * config/mips/loongson-mmiintrin.h: ... here.
5857 * config/mips/mips.c (mips_hard_regno_mode_ok_uncached,
5858 mips_vector_mode_supported_p, AVAIL_NON_MIPS16): Use
5859 TARGET_LOONGSON_MMI instead of TARGET_LOONGSON_VECTORS.
5860 (mips_option_override): Make sure MMI use hard float;
5861 (mips_shift_truncation_mask, mips_expand_vpc_loongson_even_odd,
5862 mips_expand_vpc_loongson_pshufh, mips_expand_vpc_loongson_bcast,
5863 mips_expand_vector_init): Use TARGET_LOONGSON_MMI instead of
5864 TARGET_LOONGSON_VECTORS.
5865 * gcc/config/mips/mips.h (TARGET_LOONGSON_VECTORS): Delete.
5866 (TARGET_CPU_CPP_BUILTINS): Add __mips_loongson_mmi.
5867 (MIPS_ASE_DSP_SPEC, MIPS_ASE_LOONGSON_MMI_SPEC): New.
5868 (BASE_DRIVER_SELF_SPECS): march=loongson2e/2f/3a implies
5870 (SHIFT_COUNT_TRUNCATED): Use TARGET_LOONGSON_MMI instead of
5871 TARGET_LOONGSON_VECTORS.
5872 * gcc/config/mips/mips.md (MOVE64, MOVE128): Use
5873 TARGET_LOONGSON_MMI instead of TARGET_LOONGSON_VECTORS.
5874 (Loongson MMI patterns): Include loongson-mmi.md instead of
5876 * gcc/config/mips/mips.opt (-mloongson-mmi): New option.
5877 * gcc/doc/invoke.texi (-mloongson-mmi): Document.
5879 2018-11-07 Richard Biener <rguenther@suse.de>
5882 * tree-streamer-in.c (lto_input_ts_block_tree_pointers): Fixup
5883 BLOCK_ABSTRACT_ORIGIN to be the ultimate origin.
5885 2018-11-07 Alexandre Oliva <aoliva@redhat.com>
5887 PR rtl-optimization/87874
5888 * lra.c (lra_substitute_pseudo): Do not create a subreg for
5891 2018-11-06 Aaron Sawdey <acsawdey@linux.ibm.com>
5893 * config/rs6000/rs6000.md (bswap<mode>2): Force address into register
5894 if not in indexed or indirect form.
5895 (bswap<mode>2_load): Change predicate to indexed_or_indirect_operand.
5896 (bswap<mode>2_store): Ditto.
5898 2018-11-06 Richard Earnshaw <rearnsha@arm.com>
5900 * config/aarch64/aarch64.md (speculation_tracker): Set the mode for
5903 2018-11-06 Richard Biener <rguenther@suse.de>
5905 PR tree-optimization/86850
5906 * vec.h (vec<T, va_heap, vl_ptr>::splice): Check src.length ()
5907 instead of src.m_vec.
5909 2018-11-06 Jan Hubicka <jh@suse.cz>
5911 * tree.c (fld_simplified_type_name): Break out form ...
5912 (free_lang_data_in_type): ... here.
5913 (fld_type_variant_equal_p): Use it.
5915 2018-11-06 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
5917 * config/default-d.c: Include memmodel.h.
5919 * config/sol2-d.c: New file.
5920 * config/t-sol2 (sol2-d.o): New rule.
5921 * config.gcc <*-*-solaris2*>: Set d_target_objs,
5922 target_has_targetdm.
5924 2018-11-06 Jan Hubicka <jh@suse.cz>
5926 * tree.c (fld_type_variant): Also copy alignment; be sure that
5927 new variant is equal.
5929 2018-11-06 Ilya Leoshkevich <iii@linux.ibm.com>
5932 * config/s390/s390.md: Add relative_long attribute.
5934 2018-11-06 Jan Hubicka <jh@suse.cz>
5936 * ipa-pure-const.c (check_decl): Do not test TYPE_NEEDS_CONSTRUCTING.
5937 * lto-streamer-out.c (hash_tree): Do not hash TYPE_NEEDS_CONSTRUCTING.
5938 * tree-streamer-in.c (unpack_ts_type_common_value_fields): Do not
5939 stream TYPE_NEEDS_CONSTRUCTING.
5940 * tree-streamer-out.c (pack_ts_type_common_value_fields): Likewise.
5941 * tree.c (free_lang_data_in_type): Clear TYPE_NEEDS_CONSTRUCTING.
5943 2018-11-06 Richard Biener <rguenther@suse.de>
5945 * tree-vect-slp.c (vect_slp_bb): Move opening of vect_slp_analyze_bb
5947 (vect_slp_analyze_bb_1): ... here to avoid hiding optimized locations.
5949 2018-11-06 Jozef Lawrynowicz <jozef.l@mittosystems.com>
5951 * gcc/config/msp430/msp430.h (REG_CLASS_CONTENTS): Add R0 to
5952 REG_CLASS_CONTENTS[GEN_REGS].
5953 (REGNO_REG_CLASS): Return NO_REGS for R2 and R3.
5955 2018-11-06 Jan Hubicka <jh@suse.cz>
5957 * tree.c (fld_simplified_type_of): Clear TYPELESS_STORAGE flag.
5959 2018-11-06 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
5962 * config/sol2.h (ASAN_CC1_SPEC): Define.
5963 (LD_WHOLE_ARCHIVE_OPTION): Define.
5964 (LD_NO_WHOLE_ARCHIVE_OPTION): Define.
5965 (ASAN_REJECT_SPEC): Provide default.
5966 (LIBASAN_EARLY_SPEC): Define.
5967 (LIBTSAN_EARLY_SPEC): Define.
5968 (LIBLSAN_EARLY_SPEC): Define.
5969 * config/i386/sol2.h (CC1_SPEC): Redefine.
5970 (ASAN_REJECT_SPEC): Define.
5972 * config/sparc/sparc.c (sparc_asan_shadow_offset): Declare.
5973 (TARGET_ASAN_SHADOW_OFFSET): Define.
5974 (sparc_asan_shadow_offset): New function.
5975 * config/sparc/sol2.h (CC1_SPEC): Append ASAN_CC1_SPEC.
5976 (ASAN_REJECT_SPEC): Define.
5978 2018-11-06 Jan Hubicka <jh@suse.cz>
5980 * tree.c (fld_type_variant): Copy canonical type.
5981 (fld_incomplete_type_of): Check that canonical types looks sane;
5982 copy canonical type.
5983 (verify_type): Accept when incomplete type has complete canonical type.
5985 2018-11-06 Jan Hubicka <jh@suse.cz>
5987 * tree.c (free_lang_data): Reset overwite_assembler_name,
5988 print_xnode, print_decl, print_type and print_identifier of
5991 2018-11-06 Richard Biener <rguenther@suse.de>
5993 PR tree-optimization/87889
5994 * tree-vect-loop-manip.c (slpeel_duplicate_current_defs_from_edges):
5995 Do nothing if old and new arg are the same
5997 2018-11-06 Andreas Krebbel <krebbel@linux.ibm.com>
6000 * config/s390/s390.md ("*r<noxa>sbg_di_rotl"): Remove mode
6001 attributes for operands 3 and 4.
6003 2018-11-06 Richard Biener <rguenther@suse.de>
6006 * simplify-rtx.c (simplify_binary_operation_1): Add pattern
6007 matching bitfield insertion.
6009 2018-11-06 Alexandre Oliva <aoliva@redhat.com>
6011 * auto-inc-dec.c: Include valtrack.h. Improve comments.
6012 (reg_next_debug_use): New.
6013 (attempt_change): Propagate adjusted expression into affected
6015 (merge_in_block): Track uses in debug insns.
6016 (pass_inc_dec::execute): Allocate and release
6019 2018-11-06 Wei Xiao <wei3.xiao@intel.com>
6021 * config/i386/avx512fintrin.h: Update VFIXUPIMM* intrinsics.
6022 (_mm512_fixupimm_round_pd): Update parameters and builtin.
6023 (_mm512_maskz_fixupimm_round_pd): Ditto.
6024 (_mm512_fixupimm_round_ps): Ditto.
6025 (_mm512_maskz_fixupimm_round_ps): Ditto.
6026 (_mm_fixupimm_round_sd): Ditto.
6027 (_mm_maskz_fixupimm_round_sd): Ditto.
6028 (_mm_fixupimm_round_ss): Ditto.
6029 (_mm_maskz_fixupimm_round_ss): Ditto.
6030 (_mm512_fixupimm_pd): Ditto.
6031 (_mm512_maskz_fixupimm_pd): Ditto.
6032 (_mm512_fixupimm_ps): Ditto.
6033 (_mm512_maskz_fixupimm_ps): Ditto.
6034 (_mm_fixupimm_sd): Ditto.
6035 (_mm_maskz_fixupimm_sd): Ditto.
6036 (_mm_fixupimm_ss): Ditto.
6037 (_mm_maskz_fixupimm_ss): Ditto.
6038 (_mm512_mask_fixupimm_round_pd): Update builtin.
6039 (_mm512_mask_fixupimm_round_ps): Ditto.
6040 (_mm_mask_fixupimm_round_sd): Ditto.
6041 (_mm_mask_fixupimm_round_ss): Ditto.
6042 (_mm512_mask_fixupimm_pd): Ditto.
6043 (_mm512_mask_fixupimm_ps): Ditto.
6044 (_mm_mask_fixupimm_sd): Ditto.
6045 (_mm_mask_fixupimm_ss): Ditto.
6046 * config/i386/avx512vlintrin.h:
6047 (_mm256_fixupimm_pd): Update parameters and builtin.
6048 (_mm256_maskz_fixupimm_pd): Ditto.
6049 (_mm256_fixupimm_ps): Ditto.
6050 (_mm256_maskz_fixupimm_ps): Ditto.
6051 (_mm_fixupimm_pd): Ditto.
6052 (_mm_maskz_fixupimm_pd): Ditto.
6053 (_mm_fixupimm_ps): Ditto.
6054 (_mm_maskz_fixupimm_ps): Ditto.
6055 (_mm256_mask_fixupimm_pd): Update builtin.
6056 (_mm256_mask_fixupimm_ps): Ditto.
6057 (_mm_mask_fixupimm_pd): Ditto.
6058 (_mm_mask_fixupimm_ps): Ditto.
6059 * config/i386/i386-builtin-types.def: Add new types and remove useless ones.
6060 * config/i386/i386-builtin.def: Update builtin definitions.
6061 * config/i386/i386.c: Handle new builtin types and remove useless ones.
6062 * config/i386/sse.md: Update VFIXUPIMM* patterns.
6063 (<avx512>_fixupimm<mode>_maskz<round_saeonly_expand_name>): Update.
6064 (<avx512>_fixupimm<mode><sd_maskz_name><round_saeonly_name>): Update.
6065 (<avx512>_fixupimm<mode>_mask<round_saeonly_name>): Update.
6066 (avx512f_sfixupimm<mode>_maskz<round_saeonly_expand_name>): Update.
6067 (avx512f_sfixupimm<mode><sd_maskz_name><round_saeonly_name>): Update.
6068 (avx512f_sfixupimm<mode>_mask<round_saeonly_name>): Update.
6069 * config/i386/subst.md:
6070 (round_saeonly_sd_mask_operand4): Add new subst_attr.
6071 (round_saeonly_sd_mask_op4): Ditto.
6072 (round_saeonly_expand_operand5): Ditto.
6073 (round_saeonly_expand): Update.
6075 2018-11-05 Max Filippov <jcmvbkbc@gmail.com>
6077 * config/xtensa/uclinux.h (XTENSA_ALWAYS_PIC): Change to 0.
6079 2018-11-05 Segher Boessenkool <segher@kernel.crashing.org>
6081 PR rtl-optimization/87871
6082 * combine.c (make_more_copies): Skip if dest is frame_pointer_rtx.
6084 2018-11-05 Paul Koning <ni1d@arrl.net>
6086 * doc/sourcebuild.texi (target attributes): Document new "inf"
6087 effective target keyword.
6089 2018-11-05 Robin Dapp <rdapp@linux.ibm.com>
6091 * config/s390/s390.c (s390_register_move_cost): Increase costs for
6092 moves involving the CC reg.
6094 2018-11-05 Richard Biener <rguenther@suse.de>
6096 PR tree-optimization/87873
6097 * tree-ssa-loop-manip.h (split_loop_exit_edge): Add copy_constants_p
6099 * tree-ssa-loop-manip.c (split_loop_exit_edge): Likewise.
6100 * tree-vect-loop.c (vect_transform_loop): When splitting the
6101 loop exit also create forwarder PHIs for constants.
6102 * tree-vect-loop-manip.c (slpeel_duplicate_current_defs_from_edges):
6103 Handle constant to_arg, add extra checking we match up the correct
6106 2018-11-05 Robin Dapp <rdapp@linux.ibm.com>
6108 * config/s390/s390.md: QImode and HImode for load on condition.
6110 2018-11-05 Robin Dapp <rdapp@linux.ibm.com>
6112 * config/s390/predicates.md: Fix typo.
6113 * config/s390/s390.md: Allow immediates for load on condition.
6115 2018-11-05 Martin Liska <mliska@suse.cz>
6117 * alloc-pool.h (struct pool_usage): Use SIZE_AMOUNT.
6118 * bitmap.h (struct bitmap_usage): Likewise.
6119 * ggc-common.c (SCALE): Remove.
6121 (struct ggc_usage): Use SIZE_AMOUNT. And update
6123 * ggc-page.c (SCALE): Remove.
6124 (STAT_LABEL): Remove.
6125 (ggc_print_statistics): Use SIZE_AMOUNT.
6126 * gimple.h (SCALE): Remove.
6128 * input.c (ONE_K): Remove.
6131 (STAT_LABEL): Likewise.
6132 (FORMAT_AMOUNT): Likewise.
6133 (dump_line_table_statistics): Use SIZE_AMOUNT.
6134 * mem-stats.h (struct mem_usage): Likewise.
6135 * rtl.c (dump_rtx_statistics): Likewise.
6136 (rtx_alloc_counts): Change type to size_t.
6137 (rtx_alloc_sizes): Likewise.
6138 (rtx_count_cmp): New.
6139 (dump_rtx_statistics): Sort first based on counts.
6140 * tree.c (tree_nodes_cmp): New.
6141 (tree_codes_cmp): New.
6142 (dump_tree_statistics): Sort first based on counts.
6143 * system.h (ONE_K): New.
6145 (SIZE_SCALE): Likewise.
6146 (SIZE_LABEL): Likewise.
6147 (SIZE_AMOUNT): Likewise.
6148 * tree-cfg.c (dump_cfg_stats): Use SIZE_AMOUNT.
6149 * tree-dfa.c (dump_dfa_stats): Likewise.
6150 * tree-phinodes.c (phinodes_print_statistics): Likewise.
6151 * tree-ssanames.c (ssanames_print_statistics): Likewise.
6152 * tree.c (dump_tree_statistics): Likewise.
6153 * vec.c (struct vec_usage): Likewise.
6154 * trans-mem.c (tm_mangle): Enlarge buffer in order to not
6155 trigger a -Werror=format-overflow with
6156 --enable-gather-detailed-stats.
6158 2018-11-05 Martin Liska <mliska@suse.cz>
6160 * mem-stats.h (mem_alloc_description::release_instance_overhead):
6162 * vec.c (struct vec_usage): Register m_element_size.
6163 (vec_prefix::register_overhead): New arguments: elements and
6165 (vec_prefix::release_overhead): Subtract elements.
6166 * vec.h (struct vec_prefix): Change signature.
6167 (va_heap::reserve): Pass proper arguments.
6168 (va_heap::release): Likewise.
6170 2018-11-05 Martin Liska <mliska@suse.cz>
6172 * mem-stats.h (mem_alloc_description::get_list): Fix GNU coding
6176 2018-11-05 Richard Biener <rguenther@suse.de>
6178 * tree-scalar-evolution.h (final_value_replacement_loop): Update
6180 * tree-scalar-evolution.c (final_value_replacement_loop): Return
6181 whether anything was done.
6182 (scev_const_prop): Remove constant propagation part, fold
6184 * tree-ssa-loop.c (pass_scev_cprop::execute): ... here.
6185 (pass_data_scev_cprop): TODO_cleanup_cfg is now done
6188 2018-11-05 Jakub Jelinek <jakub@redhat.com>
6190 PR tree-optimization/87859
6191 * gimple-ssa-store-merging.c (struct merged_store_group): Add
6192 only_constants and first_nonmergeable_order members.
6193 (merged_store_group::merged_store_group): Initialize them.
6194 (merged_store_group::do_merge): Clear only_constants member if
6195 adding something other than INTEGER_CST store.
6196 (imm_store_chain_info::coalesce_immediate_stores): Don't merge
6197 stores with order >= first_nonmergeable_order. Use
6198 merged_store->only_constants instead of always recomputing it.
6199 Set merged_store->first_nonmergeable_order if we've skipped any
6200 stores. Attempt to merge overlapping INTEGER_CST stores that
6201 we would otherwise skip.
6204 * match.pd (X + Y < X): Don't optimize if TYPE_OVERFLOW_SANITIZED.
6206 2018-11-05 Xuepeng Guo <xuepeng.guo@intel.com>
6209 * config/i386/emmintrin.h (__v16qs): New to cope with option
6211 (_mm_cmpeq_epi8): Replace __v16qi with __v16qs.
6212 (_mm_cmplt_epi8): Likewise.
6213 (_mm_cmpgt_epi8): Likewise.
6215 2018-11-05 Richard Biener <rguenther@suse.de>
6217 PR rtl-optimization/87852
6218 * fwprop.c (use_killed_between): Only consider single-defs of the
6219 use whose definition statement dominates the use.
6221 2018-11-05 Martin Liska <mliska@suse.cz>
6224 * doc/invoke.texi: Remove options that are
6225 not disabled with -Os.
6227 2018-11-05 Martin Liska <mliska@suse.cz>
6230 * doc/extend.texi: Update constrain about the last argument
6231 of __builtin_expect_with_probability.
6233 2018-11-05 Martin Liska <mliska@suse.cz>
6236 * predict.c (expr_expected_value_1): Verify
6237 that last argument is a real constants and emit
6240 2018-11-05 Martin Liska <mliska@suse.cz>
6242 PR gcov-profile/77698
6243 * ipa-profile.c (ipa_profile): Adjust hotness threshold
6246 2018-11-04 Bernd Edlinger <bernd.edlinger@hotmail.de>
6248 PR tree-optimization/86572
6249 * builtins.c (c_strlen): Handle negative offsets in a safe way.
6251 2018-11-04 Bernd Edlinger <bernd.edlinger@hotmail.de>
6253 PR tree-optimization/87672
6254 * gimple-fold.c (gimple_fold_builtin_stxcpy_chk): Gimplify.
6255 * tree-ssa-strlen.c (handle_builtin_strcat): Adjust object size.
6257 2018-11-04 Uros Bizjak <ubizjak@gmail.com>
6260 * cfgexpand.c (pass_expand::execute): Move the call to
6261 finish_eh_generation in front of the call to expand_stack_alignment.
6263 2018-11-04 Venkataramanan Kumar <venkataramanan.kumar@amd.com>
6265 * common/config/i386/i386-common.c (processor_alias_table): Add
6267 * config.gcc (i[34567]86-*-linux* | ...): Add znver2.
6268 (case ${target}): Add znver2.
6269 * config/i386/driver-i386.c: (host_detect_local_cpu): Let
6270 -march=native recognize znver2 processors.
6271 * config/i386/i386-c.c (ix86_target_macros_internal): Add znver2.
6272 * config/i386/i386.c (m_znver2): New definition.
6273 (m_ZNVER): New definition.
6274 (m_AMD_MULTIPLE): Includes m_znver2.
6275 (processor_cost_table): Add znver2 entry.
6276 (processor_target_table): Add znver2 entry.
6277 (get_builtin_code_for_version): Set priority for
6279 (processor_model): Add M_AMDFAM17H_ZNVER2.
6280 (arch_names_table): Ditto.
6281 (ix86_reassociation_width): Include znver2.
6282 * config/i386/i386.h (TARGET_znver2): New definition.
6283 (struct ix86_size_cost): Add TARGET_ZNVER2.
6284 (enum processor_type): Add PROCESSOR_ZNVER2.
6285 * config/i386/i386.md (define_attr "cpu"): Add znver2.
6286 * config/i386/x86-tune-costs.h: (processor_costs) Add znver2 costs.
6287 * config/i386/x86-tune-sched.c: (ix86_issue_rate): Add znver2.
6288 (ix86_adjust_cost): Add znver2.
6289 * config/i386/x86-tune.def: Replace m_ZNVER1 by m_ZNVER.
6290 * gcc/doc/extend.texi: Add details about znver2.
6291 * gcc/doc/invoke.texi: Add details about znver2.
6293 2018-11-03 Sandra Loosemore <sandra@codesourcery.com>
6297 * config/nios2/nios2.c (nios2_rtx_costs): Recognize <mul>sidi3
6300 2018-11-02 Aaron Sawdey <acsawdey@linux.ibm.com>
6302 * config/rs6000/rs6000-string.c (expand_strncmp_gpr_sequence): Pay
6303 attention to TARGET_AVOID_XFORM and BYTES_BIG_ENDIAN.
6305 2018-11-02 Richard Earnshaw <rearnsha@arm.com>
6307 * config/aarch64/aarch64.c ((aarch64_override_options): Disable
6308 shrink-wrapping when -mtrack-speculation.
6310 2018-11-02 Richard Biener <rguenther@suse.de>
6312 * tree-ssa-coalesce.c (struct coalesce_list): Add obstack member.
6313 (pop_cost_one_pair): Do not free pair.
6314 (pop_best_coalesce): Likewise.
6315 (create_coalesce_list): Initialize obstack.
6316 (delete_coalesce_list): Free obstack.
6317 (find_coalesce_pair): Obstack-allocate coalesce pairs.
6318 (add_cost_one_coalesce): Likewise.
6319 (struct live_track): Remove bitmap pointer indirections.
6320 (new_live_track): Adjust.
6321 (delete_live_track): Likewise.
6322 (live_track_remove_partition): Likewise.
6323 (live_track_add_partition): Likewise.
6324 (live_track_live_p): Likewise.
6325 (live_track_process_def): Likewise.
6326 (live_track_clear_base_vars): Likewise.
6328 2018-11-02 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
6330 * configure.ac (gcc_cv_as_sparc_register_op): Remove.
6331 * configure: Regenerate.
6332 * config.in: Regenerate.
6333 * config/sparc/sparc.c (sparc_output_scratch_registers): Remove
6334 HAVE_AS_REGISTER_PSEUDO_OP guard.
6335 * config/sparc/sparc.h (ASM_ARCH64_SPEC): Remove
6336 !HAVE_AS_REGISTER_PSEUDO_OP support.
6337 (ASM_DECLARE_REGISTER_GLOBAL): Remove HAVE_AS_REGISTER_PSEUDO_OP
6340 2018-11-02 Richard Biener <rguenther@suse.de>
6342 * dwarf2out.c (build_abbrev_table): Guard lookup_external_ref call
6345 2018-11-02 Richard Biener <rguenther@suse.de>
6347 PR tree-optimization/87776
6348 * tree-ssa-sccvn.c (do_rpo_vn): Do not mark backedges
6349 executable when iterating but running into rpo-vn-max-loop-depth
6350 and not eliding the iteration.
6352 2018-11-30 Jan Hubicka <jh@suse.cz>
6354 * tree.c (free_lang_data_in_decl): Free TREE_TYPE and alignment of
6357 2018-11-01 Aaron Sawdey <acsawdey@linux.ibm.com>
6359 * config/rs6000/rs6000-protos.h (rs6000_address_for_fpconvert): Remove
6361 * config/rs6000/rs6000.c (rs6000_force_indexed_or_indirect_mem):
6362 Combine with rs6000_address_for_fpconvert.
6363 (rs6000_address_for_fpconvert): Combine with
6364 rs6000_force_indexed_or_indirect_mem.
6365 (rs6000_expand_vector_init): Change function call from
6366 rs6000_address_for_fpconvert to rs6000_force_indexed_or_indirect_mem.
6367 * config/rs6000/rs6000.md (floatsi<mode>2_lfiwax): Change call from
6368 rs6000_address_for_fpconvert to rs6000_force_indexed_or_indirect_mem.
6369 (floatsi<mode>2_lfiwax_mem): Ditto.
6370 (floatunssi<mode>2_lfiwzx): Ditto.
6371 (floatunssi<mode>2_lfiwzx_mem): Ditto.
6372 (float<QHI:mode><FP_ISA3:mode>2): Ditto.
6373 (floatuns<QHI:mode><FP_ISA3:mode>2): Ditto.
6374 (fix_trunc<mode>si2_stfiwx): Ditto.
6375 (fixuns_trunc<mode>si2_stfiwx): Ditto.
6376 (float_<mode>si2_hw): Ditto.
6377 (floatuns_<mode>si2_hw): Ditto.
6378 * config/rs6000/vsx.md (*vsx_extract_si): Ditto.
6379 (vsx_splat_<mode>): Ditto.
6381 2018-11-01 Joseph Myers <joseph@codesourcery.com>
6383 * configure.ac (gcc_cv_as_ia64_ltoffx_ldxmov_relocs): Add newline
6384 at end of assembler input text.
6385 * configure: Regenerate.
6387 2018-11-01 Jakub Jelinek <jakub@redhat.com>
6389 PR tree-optimization/87826
6390 * gimple-ssa-store-merging.c (do_shift_rotate): Punt if count is
6391 negative or larger or equal to type's precision.
6393 2018-10-31 Alexandre Oliva <aoliva@redhat.com>
6395 * opts.c (default_options_table): Do not enable
6396 OPT_fdelayed_branch at -Og.
6397 * doc/invoke.texi (-fdelayed-branch): Document it.
6399 2018-10-31 Richard Henderson <richard.henderson@linaro.org>
6401 * optabs-libfuncs.c (build_libfunc_function_visibility):
6402 New, split out from...
6403 (build_libfunc_function): ... here.
6404 (init_one_libfunc_visibility): New, split out from ...
6405 (init_one_libfunc): ... here.
6407 * config/aarch64/atomics.md (aarch64_atomic_<ATOMIC_LDOP><ALLI>_lse):
6408 scratch register need not be early-clobber. Document the reason
6409 why we cannot use ST<OP>.
6411 2018-10-31 Joseph Myers <joseph@codesourcery.com>
6414 * configure.ac: Remove AC_PREREQ. Use AC_LANG_SOURCE. Use single
6415 line for second argument of AC_DEFINE_UNQUOTED.
6416 * doc/install.texi (Tools/packages necessary for modifying GCC):
6417 Update to autoconf 2.69 and automake 1.15.1.
6418 * aclocal.m4, config.in, configure: Regenerate.
6420 2018-10-31 Pat Haugen <pthaugen@us.ibm.com>
6422 * tree-ssa-loop-ivcanon.c (try_peel_loop): Fix typo and remove dead
6425 2018-10-31 Martin Liska <mliska@suse.cz>
6428 * common/config/aarch64/aarch64-common.c (aarch64_parse_extension):
6429 Add new argument invalid_extension.
6430 (aarch64_get_all_extension_candidates): New function.
6431 (aarch64_rewrite_selected_cpu): Add NULL to function call.
6432 * config/aarch64/aarch64-protos.h (aarch64_parse_extension): Add
6434 (aarch64_get_all_extension_candidates): New function.
6435 * config/aarch64/aarch64.c (aarch64_parse_arch): Add new
6436 argument invalid_extension.
6437 (aarch64_parse_cpu): Likewise.
6438 (aarch64_print_hint_for_extensions): New function.
6439 (aarch64_validate_mcpu): Provide hint about invalid extension.
6440 (aarch64_validate_march): Likewise.
6441 (aarch64_handle_attr_arch): Pass new argument.
6442 (aarch64_handle_attr_cpu): Provide hint about invalid extension.
6443 (aarch64_handle_attr_isa_flags): Likewise.
6445 2018-10-31 Richard Biener <rguenther@suse.de>
6449 * tree-outof-ssa.c (insert_backedge_copies): Restrict
6450 copy generation to useful cases. Place the copy before
6451 the definition of the backedge value when possible.
6453 2018-10-31 Claudiu Zissulescu <claziss@synopsys.com>
6455 * config/arc/arc-arch.h (ARC_TUNE_ARC7XX): New tune value.
6456 * config/arc/arc.c (arc_active_insn): New function.
6457 (check_store_cacheline_hazard): Likewise.
6458 (workaround_arc_anomaly): Use check_store_cacheline_hazard.
6459 (arc_override_options): Disable delay slot scheduler for older
6461 (arc_store_addr_hazard_p): New implementation, old one renamed to
6463 (arc_store_addr_hazard_internal_p): Renamed.
6464 (arc_reorg): Don't combine into brcc instructions which are part
6465 of hardware hazard solution.
6466 * config/arc/arc.md (attr tune): Consider new arc7xx tune value.
6467 (tune_arc700): Likewise.
6468 * config/arc/arc.opt (arc7xx): New tune value.
6469 * config/arc/arc700.md: Improve A7 scheduler.
6471 2018-10-31 Claudiu Zissulescu <claziss@synopsys.com>
6473 * config/arc/arc.c (arc_override_options): Remove
6474 TARGET_COMPACT_CASESI.
6475 * config/arc/arc.h (ASM_OUTPUT_ADDR_DIFF_ELT): Update.
6476 (CASE_VECTOR_MODE): Likewise.
6477 (CASE_VECTOR_PC_RELATIVE): Likewise.
6478 (CASE_VECTOR_SHORTEN_MODE): Likewise.
6479 (CASE_VECTOR_SHORTEN_MODE1): Delete.
6480 (ADDR_VEC_ALIGN): Update.
6481 (ASM_OUTPUT_CASE_LABEL): Undefine.
6482 (ASM_OUTPUT_BEFORE_CASE_LABEL): Undefine.
6483 (TARGET_BI_BIH): Define.
6484 (DEFAULT_BRANCH_INDEX): Likewise.
6485 * config/arc/arc.md (casesi): Rework to accept BI/BIH
6486 instructions, remove compact_casesi use case.
6487 (casesi_compact_jump): Remove.
6488 (casesi_dispatch): New pattern.
6489 * config/arc/arc.opt: Add mbranch-index option. Deprecate
6490 compact_casesi option.
6491 * doc/invoke.texi: Document mbranch-index option.
6493 2018-10-31 Claudiu Zissulescu <claziss@synopsys.com>
6495 * config/arc/arc.c (arc_get_tp): Remove function.
6496 (arc_emit_call_tls_get_addr): Likewise.
6497 (arc_call_tls_get_addr): New function.
6498 (arc_legitimize_tls_address): Make use of arc_call_tls_get_addr.
6499 * config/arc/arc.md (tls_load_tp_soft): Remove.
6500 (tls_gd_get_addr): Likewise.
6502 2018-10-31 Claudiu Zissulescu <claziss@synopsys.com>
6504 * config/arc/arc.md (mulsi3): Remove call to mulsi_600_lib.
6505 (mulsi3_600_lib): Remove pattern.
6506 (umulsi3_highpart_600_lib_le): Likewise.
6507 (umulsi3_highpart): Remove call to umulsi3_highpart_600_lib_le.
6508 (umulsidi3): Remove call to umulsidi3_600_lib.
6509 (umulsidi3_600_lib): Remove pattern.
6510 (peephole2): Remove peephole using the above deprecated patterns.
6512 2018-10-31 Thomas Preud'homme <thomas.preudhomme@linaro.org>
6515 * config/arm/arm.c (arm_option_check_internal): Disable the combined
6516 use of -mslow-flash-data and -mword-relocations.
6517 (arm_option_override): Enable -mword-relocations if -fpic or -fPIC.
6518 * config/arm/arm.md (SYMBOL_REF MOVT splitter): Stop checking for
6520 * doc/invoke.texi (-mword-relocations): Mention conflict with
6522 (-mslow-flash-data): Reciprocally.
6524 2018-10-31 Richard Henderson <richard.henderson@linaro.org>
6526 * config/aarch64/aarch64.c (aarch64_hard_regno_mode_ok): Force
6527 16-byte modes held in GP registers to use an even regno.
6529 * config/aarch64/aarch64.c (aarch64_emit_bic): Remove.
6530 (aarch64_atomic_ldop_supported_p): Remove.
6531 (aarch64_gen_atomic_ldop): Remove.
6532 * config/aarch64/atomic.md (atomic_<atomic_optab><ALLI>):
6533 Fully expand LSE operations here.
6534 (atomic_fetch_<atomic_optab><ALLI>): Likewise.
6535 (atomic_<atomic_optab>_fetch<ALLI>): Likewise.
6536 (aarch64_atomic_<ATOMIC_LDOP><ALLI>_lse): Drop atomic_op iterator
6537 and use ATOMIC_LDOP instead; use register_operand for the input;
6538 drop the split and emit insns directly.
6539 (aarch64_atomic_fetch_<ATOMIC_LDOP><ALLI>_lse): Likewise.
6540 (aarch64_atomic_<atomic_op>_fetch<ALLI>_lse): Remove.
6541 (@aarch64_atomic_load<ATOMIC_LDOP><ALLI>): Remove.
6543 * config/aarch64/aarch64.c (aarch64_emit_atomic_swap): Remove.
6544 (aarch64_gen_atomic_ldop): Don't call it.
6545 * config/aarch64/atomics.md (atomic_exchange<ALLI>):
6546 Use aarch64_reg_or_zero.
6547 (aarch64_atomic_exchange<ALLI>): Likewise.
6548 (aarch64_atomic_exchange<ALLI>_lse): Remove split; remove & from
6549 operand 0; use aarch64_reg_or_zero for input; merge ...
6550 (@aarch64_atomic_swp<ALLI>): ... this and remove.
6552 * config/aarch64/aarch64.c (aarch64_gen_compare_reg_maybe_ze): New.
6553 (aarch64_split_compare_and_swap): Use it.
6554 (aarch64_expand_compare_and_swap): Likewise. Remove convert_modes;
6555 test oldval against the proper predicate.
6556 * config/aarch64/atomics.md (@atomic_compare_and_swap<ALLI>):
6557 Use nonmemory_operand for expected.
6558 (cas_short_expected_pred): New.
6559 (@aarch64_compare_and_swap<SHORT>): Use it; use "rn" not "rI" to match.
6560 (@aarch64_compare_and_swap<GPI>): Use "rn" not "rI" for expected.
6561 * config/aarch64/predicates.md (aarch64_plushi_immediate): New.
6562 (aarch64_plushi_operand): New.
6564 * config/aarch64/aarch64.c (aarch64_expand_compare_and_swap):
6565 Force oldval into the rval register for TARGET_LSE; emit the compare
6566 during initial expansion so that it may be deleted if unused.
6567 (aarch64_gen_atomic_cas): Remove.
6568 * config/aarch64/atomics.md (@aarch64_compare_and_swap<SHORT>_lse):
6569 Change =&r to +r for operand 0; use match_dup for operand 2;
6570 remove is_weak and mod_f operands as unused. Drop the split
6572 (@aarch64_atomic_cas<SHORT>): ... this pattern's output; remove.
6573 (@aarch64_compare_and_swap<GPI>_lse): Similarly.
6574 (@aarch64_atomic_cas<GPI>): Similarly.
6576 2018-10-31 Richard Biener <rguenther@suse.de>
6578 * tree-eh.c (replace_trapping_overflow): Simplify ABS_EXPR case
6581 2018-10-31 Sameera Deshpande <sameera.deshpande@linaro.org>
6583 * config/aarch64/aarch64-cores.def (saphira): Use saphira pipeline.
6584 * config/aarch64/aarch64.md: Include saphira.md
6585 * config/aarch64/saphira.md: New file for pipeline description.
6587 2018-10-30 Martin Sebor <msebor@redhat.com>
6590 * gimple-ssa-sprintf.c (format_directive): Use %G to include
6592 (sprintf_dom_walker::compute_format_length):
6593 Avoid setting POSUNDER4K here.
6594 (get_destination_size): Handle null argument values.
6595 (get_user_idx_format): New function.
6596 (sprintf_dom_walker::handle_gimple_call): Handle all printf-like
6597 functions, including user-defined with attribute format printf.
6598 Use %G to include inlining context.
6599 Set POSUNDER4K here.
6601 2018-10-30 Jan Hubicka <jh@suse.cz>
6603 * params.def (lto-partitions): Bump from 32 to 128.
6605 2018-10-30 Jan Hubicka <jh@suse.cz>
6608 (free_lang_data_d, add_tree_to_fld_list, fld_worklist_push): Move
6610 (free_lang_data_in_type): Forward declare.
6611 (fld_type_variant_equal_p): New function.
6612 (fld_type_variant): New function
6613 (fld_incomplete_types): New hash.
6614 (fld_incomplete_type_of): New function
6615 (fld_simplfied-type): New function.
6616 (free_lang_data_in_decl): Add fld parameter; simplify type of FIELD_DECL
6617 (free_lang_data): Allocate and free fld_incomplete_type; update call
6618 of free_lang_data_in_decl.
6620 2018-10-30 Eric Botcazou <ebotcazou@adacore.com>
6622 * gcov.c (output_lines): Remove duplicate line.
6624 2018-10-30 Aaron Sawdey <acsawdey@linux.ibm.com>
6626 * config/rs6000/rs6000.md (bswapdi2): Force address into register
6627 if not in indexed or indirect form.
6628 (bswapdi2_load): Change predicate to indexed_or_indirect_operand.
6629 (bswapdi2_store): Ditto.
6630 * config/rs6000/rs6000.c (rs6000_force_indexed_or_indirect_mem): New
6632 * config/rs6000/rs6000-protos.h (rs6000_force_indexed_or_indirect_mem):
6633 Prototype for helper function.
6635 2018-10-30 Martin Sebor <msebor@redhat.com>
6637 * doc/extend.texi (optimize): Clarify/expand attribute documentation.
6638 (target, pragma GCC optimize, pragma GCC target): Ditto.
6640 2018-10-30 Jonathan Wakely <jwakely@redhat.com>
6642 * doc/extend.texi: Fix prototype and description of
6643 __builtin_expect_with_probability.
6645 2018-10-30 Michael Ploujnikov <michael.ploujnikov@oracle.com>
6647 * cgraph.h (clone_function_name_1): Replaced by new
6648 clone_function_name_numbered that takes name as string; for
6649 privatize_symbol_name_1 use only.
6650 (clone_function_name): Renamed to
6651 clone_function_name_numbered to be explicit about numbering.
6652 (clone_function_name): New two-argument function that does
6653 not number its output.
6654 (clone_function_name): New three-argument function that
6655 takes a number to append to its output.
6656 * cgraphclones.c (duplicate_thunk_for_node):
6657 (clone_function_name_1): Renamed.
6658 (clone_function_name_numbered): Two new functions.
6659 (clone_function_name): Improved documentation.
6660 (cgraph_node::create_virtual_clone): Use clone_function_name_numbered.
6661 * config/rs6000/rs6000.c (make_resolver_func): Ditto.
6662 * final.c (final_scan_insn_1): Use the new clone_function_name
6664 * multiple_target.c (create_dispatcher_calls): Ditto.
6665 (create_target_clone): Ditto.
6666 * omp-expand.c (grid_expand_target_grid_body): Ditto.
6667 * omp-low.c (create_omp_child_function_name): Ditto.
6668 * omp-simd-clone.c (simd_clone_create): Ditto.
6669 * symtab.c (simd_symtab_node::noninterposable_alias): Use the
6670 new clone_function_name without numbering.
6672 2018-10-30 Richard Earnshaw <rearnsha@arm.com>
6674 * alloc-pool.h (base_pool_allocator <TBlockAllocator>::initialize):
6675 Assert that the allocation size is not zero.
6677 2018-10-30 Richard Biener <rguenther@suse.de>
6679 PR tree-optimization/87800
6680 * tree-vect-slp.c (vect_build_slp_tree_2): Reject any
6681 non-induction or reduction PHIs.
6683 2018-10-30 Sameera Deshpande <sameera.deshpande@linaro.org>
6685 * config/aarch64/falkor-tag-collision-avoidance.c
6686 (execute_tag_collision_avoidance): Call df_note_add_problem.
6688 2018-10-30 Martin Liska <mliska@suse.cz>
6690 * doc/extend.texi: Fix typo in documentation
6691 of __builtin_expect_with_probability.
6693 2018-10-29 David Malcolm <dmalcolm@redhat.com>
6696 * input.c (get_substring_ranges_for_loc): Detect if
6697 linemap_resolve_location gives us a NULL map, and reject
6700 2018-10-29 Iain Buclaw <ibuclaw@gdcproject.org>
6702 * config.gcc (xstormy16-*-elf): Set tm_d_file.
6704 2018-10-29 David Malcolm <dmalcolm@redhat.com>
6705 Martin Sebor <msebor@redhat.com>
6706 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
6708 * doc/ux.texi (Quoting): New subsection, adapted from material at
6709 https://gcc.gnu.org/wiki/DiagnosticsGuidelines written by
6710 MartinSebor and ManuelLopezIbanez.
6711 (Fix-it hints): Note that fix-it hints shouldn't be marked for
6714 2018-10-29 Kugan Vivekanandarajah <kuganv@linaro.org>
6717 * tree-ssa-loop-niter.c (number_of_iterations_popcount): Fix niter
6720 2018-10-29 Paul A. Clarke <pc@us.ibm.com>
6722 * gcc.target/powerpc/ssse3-check.h: Remove inaccurate comment.
6724 2018-10-29 Paul Koning <ni1d@arrl.net>
6726 * doc/rtl.texi (CONST_WIDE_INT_ELT): Give correct macro name.
6728 2018-10-29 Paul A. Clarke <pc@us.ibm.com>
6730 * gcc/config/rs6000/mmintrin.h (_mm_packs_pi16, _mm_packs_pi32,
6731 _mm_packs_pu16, _mm_unpackhi_pi8, _mm_unpacklo_pi8, _mm_add_pi8,
6732 _mm_add_pi16, _mm_add_pi32, _mm_sub_pi8, _mm_sub_pi16, _mm_sub_pi32,
6733 _mm_cmpgt_pi8, _mm_cmpeq_pi16, _mm_cmpgt_pi16, _mm_cmpeq_pi32,
6734 _mm_cmpgt_pi32, _mm_adds_pi8, _mm_adds_pi16, _mm_adds_pu8,
6735 _mm_adds_pu16, _mm_subs_pi8, _mm_subs_pi16, _mm_subs_pu8,
6736 _mm_subs_pu16, _mm_madd_pi16, _mm_mulhi_pi16, _mm_mullo_pi16,
6737 _mm_sll_pi16, _mm_sra_pi16, _mm_srl_pi16, _mm_set1_pi16, _mm_set1_pi8):
6738 Change 'vector' to '__vector'.
6739 * gcc/config/rs6000/xmmintrin.h (_mm_cvtps_pi32, _mm_cvttps_pi32,
6740 _mm_cvtps_pi16, _mm_cvtps_pi8, _mm_max_pi16, _mm_max_pu8, _mm_min_pi16,
6741 _mm_min_pu8, _mm_mulhi_pu16, _mm_shuffle_pi16, _mm_avg_pu8,
6742 _mm_avg_pu16): Likewise. And, whitespace corrections.
6744 2018-10-29 Richard Biener <rguenther@suse.de>
6746 PR tree-optimization/87785
6747 * tree-vect-slp.c (vect_gather_slp_loads): Only gather
6750 2018-10-29 Olivier Hainque <hainque@adacore.com>
6752 * VXWORKS_NET_LIBS_RTP: New macro, network part of VXWORKS_LIBS_RTP.
6754 2018-10-29 Olivier Hainque <hainque@adacore.com>
6756 * config/vxworks.h (VXWORKS_PERSONALITY): New VxWorks
6757 ports configuration macro, defaults to "gnu".
6758 (VXWORKS_OS_CPP_BUILTINS): Use it. Feed TOOL and
6759 TOOL_FAMILY instead of _VX_TOOL/_VXTOOL_FAMILY.
6761 2018-10-29 Olivier Hainque <hainque@adacore.com>
6763 * config/vxworks.h (CLEAR_INSN_CACHE): #undef before #define.
6765 2018-10-29 Richard Biener <rguenther@suse.de>
6767 PR tree-optimization/87790
6768 * tree-vect-slp.c (vect_mark_slp_stmts): Simplify.
6769 (vect_make_slp_decision): Adjust.
6770 (vect_slp_analyze_bb_1): Likewise.
6771 (vect_detect_hybrid_slp_stmts): Properly union SLP type over
6774 2018-10-29 Richard Biener <rguenther@suse.de>
6776 PR tree-optimization/87785
6777 * tree-vect-slp.c (vect_build_slp_tree_2): Remove loads argument
6779 (vect_build_slp_tree): Likewise.
6780 (vect_gather_slp_loads): New function.
6781 (vect_analyze_slp_instance): Gather loads separately from the
6784 2018-10-29 Martin Liska <mliska@suse.cz>
6786 * Makefile.in: Make dependency to json.o.
6787 * doc/gcov.texi: Document new JSON format, remove
6788 old intermediate format documentation.
6789 * gcov.c (struct function_info): Come up with m_name and
6791 (function_info::function_info): Initialize it.
6792 (function_info::~function_info): Release it.
6793 (main): Rename flag_intermediate_format to flag_json_format.
6794 (print_usage): Describe --json-format.
6795 (process_args): Set flag_json_format.
6796 (output_intermediate_line): Remove.
6797 (output_intermediate_json_line): Likewise.
6798 (get_gcov_intermediate_filename): Return new extension
6800 (output_intermediate_file): Implement JSON emission.
6801 (output_json_intermediate_file): Implement JSON emission.
6802 (generate_results): Use ::get_name for function name.
6803 Handle JSON output file.
6804 (read_graph_file): Use ::get_name instead of cplus_demangle.
6805 (read_count_file): Likewise.
6806 (solve_flow_graph): Likewise.
6807 (add_line_counts): Likewise.
6808 (accumulate_line_counts): Use new flag_json_format.
6809 (output_function_details): Use ::get_name instead of cplus_demangle.
6810 (output_lines): Likewise.
6811 * json.cc (test_writing_literals): Add new tests.
6812 * json.h (class literal): Add new boolean constructor.
6814 2018-10-29 Segher Boessenkool <segher@kernel.crashing.org>
6816 PR rtl-optimization/87701
6817 PR rtl-optimization/87780
6818 * combine.c (make_more_copies): Rewrite.
6820 2018-10-28 Kugan Vivekanandarajah <kuganv@linaro.org>
6822 * doc/generic.texi (ABSU_EXPR): Document.
6823 * match.pd (absu(x)*absu(x) -> x*x): Handle.
6824 (absu(absu(X)) -> absu(X)): Likewise.
6825 (absu(-X) -> absu(X)): Likewise.
6826 (absu(X) where X is nonnegative -> X): Likewise.
6828 2018-10-28 Iain Buclaw <ibuclaw@gdcproject.org>
6830 * Makefile.in (tm_d_file_list, tm_d_include_list): New variables.
6831 (TM_D_H, D_TARGET_DEF, D_TARGET_H, D_TARGET_OBJS): New variables.
6832 (tm_d.h, cs-tm_d.h, default-d.o): New rules.
6833 (d/d-target-hooks-def.h, s-d-target-hooks-def-h): New rules.
6834 (s-tm-texi): Also check timestamp on d-target.def.
6835 (generated_files): Add TM_D_H and d-target-hooks-def.h.
6836 (build/genhooks.o): Also depend on D_TARGET_DEF.
6837 * config.gcc (tm_d_file, d_target_objs, target_has_targetdm): New
6839 * config/aarch64/aarch64-d.c: New file.
6840 * config/aarch64/aarch64-linux.h (GNU_USER_TARGET_D_CRITSEC_SIZE):
6842 * config/aarch64/aarch64-protos.h (aarch64_d_target_versions): New
6844 * config/aarch64/aarch64.h (TARGET_D_CPU_VERSIONS): Define.
6845 * config/aarch64/t-aarch64 (aarch64-d.o): New rule.
6846 * config/arm/arm-d.c: New file.
6847 * config/arm/arm-protos.h (arm_d_target_versions): New prototype.
6848 * config/arm/arm.h (TARGET_D_CPU_VERSIONS): Define.
6849 * config/arm/linux-eabi.h (EXTRA_TARGET_D_OS_VERSIONS): Define.
6850 * config/arm/t-arm (arm-d.o): New rule.
6851 * config/default-d.c: New file.
6852 * config/glibc-d.c: New file.
6853 * config/gnu.h (GNU_USER_TARGET_D_OS_VERSIONS): Define.
6854 * config/i386/i386-d.c: New file.
6855 * config/i386/i386-protos.h (ix86_d_target_versions): New prototype.
6856 * config/i386/i386.h (TARGET_D_CPU_VERSIONS): Define.
6857 * config/i386/linux-common.h (EXTRA_TARGET_D_OS_VERSIONS): Define.
6858 (GNU_USER_TARGET_D_CRITSEC_SIZE): Define.
6859 * config/i386/t-i386 (i386-d.o): New rule.
6860 * config/kfreebsd-gnu.h (GNU_USER_TARGET_D_OS_VERSIONS): Define.
6861 * config/kopensolaris-gnu.h (GNU_USER_TARGET_D_OS_VERSIONS): Define.
6862 * config/linux-android.h (ANDROID_TARGET_D_OS_VERSIONS): Define.
6863 * config/linux.h (GNU_USER_TARGET_D_OS_VERSIONS): Define.
6864 * config/mips/linux-common.h (EXTRA_TARGET_D_OS_VERSIONS): Define.
6865 * config/mips/mips-d.c: New file.
6866 * config/mips/mips-protos.h (mips_d_target_versions): New prototype.
6867 * config/mips/mips.h (TARGET_D_CPU_VERSIONS): Define.
6868 * config/mips/t-mips (mips-d.o): New rule.
6869 * config/powerpcspe/linux.h (GNU_USER_TARGET_D_OS_VERSIONS): Define.
6870 * config/powerpcspe/linux64.h (GNU_USER_TARGET_D_OS_VERSIONS): Define.
6871 * config/powerpcspe/powerpcspe-d.c: New file.
6872 * config/powerpcspe/powerpcspe-protos.h (rs6000_d_target_versions):
6874 * config/powerpcspe/powerpcspe.c (rs6000_output_function_epilogue):
6875 Support GNU D by using 0 as the language type.
6876 * config/powerpcspe/powerpcspe.h (TARGET_D_CPU_VERSIONS): Define.
6877 * config/powerpcspe/t-powerpcspe (powerpcspe-d.o): New rule.
6878 * config/riscv/riscv-d.c: New file.
6879 * config/riscv/riscv-protos.h (riscv_d_target_versions): New
6881 * config/riscv/riscv.h (TARGET_D_CPU_VERSIONS): Define.
6882 * config/riscv/t-riscv (riscv-d.o): New rule.
6883 * config/rs6000/linux.h (GNU_USER_TARGET_D_OS_VERSIONS): Define.
6884 * config/rs6000/linux64.h (GNU_USER_TARGET_D_OS_VERSIONS): Define.
6885 * config/rs6000/rs6000-d.c: New file.
6886 * config/rs6000/rs6000-protos.h (rs6000_d_target_versions): New
6888 * config/rs6000/rs6000.c (rs6000_output_function_epilogue):
6889 Support GNU D by using 0 as the language type.
6890 * config/rs6000/rs6000.h (TARGET_D_CPU_VERSIONS): Define.
6891 * config/rs6000/t-rs6000 (rs6000-d.o): New rule.
6892 * config/s390/s390-d.c: New file.
6893 * config/s390/s390-protos.h (s390_d_target_versions): New prototype.
6894 * config/s390/s390.h (TARGET_D_CPU_VERSIONS): Define.
6895 * config/s390/t-s390 (s390-d.o): New rule.
6896 * config/sparc/sparc-d.c: New file.
6897 * config/sparc/sparc-protos.h (sparc_d_target_versions): New
6899 * config/sparc/sparc.h (TARGET_D_CPU_VERSIONS): Define.
6900 * config/sparc/t-sparc (sparc-d.o): New rule.
6901 * config/t-glibc (glibc-d.o): New rule.
6902 * configure: Regenerated.
6903 * configure.ac (tm_d_file): New variable.
6904 (tm_d_file_list, tm_d_include_list, d_target_objs): Add substitutes.
6905 * doc/contrib.texi (Contributors): Add self for the D frontend.
6906 * doc/frontends.texi (G++ and GCC): Mention D as a supported language.
6907 * doc/install.texi (Configuration): Mention libphobos as an option for
6908 --enable-shared. Mention d as an option for --enable-languages.
6909 (Testing): Mention check-d as a target.
6910 * doc/invoke.texi (Overall Options): Mention .d, .dd, and .di as file
6911 name suffixes. Mention d as a -x option.
6912 * doc/sourcebuild.texi (Top Level): Mention libphobos.
6913 * doc/standards.texi (Standards): Add section on D language.
6914 * doc/tm.texi: Regenerated.
6915 * doc/tm.texi.in: Add @node for D language and ABI, and @hook for
6916 TARGET_CPU_VERSIONS, TARGET_D_OS_VERSIONS, and TARGET_D_CRITSEC_SIZE.
6917 * dwarf2out.c (is_dlang): New function.
6918 (gen_compile_unit_die): Use DW_LANG_D for D.
6919 (declare_in_namespace): Return module die for D, instead of adding
6920 extra declarations into the namespace.
6921 (gen_namespace_die): Generate DW_TAG_module for D.
6922 (gen_decl_die): Handle CONST_DECLSs for D.
6923 (dwarf2out_decl): Likewise.
6924 (prune_unused_types_walk_local_classes): Handle DW_tag_interface_type.
6925 (prune_unused_types_walk): Handle DW_tag_interface_type same as other
6926 kinds of aggregates.
6927 * gcc.c (default_compilers): Add entries for .d, .dd and .di.
6928 * genhooks.c: Include d/d-target.def.
6930 2018-10-28 Iain Sandoe <iain@sandoe.co.uk>
6933 * config/rs6000/darwin.h (STACK_BOUNDARY): New.
6934 (RS6000_STARTING_FRAME_OFFSET): Adjust to preserve 16byte alignment.
6935 (STACK_DYNAMIC_OFFSET): Likewise.
6937 2018-10-27 Sandra Loosemore <sandra@codesourcery.com>
6940 * config/nios2/nios2.c (nios2_valid_target_attribute_rec): Fix
6943 2018-10-26 Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
6945 * doc/extend.texi (PowerPC builtins): Fix __builtin_unpack_ibm128
6946 return type and other typos.
6948 2018-10-26 Aaron Sawdey <acsawdey@linux.ibm.com>
6950 * config/rs6000/rs6000-string.c (expand_strncmp_gpr_sequence): Change to
6951 a shorter sequence with fewer branches.
6952 (emit_final_str_compare_gpr): Ditto.
6954 2018-10-26 Paul A. Clarke <pc@us.ibm.com>
6956 * config/rs6000/tmmintrin.h: New file.
6957 * config.gcc (powerpc*-*-*): Add tmmintrin.h to extra_headers.
6959 2018-10-26 Paul A. Clarke <pc@us.ibm.com>
6961 * config/rs6000/mmintrin.h: Enable 32bit compilation.
6962 * config/rs6000/xmmintrin.h: Likewise.
6964 2018-10-26 Paul A. Clarke <pc@us.ibm.com>
6966 * config/rs6000/xmmintrin.h (_mm_extract_pi16): Fix for big-endian.
6968 2018-10-26 Richard Biener <rguenther@suse.de>
6970 * tree-vect-slp.c (vect_mark_slp_stmts): Add visited hash_set
6972 (vect_mark_slp_stmts_relevant): Likewise.
6973 (vect_detect_hybrid_slp_stmts): Likewise.
6974 (vect_bb_slp_scalar_cost): Likewise.
6975 (vect_remove_slp_scalar_calls): Likewise.
6977 2018-10-26 Jan Hubicka <jh@suse.cz>
6979 * ipa-devirt.c (odr_subtypes_equivalent_p): Fix recursion.
6980 (warn_types_mismatch): Fix walk of DECL_NAME.
6981 (odr_types_equivalent_p): Fix overactive assert.
6983 2018-10-26 Richard Biener <rguenther@suse.de>
6985 PR tree-optimization/87105
6986 * tree-vectorizer.h (_slp_tree::refcnt): New member.
6987 * tree-vect-slp.c (vect_free_slp_tree): Decrement and honor
6989 (vect_create_new_slp_node): Initialize refcnt to one.
6991 (scalar_stmts_set_t, bst_fail): Remove.
6992 (vect_build_slp_tree_2): Add bst_map argument and adjust calls.
6993 (vect_build_slp_tree): Add bst_map argument and lookup
6994 already created SLP nodes.
6995 (vect_print_slp_tree): Handle a SLP graph, print SLP node
6997 (vect_slp_rearrange_stmts): Handle a SLP graph.
6998 (vect_analyze_slp_instance): Adjust and free SLP nodes from
6999 the CSE map. Fix indenting.
7000 (vect_schedule_slp_instance): Add short-cut.
7002 2018-10-26 Martin Liska <mliska@suse.cz>
7005 * ipa-prop.c (struct ipa_vr_ggc_hash_traits): Hash with
7006 addr_expr and not with pointers.
7008 2018-10-26 Jan Hubicka <jh@suse.cz>
7010 * tree.c (free_lang_data_in_type): Only check main variants.
7011 * ipa-devirt.c (warn_odr): Make static.
7012 (types_same_for_odr): Drop strict variant.
7013 (types_odr_comparable): Likewise.
7014 (odr_or_derived_type_p): Look for main variants.
7015 (odr_name_hasher::equal): Cleanup comment.
7016 (odr_subtypes_equivalent): Add warn and warned arguments; check main
7018 (type_variants_equivalent_p): break out from ...
7019 (odr_types_equivalent): ... here; go for main variants where needed.
7020 (warn_odr): ... here; turn static.
7021 (warn_types_mismatch): Compare mangled names of main variants.
7022 * ipa-utils.h (types_odr_comparable): Drop strict parameter.
7023 (type_with_linkage_p): Sanity check that we look at main variant.
7024 * lto.c (lto_read_decls): Only consider main variant to be ODR type.
7025 * tree.h (types_same_for_odr): Drop strict argument.
7027 2018-10-26 Richard Biener <rguenther@suse.de>
7029 PR tree-optimization/87746
7030 * tree-vect-data-refs.c (vect_update_misalignment_for_peel):
7031 Simplify and fix WRT strided store groups with size not
7032 equal to step in element count.
7033 (vect_analyze_group_access_1): Dump the whole group.
7035 2018-10-25 Carl Love <cel@us.ibm.com>
7037 * config/rs6000/rs6000-c.c (P9V_BUILTIN_VEC_VSCEDPGT,
7038 P9V_BUILTIN_VEC_VSCEDPLT, P9V_BUILTIN_VEC_VSCEDPEQ,
7039 P9V_BUILTIN_VEC_VSCEDPUO): Rename base overloaded name. Add quad
7040 precicion entry for each overloaded builtin.
7041 * config/rs6000/rs6000-builtin.def (VSCEDPGT, VSCEDPLT, VSCEDPEQ,
7042 VSCEDPUO): Rename overloaded name.
7043 (VSCEDPGT, VSCEQPGT, VSCEDPLT, VSCEQPLT, VSCEDPEQ, VSCEQPEQ,
7044 VSCEDPUO, VSCEQPUO): Add defitions for overloaded builtins.
7045 * config/rs6000/vsx.md (xscmpexpqp_<code>_<mode>): Add
7046 define_expand for xscmpexqp instruction.
7047 (*xscmpexpqp): Add define_insn for the xscmpexqp instruction.
7049 2018-10-25 Bill Schmidt <wschmidt@linux.ibm.com>
7050 Jinsong Ji <jji@us.ibm.com>
7052 * config/rs6000/emmintrin.h (_mm_slli_epi16): Replace deprecated
7053 function with vec_sl.
7054 (_mm_slli_epi32): Likewise.
7055 (_mm_slli_epi64): Likewise.
7056 (_mm_srai_epi16): Replace deprecated function with vec_sra.
7057 (_mm_srai_epi32): Likewise.
7058 (_mm_srli_epi16): Replace deprecated function with vec_sr.
7059 (_mm_srli_epi32): Likewise.
7060 (_mm_srli_epi64): Likewise.
7061 (_mm_sll_epi16): Replace deprecated function with vec_sl.
7062 (_mm_sll_epi32): Likewise.
7063 (_mm_sll_epi64): Likewise.
7064 (_mm_sra_epi16): Replace deprecated function with vec_sra.
7065 (_mm_sra_epi32): Likewise.
7066 (_mm_srl_epi16): Replace deprecated function with vec_sr.
7067 (_mm_srl_epi32): Likewise.
7068 (_mm_srl_epi64): Likewise.
7070 2018-10-25 Bill Schmidt <wschmidt@linux.ibm.com>
7071 Jinsong Ji <jji@us.ibm.com>
7073 * gcc/config/rs6000/emmintrin.h (_mm_sll_epi16): Replace
7074 comparison operators with vec_cmp* for compatibility due to
7075 unfortunate history; clean up formatting and use types more
7077 (_mm_sll_epi32): Likewise.
7078 (_mm_sll_epi64): Likewise.
7079 (_mm_srl_epi16): Likewise.
7080 (_mm_srl_epi32): Likewise.
7081 (_mm_srl_epi64): Likewise.
7083 2018-10-25 Bill Schmidt <wschmidt@linux.ibm.com>
7084 Jinsong Ji <jji@us.ibm.com>
7086 * config/rs6000/emmintrin.h (_mm_sll_epi64): Remove wrong cast.
7087 * config/rs6000/xmmintrin.h (_mm_min_ps): Change m's type to
7088 __vector __bool int. Use vec_cmpgt in preference to deprecated
7089 function vec_vcmpgtfp.
7090 (_mm_max_ps): Likewise.
7092 2018-10-25 Jeff Law <law@redhat.com>
7094 * config/rl78/rl78.c (insn_ok_now): Always re-recognize the insn
7097 2018-10-25 Martin Sebor <msebor@redhat.com>
7099 * doc/extend.texi (aligned): Expand attribute description.
7100 (Alignment): Rename section. Discuss function arguments.
7102 2018-10-25 Jan Hubicka <jh@suse.cz>
7104 * ipa-devirt.c (main_odr_variant): Remove.
7105 (hash_odr_name, types_same_for_odr, types_odr_comparable,
7106 odr_name_hasher::equal, odr_subtypes_equivalent_p):
7107 Drop use of main_odr_variant.
7108 (add_type_duplicate): Silence confused warnings on integer types.
7109 (get_odr_type): Always look for main variant.
7110 (register_odr_type): Simplify.
7112 2018-10-25 Richard Biener <rguenther@suse.de>
7114 * tree-vect-data-refs.c (vect_analyze_data_ref_accesses):
7115 Initialize ng to silence error with release checking bootstrap.
7117 2018-10-25 Richard Biener <rguenther@suse.de>
7119 * tree-if-conv.c: Include tree-ssa-sccvn.h.
7120 (tree_if_conversion): Run CSE on the if-converted loop body.
7122 2018-10-25 Ilya Leoshkevich <iii@linux.ibm.com>
7124 * config/s390/constraints.md (ZL): New constraint.
7125 * config/s390/s390.c (legitimate_pic_operand_p): Accept LARL
7127 * config/s390/s390.md (movdi_larl): Remove.
7128 (movdi_64): Add the LARL alternative.
7130 2018-10-25 Ilya Leoshkevich <iii@linux.ibm.com>
7133 * rtl.c (RTX_CODE_HWINT_P_1): New helper macro.
7134 (RTX_CODE_HWINT_P): New macro.
7135 (rtx_code_size): Use RTX_CODE_HWINT_P ().
7137 2018-10-25 Jan Hubicka <jh@suse.cz>
7139 * ipa-devirt.c (odr_types_equivalent_p): Do not ICE if one of types
7142 2018-10-25 Richard Biener <rguenther@suse.de>
7144 PR tree-optimization/87665
7145 PR tree-optimization/87745
7146 * tree-vectorizer.h (get_earlier_stmt): Remove.
7147 (get_later_stmt): Pick up UID from the original non-pattern stmt.
7149 2018-10-25 Sam Tebbs <sam.tebbs@arm.com>
7151 * options.texi (Deprecated): Move list to Var section.
7153 2018-10-24 Bill Schmidt <wschmidt@linux.ibm.com>
7154 Jinsong Ji <jji@us.ibm.com>
7156 * config/rs6000/emmintrin.h (_mm_cvtpd_epi32): Change deprecated
7157 __vector long to __vector long long.
7158 (_mm_cvtpd_ps): Likewise.
7159 (_mm_cvttpd_epi32): Likewise.
7160 (_mm_cvtpi32_pd): Likewise.
7161 (_mm_unpackhi_epi64): Likewise.
7162 (_mm_unpacklo_epi64): Likewise.
7164 2018-10-24 Segher Boessenkool <segher@kernel.crashing.org>
7166 PR rtl-optimization/87720
7167 * combine.c (make_more_copies): Skip if the dest is pc_rtx.
7169 2018-10-24 Alexandre Oliva <aoliva@redhat.com>
7171 * gimple-ssa-isolate-paths.c
7172 (find_implicit_erroneous_behavior): Do not change code if the
7173 pass is running for warnings only.
7174 (find_explicit_erroneous_behavior): Likewise.
7176 2018-10-24 Michael Meissner <meissner@linux.ibm.com>
7178 * config/rs6000/rs6000.c (TARGET_MANGLE_DECL_ASSEMBLER_NAME):
7179 Define as rs6000_mangle_decl_assembler_name.
7180 (rs6000_mangle_decl_assembler_name): If the user switched from IBM
7181 long double to IEEE long double, switch the names of the long
7182 double built-in functions to be <func>f128 instead of <func>l.
7184 2018-10-24 Martin Sebor <msebor@redhat.com>
7186 * doc/extend.texi (nonnull): List no-argument form. Reference
7187 -fno-delete-null-pointer-checks and -fisolate-erroneous-paths-attribute.
7189 2018-10-24 Richard Biener <rguenther@suse.de>
7191 * tree-ssa-sccvn.c (do_rpo_vn): Free rpo_state.
7193 2018-10-24 Martin Liska <mliska@suse.cz>
7195 PR tree-optimization/84436
7196 * tree-switch-conversion.c (switch_conversion::contains_same_values_p):
7198 (switch_conversion::contains_linear_function_p): New.
7199 (switch_conversion::build_one_array): Support linear
7200 transformation on input.
7201 * tree-switch-conversion.h (struct switch_conversion): Add
7202 contains_linear_function_p declaration.
7204 2018-10-24 Richard Biener <rguenther@suse.de>
7206 * varasm.c (const_hash_1): Return hash of ADDR_EXPR
7207 if its argument is CONSTANT_CLASS_P.
7209 2018-10-11 Jan Hubicka <hubicka@ucw.cz>
7211 * ipa-utils.h (type_with_linkage_p): No longer check for TYPE_STUB_DECL;
7212 it is wrong for forward declarations.
7214 2018-10-24 Ilya Leoshkevich <iii@linux.ibm.com>
7216 * config/s390/s390.c (s390_check_qrst_address): Add the missing
7217 SYMBOL_REF_P () check.
7219 2018-10-24 Richard Biener <rguenther@suse.de>
7221 PR tree-optimization/87105
7222 * tree-vect-data-refs.c (vect_analyze_group_access_1): Adjust
7223 dump classification.
7224 (vect_analyze_data_ref_accesses): Handle duplicate loads and
7225 stores by splitting the affected group after the fact.
7226 * tree-vect-slp.c (vect_build_slp_tree_2): Dump when we
7227 fail the SLP build because of size constraints.
7229 2018-10-24 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
7231 * configure.ac (gcc_cv_ld_aligned_shf_merge): New test.
7232 * configure: Regenerate.
7233 * config.in: Regenerate.
7234 * varasm.c (mergeable_string_section): Use readonly_data_section
7235 if linker doesn't support SHF_MERGE with alignment > 8.
7236 (mergeable_constant_section): Likewise.
7238 2018-10-24 Richard Biener <rguenther@suse.de>
7240 PR tree-optimization/84013
7241 * tree-ssa-structalias.c (struct msdi_data): New struct for
7242 marshalling data to walk_stmt_load_store_ops.
7243 (maybe_set_dependence_info): Refactor as callback for
7244 walk_stmt_load_store_ops.
7245 (compute_dependence_clique): Set restrict info on all stmt kinds.
7247 2018-10-24 Martin Liska <mliska@suse.cz>
7249 * cgraph.c (cgraph_node::dump):
7250 Remove reduntant dumps and make tp_first_run dump more compact.
7252 2018-10-24 Richard Biener <rguenther@suse.de>
7254 PR tree-optimization/87665
7255 * tree-vect-data-refs.c (vect_preserves_scalar_order_p): Adjust
7258 2018-10-12 Jeff Law <law@redhat.com>
7260 * config/h8300/h8300.c (h8300_expand_prologue): Fix stm generation
7263 2018-10-23 Richard Biener <rguenther@suse.de>
7265 * tree-vrp.c (add_assert_info): Guard dump_printf with
7267 * gimple-ssa-evrp-analyze.c
7268 (evrp_range_analyzer::record_ranges_from_incoming_edge):
7269 Use value_range::ignore_equivs_equal_p.
7271 2018-10-23 Richard Biener <rguenther@suse.de>
7273 PR tree-optimization/87105
7274 PR tree-optimization/87608
7275 * passes.def (pass_all_early_optimizations): Add early phi-opt
7277 * tree-ssa-phiopt.c (value_replacement): Ignore NOPs and predicts in
7278 addition to debug stmts.
7279 (tree_ssa_phiopt_worker): Add early_p argument, do only min/max
7280 and abs replacement early.
7281 * tree-cfg.c (gimple_empty_block_p): Likewise.
7283 2018-10-23 Richard Earnshaw <rearnsha@arm.com>
7286 * config.gcc (arm*-*-netbsdelf*): Default to StrongARM if no CPU
7287 specified to configure.
7288 (arm*-*-*): Use ARM7TDMI as the target CPU if no default provided.
7290 2018-10-23 Richard Biener <rguenther@suse.de>
7292 PR tree-optimization/87700
7293 * tree-ssa-copy.c (set_copy_of_val): Fix change detection logic.
7295 2018-10-23 Jakub Jelinek <jakub@redhat.com>
7298 * config/i386/avx512vlintrin.h (_mm_mask_mullo_epi32): Change type of
7299 second argument from __mmask16 to __mmask8.
7300 * config/i386/avx512vlbwintrin.h (_mm_mask_packus_epi32,
7301 _mm_mask_packs_epi32): Likewise.
7302 * config/i386/avx512pfintrin.h (_mm512_mask_prefetch_i64scatter_ps):
7304 (_mm512_mask_prefetch_i64scatter_pd): Likewise. Formatting fix.
7306 2018-10-23 Richard Biener <rguenther@suse.de>
7308 * tree-vect-stmts.c (vect_analyze_stmt): Fix typo in comment.
7310 2018-10-23 Richard Biener <rguenther@suse.de>
7312 PR tree-optimization/86144
7313 * tree-vect-stmts.c (vect_analyze_stmt): Prefer -mveclibabi
7314 over simd attribute.
7316 2018-10-23 Richard Biener <rguenther@suse.de>
7318 PR tree-optimization/87693
7319 * tree-ssa-threadedge.c (thread_around_empty_blocks): Handle
7320 the case we do not find the taken edge.
7322 2018-10-22 Bill Schmidt <wschmidt@linux.ibm.com>
7323 Jinsong Ji <jji@us.ibm.com>
7325 * config/rs6000/emmintrin.h (_MM_SHUFFLE2): Comment cleanup.
7326 (_mm_store_pd): Use unaligned vector type for pointer cast.
7327 (_mm_maskmoveu_si128): Likewise.
7328 * config/rs6000/xmmintrin.h (__m128_u): New typedef.
7329 (_mm_store_ps): Use unaligned vector type for pointer cast.
7331 2018-10-22 Paul Koning <ni1d@arrl.net>
7333 * symtab.c (symtab_node::increase_alignment): Correct max
7336 2018-10-22 Yury Gribov <tetra2005@gmail.com>
7338 PR tree-optimization/87633
7339 * match.pd: Do not generate unordered integer comparisons.
7341 2018-10-22 Segher Boessenkool <segher@kernel.crashing.org>
7343 PR rtl-optimization/87600
7344 * combine.c: Add include of expr.h.
7345 (cant_combine_insn_p): Do not combine moves from any hard non-fixed
7346 register to a pseudo.
7347 (make_more_copies): New function, add a copy to a new pseudo after
7348 the moves from hard registers into pseudos.
7349 (rest_of_handle_combine): Declare rebuild_jump_labels_after_combine
7350 later. Call make_more_copies.
7352 2018-10-22 Andrew Stubbs <ams@codesourcery.com>
7354 * lra-constraints.c (process_alt_operands): New local array,
7355 matching_early_clobber. Check matching_early_clobber before
7356 decrementing reject, and set matching_early_clobber after.
7358 2018-10-22 Segher Boessenkool <segher@kernel.crashing.org>
7361 * config/rs6000/rs6000.c (print_operand_address): For unexpected RTL
7362 call output_addr_const and hope for the best.
7364 2018-10-22 Richard Biener <rguenther@suse.de>
7366 * gimple-ssa-evrp-analyze.c
7367 (evrp_range_analyzer::record_ranges_from_incoming_edge): Be
7368 smarter about what ranges to use.
7369 * tree-vrp.c (add_assert_info): Dump here.
7370 (register_edge_assert_for_2): Instead of here at multiple but
7373 * gcc.dg/tree-ssa/evrp12.c: New testcase.
7374 * gcc.dg/predict-6.c: Adjust.
7375 * gcc.dg/tree-ssa/vrp33.c: Disable EVRP.
7376 * gcc.dg/tree-ssa/vrp02.c: Likewise.
7377 * gcc.dg/tree-ssa/cunroll-9.c: Likewise.
7379 2018-10-22 Steven Bosscher <steven@gcc.gnu.org>
7380 Richard Biener <rguenther@suse.de>
7382 * bitmap.h: Update data structure documentation, including a
7383 description of bitmap views as either linked-lists or splay trees.
7384 (struct bitmap_element_def): Update comments for splay tree bitmaps.
7385 (struct bitmap_head_def): Likewise.
7386 (bitmap_list_view, bitmap_tree_view): New prototypes.
7387 (bitmap_initialize_stat): Initialize a bitmap_head's indx and
7389 (bmp_iter_set_init): Assert the iterated bitmaps are in list form.
7390 (bmp_iter_and_init, bmp_iter_and_compl_init): Likewise.
7391 * bitmap.c (bitmap_elem_to_freelist): Unregister overhead of a
7392 released bitmap element here.
7393 (bitmap_element_free): Remove.
7394 (bitmap_elt_clear_from): Work on splay tree bitmaps.
7395 (bitmap_list_link_element): Renamed from bitmap_element_link. Move
7396 this function similar ones such that linked-list bitmap implementation
7397 functions are grouped.
7398 (bitmap_list_unlink_element): Renamed from bitmap_element_unlink,
7399 and moved for grouping.
7400 (bitmap_list_insert_element_after): Renamed from
7401 bitmap_elt_insert_after, and moved for grouping.
7402 (bitmap_list_find_element): New function spliced from bitmap_find_bit.
7403 (bitmap_tree_link_left, bitmap_tree_link_right,
7404 bitmap_tree_rotate_left, bitmap_tree_rotate_right, bitmap_tree_splay,
7405 bitmap_tree_link_element, bitmap_tree_unlink_element,
7406 bitmap_tree_find_element): New functions for splay-tree bitmap
7408 (bitmap_element_link, bitmap_element_unlink, bitmap_elt_insert_after):
7409 Renamed and moved, see above entries.
7410 (bitmap_tree_listify_from): New function to convert part of a splay
7411 tree bitmap to a linked-list bitmap.
7412 (bitmap_list_view): Convert a splay tree bitmap to linked-list form.
7413 (bitmap_tree_view): Convert a linked-list bitmap to splay tree form.
7414 (bitmap_find_bit): Remove.
7415 (bitmap_clear, bitmap_clear_bit, bitmap_set_bit,
7416 bitmap_single_bit_set_p, bitmap_first_set_bit, bitmap_last_set_bit):
7417 Handle splay tree bitmaps.
7418 (bitmap_copy, bitmap_count_bits, bitmap_and, bitmap_and_into,
7419 bitmap_elt_copy, bitmap_and_compl, bitmap_and_compl_into,
7420 bitmap_compl_and_into, bitmap_elt_ior, bitmap_ior, bitmap_ior_into,
7421 bitmap_xor, bitmap_xor_into, bitmap_equal_p, bitmap_intersect_p,
7422 bitmap_intersect_compl_p, bitmap_ior_and_compl,
7423 bitmap_ior_and_compl_into, bitmap_set_range, bitmap_clear_range,
7424 bitmap_hash): Reject trying to act on splay tree bitmaps. Make
7425 corresponding changes to use linked-list specific bitmap_element
7426 manipulation functions as applicable for efficiency.
7427 (bitmap_tree_to_vec): New function.
7428 (debug_bitmap_elt_file): New function split out from ...
7429 (debug_bitmap_file): ... here. Handle splay tree bitmaps.
7430 (bitmap_print): Likewise.
7432 PR tree-optimization/63155
7433 * tree-ssa-propagate.c (ssa_prop_init): Use tree-view for the
7435 * tree-ssa-coalesce.c (coalesce_ssa_name): Populate used_in_copies
7438 2018-10-22 Martin Liska <mliska@suse.cz>
7440 PR tree-optimization/87686
7442 2018-08-29 Martin Liska <mliska@suse.cz>
7444 * tree-switch-conversion.c (switch_conversion::expand):
7445 Strenghten assumption about gswitch statements.
7447 2018-10-22 Martin Liska <mliska@suse.cz>
7449 * ipa-icf.c (sem_item::compare_attributes): Remove.
7450 (sem_item::compare_referenced_symbol_properties): Use
7451 attribute_list_equal instead.
7452 (sem_function::equals_wpa): Likewise.
7453 * ipa-icf.h: Remove compare_attributes.
7455 2018-10-22 Richard Biener <rguenther@suse.de>
7458 * mem-stats.h (mem_usage::operator==): Fix pasto.
7460 2018-10-22 Richard Biener <rguenther@suse.de>
7462 PR tree-optimization/87640
7463 * tree-vrp.c (set_value_range_with_overflow): Decompose
7465 (extract_range_from_binary_expr_1): Adjust.
7467 2018-10-22 Martin Jambor <mjambor@suse.cz>
7469 * tree-eh.h (stmt_could_throw_p): Add function parameter.
7470 (stmt_can_throw_external): Likewise.
7471 (stmt_can_throw_internal): Likewise.
7472 * tree-eh.c (lower_eh_constructs_2): Pass cfun to stmt_could_throw_p.
7473 (lower_eh_constructs_2): Likewise.
7474 (stmt_could_throw_p): Add fun parameter, use it instead of cfun.
7475 (stmt_can_throw_external): Likewise.
7476 (stmt_can_throw_internal): Likewise.
7477 (maybe_clean_eh_stmt_fn): Pass cfun to stmt_could_throw_p.
7478 (maybe_clean_or_replace_eh_stmt): Pass cfun to stmt_could_throw_p.
7479 (maybe_duplicate_eh_stmt_fn): Pass new_fun to stmt_could_throw_p.
7480 (maybe_duplicate_eh_stmt): Pass cfun to stmt_could_throw_p.
7481 (pass_lower_eh_dispatch::execute): Pass cfun to
7482 stmt_can_throw_external.
7483 (cleanup_empty_eh): Likewise.
7484 (verify_eh_edges): Pass cfun to stmt_could_throw_p.
7485 * cgraph.c (cgraph_edge::set_call_stmt): Pass a function to
7486 stmt_can_throw_external instead of pushing it to cfun.
7487 (symbol_table::create_edge): Likewise.
7488 * gimple-fold.c (fold_builtin_atomic_compare_exchange): Pass cfun to
7489 stmt_can_throw_internal.
7490 * gimple-ssa-evrp.c (evrp_dom_walker::before_dom_children): Pass cfun
7491 to stmt_could_throw_p.
7492 * gimple-ssa-store-merging.c (handled_load): Pass cfun to
7493 stmt_can_throw_internal.
7494 (pass_store_merging::execute): Likewise.
7495 * gimple-ssa-strength-reduction.c
7496 (find_candidates_dom_walker::before_dom_children): Pass cfun to
7498 * gimplify-me.c (gimple_regimplify_operands): Pass cfun to
7499 stmt_can_throw_internal.
7500 * ipa-pure-const.c (check_call): Pass cfun to stmt_could_throw_p and
7501 to stmt_can_throw_external.
7502 (check_stmt): Pass cfun to stmt_could_throw_p.
7503 (check_stmt): Pass cfun to stmt_can_throw_external.
7504 (pass_nothrow::execute): Likewise.
7505 * trans-mem.c (expand_call_tm): Pass cfun to stmt_can_throw_internal.
7506 * tree-cfg.c (is_ctrl_altering_stmt): Pass cfun to
7507 stmt_can_throw_internal.
7508 (verify_gimple_in_cfg): Pass cfun to stmt_could_throw_p.
7509 (stmt_can_terminate_bb_p): Pass cfun to stmt_can_throw_external.
7510 (gimple_purge_dead_eh_edges): Pass cfun to stmt_can_throw_internal.
7511 * tree-complex.c (expand_complex_libcall): Pass cfun to
7512 stmt_could_throw_p and to stmt_can_throw_internal.
7513 (expand_complex_multiplication): Pass cfun to stmt_can_throw_internal.
7514 * tree-inline.c (copy_edges_for_bb): Likewise.
7515 (maybe_move_debug_stmts_to_successors): Likewise.
7516 * tree-outof-ssa.c (ssa_is_replaceable_p): Pass cfun to
7518 * tree-parloops.c (oacc_entry_exit_ok_1): Likewise.
7519 * tree-sra.c (scan_function): Pass cfun to stmt_can_throw_external.
7520 * tree-ssa-alias.c (stmt_kills_ref_p): Pass cfun to
7521 stmt_can_throw_internal.
7522 * tree-ssa-ccp.c (optimize_atomic_bit_test_and): Likewise.
7523 * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Pass cfun to
7525 (mark_aliased_reaching_defs_necessary_1): Pass cfun to
7526 stmt_can_throw_internal.
7527 * tree-ssa-forwprop.c (pass_forwprop::execute): Likewise.
7528 * tree-ssa-loop-im.c (movement_possibility): Pass cfun to
7530 * tree-ssa-loop-ivopts.c (find_givs_in_stmt_scev): Likewise.
7531 (add_autoinc_candidates): Pass cfun to stmt_can_throw_internal.
7532 * tree-ssa-math-opts.c (pass_cse_reciprocals::execute): Likewise.
7533 (convert_mult_to_fma_1): Likewise.
7534 (convert_to_divmod): Likewise.
7535 * tree-ssa-phiprop.c (propagate_with_phi): Likewise.
7536 * tree-ssa-pre.c (compute_avail): Pass cfun to stmt_could_throw_p.
7537 * tree-ssa-propagate.c
7538 (substitute_and_fold_dom_walker::before_dom_children): Likewise.
7539 * tree-ssa-reassoc.c (suitable_cond_bb): Likewise.
7540 (maybe_optimize_range_tests): Likewise.
7541 (linearize_expr_tree): Likewise.
7542 (reassociate_bb): Likewise.
7543 * tree-ssa-sccvn.c (copy_reference_ops_from_call): Likewise.
7544 * tree-ssa-scopedtables.c (hashable_expr_equal_p): Likewise.
7545 * tree-ssa-strlen.c (adjust_last_stmt): Likewise.
7546 (handle_char_store): Likewise.
7547 * tree-vect-data-refs.c (vect_find_stmt_data_reference): Pass cfun to
7548 stmt_can_throw_internal.
7549 * tree-vect-patterns.c (check_bool_pattern): Pass cfun to
7551 * tree-vect-stmts.c (vect_finish_stmt_generation_1): Likewise.
7552 (vectorizable_call): Pass cfun to stmt_can_throw_internal.
7553 (vectorizable_simd_clone_call): Likewise.
7554 * value-prof.c (gimple_ic): Pass cfun to stmt_could_throw_p.
7555 (gimple_stringop_fixed_value): Likewise.
7557 2018-10-22 Ilya Leoshkevich <iii@linux.ibm.com>
7559 * config/s390/s390.c (s390_loadrelative_operand_p): Accept
7560 literal pool references.
7561 (s390_check_qrst_address): Adapt to the new behavior of
7562 s390_loadrelative_operand_p ().
7564 2018-10-22 H.J. Lu <hongjiu.lu@intel.com>
7567 * config/i386/sse.md (*andnot<mode>3_bcst): New.
7569 2018-10-22 H.J. Lu <hongjiu.lu@intel.com>
7572 * config/i386/sse.md (*<code><mode>3_bcst): New.
7574 2018-10-22 H.J. Lu <hongjiu.lu@intel.com>
7577 * config/i386/sse.md (avx512bcst): Updated for V4SI, V2DI, V8SI,
7578 V4DI, V16SI and V8DI.
7579 (*sub<mode>3<mask_name>_bcst): New.
7580 (*add<mode>3<mask_name>_bcst): Likewise.
7582 2018-10-21 Bill Schmidt <wschmidt@linux.ibm.com>
7583 Jinsong Ji <jji@us.ibm.com>
7585 * config/rs6000/emmintrin.h (_mm_movemask_pd): Replace __vector
7586 __m64 with __vector unsigned long long for compatibility.
7587 (_mm_movemask_epi8): Likewise.
7588 * config/rs6000/xmmintrin.h (_mm_cvtps_pi32): Likewise.
7589 (_mm_cvttps_pi32): Likewise.
7590 (_mm_cvtpi32_ps): Likewise.
7591 (_mm_cvtps_pi16): Likewise.
7592 (_mm_loadh_pi): Likewise.
7593 (_mm_storeh_pi): Likewise.
7594 (_mm_movehl_ps): Likewise.
7595 (_mm_movelh_ps): Likewise.
7596 (_mm_loadl_pi): Likewise.
7597 (_mm_storel_pi): Likewise.
7598 (_mm_movemask_ps): Likewise.
7599 (_mm_shuffle_pi16): Likewise.
7601 2018-10-21 H.J. Lu <hongjiu.lu@intel.com>
7604 * config/i386/avx512fintrin.h (_mm512_fnmsub_round_pd): Use
7605 __builtin_ia32_vfnmsubpd512_mask.
7606 (_mm512_mask_fnmsub_round_pd): Likewise.
7607 (_mm512_fnmsub_pd): Likewise.
7608 (_mm512_mask_fnmsub_pd): Likewise.
7609 (_mm512_maskz_fnmsub_round_pd): Use
7610 __builtin_ia32_vfnmsubpd512_maskz.
7611 (_mm512_maskz_fnmsub_pd): Likewise.
7612 (_mm512_fnmsub_round_ps): Use __builtin_ia32_vfnmsubps512_mask.
7613 (_mm512_mask_fnmsub_round_ps): Likewise.
7614 (_mm512_fnmsub_ps): Likewise.
7615 (_mm512_mask_fnmsub_ps): Likewise.
7616 (_mm512_maskz_fnmsub_round_ps): Use
7617 __builtin_ia32_vfnmsubps512_maskz.
7618 (_mm512_maskz_fnmsub_ps): Likewise.
7619 * config/i386/avx512vlintrin.h (_mm256_mask_fnmsub_pd): Use
7620 __builtin_ia32_vfnmsubpd256_mask.
7621 (_mm256_maskz_fnmsub_pd): Use __builtin_ia32_vfnmsubpd256_maskz.
7622 (_mm_mask_fnmsub_pd): Use __builtin_ia32_vfmaddpd128_mask
7623 (_mm_maskz_fnmsub_pd): Use __builtin_ia32_vfnmsubpd128_maskz.
7624 (_mm256_mask_fnmsub_ps): Use __builtin_ia32_vfnmsubps256_mask.
7625 (_mm256_mask_fnmsub_ps): Use __builtin_ia32_vfnmsubps256_mask.
7626 (_mm256_maskz_fnmsub_ps): Use __builtin_ia32_vfnmsubps256_maskz.
7627 (_mm_mask_fnmsub_ps): Use __builtin_ia32_vfnmsubps128_mask.
7628 (_mm_maskz_fnmsub_ps): Use __builtin_ia32_vfnmsubps128_maskz.
7629 * config/i386/fmaintrin.h (_mm_fnmsub_pd): Use
7630 __builtin_ia32_vfnmsubpd.
7631 (_mm256_fnmsub_pd): Use __builtin_ia32_vfnmsubpd256.
7632 (_mm_fnmsub_ps): Use __builtin_ia32_vfnmsubps.
7633 (_mm256_fnmsub_ps): Use __builtin_ia32_vfnmsubps256.
7634 (_mm_fnmsub_sd): Use __builtin_ia32_vfnmsubsd3.
7635 (_mm_fnmsub_ss): Use __builtin_ia32_vfnmsubss3.
7636 * config/i386/i386-builtin.def: Add
7637 __builtin_ia32_vfnmsubpd256_mask,
7638 __builtin_ia32_vfnmsubpd256_maskz,
7639 __builtin_ia32_vfnmsubpd128_mask,
7640 __builtin_ia32_vfnmsubpd128_maskz,
7641 __builtin_ia32_vfnmsubps256_mask,
7642 __builtin_ia32_vfnmsubps256_maskz,
7643 __builtin_ia32_vfnmsubps128_mask,
7644 __builtin_ia32_vfnmsubps128_maskz,
7645 __builtin_ia32_vfnmsubpd512_mask,
7646 __builtin_ia32_vfnmsubpd512_maskz,
7647 __builtin_ia32_vfnmsubps512_mask,
7648 __builtin_ia32_vfnmsubps512_maskz, __builtin_ia32_vfnmsubss3,
7649 __builtin_ia32_vfnmsubsd3, __builtin_ia32_vfnmsubps,
7650 __builtin_ia32_vfnmsubpd, __builtin_ia32_vfnmsubps256 and.
7651 __builtin_ia32_vfnmsubpd256.
7652 * config/i386/sse.md (fma4i_fnmsub_<mode>): New.
7653 (<avx512>_fnmsub_<mode>_maskz<round_expand_name>): Likewise.
7654 (*<sd_mask_codefor>fma_fnmsub_<mode><sd_maskz_name>_bcst_1):
7656 (*<sd_mask_codefor>fma_fnmsub_<mode><sd_maskz_name>_bcst_2):
7658 (*<sd_mask_codefor>fma_fnmsub_<mode><sd_maskz_name>_bcst_3):
7660 (fmai_vmfnmsub_<mode><round_name>): Likewise.
7662 2018-10-21 H.J. Lu <hongjiu.lu@intel.com>
7665 * config/i386/avx512fintrin.h (_mm512_fnmadd_round_pd): Use
7666 __builtin_ia32_vfnmaddpd512_mask.
7667 (_mm512_mask_fnmadd_round_pd): Likewise.
7668 (_mm512_fnmadd_pd): Likewise.
7669 (_mm512_mask_fnmadd_pd): Likewise.
7670 (_mm512_maskz_fnmadd_round_pd): Use
7671 __builtin_ia32_vfnmaddpd512_maskz.
7672 (_mm512_maskz_fnmadd_pd): Likewise.
7673 (_mm512_fnmadd_round_ps): Use __builtin_ia32_vfnmaddps512_mask.
7674 (_mm512_mask_fnmadd_round_ps): Likewise.
7675 (_mm512_fnmadd_ps): Likewise.
7676 (_mm512_mask_fnmadd_ps): Likewise.
7677 (_mm512_maskz_fnmadd_round_ps): Use
7678 __builtin_ia32_vfnmaddps512_maskz.
7679 (_mm512_maskz_fnmadd_ps): Likewise.
7680 * config/i386/avx512vlintrin.h (_mm256_mask_fnmadd_pd): Use
7681 __builtin_ia32_vfnmaddpd256_mask.
7682 (_mm256_maskz_fnmadd_pd): Use __builtin_ia32_vfnmaddpd256_maskz.
7683 (_mm_mask_fnmadd_pd): Use __builtin_ia32_vfmaddpd128_mask
7684 (_mm_maskz_fnmadd_pd): Use __builtin_ia32_vfnmaddpd128_maskz.
7685 (_mm256_mask_fnmadd_ps): Use __builtin_ia32_vfnmaddps256_mask.
7686 (_mm256_mask_fnmadd_ps): Use __builtin_ia32_vfnmaddps256_mask.
7687 (_mm256_maskz_fnmadd_ps): Use __builtin_ia32_vfnmaddps256_maskz.
7688 (_mm_mask_fnmadd_ps): Use __builtin_ia32_vfnmaddps128_mask.
7689 (_mm_maskz_fnmadd_ps): Use __builtin_ia32_vfnmaddps128_maskz.
7690 * config/i386/fmaintrin.h (_mm_fnmadd_pd): Use
7691 __builtin_ia32_vfnmaddpd.
7692 (_mm256_fnmadd_pd): Use __builtin_ia32_vfnmaddpd256.
7693 (_mm_fnmadd_ps): Use __builtin_ia32_vfnmaddps.
7694 (_mm256_fnmadd_ps): Use __builtin_ia32_vfnmaddps256.
7695 (_mm_fnmadd_sd): Use __builtin_ia32_vfnmaddsd3.
7696 (_mm_fnmadd_ss): Use __builtin_ia32_vfnmaddss3.
7697 * config/i386/i386-builtin.def: Add
7698 __builtin_ia32_vfnmaddpd256_mask,
7699 __builtin_ia32_vfnmaddpd256_maskz,
7700 __builtin_ia32_vfnmaddpd128_mask,
7701 __builtin_ia32_vfnmaddpd128_maskz,
7702 __builtin_ia32_vfnmaddps256_mask,
7703 __builtin_ia32_vfnmaddps256_maskz,
7704 __builtin_ia32_vfnmaddps128_mask,
7705 __builtin_ia32_vfnmaddps128_maskz,
7706 __builtin_ia32_vfnmaddpd512_mask,
7707 __builtin_ia32_vfnmaddpd512_maskz,
7708 __builtin_ia32_vfnmaddps512_mask,
7709 __builtin_ia32_vfnmaddps512_maskz, __builtin_ia32_vfnmaddss3,
7710 __builtin_ia32_vfnmaddsd3, __builtin_ia32_vfnmaddps,
7711 __builtin_ia32_vfnmaddpd, __builtin_ia32_vfnmaddps256 and.
7712 __builtin_ia32_vfnmaddpd256.
7713 * config/i386/sse.md (fma4i_fnmadd_<mode>): New.
7714 (<avx512>_fnmadd_<mode>_maskz<round_expand_name>): Likewise.
7715 (*<sd_mask_codefor>fma_fnmadd_<mode><sd_maskz_name>_bcst_1):
7717 (*<sd_mask_codefor>fma_fnmadd_<mode><sd_maskz_name>_bcst_2):
7719 (*<sd_mask_codefor>fma_fnmadd_<mode><sd_maskz_name>_bcst_3):
7721 (fmai_vmfnmadd_<mode><round_name>): Likewise.
7723 2018-10-21 H.J. Lu <hongjiu.lu@intel.com>
7726 * config/i386/avx512fintrin.h (_mm512_fmsub_round_pd): Use
7727 __builtin_ia32_vfmsubpd512_mask.
7728 (_mm512_mask_fmsub_round_pd): Likewise.
7729 (_mm512_fmsub_pd): Likewise.
7730 (_mm512_mask_fmsub_pd): Likewise.
7731 (_mm512_maskz_fmsub_round_pd): Use
7732 __builtin_ia32_vfmsubpd512_maskz.
7733 (_mm512_maskz_fmsub_pd): Likewise.
7734 (_mm512_fmsub_round_ps): Use __builtin_ia32_vfmsubps512_mask.
7735 (_mm512_mask_fmsub_round_ps): Likewise.
7736 (_mm512_fmsub_ps): Likewise.
7737 (_mm512_mask_fmsub_ps): Likewise.
7738 (_mm512_maskz_fmsub_round_ps): Use
7739 __builtin_ia32_vfmsubps512_maskz.
7740 (_mm512_maskz_fmsub_ps): Likewise.
7741 * config/i386/avx512vlintrin.h (_mm256_mask_fmsub_pd): Use
7742 __builtin_ia32_vfmsubpd256_mask.
7743 (_mm256_maskz_fmsub_pd): Use __builtin_ia32_vfmsubpd256_maskz.
7744 (_mm_mask_fmsub_pd): Use __builtin_ia32_vfmaddpd128_mask
7745 (_mm_maskz_fmsub_pd): Use __builtin_ia32_vfmsubpd128_maskz.
7746 (_mm256_mask_fmsub_ps): Use __builtin_ia32_vfmsubps256_mask.
7747 (_mm256_mask_fmsub_ps): Use __builtin_ia32_vfmsubps256_mask.
7748 (_mm256_maskz_fmsub_ps): Use __builtin_ia32_vfmsubps256_maskz.
7749 (_mm_mask_fmsub_ps): Use __builtin_ia32_vfmsubps128_mask.
7750 (_mm_maskz_fmsub_ps): Use __builtin_ia32_vfmsubps128_maskz.
7751 * config/i386/fmaintrin.h (_mm_fmsub_pd): Use
7752 __builtin_ia32_vfmsubpd.
7753 (_mm256_fmsub_pd): Use __builtin_ia32_vfmsubpd256.
7754 (_mm_fmsub_ps): Use __builtin_ia32_vfmsubps.
7755 (_mm256_fmsub_ps): Use __builtin_ia32_vfmsubps256.
7756 (_mm_fmsub_sd): Use __builtin_ia32_vfmsubsd3.
7757 (_mm_fmsub_ss): Use __builtin_ia32_vfmsubss3.
7758 * config/i386/i386-builtin.def: Add
7759 __builtin_ia32_vfmsubpd256_mask,
7760 __builtin_ia32_vfmsubpd256_maskz,
7761 __builtin_ia32_vfmsubpd128_mask,
7762 __builtin_ia32_vfmsubpd128_maskz,
7763 __builtin_ia32_vfmsubps256_mask,
7764 __builtin_ia32_vfmsubps256_maskz,
7765 __builtin_ia32_vfmsubps128_mask,
7766 __builtin_ia32_vfmsubps128_maskz,
7767 __builtin_ia32_vfmsubpd512_mask,
7768 __builtin_ia32_vfmsubpd512_maskz,
7769 __builtin_ia32_vfmsubps512_mask,
7770 __builtin_ia32_vfmsubps512_maskz, __builtin_ia32_vfmsubss3,
7771 __builtin_ia32_vfmsubsd3, __builtin_ia32_vfmsubps,
7772 __builtin_ia32_vfmsubpd, __builtin_ia32_vfmsubps256 and.
7773 __builtin_ia32_vfmsubpd256.
7774 * config/i386/sse.md (fma4i_fmsub_<mode>): New.
7775 (<avx512>_fmsub_<mode>_maskz<round_expand_name>): Likewise.
7776 (*<sd_mask_codefor>fma_fmsub_<mode><sd_maskz_name>_bcst_1):
7778 (*<sd_mask_codefor>fma_fmsub_<mode><sd_maskz_name>_bcst_2):
7780 (*<sd_mask_codefor>fma_fmsub_<mode><sd_maskz_name>_bcst_3):
7782 (fmai_vmfmsub_<mode><round_name>): Likewise.
7784 2018-10-21 H.J. Lu <hongjiu.lu@intel.com>
7786 * config/i386/sse.md (*<plusminus_insn><mode>3<mask_name>_bcst_1):
7787 Remove plus. Renamed to ...
7788 (*sub<mode>3<mask_name>_bcst): This.
7789 (*add<mode>3<mask_name>_bcst_2): Renamede to ...
7790 (*add<mode>3<mask_name>_bcst): This.
7792 2018-10-21 H.J. Lu <hongjiu.lu@intel.com>
7795 * config/i386/sse.md (*mul<mode>3<mask_name>_bcst): New.
7797 2018-10-21 H.J. Lu <hongjiu.lu@intel.com>
7800 * i386/avx512vlintrin.h (_mm256_or_epi32): New.
7801 (_mm_or_epi32): Likewise.
7802 (_mm256_xor_epi32): Likewise.
7803 (_mm_xor_epi32): Likewise.
7804 (_mm256_or_epi64): Likewise.
7805 (_mm_or_epi64): Likewise.
7806 (_mm256_xor_epi64): Likewise.
7807 (_mm_xor_epi64): Likewise.
7809 2018-10-20 H.J. Lu <hongjiu.lu@intel.com>
7812 * config/i386/sse.md (*<avx512>_div<mode>3<mask_name>_bcst): New.
7814 2018-10-20 Jakub Jelinek <jakub@redhat.com>
7817 * varasm.c (decode_addr_const): Handle COMPOUND_LITERAL_EXPR.
7819 2018-10-20 Andreas Schwab <schwab@linux-m68k.org>
7821 * doc/ux.texi: Move @section directly after @node.
7823 2018-10-19 Jakub Jelinek <jakub@redhat.com>
7827 * omp-low.c (check_omp_nesting_restrictions): Diagnose ordered without
7828 depend closely nested inside of loop with ordered clause with
7831 2018-10-19 David Malcolm <dmalcolm@redhat.com>
7833 * Makefile.in (TEXI_GCCINT_FILES): Add ux.texi.
7834 * doc/gccint.texi: Include ux.texi and use it in top-level menu.
7835 * doc/ux.texi: New file.
7837 2018-10-19 Segher Boessenkool <segher@kernel.crashing.org>
7839 * config/rs6000/rs6000.h (REG_ALLOC_ORDER): Move 68 (that is, CR0) to
7840 be the first CR field allocated.
7842 2018-10-19 Richard Biener <rguenther@suse.de>
7845 * config/i386/i386.c (ix86_builtin_vectorization_cost): Use
7846 TYPE_VECTOR_SUBPARTS and avoid relying on vector mode.
7848 2018-10-19 H.J. Lu <hongjiu.lu@intel.com>
7851 * config/i386/sse.md
7852 (*<plusminus_insn><mode>3<mask_name>_bcst_1): New.
7853 (*add<mode>3<mask_name>_bcst_2): Likewise.
7855 2018-10-19 H.J. Lu <hongjiu.lu@intel.com>
7857 * config/i386/sse.md
7858 (*<sd_mask_codefor>fma_fmadd_<mode><sd_maskz_name>_bcst_1):
7859 Replace nonimmediate_operand with register_operand.
7860 (*<sd_mask_codefor>fma_fmadd_<mode><sd_maskz_name>_bcst_2):
7862 (*<sd_mask_codefor>fma_fmadd_<mode><sd_maskz_name>_bcst_3):
7865 2018-10-19 Ilya Leoshkevich <iii@linux.ibm.com>
7867 PR rtl-optimization/87596
7868 * lra-constraints.c (spill_hard_reg_in_range): Use INSN_P () +
7869 lra_get_insn_recog_data () instead of lra_insn_recog_data[]
7870 for instructions in FROM..TO range.
7872 2018-10-19 Eric Botcazou <ebotcazou@adacore.com>
7874 * cfgexpand.c (expand_one_var): Use specific wording in error message
7875 for non-local frame variables.
7876 * stor-layout.c (layout_decl): Do not issue a warning for them.
7878 2018-10-19 Robin Dapp <rdapp@linux.ibm.com>
7880 * haifa-sched.c (priority): Add force_recompute parameter.
7881 (apply_replacement): Call priority () with force_recompute = true.
7882 (restore_pattern): Likewise.
7884 2018-10-18 H.J. Lu <hongjiu.lu@intel.com>
7886 * simplify-rtx.c (simplify_subreg): Limit mask of vec_merge to
7887 HOST_BITS_PER_WIDE_INT.
7888 (test_vector_ops_duplicate): Likewise.
7890 2018-10-18 H.J. Lu <hongjiu.lu@intel.com>
7893 * config/i386/sse.md (VF_AVX512): New.
7894 (avx512bcst): Likewise.
7895 (*<sd_mask_codefor>fma_fmadd_<mode><sd_maskz_name>_bcst_1):
7897 (*<sd_mask_codefor>fma_fmadd_<mode><sd_maskz_name>_bcst_2):
7899 (*<sd_mask_codefor>fma_fmadd_<mode><sd_maskz_name>_bcst_3):
7902 2018-10-18 Jonathan Wakely <jwakely@redhat.com>
7904 * doc/invoke.texi (-dumpversion): Improve grammar.
7905 (-dumpfullversion): Make more consistent with -dumpversion.
7907 2018-10-18 Uros Bizjak <ubizjak@gmail.com>
7909 * config/i386/i386.c (ix86_emit_fp_unordered_jump):
7910 Set JUMP_LABEL to the jump insn.
7911 (ix86_emit_i387_log1p): Use ix86_expand_branch to expand branch.
7912 Predict emitted jump and add label to jump insn.
7914 2018-10-18 David Malcolm <dmalcolm@redhat.com>
7916 PR tree-optimization/87562
7917 * input.c (get_substring_ranges_for_loc): Use
7918 LRK_SPELLING_LOCATION rather than LRK_MACRO_EXPANSION_POINT when
7919 getting the linemap for the endpoint. Verify that it's either
7920 in the same linemap as the start point's spelling location, or
7921 at least in the same file.
7923 2018-10-18 Richard Biener <rguenther@suse.de>
7925 * config/i386/i386.c (ix86_builtin_vectorization_cost): Do not
7926 feed width-specific load/store costs through ix86_vec_cost.
7927 * config/i386/x86-tune-costs.h (athlon_cost): Adjust.
7928 (k8_cost): Likewise.
7929 (bdver_cost): Likewise.
7930 (znver1_cost): Likewise.
7931 (btver1_cost): Likewise.
7932 (btver2_cost): Likewise.
7934 2018-10-18 H.J. Lu <hongjiu.lu@intel.com>
7936 * simplify-rtx.c (simplify_subreg): Call simplify_gen_subreg
7937 to simplify subreg of vec_merge.
7939 2018-10-18 Richard Biener <rguenther@suse.de>
7941 * config/i386/i386.c: Fix costing of vector FMA.
7943 2018-10-18 Richard Biener <rguenther@suse.de>
7945 * config/i386/i386.c (ix86_vec_cost): Remove !parallel path
7947 (ix86_builtin_vectorization_cost): For vec_construct properly
7948 cost insertion into SSE regs.
7949 (...): Adjust calls to ix86_vec_cost.
7951 2018-10-18 Richard Biener <rguenther@suse.de>
7955 2018-02-07 Richard Biener <rguenther@suse.de>
7957 PR tree-optimization/84204
7958 * tree-chrec.c (chrec_fold_plus_1): Remove size limiting in
7961 2018-10-18 H.J. Lu <hongjiu.lu@intel.com>
7964 * simplify-rtx.c (simplify_subreg): Simplify subreg of vec_merge
7966 (test_vector_ops_duplicate): Add test for a scalar subreg of a
7967 VEC_MERGE of a VEC_DUPLICATE.
7969 2018-10-17 Joseph Myers <joseph@codesourcery.com>
7971 * doc/cpp.texi (__STDC_VERSION__): Document C2X handling.
7972 * doc/invoke.texi (-std=c2x, -std=gnu2x): Document new options.
7973 * doc/standards.texi (C Language): Document C2X.
7974 * dwarf2out.c (highest_c_language), config/rl78/rl78.c
7975 (rl78_option_override): Handle "GNU C2X" language name.
7977 2018-10-17 Joseph Myers <joseph@codesourcery.com>
7979 * doc/invoke.texi (-std=c17), doc/standards.texi (C Language):
7980 Document C17 as published in 2018.
7982 2018-10-17 Eric Botcazou <ebotcazou@adacore.com>
7985 * fold-const.c (fold_truth_andor_1): If the right side is not constant,
7986 bail out if both sides do not have the same storage order.
7988 2018-10-17 Aldy Hernandez <aldyh@redhat.com>
7990 * bitmap.c (bitmap_head::dump): New.
7991 * bitmap.h (bitmap_head): Add dump().
7992 * gimple-ssa-evrp-analyze.c
7993 (evrp_range_analyzer::try_find_new_range): Adjust for value_range API.
7994 (evrp_range_analyzer::set_ssa_range_info): Same.
7995 (evrp_range_analyzer::record_ranges_from_phis): Same.
7996 (evrp_range_analyzer::record_ranges_from_stmt): Same.
7997 * gimple-ssa-evrp.c (evrp_dom_walker::before_dom_children): Same.
7998 * gimple-ssa-sprintf.c (get_int_range): Same.
7999 (format_integer): Same.
8000 (sprintf_dom_walker::handle_gimple_call): Same.
8001 * ipa-cp.c (ipcp_vr_lattice::meet_with_1): Same.
8002 (ipcp_vr_lattice::top_p): Same.
8003 (ipcp_vr_lattice::bottom_p): Same.
8004 (ipcp_vr_lattice::set_to_bottom): Same.
8005 (ipa_vr_operation_and_type_effects): Same.
8006 (propagate_vr_across_jump_function): Same.
8007 (ipcp_store_vr_results): Same.
8008 * ipa-prop.c (struct ipa_vr_ggc_hash_traits): Same.
8009 (ipa_print_node_jump_functions_for_edge): Same.
8010 (ipa_get_value_range): Same.
8011 (ipa_compute_jump_functions_for_edge): Same.
8012 (ipa_write_jump_function): Same.
8013 * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Same.
8014 * tree-ssa-threadedge.c (record_temporary_equivalences_from_phis):
8016 * vr-values.c (set_value_range_to_nonnegative): Same.
8017 (set_value_range_to_truthvalue): Same.
8018 (vr_values::get_value_range): Same.
8019 (vr_values::set_defs_to_varying): Same.
8020 (vr_values::update_value_range): Same.
8021 (symbolic_range_based_on_p): Same.
8022 (vr_values::op_with_boolean_value_range_p): Same.
8023 (vr_values::extract_range_for_var_from_comparison_expr): Same.
8024 (vr_values::extract_range_from_ssa_name): Same.
8025 (vr_values::extract_range_from_binary_expr): Same.
8026 (vr_values::extract_range_from_unary_expr): Same.
8027 (vr_values::extract_range_from_cond_expr): Same.
8028 (vr_values::extract_range_from_comparison): Same.
8029 (vr_values::check_for_binary_op_overflow): Same.
8030 (vr_values::extract_range_basic): Same.
8031 (vr_values::extract_range_from_assignment): Same.
8032 (compare_ranges): Same.
8033 (compare_range_with_value): Same.
8034 (vr_values::adjust_range_with_scev): Same.
8035 (vrp_valueize): Same.
8036 (vrp_valueize_1): Same.
8037 (vr_values::get_vr_for_comparison): Same.
8038 (vr_values::compare_name_with_value): Same.
8039 (vr_values::compare_names): Same.
8040 (vr_values::vrp_evaluate_conditional): Same.
8041 (find_case_label_ranges): Same.
8042 (vr_values::vrp_visit_switch_stmt): Same.
8043 (vr_values::extract_range_from_phi_node): Same.
8044 (vr_values::simplify_div_or_mod_using_ranges): Same.
8045 (vr_values::simplify_bit_ops_using_ranges): Same.
8046 (test_for_singularity): Same.
8047 (range_fits_type_p): Same.
8048 (vr_values::simplify_cond_using_ranges_1): Same.
8049 (vr_values::simplify_switch_using_ranges): Same.
8050 (vr_values::simplify_float_conversion_using_ranges): Same.
8051 (vr_values::two_valued_val_range_p): Same.
8052 (vr_values::add_equivalence): Move to value_range::equiv_add.
8053 * vr-values.h (vr_values::add_equivalence): Remove.
8054 (VR_INITIALIZER): Remove.
8055 * tree-vrp.c (value_range::set): New.
8056 (value_range::equiv_add): New.
8057 (value_range::value_range): New.
8058 (value_range::deep_copy): New.
8059 (value_range::check): New.
8060 (value_range::equal_p): New.
8061 (value_range::ignore_equivs_equal_p): New.
8062 (value_range::operator==): New.
8063 (value_range::operator!=): New.
8064 (value_range::symbolic_p): New.
8065 (value_range::numeric_p): New.
8066 (value_range::set_undefined): New.
8067 (value_range::set_varying): New.
8068 (value_range::may_contain_p): New.
8069 (value_range::equiv_clear): New.
8070 (value_range::singleton_p): New.
8071 (value_range::intersect): New.
8072 (value_range::dump): New.
8073 (value_range::set_and_canonicalize): New.
8074 (set_value_range): Adjust for value_range API.
8075 (set_value_range_to_undefined): Same.
8076 (set_value_range_to_varying): Same.
8077 (set_and_canonicalize_value_range): Same.
8078 (set_value_range_to_nonnull): Same.
8079 (set_value_range_to_null): Same.
8080 (range_is_null): Same.
8081 (range_is_nonnull): Same.
8082 (range_int_cst_p): Same.
8083 (range_int_cst_singleton_p): Same.
8084 (symbolic_range_p): Same.
8085 (range_includes_zero_p): Same.
8086 (value_range_constant_singleton): Same.
8087 (vrp_set_zero_nonzero_bits): Same.
8088 (ranges_from_anti_range): Same.
8089 (extract_range_into_wide_ints): Same.
8090 (extract_range_from_multiplicative_op): Same.
8091 (set_value_range_with_overflow): Same.
8092 (extract_range_from_binary_expr_1): Same.
8093 (extract_range_from_unary_expr): Same.
8094 (dump_value_range): Same.
8095 (debug_value_range): Same.
8096 (vrp_prop::check_array_ref): Same.
8097 (vrp_prop::check_mem_ref): Same.
8098 (vrp_prop::vrp_initialize): Same.
8099 (vrp_prop::visit_stmt): Same.
8100 (intersect_ranges): Same.
8101 (vrp_prop::visit_phi): Same.
8102 (vrp_prop::vrp_finalize): Same.
8103 (determine_value_range_1): Same.
8104 (determine_value_range): Same.
8105 (vrp_intersect_ranges_1): Rename to...
8106 (vrp_intersect_1): this.
8107 (vrp_intersect_ranges): Rename to...
8108 (value_range::intersect_helper): ...this.
8109 (vrp_meet_1): Rename to...
8110 (value_range::union_helper): ...this.
8111 (vrp_meet): Rename to...
8112 (value_range::union_): ...this.
8113 (copy_value_range): Remove.
8114 * tree-vrp.h (struct value_range): Rewrite into a proper class.
8115 (value_range::vrtype): New.
8116 (value_range::type): New.
8117 (value_range::equiv): New.
8118 (value_range::min): New.
8119 (value_range::max): New.
8120 (value_range::varying_p): New.
8121 (value_range::undefined_p): New.
8122 (value_range::null_p): New.
8123 (value_range::equiv_add): New.
8124 (copy_value_range): Remove.
8126 2018-10-17 David Malcolm <dmalcolm@redhat.com>
8128 * Makefile.in (SELFTEST_TARGETS): New.
8129 (selftest) Change from s-selftest-c to $(SELFTEST_TARGETS).
8130 (C_SELFTEST_FLAGS, C_SELFTEST_DEPS, s-selftest-c, selftest-c-gdb)
8131 (selftest-gdb, selftest-c-valgrind, selftest-valgrind): Move to
8133 (CPP_SELFTEST_FLAGS, CPP_SELFTEST_DEPS, s-selftest-c++)
8134 (selftest-c++-gdb, selftest-c++-valgrind): Move to
8136 * configure: Regenerate.
8137 * configure.ac (selftest_languages): New.
8139 2018-10-17 Aldy Hernandez <aldyh@redhat.com>
8141 * tree-vrp.c (extract_range_from_multiplicative_op): Remove
8142 overflow wraps argument.
8143 (extract_range_from_binary_expr_1): Do not pass overflow wraps to
8144 wide_int_range_multiplicative_op.
8145 * wide-int-range.cc (wide_int_range_mult_wrapping): Remove
8146 overflow wraps argument.
8147 (wide_int_range_multiplicative_op): Same.
8148 (wide_int_range_lshift): Same.
8149 (wide_int_range_div): Same.
8150 * wide-int-range.h (wide_int_range_multiplicative_op): Same.
8151 (wide_int_range_lshift): Same.
8152 (wide_int_range_div): Same.
8154 2018-10-17 Aldy Hernandez <aldyh@redhat.com>
8156 * wide-int-range.h (wide_int_range_shift_undefined_p): Adjust to
8157 use sign as argument.
8158 * tree-vrp.c (extract_range_from_binary_expr_1): Pass sign to
8159 wide_int_range_shift_undefined_p.
8161 2018-10-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8163 * config/aarch64/aarch64.md (despeculate_copy<ALLI_TI:mode>):
8165 (@despeculate_copy<ALLI_TI:mode>): ... This.
8166 * config/aarch64/aarch64.c (aarch64_speculation_safe_value): Remove
8169 2018-10-16 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
8171 * config.gcc: Obsolete *-*-solaris2.10*.
8172 * doc/install.texi (Specific, *-*-solaris2*): Document it.
8174 2018-10-12 Jeff Law <law@redhat.com>
8176 * config/ft32/ft32.md (ft32_general_movsrc_operand): Disable
8177 reg + sym +- const_int addressing modes.
8179 2018-10-15 David Malcolm <dmalcolm@redhat.com>
8181 * common.opt (fdiagnostics-minimum-margin-width=): New option.
8182 * diagnostic-show-locus.c (layout::layout): Apply the minimum
8184 (layout::start_annotation_line): Only print up to 3 of the
8185 margin character, to avoid touching the left-hand side.
8186 (selftest::test_diagnostic_show_locus_fixit_lines): Update for
8187 minimum margin width, as set by test_diagnostic_context's ctor.
8188 (selftest::test_fixit_insert_containing_newline): Likewise.
8189 (selftest::test_fixit_insert_containing_newline_2): Likewise.
8190 (selftest::test_line_numbers_multiline_range): Clear
8191 dc.min_margin_width.
8192 * diagnostic.c (diagnostic_initialize): Initialize
8194 * diagnostic.h (struct diagnostic_context): Add field
8196 * doc/invoke.texi: Add -fdiagnostics-minimum-margin-width=.
8197 * opts.c (common_handle_option): Handle
8198 OPT_fdiagnostics_minimum_margin_width_.
8199 * selftest-diagnostic.c
8200 (selftest::test_diagnostic_context::test_diagnostic_context):
8201 Initialize min_margin_width to 6.
8202 * toplev.c (general_init): Initialize global_dc->min_margin_width.
8204 2018-10-15 David Malcolm <dmalcolm@redhat.com>
8206 * gcc-rich-location.h (gcc_rich_location::add_location_if_nearby):
8207 Fix usage of "error_at_rich_loc" in the comment.
8209 2018-10-15 Renlin Li <renlin.li@arm.com>
8212 * tree-vectorizer.c (try_vectorize_loop_1): Don't use
8213 if-conversioned loop when it contains ifn with types not
8214 supported by backend.
8215 * internal-fn.c (expand_direct_optab_fn): Add an assert.
8216 (direct_internal_fn_supported_p): New helper function.
8217 * internal-fn.h (direct_internal_fn_supported_p): Declare.
8219 2018-10-15 Jakub Jelinek <jakub@redhat.com>
8222 * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512F_UNSET):
8223 Remove OPTION_MASK_ISA_AVX5124FMAPS_UNSET and
8224 OPTION_MASK_ISA_AVX5124VNNIW_UNSET.
8226 2018-10-15 Bin Cheng <bin.cheng@linux.alibaba.com>
8228 PR tree-optimization/87022
8229 * tree-loop-distribution.c (pg_add_dependence_edges): Check all
8230 bits in dist vector rather than the first one.
8232 2018-10-15 Richard Biener <rguenther@suse.de>
8235 * tree-ssa-structalias.c (struct vls_data): Add escaped_p member.
8236 (visit_loadstore): When a used restrict tag escaped verify that
8237 the points-to solution of "other" pointers do not include
8239 (compute_dependence_clique): If a used restrict tag escaped
8240 communicated that down to visit_loadstore.
8242 2018-10-15 Andreas Krebbel <krebbel@linux.ibm.com>
8244 * config/s390/s390.c (s390_expand_vec_init): Force vector element
8245 into reg if it isn't a general operand.
8247 2018-10-14 H.J. Lu <hongjiu.lu@intel.com>
8250 * config/i386/sse.md (*vec_dupv2di): Add register source to
8253 2018-10-14 H.J. Lu <hongjiu.lu@intel.com>
8256 * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512F_UNSET):
8257 Add OPTION_MASK_ISA_AVX512IFMA_UNSET,
8258 OPTION_MASK_ISA_AVX5124FMAPS_UNSET and
8259 OPTION_MASK_ISA_AVX5124VNNIW_UNSET.
8261 2018-10-13 Eric Botcazou <ebotcazou@adacore.com>
8263 * dwarf2cfi.c (struct dw_trace_info): Add args_size_defined_for_eh.
8264 (notice_args_size): Set it in the current trace if no insn that can
8265 throw internally has been seen yet.
8266 (connect_traces): When connecting args_size between traces, allow the
8267 incoming values not to match if there is an insn setting it before the
8268 first insn that can throw internally; in that case, force the creation
8269 of a CFI note on this latter insn.
8271 2018-10-13 Jonathan Wakely <jwakely@redhat.com>
8273 * opt-problem.h (opt_wrapper): Use template-argument-list when naming
8274 the base class, because using the injected-class-name was not clearly
8275 specified until DR 176.
8277 2018-10-12 Paul Koning <ni1d@arrl.net>
8279 * config/pdp11/pdp11.md (doloop_end): New expander.
8280 (doloop_end_insn): renamed from "doloop_end".
8281 (addqi3): New pattern.
8282 (subqi3): New pattern.
8283 * config/pdp11/predicates.md (incdec_operand): New predicate.
8285 2018-10-12 Yury Gribov <tetra2005@gmail.com>
8288 * real.c (format_helper::can_represent_integral_type_p): New function
8289 * real.h (format_helper::can_represent_integral_type_p): Ditto.
8290 * match.pd: New pattern.
8292 2018-10-12 Alexandre Oliva <oliva@adacore.com>
8294 * configure.ac: Introduce --enable-large-address-aware
8295 to define MINGW_DEFAULT_LARGE_ADDR_AWARE.
8296 * doc/install.texi: Document it.
8297 * configure, config.in: Rebuilt.
8298 * config/i386/mingw32.h (LINK_SPEC_LARGE_ADDR_AWARE): Define,
8299 based on MINGW_DEFAULT_LARGE_ADDR_AWARE.
8300 (LINK_SPEC): Insert it.
8301 * config/i386/mingw-w64.h: Likewise.
8303 * cygming.h (HAVE_GAS_ALIGNED_COMM): Fallback-define.
8305 2018-10-12 Peter Bergner <bergner@linux.ibm.com>
8307 PR rtl-optimization/87600
8308 * ira-lives (non_conflicting_reg_copy_p): Disable for non LRA targets.
8310 2018-10-12 Paul Koning <ni1d@arrl.net>
8312 * doc/md.texi (doloop_end): Document that the pattern code may
8313 need to check operand mode.
8315 2018-10-12 Wilco Dijkstra <wdijkstr@arm.com>
8317 * config/aarch64/aarch64.md (zero_extendsidi2_aarch64): Add alternatives
8318 to zero-extend between int and floating-point registers.
8319 (load_pair_zero_extendsidi2_aarch64): Add alternative for zero-extended
8320 ldp into floating-point registers. Add type and arch attributes.
8321 (zero_extend<SHORT:mode><GPI:mode>2_aarch64): Add arch attribute.
8322 Use f_loads for type attribute.
8324 2018-10-11 Martin Sebor <msebor@redhat.com>
8326 * doc/extend.texi (attribute packed): Correct typos.
8328 2018-10-11 Martin Sebor <msebor@redhat.com>
8330 * doc/extend.texi (attribute flatten): Mention interaction with
8333 2018-10-11 Jan Hubicka <hubicka@ucw.cz>
8336 * cgraphclones.c (cgraph_node::create_version_clone_with_body):
8337 Set new_decl virtual flag to zero.
8339 2018-10-11 Martin Sebor <msebor@redhat.com>
8342 * doc/extend.texi (attribute format_arg): Discuss using multiple
8343 attributes on a single function.
8345 2018-10-11 Giuliano Belinassi <giuliano.belinassi@usp.br>
8347 PR tree-optimization/86829
8348 * match.pd (sin (atan (x))): New simplification rules.
8349 (cos (atan (x))): Likewise.
8350 * real.c (build_sinatan_real): New function.
8351 * real.h (build_sinatan_real): Prototype.
8353 2018-10-11 Will Schmidt <will_schmidt@vnet.ibm.com>
8355 * config/rs6000/rs6000.c (map_to_integral_tree_type): New helper
8357 (fold_mergeeo_helper): New helper function.
8358 (rs6000_gimple_fold_builtin): Add hooks for vec_mergee and vec_mergeo
8359 intrinsics. Correct some whitespace indentation issues.
8361 2018-10-11 Wilco Dijkstra <wdijkstr@arm.com>
8364 * config/aarch64/aarch64.c (aarch64_mask_and_shift_for_ubfiz_p):
8365 Use HOST_WIDE_INT_1U for shift.
8367 2018-10-11 Doug Rupp <rupp@adacore.com>
8368 Olivier Hainque <hainque@adacore.com>
8370 * config/rs6000/vxworks.h (VXWORKS_RELAX_LINK_SPEC): New macro.
8371 Pass --relax to the linker for RTPs.
8372 (LINK_SPEC): Append VXWORKS_RELAX_LINK_SPEC.
8374 2018-10-11 Andrew Stubbs <ams@codesourcery.com>
8375 Jan Hubicka <jh@suse.cz>
8376 Martin Jambor <mjambor@suse.cz>
8378 * print-rtl.c (print_rtx_operand_codes_E_and_V): Print how many times
8379 the same elements are repeated rather than printing all of them.
8380 * read-rtl.c (rtx_reader::read_rtx_operand): Recognize and expand
8381 "repeated" elements.
8382 * read-rtl-function.c (test_loading_repeat): New function.
8383 (read_rtl_function_c_tests): Call test_loading_repeat.
8384 * rtl-tests.c (test_dumping_repeat): New function.
8385 (rtl_tests_c_tests): Call test_dumping_repeat.
8387 2018-10-11 Richard Biener <rguenther@suse.de>
8389 * config/i386/x86-tune-costs.h (bdver?_memcpy, bdver?_memset,
8390 bdver?_cost): Unify to ...
8391 (bdver_memcpy, bdver_memset, bdver_cost): ... this.
8392 * config/i386/i386.c (processor_cost_table): Adjust.
8394 2018-10-10 Eric Botcazou <ebotcazou@adacore.com>
8397 * cgraphunit.c (cgraph_node::expand_thunk): Force DECL_IGNORED_P on
8398 the thunk when expanding to GIMPLE.
8400 2018-10-10 Bernd Edlinger <bernd.edlinger@hotmail.de>
8403 * varasm.c (mergeable_string_section): Don't try to move zero-length
8404 strings to the merge section.
8406 2018-10-10 Uros Bizjak <ubizjak@gmail.com>
8409 * config/i386/mmx.md (const_vector 0 -> mem splitter): New splitter.
8411 2018-10-10 Jakub Jelinek <jakub@redhat.com>
8414 * config/i386/i386-builtin.def (IX86_BUILTIN_RDPMC): Move from args set
8415 to special_args set.
8417 2018-10-10 Richard Biener <rguenther@suse.de>
8419 * config/i386/sse.md (reduc_plus_scal_v8df, reduc_plus_scal_v4df,
8420 reduc_plus_scal_v2df, reduc_plus_scal_v16sf, reduc_plus_scal_v8sf,
8421 reduc_plus_scal_v4sf): Merge into pattern reducing to half width
8422 and recursing and pattern terminating the recursion on SSE
8423 vector width using ix86_expand_reduc.
8424 (reduc_sminmax_scal_<mode>): Split into part reducing to half
8425 width and recursing and SSE2 vector variant doing the final
8426 reduction with ix86_expand_reduc.
8427 (reduc_uminmax_scal_<mode>): Likewise for the AVX512 variants
8428 with terminating the recursion at AVX level, splitting that
8431 2018-10-09 David Malcolm <dmalcolm@redhat.com>
8433 * genmatch.c (error_cb): Rename to...
8434 (diagnostic_cb): ...this, converting int params to enums.
8435 (fatal_at): Update for renaming.
8436 (warning_at): Likewise.
8438 * input.c (selftest::ebcdic_execution_charset::apply):
8439 Update for renaming of...
8440 (selftest::ebcdic_execution_charset::on_error): ...this, renaming
8442 (selftest::ebcdic_execution_charset::on_diagnostic): ...this,
8443 converting level and reason to enums.
8444 (class selftest::lexer_error_sink): Rename to...
8445 (class selftest::lexer_test_options): ...this, renaming field
8446 "m_errors" to "m_diagnostics".
8447 (selftest::lexer_test_options::apply): Update for renaming of...
8448 (selftest::lexer_test_options::on_error): ...this, renaming to...
8449 (selftest::lexer_test_options::on_diagnostic): ...this
8450 converting level and reason to enums.
8451 (selftest::test_lexer_string_locations_raw_string_unterminated):
8452 Update for renamings.
8453 * opth-gen.awk (struct cpp_reason_option_codes_t): Use enum for
8456 2018-10-09 Paul A. Clarke <pc@us.ibm.com>
8458 * config.gcc (powerpc*-*-*): Add pmmintrin.h to extra_headers.
8459 * config/rs6000/pmmintrin.h: New file.
8461 2018-10-09 Eric Botcazou <ebotcazou@adacore.com>
8463 PR tree-optimization/86659
8464 * gimple-match.h (gimple_match_op constructors): Initialize reverse.
8466 2018-10-09 Richard Biener <rguenther@suse.de>
8468 PR tree-optimization/63155
8469 * tree-ssa-structalias.c: Include tree-ssa.h.
8470 (get_constraint_for_ssa_var): For undefs return nothing_id.
8471 (find_func_aliases): Cleanup PHI handling.
8473 2018-10-09 Richard Biener <rguenther@suse.de>
8475 * tree-vectorizer.c (dump_stmt_cost): Fix cut&paste missing
8478 2018-10-09 Martin Liska <mliska@suse.cz>
8480 * asan.c (asan_emit_stack_protection): If a stack variable
8481 is located in a same file as current function, then emit
8482 line info into variable definition string.
8484 2018-10-08 Eric Botcazou <ebotcazou@adacore.com>
8486 * print-rtl.c (rtx_writer::print_rtx_operand_code_i): Print column
8489 2018-10-08 Eric Botcazou <ebotcazou@adacore.com>
8491 * cgraphunit.c (cgraph_node::expand_thunk): Do not force DECL_IGNORED_P
8494 2018-10-08 Eric Botcazou <ebotcazou@adacore.com>
8496 PR tree-optimization/86659
8497 * gimple-match.h (struct gimple_match_op): Add reverse field.
8498 (gimple_match_op::set_op): New overloaded method.
8499 * gimple-match-head.c (maybe_build_generic_op) <BIT_FIELD_REF>: Set
8500 the REF_REVERSE_STORAGE_ORDER flag on the value.
8501 (gimple_simplify) <GIMPLE_ASSIGN>: For BIT_FIELD_REF, propagate the
8502 REF_REVERSE_STORAGE_ORDER flag and avoid simplifying if it is set.
8504 2018-10-08 Richard Sandiford <richard.sandiford@arm.com>
8507 * gimple-ssa-backprop.c (backprop::intersect_uses): Use
8508 FOR_EACH_IMM_USE_FAST instead of FOR_EACH_IMM_USE_STMT.
8510 2018-10-08 H.J. Lu <hongjiu.lu@intel.com>
8513 * config/i386/avx512fintrin.h (_mm512_mask_fmaddsub_round_pd):
8514 Defined with __builtin_ia32_vfmaddsubpd512_mask.
8516 2018-10-08 Richard Biener <rguenther@suse.de>
8518 * config/i386/x86-tune-costs.h (znver1_cost): Make AVX256 vector loads
8519 cost the same as AVX128 ones.
8521 2018-10-08 Paul Koning <ni1d@arrl.net>
8523 * config/pdp11/pdp11-protos.h (output_block_move): Remove.
8524 (expand_block_move): New function.
8525 * config/pdp11/pdp11.c (output_block_move): Remove.
8526 (expand_block_move): New function.
8527 * config/pdp11/pdp11.h (MOVE_RATIO): New definition.
8528 * config/pdp11/pdp11.md (movmemhi): Use expand_block_move.
8529 (*movmemhi1): Remove.
8531 2018-10-08 Robin Dapp <rdapp@linux.ibm.com>
8533 * config/s390/2827.md: Increase latencies for some FP instructions.
8535 2018-10-08 Richard Biener <rguenther@suse.de>
8537 * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost):
8539 * tree-vectorizer.c (dump_stmt_cost): Add cost param and dump it.
8540 * tree-vectorizer.h (dump_stmt_cost): Adjust.
8541 (add_stmt_cost): Dump return value of the hook.
8543 2018-10-08 Richard Biener <rguenther@suse.de>
8545 PR tree-optimization/63155
8546 * tree-ssa-propagate.c (add_ssa_edge): Do cheap check first.
8547 (ssa_propagation_engine::ssa_propagate): Remove redundant
8548 bitmap bit clearing.
8550 2018-10-05 Peter Bergner <bergner@linux.ibm.com>
8552 PR rtl-optimization/86939
8553 PR rtl-optimization/87479
8554 * ira.h (non_conflicting_reg_copy_p): New prototype.
8555 * ira-lives.c (ignore_reg_for_conflicts): New static variable.
8556 (make_hard_regno_dead): Don't add conflicts for register
8557 ignore_reg_for_conflicts.
8558 (make_object_dead): Likewise.
8559 (non_conflicting_reg_copy_p): New function.
8560 (process_bb_node_lives): Set ignore_reg_for_conflicts for copies.
8561 Remove special conflict handling of REAL_PIC_OFFSET_TABLE_REGNUM.
8562 * lra-lives.c (ignore_reg_for_conflicts): New static variable.
8563 (make_hard_regno_dead): Don't add conflicts for register
8564 ignore_reg_for_conflicts. Remove special conflict handling of
8565 REAL_PIC_OFFSET_TABLE_REGNUM. Remove now unused argument
8566 check_pic_pseudo_p and update callers.
8567 (mark_pseudo_dead): Don't add conflicts for register
8568 ignore_reg_for_conflicts.
8569 (process_bb_lives): Set ignore_reg_for_conflicts for copies.
8571 2018-10-05 Andrew Waterman <andrew@sifive.com>
8572 Jim Wilson <jimw@sifive.com>
8574 * config/riscv/riscv.md (f<quiet_pattern>_quiet<ANYF:mode><X:mode>4):
8575 Add define_expand. Add ! HONOR_SNANS check to current pattern. Add
8576 new pattern using HONOR_SNANS that emits one extra instruction.
8578 2018-10-05 Segher Boessenkool <segher@kernel.crashing.org>
8580 * config/rs6000/rs6000.md (unnamed mfcr scc_comparison_operator
8581 patterns): Merge SI and DI patterns to a GPR pattern.
8582 (unnamed define_insn and define_split for record form of that): Merge
8583 to a single define_insn_and_split pattern.
8585 2018-10-05 David Malcolm <dmalcolm@redhat.com>
8588 * input.c (expand_location_to_spelling_point): Add param "aspect"
8589 and use rather than hardcoding LOCATION_ASPECT_CARET.
8590 (get_substring_ranges_for_loc): Handle the case of a single token
8591 within a macro expansion.
8592 * input.h (expand_location_to_spelling_point): Add "aspect" param,
8593 defaulting to LOCATION_ASPECT_CARET.
8595 2018-10-05 Paul Koning <ni1d@arrl.net>
8597 * config/pdp11/pdp11.c (TARGET_CXX_GUARD_TYPE): Define.
8598 (TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT): Define.
8599 (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
8600 (pdp11_guard_type): New function.
8602 2018-10-05 Paul Koning <ni1d@arrl.net>
8604 * config/pdp11/pdp11.h (FLOAT_TYPE_SIZE): Always 32.
8605 * config/pdp11/pdp11.opt (mfloat32): Remove.
8607 * doc/invoke.texi (pdp11 -mfloat32): Remove:
8608 (pdp11 -mfloat64): Remove.
8610 2018-10-05 Uros Bizjak <ubizjak@gmail.com>
8612 * config/i386/i386.md (*cmpxf_cc_i387): Remove pattern.
8613 (*cmp<mode>_cc_i387): Ditto.
8614 (*cmpu<mode>_cc_i387): Ditto.
8615 (*cmp<X87MODEF:mode>_<SWI24:mode>_cc_i387): Ditto.
8616 * config/i386/i386.c (ix86_expand_fp_compare): Remove
8618 <case IX86_FPCMP_SAHF>: Do not generate pattern with HImode clobber.
8619 Emit x86_sahf_1 pattern.
8620 (ix86_expand_compare): Update call to ix86_expand_fp_compare.
8621 (ix86_expand_carry_flag_compare): Ditto.
8623 2018-10-05 Uros Bizjak <ubizjak@gmail.com>
8625 * config/i386/i386.md (*cmpxf_i387): Change operand 2 predicate
8626 to reg_or_0_operand. Add "C" constraint.
8627 (*cmpxf_cc_i387): Ditto.
8628 (*cmp<mode>_i387): Change operand 2 predicate
8629 to nonimm_or_0_operand. Add "C" constraint.
8630 (*cmp<mode>_cc_i387): Ditto.
8631 (*cmp<mode>_0_i387): Remove insn pattern.
8632 (*cmp<mode>_0_cc_i387): Ditto.
8634 2018-10-05 Uros Bizjak <ubizjak@gmail.com>
8636 * config/i386/constraints.md ("C"): Do not depend on TARGET_SSE.
8637 * config/i386/predicates.md (nonimm_or_0_operand): Rename
8638 from vector_move_operand. Update all uses.
8640 2018-10-05 Martin Sebor <msebor@redhat.com>
8642 PR tree-optimization/87490
8643 * builtins.c (expand_builtin_strnlen): Handle a null data.decl
8646 2018-10-05 Richard Biener <rguenther@suse.de>
8648 PR tree-optimization/63155
8649 * tree-ssa-ccp.c (ccp_propagate::visit_phi): Avoid excess
8650 vertical space in dumpfiles.
8651 * tree-ssa-propagate.h
8652 (ssa_propagation_engine::process_ssa_edge_worklist): Remove.
8653 * tree-ssa-propagate.c (cfg_blocks_back): New global.
8654 (ssa_edge_worklist_back): Likewise.
8655 (curr_order): Likewise.
8656 (cfg_blocks_get): Remove abstraction.
8657 (cfg_blocks_add): Likewise.
8658 (cfg_blocks_empty_p): Likewise.
8659 (add_ssa_edge): Add to current or next worklist based on
8661 (add_control_edge): Likewise.
8662 (ssa_propagation_engine::process_ssa_edge_worklist): Fold
8664 (ssa_propagation_engine::ssa_propagate): ... here. Unify
8665 iteration from CFG and SSA edge worklist so we process
8666 everything in RPO order, prioritizing forward progress
8668 (ssa_prop_init): Allocate new worklists, do not dump
8670 (ssa_prop_fini): Free new worklists.
8672 2018-10-05 Richard Biener <rguenther@suse.de>
8674 * tree-core.h (tree_block::abstract_flag): Remove.
8675 (tree_block::block_num): Make full 32bits.
8676 * tree.def (BLOCK): Remove docs about BLOCK_ABSTRACT.
8677 * tree.h (BLOCK_ABSTRACT): Remove.
8678 * dwarf2out.c (gen_lexical_block_die): Remove dead code
8679 resulting from BLOCK_ABSTRACT being always false.
8680 (gen_inlined_subroutine_die): Likewise.
8681 (gen_block_die): Likewise.
8682 * tree.c (block_ultimate_origin): Likewise.
8683 * tree-pretty-print.c (dump_block_node): Remove code dealing
8684 with BLOCK_ABSTRACT.
8685 * tree-ssa-live.c (dump_scope_block): Likewise.
8686 * tree-streamer-in.c (unpack_ts_block_value_fields): Likewise.
8687 * tree-streamer-out.c (pack_ts_block_value_fields): Likewise.
8689 2018-10-05 Richard Biener <rguenther@suse.de>
8691 * config/i386/i386.c (ix86_add_stmt_cost): When scalar cost
8692 is asked for initialize mode to the component mode of the
8695 2018-10-05 H.J. Lu <hongjiu.lu@intel.com>
8698 * config/i386/gnu-user.h (ASM_SPEC): Don't pass -msse2avx to
8699 assembler for -mavx.
8700 * config/i386/gnu-user64.h (ASM_SPEC): Likewise.
8702 2018-10-05 Segher Boessenkool <segher@kernel.crashing.org>
8705 * config/rs6000/rs6000-builtin.def (RS6000_BUILTIN_SET_FPSCR_DRN): Use
8707 * config/rs6000/rs6000.md (rs6000_set_fpscr_rn): Require the operand
8708 to be DImode. When using mffscrn, force the operand to a register.
8710 2018-10-04 Uros Bizjak <ubizjak@gmail.com>
8712 * config/i386/i386.md (*fop_<X87MODEF:mode>_2_i387): Macroize insn
8713 from *fop_<MODEF:mode>_2_i387 and *fop_xf_2_i387 using
8714 X87MODEF mode iterator.
8715 (*fop_<X87MODEF:mode>_3_i387): Macroize insn from
8716 *fop_<MODEF:mode>_3_i387 and *fop_xf_3_i387 using
8717 X87MODEF mode iterator.
8719 2018-10-04 Vinay Kumar <vinay.kumar@blackfigtech.com>
8721 * doc/invoke.texi (-Wno-prio-ctor-dtor): Document new warning
8722 -Wno-prio-ctor-dtor.
8724 2018-10-04 David Malcolm <dmalcolm@redhat.com>
8726 * Makefile.in (OBJS): Add opt-problem.o.
8727 * dump-context.h: Include "selftest.h.
8728 (selftest::temp_dump_context): New forward decl.
8729 (class dump_context): Make friend of class
8730 selftest::temp_dump_context.
8731 (dump_context::dump_loc_immediate): New decl.
8732 (class dump_pretty_printer): Move here from dumpfile.c.
8733 (class temp_dump_context): Move to namespace selftest.
8734 (temp_dump_context::temp_dump_context): Add param
8735 "forcibly_enable_dumping".
8736 (selftest::verify_dumped_text):
8737 (ASSERT_DUMPED_TEXT_EQ): Move here from dumpfile.c.
8738 (selftest::verify_item):
8739 (ASSERT_IS_TEXT): Move here from dumpfile.c.
8740 (ASSERT_IS_TREE): Likewise.
8741 (ASSERT_IS_GIMPLE): Likewise.
8742 * dumpfile.c (dump_context::dump_loc): Move immediate dumping
8744 (dump_context::dump_loc_immediate): ...this new function.
8745 (class dump_pretty_printer): Move to dump-context.h.
8746 (dump_switch_p_1): Don't enable MSG_PRIORITY_REEMITTED.
8747 (opt_info_switch_p_1): Enable MSG_PRIORITY_REEMITTED.
8748 (temp_dump_context::temp_dump_context): Move to "selftest"
8749 namespace. Add param "forcibly_enable_dumping", and use it to
8750 conditionalize the use of m_pp;
8751 (selftest::verify_dumped_text): Make non-static.
8752 (ASSERT_DUMPED_TEXT_EQ): Move to dump-context.h.
8753 (selftest::verify_item): Make non-static.
8754 (ASSERT_IS_TEXT): Move to dump-context.h.
8755 (ASSERT_IS_TREE): Likewise.
8756 (ASSERT_IS_GIMPLE): Likewise.
8757 (selftest::test_capture_of_dump_calls): Pass "true" for new
8758 param of temp_dump_context.
8759 * dumpfile.h (enum dump_flag): Add MSG_PRIORITY_REEMITTED, adding
8760 it to MSG_ALL_PRIORITIES. Update values of TDF_COMPARE_DEBUG and
8762 * opt-problem.cc: New file.
8763 * opt-problem.h: New file.
8764 * optinfo-emit-json.cc
8765 (selftest::test_building_json_from_dump_calls): Pass "true" for
8766 new param of temp_dump_context.
8767 * optinfo.cc (optinfo_kind_to_dump_flag): New function.
8768 (optinfo::emit_for_opt_problem): New function.
8769 (optinfo::emit): Clarity which emit_item is used.
8770 * optinfo.h (optinfo::get_dump_location): New accessor.
8771 (optinfo::emit_for_opt_problem): New decl.
8772 (optinfo::emit): Make const.
8773 * selftest-run-tests.c (selftest::run_tests): Call
8774 selftest::opt_problem_cc_tests.
8775 * selftest.h (selftest::opt_problem_cc_tests): New decl.
8776 * tree-data-ref.c (dr_analyze_innermost): Convert return type from
8777 bool to opt_result, converting fprintf messages to
8778 opt_result::failure_at calls. Add "stmt" param for use by the
8780 (create_data_ref): Pass "stmt" to the dr_analyze_innermost call.
8781 (runtime_alias_check_p): Convert return type from bool to
8782 opt_result, converting dump_printf calls to
8783 opt_result::failure_at, using the statement DDR_A for their
8785 (find_data_references_in_stmt): Convert return type from bool to
8786 opt_result, converting "return false" to opt_result::failure_at
8788 * tree-data-ref.h: Include "opt-problem.h".
8789 (dr_analyze_innermost): Convert return type from bool to opt_result,
8790 and add a const gimple * param.
8791 (find_data_references_in_stmt): Convert return type from bool to
8793 (runtime_alias_check_p): Likewise.
8794 * tree-predcom.c (find_looparound_phi): Pass "init_stmt" to
8795 dr_analyze_innermost.
8796 * tree-vect-data-refs.c (vect_mark_for_runtime_alias_test):
8797 Convert return type from bool to opt_result, adding a message for
8798 the PARAM_VECT_MAX_VERSION_FOR_ALIAS_CHECKS zero case.
8799 (vect_analyze_data_ref_dependence): Convert return type from bool
8800 to opt_result. Change sense of return type from "false"
8801 effectively meaning "no problems" to "false" meaning a problem,
8802 so that "return false" becomes "return opt_result::success".
8803 Convert "return true" calls to opt_result::failure_at, using
8804 the location of statement A rather than vect_location.
8805 (vect_analyze_data_ref_dependences): Convert return type from bool
8807 (verify_data_ref_alignment): Likewise, converting dump_printf_loc
8808 calls to opt_result::failure_at, using the stmt location rather
8810 (vect_verify_datarefs_alignment): Convert return type from bool
8812 (vect_enhance_data_refs_alignment): Likewise. Split local "stat"
8813 into multiple more-tightly-scoped copies.
8814 (vect_analyze_data_refs_alignment): Convert return type from bool
8816 (vect_analyze_data_ref_accesses): Likewise, converting a
8817 "return false" to a "return opt_result::failure_at", adding a
8819 (vect_prune_runtime_alias_test_list): Convert return type from
8820 bool to opt_result, converting dump_printf_loc to
8821 opt_result::failure_at. Add a %G to show the pertinent statement,
8822 and use the stmt's location rather than vect_location.
8823 (vect_find_stmt_data_reference): Convert return type from
8824 bool to opt_result, converting dump_printf_loc to
8825 opt_result::failure_at, using stmt's location.
8826 (vect_analyze_data_refs): Convert return type from bool to
8827 opt_result. Convert "return false" to "return
8828 opt_result::failure_at", adding messages as needed.
8829 * tree-vect-loop.c (vect_determine_vf_for_stmt_1): Convert return
8830 type from bool to opt_result.
8831 (vect_determine_vf_for_stmt): Likewise.
8832 (vect_determine_vectorization_factor): Likewise, converting
8833 dump_printf_loc to opt_result::failure_at, using location of phi
8834 rather than vect_location.
8835 (vect_analyze_loop_form_1): Convert return type from bool to
8836 opt_result, converting dump_printf_loc calls, retaining the use of
8838 (vect_analyze_loop_form): Convert return type from loop_vec_info
8839 to opt_loop_vec_info.
8840 (vect_analyze_loop_operations): Convert return type from bool to
8841 opt_result, converting dump_printf_loc calls, using the location
8842 of phi/stmt rather than vect_location where available. Convert
8843 various "return false" to "return opt_result::failure_at" with
8844 "unsupported phi" messages.
8845 (vect_get_datarefs_in_loop): Convert return type from bool to
8846 opt_result. Add a message for the
8847 PARAM_LOOP_MAX_DATAREFS_FOR_DATADEPS failure.
8848 (vect_analyze_loop_2): Convert return type from bool to
8849 opt_result. Ensure "ok" is set to a opt_result::failure_at before
8850 each "goto again;", adding new messages where needed.
8851 Add "unsupported grouped {store|load}" messages.
8852 (vect_analyze_loop): Convert return type from loop_vec_info to
8854 * tree-vect-slp.c (vect_analyze_slp): Convert return type from
8856 * tree-vect-stmts.c (process_use): Likewise, converting
8857 dump_printf_loc call and using stmt location, rather than
8859 (vect_mark_stmts_to_be_vectorized): Likeise.
8860 (vect_analyze_stmt): Likewise, adding a %G.
8861 (vect_get_vector_types_for_stmt): Convert return type from bool to
8862 opt_result, converting dump_printf_loc calls and using stmt
8863 location, rather than vect_location.
8864 (vect_get_mask_type_for_stmt): Convert return type from tree to
8865 opt_tree, converting dump_printf_loc calls and using stmt location.
8866 * tree-vectorizer.c: Include "opt-problem.h.
8867 (try_vectorize_loop_1): Flag "Analyzing loop at" dump message as
8868 MSG_PRIORITY_INTERNALS. Convert local "loop_vinfo" from
8869 loop_vec_info to opt_loop_vec_info. If if fails, and dumping is
8870 enabled, use it to report at the top level "couldn't vectorize
8871 loop" followed by the problem.
8872 * tree-vectorizer.h (opt_loop_vec_info): New typedef.
8873 (vect_mark_stmts_to_be_vectorized): Convert return type from bool
8875 (vect_analyze_stmt): Likewise.
8876 (vect_get_vector_types_for_stmt): Likewise.
8877 (tree vect_get_mask_type_for_stmt): Likewise.
8878 (vect_analyze_data_ref_dependences): Likewise.
8879 (vect_enhance_data_refs_alignment): Likewise.
8880 (vect_analyze_data_refs_alignment): Likewise.
8881 (vect_verify_datarefs_alignment): Likewise.
8882 (vect_analyze_data_ref_accesses): Likewise.
8883 (vect_prune_runtime_alias_test_list): Likewise.
8884 (vect_find_stmt_data_reference): Likewise.
8885 (vect_analyze_data_refs): Likewise.
8886 (vect_analyze_loop): Convert return type from loop_vec_info to
8888 (vect_analyze_loop_form): Likewise.
8889 (vect_analyze_slp): Convert return type from bool to opt_result.
8891 2018-10-04 David Malcolm <dmalcolm@redhat.com>
8893 * doc/invoke.texi (-fopt-info): Document new "internals"
8895 * dump-context.h (dump_context::apply_dump_filter_p): New decl.
8896 * dumpfile.c (dump_options): Update for renaming of MSG_ALL to
8898 (optinfo_verbosity_options): Add "internals".
8899 (kind_as_string): Update for renaming of MSG_ALL to MSG_ALL_KINDS.
8900 (dump_context::apply_dump_filter_p): New member function.
8901 (dump_context::dump_loc): Use apply_dump_filter_p rather than
8902 explicitly masking the dump_kind.
8903 (dump_context::begin_scope): Increment the scope depth first. Use
8904 apply_dump_filter_p rather than explicitly masking the dump_kind.
8905 (dump_context::emit_item): Use apply_dump_filter_p rather than
8906 explicitly masking the dump_kind.
8907 (dump_dec): Likewise.
8908 (dump_hex): Likewise.
8909 (dump_switch_p_1): Default to MSG_ALL_PRIORITIES.
8910 (opt_info_switch_p_1): Default to MSG_PRIORITY_USER_FACING.
8911 (opt_info_switch_p): Update handling of default
8912 MSG_OPTIMIZED_LOCATIONS to cope with default of
8913 MSG_PRIORITY_USER_FACING.
8914 (dump_basic_block): Use apply_dump_filter_p rather than explicitly
8915 masking the dump_kind.
8916 (selftest::test_capture_of_dump_calls): Update test_dump_context
8917 instances to use MSG_ALL_KINDS | MSG_PRIORITY_USER_FACING rather
8918 than MSG_ALL. Generalize scope test to be run at all four
8919 combinations of with/without MSG_PRIORITY_USER_FACING and
8920 MSG_PRIORITY_INTERNALS, adding examples of explicit priority
8921 for each of the two values.
8922 * dumpfile.h (enum dump_flag): Add comment about the MSG_* flags.
8923 Rename MSG_ALL to MSG_ALL_KINDS. Add MSG_PRIORITY_USER_FACING,
8924 MSG_PRIORITY_INTERNALS, and MSG_ALL_PRIORITIES, updating the
8925 values for TDF_COMPARE_DEBUG and TDF_ALL_VALUES.
8926 (AUTO_DUMP_SCOPE): Add a note to the comment about the interaction
8927 with MSG_PRIORITY_*.
8928 * tree-vect-loop-manip.c (vect_loop_versioning): Mark versioning
8929 dump messages as MSG_PRIORITY_USER_FACING.
8930 * tree-vectorizer.h (DUMP_VECT_SCOPE): Add a note to the comment
8931 about the interaction with MSG_PRIORITY_*.
8933 2018-10-04 Bernd Edlinger <bernd.edlinger@hotmail.de>
8935 * varasm.c (output_constant): Add new parameter merge_strings.
8936 Make strings properly zero terminated in merge string sections.
8937 (mergeable_string_section): Don't fail if the last char is non-zero.
8938 (assemble_variable_contents): Handle merge string sections.
8939 (assemble_variable): Likewise.
8940 (assemble_constant_contents): Likewise.
8941 (output_constant_def_contents): Likewise.
8942 (output_constructor_array_range,
8943 output_constructor_regular_field): Adjust call to output_constant.
8944 (output_object_block): Adjust call to assemble_constant_contents
8945 and assemble_variable_contents.
8947 2018-10-04 Martin Liska <mliska@suse.cz>
8950 * cgraphunit.c (process_function_and_variable_attributes):
8951 Warn about a function with alias attribute and a body.
8953 2018-10-04 Martin Liska <mliska@suse.cz>
8956 * multiple_target.c (redirect_to_specific_clone): New function.
8957 (ipa_target_clone): Use it.
8958 * tree-inline.c: Fix comment.
8960 2018-10-04 David Malcolm <dmalcolm@redhat.com>
8962 * dumpfile.c (gcc::dump_manager::dump_manager): Initialize new
8964 (gcc::dump_manager::~dump_manager): Free m_optinfo_filename.
8965 (gcc::dump_manager::register_pass): New member function, adapted
8966 from loop body in gcc::pass_manager::register_pass, adding a
8967 call to update_dfi_for_opt_info.
8968 (gcc::dump_manager::opt_info_enable_passes): Store the
8969 -fopt-info options into the new fields. Move the loop
8971 (gcc::dump_manager::update_dfi_for_opt_info): ...this new member
8973 * dumpfile.h (struct opt_pass): New forward decl.
8974 (gcc::dump_manager::register_pass): New decl.
8975 (gcc::dump_manager::update_dfi_for_opt_info): New decl.
8976 (class gcc::dump_manager): Add fields "m_optgroup_flags",
8977 "m_optinfo_flags", and "m_optinfo_filename".
8978 * passes.c (gcc::pass_manager::register_pass): Move all of the
8979 dump-handling code to gcc::dump_manager::register_pass.
8981 2018-10-04 Peter Bergner <bergner@linux.ibm.com>
8983 PR rtl-optimization/87466
8984 * target.def (setjmp_preserves_nonvolatile_regs_p): New target hook.
8985 * doc/tm.texi.in (TARGET_SETJMP_PRESERVES_NONVOLATILE_REGS_P): New hook.
8986 * doc/tm.texi: Regenerate.
8987 * ira-lives.c (process_bb_node_lives): Use the new target hook.
8988 * lra-lives.c (process_bb_lives): Likewise.
8989 * config/rs6000/rs6000.c (TARGET_SETJMP_PRESERVES_NONVOLATILE_REGS_P):
8992 2018-10-04 Tamar Christina <tamar.christina@arm.com>
8994 * params.c (add_params): Fix initialization.
8996 2018-10-04 Martin Liska <mliska@suse.cz>
8998 PR gcov-profile/84107
8999 * tree-profile.c (init_ic_make_global_vars):
9000 Remove ic_void_ptr_var and ic_gcov_type_ptr_var.
9001 Come up with new ic_tuple* variables. Emit
9002 __gcov_indirect_call{,_topn} variables.
9003 (gimple_gen_ic_profiler): Access the variable
9005 (gimple_gen_ic_func_profiler): Access
9006 __gcov_indirect_call.callee field.
9007 (gimple_init_gcov_profiler): Use ptr_type_node.
9008 * value-prof.c (gimple_ic): Use ptr_type_node.
9010 2018-10-04 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
9012 PR tree-optimization/85787
9013 * ipa-pure-const.c (malloc_candidate_p_1): Move most of
9014 malloc_candidate_p into this function and add support for
9015 detecting multiple phis.
9016 (DUMP_AND_RETURN): Move from malloc_candidate_p into top-level macro.
9018 2018-10-04 Martin Liska <mliska@suse.cz>
9021 * ipa-inline.c (inline_to_all_callers_1):
9022 Call ultimate_alias_target for node being inlined.
9024 2018-10-03 Jeff Law <law@redhat.com>
9026 * gimple-ssa-sprintf.c (format_string): Do not hardcode size of
9028 * tree.c (get_typenode_from_name): Moved from fortran/trans-types.c.
9029 * tree.h (get_typenode_from_name): Prototype.
9031 2018-10-03 Uros Bizjak <ubizjak@gmail.com>
9033 * config/i386/i386.md (*cmp<X87MODEF:mode>_<SWI24:mode>_i387):
9034 Change operand 2 predicate to nonimmediate_operand.
9035 (*cmp<X87MODEF:mode>_<SWI24:mode>_cc_i387): Ditto.
9037 2018-10-03 Martin Sebor <msebor@redhat.com>
9038 Jeff Law <law@redhat.com>
9040 * gimple-ssa-sprintf.c (struct fmtresult): Add new member and
9042 (get_string_length): Detect unterminated arrays.
9043 (format_string): Same.
9044 (format_directive): Warn about unterminated arrays.
9045 (handle_gimple_call): Mark statements with no_warning as needed.
9047 2018-10-03 Jim Wilson <jimw@sifive.com>
9049 * config/riscv/riscv-c.c (riscv_cpu_cpp_builtins): For ABI_ILP32E,
9050 also define __riscv_abi_rve. Delete trailing white space.
9052 2018-10-03 Paul Koning <ni1d@arrl.net>
9054 Enable LRA register allocator for PDP11.
9055 * config/pdp11/constraints.md (Q): Use define_memory_constraint.
9058 * config/pdp11/pdp11.c (pdp11_lra_p): New function.
9059 * config/pdp11/pdp11.opt (-mlra): New option.
9060 * doc/invoke.texi (PDP-11 Options): Document -mlra.
9062 2018-10-03 Uros Bizjak <ubizjak@gmail.com>
9064 * config/i386/i386.md (*<absneg:code>extendsfdf2): Remove.
9065 (*<absneg:code>extend<mode>xf2): Ditto.
9067 2018-10-03 Aldy Hernandez <aldyh@redhat.com>
9069 PR tree-optimization/87415
9070 * tree-vrp.c (set_value_range_with_overflow): Special case one bit
9073 2018-10-02 Jeff Law <law@redhat.com>
9075 * gimple-fold.c (get_range_strlen): Only set *nonstr when
9076 an unterminated string is discovered. Bubble up range
9077 even for unterminated strings.
9078 (gimple_fold_builtin_strlen): Do not fold if get_range_strlen
9079 indicates the string was not terminated via NONSTR.
9081 2018-10-03 Aldy Hernandez <aldyh@redhat.com>
9083 * tree-vrp.c (extract_range_from_unary_expr): Special case all
9084 pointer conversions.
9085 Do not do anything special for anti-ranges.
9087 2018-10-03 Jérôme Lambourg <lambourg@adacore.com>
9089 * config/arm/vxworks.h (ARM_TARGET2_DWARF_FORMAT): Adjust to
9090 DW_EH_PE_pcrel | DW_EH_PE_indirect for RTPs.
9092 2018-10-03 Martin Liska <mliska@suse.cz>
9094 PR gcov-profile/86109
9095 * coverage.c (coverage_begin_function): Do not
9096 mark lambdas as artificial.
9097 * tree-core.h (struct GTY): Remove tm_clone_flag
9098 and introduce new lambda_function.
9099 * tree.h (DECL_LAMBDA_FUNCTION): New macro.
9101 2018-10-02 Aaron Sawdey <acsawdey@linux.ibm.com>
9104 * config/rs6000/rs6000-string.c (expand_strn_compare): Check that both
9105 P8_VECTOR and VSX are enabled.
9107 2018-10-02 Andreas Krebbel <krebbel@linux.ibm.com>
9109 * config/s390/driver-native.c (s390_host_detect_local_cpu): Add
9110 0x3907 as CPU model number.
9112 2018-10-02 Andreas Krebbel <krebbel@linux.ibm.com>
9114 * common/config/s390/s390-common.c: Rename PF_ARCH12 to PF_Z14.
9115 * config/s390/s390.h (enum processor_flags): Rename PF_ARCH12 to
9116 PF_Z14. Rename TARGET_CPU_ARCH12 to TARGET_CPU_Z14,
9117 TARGET_CPU_ARCH12_P to TARGET_CPU_Z14_P, TARGET_ARCH12 to
9118 TARGET_Z14, and TARGET_ARCH12_P to TARGET_Z14_P.
9119 * config/s390/s390.md: Likewise. Rename also the cpu attribute
9120 value from arch12 to z14.
9122 2018-10-02 Uros Bizjak <ubizjak@gmail.com>
9124 * config/i386/i386.md (fxam<mode>2_i387_with_temp): Remove.
9126 (isinf<mode>2): Ditto.
9128 2018-10-02 Uros Bizjak <ubizjak@gmail.com>
9130 * config/i386/i386.c (ix86_emit_i387_round): Extend op1 to XFmode
9131 before emitting fxam. Perform calculations in XFmode.
9133 2018-10-02 Marc Glisse <marc.glisse@inria.fr>
9135 * match.pd (((X /[ex] A) +- B) * A): New transformation.
9137 2018-10-02 Marc Glisse <marc.glisse@inria.fr>
9140 * fold-const.c (fold_plusminus_mult_expr): Handle complex and vectors.
9141 * tree.c (signed_or_unsigned_type_for): Handle complex.
9143 2018-10-02 Jeff Law <law@redhat.com>
9145 * gimple-fold.c (get_range_strlen): Remove dead code.
9147 2018-10-02 Martin Sebor <msebor@redhat.com>
9148 Jeff Law <law@redhat.com>
9150 * builtins.c (unterminated_array): Add new arguments.
9151 If argument is not terminated, bubble up size and exact
9153 (expand_builtin_strnlen): Detect, avoid expanding
9154 and diagnose unterminated arrays.
9155 (c_strlen): Fill in offset of start of unterminated strings.
9156 * builtins.h (unterminated_array): Update prototype.
9158 2018-10-02 Richard Biener <rguenther@suse.de>
9160 * config/i386/sse.md (reduc_plus_scal_v4df): Avoid the use
9161 of haddv4df, first reduce to SSE width and exploit the fact
9162 that we only need element zero with the reduction result.
9163 (reduc_plus_scal_v2df): Likewise.
9165 2018-10-02 Eric Botcazou <ebotcazou@adacore.com>
9167 * dojump.h (do_jump): Delete.
9168 (do_jump_1): Likewise.
9169 (split_comparison): Move around.
9170 * dojump.c (do_jump): Make static.
9171 (do_jump_1): Likewise.
9172 (jumpifnot): Move around.
9173 (jumpifnot_1): Likewise.
9175 (jumpif_1): Likewise.
9176 * expr.c (expand_expr_real_1): Call jumpif[not] instead of do_jump.
9178 2018-10-02 Eric Botcazou <ebotcazou@adacore.com>
9180 * reorg.c (make_return_insns): Use emit_copy_of_insn_after for the
9181 insns in the delay slot and add_insn_after for the jump insn.
9183 2018-10-02 Richard Biener <rguenther@suse.de>
9185 * tree-inline.c (expand_call_inline): Use the location of
9186 the callee declaration for the inline-entry marker.
9187 * final.c (notice_source_line): Remove special-casing of
9188 NOTE_INSN_INLINE_ENTRY.
9190 2018-10-01 Carl Love <cel@us.ibm.com>
9193 * config/rs6000/rs6000-builtin.def (__builtin_mffsl): New.
9194 (__builtin_mtfsb0): New.
9195 (__builtin_mtfsb1): New.
9196 ( __builtin_set_fpscr_rn): New.
9197 (__builtin_set_fpscr_drn): New.
9198 * config/rs6000/rs6000.c (rs6000_expand_mtfsb_builtin): Add.
9199 (rs6000_expand_set_fpscr_rn_builtin): Add.
9200 (rs6000_expand_set_fpscr_drn_builtin): Add.
9201 (rs6000_expand_builtin): Add case statement entries for
9202 RS6000_BUILTIN_MTFSB0, RS6000_BUILTIN_MTFSB1,
9203 RS6000_BUILTIN_SET_FPSCR_RN, RS6000_BUILTIN_SET_FPSCR_DRN,
9204 RS6000_BUILTIN_MFFSL.
9205 (rs6000_init_builtins): Add ftype initialization and def_builtin
9206 calls for __builtin_mffsl, __builtin_mtfsb0, __builtin_mtfsb1,
9207 __builtin_set_fpscr_rn, __builtin_set_fpscr_drn.
9208 * config/rs6000.md (rs6000_mtfsb0, rs6000_mtfsb1, rs6000_mffscrn,
9209 rs6000_mffscdrn): Add define_insn.
9210 (rs6000_set_fpscr_rn, rs6000_set_fpscr_drn): Add define_expand.
9211 * doc/extend.texi: Add documentation for the builtins.
9213 2018-10-01 Richard Biener <rguenther@suse.de>
9215 PR tree-optimization/87465
9216 * tree-ssa-loop-ivcanon.c (tree_estimate_loop_size): Fix typo
9217 causing branch miscounts.
9219 2018-10-01 Tamar Christina <tamar.christina@arm.com>
9221 * common/config/aarch64/aarch64-common.c (TARGET_OPTION_DEFAULT_PARAM,
9222 aarch64_option_default_param): New.
9223 (params.h): Include.
9224 (TARGET_OPTION_VALIDATE_PARAM, aarch64_option_validate_param): New.
9225 * config/aarch64/aarch64.c (aarch64_override_options_internal): Simplify
9226 stack-clash protection validation code.
9228 2018-10-01 Tamar Christina <tamar.christina@arm.com>
9230 * params.c (validate_param): New.
9231 (add_params): Use it.
9232 (set_param_value): Refactor param validation into validate_param.
9233 (diagnostic.h): Include.
9234 * diagnostic.h (diagnostic_ready_p): New.
9236 2018-10-01 Tamar Christina <tamar.christina@arm.com>
9238 * params.c (set_param_value):
9239 Add index of parameter being validated.
9240 * common/common-target.def (option_validate_param): New.
9241 * common/common-targhooks.h (default_option_validate_param): New.
9242 * common/common-targhooks.c (default_option_validate_param): New.
9243 * doc/tm.texi.in (TARGET_OPTION_VALIDATE_PARAM): New.
9244 * doc/tm.texi: Regenerate.
9246 2018-10-01 Tamar Christina <tamar.christina@arm.com>
9249 * config/aarch64/aarch64.c (aarch64_override_options_internal):
9250 Add validation for stack-clash parameters and set defaults.
9252 2018-10-01 Tamar Christina <tamar.christina@arm.com>
9255 * configure.ac: Add stack-clash-protection-guard-size.
9256 * doc/install.texi: Document it.
9257 * config.in (DEFAULT_STK_CLASH_GUARD_SIZE): New.
9258 * params.def: Update comment for guard-size.
9259 (PARAM_STACK_CLASH_PROTECTION_GUARD_SIZE,
9260 PARAM_STACK_CLASH_PROTECTION_PROBE_INTERVAL): Update description.
9261 * configure: Regenerate.
9263 2018-10-01 Tamar Christina <tamar.christina@arm.com>
9266 * config/aarch64/aarch64.h (STACK_CLASH_MIN_BYTES_OUTGOING_ARGS,
9267 STACK_DYNAMIC_OFFSET): New.
9268 * config/aarch64/aarch64.c (aarch64_layout_frame):
9269 Update outgoing args size.
9270 (aarch64_stack_clash_protection_alloca_probe_range,
9271 TARGET_STACK_CLASH_PROTECTION_ALLOCA_PROBE_RANGE): New.
9273 2018-10-01 Tamar Christina <tamar.christina@arm.com>
9276 * explow.c (anti_adjust_stack_and_probe_stack_clash): Support custom
9278 * target.def (stack_clash_protection_alloca_probe_range): New.
9279 (stack_clash_protection_final_dynamic_probe): Remove.
9280 * targhooks.h (default_stack_clash_protection_alloca_probe_range) New.
9281 (default_stack_clash_protection_final_dynamic_probe): Remove.
9282 * targhooks.c: Likewise.
9283 * doc/tm.texi.in (TARGET_STACK_CLASH_PROTECTION_ALLOCA_PROBE_RANGE): New.
9284 (TARGET_STACK_CLASH_PROTECTION_FINAL_DYNAMIC_PROBE): Remove.
9285 * doc/tm.texi: Regenerate.
9287 2018-10-01 Tamar Christina <tamar.christina@arm.com>
9290 * config/aarch64/aarch64-protos.h (aarch64_output_probe_sve_stack_clash): New.
9291 * config/aarch64/aarch64.c (aarch64_output_probe_sve_stack_clash,
9292 aarch64_clamp_to_uimm12_shift): New.
9293 (aarch64_allocate_and_probe_stack_space): Add SVE specific section.
9294 * config/aarch64/aarch64.md (probe_sve_stack_clash): New.
9296 2018-10-01 Tamar Christina <tamar.christina@arm.com>
9299 * config/aarch64/aarch64.c (aarch64_layout_frame): Add assert.
9301 2018-10-01 Jeff Law <law@redhat.com>
9302 Richard Sandiford <richard.sandiford@linaro.org>
9303 Tamar Christina <tamar.christina@arm.com>
9306 * config/aarch64/aarch64.md
9307 (probe_stack_range): Add k (SP) constraint.
9308 * config/aarch64/aarch64.h (STACK_CLASH_CALLER_GUARD,
9309 STACK_CLASH_MAX_UNROLL_PAGES): New.
9310 * config/aarch64/aarch64.c (aarch64_output_probe_stack_range): Emit
9311 stack probes for stack clash.
9312 (aarch64_allocate_and_probe_stack_space): New.
9313 (aarch64_expand_prologue): Use it.
9314 (aarch64_expand_epilogue): Likewise and update IP regs re-use criteria.
9315 (aarch64_sub_sp): Add emit_move_imm optional param.
9317 2018-10-01 MCC CS <deswurstes@users.noreply.github.com>
9319 PR tree-optimization/87261
9320 * match.pd: Remove trailing whitespace.
9321 Add (x & y) | ~(x | y) -> ~(x ^ y),
9322 (~x | y) ^ (x ^ y) -> x | ~y and (x ^ y) | ~(x | y) -> ~(x & y)
9324 2018-10-01 Claudiu Zissulescu <claziss@synopsys.com>
9326 * config/arc/arc.md (*add_n): Clean up pattern, update instruction
9328 (ashlsi3_insn): Update instruction constraints.
9329 (ashrsi3_insn): Likewise.
9330 (rotrsi3): Likewise.
9331 (add_shift): Likewise.
9332 * config/arc/constraints.md (Csz): New 32 bit constraint. It
9333 avoids placing in the limm field small constants which, otherwise,
9334 could end into a small instruction.
9336 2018-10-01 Claudiu Zissulescu <claziss@synopsys.com>
9338 * config/arc/arc.md (maddsidi4_split): Don't use dmac if the
9339 destination register is not odd-even.
9340 (umaddsidi4_split): Likewise.
9342 2018-10-01 Richard Biener <rguenther@suse.de>
9344 * tree-inline.c (expand_call_inline): Store origin of fn
9345 in BLOCK_ABSTRACT_ORIGIN for the inline BLOCK.
9346 * tree.c (block_ultimate_origin): Simplify and do some
9349 2018-09-30 Uros Bizjak <ubizjak@gmail.com>
9351 * config/i386/mmx.md (EMMS): New int iterator.
9352 (emms): New int attribute.
9353 (mmx_<emms>): Macroize insn from *mmx_emms and *mmx_femms using
9354 EMMS int iterator. Explicitly declare clobbers.
9355 (mmx_emms): Remove expander.
9357 * config/i386/predicates.md (emms_operation): Remove predicate.
9358 (vzeroall_pattern): New predicate.
9359 (vzeroupper_pattern): Rename from vzeroupper_operation.
9360 * config/i386/i386.c (ix86_avx_u128_mode_after): Use
9361 vzeroupper_pattern and vzeroall_pattern predicates.
9363 2018-09-30 Peter Bergner <bergner@linux.ibm.com>
9365 PR rtl-optimization/86939
9366 * ira-lives.c (make_hard_regno_born): Rename from this...
9367 (make_hard_regno_live): ... to this. Remove update to conflict
9368 information. Update function comment.
9369 (make_hard_regno_dead): Add conflict information update. Update
9371 (make_object_born): Rename from this...
9372 (make_object_live): ... to this. Remove update to conflict information.
9373 Update function comment.
9374 (make_object_dead): Add conflict information update. Update function
9376 (mark_pseudo_regno_live): Call make_object_live.
9377 (mark_pseudo_regno_subword_live): Likewise.
9378 (mark_hard_reg_dead): Update function comment.
9379 (mark_hard_reg_live): Call make_hard_regno_live.
9380 (process_bb_node_lives): Likewise.
9381 * lra-lives.c (make_hard_regno_born): Rename from this...
9382 (make_hard_regno_live): ... to this. Remove update to conflict
9383 information. Remove now uneeded check_pic_pseudo_p argument.
9384 Update function comment.
9385 (make_hard_regno_dead): Add check_pic_pseudo_p argument and add update
9386 to conflict information. Update function comment.
9387 (mark_pseudo_live): Remove update to conflict information. Update
9389 (mark_pseudo_dead): Add conflict information update.
9390 (mark_regno_live): Call make_hard_regno_live.
9391 (mark_regno_dead): Call make_hard_regno_dead with new arguement.
9392 (process_bb_lives): Call make_hard_regno_live and make_hard_regno_dead.
9394 2018-09-29 H.J. Lu <hongjiu.lu@intel.com>
9397 * config/i386/i386.c (construct_container): Use TImode for
9398 BLKmode values in 2 integer registers.
9400 2018-09-29 Jeff Law <law@redhat.com>
9402 * builtins.c (unterminated_array): Pass in c_strlen_data * to
9403 c_strlen rather than just a tree *.
9404 (c_strlen): Change NONSTR argument to a c_strlen_data pointer.
9405 Update recursive calls appropriately. If caller did not provide a
9406 suitable data pointer, create a local one. When a non-terminated
9407 string is discovered, bubble up information about the string via the
9408 c_strlen_data object.
9409 * builtins.h (c_strlen): Update prototype.
9410 (c_strlen_data): New structure.
9411 * gimple-fold.c (get_range_strlen): Update calls to c_strlen.
9412 For a type 2 call, if c_strlen indicates a non-terminated string
9413 use the length of the non-terminated string.
9414 (gimple_fold_builtin_stpcpy): Update calls to c_strlen.
9416 2018-09-29 Jakub Jelinek <jakub@redhat.com>
9419 * config/i386/avx512fintrin.h (_mm512_abs_pd, _mm512_mask_abs_pd): Use
9420 __m512d type for __A argument rather than __m512.
9422 2018-09-28 John David Anglin <danglin@gcc.gnu.org>
9424 * match.pd (simple_comparison): Don't optimize if either operand is
9425 a function pointer when target needs function pointer canonicalization.
9427 2018-09-28 Segher Boessenkool <segher@kernel.crashing.org>
9429 * config/rs6000/driver-rs6000.c (asm_names): Adjust the entries for
9430 power5 .. power9 to remove indirection.
9431 * config/rs6000/rs6000.h (ASM_CPU_POWER5_SPEC, ASM_CPU_POWER6_SPEC,
9432 ASM_CPU_POWER7_SPEC, ASM_CPU_POWER8_SPEC, ASM_CPU_POWER9_SPEC,
9433 ASM_CPU_476_SPEC): Delete.
9434 (ASM_CPU_SPEC): Adjust.
9435 (EXTRA_SPECS): Delete asm_cpu_power5, asm_cpu_power6, asm_cpu_power7,
9436 asm_cpu_power8, asm_cpu_power9, asm_cpu_476.
9438 2018-09-28 Segher Boessenkool <segher@kernel.crashing.org>
9440 * config.in: Delete HAVE_AS_DCI.
9441 * config/powerpcspe/powerpcspe.h: Treat HAVE_AS_DCI as always true.
9442 * config/rs6000/rs6000.h: Ditto.
9443 * configure.ac: Delete HAVE_AS_DCI.
9444 * configure: Regenerate.
9446 2018-09-28 Segher Boessenkool <segher@kernel.crashing.org>
9448 * config.in (HAVE_AS_LWSYNC): Delete.
9449 * config/powerpcspe/powerpcspe.h (TARGET_LWSYNC_INSTRUCTION): Delete.
9450 * config/powerpcspe/sync.md (*lwsync): Always generate lwsync, never
9452 * config/rs6000/rs6000.h (TARGET_LWSYNC_INSTRUCTION): Delete.
9453 * config/rs6000/sync.md (*lwsync): Always generate lwsync, never do it
9455 * configure.ac: Delete HAVE_AS_LWSYNC.
9456 * configure: Regenerate.
9458 2018-09-28 Eric Botcazou <ebotcazou@adacore.com>
9459 Pierre-Marie de Rodat <derodat@adacore.com>
9461 * calls.c (expand_call): Try to do a tail call for thunks at -O0 too.
9462 * cgraph.h (struct cgraph_thunk_info): Add indirect_offset.
9463 (cgraph_node::create_thunk): Add indirect_offset parameter.
9464 (thunk_adjust): Likewise.
9465 * cgraph.c (cgraph_node::create_thunk): Add indirect_offset parameter
9466 and initialize the corresponding field with it.
9467 (cgraph_node::dump): Dump indirect_offset field.
9468 * cgraphclones.c (duplicate_thunk_for_node): Deal with indirect_offset.
9469 * cgraphunit.c (cgraph_node::analyze): Be prepared for external thunks.
9470 (thunk_adjust): Add indirect_offset parameter and deal with it.
9471 (cgraph_node::expand_thunk): Deal with the indirect_offset field and
9472 pass it to thunk_adjust. Do not call the target hook if it's non-zero
9473 or if the thunk is external or local. Fix formatting. Do not chain
9474 the RESULT_DECL to BLOCK_VARS. Pass the static chain to the target,
9475 if any, in the GIMPLE representation.
9476 * ipa-icf.c (sem_function::equals_wpa): Deal with indirect_offset.
9477 * lto-cgraph.c (lto_output_node): Write indirect_offset field.
9478 (input_node): Read indirect_offset field.
9479 * tree-inline.c (expand_call_inline): Pass indirect_offset field in the
9480 call to thunk_adjust.
9481 * tree-nested.c (struct nesting_info): Add thunk_p field.
9482 (create_nesting_tree): Set it.
9483 (convert_all_function_calls): Copy static chain from targets to thunks.
9484 (finalize_nesting_tree_1): Return early for thunks.
9485 (unnest_nesting_tree_1): Do not finalize thunks.
9486 (gimplify_all_functions): Do not gimplify thunks.
9488 2018-09-28 David Malcolm <dmalcolm@redhat.com>
9490 * opt-suggestions.c (option_proposer::build_option_suggestions):
9491 Release "option_values".
9493 2018-09-28 David Malcolm <dmalcolm@redhat.com>
9495 * coverage.c (get_coverage_counts): Convert problem-reporting dump
9496 messages from MSG_OPTIMIZED_LOCATIONS to MSG_MISSED_OPTIMIZATION.
9497 * dumpfile.c (kind_as_string): New function.
9498 (dump_loc): Rather than a hardcoded prefix of "note: ", use
9499 kind_as_string to vary the prefix based on dump_kind.
9500 (selftest::test_capture_of_dump_calls): Update for above.
9502 2018-09-28 Uros Bizjak <ubizjak@gmail.com>
9504 * config/i386/i386.h (SSE_REGNO): Fix check for FIRST_REX_SSE_REG.
9505 (GET_SSE_REGNO): Rename from SSE_REGNO. Update all uses for rename.
9507 2018-09-28 Uros Bizjak <ubizjak@gmail.com>
9509 * config/i386/i386.h (CC_REGNO): Remove FPSR_REG.
9510 * config/i386/i386.c (ix86_fixed_condition_code_regs): Use
9511 INVALID_REGNUM instead of FPSR_REG.
9512 (ix86_md_asm_adjust): Do not clobber FPSR_REG.
9513 * config/i386/i386.md: Update comment of FP compares.
9514 (fldenv): Do not clobber FPSR_REG.
9516 2018-09-28 Richard Biener <rguenther@suse.de>
9518 * tree.h (BLOCK_ORIGIN): New.
9519 * omp-expand.c (grid_expand_target_grid_body): Assign
9520 BLOCK_ORIGIN to BLOCK_ABSTRACT_ORIGIN.
9521 * tree-inline.c (remap_block): Likewise.
9522 * auto-profile.c (get_function_decl_from_block): Simplify
9523 by eliding the BLOCK_ABSTRACT_ORIGIN chasing.
9524 * langhooks.c (lhd_print_error_function): Likewise.
9525 * optinfo-emit-json.cc (optrecord_json_writer::inlining_chain_to):
9527 * tree-ssa-live.c (remove_unused_scope_block_p): Likewise.
9528 * tree.c (block_nonartificial_location): Likewise.
9529 (block_ultimate_origin): Likewise.
9530 * tree-pretty-print.c (percent_K_format): Likewise. Remove
9531 no longer needed LTO case.
9533 2018-09-28 Andrew Stubbs <ams@codesourcery.com>
9534 Jan Hubicka <jh@suse.cz>
9535 Martin Jambor <mjambor@suse.cz>
9537 * simplify-rtx.c (simplify_merge_mask): New function.
9538 (simplify_ternary_operation): Use it, also see if VEC_MERGEs with the
9539 same masks are used in op1 or op2.
9540 (test_vec_merge): New function.
9541 (test_vector_ops): Call test_vec_merge.
9543 2018-09-28 Eric Botcazou <ebotcazou@adacore.com>
9545 * config/sparc/sparc-protos.h (sparc_branch_cost): Declare.
9546 * config/sparc/sparc.h (BRANCH_COST): Call sparc_branch_cost.
9547 * config/sparc/sparc.c (struct processor_costs): Add branch_cost field.
9548 (cypress_costs): Set it.
9549 (supersparc_costs): Likewise.
9550 (hypersparc_costs): Likewise.
9551 (leon_cost): Likewise.
9552 (leon3_costs): Likewise.
9553 (sparclet_costs): Likewise.
9554 (ultrasparc_costs): Likewise.
9555 (ultrasparc_costs): Likewise.
9556 (niagara_costs): Likewise.
9557 (niagara2_costs): Likewise.
9558 (niagara3_costs): Likewise.
9559 (niagara4_costs): Likewise.
9560 (niagara7_costs): Likewise.
9561 (m8_costs): Likewise.
9562 (TARGET_CAN_FOLLOW_JUMP): Define.
9563 (pass_work_around_errata::gate): Minor tweak.
9564 (sparc_option_override): Remove MASK_FSMULD mask for V7 processors.
9565 Do not set both MASK_VIS4 and MASK_VIS4B for M8 processor.
9566 Automaitcally clear MASK_FSMULD mask for V7 processors.
9567 (sparc_can_follow_jump): New static function.
9568 (output_ubranch): Deal with CROSSING_JUMP_P.
9569 (sparc_use_sched_lookahead): Rewrite using switch statement.
9570 (sparc_issue_rate): Reorder.
9571 (sparc_branch_cost): New function.
9573 2018-09-27 Martin Sebor <msebor@redhat.com>
9575 * tree.h (tree_to_shwi): Add attribute nonnull and pure.
9576 (tree_to_poly_int64, tree_to_uhwi, tree_to_poly_uint64): Same.
9577 (int_fits_type_p): Same.
9579 2018-09-27 Uros Bizjak <ubizjak@gmail.com>
9581 * config/i386/i386.md (FPCR_REG): Remove.
9582 (UNSPEC_FLDCW): Remove.
9583 (x86_fnstcw_1): Use (const_int 0) instead of FPCR_REG.
9584 (x86_fldcw_1): Remove insn pattern.
9585 (fnstenv): Do not clobber FPCR_REG.
9587 * config/i386/i386.h (FIXED_REGISTERS) Remove fpsr register.
9588 (CALL_USED_REGISTERS): Ditto.
9589 (REG_ALLOC_ORDER): Ditto.
9590 (REG_CLASS_CONTENTS): Ditto.
9591 (HI_REGISTER_NAMES): Ditto.
9592 (ADDITIONAL_REGISTER_NAMES): Use defines instead
9593 of numerical constants.
9594 * config/i386/i386.c (regclass_map): Remove fpsr register.
9595 (dbx_register_map): Ditto.
9596 (dbx64_register_map): Ditto.
9597 (svr4_dbx_register_map): Ditto.
9598 (print_reg): Do not handle FPCR_REG.
9600 2018-09-27 Segher Boessenkool <segher@kernel.crashing.org>
9603 * config.in (HAVE_AS_CMPB, HAVE_AS_DFP, HAVE_AS_FPRND, HAVE_AS_MFPGPR,
9604 HAVE_AS_POPCNTB, HAVE_AS_POPCNTD, HAVE_AS_POWER8, HAVE_AS_POWER9):
9605 Delete, always treat as true.
9606 * config/powerpcspe/powerpcspe.c (rs6000_option_override_internal):
9607 Ditto. Simplify remaining code.
9608 * config/powerpcspe/powerpcspe.h: Ditto.
9609 * config/rs6000/rs6000.c (rs6000_option_override_internal): Ditto.
9610 Simplify remaining code.
9611 (rs6000_expand_builtin): Ditto.
9612 * config/rs6000/rs6000.h: Ditto.
9613 * configure.ac: Ditto.
9614 * configure: Regenerate.
9616 2018-09-27 Martin Liska <mliska@suse.cz>
9618 * coverage.c (get_coverage_counts): Revert the formatting
9619 of missing profile opt info.
9621 2018-09-27 Richard Biener <rguenther@suse.de>
9625 * dwarf2out.c (set_block_origin_self): Do not mark outermost
9626 block as we do not output that.
9627 (gen_inlined_subroutine_die): Elide the originally outermost
9628 block, matching what we do for concrete instances.
9629 (decls_for_scope): Add parameter specifying whether to recurse
9632 2018-09-27 Andrew Stubbs <ams@codesourcery.com>
9633 Tom de Vries <tom@codesourcery.com>
9637 * expmed.c (emit_cstore): Fix handling of result_mode == BImode and
9638 STORE_FLAG_VALUE == 1.
9640 2018-09-27 Andreas Krebbel <krebbel@linux.ibm.com>
9642 * config/s390/s390.md (PPA_TX_ABORT, PPA_OOO_BARRIER): New
9643 constant definitions.
9644 ("tx_assist"): Replace magic number with PPA_TX_ABORT.
9645 ("*ppa"): Enable pattern also for -march=zEC12 -mno-htm.
9646 ("speculation_barrier"): New expander definition.
9648 2018-09-26 Indu Bhagat <indu.bhagat@oracle.com>
9650 PR gcov-profile/86957
9651 * common.opt: New warning option -Wmissing-profile.
9652 * coverage.c (get_coverage_counts): Add warning for missing .gcda file.
9653 * doc/invoke.texi: Document -Wmissing-profile.
9655 2018-09-26 Jim Wilson <jimw@sifive.com>
9657 * config/riscv/riscv.md (subsi3_extended2): Add J constraint.
9658 (negdi2, negsi2, negsi2_extended, negsi2_extended2): New.
9660 2018-09-26 Martin Sebor <msebor@redhat.com>
9662 * tree.c (zerop): Change return type to bool.
9663 (integer_zerop, integer_onep, integer_each_onep): Same.
9664 (integer_all_onesp, integer_minus_onep, integer_pow2p): Same.
9665 (integer_nonzerop, integer_truep, tree_ctz, real_zerop): Same.
9666 (real_onep, real_minus_onep, chain_index): Same.
9667 (print_type_hash_statistics, type_list_equal): Same.
9668 * tree.h (zerop): Same.
9669 (zerop, integer_zerop, integer_onep, integer_each_onep): Same.
9670 (integer_all_onesp, integer_minus_onep, integer_pow2p): Same.
9671 (integer_nonzerop, integer_truep, tree_ctz, real_zerop): Same.
9672 (real_onep, real_minus_onep, chain_index): Same.
9673 (print_type_hash_statistics, type_list_equal): Same.
9675 2018-09-26 Jim Wilson <jimw@sifive.com>
9677 * config/riscv/riscv.h (FUNCTION_ARG_REGNO_P): Fix comment.
9679 2018-09-26 Jakub Jelinek <jakub@redhat.com>
9682 * config/i386/i386.c: Include debug.h and dwarf2out.h.
9683 (output_indirect_thunk): Emit DW_CFA_def_cfa_offset after the
9686 2018-09-25 Andrew Stubbs <ams@codesourcery.com>
9688 * builtins.c (get_builtin_sync_mem): Force address mode conversion.
9690 2018-09-26 Uros Bizjak <ubizjak@gmail.com>
9692 * config/i386/i386.h (enum reg_class): Remove FP_TOP_SSE_REGS
9693 and FP_SECOND_SSE_REGS.
9694 (REG_CLASS_NAMES): Ditto.
9695 (REG_CLASS_CONTENTS): Ditto.
9696 * config/i386/i386.c (ix86_preferred_reload_class) Do not handle
9697 FP_TOP_SSE_REGS and FP_SECOND_SSE_REGS classes.
9698 (ix86_preferred_output_reload_class): Ditto.
9699 * config/i386/i386.md (fix_trunc<mode>_i387_fisttp): Change "=&1f"
9700 clobber constraint to "=&f".
9701 (fix_truncdi_i387): Ditto.
9702 (lrintxfdi2): Ditto.
9703 (fistdi2_<rounding>): Ditto.
9704 (fpremxf4_i387): Change "=u" constraint to "=f".
9705 (fprem1xf4_i387): Ditto.
9707 (fptanxf4_i387): Ditto.
9708 (fxtractxf3_i387): Ditto.
9709 (fscalexf4_i387): Ditto.
9710 (atan2xf3): Change "u" constraint to "f".
9711 (fyl2xxf3_i387): Ditto.
9712 (fyl2xp1xf3_i387): Ditto.
9714 2018-09-26 Uros Bizjak <ubizjak@gmail.com>
9717 * config/i386/i386.h (NUM_MODES_FOR_MODE_SWITCHING): Update
9718 for removed I387_MASK_PM entity.
9721 2018-09-26 Jeff Law <law@redhat.com>
9723 2018-09-26 Alexey Neyman <stilor@att.net>
9725 * graphite.h: Include <isl/id.h> and <isl/space.h>; these
9726 headers are no longer pulled in by <isl/val.h>.
9728 2018-09-26 Richard Biener <rguenther@suse.de>
9731 * dwarf2out.c (gen_lexical_block_die): Do not equate inline
9732 or concrete instance DIE to the tree. Create abstract origin
9733 attributes also for concrete instances.
9735 2018-09-26 Alexey Neyman <stilor@att.net>
9737 * graphite.h: Include <isl/id.h> and <isl/space.h>; these
9738 headers are no longer pulled in by <isl/val.h>.
9740 2018-09-26 Matthew Malcomson <matthew.malcomson@arm.com>
9742 * config/arm/arm.c (arm_split_compare_and_swap, arm_split_atomic_op):
9743 Use new helper functions.
9744 * config/arm/sync.md (atomic_load<mode>, atomic_store<mode>):
9745 Use new helper functions.
9746 * config/arm/aarch-common-protos.h (aarch_mm_needs_acquire,
9747 aarch_mm_needs_release): New declarations.
9748 * config/arm/aarch-common.c (aarch_mm_needs_acquire,
9749 aarch_mm_needs_release): New.
9751 2018-09-26 Eric Botcazou <ebotcazou@adacore.com>
9753 * config/arm/arm.c (arm_reorg): Skip Thumb reorg pass for thunks.
9754 (arm32_output_mi_thunk): Deal with long calls.
9756 2018-09-26 Richard Biener <rguenther@suse.de>
9760 * tree-inline.c (expand_call_inline): When the location
9761 of the call is UNKNOWN_LOCATION use DECL_SOURCE_LOCATION
9762 or BUILTINS_LOCATION for the BLOCK_SOURCE_LOCATION of
9763 the inserted BLOCK to make inlined_function_outer_scope_p
9765 * dwarf2out.c (add_call_src_coords_attributes): Do not add
9766 coords for reserved locations.
9768 2018-09-25 Segher Boessenkool <segher@kernel.crashing.org>
9770 * config/rs6000/rs6000.md (*movcc_internal1): Use set_attr_alternative.
9771 (*call_indirect_nonlocal_sysv<mode>): Ditto.
9772 (*call_value_indirect_nonlocal_sysv<mode>): Ditto.
9773 (*sibcall_nonlocal_sysv<mode>): Ditto.
9774 (*sibcall_value_nonlocal_sysv<mode>): Ditto.
9775 (<bd>_<mode>): Ditto.
9776 (<bd>tf_<mode>): Ditto.
9778 2018-09-25 Segher Boessenkool <segher@kernel.crashing.org>
9780 * config/rs6000/altivec.md (*altivec_mov<mode>): Write the output
9781 control string as a list of templates instead of as C code.
9782 (*altivec_movti): Ditto.
9783 * config/rs6000/darwin.md (movdf_low_di): Ditto.
9785 2018-09-25 Jim Wilson <jimw@sifive.com>
9787 * config/riscv/riscv.c (riscv_split_symbol): Mark auipc label as weak
9788 when target symbol is weak.
9790 2018-09-25 Bernd Edlinger <bernd.edlinger@hotmail.de>
9793 * builtins.c (unterminated_array): Simplify.
9794 * expr.c (string_constant): Handle SSA_NAME. Add more exceptions
9795 where pointer arithmetic is safe.
9797 2018-09-25 Segher Boessenkool <segher@kernel.crashing.org>
9800 * config/rs6000/altivec.md (altivec_vspltb): Use
9801 const_0_to_15_operand instead of u5bit_cint_operand.
9802 (*altivec_vspltb_internal): Ditto.
9803 (altivec_vspltb_direct): Ditto.
9804 (altivec_vsplth): Use const_0_to_7_operand instead of
9806 (*altivec_vsplth_internal): Ditto.
9807 (altivec_vsplth_direct): Ditto.
9808 (altivec_vspltw): Use const_0_to_3_operand instead of
9810 (*altivec_vspltw_internal): Ditto.
9811 (altivec_vspltw_direct): Ditto.
9812 (altivec_vspltsf): Ditto.
9813 (*altivec_vspltsf_internal): Ditto.
9814 * config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Handle the
9815 various splats with the proper size immediate. Reorder the various
9816 cases by ascending size of immediate, and put all such together.
9818 2018-09-25 Richard Biener <rguenther@suse.de>
9821 * dwarf2out.c (add_AT_external_die_ref): Remove now redundant
9823 (maybe_create_die_with_external_ref): Do not create
9824 DW_TAG_imported_unit here.
9825 (add_abstract_origin_attribute): Handle external BLOCK refs.
9826 (dwarf2out_abstract_function): Simplify LTO case.
9827 (dwarf2out_early_finish): Create DW_TAG_imported_unit explicitely
9828 rather than using maybe_create_die_with_external_ref.
9830 2018-09-25 Uros Bizjak <ubizjak@gmail.com>
9833 * config/i386/i386.md (frndintxf2_mask_pm): Remove.
9834 (frndintxf2_mask_pm_i387): Ditto.
9835 (nearbyintxf2): Rewrite expander pattern to match rintxf2.
9836 Enable for !flag_trapping_math.
9837 (nearbyint<mode>2): Enable x87 modes for !flag_trapping_math.
9838 Enable SSE modes for TARGET_SSE4_1 and expand them with round insn.
9839 Change operand 1 predicate to nonimmediate_operand.
9840 (attr "i387_cw"): Remove mask_pm.
9841 * config/i386/i386.h (enum ix86_stack_slot): Remove SLOT_CW_MASK_PM.
9842 (enum ix86_entity): Remove I387_MASK_PM.
9843 * config/i386/i386.c (ix86_i387_mode_needed): Do not
9844 handle I387_MASK_PM.
9845 (ix86_mode_needed): Ditto.
9846 (ix86_mode_after): Ditto.
9847 (ix86_mode_entry): Ditto.
9848 (ix86_mode_exit): Ditto.
9849 (emit_i387_cw_initialization): Do not handle I387_CW_MASK_PM.
9851 2018-09-25 Jakub Jelinek <jakub@redhat.com>
9853 * vr-values.c (vr_values::vr_values): Initialize to_remove_edges and
9854 to_update_switch_stmts to vNULL instead of calling create on them
9857 2018-09-25 Richard Biener <rguenther@suse.de>
9859 PR tree-optimization/87402
9860 * tree-ssa-sccvn.c (SSA_VISITED): Remove unused function.
9861 (visit_phi): Re-instantiate handling of supposed to be VARYING
9862 but non-VARYING backedge value.
9864 2018-09-25 Richard Biener <rguenther@suse.de>
9867 * dwarf2out.c (struct sym_off_pair): New.
9868 (external_die_map): New global.
9869 (lookup_decl_die): When in LTO create DIEs lazily from the
9871 (lookup_block_die): New function, create DIEs lazily in LTO.
9872 (equate_block_to_die): New function.
9873 (dwarf2out_die_ref_for_decl): During WPA get the association
9874 from the external DIE map.
9875 (dwarf2out_register_external_die): Record mapping into the
9877 (maybe_create_die_with_external_ref): New function split out from
9878 DIE generation part of old dwarf2out_register_external_die.
9879 (add_abstract_origin_attribute): Do not return the DIE. When
9880 in LTO reference externals directly.
9881 (dwarf2out_abstract_function): When in LTO ignore calls for
9882 decls with external DIEs (already present abstract instances).
9883 (gen_call_site_die): Adjust.
9884 (add_high_low_attributes): Likewise.
9885 (gen_lexical_block_die): Likewise.
9886 (gen_inlined_subroutine_die): Likewie.
9887 (gen_block_die): Likewise.
9888 (dwarf2out_inline_entry): Likewise.
9889 (dwarf2out_early_finish): In LTRANS phase create DW_TAG_imported_unit
9892 2018-09-25 Martin Liska <mliska@suse.cz>
9894 * ipa-fnsummary.c (estimate_node_size_and_time): Scale by two
9895 integers and not by a float value.
9897 2018-09-25 Martin Liska <mliska@suse.cz>
9900 * dbgcnt.c (dbg_cnt_process_single_pair): Return false
9902 * dumpfile.c (dump_enable_all): Remove extra parenthesis.
9903 * gcov-tool.c: Declare the function with ATTRIBUTE_NORETURN.
9904 * godump.c (go_format_type): Remove extra parenthesis.
9906 2018-09-25 Martin Liska <mliska@suse.cz>
9908 * alias.c (set_dest_equal_p): Remove unused function.
9909 * config/i386/i386.c (def_builtin_pure2): Likewise.
9910 * diagnostic-show-locus.c (class layout): Remove
9912 (layout::layout): Likewise here.
9913 * dump-context.h (class temp_dump_context): Likewise.
9914 * dwarf2out.c (add_AT_fde_ref): Remove unused function.
9915 (add_AT_loclistsptr): Likewise.
9916 (add_AT_offset): Likewise.
9917 (get_AT_hi_pc): Likewise.
9918 (is_comdat_die): Likewise.
9919 (type_is_enum): Likewise.
9920 (ceiling): Likewise.
9921 (add_AT_vms_delta): Likewise.
9922 (is_class_die): Likewise.
9923 * edit-context.c (class line_event): Remove unused field.
9924 * graphite-sese-to-poly.c (tree_int_to_gmp): Remove
9926 * ipa-cp.c (ipa_get_vr_lat): Likewise.
9927 * lra-constraints.c (ok_for_index_p_nonstrict): Likewise.
9928 (ok_for_base_p_nonstrict): Likewise.
9929 * tree-chrec.c (is_not_constant_evolution): Likewise.
9930 (chrec_fold_poly_cst): Likewise.
9931 * tree-if-conv.c (has_pred_critical_p): Likewise.
9932 * tree-ssa-coalesce.c (print_exprs): Likewise.
9933 * tree-ssa-pre.c (bitmap_set_contains_expr): Likewise.
9934 * tree-ssa-uninit.c (is_and_or_or_p): Likewise.
9935 * tree-vrp.c (value_ranges_intersect_p): Likewise.
9936 (value_range_nonnegative_p): Likewise.
9938 2018-09-25 Martin Liska <mliska@suse.cz>
9940 * config/powerpcspe/powerpcspe.c (rs6000_output_function_epilogue):
9941 Do not handle "GNU Pascal".
9942 * config/rs6000/rs6000.c (rs6000_output_function_epilogue):
9944 * config/sparc/sparc.c (sparc_pass_by_reference): Remove Pascal
9945 from documentation. Likewise.
9946 * dbxout.c (dbxout_range_type): Likewise.
9947 * doc/cpp.texi: Likewise.
9948 * doc/extend.texi: Likewise.
9949 * doc/frontends.texi: Likewise.
9950 * doc/invoke.texi: Remove Pascal entry.
9951 * tree.def (CLEANUP_POINT_EXPR): Likewise.
9952 * doc/rtl.texi (MODE_FUNCTION): Remove not used entry.
9954 2018-09-25 Martin Liska <mliska@suse.cz>
9957 * doc/invoke.texi: Document all parameters and remove default
9960 2018-09-25 Ilya Leoshkevich <iii@linux.ibm.com>
9963 * rtl.c (rtx_code_size): Take into account that EQ_ATTR_ALT
9964 contains HOST_WIDE_INTs when computing its size.
9966 2018-09-24 Jim Wilson <jimw@sifive.com>
9969 * config/riscv/riscv.h (STACK_BOUNDARY): Test riscv_abi == ABI_ILP32E
9971 (ABI_STACK_BOUNDARY, MAX_ARGS_IN_REGISTERS): Likewise.
9973 2018-09-24 Andrew Pinski <apinski@marvell.com>
9975 * config/aarch64/aarch64.c (aarch_macro_fusion_pair_p): Don't
9976 access prev before checking it for NULLness in the
9977 AARCH64_FUSE_CMP_BRANCH case.
9979 2018-09-24 H.J. Lu <hongjiu.lu@intel.com>
9982 * config/i386/i386.c (rest_of_insert_endbranch): Set
9983 endbr_queued_at_entrance to true and don't insert ENDBR if
9984 x86_function_profiler will be called.
9985 (x86_function_profiler): Insert ENDBR if endbr_queued_at_entrance
9987 * config/i386/i386.h (machine_function): Add
9988 endbr_queued_at_entrance.
9990 2018-09-24 Ilya Leoshkevich <iii@linux.ibm.com>
9992 * genattrtab.c (mk_attr_alt): Use alternative_mask.
9993 (attr_rtx_1): Adjust caching to match the new EQ_ATTR_ALT field
9995 (check_attr_test): Use alternative_mask.
9996 (get_attr_value): Likewise.
9997 (compute_alternative_mask): Use alternative_mask and XWINT.
9998 (make_alternative_compare): Use alternative_mask.
9999 (attr_alt_subset_p): Use XWINT.
10000 (attr_alt_subset_of_compl_p): Likewise.
10001 (attr_alt_intersection): Use alternative_mask and XWINT.
10002 (attr_alt_union): Likewise.
10003 (attr_alt_complement): Use HOST_WIDE_INT and XWINT.
10004 (mk_attr_alt): Use alternative_mask and HOST_WIDE_INT.
10005 (simplify_test_exp): Use alternative_mask and XWINT.
10006 (write_test_expr): Use alternative_mask and XWINT, adjust bit
10007 number calculation to support 64 bits. Generate code that
10008 checks 64-bit masks.
10009 (main): Use alternative_mask.
10010 * rtl.def (EQ_ATTR_ALT): Change field types from ii to ww.
10012 2018-09-24 Ilya Leoshkevich <iii@linux.ibm.com>
10015 * config/s390/s390.c (s390_emit_epilogue): Do not use PARALLEL
10016 RETURN+USE when returning via %r14.
10018 2018-09-24 Martin Liska <mliska@suse.cz>
10020 * gcov.c (output_lines): Print colorization legend
10021 for both flag_use_colors and flag_use_hotness_colors.
10024 2018-09-24 Martin Liska <mliska@suse.cz>
10026 * coverage.c (get_coverage_counts): Use warning_at
10027 with current_function_decl location. Use %qD in warning
10030 2018-09-24 Martin Liska <mliska@suse.cz>
10032 * memory-block.h (memory_block_pool::release): Annotate with
10033 valgrind that the memory is not accessible.
10035 2018-09-24 Martin Liska <mliska@suse.cz>
10038 * asan.c: Make asan_handled_variables extern.
10039 * asan.h: Likewise.
10040 * cfgexpand.c (expand_stack_vars): Make sure
10041 a representative is unpoison if another
10042 variable in the partition is handled by
10043 use-after-scope sanitization.
10045 2018-09-24 Richard Biener <rguenther@suse.de>
10047 PR tree-optimization/63155
10048 * tree-ssa-propagate.c (add_ssa_edge): Avoid adding PHIs to
10049 the worklist when the edge of the respective argument isn't
10052 2018-09-23 Uros Bizjak <ubizjak@gmail.com>
10054 * config/i386/i386.h (enum reg_class): Rename MASK_REGS to
10055 ALL_MASK_REGS and MASK_EVEX_REGS to MASK_REGS.
10056 (MASK_CLASS_P): Update for rename.
10057 (MAYBE_MASK_CLASS_P): Ditto.
10058 (REG_CLASS_NAMES): Update.
10059 (REG_CLASS_CONTENT): Update.
10060 * config/i386/i386.c (regclass_map): Update for MASK_REG
10061 and ALL_MASK_REGS rename.
10062 * config/i386/constraints.md (Yk): Update for rename.
10065 2018-09-23 Uros Bizjak <ubizjak@gmail.com>
10067 * config/i386/i386.h (enum reg_class): Remove
10068 EVEX_SSE_REGS and MOD4_SSE_REGS.
10069 (REG_CLASS_NAMES): Update.
10070 (REG_CLASS_CONTENT): Update.
10071 * config/i386/i386.c (regclass_map): Declare AVX-512 SSE
10072 registers as ALL_SSE_REGS.
10073 (ix86_additional_allocno_class_p): Remove.
10074 (TARGET_ADDITIONAL_ALLOCNO_CLASS_P): Remove.
10075 (ix86_register_priority): Lower priority of EVEX SSE registers.
10076 Use IN_RANGE macro where appropriate.
10077 (ix86_hard_regno_mode_ok): Merge AVX-5124FMAPS and
10078 AVX-5124VNNIW checks.
10079 (ix86_modes_tieable_p): Tie 512-bit SSE modes.
10080 * config/i386/sse.md (avx5124fmaddps_4fmaddps)
10081 (avx5124fmaddps_4fmaddps_mask, avx5124fmaddps_4fmaddps_maskz)
10082 (avx5124fmaddps_4fmaddss, avx5124fmaddps_4fmaddss_mask)
10083 (avx5124fmaddps_4fmaddss_maskz, avx5124fmaddps_4fnmaddps)
10084 (avx5124fmaddps_4fnmaddps_mask, avx5124fmaddps_4fnmaddps_maskz)
10085 (avx5124fmaddps_4fnmaddss, avx5124fmaddps_4fnmaddss_mask)
10086 (avx5124fmaddps_4fnmaddss_maskz, avx5124vnniw_vp4dpwssd)
10087 (avx5124vnniw_vp4dpwssd_mask, avx5124vnniw_vp4dpwssd_maskz)
10088 (avx5124vnniw_vp4dpwssds, avx5124vnniw_vp4dpwssds_mask)
10089 (avx5124vnniw_vp4dpwssds_maskz): Use "v" instead of "Yh" constraint.
10090 * config/i386/constraints.md (Yh): Remove.
10092 2018-09-23 Uros Bizjak <ubizjak@gmail.com>
10094 * config/i386/i386.c (regclass_map): Declare integer REX registers
10097 2018-09-23 Gerald Pfeifer <gerald@pfeifer.com>
10099 * doc/service.texi (Service): Switch the fsf.org link to https.
10101 2018-09-22 Chung-Ju Wu <jasonwucj@gmail.com>
10104 * config/nds32/nds32.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
10105 Define to speculation_safe_value_not_needed.
10107 2018-09-21 Florian Weimer <fweimer@redhat.com>
10109 PR middle-end/81035
10110 * doc/extend.texi (Common Function Attributes): Mention that
10111 noreturn suppresses tail call optimization.
10113 2018-09-21 Jeff Law <law@redhat.com>
10115 * gimple-ssa-evrp.c (evrp_dom_walker::cleanup): Call
10116 vr_values::cleanup_edges_and_switches.
10117 * tree-vrp.c (to_remove_edges, to_update_switch_stmts): Moved into
10119 (identify_jump_threads): Remove EDGE_IGNORE handling.
10120 (execute_vrp): Move handling of to_remove_edges and
10121 to_update_switch_stmts into vr_values class member functions.
10122 * tree-vrp.h (switch_update, to_remove_edges): Remove declarations.
10123 (to_update_switch_stmts): Likewise.
10124 * vr-values.c: Include cfghooks.h.
10125 (vr_values::vr_values): Initialize to_remove_edges and
10126 to_update_switch_stmts.
10127 (vr_values::~vr_values): Verify to_remove_edges and
10128 to_update_switch_stmts are empty.
10129 (vr_values::simplify_switch_using_ranges): Set EDGE_IGNORE as needed.
10130 (vr_values::cleanup_edges_and_switches): New member function.
10131 * vr-values.h (vr_values): Add cleanup_edges_and_switches member
10132 function. Add new data members.
10134 2018-09-21 David Malcolm <dmalcolm@redhat.com>
10136 PR tree-optimization/87309
10137 * dumpfile.c (dump_context::begin_scope): Filter the dump_loc
10138 calls with pflags and alt_flags.
10139 (selftest::test_capture_of_dump_calls): Add test of interaction of
10140 MSG_OPTIMIZED_LOCATIONS with AUTO_DUMP_SCOPE.
10142 2018-09-21 Olivier Hainque <hainque@adacore.com>
10144 * config.gcc: Factorize and comment inclusion of vxworks-dummy.h.
10146 2018-09-21 Olivier Hainque <hainque@adacore.com>
10148 * config/vxworks.h (CLEAR_INSN_CACHE): #define to 1.
10150 2018-09-21 Olivier Hainque <hainque@adacore.com>
10152 * config/vxworks.h (VXWORKS_LIBGCC_SPEC): Remove -lc_internal.
10153 Merge block comment with the one ahead of VXWORKS_LIBS_RTP. Then:
10154 (VXWORKS_LIBS_RTP): Minor reordering.
10156 2018-09-21 Olivier Hainque <hainque@adacore.com>
10158 * config/vxworks.h (STARTFILE_PREFIX_SPEC): Define.
10159 (VXWORKS_LIBS_DIR_RTP): Remove definition and use.
10161 2018-09-21 Olivier Hainque <hainque@adacore.com>
10163 * config/vxworks.h (SIZE_TYPE): Account for TARGET_VXWORKS64.
10164 (PTRDIFF_TYPE): Likewise.
10166 2018-09-21 Olivier Hainque <hainque@adacore.com>
10168 * config.gcc: Enforce def of TARGET_VXWORKS64 to 1 from
10169 triplet, similar to support for VxWorks7.
10170 * config/vxworks-dummy.h: Provide a default definition
10171 of TARGET_VXWORKS64 to 0.
10173 2018-09-21 Olivier Hainque <hainque@adacore.com>
10175 * config/vxworks.h (TARGET_VXWORKS7): Move default definition ...
10176 * config/vxworks-dummy.h: here.
10178 2018-09-21 Olivier Hainque <hainque@adacore.com>
10180 * config.gcc: Prepend vxworks-dummy.h to tm_file for powerpc*
10182 2018-09-21 Shaokun Zhang <zhangshaokun@hisilicon.com>
10183 Bo Zhou <zbo.zhou@hisilicon.com>
10185 * config/aarch64/aarch64-cores.def (tsv110): New CPU.
10186 * config/aarch64/aarch64-tune.md: Regenerated.
10187 * doc/invoke.texi (AArch64 Options/-mtune): Add "tsv110".
10188 * config/aarch64/aarch64.c (tsv110_tunings): New tuning table.
10189 * config/aarch64/aarch64-cost-tables.h: Add "tsv110" extra costs.
10191 2018-09-21 Andrew Stubbs <ams@codesourcery.com>
10192 Julian Brown <julian@codesourcery.com>
10194 * builtins.c (get_builtin_sync_mem): Handle address spaces.
10196 2018-09-21 Eric Botcazou <ebotcazou@adacore.com>
10198 * config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Return false
10199 if the call takes a static chain.
10201 2018-09-21 Martin Liska <mliska@suse.cz>
10203 * auto-profile.c (autofdo_source_profile::read): Do not
10205 (read_profile): Do not add working sets.
10206 (read_autofdo_file): Remove sum_all.
10207 (afdo_callsite_hot_enough_for_early_inline): Remove const
10209 * coverage.c (struct counts_entry): Remove gcov_summary.
10210 (read_counts_file): Read new GCOV_TAG_OBJECT_SUMMARY,
10211 do not support GCOV_TAG_PROGRAM_SUMMARY.
10212 (get_coverage_counts): Remove summary and expected
10214 * coverage.h (get_coverage_counts): Likewise.
10215 * doc/gcov-dump.texi: Remove -w option.
10216 * gcov-dump.c (dump_working_sets): Remove.
10217 (main): Do not support '-w' option.
10218 (print_usage): Likewise.
10219 (tag_summary): Likewise.
10220 * gcov-io.c (gcov_write_summary): Do not dump
10222 (gcov_read_summary): Likewise.
10223 (gcov_histo_index): Remove.
10224 (gcov_histogram_merge): Likewise.
10225 (compute_working_sets): Likewise.
10226 * gcov-io.h (GCOV_TAG_OBJECT_SUMMARY): Mark
10228 (GCOV_TAG_PROGRAM_SUMMARY): Mark it obsolete.
10229 (GCOV_TAG_SUMMARY_LENGTH): Adjust.
10230 (GCOV_HISTOGRAM_SIZE): Remove.
10231 (GCOV_HISTOGRAM_BITVECTOR_SIZE): Likewise.
10232 (struct gcov_summary): Simplify rapidly just
10233 to runs and sum_max fields.
10234 (gcov_histo_index): Remove.
10235 (NUM_GCOV_WORKING_SETS): Likewise.
10236 (compute_working_sets): Likewise.
10237 * gcov-tool.c (print_overlap_usage_message): Remove
10238 trailing empty line.
10239 * gcov.c (read_count_file): Read GCOV_TAG_OBJECT_SUMMARY.
10240 (output_lines): Remove program related line.
10241 * ipa-profile.c (ipa_profile): Do not consider GCOV histogram.
10242 * lto-cgraph.c (output_profile_summary): Do not stream GCOV
10244 (input_profile_summary): Do not read it.
10245 (merge_profile_summaries): And do not merge it.
10246 (input_symtab): Do not call removed function.
10247 * modulo-sched.c (sms_schedule): Do not print sum_max.
10248 * params.def (HOT_BB_COUNT_FRACTION): Reincarnate param that was
10249 removed when histogram method was invented.
10250 (HOT_BB_COUNT_WS_PERMILLE): Mention that it's used only in LTO
10252 * postreload-gcse.c (eliminate_partially_redundant_load): Fix
10254 * predict.c (get_hot_bb_threshold): Use HOT_BB_COUNT_FRACTION
10255 and dump selected value.
10256 * profile.c (add_working_set): Remove.
10257 (get_working_sets): Likewise.
10258 (find_working_set): Likewise.
10259 (get_exec_counts): Do not work with working sets.
10260 (read_profile_edge_counts): Do not inform as sum_max is removed.
10261 (compute_branch_probabilities): Likewise.
10262 (compute_value_histograms): Remove argument for call of
10263 get_coverage_counts.
10264 * profile.h: Do not make gcov_summary const.
10266 2018-09-21 Monk Chiang <sh.chiang04@gmail.com>
10268 * config.gcc (nds32*-*-*): Set TARGET_DEFAULT_TLSDESC_TRAMPOLINE=0.
10270 2018-09-21 Eric Botcazou <ebotcazou@adacore.com>
10272 PR tree-optimization/86990
10273 * gimple-ssa-store-merging.c (imm_store_chain_info:coalesce_immediate):
10274 Check that the entire merged store group is made of constants only for
10275 overlapping stores.
10277 2018-09-20 Allan Sandfeld Jensen <allan.jensen@qt.io>
10279 * gcc.c (LINK_COMMAND_SPEC): Handle -r like -nostdlib.
10280 (VTABLE_VERIFICATION_SPEC): Likewise.
10281 (SANITIZER_EARLY_SPEC): Likewise.
10282 (SANITIZER_SPEC): Likewise.
10283 * config/darwin.h (LINK_COMMAND_SPEC): Likewise.
10284 * doc/invoke.texi (Link Options): Document -r.
10286 2018-09-20 Richard Biener <rguenther@suse.de>
10288 PR middle-end/87054
10289 * gimplify.c (gimplify_expr): Retain alignment of
10290 addressable lvalue in dereference.
10292 2018-09-20 Alexandre Oliva <aoliva@redhat.com>
10295 * configure.ac: Check for .loc is_stmt support.
10296 * configure, config.in: Rebuilt.
10297 * dwarf2out.c (dwarf2out_source_line): Skip is_stmt
10300 2018-09-20 Segher Boessenkool <segher@kernel.crashing.org>
10302 * config/rs6000/rs6000.opt (misel=no, misel=yes): Delete.
10303 * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -misel=yes and
10306 2018-09-20 Segher Boessenkool <segher@kernel.crashing.org>
10308 * config/rs6000/rs6000-opts.h (enum rs6000_vector): Delete
10310 * config/rs6000/rs6000.c (rs6000_debug_vector_unit): Delete
10313 2018-09-20 Marek Polacek <polacek@redhat.com>
10315 * doc/invoke.texi: Add -Wno-init-list-lifetime to C++ Language Options.
10317 2018-09-20 Richard Sandiford <richard.sandiford@arm.com>
10319 PR tree-optimization/87288
10320 * tree-vect-loop.c (vect_analyze_loop_2): Take PEELING_FOR_GAPS
10321 into account when determining PEELING_FOR_NITERS.
10323 2018-09-20 Richard Sandiford <richard.sandiford@arm.com>
10325 PR tree-optimization/86877
10326 * tree-vect-loop.c (vect_analyze_loop_2): Call
10327 vect_verify_datarefs_alignment.
10329 2018-09-19 Marek Polacek <polacek@redhat.com>
10331 * doc/invoke.texi: Document -Wclass-conversion.
10333 2018-09-19 John David Anglin <danglin@gcc.gnu.org>
10335 * config/pa/pa.c (pa_adjust_priority): Delete.
10336 (TARGET_SCHED_ADJUST_PRIORITY): Delete define.
10338 * config/pa/pa.md (atomic_storeqi): Restore deleted expander.
10339 (atomic_storehi): Likewise.
10340 (atomic_storesi): Likewise.
10341 (atomic_loaddi): Restore compare and swap exchange loop code.
10343 2018-09-19 Segher Boessenkool <segher@kernel.crashing.org>
10345 PR rtl-optimization/86902
10346 * combine.c (try_combine): When changing the CC mode used, don't change
10347 an unrelated mode in other_insn to that new CC mode.
10349 2018-09-19 David Malcolm <dmalcolm@redhat.com>
10351 * tree-data-ref.c (runtime_alias_check_p): Use formatted printing
10352 with %T in place of calls to dump_generic_expr.
10353 (prune_runtime_alias_test_list): Likewise.
10354 (create_runtime_alias_checks): Likewise.
10355 * tree-vect-data-refs.c (vect_check_nonzero_value): Likewise.
10356 (vect_analyze_data_ref_dependence): Likewise.
10357 (vect_slp_analyze_data_ref_dependence): Likewise.
10358 (vect_record_base_alignment): Likewise. Use %G in place of call
10359 to dump_gimple_stmt.
10360 (vect_compute_data_ref_alignment): Likewise.
10361 (verify_data_ref_alignment): Likewise.
10362 (vect_find_same_alignment_drs): Likewise.
10363 (vect_analyze_group_access_1): Likewise.
10364 (vect_analyze_data_ref_accesses): Likewise.
10365 (dependence_distance_ge_vf): Likewise.
10366 (dump_lower_bound): Likewise.
10367 (vect_prune_runtime_alias_test_list): Likewise.
10368 (vect_find_stmt_data_reference): Likewise.
10369 (vect_analyze_data_refs): Likewise.
10370 (vect_create_addr_base_for_vector_ref): Likewise.
10371 (vect_create_data_ref_ptr): Likewise.
10372 * tree-vect-loop-manip.c (vect_set_loop_condition): Likewise.
10373 (vect_can_advance_ivs_p): Likewise.
10374 (vect_update_ivs_after_vectorizer): Likewise.
10375 (vect_gen_prolog_loop_niters): Likewise.
10376 (vect_prepare_for_masked_peels): Likewise.
10377 * tree-vect-loop.c (vect_determine_vf_for_stmt): Likewise.
10378 (vect_determine_vectorization_factor): Likewise.
10379 (vect_is_simple_iv_evolution): Likewise.
10380 (vect_analyze_scalar_cycles_1): Likewise.
10381 (vect_analyze_loop_operations): Likewise.
10382 (report_vect_op): Likewise.
10383 (vect_is_slp_reduction): Likewise.
10384 (check_reduction_path): Likewise.
10385 (vect_is_simple_reduction): Likewise.
10386 (vect_create_epilog_for_reduction): Likewise.
10387 (vect_finalize_reduction:): Likewise.
10388 (vectorizable_induction): Likewise.
10389 (vect_transform_loop_stmt): Likewise.
10390 (vect_transform_loop): Likewise.
10391 (optimize_mask_stores): Likewise.
10392 * tree-vect-patterns.c (vect_pattern_detected): Likewise.
10393 (vect_split_statement): Likewise.
10394 (vect_recog_over_widening_pattern): Likewise.
10395 (vect_recog_average_pattern): Likewise.
10396 (vect_determine_min_output_precision_1): Likewise.
10397 (vect_determine_precisions_from_range): Likewise.
10398 (vect_determine_precisions_from_users): Likewise.
10399 (vect_mark_pattern_stmts): Likewise.
10400 (vect_pattern_recog_1): Likewise.
10401 * tree-vect-slp.c (vect_get_and_check_slp_defs): Likewise.
10402 (vect_record_max_nunits): Likewise.
10403 (vect_build_slp_tree_1): Likewise.
10404 (vect_build_slp_tree_2): Likewise.
10405 (vect_print_slp_tree): Likewise.
10406 (vect_analyze_slp_instance): Likewise.
10407 (vect_detect_hybrid_slp_stmts): Likewise.
10408 (vect_detect_hybrid_slp_1): Likewise.
10409 (vect_slp_analyze_operations): Likewise.
10410 (vect_slp_analyze_bb_1): Likewise.
10411 (vect_transform_slp_perm_load): Likewise.
10412 (vect_schedule_slp_instance): Likewise.
10413 * tree-vect-stmts.c (vect_mark_relevant): Likewise.
10414 (vect_mark_stmts_to_be_vectorized): Likewise.
10415 (vect_init_vector_1): Likewise.
10416 (vect_get_vec_def_for_operand): Likewise.
10417 (vect_finish_stmt_generation_1): Likewise.
10418 (vect_check_load_store_mask): Likewise.
10419 (vectorizable_call): Likewise.
10420 (vectorizable_conversion): Likewise.
10421 (vectorizable_operation): Likewise.
10422 (vectorizable_load): Likewise.
10423 (vect_analyze_stmt): Likewise.
10424 (vect_is_simple_use): Likewise.
10425 (vect_get_vector_types_for_stmt): Likewise.
10426 (vect_get_mask_type_for_stmt): Likewise.
10427 * tree-vectorizer.c (increase_alignment): Likewise.
10429 2018-09-19 Andrew Stubbs <ams@codesourcery.com>
10431 * doc/rtl.texi: Adjust vec_select description.
10432 * simplify-rtx.c (simplify_binary_operation_1): Allow VEC_SELECT to use
10433 non-constant selectors.
10435 2018-09-19 Matthew Malcomson <matthew.malcomson@arm.com>
10437 * config/aarch64/aarch64-protos.h
10438 (aarch64_offset_9bit_signed_unscaled_p): New declaration.
10439 * config/aarch64/aarch64.md (arches): New "rcpc8_4" attribute value.
10440 (arch_enabled): Add check for "rcpc8_4" attribute value of "arch".
10441 * config/aarch64/aarch64.h (AARCH64_FL_RCPC8_4): New bitfield.
10442 (AARCH64_FL_FOR_ARCH8_4): Include AARCH64_FL_RCPC8_4.
10443 (AARCH64_FL_PROFILE): Move index so flags are ordered.
10444 (AARCH64_ISA_RCPC8_4): New flag.
10445 * config/aarch64/aarch64.c (offset_9bit_signed_unscaled_p): Renamed
10446 to aarch64_offset_9bit_signed_unscaled_p.
10447 * config/aarch64/atomics.md (atomic_store<mode>): Allow offset
10449 * config/aarch64/constraints.md (Ust): New constraint.
10450 * config/aarch64/predicates.md.
10451 (aarch64_9bit_offset_memory_operand): New predicate.
10452 (aarch64_rcpc_memory_operand): New predicate.
10454 2018-09-19 Eric Botcazou <ebotcazou@adacore.com>
10456 PR rtl-optimization/87361
10457 * rtlanal.c (nonzero_bits1): Revert accidental change.
10459 2018-09-19 Richard Biener <rguenther@suse.de>
10461 PR tree-optimization/87349
10462 PR tree-optimization/87342
10463 * tree-ssa-sccvn.c (do_rpo_vn): Iterate max_rpo computation.
10465 2018-09-18 Marek Polacek <polacek@redhat.com>
10467 P1064R0 - Allowing Virtual Function Calls in Constant Expressions
10468 * gimple-fold.c (gimple_get_virt_method_for_vtable): Adjust assert.
10470 2018-09-18 Segher Boessenkool <segher@kernel.crashing.org>
10472 * config/rs6000/rs6000.md: Remove old "Cygnus sibcall" comment.
10474 2018-09-18 Segher Boessenkool <segher@kernel.crashing.org>
10476 PR rtl-optimization/86882
10477 * rtlanal.c (reg_overlap_mentioned_p): Handle CLOBBER.
10479 2018-09-18 Uros Bizjak <ubizjak@gmail.com>
10481 * config/i386/i386.md (*<code>extend<mode>xf2): Macroize insn from
10482 *<code>extendsfxf2 and *<code>extenddfxf2 using MODEF mode iterator.
10484 2018-09-18 Jonathan Wakely <jwakely@redhat.com>
10487 * doc/invoke.texi (Link Options): Fix formatting and grammar.
10489 2018-09-18 Richard Biener <rguenther@suse.de>
10491 PR middle-end/63155
10492 * tree-ssa-coalesce.c (tree_int_map_hasher): Remove.
10493 (compute_samebase_partition_bases): Likewise.
10494 (coalesce_ssa_name): Always use compute_optimized_partition_bases.
10495 (gimple_can_coalesce_p): Simplify.
10497 2018-09-18 Hans-Peter Nilsson <hp@bitrange.com>
10499 Handle a library implementation of ffs calling __builtin_ffs.
10500 * config/mmix/mmix.c (TARGET_INIT_LIBFUNCS): Override with...
10501 (mmix_init_libfuncs): New function: make __builtin_ffs expand
10504 2018-09-17 David Malcolm <dmalcolm@redhat.com>
10506 * diagnostic-show-locus.c (class layout_range): Add field
10508 (layout_range::layout_range): Add "original_idx" param and use it
10509 to initialize new field.
10510 (make_range): Use 0 for original_idx.
10511 (layout::layout): Pass in index to calls to
10512 maybe_add_location_range.
10513 (layout::maybe_add_location_range): Add param "original_idx" and
10514 pass it on to layout_range.
10515 (layout::print_any_labels): Pass on range->m_original_idx to
10517 (gcc_rich_location::add_location_if_nearby): Use 0 for
10519 * gcc-rich-location.h (text_range_label::get_text): Update for new
10521 (range_label_for_type_mismatch::get_text): Likewise.
10523 2018-09-17 Uros Bizjak <ubizjak@gmail.com>
10525 * config/i386/i386.c (ix86_emit_i387_log1p): Emit fldln2 earlier.
10527 2018-09-17 David Malcolm <dmalcolm@redhat.com>
10529 * gimple-ssa-sprintf.c (fmtwarn): Update for introduction of
10530 format_string_diagnostic_t.
10531 (fmtwarn_n): Likewise.
10532 * substring-locations.c
10533 (format_string_diagnostic_t::format_string_diagnostic_t) New ctor.
10534 (format_warning_n_va): Convert to...
10535 (format_string_diagnostic_t::emit_warning_n_va): ...this.
10536 (format_warning_va): Convert to...
10537 (format_string_diagnostic_t::emit_warning_va): ...this.
10538 (format_warning_at_substring): Convert to...
10539 (format_string_diagnostic_t::emit_warning): ...this.
10540 (format_warning_at_substring_n): Convert to...
10541 (format_string_diagnostic_t::emit_warning_n): ...this.
10542 * substring-locations.h (class format_string_diagnostic_t): New
10544 (format_warning_va): Convert to
10545 format_string_diagnostic_t::emit_warning_va.
10546 (format_warning_n_va): Convert to
10547 format_string_diagnostic_t::emit_warning_n_va.
10548 (format_warning_at_substring): Convert to
10549 format_string_diagnostic_t::emit_warning.
10550 (format_warning_at_substring_n): Convert to
10551 format_string_diagnostic_t::emit_warning_n.
10553 2018-09-17 Cesar Philippidis <cesar@codesourcery.com>
10554 Bernd Schmidt <bernds_cb1@t-online.de>
10556 * config/nvptx/nvptx.md (atomic_fetch_<logic><mode>): Enable with
10559 2018-09-17 Uros Bizjak <ubizjak@gmail.com>
10561 * config/i386/i386.md (truncxf<mode>2_i387_noop_unspec): Change
10562 operand 0 predicate to nonimmediate operand.
10563 (rint<mode>2_frndint): Remove insn pattern.
10564 (rint<mode>2): Change operand 1 predicate to general_operand.
10565 Extend operand 1 to XFmode and generate rintxf2 insn.
10566 (frndintxf2_<rounding>): Rename from frndint<mode>2_<rounding>.
10567 Do not use X87MODEF mode macro.
10568 (frndintxf2_<rounding>_i387): Rename from
10569 frndint<mode>2_<rounding>_i387. Do not use X87MODEF mode macro.
10570 (<rounding_insn><mode>2): For non-SSE modes, extend operand 1
10571 to XFmode and generate significandxf3 insn.
10573 2018-09-17 Richard Biener <rguenther@suse.de>
10575 PR tree-optimization/87328
10576 * tree-ssa-sccvn.c (process_bb): Remove assertion about not
10577 visiting unexecutable backedges when not iterating.
10578 (do_rpo_vn): Mark all edges not executable even when not
10581 2018-09-17 Martin Jambor <mjambor@suse.cz>
10584 * doc/invoke.texi (Warning Options): Likewise.
10586 2018-09-17 Richard Biener <rguenther@suse.de>
10588 PR tree-optimization/87301
10589 * tree-ssa-sccvn.c (eliminate_dom_walker::eliminate_cleanup): Properly
10590 clean EH info from leftover copy assignments.
10592 2018-09-17 Martin Liska <mliska@suse.cz>
10594 PR gcov-profile/85871
10595 * gcov.c (output_intermediate_file): Fix out of bounds
10598 2018-09-17 Vineet Gupta <vgupta@synopsys.com>
10600 * config/arc/arc.c: Object attributes for core4 not reflected
10602 * config/arc/arc.h: Don't restrict DBNZ to core3 (core4 includes
10605 2018-09-17 Alexey Brodkin <abrodkin@synopsys.com>
10607 * config/arc/linux.h (LINK_EH_SPEC): Add missing space.
10609 2018-09-17 Martin Liska <mliska@suse.cz>
10611 * doc/gcov.texi: Document new option --use-hotness-colors.
10612 * gcov.c (struct source_info): Declare new field.
10613 (source_info::source_info): Set default for maximum_count.
10614 (print_usage): Add new -q option.
10615 (process_args): Process it.
10616 (accumulate_line_info): Save src->maximum_count.
10617 (output_line_beginning): Make color line number if
10618 flag_use_hotness_colors is set.
10619 (output_line_details): Pass default argument value.
10620 (output_lines): Pass src->maximum_count.
10622 2018-09-17 Martin Liska <mliska@suse.cz>
10624 * common/config/i386/i386-common.c (ix86_get_valid_option_values):
10625 Use processor_names table.
10626 * config/i386/i386.c (ix86_default_align): Use
10627 processor_cost_table for alignment values.
10628 (ix86_option_override_internal): Use processor_names.
10629 (ix86_function_specific_print): Likewise.
10630 * config/i386/i386.h (struct processor_costs):
10631 Add alignment values.
10632 (struct ptt): Remove and replace with const char *.
10633 * config/i386/x86-tune-costs.h (struct processor_costs):
10634 Declare default alignments for all costs.
10636 2018-09-17 Aldy Hernandez <aldyh@redhat.com>
10638 * tree-vrp.c (extract_range_from_unary_expr): Do not special case
10639 symbolics or VR_VARYING ranges for ABS_EXPR.
10640 * wide-int-range.cc (wide_int_range_abs): Return positive numbers
10641 when range will wrap.
10643 2018-09-15 Eric Botcazou <ebotcazou@adacore.com>
10645 PR middle-end/86864
10646 * cfgexpand.c (expand_gimple_basic_block): Be prepared for a BARRIER
10647 before and after a JUMP_TABLE_DATA.
10649 2018-09-14 John David Anglin <danglin@gcc.gnu.org>
10651 PR middle-end/87188
10652 * dojump.c (do_compare_and_jump): Canonicalize function pointers
10653 when one operand is a function pointer. Use POINTER_TYPE_P and
10654 FUNC_OR_METHOD_TYPE_P.
10655 * expr.c (do_store_flag): Use POINTER_TYPE_P and FUNC_OR_METHOD_TYPE_P.
10656 * fold-const.c (build_range_check): Likewise.
10657 * match.pd (simple_comparison): Likewise.
10659 2018-09-14 David Malcolm <dmalcolm@redhat.com>
10662 * spellcheck.c (get_edit_distance_cutoff): New function.
10663 (selftest::test_edit_distance_unit_test_oneway): Rename to...
10664 (selftest::test_get_edit_distance_one_way): ...this.
10665 (selftest::test_get_edit_distance_unit): Rename to...
10666 (selftest::test_get_edit_distance_both_ways): ...this.
10667 (selftest::test_edit_distances): Move tests to this new function,
10668 and test some more pairs of strings. Update for above renaming.
10669 (selftest::get_old_cutoff): New function.
10670 (selftest::test_get_edit_distance_cutoff): New function.
10671 (selftest::assert_suggested_for): New function.
10672 (ASSERT_SUGGESTED_FOR): New macro.
10673 (selftest::assert_not_suggested_for): New function.
10674 (ASSERT_NOT_SUGGESTED_FOR): New macro.
10675 (selftest::test_suggestions): New function.
10676 (selftest::spellcheck_c_tests): Move test_get_edit_distance_unit
10677 tests to selftest::test_edit_distances and call it. Add calls to
10678 selftest::test_get_edit_distance_cutoff and
10679 selftest::test_suggestions.
10680 * spellcheck.h (get_edit_distance_cutoff): New function declaration.
10681 (best_match::consider): Replace hard-coded cutoff calculation with
10683 (best_match::get_cutoff): New declaration.
10684 (best_match::get_best_meaningful_candidate): Likewise.
10686 2018-09-14 Bernd Edlinger <bernd.edlinger@hotmail.de>
10688 * builtins.c (fold_builtin_strlen): Remove TODO comment.
10690 2018-09-14 Bernd Edlinger <bernd.edlinger@hotmail.de>
10693 2018-07-30 Bernd Edlinger <bernd.edlinger@hotmail.de>
10695 * tree-ssa-forwprop.c (simplify_builtin_call): Don't create a not NUL
10696 terminated string literal.
10698 2018-09-14 Martin Sebor <msebor@redhat.com>
10700 * builtins.c (unterminated_array): Handle ARRAY_REF.
10701 (expand_builtin_stpcpy_1): Detect unterminated char arrays.
10702 * builtins.h (unterminated_array): Declare extern.
10703 * gimple-fold.c (gimple_fold_builtin_stpcpy): Detect unterminated
10705 (gimple_fold_builtin_sprintf): Propagate NO_WARNING to transformed
10708 2018-09-14 Martin Sebor <msebor@redhat.com>
10709 Jeff Law <law@redhat.com>
10711 * builtins.c (unterminated_array): New.
10712 (expand_builtin_strcpy): Adjust.
10713 (expand_builtin_strcpy_args): Detect unterminated arrays.
10714 * gimple-fold.c (get_maxval_strlen): Add argument. Detect
10715 unterminated arrays.
10716 * gimple-fold.h (get_maxval_strlen): Add argument.
10717 (gimple_fold_builtin_strcpy): Detec unterminated arrays.
10719 * gimple-fold.c (get_range_strlen): Add argument.
10720 (get_maxval_strlen): Adjust.
10721 * gimple-fold.h (get_range_strlen): Add argument.
10723 2018-09-14 Wei Xiao <wei3.xiao@intel.com>
10725 * config/i386/movdirintrin.h: Fix copyright year.
10727 2018-09-14 Uros Bizjak <ubizjak@gmail.com>
10729 * reg-stack.c: Include regs.h.
10730 (replace_reg): Assert that mode is MODE_FLOAT or MODE_COMPLEX_FLOAT.
10731 (emit_pop_insn): Default pop insn mode to the reg_raw_mode of
10732 FIRST_STACK_REG, not DFmode.
10733 (emit_swap_insn): Default swap insn mode to the reg_raw_mode of
10734 FIRST_STACK_REG, not XFmode. Explicitly construct swap RTX.
10735 (change stack): Default register mode to the reg_raw_mode of
10736 FIRST_STACK_REG, not DFmode.
10737 * config/i386/i386.md (*swap<mode>): Remove insn pattern.
10738 (*swapxf): Rename from swapxf.
10740 2018-09-14 Carl Love <cel@us.ibm.com>
10742 * config/rs6000/emmintrin.h: Add _MM_SHUFFLE2.
10743 * config/rs6000/xmmintrin.h: Add _MM_SHUFFLE.
10745 2018-09-14 Segher Boessenkool <segher@kernel.crashing.org>
10748 * config/rs6000/rs6000.md (*mov<mode>_hardfloat64): Add Z to the Y
10751 2018-09-14 Sam Tebbs <sam.tebbs@arm.com>
10754 * config/aarch64/aarch64.md (*aarch64_bfxilsi_uxtw): Define.
10756 2018-09-14 Jason Merrill <jason@redhat.com>
10758 Fix --enable-gather-detailed-mem-stats.
10759 * hash-table.c (hash_table_usage): Change from variable to function.
10760 * hash-table.h: Adjust.
10761 * Makefile.in: Add missing dependencies on hash-table.h.
10763 2018-09-14 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10765 PR tree-optimization/87259
10767 (pass_cse_reciprocals::execute): Run optimize_recip_sqrt after
10768 execute_cse_reciprocals_1 has tried transforming.
10770 2018-09-14 Aldy Hernandez <aldyh@redhat.com>
10772 * tree-vrp.c (extract_range_from_binary_expr_1): Normalize
10773 VR_VARYING for PLUS/MINUS_EXPR.
10775 2018-09-14 Ilya Leoshkevich <iii@linux.ibm.com>
10777 * config/s390/s390-passes.def (INSERT_PASS_BEFORE): Improve
10780 2018-09-14 Richard Biener <rguenther@suse.de>
10782 PR middle-end/63155
10783 * tree-ssa-coalesce.c (ssa_conflicts_merge): Remove conflict
10784 bits for the merged partition.
10786 2018-09-13 Martin Sebor <msebor@redhat.com>
10787 Bernd Edlinger <bernd.edlinger@hotmail.de>
10789 * builtins.h (c_srlen): Add argument.
10790 * builtins.c (warn_string_no_nul): New function.
10791 (c_strlen): Add argument and use it. Update recursive calls.
10792 Pass DECL argument to string_constant to get info on non
10793 terminated strings. Update *NONSTR as needed.
10794 (fold_builtin_strlen): Add argument to calls to c_strlen.
10795 Warn for unterminated arrays.
10796 (warn_string_no_null): Add prototype.
10797 * expr.c (string_constant): Update arguments. Update recursive
10798 calls appropriately. Detect missing NUL terminator and outermost
10799 declaration its missing in.
10800 Improve checks for arrays with nonzero lower bound or elements
10801 that are not a single byte. Simplify offset computation.
10802 Simplify checks for non-NUL terminated strings.
10803 * gimple-fold.c (get_range_strlen): Add argument to c_strlen call.
10804 * gimple-ssa-sprintf.c (get_string_length): Remove unnecessary code.
10806 2018-09-13 Bernd Edlinger <bernd.edlinger@hotmail.de>
10808 * builtins.c (c_strlen): Handle not zero terminated STRING_CSTs
10810 * fold-const.c (c_getstr): Fix function comment. Remove unused third
10811 argument. Fix range checks.
10812 * fold-const.h (c_getstr): Adjust protoype.
10813 * gimple-fold.c (gimple_fold_builtin_memory_op): Avoid folding when
10814 string is constant but contains no NUL byte.
10816 * expr.c (string_constant): Adjust function comment.
10817 Remove bogus check for zero termination.
10819 * fold-const.c (c_getstr): Clamp STRING_LENGTH to STRING_SIZE.
10821 * varasm.c (compare_constant): Compare type size of STRING_CSTs.
10822 (get_constant_size): Don't make STRING_CSTs larger than they are.
10823 (check_string_literal): New check function for STRING_CSTs.
10824 (output_constant): Use it.
10826 2018-09-13 Eric Botcazou <ebotcazou@adacore.com>
10829 * config/visium/visium.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Define.
10831 2018-09-13 Richard Biener <rguenther@suse.de>
10833 PR tree-optimization/87263
10834 * tree-ssa-sccvn.c (visit_phi): Revert some earlier changes.
10835 (struct unwind_state): Add max_rpo field.
10836 (do_rpo_vn): Allow up-to-date loop state to be used when not iterating.
10837 Compute max_rpo, the max RPO number a block can be backwards reached
10838 from. Re-write non-iterating mode to a RPO ordered worklist approach,
10839 separating it from the iterating mode.
10841 2018-09-13 Vlad Lazar <vlad.lazar@arm.com>
10843 * haifa-sched.c (rank_for_schedule): Schedule by INSN_COST.
10844 (rfs_decision): New scheduling decision.
10846 2018-09-13 Richard Biener <rguenther@suse.de>
10849 * tree-ssa-sccvn.c (vn_nary_op_insert_into): Fix assert.
10850 (vn_nary_op_insert_pieces_predicated): Do not write useless
10851 valid_dominated_by_p entry outside of the allocated storage.
10853 2018-09-13 Omar Sandoval <osandov@osandov.com>
10854 Tom de Vries <tdevries@suse.de>
10857 * dwarf2out.c (is_c): New function.
10858 (add_subscript_info): Add DW_AT_count of 0 for C zero-length arrays.
10860 2018-09-13 Sam Tebbs <sam.tebbs@arm.com>
10863 * config/aarch64/aarch64.md (*aarch64_bfxil):
10865 * config/aarch64/constraints.md (Ulc): Define.
10866 * config/aarch64/aarch64-protos.h (aarch64_high_bits_all_ones_p):
10868 * config/aarch64/aarch64.c (aarch64_high_bits_all_ones_p):
10871 2018-09-13 Vlad Lazar <vlad.lazar@arm.com>
10873 * config/aarch64/aarch64.h (TARGET_COMPUTE_FRAME_LAYOUT): Define.
10874 * config/aarch64/aarch64.c (aarch64_expand_prologue): Remove
10875 aarch64_layout_frame call.
10876 (aarch64_expand_epilogue): Likewise.
10877 (aarch64_initial_elimination_offset): Likewise.
10878 (aarch64_get_separate_components): Likewise.
10879 (aarch64_use_return_insn_p): Likewise.
10880 (aarch64_layout_frame): Remove unneeded check.
10882 2018-09-13 Jakub Jelinek <jakub@redhat.com>
10884 * configure.ac: Only append
10885 " : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS" to
10886 gcc_config_arguments if it was never reconfigured or last reconfigure
10887 was with different arguments.
10888 * configure: Regenerated.
10890 2018-09-13 Jakub Jelinek <jakub@redhat.com>
10891 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10893 PR middle-end/87290
10894 * expr.c (maybe_optimize_pow2p_mod_cmp): New function.
10895 (maybe_optimize_mod_cmp): Use it if integer_pow2p treeop1.
10897 2018-09-13 Jakub Jelinek <jakub@redhat.com>
10899 PR tree-optimization/87287
10900 * fold-const.c (fold_binary_loc) <case EQ_EXPR>: Move signed modulo
10901 X % C == 0 to X % (unsigned) C == 0 optimization to ...
10902 * match.pd (X % C == 0): ... here. New optimization.
10904 2018-09-12 Jakub Jelinek <jakub@redhat.com>
10906 PR middle-end/82853
10907 * expr.h (maybe_optimize_mod_cmp): Declare.
10908 * expr.c (mod_inv): New function.
10909 (maybe_optimize_mod_cmp): New function.
10910 (do_store_flag): Use it.
10911 * cfgexpand.c (expand_gimple_cond): Likewise.
10913 2018-09-09 Cesar Philippidis <cesar@codesourcery.com>
10914 Julian Brown <julian@codesourcery.com>
10916 PR middle-end/86336
10917 * gimplify.c (gimplify_scan_omp_clauses): Set
10918 target_firstprivatize_array_bases in OpenACC parallel and kernels
10919 region contexts. Remove GOMP_MAP_FIRSTPRIVATE_REFERENCE clauses from
10920 OpenACC data regions.
10922 2018-09-12 Uros Bizjak <ubizjak@gmail.com>
10924 * config/i386/i386.md (sqrt_extend<mode>xf3_i387): Remove.
10925 (sqrt<mode>2): Extend operand 1 to XFmode and generate sqrtxf3 insn.
10927 2018-09-12 Richard Biener <rguenther@suse.de>
10929 PR tree-optimization/87280
10930 * tree-ssa-sccvn.c (process_bb): Handle the case of executable
10931 edge but unreachable target.
10932 (do_rpo_vn): For conservatively handling a PHI only mark
10933 the backedge executable but not the block reachable.
10935 2018-09-12 Richard Biener <rguenther@suse.de>
10937 PR tree-optimization/87266
10938 * tree-ssa-sccvn.c (do_rpo_vn): Always iterate to not yet
10941 2018-09-12 Andreas Krebbel <krebbel@linux.ibm.com>
10943 * config/s390/s390.md (PFPO_RND_MODE_DFP, PFPO_RND_MODE_BFP): New
10945 ("trunc<BFP:mode><DFP_ALL:mode>2")
10946 ("trunc<DFP_ALL:mode><BFP:mode>2")
10947 ("extend<BFP:mode><DFP_ALL:mode>2")
10948 ("extend<DFP_ALL:mode><BFP:mode>2"): Set proper rounding mode
10949 according to the target operand type.
10951 2018-09-12 Jakub Jelinek <jakub@redhat.com>
10952 Andreas Krebbel <krebbel@linux.ibm.com>
10954 PR tree-optimization/86844
10955 * gimple-ssa-store-merging.c
10956 (imm_store_chain_info::coalesce_immediate): For overlapping stores, if
10957 there are any overlapping stores in between them, make sure they are
10958 also coalesced or we give up completely.
10960 2018-09-12 Jakub Jelinek <jakub@redhat.com>
10962 PR middle-end/87248
10963 * fold-const.c (fold_ternary_loc) <case COND_EXPR>: Verify also that
10964 BIT_AND_EXPR's second operand is a power of two. Formatting fix.
10966 2018-09-12 Tom de Vries <tdevries@suse.de>
10968 * common.opt (gdescribe-dies): Add option.
10969 * dwarf2out.c (add_name_and_src_coords_attributes): Add description
10970 attribute for artifical and nameless decls.
10971 (dwarf2out_register_external_die): Add description attribute to
10972 external reference die.
10973 (add_desc_attribute): New functions.
10974 (gen_subprogram_die): Add description attribute to
10975 DW_TAG_call_site_parameter.
10976 * tree-pretty-print.c (print_generic_expr_to_str): New function.
10977 * tree-pretty-print.h (print_generic_expr_to_str): Declare.
10978 * doc/invoke.texi (@item Debugging Options): Add -gdescribe-dies and
10979 -gno-describe-dies.
10980 (@item -gdescribe-dies): Add.
10982 2018-09-12 Aldy Hernandez <aldyh@redhat.com>
10984 * tree-vrp.c (vrp_shift_undefined_p): Remove.
10985 (extract_range_from_binary_expr_1: Call
10986 wide_int_range_shift_undefined_p instead of vrp_shift_undefined_p.
10987 * wide-int-range.h (wide_int_range_shift_undefined_p): Do not
10990 2018-09-12 Aldy Hernandez <aldyh@redhat.com>
10992 * gimple-ssa-warn-alloca.c
10993 (alloca_type_and_limit::alloca_type_and_limit): Initialize limit
10994 field for ALLOCA_BOUND_*_LARGE.
10996 2018-09-11 Nathan Sidwell <nathan@acm.org>
10998 * gcc.c (load_specs, execute, run_attempt): Use %qs not '%s'.
11000 2018-09-11 Uros Bizjak <ubizjak@gmail.com>
11002 * reg-stack.c (subst_asm_stack_regs): Call replace_reg also
11003 for clobbers. Remove obsolete comment.
11005 2018-09-11 Uros Bizjak <ubizjak@gmail.com>
11007 * config/i386/i386.md (define_attr "type"): Remove mpxmov, mpxmk,
11008 mpxchk, mpxld and mpxst types.
11009 (define_attr length_immediate): Remove all processing of mpx types.
11010 (define_attr prefix_0f): Ditto.
11011 (define_attr memory): Ditto.
11013 2018-09-11 Uros Bizjak <ubizjak@gmail.com>
11015 * config/i386/i386.md (fyl2x_extend<mode>xf3_i387): Remove.
11016 (log<mode>2): Change operand 1 predicate to general_operand.
11017 Extend operand 1 to XFmode and generate logxf3 insn.
11018 (log10<mode>2): Change operand 1 predicate to general_operand.
11019 Extend operand 1 to XFmode and generate log10xf3 insn.
11020 (log2<mode>2): Change operand 1 predicate to general_operand.
11021 Extend operand 1 to XFmode and generate log2xf3 insn.
11022 (fyl2xp1_extend<mode>xf3_i387): Remove.
11023 (log1p<mode>2): Change operand 1 predicate to general_operand.
11024 Extend operand 1 to XFmode and generate log1pxf3 insn.
11025 (fxtract_extend<mode>xf3_i387): Remove.
11026 (logb<mode>2): Change operand 1 predicate to general_operand.
11027 Extend operand 1 to XFmode and generate logbxf3 insn.
11028 (ilogb<mode>2): Change operand 1 predicate to general_operand.
11029 Extend operand 1 to XFmode and generate fxtractxf3_i387 insn.
11030 (significand<mode>2): Change operand 1 predicate to general_operand.
11031 Extend operand 1 to XFmode and generate significandxf3 insn.
11033 2018-09-11 Nathan Sidwell <nathan@acm.org>
11035 * gcc.c (perror_with_name, pfatal_with_name): Delete.
11036 (load_specs): Use fatal_error.
11037 (DELETE_IF_ORDINARY, process_command): Use error.
11038 (execute, run_attempt): Use fatal_error.
11040 2018-09-11 Andrew Stubbs <ams@codesourcery.com>
11042 * diagnostic-core.h (sorry_at): New prototype.
11043 * diagnostic.c (sorry_at): New function.
11045 2018-09-11 Aldy Hernandez <aldyh@redhat.com>
11047 * tree-vrp.c (extract_range_from_binary_expr_1): Treat all divisions
11048 by zero as VR_UNDEFINED.
11050 2018-09-10 Uros Bizjak <ubizjak@gmail.com>
11052 * config/i386/i386.md (<sincos>xf2): Rename from *<sincos>xf2_i387.
11053 (*<sincos>_extend<mode>xf2_i387): Remove insn pattern.
11054 (<sincos>mode2): New expander.
11055 (sincos_extend<mode>xf3_i387): Remove insn pattern.
11056 (sincos -> sin, cos splitters): Remove splitter patterns.
11057 (sincos<mode>3): Change operand 2 predicate to general_operand.
11058 Extend operand 2 to XFmode and generate sincosxf3 insn.
11059 (fptanxf4_i387): Change mode of operands 0 and 3 to SFmode.
11060 Change operand 3 predicate to const1_operand.
11061 (fptan_extend<mode>xf4_i387): Remove insn pattern.
11062 (tanxf2): Update operands in the call to fptanxf4_i387.
11063 (tan<mode>2): Change operand 1 predicate to general_operand.
11064 Extend operand 1 to XFmode and generate tanxf3 insn.
11065 (atan2xf3): Rename from *fpatanxf3_i387.
11066 (fpatan_extend<mode>xf3_i387): Remove insn pattern.
11067 (atan2xf3): Remove expander.
11068 (atan2<mode<3): Change operand 1 and 2 predicates to general_operand.
11069 Extend operands 1 and 2 to XFmode and generate atan2xf3 insn.
11070 (atan<mode>2): Change operand 1 predicate to general_operand.
11071 Extend operand 1 to XFmode and generate atanxf3 insn.
11073 2018-09-10 Uros Bizjak <ubizjak@gmail.com>
11075 * config/i386/i386.md (x87/SSE constant load splitter): Use
11076 memory_operand instead of nonimmediate_operand for input operand
11079 2018-09-09 Uros Bizjak <ubizjak@gmail.com>
11081 * config/i386/i386.md (float partial SSE register stall splitter): Move
11082 splitter near its instruction pattern.
11083 (float_extend partial SSE register stall splitter): Ditto.
11084 (float_truncate partial SSE register stall splitter): Ditto.
11086 2018-09-09 Hans-Peter Nilsson <hp@bitrange.com>
11089 * config/mmix/mmix.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Redefine
11090 to speculation_safe_value_not_needed.
11093 * config/mmix/mmix.c (mmix_assemble_integer): Handle byte-size
11094 non-CONST_INT rtx:es using assemble_integer_with_op ".byte".
11095 (MMIX_CFUN_NEEDS_SAVED_EH_RETURN_ADDRESS): Don't call
11096 leaf_function_p, instead use has_hard_reg_initial_val.
11098 2018-09-09 Nathan Sidwell <nathan@acm.org>
11100 * gcc.h (pfatal_with_name): Don't declare here.
11101 * gcc.c (pfatal_with_name): Make static.
11103 2018-09-09 Xianmiao Qu <xianmiao_qu@c-sky.com>
11105 * config/csky/csky.md (*cskyv2_adddi3, *cskyv2_subdi3): Add
11108 2018-09-08 John David Anglin <danglin@gcc.gnu.org>
11110 PR rtl-optimization/85458
11111 * sel-sched.c (sel_target_adjust_priority): Allow backend adjust
11112 priority hook to reduce the priority of EXPR.
11114 2018-09-07 Uros Bizjak <ubizjak@gmail.com>
11116 * config/i386/i386.md (float<SWI48x:mode><MODEF:mode>2) Enable
11117 DImode for x87 on 32bit targets. Conditionally disable x87 modes
11118 with X87_ENABLE_FLOAT. Remove preparation code.
11119 (*float<SWI48:mode><MODEF:mode>2): Rename from
11120 *float<SWI48:mode><MODEF:mode>2_mixed. Handle x87, SSE and mixed
11121 math using "enabled" attribute.
11122 (*floatdi<MODEF:mode>2_i387): Rename from
11123 *float<SWI48x:mode><MODEF:mode>2_i387. Handle only DImode and
11124 enable for 32bit targets only.
11125 (floatdi<X87MODEF:mode>2_i387_with_xmm pre-reload splitter): New
11127 (floatdi<X87MODEF:mode>2_i387_with_xmm): Use register_operand
11128 as operand 1 predicate. Rewrite as define_insn_and_split.
11129 (floatdi<X87MODEF:mode>2_i387_with_xmm memory input splitter): Remove.
11131 2018-09-06 Uros Bizjak <ubizjak@gmail.com>
11133 * reg-stack.c (get_true_reg) <case FLOAT_TRUNCATE>: Reorder
11134 to fallthru to FLOAT case.
11136 2018-09-06 Will Schmidt <will_schmidt@vnet.ibm.com>
11139 * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Update logic
11140 around folding of vec_sl to handle out of range shift values.
11142 2018-09-06 Uros Bizjak <ubizjak@gmail.com>
11144 * config/i386/i386.md (fix_trunc<mode>_fisttp_i387_1): Remove.
11145 Update callers to gen_fix_trunc<mode>_i387_fisttp
11146 (fix_trunc<mode>_i387_fisttp): Change operand 0 predicate to
11147 nonimmediate_operand.
11148 (fix_trunc<mode>_i387_fisttp_with_temp): Remove insn pattern
11149 and corresponding splitters.
11150 (*fix_trunc<mode>_i387_1): Always expand with fix_trunc<mode>_i387.
11151 (fix_truncdi_i387): Change operand 0 predicate to nonimmediate_operand.
11152 (fix_truncdi_i387_with_temp): Remove insn pattern
11153 and corresponding splitters.
11154 (fix_trunc<mode>_i387): Change operand 0 predicate to
11155 nonimmediate_operand.
11156 (fix_trunc<mode>_i387_with_temp): Remove insn pattern
11157 and corresponding splitters.
11158 (*fistdi2_1): Remove.
11160 (fistdi2_with_temp): Remove insn pattern and corresponding splitters.
11161 (lrintxfdi2): Remove expander. Reimplement as define_insn.
11162 (*fist<mode>2_1): Remove.
11163 (fist<mode>2): Ditto.
11164 (fist<mode>2_with_temp): Remove insn pattern and corresponding
11166 (lrintxf<mode>2): Remove expander. Reimplement as define_insn.
11167 (*fist<mode>2_<rounding>_1): Always expand with fist<mode>2_<rounding>.
11168 (fistdi2_<rounding>): Change operand 0 predicate to
11169 nonimmediate_operand.
11170 (fistdi2_<rounding>_with_temp): Remove insn pattern
11171 and corresponding splitters.
11172 (fist<mode>2_<rounding>): Change operand 0 predicate to
11173 nonimmediate_operand.
11174 (fist<mode>2_<rounding>_with_temp): Remove insn pattern
11175 and corresponding splitters.
11177 (*fixuns_trunc<mode>si2_avx512f_zext): Depend on TARGET_SSE_MATH.
11179 2018-09-06 Bernd Edlinger <bernd.edlinger@hotmail.de>
11181 * varasm.c (output_constructor_regular_field): Check TYPE_SIZE_UNIT of
11184 2018-09-06 Will Schmidt <will_schmidt@vnet.ibm.com>
11186 * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add support for
11187 early gimple folding of vec_splat().
11188 * tree-vect-generic.c: Remove static from tree_vec_extract() definition.
11189 * gimple-fold.h: Add an extern define for tree_vec_extract().
11191 2018-09-06 Will Schmidt <will_schmidt@vnet.ibm.com>
11193 * config/rs6000/rs6000.c (fold_mergehl_helper): Add types_compatible_p
11194 wrappers around TREE_TYPE comparisons.
11196 2018-09-06 Ilya Leoshkevich <iii@linux.ibm.com>
11199 * config/s390/predicates.md: Add nonsym_memory_operand.
11200 * config/s390/s390.c (s390_legitimize_cs_operand): If operand
11201 contains a SYMBOL_REF, load it into an intermediate pseudo.
11202 (s390_emit_compare_and_swap): Legitimize operand.
11203 * config/s390/s390.md: Use the new nonsym_memory_operand
11204 with UNSPECV_CAS patterns.
11206 2018-09-06 Ilya Leoshkevich <iii@linux.ibm.com>
11209 * config/s390/s390-passes.def: New file.
11210 * config/s390/s390-protos.h (class rtl_opt_pass): Add forward
11212 (make_pass_s390_early_mach): Add declaration.
11213 * config/s390/s390.c (make_pass_s390_early_mach):
11214 (s390_option_override): Remove dynamic registration.
11215 * config/s390/t-s390: Add s390-passes.def.
11217 2018-09-06 Ilya Leoshkevich <iii@linux.ibm.com>
11219 * config/s390/s390.c (s390_decompose_constant_pool_ref):
11220 Remove UNSPEC_LTREL_BASE check.
11221 (annotate_constant_pool_refs): Likewise.
11222 (find_constant_pool_ref): Likewise.
11223 (find_ltrel_base): Removed.
11224 (replace_ltrel_base): Removed.
11225 (s390_mainpool_finish): Remove replace_ltrel_base call.
11226 (s390_chunkify_start): Remove pending LTREL_BASE logic.
11227 (s390_chunkify_finish): Remove replace_ltrel_base call.
11228 * config/s390/s390.md: Remove UNSPEC_LTREL_BASE.
11230 2018-09-06 Hans-Peter Nilsson <hp@axis.com>
11233 * config/cris/cris.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Redefine
11234 to speculation_safe_value_not_needed.
11236 2018-09-05 Cesar Philippidis <cesar@codesourcery.com>
11237 Bernd Schmidt <bernds_cb1@t-online.de>
11239 * config/nvptx/nvptx-opts.h: New file.
11240 * config/nvptx/nvptx.c (nvptx_file_start): Print the correct .target.
11241 * config/nvptx/nvptx.h: Include "nvptx-opts.h".
11242 (ASM_SPEC): Define.
11243 (TARGET_SM35): New macro.
11244 * config/nvptx/nvptx.md (atomic_fetch_<logic><mode>): Enable with the
11246 * config/nvptx/nvptx.opt (ptx_isa, sm_30, sm_35): New enum and its
11248 (misa=): New option.
11249 * doc/invoke.texi (Nvidia PTX Options): Document -misa.
11251 2018-09-05 Uros Bizjak <ubizjak@gmail.com>
11253 * config/i386/i386.md (truncdfsf2): Remove expander.
11254 (truncdfsf2_with_temp): Ditto.
11255 (truncxf<mode>2): Ditto.
11256 (*truncdfsf_fast_mixed): Remove insn pattern.
11257 (*truncdfsf_fast_i387): Ditto.
11258 (*truncdfsf_mixed): Ditto.
11259 (*truncdfsf_i387): Ditto.
11260 (*truncdfsf2_i387_1): Ditto.
11261 (*truncxfsf2_mixed): Ditto.
11262 (*truncxfdf2_mixed): Ditto.
11263 (*truncxf<mode>2_i387_noop): Ditto. Update callers
11264 to call gen_truncxf<mode>2 instead.
11265 (*truncxf<mode>2_i387): Remove.
11266 (reg->reg splitters): Remove splitter pattern.
11267 (reg->mem splitters): Ditto.
11269 (truncdfsf2): New insn pattern.
11270 (truncxf<mode>2): Ditto.
11272 2018-09-05 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11274 * tree-ssa-math-opts.c (is_mult_by): New function.
11275 (is_square_of): Use the above.
11276 (optimize_recip_sqrt): New function.
11277 (pass_cse_reciprocals::execute): Use the above.
11279 2018-09-05 Richard Biener <rguenther@suse.de>
11282 * tree-ssa-sccvn.c (rpo_elim::eliminate_push_avail): Make sure
11283 to zero-init the emplaced vec.
11285 2018-09-05 Martin Liska <mliska@suse.cz>
11287 PR tree-optimization/87205
11288 * tree-switch-conversion.c (pass_lower_switch::execute):
11289 Group cases for switch statements.
11291 2018-09-05 Richard Biener <rguenther@suse.de>
11293 PR tree-optimization/87217
11294 * tree-ssa-sccvn.c (vuse_valueize): New.
11295 (vn_reference_lookup_pieces): Use it.
11296 (vn_reference_lookup): Likewise.
11298 2018-09-05 Nathan Sidwell <nathan@acm.org>
11301 * stor-layout.c (place_field): Scan forwards to check last
11302 bitfield when ms_bitfield_placement is in effect.
11304 2018-09-05 Richard Biener <rguenther@suse.de>
11307 * tree-vect-stmts.c (vectorizable_simd_clone_call): Fix bogus
11310 2018-09-05 Siddhesh Poyarekar <siddhesh@sourceware.org>
11311 Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org>
11313 * config/aarch64/falkor-tag-collision-avoidance.c: New file.
11314 * config.gcc (extra_objs): Build it.
11315 * config/aarch64/t-aarch64 (falkor-tag-collision-avoidance.o):
11317 * config/aarch64/aarch64-passes.def
11318 (pass_tag_collision_avoidance): New pass.
11319 * config/aarch64/aarch64.c (qdf24xx_tunings): Add
11320 AARCH64_EXTRA_TUNE_RENAME_LOAD_REGS to tuning_flags.
11321 (aarch64_classify_address): Remove static qualifier.
11322 (aarch64_address_info, aarch64_address_type): Move to...
11323 * config/aarch64/aarch64-protos.h: ... here.
11324 (make_pass_tag_collision_avoidance): New function.
11325 * config/aarch64/aarch64-tuning-flags.def (rename_load_regs):
11328 2018-09-05 Martin Liska <mliska@suse.cz>
11330 * doc/gcov.texi: Update documentation of humar
11332 * gcov.c (format_count): Print one decimal place, it provides
11333 more fine number of situations like '1G' vs. '1.4G'.
11335 2018-09-05 Martin Liska <mliska@suse.cz>
11338 * config/rs6000/rs6000.opt: Mark the option as Deprecated.
11339 * optc-gen.awk: Allow 'Var' for Deprecated options in order
11340 to generate a MASK value.
11342 2018-09-04 H.J. Lu <hongjiu.lu@intel.com>
11345 * dwarf2out.c (based_loc_descr): Allow hard frame pointer even
11346 if frame pointer isn't used.
11347 (compute_frame_pointer_to_fb_displacement): Likewise.
11349 2018-09-04 Jakub Jelinek <jakub@redhat.com>
11352 * common/config/i386/i386-common.c (OPTION_MASK_ISA_XSAVEOPT_SET,
11353 OPTION_MASK_ISA_XSAVES_SET, OPTION_MASK_ISA_XSAVEC_SET): Use
11354 OPTION_MASK_ISA_XSAVE_SET instead of OPTION_MASK_ISA_XSAVE.
11355 (OPTION_MASK_ISA_XSAVE_UNSET): Add OPTION_MASK_ISA_XSAVES_UNSET
11356 and OPTION_MASK_ISA_XSAVEC_UNSET.
11358 2018-09-04 Max Filippov <jcmvbkbc@gmail.com>
11360 * config/xtensa/xtensa.c (xtensa_expand_atomic): Reorder AND and
11361 XOR operations in NAND case.
11363 2018-09-04 Aldy Hernandez <aldyh@redhat.com>
11365 * wide-int-range.cc (wide_int_range_convert): New.
11366 * wide-int-range.h (wide_int_range_convert): New.
11367 * tree-vrp.c (extract_range_from_unary_expr): Abstract wide int
11368 code into wide_int_range_convert.
11369 (extract_range_into_wide_ints): Do not munge anti range constants
11370 into the entire domain. Just return the range back.
11372 2018-09-04 Martin Liska <mliska@suse.cz>
11374 * genmatch.c (output_line_directive): Add new argument
11376 (dt_simplify::gen_1): Encapsulate dump within __builtin_expect.
11378 2018-09-04 Jonathan Wakely <jwakely@redhat.com>
11380 * doc/invoke.texi (Option Summary): Add whitespace.
11382 * doc/invoke.texi (Option Summary): Add -Waligned-new.
11384 2018-09-04 Richard Biener <rguenther@suse.de>
11386 PR tree-optimization/87211
11387 * tree-ssa-sccvn.c (visit_phi): When value-numbering to a
11388 backedge value we're supposed to treat as VARYING also number
11389 the PHI to VARYING in case it got a different value-number already.
11391 2018-09-04 Aldy Hernandez <aldyh@redhat.com>
11393 * tree-vrp.c (vrp_can_optimize_bit_op): Remove.
11394 (extract_range_from_binary_expr_1): Do not call
11395 vrp_can_optimize_bit_op.
11396 * wide-int-range.cc (wide_int_range_can_optimize_bit_op): Make
11398 (wide_int_range_get_mask_and_bounds): New.
11399 (wide_int_range_optimize_bit_op): New.
11400 (wide_int_range_bit_ior): Call wide_int_range_optimize_bit_op.
11401 (wide_int_range_bit_and): Same.
11402 * wide-int-range.h (wide_int_range_can_optimize_bit_op): Remove.
11403 (wide_int_range_optimize_bit_op): New.
11404 (wide_int_range_get_mask_and_bounds): New.
11406 2018-09-04 Richard Biener <rguenther@suse.de>
11408 PR tree-optimization/87176
11409 * tree-ssa-sccvn.c (visit_phi): Remove redundant allsame
11410 variable. When value-numbering a virtual PHI node make sure
11411 to not value-number to the backedge value.
11413 2018-09-04 Jonathan Wakely <jwakely@redhat.com>
11415 * doc/extend.texi (Long Long, Hex Floats): Document support for
11416 long long and hex floats in more recent versions of ISO C++.
11418 2018-09-03 Richard Biener <rguenther@suse.de>
11420 PR tree-optimization/87177
11421 * tree-ssa-sccvn.c (vuse_ssa_val): Revert previous change, keep
11424 2018-09-03 Alexander Monakov <amonakov@ispras.ru>
11426 * bb-reorder.c (edge_order): Convert to C-qsort-style
11427 tri-state comparator.
11428 (reorder_basic_blocks_simple): Change std::stable_sort to
11431 2018-09-03 Alexander Monakov <amonakov@ispras.ru>
11433 * tree-loop-distribution.c (offset_cmp): Convert to C-qsort-style
11434 tri-state comparator.
11435 (fuse_memset_builtins): Change std::stable_sort to gcc_stablesort.
11437 2018-09-03 Alexander Monakov <amonakov@ispras.ru>
11439 * sort.cc (struct sort_ctx): New field 'nlim'. Use it...
11440 (mergesort): ... here as maximum count for using netsort.
11441 (gcc_qsort): Set nlim to 3 if stable sort is requested.
11442 (gcc_stablesort): New.
11443 * system.h (gcc_stablesort): Declare.
11445 2018-09-03 Alexander Monakov <amonakov@ispras.ru>
11447 * sort.cc (gcc_qsort) [CHECKING_P]: Call qsort_chk.
11448 * system.h (qsort): Always redirect to gcc_qsort. Update comment.
11449 * vec.c (qsort_chk): Do not call gcc_qsort. Update comment.
11451 2018-09-03 Segher Boessenkool <segher@kernel.crashing.org>
11453 * config/rs6000/rs6000.md (*mov<mode>_hardfloat32): Remove %U from the
11454 lxsdx and stxsdx alternatives.
11455 (*mov<mode>_hardfloat64): Ditto.
11456 * config/rs6000/vsx.md (*vsx_extract_<mode>_store): Ditto.
11458 2018-09-03 Richard Biener <rguenther@suse.de>
11460 PR tree-optimization/87200
11461 * tree-ssa-sccvn.c (vn_nary_build_or_lookup_1): Valueize a
11464 2018-09-03 Martin Liska <mliska@suse.cz>
11466 PR tree-optimization/87201
11467 * tree-switch-conversion.c (switch_decision_tree::balance_case_nodes):
11468 Fix parenthesis in an expression.
11470 2018-09-03 Richard Biener <rguenther@suse.de>
11472 PR tree-optimization/87197
11473 * tree-ssa-sccvn.c (vn_nary_build_or_lookup_1): Mark the new def
11474 visited. CSE the VN_INFO hashtable lookup.
11476 PR tree-optimization/87169
11477 * tree-ssa-sccvn.c (do_rpo_vn): When marking loops for not
11478 iterating make sure there's no extra backedges from irreducible
11479 regions feeding the header. Mark the destination block
11482 2018-09-03 Martin Liska <mliska@suse.cz>
11485 * common/common-target.def: Add TARGET_GET_VALID_OPTION_VALUES.
11486 * common/common-targhooks.c (default_get_valid_option_values):
11488 * common/common-targhooks.h (default_get_valid_option_values):
11490 * common/config/i386/i386-common.c: Move processor_target_table
11492 (ix86_get_valid_option_values): New function.
11493 (TARGET_GET_VALID_OPTION_VALUES): New macro.
11494 * config/i386/i386.c (struct ptt): Move to i386-common.c.
11495 (PTA_*): Move all defined masks into i386-common.c.
11496 (ix86_function_specific_restore): Use new processor_cost_table.
11497 * config/i386/i386.h (struct ptt): Moved from i386.c.
11498 (struct pta): Likewise.
11499 * doc/tm.texi: Document new TARGET_GET_VALID_OPTION_VALUES.
11500 * doc/tm.texi.in: Likewise.
11501 * opt-suggestions.c (option_proposer::suggest_option):
11502 Pass prefix to build_option_suggestions.
11503 (option_proposer::get_completions): Likewise.
11504 (option_proposer::build_option_suggestions): Use the new target
11506 * opts.c (struct option_help_tuple): New struct.
11507 (print_filtered_help): Use the new target hook.
11509 2018-09-03 Martin Liska <mliska@suse.cz>
11511 PR middle-end/59521
11512 * predict.c (set_even_probabilities): Add likely_edges
11513 argument and handle cases where we have precisely one
11515 (combine_predictions_for_bb): Catch also likely_edges.
11516 (tree_predict_by_opcode): Handle gswitch statements.
11517 * tree-cfg.h (find_case_label_for_value): New declaration.
11518 (find_taken_edge_switch_expr): Likewise.
11519 * tree-switch-conversion.c (switch_decision_tree::balance_case_nodes):
11520 Find pivot in decision tree based on probabily, not by number of
11523 2018-09-02 Gerald Pfeifer <gerald@pfeifer.com>
11525 * doc/standards.texi (Standards): Update Objective-C reference.
11527 2018-09-01 Gerald Pfeifer <gerald@pfeifer.com>
11529 * doc/install.texi (Prerequisites): Update link for MPC.
11531 2018-09-01 Michael Matz <matz@suse.de>
11533 PR tree-optimization/87074
11534 * gimple-loop-jam.c (unroll_jam_possible_p): Check loop exit
11535 PHIs for outer-loop uses.
11537 2018-09-01 Gerald Pfeifer <gerald@pfeifer.com>
11539 * doc/generic.texi (OpenMP): Adjust link to openmp.org.
11540 * doc/invoke.texi (C Dialect Options): Ditto.
11542 2018-09-01 Gerald Pfeifer <gerald@pfeifer.com>
11544 * doc/install.texi (Prerequisites): Adjust link mpfr.org.
11546 2018-08-31 Richard Biener <rguenther@suse.de>
11548 PR tree-optimization/87168
11549 * tree-ssa-sccvn.c (SSA_VAL): Add visited output parameter.
11550 (rpo_elim::eliminate_avail): When OP was not visited it must
11553 2018-08-31 David Malcolm <dmalcolm@redhat.com>
11555 * tree-vrp.c (copy_value_range): Convert param "from" from
11556 "value_range *" to "const value_range *".
11557 (range_is_null): Likewise for param "vr".
11558 (range_int_cst_p): Likewise.
11559 (range_int_cst_singleton_p): Likewise.
11560 (symbolic_range_p): Likewise.
11561 (value_ranges_intersect_p): Likewise for both params.
11562 (value_range_nonnegative_p): Likewise for param "vr".
11563 (value_range_constant_singleton): Likewise.
11564 (vrp_set_zero_nonzero_bits): Likewise for param "ar".
11565 (extract_range_into_wide_ints): Likewise for param "vr".
11566 (extract_range_from_multiplicative_op): Likewise for params "vr0"
11568 (vrp_can_optimize_bit_op): Likewise.
11569 (extract_range_from_binary_expr_1): Likewise for params "vr0_" and
11571 (extract_range_from_unary_expr): Likewise.
11572 (debug_value_range): Likewise for param "vr".
11573 (value_range::dump): Add "const" qualifier.
11574 (vrp_prop::check_array_ref): Convert local "vr" from
11575 "value_range *" to "const value_range *".
11576 (vrp_prop::check_mem_ref): Likewise.
11577 (vrp_prop::visit_stmt): Likewise for local "old_vr".
11578 (vrp_intersect_ranges_1): Likewise for param "vr_1".
11579 (vrp_intersect_ranges): Likewise.
11580 (simplify_stmt_for_jump_threading): Likewise for local "vr".
11581 (vrp_prop::vrp_finalize): Likewise.
11582 * tree-vrp.h (value_range::dump): Add "const" qualifier.
11583 (vrp_intersect_ranges): Add "const" qualifier to params as above.
11584 (extract_range_from_unary_expr): Likewise.
11585 (value_range_constant_singleton): Likewise.
11586 (symbolic_range_p): Likewise.
11587 (copy_value_range): Likewise.
11588 (extract_range_from_binary_expr_1): Likewise.
11589 (range_int_cst_p): Likewise.
11590 (vrp_set_zero_nonzero_bits): Likewise.
11591 (range_int_cst_singleton_p): Likewise.
11593 2018-08-31 Vlad Lazar <vlad.lazar@arm.com>
11595 * config/aarch64/arm_neon.h (vabsd_s64): New.
11596 (vnegd_s64): Likewise.
11598 2018-08-31 Martin Jambor <mjambor@suse.cz>
11600 * ipa-cp.c (estimate_local_effects): Replace wrong MAX with MIN.
11602 2018-08-31 Martin Liska <mliska@suse.cz>
11604 * ipa-icf.c (sem_item::add_type): Use
11605 sem_item::m_type_hash_cache.
11606 * ipa-icf.h: Move the cache from sem_item_optimizer
11609 2018-08-31 Nathan Sidwell <nathan@acm.org>
11611 * doc/extend.texi (Backwards Compatibility): Remove implicit
11612 extern C leeway of () being (...).
11614 2018-08-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11616 * ipa-inline.c (can_inline_edge_by_limits_p): Fix typos in comment.
11618 2018-08-31 Segher Boessenkool <segher@kernel.crashing.org>
11622 * config/rs6000/rs6000.md (lround<mode>di2): Gate on TARGET_FPRND.
11624 2018-08-31 Jakub Jelinek <jakub@redhat.com>
11626 PR middle-end/87138
11627 * expmed.c (expand_mult_const): Use immed_wide_int_const instead of
11628 gen_int_mode. Formatting fixes.
11630 2018-08-30 Sandra Loosemore <sandra@codesourcery.com>
11632 * target.def (custom_function_descriptors): Improve documentation.
11633 * doc/tm.texi.in (Trampolines): Expand discussion of function
11634 descriptors and move TARGET_CUSTOM_FUNCTION_DESCRIPTORS to the
11635 beginning of the section.
11636 * doc/tm.texi: Regenerated.
11638 2018-08-30 Jose E. Marchesi <jose.marchesi@oracle.com>
11640 * cfg.h (class auto_edge_flag): Spell out the template-id of the
11641 base class in the initializer list. This is a workaround for
11642 building with older GCC.
11643 (class auto_bb_flag): Likewise.
11645 2018-08-30 Aaron Sawdey <acsawdey@linux.ibm.com>
11647 * config/rs6000/altivec.md (altivec_eq<mode>): Remove star.
11648 (altivec_vcmpequ<VI_char>_p): Remove star.
11649 * config/rs6000/rs6000-string.c (do_load_for_compare): Support
11651 (expand_strncmp_vec_sequence): New function.
11652 (emit_final_str_compare_vec): New function.
11653 (expand_strn_compare): Add support for vector strncmp.
11654 * config/rs6000/rs6000.opt (-mstring-compare-inline-limit): Change
11655 length specification to bytes.
11656 * config/rs6000/vsx.md (vsx_ld_elemrev_v16qi_internal): Remove star.
11657 (vcmpnezb_p): New pattern.
11658 * doc/invoke.texi (RS/6000 and PowerPC Options): Update documentation
11659 for option -mstring-compare-inline-limit.
11661 2018-08-30 Thiago Macieira <thiago.macieira@intel.com>
11663 * config/i386/i386.c (PTA_WESTMERE): Remove PTA_AES.
11664 (PTA_SKYLAKE): Add PTA_AES.
11665 (PTA_GOLDMONT): Likewise.
11667 2018-08-29 Jan Hubicka <jh@suse.cz>
11670 * lto-opts.c (lto_write_options): Always stream PIC/PIE mode.
11671 * lto-wrapper.c (merge_and_complain): Fix merging of PIC/PIE.
11673 2018-08-29 Jan Hubicka <jh@suse.cz>
11675 * lto-streamer-out.c (DFS::DFS_write_tree_body): Do not follow
11677 (hash_tree): Do not visit TYPE_STUB_DECL.
11678 * tree-streamer-out.c (write_ts_type_common_tree_pointers): Do not
11679 stream TYPE_STUB_DECL.
11680 * tree-streamer-in.c (lto_input_ts_type_common_tree_pointers): Likewise.
11681 * ipa-utils.h (type_with_linkage_p): Do not rely on TYPE_STUB_DECL
11682 after free_lang_data.
11683 (type_in_anonymous_namespace_p): Likewise.
11685 2018-08-29 Jan Hubicka <jh@suse.cz>
11687 * sreal.h (SREAL_PART_BITS): Change to 31; remove seemingly unnecessary
11688 comment that it has to be even number.
11689 (class sreal): Change m_sig type to int32_t.
11690 * sreal.c (sreal::dump, sreal::to_int, opreator+, operator-): Use
11691 int64_t for temporary calculations.
11692 (sreal_verify_basics): Drop one bit from minimum and maximum.
11694 2018-08-30 Richard Biener <rguenther@suse.de>
11696 PR tree-optimization/87147
11697 * tree-ssa-sccvn.c (SSA_VISITED): New function.
11698 (visit_phi): When the degenerate result is from the backedge and
11699 we didn't visit its definition yet drop to VARYING.
11700 (do_rpo_vn): Properly mark blocks with incoming backedges as executable.
11702 2018-08-29 Jan Hubicka <jh@suse.cz>
11704 * lto-streamer-out.c (DFS::DFS_write_tree_body): Do not walk
11706 (hash_tree): Likewise.
11708 2018-08-29 Jan Hubicka <jh@suse.cz>
11710 * tree.c (find_decls_types_r): Walk also TYPE_NEXT_PTR_TO
11711 and TYPE_NEXT_REF_TO.
11713 2018-08-29 Jan Hubicka <jh@suse.cz>
11715 * sreal.h (SREAL_PART_BITS): Change to 31; remove seemingly unnecessary
11716 comment that it has to be even number.
11717 (class sreal): Change m_sig type to int32_t.
11718 * sreal.c (sreal::dump, sreal::to_int, opreator+, operator-): Use
11719 int64_t for temporary calculations.
11720 (sreal_verify_basics): Drop one bit from minimum and maximum.
11722 2018-08-30 Tamar Christina <tamar.christina@arm.com>
11724 * config/aarch64/aarch64.c (aarch64_expand_movmem): Set TImode max.
11726 2018-08-30 Vlad Lazar <vlad.lazar@arm.com>
11728 PR middle-end/86995
11729 * expmed.c (canonicalize_comparison): Use wi::sub instead of wi::add
11730 if to_add is negative.
11732 2018-08-29 Bernd Edlinger <bernd.edlinger@hotmail.de>
11734 PR middle-end/87053
11735 * builtins.c (c_strlen): Improve range checks.
11737 2018-08-29 Martin Sebor <msebor@redhat.com>
11738 Jeff Law <law@redhat.com>
11740 PR tree-optimization/86714
11741 PR tree-optimization/86711
11742 * builtins.c (c_strlen): Add arguments to call to string_constant.
11743 * expr.c (string_constant): Add argument. Detect missing nul
11744 terminator and outermost declaration it's missing in.
11745 * expr.h (string_constant): Add argument.
11746 * fold-const.c (read_from_constant_string): Add arguments to call to
11748 (c_getstr): Likewise.
11749 * tree-ssa-forwprop.c (simplify_builtin_call): Likewise.
11750 to string_constant.
11751 * tree-ssa-strlen.c (get_stridx): Likewise.
11753 2018-08-29 Jan Hubicka <jh@suse.cz>
11755 * tree-streamer-in.c (lto_input_ts_function_decl_tree_pointers):
11756 Do not stream DECL_VINDEX.
11757 * tree-streamer-out.c (write_ts_function_decl_tree_pointers): Likewise.
11758 * tree.c (free_lang_data_in_decl): Clear DECL_VINDEX.
11759 (decl_function_context): Use DECL_VIRTUAL_P rather than DECL_VINDEX.
11761 2018-08-29 Richard Biener <rguenther@suse.de>
11763 * tree-ssa-sccvn.c (vuse_ssa_val): Return NULL for unvisited
11764 virtual operands that are not default defs to honor region
11766 (rpo_vn_valueize): Remove ineffective code here.
11768 2018-08-29 Richard Biener <rguenther@suse.de>
11770 PR tree-optimization/87132
11771 * tree-ssa-alias.c (get_continuation_for_phi): Do not translate
11772 when skipping defs reachable over backedges.
11774 2018-08-29 Richard Biener <rguenther@suse.de>
11776 * tree-core.h: Document use of deprecated_flag in SSA_NAME.
11777 * tree.h (SSA_NAME_POINTS_TO_READONLY_MEMORY): Define.
11778 * tree-into-ssa.c (pass_build_ssa::execute): Initialize
11779 function parameters SSA_NAME_POINTS_TO_READONLY_MEMORY from fnspec.
11780 * tree-ssa-sccvn.c (const_parms, init_const_parms): Remove.
11781 (vn_reference_lookup_3): Remove use of const_parms.
11782 (free_rpo_vn): Do not free const_parms.
11783 (do_rpo_vn): Do not call init_const_parms.
11784 * tree-ssa-alias.c (refs_may_alias_p_1): Honor
11785 SSA_NAME_POINTS_TO_READONLY_MEMORY.
11786 (call_may_clobber_ref_p_1): Likewise.
11788 2018-08-29 Alexander Monakov <amonakov@ispras.ru>
11791 * invoke.texi (Optimization Options): List -ftree-scev-cprop.
11793 (-ftree-scev-cprop): Document.
11795 2018-08-29 Jan Hubicka <jh@suse.cz>
11797 * sreal.h (normalize, normalize_up, normalize_down): Add new_sig/new_exp
11799 (sreal constructor): Update.
11800 * sreal.c (sreal:operator+, sreal:operator-, sreal:operator*,
11801 sreal:operator/): Update.
11803 2018-08-29 Martin Liska <mliska@suse.cz>
11805 * tree-switch-conversion.c (switch_conversion::expand):
11806 Strenghten assumption about gswitch statements.
11808 2018-08-29 Richard Biener <rguenther@suse.de>
11810 PR tree-optimization/87117
11811 * tree-ssa-sccvn.c (eliminate_dom_walker::eliminate_stmt): Only
11812 re-value-number released SSA VDEFs.
11814 2018-08-29 Richard Biener <rguenther@suse.de>
11816 PR tree-optimization/87126
11817 * tree-ssa-sccvn.c (vn_reference_insert): Remove assert.
11819 2018-08-28 Jim Wilson <jimw@sifive.com>
11821 * config/riscv/pic.md: Rewrite.
11822 * config/riscv/riscv.c (riscv_address_insns): Return cost of 3 for
11824 * config/riscv/riscv.md (ZERO_EXTEND_LOAD): Delete.
11825 (SOFTF, default_load, softload, softstore): New.
11827 2018-08-28 Jeff Law <law@redhat.com>
11829 * fold-const.c (fold_binary_loc): Remove recently added assert.
11831 2018-08-28 Joern Rennecke <joern.rennecke@riscy-ip.com>
11833 * genpreds.c (write_predicate_subfunction): Also add ATTRIBUTE_UNUSED
11834 to OP parmeter of generated function.
11836 2018-08-28 MCC CS <deswurstes@users.noreply.github.com>
11838 PR tree-optimization/87009
11839 * match.pd: Add boolean optimizations.
11841 2018-08-28 Martin Sebor <msebor@redhat.com>
11843 PR middle-end/86631
11844 * calls.c (alloc_max_size): Treat HOST_WIDE_INT special.
11845 * gimple-ssa-warn-alloca.c (adjusted_warn_limit): New function.
11846 (pass_walloca::gate): Use it.
11847 (alloca_call_type): Same.
11848 (pass_walloca::execute): Same.
11849 * stor-layout.c (layout_decl): Treat HOST_WIDE_INT special.
11851 2018-08-28 David Malcolm <dmalcolm@redhat.com>
11853 * dumpfile.h (ATTRIBUTE_GCC_DUMP_PRINTF): Change version check on
11854 GCC_VERSION for usage of "__gcc_dump_printf__" format from
11855 >= 3005 to >= 9000.
11857 2018-08-28 Richard Biener <rguenther@suse.de>
11859 PR tree-optimization/87124
11860 * tree-ssa-sccvn.c (vn_lookup_simplify_result): Guard against
11861 constants before looking up avail.
11863 2018-08-28 Jakub Jelinek <jakub@redhat.com>
11865 PR middle-end/87099
11866 * calls.c (maybe_warn_nonstring_arg): Punt early if
11867 warn_stringop_overflow is zero. Don't call get_range_strlen
11868 on 3rd argument, keep iterating until lenrng[1] is INTEGER_CST.
11869 Swap comparison operands to have constants on rhs. Only use
11870 lenrng[1] if non-NULL and INTEGER_CST. Don't uselessly
11871 increment lenrng[0].
11873 2018-08-28 Richard Sandiford <richard.sandiford@arm.com>
11875 * tree-ssa-sccvn.c (fully_constant_vn_reference_p): Fix unguarded
11876 use of tree_to_shwi. Remove duplicated test for the size being
11877 a whole number of bytes.
11879 2018-08-28 Richard Biener <rguenther@suse.de>
11881 PR tree-optimization/87117
11882 * tree-ssa-sccvn.c (eliminate_dom_walker::eliminate_cleanup):
11883 Handle removed stmt without LHS (GIMPLE_NOP).
11885 2018-08-28 Richard Biener <rguenther@suse.de>
11887 PR tree-optimization/87117
11888 * tree-ssa-sccvn.c (fully_constant_vn_reference_p): Exclude
11889 void which is is_gimple_reg_type by checking for COMPLETE_TYPE_P.
11891 2018-08-28 Richard Biener <rguenther@suse.de>
11893 PR tree-optimization/87117
11894 * tree-ssa-pre.c (compute_avail): Do not make expressions
11895 with predicated values available.
11896 (get_expr_value_id): Assert we do not run into predicated value
11899 2018-08-28 Richard Biener <rguenther@suse.de>
11901 PR tree-optimization/87117
11902 * tree-ssa-operands.c (add_stmt_operand): STRING_CST may
11903 get virtual operands.
11904 (get_expr_operands): Handle STRING_CST like other decls.
11906 2018-08-28 Martin Liska <mliska@suse.cz>
11908 * tree.h: Update documentation of fndecl_built_in_p
11912 2018-08-27 Jeff Law <law@redhat.com>
11913 PR tree-optimization/87110
11914 * tree-ssa-dse.c (compute_trims): Handle non-constant
11917 2018-08-27 Martin Sebor <msebor@redhat.com>
11919 PR tree-optimization/86914
11920 * tree-ssa-strlen.c (maybe_set_strlen_range): Avoid MEM_REF.
11922 2018-08-27 Martin Sebor <msebor@redhat.com>
11924 PR tree-optimization/87112
11925 * builtins.c (expand_builtin_strnlen): Convert c_strlen result to
11926 the type of the bound argument.
11928 2018-08-27 Jeff Law <law@redhat.com>
11930 * tree-ssa-dse.c (compute_trims): Handle case where the reference's
11931 type does not have a TYPE_SIZE_UNIT.
11933 2018-08-27 Steve Ellcey <sellcey@cavium.com>
11935 * config/aarch64/aarch64-speculation.cc: Replace include of cfg.h
11936 with include of backend.h.
11938 2018-08-27 Richard Biener <rguenther@suse.de>
11940 PR tree-optimization/86927
11941 * tree-vect-loop.c (vect_create_epilog_for_reduction): Properly
11942 use const cond reduction code.
11944 2018-08-27 Alexander Monakov <amonakov@ispras.ru>
11946 PR tree-optimization/85758
11947 * match.pd ((X & Y) ^ Y): Add :s qualifier to inner expression.
11949 2018-08-27 David Malcolm <dmalcolm@redhat.com>
11952 * diagnostic-show-locus.c (class layout_range): Update for
11953 conversion of show_caret_p to a tri-state.
11954 (layout_range::layout_range): Likewise.
11955 (make_range): Likewise.
11956 (layout::maybe_add_location_range): Likewise.
11957 (layout::should_print_annotation_line_p): Don't show annotation
11958 lines for ranges that are SHOW_LINES_WITHOUT_RANGE.
11959 (layout::get_state_at_point): Update for conversion of
11960 show_caret_p to a tri-state. Bail out early for
11961 SHOW_LINES_WITHOUT_RANGE, so that such ranges don't affect
11962 underlining or source colorization.
11963 (gcc_rich_location::add_location_if_nearby): Update for conversion
11964 of show_caret_p to a tri-state.
11965 (selftest::test_one_liner_multiple_carets_and_ranges): Likewise.
11966 (selftest::test_one_liner_fixit_replace_equal_secondary_range):
11968 (selftest::test_one_liner_labels): Likewise.
11969 * gcc-rich-location.c (gcc_rich_location::add_expr): Update for
11970 conversion of show_caret_p to a tri-state.
11971 * pretty-print.c (text_info::set_location): Likewise.
11972 * pretty-print.h (text_info::set_location): Likewise.
11973 * substring-locations.c (format_warning_n_va): Likewise.
11974 * tree-diagnostic.c (default_tree_printer): Likewise.
11975 * tree-pretty-print.c (newline_and_indent): Likewise.
11977 2018-08-27 David Malcolm <dmalcolm@redhat.com>
11980 * diagnostic-show-locus.c (get_line_span_for_fixit_hint): Show the
11981 line above for line-insertion fix-it hints.
11982 (selftest::test_fixit_insert_containing_newline): Update the
11983 expected results, and add a test with line-numbering enabled.
11985 2018-08-27 Martin Liska <mliska@suse.cz>
11988 * sanopt.c (sanitize_rewrite_addressable_params): Ignore
11989 params with DECL_HAS_VALUE_EXPR_P.
11991 2018-08-27 Martin Liska <mliska@suse.cz>
11993 * config/i386/i386.c (ix86_expand_set_or_movmem): Dump
11994 selected expansion strategy.
11996 2018-08-27 Martin Liska <mliska@suse.cz>
11998 * builtins.h (is_builtin_fn): Remove and fndecl_built_in_p.
11999 * builtins.c (is_builtin_fn): Likewise.
12000 * attribs.c (diag_attr_exclusions): Use new function
12001 fndecl_built_in_p and remove check for FUNCTION_DECL if
12003 (builtin_mathfn_code): Likewise.
12004 (fold_builtin_expect): Likewise.
12005 (fold_call_expr): Likewise.
12006 (fold_builtin_call_array): Likewise.
12007 (fold_call_stmt): Likewise.
12008 (set_builtin_user_assembler_name): Likewise.
12009 (is_simple_builtin): Likewise.
12010 * calls.c (gimple_alloca_call_p): Likewise.
12011 (maybe_warn_nonstring_arg): Likewise.
12012 * cfgexpand.c (expand_call_stmt): Likewise.
12013 * cgraph.c (cgraph_update_edges_for_call_stmt_node): Likewise.
12014 (cgraph_edge::verify_corresponds_to_fndecl): Likewise.
12015 (cgraph_node::verify_node): Likewise.
12016 * cgraphclones.c (build_function_decl_skip_args): Likewise.
12017 (cgraph_node::create_clone): Likewise.
12018 * config/arm/arm.c (arm_insert_attributes): Likewise.
12019 * config/i386/i386.c (ix86_gimple_fold_builtin): Likewise.
12020 * dse.c (scan_insn): Likewise.
12021 * expr.c (expand_expr_real_1): Likewise.
12022 * fold-const.c (operand_equal_p): Likewise.
12023 (fold_binary_loc): Likewise.
12024 * gimple-fold.c (gimple_fold_stmt_to_constant_1): Likewise.
12025 * gimple-low.c (lower_stmt): Likewise.
12026 * gimple-pretty-print.c (dump_gimple_call): Likewise.
12027 * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call):
12029 * gimple.c (gimple_build_call_from_tree): Likewise.
12030 (gimple_call_builtin_p): Likewise.
12031 (gimple_call_combined_fn): Likewise.
12032 * gimplify.c (gimplify_call_expr): Likewise.
12033 (gimple_boolify): Likewise.
12034 (gimplify_modify_expr): Likewise.
12035 (gimplify_addr_expr): Likewise.
12036 * hsa-gen.c (gen_hsa_insns_for_call): Likewise.
12037 * ipa-cp.c (determine_versionability): Likewise.
12038 * ipa-fnsummary.c (compute_fn_summary): Likewise.
12039 * ipa-param-manipulation.c (ipa_modify_formal_parameters): Likewise.
12040 * ipa-split.c (visit_bb): Likewise.
12041 (split_function): Likewise.
12042 * ipa-visibility.c (cgraph_externally_visible_p): Likewise.
12043 * lto-cgraph.c (input_node): Likewise.
12044 * lto-streamer-out.c (write_symbol): Likewise.
12045 * omp-low.c (setjmp_or_longjmp_p): Likewise.
12046 (lower_omp_1): Likewise.
12047 * predict.c (strip_predict_hints): Likewise.
12048 * print-tree.c (print_node): Likewise.
12049 * symtab.c (symtab_node::output_to_lto_symbol_table_p): Likewise.
12050 * trans-mem.c (is_tm_irrevocable): Likewise.
12051 (is_tm_load): Likewise.
12052 (is_tm_simple_load): Likewise.
12053 (is_tm_store): Likewise.
12054 (is_tm_simple_store): Likewise.
12055 (is_tm_abort): Likewise.
12056 (tm_region_init_1): Likewise.
12057 * tree-call-cdce.c (gen_shrink_wrap_conditions): Likewise.
12058 * tree-cfg.c (verify_gimple_call): Likewise.
12059 (move_stmt_r): Likewise.
12060 (stmt_can_terminate_bb_p): Likewise.
12061 * tree-eh.c (lower_eh_constructs_2): Likewise.
12062 * tree-if-conv.c (if_convertible_stmt_p): Likewise.
12063 * tree-inline.c (remap_gimple_stmt): Likewise.
12064 (copy_bb): Likewise.
12065 (estimate_num_insns): Likewise.
12066 (fold_marked_statements): Likewise.
12067 * tree-sra.c (scan_function): Likewise.
12068 * tree-ssa-ccp.c (surely_varying_stmt_p): Likewise.
12069 (optimize_stack_restore): Likewise.
12070 (pass_fold_builtins::execute): Likewise.
12071 * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
12072 (mark_all_reaching_defs_necessary_1): Likewise.
12073 * tree-ssa-dom.c (dom_opt_dom_walker::optimize_stmt): Likewise.
12074 * tree-ssa-forwprop.c (simplify_builtin_call): Likewise.
12075 (pass_forwprop::execute): Likewise.
12076 * tree-ssa-loop-im.c (stmt_cost): Likewise.
12077 * tree-ssa-math-opts.c (pass_cse_reciprocals::execute): Likewise.
12078 * tree-ssa-sccvn.c (fully_constant_vn_reference_p): Likewise.
12079 * tree-ssa-strlen.c (get_string_length): Likewise.
12080 * tree-ssa-structalias.c (handle_lhs_call): Likewise.
12081 (find_func_aliases_for_call): Likewise.
12082 * tree-ssa-ter.c (find_replaceable_in_bb): Likewise.
12083 * tree-stdarg.c (optimize_va_list_gpr_fpr_size): Likewise.
12084 * tree-tailcall.c (find_tail_calls): Likewise.
12085 * tree.c (need_assembler_name_p): Likewise.
12086 (free_lang_data_in_decl): Likewise.
12087 (get_call_combined_fn): Likewise.
12088 * ubsan.c (is_ubsan_builtin_p): Likewise.
12089 * varasm.c (incorporeal_function_p): Likewise.
12090 * tree.h (DECL_BUILT_IN): Remove and replace with
12092 (DECL_BUILT_IN_P): Transfort to fndecl_built_in_p.
12093 (fndecl_built_in_p): New.
12095 2018-08-27 Martin Liska <mliska@suse.cz>
12097 PR tree-optimization/86847
12098 * tree-switch-conversion.c (switch_decision_tree::dump_case_nodes):
12099 Dump also subtree probability.
12100 (switch_decision_tree::do_jump_if_equal): New function.
12101 (switch_decision_tree::emit_case_nodes): Handle special
12102 situations in balanced tree that can be emitted much simpler.
12103 Fix calculation of probabilities that happen in tree expansion.
12104 * tree-switch-conversion.h (struct cluster): Add
12106 (struct simple_cluster): Likewise.
12107 (struct case_tree_node): Add new function has_child.
12108 (do_jump_if_equal): New.
12110 2018-08-27 Martin Liska <mliska@suse.cz>
12112 * tree-switch-conversion.c (bit_test_cluster::find_bit_tests):
12113 Add new argument to bit_test_cluster constructor.
12114 (bit_test_cluster::emit): Set bits really number of values
12116 (bit_test_cluster::hoist_edge_and_branch_if_true): Add
12117 probability argument.
12118 * tree-switch-conversion.h (struct bit_test_cluster):
12119 Add m_handles_entire_switch.
12121 2018-08-27 Martin Liska <mliska@suse.cz>
12123 PR tree-optimization/86702
12124 * tree-switch-conversion.c (jump_table_cluster::emit):
12125 Make probabilities even for values in jump table
12126 according to number of cases handled.
12127 (switch_decision_tree::compute_cases_per_edge): Pass
12128 argument to reset_out_edges_aux function.
12129 (switch_decision_tree::analyze_switch_statement): Likewise.
12130 * tree-switch-conversion.h (switch_decision_tree::reset_out_edges_aux):
12133 2018-08-27 Martin Liska <mliska@suse.cz>
12135 * cfgexpand.c (expand_asm_stmt): Use label_to_block and pass
12136 cfun argument explicitly.
12137 * gimple-pretty-print.c (dump_gimple_switch): Likewise.
12138 * hsa-gen.c (gen_hsa_insns_for_switch_stmt): Use new
12139 function gimple_switch_default_bb.
12140 (convert_switch_statements):
12142 * ipa-fnsummary.c (set_switch_stmt_execution_predicate):
12143 * stmt.c (label_to_block_fn): Use label_to_block and pass
12144 cfun argument explicitly and use gimple_switch_label_bb.
12145 (expand_case): Likewise.
12146 * tree-cfg.c (lower_phi_internal_fn): Use label_to_block and pass
12147 cfun argument explicitly. Likewise.
12148 (make_edges_bb): Likewise.
12149 (make_cond_expr_edges): Likewise.
12150 (get_cases_for_edge): Likewise.
12151 (make_gimple_switch_edges): Likewise.
12152 (label_to_block_fn): Likewise.
12153 (label_to_block): Likewise.
12154 (make_goto_expr_edges): Likewise.
12155 (make_gimple_asm_edges): Likewise.
12156 (main_block_label): Likewise.
12157 (group_case_labels_stmt): Likewise.
12158 (find_taken_edge_computed_goto): Likewise.
12159 (find_taken_edge_switch_expr): Likewise.
12160 (gimple_verify_flow_info): Likewise.
12161 (gimple_redirect_edge_and_branch): Likewise.
12162 (gimple_switch_label_bb): New function.
12163 (gimple_switch_default_bb): Likewise.
12164 (gimple_switch_edge): Likewise.
12165 (gimple_switch_default_edge): Likewise.
12166 * tree-cfg.h (label_to_block_fn): Remove and replace ...
12167 (label_to_block): ... with this.
12168 (gimple_switch_label_bb): New.
12169 (gimple_switch_default_bb): Likewise.
12170 (gimple_switch_edge): Likewise.
12171 (gimple_switch_default_edge): Likewise.
12172 * tree-cfgcleanup.c (convert_single_case_switch): Use
12173 new gimple functions and pass new argument to label_to_block.
12174 (cleanup_control_flow_bb):
12175 * tree-eh.c (make_eh_dispatch_edges): Use label_to_block and pass
12176 cfun argument explicitly.
12177 (make_eh_edges): Likewise.
12178 (redirect_eh_dispatch_edge): Likewise.
12179 (lower_resx): Likewise.
12180 (lower_eh_dispatch): Likewise.
12181 (maybe_remove_unreachable_handlers): Likewise.
12182 (unsplit_eh): Likewise.
12183 (cleanup_empty_eh): Likewise.
12184 (verify_eh_edges): Likewise.
12185 (verify_eh_dispatch_edge): Likewise.
12186 * tree-ssa-dom.c (record_edge_info): Likewise.
12187 * tree-ssa-forwprop.c (simplify_gimple_switch_label_vec): Likewise.
12188 * tree-ssa-threadedge.c (thread_around_empty_blocks): Likewise.
12189 (thread_through_normal_block): Likewise.
12190 * tree-ssa-uncprop.c (associate_equivalences_with_edges): Likewise.
12191 * tree-ssa-uninit.c (convert_control_dep_chain_into_preds):
12192 * tree-switch-conversion.c (switch_conversion::collect): Use new
12194 (switch_conversion::check_final_bb): Likewise.
12195 (switch_conversion::gather_default_values): Pass new argument
12197 (switch_conversion::build_constructors): Likewise.
12198 (switch_decision_tree::compute_cases_per_edge): Use new
12199 gimple_switch_edge function.
12200 (switch_decision_tree::analyze_switch_statement): Pass new argument
12202 (switch_decision_tree::try_switch_expansion): Use
12203 gimple_switch_default_edge.
12204 * tree-vrp.c (find_switch_asserts): Pass new argument
12206 * vr-values.c (vr_values::vrp_visit_switch_stmt): Likewise.
12207 (vr_values::simplify_switch_using_ranges): Likewise.
12209 2018-08-27 Richard Biener <rguenther@suse.de>
12211 * cfganal.h (rev_post_order_and_mark_dfs_back_seme): Declare.
12212 * cfganal.c (rev_post_order_and_mark_dfs_back_seme): New function.
12214 * tree-ssa-sccvn.h (struct vn_pval): New structure.
12215 (struct vn_nary_op_s): Add unwind_to member. Add
12216 predicated_values flag and put result into a union together
12217 with a linked list of vn_pval.
12218 (struct vn_ssa_aux): Add name member to make maintaining
12219 a map of SSA name to vn_ssa_aux possible. Remove no longer
12220 needed info, dfsnum, low, visited, on_sccstack, use_processed
12221 and range_info_anti_range_p members.
12222 (run_scc_vn, vn_eliminate, free_scc_vn, vn_valueize): Remove.
12223 (do_rpo_vn, run_rpo_vn, eliminate_with_rpo_vn, free_rpo_vn):
12225 (vn_valueize): New global.
12226 (vn_context_bb): Likewise.
12227 (VN_INFO_RANGE_INFO, VN_INFO_ANTI_RANGE_P, VN_INFO_RANGE_TYPE,
12228 VN_INFO_PTR_INFO): Remove.
12229 * tree-ssa-sccvn.c: ... (rewrite)
12230 (pass_fre::execute): For -O2+ initialize loops and run
12231 RPO VN in optimistic mode (iterating). For -O1 and -Og
12232 run RPO VN in non-optimistic mode.
12233 * params.def (PARAM_SCCVN_MAX_SCC_SIZE): Remove.
12234 (PARAM_RPO_VN_MAX_LOOP_DEPTH): Add.
12235 * doc/invoke.texi (sccvn-max-scc-size): Remove.
12236 (rpo-vn-max-loop-depth): Document.
12237 * tree-ssa-alias.c (walk_non_aliased_vuses): Stop walking
12238 when valuezing the VUSE signals we walked out of the region.
12239 * tree-ssa-pre.c (phi_translate_1): Ignore predicated values.
12240 (phi_translate): Set VN context block to use for availability
12242 (compute_avail): Likewise.
12243 (pre_valueize): New function.
12244 (pass_pre::execute): Adjust to the RPO VN API.
12246 * tree-ssa-loop-ivcanon.c: Include tree-ssa-sccvn.h.
12247 (propagate_constants_for_unrolling): Remove.
12248 (tree_unroll_loops_completely): Perform value-numbering
12249 on the unrolled bodies loop parent.
12251 2018-08-27 Richard Biener <rguenther@suse.de>
12253 * tree-ssa-pre.c (compute_antic): Re-use inverted postorder
12254 for partial antic compute.
12256 2018-08-27 Jakub Jelinek <jakub@redhat.com>
12258 PR rtl-optimization/87065
12259 * combine.c (simplify_if_then_else): Formatting fix.
12260 (if_then_else_cond): Guard MULT optimization with SCALAR_INT_MODE_P
12262 (known_cond): Don't return const_true_rtx for vector modes. Use
12263 CONST0_RTX instead of const0_rtx. Formatting fixes.
12265 2018-08-27 Martin Liska <mliska@suse.cz>
12267 PR gcov-profile/87069
12268 * gcov.c (process_file): Record files already processed
12269 and warn about a file being processed multiple times.
12271 2018-08-27 Martin Liska <mliska@suse.cz>
12274 * config/aarch64/aarch64.c (aarch64_override_options_internal):
12275 Set default values for x_aarch64_*_string strings.
12276 * config/aarch64/aarch64.opt: Remove --{march,mcpu,mtune}==
12277 prefix. For -mabi do not print '=ABI' in help and use
12278 <option_value> format for -msve-vector-bits and -moverride
12281 2018-08-26 Jeff Law <law@redhat.com>
12283 * config/mips/frame-header-opt.c: Include "backend.h" rather than
12286 2018-08-26 Marek Polacek <polacek@redhat.com>
12288 PR c++/87029, Implement -Wredundant-move.
12289 * doc/invoke.texi: Document -Wredundant-move.
12291 2018-08-25 Martin Sebor <msebor@redhat.com>
12293 PR tree-optimization/87059
12294 * builtins.c (expand_builtin_strncmp): Convert MIN_EXPR operand
12295 to the same type as the other.
12296 * fold-const.c (fold_binary_loc): Assert expectation.
12298 2018-08-25 Iain Sandoe <iain@sandoe.co.uk>
12300 * config/darwin.c (machopic_legitimize_pic_address): Clean up
12301 extraneous parentheses, dead code section and formatting.
12303 2018-08-24 David Malcolm <dmalcolm@redhat.com>
12306 * diagnostic-show-locus.c (layout::layout): Ensure the margin is
12307 wide enough for jumps in the line-numbering to be visible.
12308 (layout::print_gap_in_line_numbering): New member function.
12309 (layout::calculate_line_spans): When using line numbering, merge
12310 line spans that are only 1 line apart.
12311 (diagnostic_show_locus): When printing line numbers, show gaps in
12312 line numbering directly, rather than printing headers.
12313 (selftest::test_diagnostic_show_locus_fixit_lines): Add test of
12314 line-numbering with multiple line spans.
12315 (selftest::test_fixit_insert_containing_newline_2): Add test of
12316 line-numbering, in which the spans are close enough to be merged.
12318 2018-08-24 Aldy Hernandez <aldyh@redhat.com>
12320 * gimple-ssa-evrp-analyze.c (set_ssa_range_info): Pass value_range
12321 to range_includes_zero_p. Do not special case VR_ANTI_RANGE.
12322 * tree-vrp.c (range_is_nonnull): Remove.
12323 (range_includes_zero_p): Accept value_range instead of min/max.
12324 (extract_range_from_binary_expr_1): Do not early bail on
12326 Use range_includes_zero_p instead of range_is_nonnull.
12327 (extract_range_from_unary_expr): Use range_includes_zero_p instead
12328 of range_is_nonnull.
12329 (vrp_meet_1): Pass value_range to range_includes_zero_p. Do not
12330 special case VR_ANTI_RANGE.
12331 (vrp_finalize): Same.
12332 * tree-vrp.h (range_includes_zero_p): Pass value_range as argument
12333 instead of min/max.
12334 (range_is_nonnull): Remove.
12335 * vr-values.c (vrp_stmt_computes_nonzero): Use
12336 range_includes_zero_p instead of range_is_nonnull.
12337 (extract_range_basic): Pass value_range to range_includes_zero_p
12338 instead of range_is_nonnull.
12340 2018-08-24 Uros Bizjak <ubizjak@gmail.com>
12342 * emit-rtl.c (init_emit_once): Do not emit MODE_POINTER_BOUNDS RTXes.
12343 * emit-rtl.h (rtl_data): Remove return_bnd.
12344 * explow.c (trunc_int_for_mode): Do not handle POINTER_BOUNDS_MODE_P.
12345 * function.c (diddle_return_value): Do not handle crtl->return_bnd.
12346 * genmodes.c (complete_mode): Do not handle MODE_POINTER_BOUNDS.
12347 (POINTER_BOUNDS_MODE): Remove definition.
12348 (make_pointer_bounds_mode): Remove.
12349 (get_mode_class): Do not handle MODE_POINTER_BOUNDS.
12350 * machmode.h (POINTER_BOUNDS_MODE_P): Remove definition.
12351 (scalare_mode::includes_p): Do not handle MODE_POINTER_BOUNDS.
12352 * mode-classes.def: Do not define MODE_POINTER_BOUNDS.
12353 * stor-layout.c (int_mode_for_mode): Do not handle MODE_POINTER_BOUNDS.
12354 * tree-core.h (enum tree_index): Remove TI_POINTER_BOUNDS_TYPE.
12355 * varasm.c (output_constant_pool_2): Do not handle MODE_POINTER_BOUNDS.
12357 * config/i386/i386-modes.def (BND32, BND64): Remove.
12358 * config/i386/i386.c (dbx_register_map): Remove bound registers.
12359 (dbx64_register_map): Ditto.
12360 (svr4_dbx_register_map): Ditto.
12361 (indirect_thunk_bnd_needed): Remove.
12362 (indirect_thunks_bnd_used): Ditto.
12363 (indirect_return_bnd_needed): Ditto.
12364 (indirect_return_via_cx_bnd): Ditto.
12365 (enum indirect_thunk_prefix): Remove indirect_thunk_prefix_bnd.
12366 (indirect_thunk_name): Remove handling of indirect_thunk_prefix_bnd.
12367 (output_indirect_thunk): Ditto. Remove need_prefix argument.
12368 (output_indirect_thunk_function): Remove handling of
12369 indirect_return_bnd_needed, indirect_return_via_cx_bnd,
12370 indirect_thunk_bnd_needed and indirect_thunks_bnd_used variables.
12371 (ix86_save_reg): Remove handling of crtl->return_bnd.
12372 (ix86_legitimate_constant_p): Remove handling of POINTER_BOUNDS_MODE_P.
12373 (ix86_print_operand_address_as): Remove handling of UNSPEC_BNDMK_ADDR
12374 and UNSPEC_BNDLX_ADDR.
12375 (ix86_output_indirect_branch_via_reg): Remove handling of
12376 indirect_thunk_prefix_bnd.
12377 (ix86_output_indirect_branch_via_push): Ditto.
12378 (ix86_output_function_return): Ditto.
12379 (ix86_output_indirect_function_return): Ditto.
12380 (avoid_func_arg_motion): Do not handle UNSPEC_BNDSTX.
12381 * config/i386/i386.h (FIXED_REGISTERS): Remove bound registers.
12382 (CALL_USED_REGISTERS): Ditto.
12383 (REG_ALLOC_ORDER): Update for removal of bound registers.
12384 (HI_REGISTER_NAMES): Ditto.
12385 * config/i386/i386.md (UNSPEC_BNDMK, UNSPEC_BNDMK_ADDR, UNSPEC_BNDSTX)
12386 (UNSPEC_BNDLDX, UNSPEC_BNDLDX_ADDR, UNSPEC_BNDCL, UNSPEC_BNDCU)
12387 (UNSPEC_BNDCN, UNSPEC_MPX_FENCE): Remove.
12388 (BND0_REG, BND1_REG, BND2_REG, BND3_REG): Remove
12389 (FIRST_PSEUDO_REG): Update.
12390 (BND): Remove mode iterator.
12391 * config/i386/predicates.md (bnd_mem_operator): Remove.
12393 2018-08-24 Richard Sandiford <richard.sandiford@arm.com>
12395 * tree-vect-stmts.c (vectorizable_bswap): Handle variable-length
12398 2018-08-24 Richard Sandiford <richard.sandiford@arm.com>
12400 * tree-vect-slp.c (vect_transform_slp_perm_load): Separate out
12401 the case in which the permute needs only a single element and
12402 repeats for every vector of the result. Extend that case to
12403 handle variable-length vectors.
12404 * tree-vect-stmts.c (vectorizable_load): Update accordingly.
12406 2018-08-24 H.J. Lu <hongjiu.lu@intel.com>
12409 * dwarf2out.c (save_macinfo_strings): Call set_indirect_string
12410 on DW_MACINFO_start_file for -gsplit-dwarf -g3.
12412 2018-08-24 Richard Biener <rguenther@suse.de>
12414 * cfg.h (struct control_flow_graph): Add edge_flags_allocated and
12415 bb_flags_allocated members.
12416 (auto_flag): New RAII class for allocating flags.
12417 (auto_edge_flag): New RAII class for allocating edge flags.
12418 (auto_bb_flag): New RAII class for allocating bb flags.
12419 * cfgloop.c (verify_loop_structure): Allocate temporary edge
12421 * cfganal.c (dfs_enumerate_from): Remove use of visited sbitmap
12422 in favor of temporarily allocated BB flag.
12423 * hsa-brig.c: Re-order includes.
12424 * hsa-dump.c: Likewise.
12425 * hsa-regalloc.c: Likewise.
12426 * print-rtl.c: Likewise.
12427 * profile-count.c: Likewise.
12429 2018-08-24 Segher Boessenkool <segher@kernel.crashing.org>
12432 * config/rs6000/rs6000.c (toc_relative_expr_p): Check that the base is
12435 2018-08-24 Aldy Hernandez <aldyh@redhat.com>
12438 * wide-int-range.cc (wide_int_range_div): Do not ignore result
12439 from wide_int_range_multiplicative_op.
12441 2018-08-23 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
12443 * tree-vect-data-refs.c (vect_grouped_store_supported): Fix typo
12446 2018-08-23 Giuliano Belinassi <giuliano.belinassi@usp.br>
12448 * genmatch.c (parser::parse_operation): Fix typo 'exapnded'
12451 2018-08-23 Alexander Monakov <amonakov@ispras.ru>
12453 * tree-scalar-evolution.c (final_value_replacement_loop): Dump
12454 full GENERIC expression used for replacement.
12456 2018-08-23 Aldy Hernandez <aldyh@redhat.com>
12458 * tree-vrp.c (abs_extent_range): Remove.
12459 (extract_range_into_wide_ints): Pass wide ints by reference.
12460 (extract_range_from_binary_expr_1): Rewrite the *DIV_EXPR code.
12461 Pass wide ints by reference in all calls to
12462 extract_range_into_wide_ints.
12463 * wide-int-range.cc (wide_int_range_div): New.
12464 * wide-int-range.h (wide_int_range_div): New.
12465 (wide_int_range_includes_zero_p): New.
12466 (wide_int_range_zero_p): New.
12468 2018-08-23 Matthew Malcomson <matthew.malcomson@arm.com>
12470 * config/aarch64/aarch64.md (arches): New enum.
12471 (arch): New enum attr.
12472 (arch_enabled): New attr.
12473 (enabled): Now uses arch_enabled only.
12474 (simd, sve, fp16): Removed attribute.
12475 (fp): Attr now defined in terms of 'arch'.
12476 (*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64, *movti_aarch64,
12477 *movhf_aarch64, <optab><fcvt_target><GPF:mode>2,
12478 <FCVT_F2FIXED:fcvt_fixed_insn><GPF:mode>3,
12479 <FCVT_FIXED2F:fcvt_fixed_insn><GPI:mode>3): Merge 'fp' and 'simd'
12480 attributes into 'arch'.
12481 (*movsf_aarch64, *movdf_aarch64, *movtf_aarch64, *add<mode>3_aarch64,
12482 subdi3, neg<mode>2, <optab><mode>3, one_cmpl<mode>2,
12483 *<NLOGICAL:optab>_one_cmpl<mode>3, *xor_one_cmpl<mode>3,
12484 *aarch64_ashl_sisd_or_int_<mode>3, *aarch64_lshr_sisd_or_int_<mode>3,
12485 *aarch64_ashr_sisd_or_int_<mode>3, *aarch64_sisd_ushl): Convert use of
12486 'simd' attribute into 'arch'.
12487 (load_pair_sw_<SX:mode><SX2:mode>, load_pair_dw_<DX:mode><DX2:mode>,
12488 store_pair_sw_<SX:mode><SX2:mode>, store_pair_dw_<DX:mode><DX2:mode>):
12489 Convert use of 'fp' attribute to 'arch'.
12490 * config/aarch64/aarch64-simd.md (move_lo_quad_internal_<mode>,
12491 move_lo_quad_internal_<mode>): (different modes) Merge 'fp' and 'simd'
12493 (move_lo_quad_internal_be_<mode>, move_lo_quad_internal_be_<mode>):
12494 (different modes) Merge 'fp' and 'simd' into 'arch'.
12495 (*aarch64_combinez<mode>, *aarch64_combinez_be<mode>): Merge 'fp' and
12496 'simd' into 'arch'.
12498 2018-08-23 Segher Boessenkool <segher@kernel.crashing.org>
12500 PR rtl-optimization/87026
12501 * expmed.c (canonicalize_comparison): If we can no longer create
12502 pseudoregisters, don't.
12504 2018-08-23 Richard Earnshaw <rearnsha@arm.com>
12507 * config/arm/arm-protos.h (arm_emit_speculation_barrier): New
12509 * config/arm/arm.c (speculation_barrier_libfunc): New static
12511 (arm_init_libfuncs): Initialize it.
12512 (arm_emit_speculation_barrier): New function.
12513 * config/arm/arm.md (speculation_barrier): Call
12514 arm_emit_speculation_barrier for architectures that do not have
12516 (speculation_barrier_insn): Only match on Armv7 or later.
12518 2018-08-23 Richard Biener <rguenther@suse.de>
12520 PR middle-end/87024
12521 * tree-inline.c (copy_bb): Drop unused __builtin_va_arg_pack_len
12524 2018-08-23 Richard Sandiford <richard.sandiford@arm.com>
12526 * config/aarch64/aarch64.c (aarch64_evpc_sve_tbl): Fix handling
12527 of single-vector TBLs.
12528 (aarch64_vectorize_vec_perm_const): Set one_vector_p when only
12529 one input is given.
12531 2018-08-23 Richard Sandiford <richard.sandiford@arm.com>
12534 * config/aarch64/aarch64.c (aarch64_expand_vec_perm_const_1): Fix
12535 aarch64_evpc_tbl guard.
12537 2018-08-22 Bernd Edlinger <bernd.edlinger@hotmail.de>
12539 * tree-ssa-dse.c (compute_trims): Avoid folding away undefined
12542 2018-08-22 Martin Sebor <msebor@redhat.com>
12544 PR middle-end/87052
12545 * tree-pretty-print.c (pretty_print_string): Add argument.
12546 (dump_generic_node): Call to pretty_print_string with string size.
12548 2018-08-22 Segher Boessenkool <segher@kernel.crashing.org>
12550 PR rtl-optimization/86771
12551 * combine.c (try_combine): Do not allow splitting a resulting PARALLEL
12552 of two SETs into those two SETs, one to be placed at i2, if that SETs
12553 destination is modified between i2 and i3.
12555 2018-08-22 Richard Sandiford <richard.sandiford@arm.com>
12557 PR tree-optimization/86725
12558 * tree-vect-loop.c (vect_inner_phi_in_double_reduction_p): New
12560 (vect_analyze_scalar_cycles_1): Check it.
12562 2018-08-22 Richard Sandiford <richard.sandiford@arm.com>
12564 PR tree-optimization/86725
12565 * tree-vect-loop.c (vect_is_simple_reduction): When treating
12566 an outer loop phi as a double reduction, make sure that the
12567 single user of the phi result is an inner loop phi.
12569 2018-08-22 Richard Sandiford <richard.sandiford@arm.com>
12571 * tree-vect-data-refs.c (vect_analyze_group_access_1): Convert
12572 grouped stores with gaps to a strided group.
12574 2018-08-22 Richard Sandiford <richard.sandiford@arm.com>
12576 * tree-vect-stmts.c (get_group_load_store_type)
12577 (get_load_store_type): Only test STMT_VINFO_STRIDED_P for the
12578 first statement in a group.
12580 2018-08-22 Iain Sandoe <iain@sandoe.co.uk>
12582 * config/darwin.h (LINK_COMMAND_SPEC_A): Sync LTO options with
12583 the sequence used in gcc/gcc.c.
12585 2018-08-22 Iain Sandoe <iain@sandoe.co.uk>
12588 * gcc-ar.c (main): Don’t try to invoke the plug-in if we’re not
12591 2018-08-22 Iain Sandoe <iain@sandoe.co.uk>
12593 * config/darwin10.h (LINK_GCC_C_SEQUENCE_SPEC): Adjust to use the
12594 Darwin10-specific unwinder-shim.
12595 * config/darwin12.h (LINK_GCC_C_SEQUENCE_SPEC): Remove.
12596 * config/rs6000/darwin.h (DARWIN_CRT1_SPEC, DARWIN_DYLIB1_SPEC):
12597 New to cater for Darwin10 Rosetta.
12599 2018-08-22 Iain Sandoe <iain@sandoe.co.uk>
12601 * config/i386/i386.c (ix86_output_addr_diff_elt): Move the MACH-O
12602 specific test before the one for HAVE_AS_GOTOFF_IN_DATA.
12604 2018-08-22 Iain Sandoe <iain@sandoe.co.uk>
12609 * gcc/dwarf2out.c (FUNC_SECOND_SECT_LABEL): New.
12610 (dwarf2out_switch_text_section): Generate a local label for the
12611 second function sub-section and apply it as the second FDE start
12613 * gcc/final.c (final_scan_insn_1): Emit second FDE label after the
12614 second sub-section start.
12616 2018-08-22 Richard Biener <rguenther@suse.de>
12618 PR tree-optimization/86988
12619 * tree-vrp.c (vrp_prop::check_mem_ref): Bail out on VLAs.
12621 2018-08-22 Richard Biener <rguenther@suse.de>
12623 PR tree-optimization/86945
12624 * tree-cfg.c (generate_range_test): Use unsigned arithmetic.
12626 2018-08-22 Alexandre Oliva <oliva@adacore.com>
12628 * config/rs6000/rs6000.c (SMALL_DATA_RELOC, SMALL_DATA_REG): Add
12629 a comment about how uses of r2 for .sdata2 come about.
12631 2018-08-22 Alexandre Oliva <aoliva@redhat.com>
12633 * tree-ssa-reassoc.c (is_reassociable_op): Fix cut&pasto.
12635 2018-08-21 Marek Polacek <polacek@redhat.com>
12637 PR c++/86981, Implement -Wpessimizing-move.
12638 * doc/invoke.texi: Document -Wpessimizing-move.
12640 2018-08-21 Jan Hubicka <jh@suse.cz>
12642 * tree.c (find_decls_types_r): Do not check for redundant typedefs.
12643 * tree.h (is_redundant_typedef): Remove.
12644 * dwarf2out.c (is_redundant_typedef): Turn into static function.
12646 2018-08-21 Jan Hubicka <jh@suse.cz>
12648 * tree.c (free_lang_data_in_decl): Remove types from DECL_CONTEXT
12651 2018-08-21 Tamar Christina <tamar.christina@arm.com>
12653 * expmed.c (extract_low_bits): Reject invalid subregs early.
12655 2018-08-21 Bernd Edlinger <bernd.edlinger@hotmail.de>
12657 PR middle-end/86121
12658 * tree-ssa-strlen.c (adjust_last_stmt): Avoid folding away undefined
12661 2018-08-21 Rasmus Villemoes <rv@rasmusvillemoes.dk>
12663 * config/vxworks.h: Guard vxworks_asm_out_constructor and
12664 vxworks_asm_out_destructor by !HAVE_INITFINI_ARRAY_SUPPORT
12665 * config/vxworks.c: Likewise.
12667 2018-08-21 Rasmus Villemoes <rv@rasmusvillemoes.dk>
12669 * config/vxworks.c: Set targetm.have_ctors_dtors
12670 if HAVE_INITFINI_ARRAY_SUPPORT.
12671 * config/vxworks.h: Set SUPPORTS_INIT_PRIORITY
12672 if HAVE_INITFINI_ARRAY_SUPPORT.
12674 2018-08-21 Rasmus Villemoes <rv@rasmusvillemoes.dk>
12676 * config/vxworks.h: Add $(WIND_BASE)/target/h/wrn/coreip to
12677 default search path for VxWorks < 7.
12679 2018-08-21 Bernd Edlinger <bernd.edlinger@hotmail.de>
12681 * gimple-ssa-sprintf.c (decl_constant_value): Remove.
12682 (get_format_string): Refer to c_getstr.
12684 2018-08-21 Tom de Vries <tdevries@suse.de>
12686 * cgraph.h (debuginfo_early_init, debuginfo_init, debuginfo_fini)
12687 (debuginfo_start, debuginfo_stop, debuginfo_early_start)
12688 (debuginfo_early_stop): Declare.
12689 * cgraphunit.c (debuginfo_early_init, debuginfo_init, debuginfo_fini)
12690 (debuginfo_start, debuginfo_stop, debuginfo_early_start)
12691 (debuginfo_early_stop): New function.
12692 (symbol_table::finalize_compilation_unit): Call debuginfo_early_start
12693 and debuginfo_early_stop.
12694 * dwarf2out.c (dwarf2out_finish, dwarf2out_early_finish): Dump dwarf.
12695 * toplev.c (compile_file): Call debuginfo_start and debuginfo_stop.
12696 (general_init): Call debuginfo_early_init.
12697 (finalize): Call debuginfo_fini.
12698 (do_compile): Call debuginfo_init.
12699 * doc/invoke.texi (@gccoptlist): Add -fdump-debug and
12700 -fdump-early-debug.
12701 (@item -fdump-debug, @item -fdump-earlydebug): Add.
12703 2018-08-21 Tom de Vries <tdevries@suse.de>
12705 * dwarf2out.c (print_dw_val, print_loc_descr, print_die): Handle
12706 flag_dump_noaddr and flag_dump_unnumbered.
12708 2018-08-21 Aldy Hernandez <aldyh@redhat.com>
12710 * wide-int-range.cc (wide_int_range_abs): New.
12711 (wide_int_range_order_set): Rename from wide_int_range_min_max.
12712 * wide-int-range.h (wide_int_range_abs): New.
12713 (wide_int_range_min_max): New.
12714 * tree-vrp.c (extract_range_from_unary_expr): Rewrite ABS_EXPR
12715 case to call wide_int_range_abs.
12716 Rewrite MIN/MAX_EXPR to call wide_int_range_min_max.
12717 (extract_range_from_abs_expr): Delete.
12719 2018-08-20 Michael Meissner <meissner@linux.ibm.com>
12722 * config/rs6000/rs6000.md (extendsi<mode>2): Change constraints
12723 from 'Y' to 'YZ' to enable the LWAX instruction to be generated
12726 2018-08-20 Nathan Sidwell <nathan@acm.org>
12727 Jeff Law <law@redhat.com>
12729 * config/s390/s390-c (s390_macro_to_expand): Use cpp_macro_p.
12730 * config/spu/spu-c.c (spu_macro_to_expand): Likewise.
12732 2018-08-20 David Malcolm <dmalcolm@redhat.com>
12735 * attribs.c (diag_attr_exclusions): Add auto_diagnostic_group instance.
12736 (decl_attributes): Likewise.
12737 * calls.c (maybe_warn_nonstring_arg): Add auto_diagnostic_group
12739 * cgraphunit.c (maybe_diag_incompatible_alias): Likewise.
12740 * diagnostic-core.h (class auto_diagnostic_group): New class.
12741 * diagnostic.c (diagnostic_initialize): Initialize the new fields.
12742 (diagnostic_report_diagnostic): Handle the first diagnostics within
12744 (emit_diagnostic): Add auto_diagnostic_group instance.
12745 (inform): Likewise.
12746 (inform_n): Likewise.
12747 (warning): Likewise.
12748 (warning_at): Likewise.
12749 (warning_n): Likewise.
12750 (pedwarn): Likewise.
12751 (permerror): Likewise.
12753 (error_n): Likewise.
12754 (error_at): Likewise.
12756 (fatal_error): Likewise.
12757 (internal_error): Likewise.
12758 (internal_error_no_backtrace): Likewise.
12759 (auto_diagnostic_group::auto_diagnostic_group): New ctor.
12760 (auto_diagnostic_group::~auto_diagnostic_group): New dtor.
12761 * diagnostic.h (struct diagnostic_context): Add fields
12762 "diagnostic_group_nesting_depth",
12763 "diagnostic_group_emission_count", "begin_group_cb",
12765 * gimple-ssa-isolate-paths.c (find_implicit_erroneous_behavior):
12766 Add auto_diagnostic_group instance(s).
12767 (find_explicit_erroneous_behavior): Likewise.
12768 * gimple-ssa-warn-alloca.c (pass_walloca::execute): Likewise.
12769 * gimple-ssa-warn-restrict.c (maybe_diag_offset_bounds): Likewise.
12770 * gimplify.c (warn_implicit_fallthrough_r): Likewise.
12771 (gimplify_va_arg_expr): Likewise.
12772 * hsa-gen.c (HSA_SORRY_ATV): Likewise.
12773 (HSA_SORRY_AT): Likewise.
12774 * ipa-devirt.c (compare_virtual_tables): Likewise.
12775 (warn_odr): Likewise.
12776 * multiple_target.c (expand_target_clones): Likewise.
12777 * opts-common.c (cmdline_handle_error): Likewise.
12778 * reginfo.c (globalize_reg): Likewise.
12779 * substring-locations.c (format_warning_n_va): Likewise.
12780 * tree-inline.c (expand_call_inline): Likewise.
12781 * tree-ssa-ccp.c (pass_post_ipa_warn::execute): Likewise.
12782 * tree-ssa-loop-niter.c
12783 (do_warn_aggressive_loop_optimizations): Likewise.
12784 * tree-ssa-uninit.c (warn_uninit): Likewise.
12785 * tree.c (warn_deprecated_use): Likewise.
12787 2018-08-20 H.J. Lu <hongjiu.lu@intel.com>
12790 * config/i386/i386.md (eh_return): Always update EH return
12791 address in word_mode.
12793 2018-08-20 Chung-Lin Tang <cltang@codesourcery.com>
12795 * targhooks.c (std_gimplify_va_arg_expr): Properly handle case of when
12796 TARGET_SPLIT_COMPLEX_ARG is defined.
12798 2018-08-20 Bernd Edlinger <bernd.edlinger@hotmail.de>
12800 * expr.c (store_field): Change gcc_assert to gcc_checking_assert.
12802 2018-08-20 Bernd Edlinger <bernd.edlinger@hotmail.de>
12805 * expr.c (expand_assignment): Assert that bitpos is positive.
12806 (store_field): Likewise
12807 (expand_expr_real_1): Make sure that bitpos is positive.
12808 * config/alpha/alpha.h (CONSTANT_ADDRESS_P): Avoid signed
12811 2018-08-20 Nathan Sidwell <nathan@acm.org>
12813 * Makefile.in (CPP_ID_DATA_H): Delete.
12814 (CPP_INTERNAL_H): Don't add it.
12815 (GTFILES): Replace CPP_ID_DATA_H with CPPLIB_H.
12816 * gengtype.c (open_base_files): Replace cpp-id-data.h with cpplib.h
12818 2018-08-20 Richard Biener <rguenther@suse.de>
12820 PR tree-optimization/78655
12821 * tree-vrp.c (extract_range_from_binary_expr_1): Make
12822 pointer + offset nonnull if either operand is nonnull work.
12824 2018-08-20 Tom de Vries <tdevries@suse.de>
12826 * dwarf2out.c (add_scalar_info): Don't add reference to existing die
12827 unless the referenced die describes the added property using
12828 DW_AT_location or DW_AT_const_value. Fall back to exprloc case.
12829 Otherwise, add a DW_AT_location to the referenced die.
12831 2018-08-19 Uros Bizjak <ubizjak@gmail.com>
12834 * config/i386/i386.c (ix86_rtx_costs) [case SET]: Check source for
12835 register_operand when calling ix86_set_reg_reg_cost.
12836 [case CONST_INT, case CONST, case LABEL_REF, case SYMBOL_REF]:
12837 Set *total to 0 for operands that satisfy x86_64_immediate_operand
12838 predicate and to 1 otherwise.
12840 2018-08-18 Iain Sandoe <iain@sandoe.co.uk>
12842 * config/darwin.c (darwin_override_options): If -gsplit-dwarf is set,
12843 emit a diagnostic that it is not supported and reset the option.
12844 * config/darwin.h (DRIVER_SELF_SPECS): Note that gsplit-dwarf is not
12845 supported and consume the option. (ASM_FINAL_SPEC): New.
12847 2018-08-17 Segher Boessenkool <segher@kernel.crashing.org>
12849 * doc/md.texi (Patterns): Use @ref instead of @xref in the middle of
12852 2018-08-17 Sandra Loosemore <sandra@codesourcery.com>
12854 C-SKY port: Documentation
12856 * doc/extend.texi (C-SKY Function Attributes): New section.
12857 * doc/invoke.texi (Option Summary): Add C-SKY options.
12858 (C-SKY Options): New section.
12859 * doc/md.texi (Machine Constraints): Document C-SKY constraints.
12861 2018-08-17 Jojo <jijie_rong@c-sky.com>
12862 Huibin Wang <huibin_wang@c-sky.com>
12863 Sandra Loosemore <sandra@codesourcery.com>
12864 Chung-Lin Tang <cltang@codesourcery.com>
12866 C-SKY port: Backend implementation
12868 * config/csky/*: New.
12869 * common/config/csky/*: New.
12871 2018-08-17 Jojo <jijie_rong@c-sky.com>
12872 Huibin Wang <huibin_wang@c-sky.com>
12873 Sandra Loosemore <sandra@codesourcery.com>
12874 Chung-Lin Tang <cltang@codesourcery.com>
12875 Andrew Jenner <andrew@codesourcery.com>
12877 C-SKY port: Configury
12879 * config.gcc (csky-*-*): New.
12880 * configure.ac: Add csky to targets for dwarf2 debug_line support.
12881 * configure: Regenerated.
12883 2018-08-17 David Malcolm <dmalcolm@redhat.com>
12885 * dump-context.h: Include "dumpfile.h".
12886 (dump_context::dump_printf_va): Convert final param from va_list
12887 to va_list *. Convert from ATTRIBUTE_PRINTF to
12888 ATTRIBUTE_GCC_DUMP_PRINTF.
12889 (dump_context::dump_printf_loc_va): Likewise.
12890 * dumpfile.c: Include "stringpool.h".
12891 (make_item_for_dump_printf_va): Delete.
12892 (make_item_for_dump_printf): Delete.
12893 (class dump_pretty_printer): New class.
12894 (dump_pretty_printer::dump_pretty_printer): New ctor.
12895 (dump_pretty_printer::emit_items): New member function.
12896 (dump_pretty_printer::emit_any_pending_textual_chunks): New member
12898 (dump_pretty_printer::emit_item): New member function.
12899 (dump_pretty_printer::stash_item): New member function.
12900 (dump_pretty_printer::format_decoder_cb): New member function.
12901 (dump_pretty_printer::decode_format): New member function.
12902 (dump_context::dump_printf_va): Reimplement in terms of
12903 dump_pretty_printer.
12904 (dump_context::dump_printf_loc_va): Convert final param from va_list
12906 (dump_context::begin_scope): Reimplement call to
12907 make_item_for_dump_printf.
12908 (dump_printf): Update for change to dump_printf_va.
12909 (dump_printf_loc): Likewise.
12910 (selftest::test_capture_of_dump_calls): Convert "stmt" from
12911 greturn * to gimple *. Add a test_decl. Add tests of dump_printf
12912 with %T, %E, and %G.
12913 * dumpfile.h (ATTRIBUTE_GCC_DUMP_PRINTF): New macro.
12914 (dump_printf): Replace ATTRIBUTE_PRINTF_2 with
12915 ATTRIBUTE_GCC_DUMP_PRINTF (2, 3).
12916 (dump_printf_loc): Replace ATTRIBUTE_PRINTF_3 with
12917 ATTRIBUTE_GCC_DUMP_PRINTF (3, 0).
12918 * tree-vect-data-refs.c (vect_lanes_optab_supported_p): Convert
12919 use of HOST_WIDE_INT_PRINT_DEC on unsigned HOST_WIDE_INT "count"
12920 within a dump_printf_loc call to "%wu".
12921 (vector_alignment_reachable_p): Merge two dump_printf[_loc] calls,
12922 converting a use of HOST_WIDE_INT_PRINT_DEC to "%wd". Add a
12923 missing space after "=".
12924 * tree-vect-loop.c (vect_analyze_loop_2) Within a dump_printf
12925 call, convert use of HOST_WIDE_INT_PRINT_DEC to "%wd".
12926 * tree-vect-slp.c (vect_slp_bb): Within a dump_printf_loc call,
12927 convert use of HOST_WIDE_INT_PRINT_UNSIGNED to "%wu".
12928 * tree-vectorizer.c (try_vectorize_loop_1): Likewise. Remove
12929 duplicate "vectorized" from message.
12931 2018-08-17 Szabolcs Nagy <szabolcs.nagy@arm.com>
12933 * config/arm/arm-builtins.c (arm_init_simd_builtin_types): Clear
12934 polyNxK_t element's TYPE_STRING_FLAG.
12936 2018-08-17 Segher Boessenkool <segher@kernel.crashing.org>
12938 * config/rs6000/rs6000.md (*cbranch, *creturn): Name these patterns
12939 (they were unnamed before). Fix comments.
12941 2018-08-17 Nathan Sidwell <nathan@acm.org>
12943 * cppbuiltin.c: Include "cpplib.h", not "cpp-id-data.h".
12945 2018-08-17 Richard Biener <rguenther@suse.de>
12947 PR tree-optimization/86841
12948 * wide-int-range.cc (wide_int_range_lshift): Use to_uhwi.
12950 2018-08-17 Martin Liska <mliska@suse.cz>
12952 * common.opt: Remove Warn, Init and Report for options with
12953 Ignore/Deprecated flag. Warning is done automatically for
12955 * config/i386/i386.opt: Likewise.
12956 * config/ia64/ia64.opt: Likewise.
12957 * config/rs6000/rs6000.opt: Likewise.
12958 * cppbuiltin.c (define_builtin_macros_for_compilation_flags):
12959 Remove usage of flag_check_pointer_bounds.
12960 * lto-wrapper.c (merge_and_complain): Do not handle
12961 OPT_fcheck_pointer_bounds.
12962 (append_compiler_options): Likewise.
12963 * opt-functions.awk: Do not handle Deprecated.
12964 * optc-gen.awk: Check that Var, Report and Init are not
12965 used for an option with Ignore/Deprecated flag.
12966 * opts-common.c (decode_cmdline_option): Do not report
12968 (read_cmdline_option): Report warning for OPT_SPECIAL_deprecated
12970 * opts.h (struct cl_option): Remove cl_deprecated flag.
12971 (CL_ERR_DEPRECATED): Remove error enum value.
12973 2018-08-17 Richard Biener <rguenther@suse.de>
12975 PR middle-end/86505
12976 * tree-inline.c (copy_bb): When inlining __builtin_va_arg_pack_len ()
12977 across a va-arg-pack using call adjust its return value accordingly.
12979 2018-08-16 Martin Sebor <msebor@redhat.com>
12981 PR tree-optimization/86853
12982 * gimple-ssa-sprintf.c (struct format_result): Rename member.
12983 (struct fmtresult): Add member and initialize it in ctors.
12984 (format_character): Handle %C. Extend range to NUL. Set MAYFAIL.
12985 (format_string): Handle %S the same as %ls. Set MAYFAIL.
12986 (format_directive): Set POSUNDER4K when MAYFAIL is set.
12987 (parse_directive): Handle %C same as %c.
12988 (sprintf_dom_walker::compute_format_length): Adjust.
12989 (is_call_safe): Adjust.
12991 2018-08-16 Bernd Edlinger <bernd.edlinger@hotmail.de>
12993 * builtins.c (c_strlen): Add new parameter eltsize. Use it
12994 for determining how to count the elements.
12995 * builtins.h (c_strlen): Adjust prototype.
12996 * expr.c (string_constant): Add new parameter mem_size.
12997 Set *mem_size appropriately.
12998 * expr.h (string_constant): Adjust protoype.
12999 * gimple-fold.c (get_range_strlen): Add new parameter eltsize.
13000 * gimple-fold.h (get_range_strlen): Adjust prototype.
13001 * gimple-ssa-sprintf.c (get_string_length): Add new parameter eltsize.
13002 (format_string): Call get_string_length with eltsize.
13004 2018-08-16 David Malcolm <dmalcolm@redhat.com>
13006 * diagnostic.c (default_diagnostic_start_span_fn): Call pp_string
13007 to emit the span, rather than setting it as the prefix.
13009 2018-08-16 David Malcolm <dmalcolm@redhat.com>
13011 * diagnostic-show-locus.c (layout::start_annotation_line): Add
13012 "margin_char" parameter, defaulting to space. Use it in place
13013 of pp_space for the initial part of the margin.
13014 (layout::print_leading_fixits): Use '+' when filling the margin
13015 of line-insertion fix-it hints.
13017 2018-08-16 Segher Boessenkool <segher@kernel.crashing.org>
13019 * config/rs6000/rs6000.md (two unnamed define_insn and define_split):
13022 2018-08-16 Segher Boessenkool <segher@kernel.crashing.org>
13024 * config/rs6000/altivec.md: Don't set length attribute to the default
13026 * config/rs6000/darwin.md: Ditto.
13027 * config/rs6000/dfp.md: Ditto.
13028 * config/rs6000/htm.md: Ditto.
13029 * config/rs6000/rs6000.md: Ditto.
13030 * config/rs6000/sync.md: Ditto.
13031 * config/rs6000/vsx.md: Ditto.
13033 2018-08-16 Segher Boessenkool <segher@kernel.crashing.org>
13035 * config/rs6000/altivec.md: Don't set length attribute to the default
13036 value, for branch instructions.
13037 * config/rs6000/darwin.md: Ditto.
13038 * config/rs6000/rs6000.md: Ditto.
13040 2018-08-16 Segher Boessenkool <segher@kernel.crashing.org>
13042 * config/rs6000/rs6000.md (length): Always define as const_int 4.
13043 (unnamed conditional branch define_insn): Set length to 4 or 8
13044 depending on offset.
13045 (<bd>_<mode>): Similar, for alternative 0.
13046 (<bd>tf_<mode>): Ditto.
13048 2018-08-16 Tamar Christina <tamar.christina@arm.com>
13050 * expr.c (copy_blkmode_to_reg): Perform larger copies when safe.
13052 2018-08-16 Matthew Malcomson <matthew.malcomson@arm.com>
13054 * doc/rtl.texi: Replace old RTX class names with new names.
13057 2018-08-16 Vlad Lazar <vlad.lazar@arm.com>
13059 * expmed.h (canonicalize_comparison): New declaration.
13060 * expmed.c (canonicalize_comparison, equivalent_cmp_code): New function.
13061 * expmed.c (emit_store_flag_1): Add call to canonicalize_comparison.
13062 * optabs.c (prepare_cmp_insn): Likewise.
13063 * rtl.h (unsigned_condition_p): New function which checks if a
13064 comparison operator is unsigned.
13066 2018-08-16 Nathan Sidwell <nathan@acm.org>
13068 * config/rs6000/rs6000-c.c (rs6000_macro_to_expend): Use cpp_macro_p.
13069 * config/powerpcspc/powerpcspe-c.c (rs6000_macro_to_expend): Likewise.
13071 2018-08-16 Tamar Christina <tamar.christina@arm.com>
13074 * config/arm/arm.c (arm_can_change_mode_class): Disallow subreg.
13075 * config/arm/neon.md (movv4hf, movv8hf): Refactored to..
13076 (mov<mov>): ..this and enable unconditionally.
13078 2018-08-16 Tamar Christina <tamar.christina@arm.com>
13080 * config/arm/neon.md (*neon_mov<mode>): Remove reg-to-reg alternative.
13082 2018-08-16 Sam Tebbs <sam.tebbs@arm.com>
13084 * config/aarch64/aarch64.opt (mlow-precision-recip-sqrt)
13085 (mlow-precision-sqrt, mlow-precision-div, mverbose-cost-dump): Replace
13086 "Common" with "Target".
13088 2018-08-15 Uros Bizjak <ubizjak@gmail.com>
13090 * config/i386/i386.opt (mmitigate-rop): Mark as deprecated.
13091 * doc/invoke.texi (mmitigate-rop): Remove.
13092 * config/i386/i386.c: Do not include "regrename.h".
13093 (ix86_rop_should_change_byte_p, reg_encoded_number)
13094 (ix86_get_modrm_for_rop, set_rop_modrm_reg_bits, ix86_mitigate_rop):
13096 (ix86_reorg): Remove call to ix86_mitigate_rop.
13097 * config/i386/i386.md (attr "modrm_class"): Remove.
13098 (cmp<mode>_ccno_1, mov<mode>_xor, movstrict<mode>_xor)
13099 (x86_mov<mode>cc_0_m1. x86_mov<mode>cc_0_m1_se)
13100 (x86_mov<mode>cc_0_m1_neg): Remove modrm_class attribute override.
13102 2018-08-15 Will Schmidt <will_schmidt@vnet.ibm.com>
13104 * config/rs6000/rs600.c (rs6000_gimple_fold_builtin): Add entries to
13105 allow folding of mergeh() and mergel() for the float and double types.
13106 (fold_mergehl_helper): Rework to handle building a permute tree
13109 2018-08-15 Uros Bizjak <ubizjak@gmail.com>
13111 * config/i386/i386.c (expand_vec_perm_movs): Enable V4SFmode
13114 2018-08-15 David Malcolm <dmalcolm@redhat.com>
13116 * common.opt (fdiagnostics-show-labels): New option.
13117 * diagnostic-show-locus.c (class layout_range): Add field
13119 (class layout): Add field "m_show_labels_p".
13120 (layout_range::layout_range): Add param "label" and use it to
13121 initialize m_label.
13122 (make_range): Pass in NULL for new "label" param of layout_range's
13124 (layout::layout): Initialize m_show_labels_p.
13125 (layout::maybe_add_location_range): Pass in loc_range->m_label
13126 when constructing layout_range instances.
13127 (struct line_label): New struct.
13128 (layout::print_any_labels): New member function.
13129 (layout::print_line): Call it if label-printing is enabled.
13130 (selftest::test_one_liner_labels): New test.
13131 (selftest::test_diagnostic_show_locus_one_liner): Call it.
13132 * diagnostic.c (diagnostic_initialize): Initialize
13133 context->show_labels_p.
13134 * diagnostic.h (struct diagnostic_context): Add field
13136 * doc/invoke.texi (Diagnostic Message Formatting Options): Add
13137 -fno-diagnostics-show-labels.
13138 * dwarf2out.c (gen_producer_string): Add
13139 OPT_fdiagnostics_show_labels to the ignored options.
13140 * gcc-rich-location.c (gcc_rich_location::add_expr): Add "label"
13142 (gcc_rich_location::maybe_add_expr): Likewise.
13143 * gcc-rich-location.h (gcc_rich_location::gcc_rich_location): Add
13144 label" param, defaulting to NULL.
13145 (gcc_rich_location::add_expr): Add "label" param.
13146 (gcc_rich_location::maybe_add_expr): Likewise.
13147 (class text_range_label): New class.
13148 (class range_label_for_type_mismatch): New class.
13149 * gimple-ssa-sprintf.c (fmtwarn): Pass NULL for new label params
13150 of format_warning_va.
13151 (fmtwarn_n): Likewise for new params of format_warning_n_va.
13152 * lto-wrapper.c (merge_and_complain): Add
13153 OPT_fdiagnostics_show_labels to the "pick one setting" options.
13154 (append_compiler_options): Likewise to the dropped options.
13155 (append_diag_options): Likewise to the passed-on options.
13156 * opts.c (common_handle_option): Handle the new option.
13157 * selftest-diagnostic.c
13158 (test_diagnostic_context::test_diagnostic_context): Enable
13160 * substring-locations.c: Include "gcc-rich-location.h".
13161 (format_warning_n_va): Add "fmt_label" and "param_label" params
13162 and use them as appropriate.
13163 (format_warning_va): Add "fmt_label" and "param_label" params,
13164 passing them on to format_warning_n_va.
13165 (format_warning_at_substring): Likewise.
13166 (format_warning_at_substring_n): Likewise.
13167 * substring-locations.h (format_warning_va): Add "fmt_label" and
13168 "param_label" params.
13169 (format_warning_n_va): Likewise.
13170 (format_warning_at_substring): Likewise.
13171 (format_warning_at_substring_n): Likewise.
13172 * toplev.c (general_init): Initialize global_dc->show_labels_p.
13174 2018-08-15 Qing Zhao <qing.zhao@oracle.com>
13177 * builtins.c (expand_builtin_memcmp): Do not expand the call
13178 when overflow is detected.
13180 2018-08-15 Martin Sebor <msebor@redhat.com>
13182 PR tree-optimization/71625
13183 * config/aarch64/aarch64-builtins.c
13184 (aarch64_init_simd_builtin_types): Clear Poly8_t's TYPE_STRING_FLAG.
13186 2018-08-15 Ilya Leoshkevich <iii@linux.ibm.com>
13188 * config/s390/s390.c (s390_reorg): Remove loop.
13190 2018-08-15 Iain Sandoe <iain@sandoe.co.uk>
13193 (darwin_function_switched_text_sections): Delete.
13194 * gcc/config/darwin.h
13195 (TARGET_ASM_FUNCTION_SWITCHED_TEXT_SECTIONS): Likewise.
13197 2018-08-15 Iain Sandoe <iain@sandoe.co.uk>
13200 * config/darwin.h: (DEBUG_STR_OFFSETS_SECTION, DEBUG_LOCLISTS_SECTION,
13201 DEBUG_RNGLISTS_SECTION) new macros. (DEBUG_PUBNAMES_SECTION,
13202 DEBUG_PUBTYPES_SECTION) update to include GNU variant.
13204 2018-08-15 Martin Liska <mliska@suse.cz>
13206 PR tree-optimization/86925
13207 * predict.c (expr_expected_value_1): When taking
13208 later predictor, assign also probability.
13209 Use fold_build2_initializer_loc in order to fold
13210 the expression in -frounding-math.
13212 2018-08-14 Allan Sandfeld Jensen <allan.jensen@qt.io>
13214 * config/i386/i386.c (expand_vec_perm_movs): New method matching movs
13216 (expand_vec_perm_1): Try the new method.
13218 2018-08-14 Ilya Leoshkevich <iii@linux.ibm.com>
13221 * lra-lives.c (remove_some_program_points_and_update_live_ranges):
13222 Check whether lra_live_max_point is 0 before dividing.
13224 2018-08-14 Martin Sebor <msebor@redhat.com>
13226 PR tree-optimization/86650
13227 * tree-vrp.c (vrp_prop::check_array_ref): Print an inform message.
13228 (vrp_prop::check_mem_ref): Same.
13230 2018-08-13 Liu Hao <lh_mouse@126.com>
13232 * pretty-print.c (eat_esc_sequence): Swap the foreground and
13233 background colors if the COMMON_LVB_REVERSE_VIDEO flag is set,
13234 and clear it thereafter, as it only works for DBCS.
13236 2018-08-13 Liu Hao <lh_mouse@126.com>
13238 * pretty-print.c (mingw_ansi_fputs): Do not call _close() on the
13239 handle returned by _get_osf_handle().
13241 2018-08-13 Will Schmidt <will_schmidt@vnet.ibm.com>
13243 * gcc/config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add support
13244 for folding vec_perm.
13246 2018-08-13 Will Schmidt <will_schmidt@vnet.ibm.com>
13248 * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin):
13249 Add support for gimple-folding of vec_pack() and vec_unpack()
13252 2018-08-13 Will Schmidt <will_schmidt@vnet.ibm.com>
13254 * config/rs6000/rs6000.c (rs6000_builtin_valid_without_lhs): Add
13255 vec_xst variants to the list.
13256 (rs6000_gimple_fold_builtin): Add support for folding unaligned
13257 vector loads and stores.
13259 2018-08-13 David Edelsohn <dje.gcc@gmail.com>
13261 * config.gcc (rs6000-ibm-aix4.x): Delete.
13262 (rs6000-ibm-aix5.1): Delete.
13263 (rs6000-ibm-aix5.2): Delete.
13264 (rs6000-ibm-aix5.3): Delete.
13265 * config/rs6000/aix43.h: Delete.
13266 * config/rs6000/aix51.h: Delete.
13267 * config/rs6000/aix52.h: Delete.
13268 * config/rs6000/t-aix43: Delete.
13270 2018-08-13 Ilya Leoshkevich <iii@linux.ibm.com>
13272 * config/s390/s390.c (s390_decompose_constant_pool_ref):
13274 (s390_decompose_address): Factor out constant pool ref
13277 2018-08-12 Chung-Ju Wu <jasonwucj@gmail.com>
13279 * config/nds32/nds32-predicates.c
13280 (nds32_can_use_bclr_p): Change return type as bool.
13281 (nds32_can_use_bset_p): Ditto.
13282 (nds32_can_use_btgl_p): Ditto.
13283 (nds32_can_use_bitci_p): Ditto.
13284 * config/nds32/nds32-protos.h
13285 (nds32_can_use_bclr_p): Change declaration.
13286 (nds32_can_use_bset_p): Ditto.
13287 (nds32_can_use_btgl_p): Ditto.
13288 (nds32_can_use_bitci_p): Ditto.
13290 2018-08-12 Chung-Ju Wu <jasonwucj@gmail.com>
13292 * config/nds32/nds32.c (nds32_expand_prologue, nds32_expand_epilogue):
13293 Support -msched-prolog-epilog option.
13294 * config/nds32/nds32.opt (msched-prolog-epilog): New option.
13296 2018-08-12 Chung-Ju Wu <jasonwucj@gmail.com>
13298 * common/config/nds32/nds32-common.c
13299 (nds32_option_optimization_table): Enalbe -malways-align.
13301 2018-08-12 Chung-Ju Wu <jasonwucj@gmail.com>
13303 * config.gcc (nds32*): Add nds32_isr.h and nds32_init.inc in
13305 * common/config/nds32/nds32-common.c (nds32_handle_option): Handle
13306 OPT_misr_secure_ case.
13307 * config/nds32/nds32-isr.c: Implementation of backward compatibility.
13308 * config/nds32/nds32-protos.h (nds32_isr_function_critical_p): New.
13309 * config/nds32/nds32.c (nds32_attribute_table): Add critical and
13311 * config/nds32/nds32.h (nds32_isr_nested_type): Add NDS32_CRITICAL.
13312 (nds32_isr_info): New field security_level.
13313 (TARGET_ISR_VECTOR_SIZE_4_BYTE): New macro.
13314 * config/nds32/nds32.md (return_internal): Consider critical attribute.
13315 * config/nds32/nds32.opt (misr-secure): New option.
13316 * config/nds32/nds32_init.inc: New file.
13317 * config/nds32/nds32_isr.h: New file.
13319 2018-08-11 John David Anglin <danglin@gcc.gnu.org>
13321 * config/pa/pa.md (UNSPEC_MEMORY_BARRIER): New unspec enum.
13322 Update comment for atomic instructions.
13323 (atomic_storeqi, atomic_storehi, atomic_storesi, atomic_storesf,
13324 atomic_loaddf, atomic_loaddf_1, atomic_storedf, atomic_storedf_1):
13326 (atomic_loaddi): Revise fence expansion to only emit fence prior to
13327 load for __ATOMIC_SEQ_CST model.
13328 (atomic_loaddi_1): Remove float register target.
13329 (atomic_storedi): Handle CONST_INT values.
13330 (atomic_storedi_1): Remove float register source. Add special case
13332 (memory_barrier): New expander and insn.
13334 2018-08-11 Jakub Jelinek <jakub@redhat.com>
13336 PR tree-optimization/86835
13337 * tree-ssa-math-opts.c (insert_reciprocals): Even when inserting
13338 new_stmt after def_gsi, make sure to insert new_square_stmt after
13339 that stmt, not 2 stmts before it.
13341 2018-08-10 Alexander Monakov <amonakov@ispras.ru>
13344 * config/i386/i386.md (<s>mul<mode>3_highpart): Use DWIH mode iterator
13347 2018-08-10 Martin Liska <mliska@suse.cz>
13350 * builtin-types.def (BT_FN_LONG_LONG_LONG_DOUBLE): Add new
13352 * builtins.c (expand_builtin_expect_with_probability):
13354 (expand_builtin_expect_with_probability): New function.
13355 (build_builtin_expect_predicate): Add new argumnet probability
13356 for BUILT_IN_EXPECT_WITH_PROBABILITY.
13357 (fold_builtin_expect):
13360 * builtins.def (BUILT_IN_EXPECT_WITH_PROBABILITY):
13361 * builtins.h (fold_builtin_expect): Set new argument.
13362 * doc/extend.texi: Document __builtin_expect_with_probability.
13363 * doc/invoke.texi: Likewise.
13364 * gimple-fold.c (gimple_fold_call): Pass new argument.
13365 * ipa-fnsummary.c (find_foldable_builtin_expect): Handle
13366 also BUILT_IN_EXPECT_WITH_PROBABILITY.
13367 * predict.c (get_predictor_value): New function.
13368 (expr_expected_value): Add new argument probability. Assume
13369 that predictor and probability are always non-null.
13370 (expr_expected_value_1): Likewise. For __builtin_expect and
13371 __builtin_expect_with_probability set probability. Handle
13372 combination in binary expressions.
13373 (tree_predict_by_opcode): Simplify code by simply calling
13374 get_predictor_value.
13375 (pass_strip_predict_hints::execute): Add handling of
13376 BUILT_IN_EXPECT_WITH_PROBABILITY.
13377 * predict.def (PRED_BUILTIN_EXPECT_WITH_PROBABILITY): Add
13379 * tree.h (DECL_BUILT_IN_P): New function.
13381 2018-08-10 Martin Liska <mliska@suse.cz>
13383 PR tree-optimization/85799
13384 * passes.def: Add argument for pass_strip_predict_hints.
13385 * predict.c (class pass_strip_predict_hints): Add new argument
13387 (strip_predictor_early): New function.
13388 (pass_strip_predict_hints::execute): Call the function to
13390 (strip_predict_hints): New function.
13391 * predict.def: Fix comment.
13393 2018-08-10 Thomas Preud'homme <thomas.preudhomme@linaro.org>
13395 * Makefile.in: Clarify which tm.texi to copy over to assert the
13396 right to grant a GFDL license for all.
13398 2018-08-09 Jeff Law <law@redhat.com>
13400 * config/m68k/m68k.c (m68k_adjust_decorated_operand): Remove
13403 2018-08-09 Andreas Schwab <schwab@linux-m68k.org>
13405 * config/m68k/m68k-protos.h (m68k_final_prescan_insn): Remove
13408 2018-08-09 Richard Sandiford <richard.sandiford@arm.com>
13410 * tree-vect-loop.c (vectorizable_reduction): Allow inner-loop
13411 reductions for variable-length vectors.
13413 2018-08-09 David Malcolm <dmalcolm@redhat.com>
13416 * common.opt (fdiagnostics-show-line-numbers): New option.
13417 * diagnostic-show-locus.c (class layout): Add fields
13418 "m_show_line_numbers_p" and "m_linenum_width";
13419 (num_digits): New function.
13420 (test_num_digits): New function.
13421 (layout::layout): Initialize new fields. Update m_x_offset
13422 logic to handle any left margin.
13423 (layout::print_source_line): Print line number when requested.
13424 (layout::start_annotation_line): New member function.
13425 (layout::print_annotation_line): Call it.
13426 (layout::print_leading_fixits): Likewise.
13427 (layout::print_trailing_fixits): Likewise. Update calls to
13428 move_to_column for new parameter.
13429 (layout::get_x_bound_for_row): Add "add_left_margin" param and use
13430 it to potentially call start_annotation_line.
13431 (layout::show_ruler): Call start_annotation_line.
13432 (selftest::test_line_numbers_multiline_range): New selftest.
13433 (selftest::diagnostic_show_locus_c_tests): Call test_num_digits
13434 and selftest::test_line_numbers_multiline_range.
13435 * diagnostic.c (diagnostic_initialize): Initialize
13436 show_line_numbers_p.
13437 * diagnostic.h (struct diagnostic_context): Add field
13438 "show_line_numbers_p".
13439 * doc/invoke.texi (Diagnostic Message Formatting Options): Add
13440 -fno-diagnostics-show-line-numbers.
13441 * dwarf2out.c (gen_producer_string): Add
13442 OPT_fdiagnostics_show_line_numbers to the ignored options.
13443 * lto-wrapper.c (merge_and_complain): Likewise to the "pick
13444 one setting" options.
13445 (append_compiler_options): Likewise to the dropped options.
13446 (append_diag_options): Likewise to the passed-on options.
13447 * opts.c (common_handle_option): Handle the new option.
13448 * toplev.c (general_init): Set up global_dc->show_line_numbers_p.
13450 2018-08-09 Kelvin Nilsen <kelvin@gcc.gnu.org>
13452 * doc/extend.texi (PowerPC AltiVec Built-in Functions Available on
13453 ISA 2.07): Correct spelling of bcdsub to be __builtin_bcdsub. Add
13454 third argument of type "const signed char" to descriptions of
13455 __builtin_bcdadd, __builtin_bcdadd_lt, __builtin_bcdadd_eq,
13456 __builtin_bcdadd_gt, __builtin_bcdadd_ov, __builtin_bcdsub,
13457 __builtin_bcdsub_lt, __builtin_bcdsub_eq, __builtin_bcdsub_gt,
13458 __builtin_bcdsub_ov functions.
13460 2018-08-09 Richard Sandiford <richard.sandiford@arm.com>
13462 PR tree-optimization/86858
13463 * tree-vect-loop.c (vect_is_simple_reduction): Restore
13464 flow_bb_inside_loop_p calls.
13466 2018-08-09 Richard Sandiford <richard.sandiford@arm.com>
13468 PR tree-optimization/86871
13469 * tree-vect-stmts.c (vect_transform_stmt): Use gimple_get_lhs
13470 instead of gimple_assign_lhs.
13472 2018-08-09 Richard Earnshaw <rearnsha@arm.com>
13475 * config/aarch64/aarch64.md (add<mode>3_carryinC_zero): Add missing
13476 register constraint to operand 0.
13477 (add<mode>3_carryinC): Likewise.
13478 (add<mode>3_carryinV_zero, add<mode>3_carryinV): Likewise.
13480 2018-08-09 Martin Liska <mliska@suse.cz>
13483 * common.opt: Remove extra line.
13485 2018-08-09 Martin Liska <mliska@suse.cz>
13487 * params.def (PARAM_ALIGN_LOOP_ITERATIONS): Remove double dots
13488 at the end of a line, make first letter capital and end up
13489 a sentence with a dot.
13490 (PARAM_LOOP_INTERCHANGE_STRIDE_RATIO): Likewise.
13491 (PARAM_LOOP_BLOCK_TILE_SIZE): Likewise.
13492 (PARAM_GRAPHITE_MAX_NB_SCOP_PARAMS): Likewise.
13493 (PARAM_GRAPHITE_MAX_ARRAYS_PER_SCOP): Likewise.
13494 (PARAM_MAX_ISL_OPERATIONS): Likewise.
13495 (PARAM_GRAPHITE_ALLOW_CODEGEN_ERRORS): Likewise.
13496 (PARAM_PROFILE_FUNC_INTERNAL_ID): Likewise.
13497 (PARAM_INDIR_CALL_TOPN_PROFILE): Likewise.
13498 (PARAM_SLP_MAX_INSNS_IN_BB): Likewise.
13499 (PARAM_IPA_CP_EVAL_THRESHOLD): Likewise.
13500 (PARAM_IPA_CP_RECURSION_PENALTY): Likewise.
13501 (PARAM_IPA_CP_SINGLE_CALL_PENALTY): Likewise.
13502 (PARAM_IPA_CP_LOOP_HINT_BONUS): Likewise.
13503 (PARAM_IPA_CP_ARRAY_INDEX_HINT_BONUS): Likewise.
13504 (PARAM_TREE_REASSOC_WIDTH): Likewise.
13505 (PARAM_HSA_GEN_DEBUG_STORES): Likewise.
13506 (PARAM_MAX_SPECULATIVE_DEVIRT_MAYDEFS): Likewise.
13507 (PARAM_MAX_VRP_SWITCH_ASSERTIONS): Likewise.
13509 2018-08-09 Andreas Krebbel <krebbel@linux.ibm.com>
13512 * config/s390/s390.c (s390_option_override_internal): Reduce the
13513 stack-clash-protection-probe-interval param if it would be too big
13516 2018-08-08 Andreas Schwab <schwab@linux-m68k.org>
13519 * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Don't define.
13520 * config/m68k/m68k.c (handle_move_double): Don't call
13521 m68k_final_prescan_insn.
13522 (m68k_adjust_decorated_operand): Renamed from
13523 m68k_final_prescan_insn, remove first and third operand and
13525 (print_operand): Call it.
13526 (print_operand_address): Call it.
13528 2018-08-08 Nathan Sidwell <nathan@acm.org>
13530 * diagnostic.c (diagnostic_report_current_module): Use
13531 linemap_included_from & linemap_included_from_linemap.
13533 2018-08-08 Hongbo Zhang <hongbo.zhang@linaro.org>
13535 * config/aarch64/aarch64-cores.def: Add phecda core.
13536 * config/aarch64/aarch64-tune.md: Regenerate.
13537 * doc/invoke.texi: Add phecda core.
13539 2018-08-08 Andreas Krebbel <krebbel@linux.ibm.com>
13542 * config/s390/constraints.md ("NxHD0", "NxSD0"): New constraint
13544 * config/s390/s390.md ("movti"): Add more alternatives for
13545 constant to GPR copies.
13547 2018-08-08 Andreas Krebbel <krebbel@linux.ibm.com>
13549 * config/s390/s390.c: Fix whitespace damage throughout the file.
13550 * config/s390/s390.h: Likewise.
13551 * config/s390/tpf.h: Likewise.
13553 2018-08-08 Ilya Leoshkevich <iii@linux.ibm.com>
13555 * config/s390/s390.c (s390_loadrelative_operand_p):
13556 Remove TARGET_CPU_ZARCH usages.
13557 (s390_rtx_costs): Likewise.
13558 (s390_legitimate_constant_p): Likewise.
13559 (s390_cannot_force_const_mem): Likewise.
13560 (legitimate_reload_constant_p): Likewise.
13561 (s390_preferred_reload_class): Likewise.
13562 (legitimize_pic_address): Likewise.
13563 (legitimize_tls_address): Likewise.
13564 (s390_split_branches): Removed.
13565 (s390_add_execute): Removed.
13566 (s390_dump_pool): Remove TARGET_CPU_ZARCH usages.
13567 (s390_mainpool_start): Likewise.
13568 (s390_mainpool_finish): Likewise.
13569 (s390_mainpool_cancel): Removed.
13570 (s390_chunkify_start): Remove TARGET_CPU_ZARCH usages.
13571 (s390_chunkify_cancel): Likewise.
13572 (s390_return_addr_rtx): Likewise.
13573 (s390_register_info): Remove split_branches_pending_p uages.
13574 (s390_optimize_register_info): Likewise.
13575 (s390_init_frame_layout): Remove TARGET_CPU_ZARCH and
13576 split_branches_pending_p usages.
13577 (s390_can_eliminate): Remove TARGET_CPU_ZARCH usages.
13578 (s390_load_got): Likewise.
13579 (s390_expand_split_stack_prologue): Likewise.
13580 (output_asm_nops): Likewise.
13581 (s390_function_profiler): Likewise.
13582 (s390_emit_call): Likewise.
13583 (s390_conditional_register_usage): Likewise.
13584 (s390_optimize_prologue): Likewise.
13585 (s390_reorg): Remove TARGET_CPU_ZARCH and
13586 split_branches_pending_p usages.
13587 (s390_option_override_internal): Remove TARGET_CPU_ZARCH
13589 (s390_output_indirect_thunk_function): Likewise.
13590 * config/s390/s390.h (TARGET_CPU_ZARCH): Removed.
13591 (TARGET_CPU_ZARCH_P): Removed.
13592 (struct machine_function): Remove split_branches_pending_p.
13593 * config/s390/s390.md: Remove TARGET_CPU_ZARCH usages.
13595 2018-08-08 Ilya Leoshkevich <iii@linux.ibm.com>
13597 * common/config/s390/s390-common.c (processor_flags_table):
13599 * config.gcc: Remove with_arch/with_tune support.
13600 * config/s390/2064.md: Remove cpu attribute comparisons.
13601 * config/s390/driver-native.c (s390_host_detect_local_cpu):
13603 * config/s390/linux.h (ASM_SPEC):
13604 Remove -march support.
13605 * config/s390/s390-c.c (s390_cpu_cpp_builtins_internal):
13606 Use a table to get an arch level.
13607 * config/s390/s390-opts.h (enum processor_type):
13608 Remove enum values.
13609 * config/s390/s390.c
13610 (processor_table): Remove entries, add arch_level values.
13611 (s390_issue_rate): Remove cases.
13612 (s390_option_override): Adjust
13613 s390_option_override_internal() call.
13614 (s390_option_override_internal): Remove deprecation warning.
13615 (s390_valid_target_attribute_tree): Adjust
13616 s390_option_override_internal() call.
13617 * config/s390/s390.h (struct s390_processor):
13618 Share with s390-c.c, add arch_level field.
13619 * config/s390/s390.md:
13620 Remove occurrences in cpu attribute.
13621 * config/s390/s390.opt: Remove -march/-mtune support.
13622 * config/s390/tpf.h (ASM_SPEC): Remove -march support.
13623 * doc/invoke.texi: Remove deprecation warning.
13625 2018-08-08 Luis Machado <luis.machado@linaro.org>
13627 * config/aarch64/aarch64.c (qdf24xx_vector_cost): New static
13629 (qdf24xx_tunings): Set vector cost structure to
13630 qdf24xx_vector_cost.
13632 * config/aarch64/aarch64.c (qdf24xx_addrcost_table)
13633 <register_sextend>: Set to 3.
13635 2018-08-07 Richard Sandiford <richard.sandiford@arm.com>
13638 * config/aarch64/iterators.md (FRECP, frecp_suffix): Delete.
13639 * config/aarch64/aarch64-simd.md
13640 (aarch64_frecp<FRECP:frecp_suffix><mode>): Fold FRECPE into...
13641 (@aarch64_frecpe<mode>): ...here and the move FRECPX to...
13642 (aarch64_frecpx<mode>): ...this new pattern.
13643 * config/aarch64/aarch64-simd-builtins.def: Remove comment
13644 about aarch64_frecp<FRECP:frecp_suffix><mode>.
13646 2018-08-07 Martin Liska <mliska@suse.cz>
13648 PR middle-end/83023
13649 * predict.c (expr_expected_value_1): Handle DECL_IS_MALLOC,
13650 BUILT_IN_REALLOC and DECL_IS_OPERATOR_NEW.
13651 * predict.def (PRED_MALLOC_NONNULL): New predictor.
13652 * doc/extend.texi: Document that malloc attribute adds
13655 2018-08-06 John David Anglin <danglin@gcc.gnu.org>
13658 * config/pa/pa.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
13659 Define to speculation_safe_value_not_needed.
13661 2018-08-06 Jeff Law <law@redhat.com>
13663 * tree-ssa-dom.c (dom_opt_dom_walker::optimize_stmt): Pass down
13664 the vr_values instance to cprop_into_stmt.
13665 (cprop_into_stmt): Pass vr_values instance down to cprop_operand.
13666 (cprop_operand): Also query EVRP to determine if OP is a constant.
13668 2018-08-06 Nathan Sidwell <nathan@acm.org>
13670 * diagnostic.c (diagnostic_report_current_module): Reroll
13671 included-at loop. Translate text.
13673 2018-08-06 David Malcolm <dmalcolm@redhat.com>
13675 * function-tests.c (selftest::test_expansion_to_rtl): Call
13676 free_after_compilation.
13678 2018-08-06 Alan Hayward <alan.hayward@arm.com>
13680 * config/aarch64/aarch64.md: Add clobber highs to tls_desc.
13682 2018-08-06 Andreas Krebbel <krebbel@linux.ibm.com>
13684 * config/s390/s390.c (s390_loop_unroll_adjust): Prevent small
13685 loops with memory block operations from getting unrolled.
13687 2018-08-06 Ulrich Weigand <uweigand@de.ibm.com>
13690 * config/spu/spu.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
13691 Define to speculation_safe_value_not_needed.
13693 2018-08-06 Jeff Law <law@redhat.com>
13695 * reload1.c (forget_old_reloads_1): Adjust CLOBBER_HIGH
13698 2018-08-06 Jozef Lawrynowicz <jozef.l@mittosystems.com>
13701 * gcc/tree.c (build_common_tree_nodes): Initialize integer_types array
13702 with all enabled __intN types.
13704 * gcc/testsuite/gcc.target/msp430/pr86662.c: New test.
13706 2018-08-06 Alan Hayward <alan.hayward@arm.com>
13708 * alias.c (record_set): Check for clobber high.
13709 * cfgexpand.c (expand_gimple_stmt): Likewise.
13710 * combine-stack-adj.c (single_set_for_csa): Likewise.
13711 * combine.c (find_single_use_1): Likewise.
13712 (set_nonzero_bits_and_sign_copies): Likewise.
13713 (get_combine_src_dest): Likewise.
13714 (is_parallel_of_n_reg_sets): Likewise.
13715 (try_combine): Likewise.
13716 (record_dead_and_set_regs_1): Likewise.
13717 (reg_dead_at_p_1): Likewise.
13718 (reg_dead_at_p): Likewise.
13719 * dce.c (deletable_insn_p): Likewise.
13720 (mark_nonreg_stores_1): Likewise.
13721 (mark_nonreg_stores_2): Likewise.
13722 * df-scan.c (df_find_hard_reg_defs): Likewise.
13723 (df_uses_record): Likewise.
13724 (df_get_call_refs): Likewise.
13725 * dwarf2out.c (mem_loc_descriptor): Likewise.
13726 * haifa-sched.c (haifa_classify_rtx): Likewise.
13727 * ira-build.c (create_insn_allocnos): Likewise.
13728 * ira-costs.c (scan_one_insn): Likewise.
13729 * ira.c (equiv_init_movable_p): Likewise.
13730 (rtx_moveable_p): Likewise.
13731 (interesting_dest_for_shprep): Likewise.
13732 * jump.c (mark_jump_label_1): Likewise.
13733 * postreload-gcse.c (record_opr_changes): Likewise.
13734 * postreload.c (reload_cse_simplify): Likewise.
13735 (struct reg_use): Add source expr.
13736 (reload_combine): Check for clobber high.
13737 (reload_combine_note_use): Likewise.
13738 (reload_cse_move2add): Likewise.
13739 (move2add_note_store): Likewise.
13740 * print-rtl.c (print_pattern): Likewise.
13741 * recog.c (decode_asm_operands): Likewise.
13742 (store_data_bypass_p): Likewise.
13743 (if_test_bypass_p): Likewise.
13744 * regcprop.c (kill_clobbered_value): Likewise.
13745 (kill_set_value): Likewise.
13746 * reginfo.c (reg_scan_mark_refs): Likewise.
13747 * reload1.c (maybe_fix_stack_asms): Likewise.
13748 (eliminate_regs_1): Likewise.
13749 (elimination_effects): Likewise.
13750 (mark_not_eliminable): Likewise.
13751 (scan_paradoxical_subregs): Likewise.
13752 (forget_old_reloads_1): Likewise.
13753 * reorg.c (find_end_label): Likewise.
13754 (try_merge_delay_insns): Likewise.
13755 (redundant_insn): Likewise.
13756 (own_thread_p): Likewise.
13757 (fill_simple_delay_slots): Likewise.
13758 (fill_slots_from_thread): Likewise.
13759 (dbr_schedule): Likewise.
13760 * resource.c (update_live_status): Likewise.
13761 (mark_referenced_resources): Likewise.
13762 (mark_set_resources): Likewise.
13763 * rtl.c (copy_rtx): Likewise.
13764 * rtlanal.c (reg_referenced_p): Likewise.
13765 (single_set_2): Likewise.
13766 (noop_move_p): Likewise.
13767 (note_stores): Likewise.
13768 * sched-deps.c (sched_analyze_reg): Likewise.
13769 (sched_analyze_insn): Likewise.
13771 2018-08-06 Alan Hayward <alan.hayward@arm.com>
13773 * cse.c (invalidate_reg): New function extracted from...
13774 (invalidate): ...here.
13775 (canonicalize_insn): Check for clobber high.
13776 (invalidate_from_clobbers): invalidate clobber highs.
13777 (invalidate_from_sets_and_clobbers): Likewise.
13778 (count_reg_usage): Check for clobber high.
13779 (insn_live_p): Likewise.
13780 * cselib.c (cselib_expand_value_rtx_1):Likewise.
13781 (cselib_invalidate_regno): Check for clobber in setter.
13782 (cselib_invalidate_rtx): Pass through setter.
13783 (cselib_invalidate_rtx_note_stores):
13784 (cselib_process_insn): Check for clobber high.
13785 * cselib.h (cselib_invalidate_rtx): Add operand.
13787 2018-08-06 Alan Hayward <alan.hayward@arm.com>
13789 * lra-eliminations.c (lra_eliminate_regs_1): Check for clobber high.
13790 (mark_not_eliminable): Likewise.
13791 * lra-int.h (struct lra_insn_reg): Add clobber high marker.
13792 * lra-lives.c (process_bb_lives): Check for clobber high.
13793 * lra.c (new_insn_reg): Remember clobber highs.
13794 (collect_non_operand_hard_regs): Check for clobber high.
13795 (lra_set_insn_recog_data): Likewise.
13796 (add_regs_to_insn_regno_info): Likewise.
13797 (lra_update_insn_regno_info): Likewise.
13799 2018-08-06 Alan Hayward <alan.hayward@arm.com>
13801 * rtl.h (reg_is_clobbered_by_clobber_high): Add declarations.
13802 * rtlanal.c (reg_is_clobbered_by_clobber_high): Add function.
13804 2018-08-06 Alan Hayward <alan.hayward@arm.com>
13806 * emit-rtl.c (verify_rtx_sharing): Check for CLOBBER_HIGH.
13807 (copy_insn_1): Likewise.
13808 (gen_hard_reg_clobber_high): New gen function.
13809 * genconfig.c (walk_insn_part): Check for CLOBBER_HIGH.
13810 * genemit.c (gen_exp): Likewise.
13811 (gen_emit_seq): Pass through info.
13812 (gen_insn): Check for CLOBBER_HIGH.
13813 (gen_expand): Pass through info.
13814 (gen_split): Likewise.
13815 (output_add_clobbers): Likewise.
13816 * genrecog.c (validate_pattern): Check for CLOBBER_HIGH.
13817 (remove_clobbers): Likewise.
13818 * rtl.h (gen_hard_reg_clobber_high): New declaration.
13820 2018-08-06 Alan Hayward <alan.hayward@arm.com>
13822 * doc/rtl.texi (clobber_high): Add.
13823 (parallel): Add in clobber high
13824 * rtl.c (rtl_check_failed_code3): Add function.
13825 * rtl.def (CLOBBER_HIGH): Add expression.
13826 * rtl.h (RTL_CHECKC3): Add macro.
13827 (rtl_check_failed_code3): Add declaration.
13828 (XC3EXP): Add macro.
13830 2018-08-05 H.J. Lu <hongjiu.lu@intel.com>
13833 * config/i386/i386.c (ix86_finalize_stack_frame_flags): Set
13834 cfun->machine->max_used_stack_alignment if needed.
13836 2018-08-04 Martin Sebor <msebor@redhat.com>
13838 PR tree-optimization/86571
13839 * gimple-ssa-sprintf.c (format_floating): Extend upper bound of
13842 2018-08-03 Sandra Loosemore <sandra@codesourcery.com>
13845 * config/nios2/nios2.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
13848 2018-08-03 Jeff Law <law@redhat.com>
13851 * config/mn10300/mn10300.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
13852 Define to speculation_safe_value_not_needed.
13854 2018-08-03 David Malcolm <dmalcolm@redhat.com>
13856 * doc/gcov.texi (-x): Remove duplicate "to".
13857 * doc/invoke.texi (-Wnoexcept-type): Remove duplicate "calls".
13858 (-Wif-not-aligned): Remove duplicate "is".
13859 (-flto): Remove duplicate "the".
13860 (MicroBlaze Options): In examples of "-mcpu=cpu-type", remove
13861 duplicate "v5.00.b".
13862 (MSP430 Options): Remove duplicate "and" from the description
13863 of "-mgprel-sec=regexp".
13864 (x86 Options): Remove duplicate copies of "vmldLog102" and
13865 vmlsLog104 from description of "-mveclibabi=type".
13867 2018-08-03 Richard Sandiford <richard.sandiford@arm.com>
13869 * internal-fn.h (first_commutative_argument): Declare.
13870 * internal-fn.c (first_commutative_argument): New function.
13871 * tree-vect-slp.c (vect_get_and_check_slp_defs): Remove extra
13872 restrictions for pattern statements. Use first_commutative_argument
13873 to look for commutative operands in calls to internal functions.
13875 2018-08-03 Aldy Hernandez <aldyh@redhat.com>
13877 * Makefile.in (wide-int-range.o): New.
13878 * tree-vrp.c: Move all the wide_int_* functions to...
13879 * wide-int-range.cc: ...here.
13880 * tree-vrp.h: Move all the wide_int_* prototypes to...
13881 * wide-int-range.h: ...here.
13883 2018-08-03 Tom de Vries <tdevries@suse.de>
13885 * common/config/nvptx/nvptx-common.c (nvptx_except_unwind_info): Return
13887 * config/nvptx/nvptx.c (TARGET_ASM_BYTE_OP): Remove define.
13888 * except.c (output_function_exception_table): Do early exit if
13889 targetm_common.except_unwind_info (&global_options) == UI_NONE.
13891 2018-08-03 Martin Liska <mliska@suse.cz>
13893 * predict.c (dump_prediction): Change to 2 digits
13896 2018-08-03 Siddhesh Poyarekar <siddhesh@sourceware.org>
13898 * config/aarch64/falkor.md (falkor_am_1_vxvy_vxvy): Move
13900 (falkor_am_1_gtov_gtov): ... a new insn reservation.
13902 2018-07-19 Ilya Leoshkevich <iii@linux.ibm.com>
13904 * config/nds32/nds32.c (nds32_hard_regno_mode_ok): Replace > with >=.
13905 * df-problems.c (df_remove_dead_eq_notes): Replace > with >=.
13906 * dwarf2out.c (mem_loc_descriptor): Replace > with >=.
13907 * lra-constraints.c (spill_hard_reg_in_range): Replace <= with <.
13908 * lra-remat.c (call_used_input_regno_present_p): Replace <= with <.
13910 2018-08-02 David Malcolm <dmalcolm@redhat.com>
13912 * diagnostic-show-locus.c (diagnostic_show_locus): Use
13913 pp_take_prefix when saving the existing prefix.
13914 * diagnostic.c (diagnostic_append_note): Likewise.
13915 * langhooks.c (lhd_print_error_function): Likewise.
13916 * pretty-print.c (pp_set_prefix): Drop the "const" from "prefix"
13917 param's type. Free the existing prefix.
13918 (pp_take_prefix): New function.
13919 (pretty_printer::pretty_printer): Drop the prefix parameter.
13920 Rename the length parameter to match the comment.
13921 (pretty_printer::~pretty_printer): Free the prefix.
13922 * pretty-print.h (pretty_printer::pretty_printer): Drop the prefix
13924 (struct pretty_printer): Drop the "const" from "prefix" field's
13925 type and clarify memory management.
13926 (pp_set_prefix): Drop the "const" from the 2nd param.
13927 (pp_take_prefix): New decl.
13929 2018-08-02 Aaron Sawdey <acsawdey@linux.ibm.com>
13931 * config/rs6000/rs6000-string.c (select_block_compare_mode): Move test
13932 for word_mode_ok here instead of passing as argument.
13933 (expand_block_compare): Change select_block_compare_mode() call.
13934 (expand_strncmp_gpr_sequence): New function.
13935 (expand_strn_compare): Make use of expand_strncmp_gpr_sequence.
13937 2018-08-02 Jeff Law <law@redhat.com>
13940 * config/m68k/m68k.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
13941 Define to speculation_safe_value_not_needed.
13944 * config/h8300/h8300.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
13945 Define to speculation_safe_value_not_needed.
13947 2018-08-02 Tom de Vries <tdevries@suse.de>
13950 * common/config/nvptx/nvptx-common.c (nvptx_except_unwind_info): New
13951 function. Return UI_TARGET unconditionally.
13952 (TARGET_EXCEPT_UNWIND_INFO): Redefine to nvptx_except_unwind_info.
13953 * config/nvptx/nvptx.c (TARGET_ASM_BYTE_OP): Emit commented out '.byte'.
13955 2018-08-02 Richard Sandiford <richard.sandiford@arm.com>
13957 * genemit.c (print_overload_test): Fix typo.
13959 2018-08-02 Richard Biener <rguenther@suse.de>
13961 PR tree-optimization/86816
13962 * tree-ssa-tail-merge.c (tail_merge_valueize): New function
13963 which checks for value availability before querying it.
13964 (gvn_uses_equal): Use it.
13965 (same_succ_hash): Likewise.
13966 (gimple_equal_p): Likewise.
13968 2018-08-02 Nick Clifton <nickc@redhat.com>
13971 * config/stormy16/stormy16.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
13972 Define to speculation_safe_value_not_needed.
13975 * config/v850/v850.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
13976 Define to speculation_safe_value_not_needed.
13979 * config/v850/v850.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
13980 Define to speculation_safe_value_not_needed.
13983 * config/rx/rx.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
13984 Define to speculation_safe_value_not_needed.
13987 * config/msp430/msp430.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
13988 Define to speculation_safe_value_not_needed.
13991 * config/mcore/mcore.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
13992 Define to speculation_safe_value_not_needed.
13995 * config/m32r/m32r.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
13996 Define to speculation_safe_value_not_needed.
13999 * config/iq2000/iq2000.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
14000 Define to speculation_safe_value_not_needed.
14003 * config/frv/frv.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Define to
14004 speculation_safe_value_not_needed.
14007 * config/fr30/fr30.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Define
14008 to speculation_safe_value_not_needed.
14010 2018-08-02 Richard Sandiford <richard.sandiford@arm.com>
14012 * doc/md.texi: Expand the documentation of instruction names
14013 to mention port-local uses. Document '@' in pattern names.
14014 * read-md.h (overloaded_instance, overloaded_name): New structs.
14015 (mapping): Declare.
14016 (md_reader::handle_overloaded_name): New member function.
14017 (md_reader::get_overloads): Likewise.
14018 (md_reader::m_first_overload): New member variable.
14019 (md_reader::m_next_overload_ptr): Likewise.
14020 (md_reader::m_overloads_htab): Likewise.
14021 * read-md.c (md_reader::md_reader): Initialize m_first_overload,
14022 m_next_overload_ptr and m_overloads_htab.
14023 * read-rtl.c (iterator_group): Add "type" and "get_c_token" fields.
14024 (get_mode_token, get_code_token, get_int_token): New functions.
14025 (map_attr_string): Add an optional argument that passes back
14026 the associated iterator.
14027 (overloaded_name_hash, overloaded_name_eq_p, named_rtx_p):
14028 (md_reader::handle_overloaded_name, add_overload_instance): New
14030 (apply_iterators): Handle '@' names. Report an error if '@'
14031 is used without iterators.
14032 (initialize_iterators): Initialize the new iterator_group fields.
14033 * genopinit.c (handle_overloaded_code_for)
14034 (handle_overloaded_gen): New functions.
14035 (main): Use them to print declarations of maybe_code_for_* and
14036 maybe_gen_* functions, and inline definitions of code_for_* and gen_*.
14037 * genemit.c (print_overload_arguments, print_overload_test)
14038 (handle_overloaded_code_for, handle_overloaded_gen): New functions.
14039 (main): Use it to print definitions of maybe_code_for_* and
14040 maybe_gen_* functions.
14041 * config/aarch64/aarch64.c (aarch64_split_128bit_move): Use
14042 gen_aarch64_mov{low,high}_di and gen_aarch64_movdi_{low,high}
14043 instead of explicit mode checks.
14044 (aarch64_split_simd_combine): Likewise gen_aarch64_simd_combine.
14045 (aarch64_split_simd_move): Likewise gen_aarch64_split_simd_mov.
14046 (aarch64_emit_load_exclusive): Likewise gen_aarch64_load_exclusive.
14047 (aarch64_emit_store_exclusive): Likewise gen_aarch64_store_exclusive.
14048 (aarch64_expand_compare_and_swap): Likewise
14049 gen_aarch64_compare_and_swap and gen_aarch64_compare_and_swap_lse
14050 (aarch64_gen_atomic_cas): Likewise gen_aarch64_atomic_cas.
14051 (aarch64_emit_atomic_swap): Likewise gen_aarch64_atomic_swp.
14052 (aarch64_constant_pool_reload_icode): Delete.
14053 (aarch64_secondary_reload): Use code_for_aarch64_reload_movcp
14054 instead of aarch64_constant_pool_reload_icode. Use
14055 code_for_aarch64_reload_mov instead of explicit mode checks.
14056 (rsqrte_type, get_rsqrte_type, rsqrts_type, get_rsqrts_type): Delete.
14057 (aarch64_emit_approx_sqrt): Use gen_aarch64_rsqrte instead of
14058 get_rsqrte_type and gen_aarch64_rsqrts instead of gen_rqrts_type.
14059 (recpe_type, get_recpe_type, recps_type, get_recps_type): Delete.
14060 (aarch64_emit_approx_div): Use gen_aarch64_frecpe instead of
14061 get_recpe_type and gen_aarch64_frecps instead of get_recps_type.
14062 (aarch64_atomic_load_op_code): Delete.
14063 (aarch64_emit_atomic_load_op): Likewise.
14064 (aarch64_gen_atomic_ldop): Use UNSPECV_ATOMIC_* instead of
14065 aarch64_atomic_load_op_code. Use gen_aarch64_atomic_load
14066 instead of aarch64_emit_atomic_load_op.
14067 * config/aarch64/aarch64.md (aarch64_reload_movcp<GPF_TF:mode><P:mode>)
14068 (aarch64_reload_movcp<VALL:mode><P:mode>, aarch64_reload_mov<mode>)
14069 (aarch64_movdi_<mode>low, aarch64_movdi_<mode>high)
14070 (aarch64_mov<mode>high_di, aarch64_mov<mode>low_di): Add a '@'
14071 character before the pattern name.
14072 * config/aarch64/aarch64-simd.md (aarch64_split_simd_mov<mode>)
14073 (aarch64_rsqrte<mode>, aarch64_rsqrts<mode>)
14074 (aarch64_simd_combine<mode>, aarch64_frecpe<mode>)
14075 (aarch64_frecps<mode>): Likewise.
14076 * config/aarch64/atomics.md (atomic_compare_and_swap<mode>)
14077 (aarch64_compare_and_swap<mode>, aarch64_compare_and_swap<mode>_lse)
14078 (aarch64_load_exclusive<mode>, aarch64_store_exclusive<mode>)
14079 (aarch64_atomic_swp<mode>, aarch64_atomic_cas<mode>)
14080 (aarch64_atomic_load<atomic_ldop><mode>): Likewise.
14082 2018-08-02 Richard Sandiford <richard.sandiford@arm.com>
14084 * config/aarch64/aarch64.c (aarch64_float_const_representable_p):
14085 Allow HFmode constants if TARGET_FP_F16INST.
14087 2018-08-02 Jackson Woodruff <jackson.woodruff@arm.com>
14090 * config/aarch64/aarch64.c (aarch64_operands_adjust_ok_for_ldpstp):
14091 No longer check last store for clobber of address register.
14093 2018-08-02 Martin Liska <mliska@suse.cz>
14095 PR gcov-profile/86817
14096 * gcov.c (process_all_functions): New function.
14098 (process_file): Move functions processing to
14099 process_all_functions.
14101 2018-08-02 David Malcolm <dmalcolm@redhat.com>
14103 * dumpfile.c (dump_user_location_t::dump_user_location_t): Add
14104 "const" to the "gimple *" and "rtx_insn *" parameters.
14105 * dumpfile.h (dump_user_location_t::dump_user_location_t):
14107 (dump_location_t::dump_location_t): Likewise.
14109 2018-08-01 Martin Sebor <msebor@redhat.com>
14111 PR tree-optimization/86650
14112 * gimple-pretty-print.c (percent_G_format): Accept a "gimple *"
14113 rather than a "gcall *". Directly pass the data of interest
14114 to percent_K_format, rather than building a temporary CALL_EXPR
14116 * gimple-fold.c (gimple_fold_builtin_strncpy): Adjust.
14117 (gimple_fold_builtin_strncat): Adjust.
14118 * gimple-ssa-warn-restrict.h (check_bounds_or_overlap): Replace
14119 gcall* argument with gimple*.
14120 * gimple-ssa-warn-restrict.c (check_call): Same.
14121 (wrestrict_dom_walker::before_dom_children): Same.
14122 (builtin_access::builtin_access): Same.
14123 (check_bounds_or_overlap): Same
14124 (maybe_diag_overlap): Same.
14125 (maybe_diag_offset_bounds): Same.
14126 * tree-diagnostic.c (default_tree_printer): Move usage of
14127 EXPR_LOCATION (t) and TREE_BLOCK (t) from within percent_K_format
14129 * tree-pretty-print.c (percent_K_format): Add argument.
14130 * tree-pretty-print.h: Add argument.
14131 * tree-ssa-ccp.c (pass_post_ipa_warn::execute): Adjust.
14132 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Adjust.
14133 (maybe_diag_stxncpy_trunc): Same.
14134 (handle_builtin_stxncpy): Same.
14135 (handle_builtin_strcat): Same.
14137 2018-08-01 Richard Sandiford <richard.sandiford@arm.com>
14139 * match.pd: Optimise pointer range checks.
14141 2018-08-01 Richard Sandiford <richard.sandiford@arm.com>
14143 PR tree-optimization/86758
14144 * tree-vect-stmts.c (vectorizable_simd_clone_call): Don't try
14145 to remove pattern statements.
14147 2018-08-01 Richard Sandiford <richard.sandiford@arm.com>
14149 * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Use the
14150 result of dfs_enumerate_from when constructing stmt_vec_infos,
14151 instead of additionally calling get_loop_body.
14153 2018-08-01 Richard Sandiford <richard.sandiford@arm.com>
14155 * tree-vectorizer.h (vect_create_data_ref_ptr): Remove inv_p
14157 * tree-vect-data-refs.c (vect_create_data_ref_ptr): Likewise.
14158 When creating an iv, assert that the step is not known to be zero.
14159 (vect_setup_realignment): Update call accordingly.
14160 * tree-vect-stmts.c (vectorizable_store): Likewise.
14161 (vectorizable_load): Likewise. Handle VMAT_INVARIANT separately.
14163 2018-08-01 Richard Sandiford <richard.sandiford@arm.com>
14165 * tree-vectorizer.h (vect_stmt_to_vectorize): New function.
14166 * tree-vect-loop.c (vect_update_vf_for_slp): Use it.
14167 (vectorizable_reduction): Likewise.
14168 * tree-vect-slp.c (vect_analyze_slp_instance): Likewise.
14169 (vect_detect_hybrid_slp_stmts): Likewise.
14170 * tree-vect-stmts.c (vect_is_simple_use): Likewise.
14172 2018-08-01 Aldy Hernandez <aldyh@redhat.com>
14174 * tree-vrp (zero_nonzero_bits_from_bounds): Rename to...
14175 (wide_int_set_zero_nonzero_bits): ...this.
14176 (zero_nonzero_bits_from_vr): Rename to...
14177 (vrp_set_zero_nonzero_bits): ...this.
14178 (extract_range_from_multiplicative_op_1): Abstract wide int
14180 (wide_int_range_multiplicative_op): ...here.
14181 (extract_range_from_binary_expr_1): Extract wide int binary
14182 operations into their own functions.
14183 (wide_int_range_lshift): New.
14184 (wide_int_range_can_optimize_bit_op): New.
14185 (wide_int_range_shift_undefined_p): New.
14186 (wide_int_range_bit_xor): New.
14187 (wide_int_range_bit_ior): New.
14188 (wide_int_range_bit_and): New.
14189 (wide_int_range_trunc_mod): New.
14190 (extract_range_into_wide_ints): New.
14191 (vrp_shift_undefined_p): New.
14192 (extract_range_from_multiplicative_op): New.
14193 (vrp_can_optimize_bit_op): New.
14194 * tree-vrp.h (value_range::dump): New.
14195 (wide_int_range_multiplicative_op): New.
14196 (wide_int_range_lshift):New.
14197 (wide_int_range_shift_undefined_p): New.
14198 (wide_int_range_bit_xor): New.
14199 (wide_int_range_bit_ior): New.
14200 (wide_int_range_bit_and): New.
14201 (wide_int_range_trunc_mod): New.
14202 (zero_nonzero_bits_from_bounds): Rename to...
14203 (wide_int_set_zero_nonzero_bits): ...this.
14204 (zero_nonzero_bits_from_vr): Rename to...
14205 (vrp_set_zero_nonzero_bits): ...this.
14206 (range_easy_mask_min_max): Rename to...
14207 (wide_int_range_can_optimize_bit_op): this.
14208 * vr-values.c (simplify_bit_ops_using_ranges): Rename
14209 zero_nonzero_bits_from_vr into vrp_set_zero_nonzero_bits.
14211 2018-08-01 Richard Sandiford <richard.sandiford@arm.com>
14213 * tree-vectorizer.h (vect_orig_stmt): New function.
14214 * tree-vect-data-refs.c (vect_preserves_scalar_order_p): Use it.
14215 * tree-vect-loop.c (vect_model_reduction_cost): Likewise.
14216 (vect_create_epilog_for_reduction): Likewise.
14217 (vectorizable_live_operation): Likewise.
14218 * tree-vect-slp.c (vect_find_last_scalar_stmt_in_slp): Likewise.
14219 (vect_detect_hybrid_slp_stmts, vect_schedule_slp): Likewise.
14220 * tree-vect-stmts.c (vectorizable_call): Likewise.
14221 (vectorizable_simd_clone_call, vect_remove_stores): Likewise.
14223 2018-08-01 Richard Sandiford <richard.sandiford@arm.com>
14225 * tree-vectorizer.h (vect_transform_stmt): Remove grouped_store
14227 * tree-vect-stmts.c (vect_transform_stmt): Likewise.
14228 * tree-vect-loop.c (vect_transform_loop_stmt): Update call accordingly.
14229 (vect_transform_loop): Likewise.
14230 * tree-vect-slp.c (vect_schedule_slp_instance): Likewise.
14232 2018-08-01 Richard Sandiford <richard.sandiford@arm.com>
14234 * tree-vectorizer.h (vect_schedule_slp): Return void.
14235 * tree-vect-slp.c (vect_schedule_slp_instance): Likewise.
14236 (vect_schedule_slp): Likewise.
14238 2018-08-01 Richard Sandiford <richard.sandiford@arm.com>
14240 * tree-vect-loop.c (vect_transform_loop_stmt): Remove slp_scheduled
14242 (vect_transform_loop): Update calls accordingly. Schedule SLP
14243 instances before the main loop, if any exist.
14245 2018-08-01 Richard Sandiford <richard.sandiford@arm.com>
14247 PR tree-optimization/86749
14248 * tree-vect-patterns.c (vect_determine_min_output_precision_1):
14249 If the lhs is used in a COND_EXPR, check that it is being used
14250 as the "then" or "else" value.
14252 2018-08-01 Tom de Vries <tdevries@suse.de>
14255 * config/nvptx/nvptx.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Define to
14256 speculation_safe_value_not_needed.
14258 2018-08-01 Richard Biener <rguenther@suse.de>
14260 * tree-ssa-sccvn.c (visit_phi): Compare invariant addresses
14261 as base and offset.
14263 2018-08-01 Martin Liska <mliska@suse.cz>
14265 * value-prof.c (gimple_divmod_fixed_value_transform): Unify
14266 format how successful transformation is dumped.
14267 (gimple_mod_pow2_value_transform): Likewise.
14268 (gimple_mod_subtract_transform): Likewise.
14269 (gimple_stringops_transform): Likewise.
14271 2018-08-01 Martin Liska <mliska@suse.cz>
14273 PR value-prof/35543
14274 * value-prof.c (interesting_stringop_to_profile_p):
14275 Simplify the code and add BUILT_IN_MEMMOVE.
14276 (gimple_stringops_transform): Likewise.
14278 2018-08-01 Sam Tebbs <sam.tebbs@arm.com>
14280 * config/aarch64/aarch64-simd.md
14281 (*aarch64_get_lane_zero_extendsi<mode>): Rename to...
14282 (*aarch64_get_lane_zero_extend<GPI:mode><VDQQH:mode>): ... This and
14283 use GPI iterator instead of SI mode.
14285 2018-08-01 Richard Earnshaw <rearnsha@arm.com>
14287 * config/rs6000/rs6000.md (speculation_barrier): Renamed from
14288 rs6000_speculation_barrier.
14289 * config/rs6000/rs6000.c (rs6000_expand_builtin): Adjust for
14290 new barrier pattern name.
14292 2018-08-01 Richard Earnshaw <rearnsha@arm.com>
14294 * config/i386/i386.md (unspecv): Add UNSPECV_SPECULATION_BARRIER.
14295 (speculation_barrier): New insn.
14297 2018-08-01 Richard Biener <rguenther@suse.de>
14300 * graphite.h: Include isl/id.h and isl/space.h to allow build
14303 2018-08-01 Jan Willem Jagersma <jwjagersma@gmail.com>
14306 * dwarf2out.c (dwarf2out_early_finish): Do not generate assembly in LTO
14307 mode for COFF targets.
14308 * defaults.h (TARGET_COFF): Define.
14309 * config/i386/djgpp.h (TARGET_ASM_LTO_START, TARGET_ASM_LTO_END,
14310 TARGET_COFF): Define.
14311 (i386_djgpp_asm_lto_start, i386_djgpp_asm_lto_end): Declare.
14312 * config/i386/djgpp.c (saved_debug_info_level): New static variable.
14313 (i386_djgpp_asm_lto_start, i386_djgpp_asm_lto_end): New functions.
14315 2018-07-31 Alexandre Oliva <oliva@adacore.com>
14317 * gimple-streamer-in.c (input_bb): Restore BB discriminator.
14318 * gimple-streamer-out.c (output_bb): Save it.
14319 * lto-streamer-in.c (input_struct_function_base): Restore
14320 instance discriminator if available. Create map on demand.
14321 * lto-streamer-out.c (output_struct_function_base): Save it if
14323 * final.c (decl_to_instance_map): Document LTO strategy.
14325 2018-07-31 Alexandre Oliva <oliva@adacore.com>
14326 Olivier Hainque <hainque@adacore.com>
14328 * debug.h (decl_to_instance_map_t): New type.
14329 (decl_to_instance_map): Declare.
14330 (maybe_create_decl_to_instance_map): New inline function.
14331 * final.c (bb_discriminator, last_bb_discriminator): New statics,
14332 to track basic block discriminators.
14333 (final_start_function_1): Initialize them.
14334 (final_scan_insn_1): On NOTE_INSN_BASIC_BLOCK, track
14336 (decl_to_instance_map): New variable.
14337 (map_decl_to_instance, maybe_set_discriminator): New functions.
14338 (notice_source_line): Set discriminator.
14340 2018-07-31 Ian Lance Taylor <iant@golang.org>
14342 * targhooks.c (default_have_speculation_safe_value): Add
14345 2018-07-31 David Malcolm <dmalcolm@redhat.com>
14347 * dump-context.h: Include "pretty-print.h".
14348 (dump_context::refresh_dumps_are_enabled): New decl.
14349 (dump_context::emit_item): New decl.
14350 (class dump_context): Add fields "m_test_pp" and
14352 (temp_dump_context::temp_dump_context): Add param "test_pp_flags".
14353 (temp_dump_context::get_dumped_text): New decl.
14354 (class temp_dump_context): Add field "m_pp".
14355 * dumpfile.c (refresh_dumps_are_enabled): Convert to...
14356 (dump_context::refresh_dumps_are_enabled): ...and add a test for
14358 (set_dump_file): Update for above change.
14359 (set_alt_dump_file): Likewise.
14360 (dump_loc): New overload, taking a pretty_printer *.
14361 (dump_context::dump_loc): Call end_any_optinfo. Dump the location
14362 to any test pretty-printer.
14363 (make_item_for_dump_gimple_stmt): New function, adapted from
14364 optinfo::add_gimple_stmt.
14365 (dump_context::dump_gimple_stmt): Call it, and use the result,
14366 eliminating the direct usage of dump_file and alt_dump_file in
14367 favor of indirectly using them via emit_item.
14368 (make_item_for_dump_gimple_expr): New function, adapted from
14369 optinfo::add_gimple_expr.
14370 (dump_context::dump_gimple_expr): Call it, and use the result,
14371 eliminating the direct usage of dump_file and alt_dump_file in
14372 favor of indirectly using them via emit_item.
14373 (make_item_for_dump_generic_expr): New function, adapted from
14375 (dump_context::dump_generic_expr): Call it, and use the result,
14376 eliminating the direct usage of dump_file and alt_dump_file in
14377 favor of indirectly using them via emit_item.
14378 (make_item_for_dump_printf_va): New function, adapted from
14379 optinfo::add_printf_va.
14380 (make_item_for_dump_printf): New function.
14381 (dump_context::dump_printf_va): Call make_item_for_dump_printf_va,
14382 and use the result, eliminating the direct usage of dump_file and
14383 alt_dump_file in favor of indirectly using them via emit_item.
14384 (make_item_for_dump_dec): New function.
14385 (dump_context::dump_dec): Call it, and use the result,
14386 eliminating the direct usage of dump_file and alt_dump_file in
14387 favor of indirectly using them via emit_item.
14388 (make_item_for_dump_symtab_node): New function, adapted from
14389 optinfo::add_symtab_node.
14390 (dump_context::dump_symtab_node): Call it, and use the result,
14391 eliminating the direct usage of dump_file and alt_dump_file in
14392 favor of indirectly using them via emit_item.
14393 (dump_context::begin_scope): Reimplement, avoiding direct usage
14394 of dump_file and alt_dump_file in favor of indirectly using them
14396 (dump_context::emit_item): New member function.
14397 (temp_dump_context::temp_dump_context): Add param "test_pp_flags".
14398 Set up test pretty-printer on the underlying context. Call
14399 refresh_dumps_are_enabled.
14400 (temp_dump_context::~temp_dump_context): Call
14401 refresh_dumps_are_enabled.
14402 (temp_dump_context::get_dumped_text): New member function.
14403 (selftest::verify_dumped_text): New function.
14404 (ASSERT_DUMPED_TEXT_EQ): New macro.
14405 (selftest::test_capture_of_dump_calls): Run all tests twice, with
14406 and then without optinfo enabled. Add uses of
14407 ASSERT_DUMPED_TEXT_EQ to all tests. Add test of nested scopes.
14408 * dumpfile.h: Update comment for the dump_* API.
14409 * optinfo-emit-json.cc
14410 (selftest::test_building_json_from_dump_calls): Update for new
14411 param for temp_dump_context ctor.
14412 * optinfo.cc (optinfo_item::optinfo_item): Remove "owned" param
14413 and "m_owned" field.
14414 (optinfo_item::~optinfo_item): Likewise.
14415 (optinfo::add_item): New member function.
14416 (optinfo::emit): Update comment.
14417 (optinfo::add_string): Delete.
14418 (optinfo::add_printf): Delete.
14419 (optinfo::add_printf_va): Delete.
14420 (optinfo::add_gimple_stmt): Delete.
14421 (optinfo::add_gimple_expr): Delete.
14422 (optinfo::add_tree): Delete.
14423 (optinfo::add_symtab_node): Delete.
14424 (optinfo::add_dec): Delete.
14425 * optinfo.h (class dump_context): New forward decl.
14426 (optinfo::add_item): New decl.
14427 (optinfo::add_string): Delete.
14428 (optinfo::add_printf): Delete.
14429 (optinfo::add_printf_va): Delete.
14430 (optinfo::add_gimple_stmt): Delete.
14431 (optinfo::add_gimple_expr): Delete.
14432 (optinfo::add_tree): Delete.
14433 (optinfo::add_symtab_node): Delete.
14434 (optinfo::add_dec): Delete.
14435 (optinfo::add_poly_int): Delete.
14436 (optinfo_item::optinfo_item): Remove "owned" param.
14437 (class optinfo_item): Remove field "m_owned".
14439 2018-07-31 Jozef Lawrynowicz <jozef.l@mittosystems.com>
14441 PR middle-end/86705
14442 * gcc/cfgexpand.c (set_parm_rtl): Use the alignment of Pmode when
14443 MAX_SUPPORTED_STACK_ALIGNMENT would otherwise be exceeded by the
14444 requested variable alignment.
14445 (expand_one_ssa_partition): Likewise.
14446 (expand_one_var): Likewise.
14448 2018-07-31 Richard Earnshaw <rearnsha@arm.com>
14450 * config/pdp11/pdp11.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Redefine
14451 to speculation_safe_value_not_needed.
14453 2018-07-31 Richard Earnshaw <rearnsha@arm.com>
14455 * targhooks.h (speculation_safe_value_not_needed): New prototype.
14456 * targhooks.c (speculation_safe_value_not_needed): New function.
14457 * target.def (have_speculation_safe_value): Update documentation.
14458 * doc/tm.texi: Regenerated.
14460 2018-07-31 Richard Earnshaw <rearnsha@arm.com>
14462 * config/aarch64/iterators.md (ALLI_TI): New iterator.
14463 * config/aarch64/aarch64.md (despeculate_copy<ALLI_TI:mode>): New
14465 (despeculate_copy<ALLI:mode>_insn): New insn.
14466 (despeculate_copyti_insn): New insn.
14467 (despeculate_simple<ALLI:mode>): New insn
14468 (despeculate_simpleti): New insn.
14469 * config/aarch64/aarch64.c (aarch64_speculation_safe_value): New
14471 (TARGET_SPECULATION_SAFE_VALUE): Redefine to
14472 aarch64_speculation_safe_value.
14473 (aarch64_print_operand): Handle const0_rtx in modifier 'H'.
14475 2018-07-31 Richard Earnshaw <rearnsha@arm.com>
14477 * config/aarch64/aarch64-speculation.cc: New file.
14478 * config/aarch64/aarch64-passes.def (pass_track_speculation): Add
14479 before pass_reorder_blocks.
14480 * config/aarch64/aarch64-protos.h (make_pass_track_speculation): Add
14482 * config/aarch64/aarch64.c (aarch64_conditional_register_usage): Fix
14483 X14 and X15 when tracking speculation.
14484 * config/aarch64/aarch64.md (register name constants): Add
14485 SPECULATION_TRACKER_REGNUM and SPECULATION_SCRATCH_REGNUM.
14486 (unspec): Add UNSPEC_SPECULATION_TRACKER.
14487 (speculation_barrier): New insn attribute.
14488 (cmp<mode>): Allow SP in comparisons.
14489 (speculation_tracker): New insn.
14490 (speculation_barrier): Add speculation_barrier attribute.
14491 * config/aarch64/t-aarch64: Add make rule for aarch64-speculation.o.
14492 * config.gcc (aarch64*-*-*): Add aarch64-speculation.o to extra_objs.
14493 * doc/invoke.texi (AArch64 Options): Document -mtrack-speculation.
14495 2018-07-31 Richard Earnshaw <rearnsha@arm.com>
14497 * config/aarch64/aarch64.md (cb<optab><mode>1): Disable when
14498 aarch64_track_speculation is true.
14499 (tb<optab><mode>1): Likewise.
14500 * config/aarch64/aarch64.c (aarch64_split_compare_regs): Do not
14501 generate CB[N]Z when tracking speculation.
14502 (aarch64_split_compare_and_swap): Likewise.
14503 (aarch64_split_atomic_op): Likewise.
14505 2018-07-31 Richard Earnshaw <rearnsha@arm.com>
14507 * config/aarch64/aarch64.opt (mtrack-speculation): New target option.
14509 2018-07-31 Richard Earnshaw <rearnsha@arm.com>
14511 * config/aarch64.md (unspecv): Add UNSPECV_SPECULAION_BARRIER.
14512 (speculation_barrier): New insn.
14514 2018-07-31 Richard Earnshaw <rearnsha@arm.com>
14516 * config/arm/unspecs.md (unspecv): Add VUNSPEC_SPECULATION_BARRIER.
14517 * config/arm/arm.md (speculation_barrier): New expand.
14518 (speculation_barrier_insn): New pattern.
14520 2018-07-31 Richard Earnshaw <rearnsha@arm.com>
14522 * builtin-types.def (BT_FN_PTR_PTR_VAR): New function type.
14523 (BT_FN_I1_I1_VAR, BT_FN_I2_I2_VAR, BT_FN_I4_I4_VAR): Likewise.
14524 (BT_FN_I8_I8_VAR, BT_FN_I16_I16_VAR): Likewise.
14525 * builtin-attrs.def (ATTR_NOVOPS_NOTHROW_LEAF_LIST): New attribute
14527 * builtins.def (BUILT_IN_SPECULATION_SAFE_VALUE_N): New builtin.
14528 (BUILT_IN_SPECULATION_SAFE_VALUE_PTR): New internal builtin.
14529 (BUILT_IN_SPECULATION_SAFE_VALUE_1): Likewise.
14530 (BUILT_IN_SPECULATION_SAFE_VALUE_2): Likewise.
14531 (BUILT_IN_SPECULATION_SAFE_VALUE_4): Likewise.
14532 (BUILT_IN_SPECULATION_SAFE_VALUE_8): Likewise.
14533 (BUILT_IN_SPECULATION_SAFE_VALUE_16): Likewise.
14534 * builtins.c (expand_speculation_safe_value): New function.
14535 (expand_builtin): Call it.
14536 * doc/cpp.texi: Document predefine __HAVE_SPECULATION_SAFE_VALUE.
14537 * doc/extend.texi: Document __builtin_speculation_safe_value.
14538 * doc/md.texi: Document "speculation_barrier" pattern.
14539 * doc/tm.texi.in: Pull in TARGET_SPECULATION_SAFE_VALUE and
14540 TARGET_HAVE_SPECULATION_SAFE_VALUE.
14541 * doc/tm.texi: Regenerated.
14542 * target.def (have_speculation_safe_value, speculation_safe_value): New
14544 * targhooks.c (default_have_speculation_safe_value): New function.
14545 (default_speculation_safe_value): New function.
14546 * targhooks.h (default_have_speculation_safe_value): Add prototype.
14547 (default_speculation_safe_value): Add prototype.
14549 2018-07-31 David Malcolm <dmalcolm@redhat.com>
14551 * dump-context.h (dump_context::dump_loc): New decl.
14552 * dumpfile.c (dump_context::dump_loc): New member function.
14553 (dump_context::dump_gimple_stmt_loc): Reimplement using dump_loc
14554 and dump_gimple_stmt.
14555 (dump_context::dump_gimple_expr_loc): Likewise, using
14557 (dump_context::dump_generic_expr_loc): Likewise, using
14559 (dump_context::dump_printf_loc_va): Likewise, using
14561 (dump_context::begin_scope): Explicitly using the global function
14562 "dump_loc", rather than the member function.
14564 2018-07-31 Martin Sebor <msebor@redhat.com>
14566 PR tree-optimization/86741
14567 * tree-vrp.c (vrp_prop::check_mem_ref): Avoid incomplete types.
14569 2018-07-31 Andreas Krebbel <krebbel@linux.ibm.com>
14571 * config/s390/s390.c (s390_expand_setmem): Make the unrolling to
14572 depend on whether prefetch instructions will be emitted or not.
14573 Use TARGET_SETMEM_PFD for checking whether prefetch instructions
14574 will be emitted or not.
14575 * config/s390/s390.h (TARGET_SETMEM_PREFETCH_DISTANCE)
14576 (TARGET_SETMEM_PFD): New macros.
14578 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
14580 * tree-vectorizer.h (stmt_vec_info): Turn back into a typedef.
14581 (NULL_STMT_VEC_INFO): Delete.
14582 (stmt_vec_info::operator*): Likewise.
14583 (stmt_vec_info::operator gimple *): Likewise.
14584 * tree-vect-loop.c (vectorizable_reduction): Use NULL instead
14585 of NULL_STMT_VEC_INFO.
14586 * tree-vect-patterns.c (vect_init_pattern_stmt): Likewise.
14587 (vect_reassociating_reduction_p): Likewise.
14588 * tree-vect-stmts.c (vect_build_gather_load_calls): Likewise.
14589 (vectorizable_store): Likewise.
14590 * tree-vectorizer.c (vec_info::set_vinfo_for_stmt): Likewise.
14591 (vec_info::free_stmt_vec_infos): Likewise.
14593 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
14595 * tree-vectorizer.h (vect_stmt_in_region_p): Delete.
14596 * tree-vectorizer.c (vect_stmt_in_region_p): Likewise.
14598 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
14600 * tree-vectorizer.h (vec_info::new_vinfo_for_stmt)
14601 (vec_info::set_vinfo_for_stmt, vec_info::free_stmt_vec_infos)
14602 (vec_info::free_stmt_vec_info): New private member functions.
14603 (set_stmt_vec_info_vec, free_stmt_vec_infos, vinfo_for_stmt)
14604 (set_vinfo_for_stmt, new_stmt_vec_info, free_stmt_vec_info): Delete.
14605 * tree-parloops.c (gather_scalar_reductions): Remove calls to
14606 set_stmt_vec_info_vec and free_stmt_vec_infos.
14607 * tree-vect-loop.c (_loop_vec_info): Remove call to
14608 set_stmt_vec_info_vec.
14609 * tree-vect-stmts.c (new_stmt_vec_info, set_stmt_vec_info_vec)
14610 (free_stmt_vec_infos, free_stmt_vec_info): Delete in favor of...
14611 * tree-vectorizer.c (vec_info::new_stmt_vec_info)
14612 (vec_info::set_vinfo_for_stmt, vec_info::free_stmt_vec_infos)
14613 (vec_info::free_stmt_vec_info): ...these new functions. Remove
14614 assignments in {vec_info::,}new_stmt_vec_info that are redundant
14615 with the clearing in the xcalloc.
14616 (stmt_vec_info_vec): Delete.
14617 (vec_info::vec_info): Don't call set_stmt_vec_info_vec.
14618 (vectorize_loops): Likewise.
14619 (vec_info::~vec_info): Remove argument from call to
14620 free_stmt_vec_infos.
14621 (vec_info::add_stmt): Remove vinfo argument from call to
14624 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
14626 * tree-vectorizer.h (free_stmt_vec_info): Take a stmt_vec_info
14627 rather than a gimple stmt.
14628 * tree-vect-stmts.c (free_stmt_vec_info): Likewise. Don't free
14629 information for pattern statements when passed the original
14630 statement; instead wait to be passed the pattern statement itself.
14631 Don't call set_vinfo_for_stmt here.
14632 (free_stmt_vec_infos): Update call to free_stmt_vec_info.
14633 * tree-vect-loop.c (_loop_vec_info::~loop_vec_info): Don't free
14634 stmt_vec_infos here.
14635 * tree-vect-slp.c (_bb_vec_info::~bb_vec_info): Likewise.
14636 * tree-vectorizer.c (vec_info::remove_stmt): Nullify the statement's
14637 stmt_vec_infos entry.
14639 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
14641 * tree-vectorizer.h (vec_info::replace_stmt): Declare.
14642 * tree-vectorizer.c (vec_info::replace_stmt): New function.
14643 * tree-vect-slp.c (vect_remove_slp_scalar_calls): Use it.
14644 * tree-vect-stmts.c (vectorizable_call): Likewise.
14645 (vectorizable_simd_clone_call): Likewise.
14647 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
14649 * tree-vectorizer.h (vec_info::remove_stmt): Declare.
14650 * tree-vectorizer.c (vec_info::remove_stmt): New function.
14651 * tree-vect-loop-manip.c (vect_set_loop_condition): Use it.
14652 * tree-vect-loop.c (vect_transform_loop): Likewise.
14653 * tree-vect-slp.c (vect_schedule_slp): Likewise.
14654 * tree-vect-stmts.c (vect_remove_stores): Likewise.
14656 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
14658 * tree-vectorizer.h (vec_info::lookup_dr): New member function.
14659 (vect_dr_stmt): Delete.
14660 * tree-vectorizer.c (vec_info::lookup_dr): New function.
14661 * tree-vect-loop-manip.c (vect_update_inits_of_drs): Use it instead
14663 * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr)
14664 (vect_analyze_data_ref_dependence, vect_record_base_alignments)
14665 (vect_verify_datarefs_alignment, vect_peeling_supportable)
14666 (vect_analyze_data_ref_accesses, vect_prune_runtime_alias_test_list)
14667 (vect_analyze_data_refs): Likewise.
14668 (vect_slp_analyze_data_ref_dependence): Likewise. Take a vec_info
14670 (vect_find_same_alignment_drs): Likewise.
14671 (vect_slp_analyze_node_dependences): Update calls accordingly.
14672 (vect_analyze_data_refs_alignment): Likewise. Use vec_info::lookup_dr
14673 instead of DR_VECT_AUX.
14674 (vect_get_peeling_costs_all_drs): Take a loop_vec_info instead
14675 of a vector data references. Use vec_info::lookup_dr instead of
14677 (vect_peeling_hash_get_lowest_cost): Update calls accordingly.
14678 (vect_enhance_data_refs_alignment): Likewise. Use vec_info::lookup_dr
14679 instead of DR_VECT_AUX.
14681 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
14683 * tree-vectorizer.h (_loop_vec_info::unaligned_dr): Change to
14685 * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Update
14687 * tree-vect-loop.c (vect_analyze_loop_2): Likewise.
14688 * tree-vect-loop-manip.c (get_misalign_in_elems): Likewise.
14689 (vect_gen_prolog_loop_niters): Likewise.
14691 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
14693 * tree-vectorizer.h (set_dr_misalignment, dr_misalignment)
14694 (DR_TARGET_ALIGNMENT, aligned_access_p, known_alignment_for_access_p)
14695 (vect_known_alignment_in_bytes, vect_dr_behavior)
14696 (vect_get_scalar_dr_size): Take references as dr_vec_infos
14697 instead of data_references. Update calls to other routines for
14698 which the same change has been made.
14699 * tree-vect-data-refs.c (vect_preserves_scalar_order_p): Take
14700 dr_vec_infos instead of stmt_vec_infos.
14701 (vect_analyze_data_ref_dependence): Update call accordingly.
14702 (vect_slp_analyze_data_ref_dependence)
14703 (vect_record_base_alignments): Use DR_VECT_AUX.
14704 (vect_calculate_target_alignment, vect_compute_data_ref_alignment)
14705 (vect_update_misalignment_for_peel, verify_data_ref_alignment)
14706 (vector_alignment_reachable_p, vect_get_data_access_cost)
14707 (vect_peeling_supportable, vect_analyze_group_access_1)
14708 (vect_analyze_group_access, vect_analyze_data_ref_access)
14709 (vect_vfa_segment_size, vect_vfa_access_size, vect_vfa_align)
14710 (vect_compile_time_alias, vect_small_gap_p)
14711 (vectorizable_with_step_bound_p, vect_duplicate_ssa_name_ptr_info):
14712 (vect_supportable_dr_alignment): Take references as dr_vec_infos
14713 instead of data_references. Update calls to other routines for
14714 which the same change has been made.
14715 (vect_verify_datarefs_alignment, vect_get_peeling_costs_all_drs)
14716 (vect_find_same_alignment_drs, vect_analyze_data_refs_alignment)
14717 (vect_slp_analyze_and_verify_node_alignment)
14718 (vect_analyze_data_ref_accesses, vect_prune_runtime_alias_test_list)
14719 (vect_create_addr_base_for_vector_ref, vect_create_data_ref_ptr)
14720 (vect_setup_realignment): Use dr_vec_infos. Update calls after
14722 (_vect_peel_info::dr): Replace with...
14723 (_vect_peel_info::dr_info): ...this new field.
14724 (vect_peeling_hash_get_most_frequent)
14725 (vect_peeling_hash_choose_best_peeling): Update accordingly.
14726 (vect_peeling_hash_get_lowest_cost):
14727 (vect_enhance_data_refs_alignment): Likewise. Update calls to other
14728 routines for which the same change has been made.
14729 (vect_peeling_hash_insert): Likewise. Take a dr_vec_info instead of a
14731 * tree-vect-loop-manip.c (get_misalign_in_elems)
14732 (vect_gen_prolog_loop_niters): Use dr_vec_infos. Update calls after
14734 * tree-vect-loop.c (vect_analyze_loop_2): Likewise.
14735 * tree-vect-stmts.c (vect_get_store_cost, vect_get_load_cost)
14736 (vect_truncate_gather_scatter_offset, compare_step_with_zero)
14737 (get_group_load_store_type, get_negative_load_store_type)
14738 (vect_get_data_ptr_increment, vectorizable_store)
14739 (vectorizable_load): Likewise.
14740 (ensure_base_align): Take a dr_vec_info instead of a data_reference.
14741 Update calls to other routines for which the same change has been made.
14743 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
14745 * tree-vectorizer.h (vec_info::move_dr): New member function.
14746 (dataref_aux): Rename to...
14747 (dr_vec_info): ...this and add "dr" and "stmt" fields.
14748 (_stmt_vec_info::dr_aux): Update accordingly.
14749 (_stmt_vec_info::data_ref_info): Delete.
14750 (STMT_VINFO_GROUPED_ACCESS, DR_GROUP_FIRST_ELEMENT)
14751 (DR_GROUP_NEXT_ELEMENT, DR_GROUP_SIZE, DR_GROUP_STORE_COUNT)
14752 (DR_GROUP_GAP, DR_GROUP_SAME_DR_STMT, REDUC_GROUP_FIRST_ELEMENT):
14753 (REDUC_GROUP_NEXT_ELEMENT, REDUC_GROUP_SIZE): Use dr_aux.dr instead
14755 (STMT_VINFO_DATA_REF): Likewise. Turn into an lvalue.
14756 (STMT_VINFO_DR_INFO): New macro.
14757 (DR_VECT_AUX): Use STMT_VINFO_DR_INKFO and vect_dr_stmt.
14758 (set_dr_misalignment): Update after rename of dataref_aux.
14759 (vect_dr_stmt): Move earlier in file. Return dr_aux.stmt.
14760 * tree-vect-stmts.c (new_stmt_vec_info): Remove redundant
14761 initialization of STMT_VINFO_DATA_REF.
14762 * tree-vectorizer.c (vec_info::move_dr): New function.
14763 * tree-vect-patterns.c (vect_recog_bool_pattern)
14764 (vect_recog_mask_conversion_pattern)
14765 (vect_recog_gather_scatter_pattern): Use it.
14766 * tree-vect-data-refs.c (vect_analyze_data_refs): Initialize
14767 the "dr" and "stmt" fields of dr_vec_info instead of
14768 STMT_VINFO_DATA_REF.
14770 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
14772 * tree-vectorizer.h (_stmt_vec_info::pattern_stmt_p): New field.
14773 (is_pattern_stmt_p): Use it.
14774 * tree-vect-patterns.c (vect_init_pattern_stmt): Set pattern_stmt_p
14775 on pattern statements.
14777 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
14779 * tree-vect-patterns.c (vect_mark_pattern_stmts): Take the
14780 original stmt as a stmt_vec_info rather than a gimple stmt.
14781 (vect_pattern_recog_1): Take the statement directly as a
14782 stmt_vec_info, rather than via a gimple_stmt_iterator.
14783 Update call to vect_mark_pattern_stmts.
14784 (vect_pattern_recog): Update calls accordingly.
14786 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
14788 * tree-vectorizer.h (vect_get_vec_defs_for_stmt_copy)
14789 (vect_get_vec_def_for_stmt_copy): Take a vec_info rather than
14790 a vect_def_type for the first argument.
14791 * tree-vect-stmts.c (vect_get_vec_defs_for_stmt_copy): Likewise.
14792 (vect_get_vec_def_for_stmt_copy): Likewise. Return the original
14793 operand if it isn't defined by a vectorized statement.
14794 (vect_build_gather_load_calls): Remove the mask_dt argument and
14795 update calls to vect_get_vec_def_for_stmt_copy.
14796 (vectorizable_bswap): Likewise the dt argument.
14797 (vectorizable_call): Update calls to vectorizable_bswap and
14798 vect_get_vec_def_for_stmt_copy.
14799 (vectorizable_simd_clone_call, vectorizable_assignment)
14800 (vectorizable_shift, vectorizable_operation, vectorizable_condition)
14801 (vectorizable_comparison): Update calls to
14802 vect_get_vec_def_for_stmt_copy.
14803 (vectorizable_store): Likewise. Remove now-unnecessary calls to
14804 vect_is_simple_use.
14805 (vect_get_loop_based_defs): Remove dt argument and update call
14806 to vect_get_vec_def_for_stmt_copy.
14807 (vectorizable_conversion): Update calls to vect_get_loop_based_defs
14808 and vect_get_vec_def_for_stmt_copy.
14809 (vectorizable_load): Update calls to vect_build_gather_load_calls
14810 and vect_get_vec_def_for_stmt_copy.
14811 * tree-vect-loop.c (vect_create_epilog_for_reduction)
14812 (vectorizable_reduction, vectorizable_live_operation): Update calls
14813 to vect_get_vec_def_for_stmt_copy.
14815 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
14817 * tree-vect-data-refs.c (vect_record_base_alignment): Replace vec_info
14818 and gimple stmt arguments with a stmt_vec_info.
14819 (vect_record_base_alignments): Update calls accordingly.
14820 * tree-vect-slp.c (vect_record_max_nunits): Replace vec_info
14821 and gimple stmt arguments with a stmt_vec_info.
14822 (vect_build_slp_tree_1): Remove vinfo argument and update call
14823 to vect_record_max_nunits.
14824 (vect_build_slp_tree_2): Update calls to vect_build_slp_tree_1
14825 and vect_record_max_nunits.
14827 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
14829 * tree-vectorizer.h (nested_in_vect_loop_p): Move further down
14830 file and take a stmt_vec_info instead of a gimple stmt.
14831 (supportable_widening_operation, vect_finish_replace_stmt)
14832 (vect_finish_stmt_generation, vect_get_store_rhs)
14833 (vect_get_vec_def_for_operand_1, vect_get_vec_def_for_operand)
14834 (vect_get_vec_defs, vect_init_vector, vect_transform_stmt)
14835 (vect_remove_stores, vect_analyze_stmt, vectorizable_condition)
14836 (vect_get_smallest_scalar_type, vect_check_gather_scatter)
14837 (vect_create_data_ref_ptr, bump_vector_ptr)
14838 (vect_permute_store_chain, vect_setup_realignment)
14839 (vect_transform_grouped_load, vect_record_grouped_load_vectors)
14840 (vect_create_addr_base_for_vector_ref, vectorizable_live_operation)
14841 (vectorizable_reduction, vectorizable_induction)
14842 (get_initial_def_for_reduction, is_simple_and_all_uses_invariant)
14843 (vect_get_place_in_interleaving_chain): Take stmt_vec_infos rather
14844 than gimple stmts as arguments.
14845 * tree-vect-data-refs.c (vect_get_smallest_scalar_type)
14846 (vect_preserves_scalar_order_p, vect_slp_analyze_node_dependences)
14847 (can_group_stmts_p, vect_check_gather_scatter)
14848 (vect_create_addr_base_for_vector_ref, vect_create_data_ref_ptr)
14849 (bump_vector_ptr, vect_permute_store_chain, vect_setup_realignment)
14850 (vect_permute_load_chain, vect_shift_permute_load_chain)
14851 (vect_transform_grouped_load)
14852 (vect_record_grouped_load_vectors): Likewise.
14853 * tree-vect-loop.c (vect_fixup_reduc_chain)
14854 (get_initial_def_for_reduction, vect_create_epilog_for_reduction)
14855 (vectorize_fold_left_reduction, is_nonwrapping_integer_induction)
14856 (vectorizable_reduction, vectorizable_induction)
14857 (vectorizable_live_operation, vect_loop_kill_debug_uses): Likewise.
14858 * tree-vect-patterns.c (type_conversion_p, adjust_bool_stmts)
14859 (vect_get_load_store_mask): Likewise.
14860 * tree-vect-slp.c (vect_get_place_in_interleaving_chain)
14861 (vect_analyze_slp_instance, vect_mask_constant_operand_p): Likewise.
14862 * tree-vect-stmts.c (vect_mark_relevant)
14863 (is_simple_and_all_uses_invariant)
14864 (exist_non_indexing_operands_for_use_p, process_use)
14865 (vect_init_vector_1, vect_init_vector, vect_get_vec_def_for_operand_1)
14866 (vect_get_vec_def_for_operand, vect_get_vec_defs)
14867 (vect_finish_stmt_generation_1, vect_finish_replace_stmt)
14868 (vect_finish_stmt_generation, vect_truncate_gather_scatter_offset)
14869 (compare_step_with_zero, vect_get_store_rhs, get_group_load_store_type)
14870 (get_negative_load_store_type, get_load_store_type)
14871 (vect_check_load_store_mask, vect_check_store_rhs)
14872 (vect_build_gather_load_calls, vect_get_strided_load_store_ops)
14873 (vectorizable_bswap, vectorizable_call, vectorizable_simd_clone_call)
14874 (vect_create_vectorized_demotion_stmts, vectorizable_conversion)
14875 (vectorizable_assignment, vectorizable_shift, vectorizable_operation)
14876 (get_group_alias_ptr_type, vectorizable_store, hoist_defs_of_uses)
14877 (vectorizable_load, vectorizable_condition, vectorizable_comparison)
14878 (vect_analyze_stmt, vect_transform_stmt, vect_remove_stores)
14879 (supportable_widening_operation): Likewise.
14881 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
14883 * tree-vect-data-refs.c (vect_describe_gather_scatter_call): Take
14884 a stmt_vec_info instead of a gcall.
14885 (vect_check_gather_scatter): Update call accordingly.
14886 * tree-vect-loop-manip.c (iv_phi_p): Take a stmt_vec_info instead
14888 (vect_can_advance_ivs_p, vect_update_ivs_after_vectorizer)
14889 (slpeel_update_phi_nodes_for_loops):): Update calls accordingly.
14890 * tree-vect-loop.c (vect_transform_loop_stmt): Take a stmt_vec_info
14891 instead of a gimple stmt.
14892 (vect_transform_loop): Update calls accordingly.
14893 * tree-vect-slp.c (vect_split_slp_store_group): Take and return
14894 stmt_vec_infos instead of gimple stmts.
14895 (vect_analyze_slp_instance): Update use accordingly.
14896 * tree-vect-stmts.c (read_vector_array, write_vector_array)
14897 (vect_clobber_variable, vect_stmt_relevant_p, permute_vec_elements)
14898 (vect_use_strided_gather_scatters_p, vect_build_all_ones_mask)
14899 (vect_build_zero_merge_argument, vect_get_gather_scatter_ops)
14900 (vect_gen_widened_results_half, vect_get_loop_based_defs)
14901 (vect_create_vectorized_promotion_stmts, can_vectorize_live_stmts):
14902 Take a stmt_vec_info instead of a gimple stmt and pass stmt_vec_infos
14903 down to subroutines.
14905 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
14907 * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Change the type
14908 of the worklist from a vector of gimple stmts to a vector of
14910 * tree-vect-stmts.c (vect_mark_relevant, process_use)
14911 (vect_mark_stmts_to_be_vectorized): Likewise
14913 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
14915 * tree-vect-loop.c (vect_analyze_loop_operations): Look up the
14916 statement before passing it to vect_analyze_stmt.
14917 (vect_create_epilog_for_reduction): Use a stmt_vec_info to walk
14918 the chain of phi vector definitions. Track the exit phi via its
14920 (vectorizable_reduction): Set cond_stmt_vinfo directly from the
14921 STMT_VINFO_REDUC_DEF.
14922 * tree-vect-slp.c (vect_get_place_in_interleaving_chain): Use
14923 stmt_vec_infos to handle the statement chains.
14924 (vect_get_slp_defs): Record the first statement in the node
14925 using a stmt_vec_info.
14926 * tree-vect-stmts.c (vect_mark_stmts_to_be_vectorized): Look up
14927 statements here and pass their stmt_vec_info down to subroutines.
14928 (vect_init_vector_1): Hoist call to vinfo_for_stmt and pass it
14929 down to vect_finish_stmt_generation.
14930 (vect_init_vector, vect_get_vec_defs, vect_finish_replace_stmt)
14931 (vect_finish_stmt_generation): Call vinfo_for_stmt and pass
14932 stmt_vec_infos to subroutines.
14933 (vect_remove_stores): Use stmt_vec_infos to handle the statement
14936 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
14938 * tree-vect-data-refs.c (vect_slp_analyze_node_dependences):
14939 (vect_check_gather_scatter, vect_create_data_ref_ptr, bump_vector_ptr)
14940 (vect_permute_store_chain, vect_setup_realignment)
14941 (vect_permute_load_chain, vect_shift_permute_load_chain)
14942 (vect_transform_grouped_load): Use stmt_vec_info rather than gimple
14943 stmts internally, and when passing values to other vectorizer routines.
14944 * tree-vect-loop-manip.c (vect_can_advance_ivs_p): Likewise.
14945 * tree-vect-loop.c (vect_analyze_scalar_cycles_1)
14946 (vect_analyze_loop_operations, get_initial_def_for_reduction)
14947 (vect_create_epilog_for_reduction, vectorize_fold_left_reduction)
14948 (vectorizable_reduction, vectorizable_induction)
14949 (vectorizable_live_operation, vect_transform_loop_stmt)
14950 (vect_transform_loop): Likewise.
14951 * tree-vect-patterns.c (vect_reassociating_reduction_p)
14952 (vect_recog_widen_op_pattern, vect_recog_mixed_size_cond_pattern)
14953 (vect_recog_bool_pattern, vect_recog_gather_scatter_pattern): Likewise.
14954 * tree-vect-slp.c (vect_analyze_slp_instance): Likewise.
14955 (vect_slp_analyze_node_operations_1): Likewise.
14956 * tree-vect-stmts.c (vect_mark_relevant, process_use)
14957 (exist_non_indexing_operands_for_use_p, vect_init_vector_1)
14958 (vect_mark_stmts_to_be_vectorized, vect_get_vec_def_for_operand)
14959 (vect_finish_stmt_generation_1, get_group_load_store_type)
14960 (get_load_store_type, vect_build_gather_load_calls)
14961 (vectorizable_bswap, vectorizable_call, vectorizable_simd_clone_call)
14962 (vect_create_vectorized_demotion_stmts, vectorizable_conversion)
14963 (vectorizable_assignment, vectorizable_shift, vectorizable_operation)
14964 (vectorizable_store, vectorizable_load, vectorizable_condition)
14965 (vectorizable_comparison, vect_analyze_stmt, vect_transform_stmt)
14966 (supportable_widening_operation): Likewise.
14967 (vect_get_vector_types_for_stmt): Likewise.
14968 * tree-vectorizer.h (vect_dr_behavior): Likewise.
14970 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
14972 * tree-vect-data-refs.c (vect_analyze_data_ref_dependence)
14973 (vect_slp_analyze_node_dependences, vect_analyze_data_ref_accesses)
14974 (vect_permute_store_chain, vect_permute_load_chain)
14975 (vect_shift_permute_load_chain, vect_transform_grouped_load): Avoid
14976 repeated stmt_vec_info lookups.
14977 * tree-vect-loop-manip.c (vect_can_advance_ivs_p): Likewise.
14978 (vect_update_ivs_after_vectorizer): Likewise.
14979 * tree-vect-loop.c (vect_is_simple_reduction): Likewise.
14980 (vect_create_epilog_for_reduction, vectorizable_reduction): Likewise.
14981 * tree-vect-patterns.c (adjust_bool_stmts): Likewise.
14982 * tree-vect-slp.c (vect_analyze_slp_instance): Likewise.
14983 (vect_bb_slp_scalar_cost): Likewise.
14984 * tree-vect-stmts.c (get_group_alias_ptr_type): Likewise.
14986 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
14988 * tree-vect-data-refs.c (vect_check_gather_scatter): Pass the
14989 gcall rather than the generic gimple stmt to gimple_call_internal_fn.
14990 (vect_get_smallest_scalar_type, can_group_stmts_p): Use dyn_cast
14991 to get gassigns and gcalls, rather than operating on generc gimple
14993 * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p)
14994 (vect_mark_stmts_to_be_vectorized, vectorizable_store)
14995 (vectorizable_load, vect_analyze_stmt): Likewise.
14996 * tree-vect-loop.c (vectorizable_reduction): Likewise gphi.
14998 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
15000 * tree-vectorizer.h (get_earlier_stmt, get_later_stmt): Take and
15001 return stmt_vec_infos rather than gimple stmts. Do not accept
15003 (vect_find_last_scalar_stmt_in_slp): Return a stmt_vec_info instead
15005 * tree-vect-slp.c (vect_find_last_scalar_stmt_in_slp): Likewise.
15006 Update use of get_later_stmt.
15007 (vect_get_constant_vectors): Update call accordingly.
15008 (vect_schedule_slp_instance): Likewise
15009 * tree-vect-data-refs.c (vect_slp_analyze_node_dependences): Likewise.
15010 (vect_slp_analyze_instance_dependence): Likewise.
15011 (vect_preserves_scalar_order_p): Update use of get_earlier_stmt.
15013 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
15015 * tree-vectorizer.h (stmt_info_for_cost::stmt): Replace with...
15016 (stmt_info_for_cost::stmt_info): ...this new field.
15017 (add_stmt_costs): Update accordingly.
15018 * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost)
15019 (vect_get_known_peeling_cost): Likewise.
15020 (vect_estimate_min_profitable_iters): Likewise.
15021 * tree-vect-stmts.c (record_stmt_cost): Likewise.
15023 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
15025 * tree-vectorizer.h (_loop_vec_info::may_misalign_stmts): Change
15026 from an auto_vec<gimple *> to an auto_vec<stmt_vec_info>.
15027 * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Update
15029 * tree-vect-loop-manip.c (vect_create_cond_for_align_checks): Likewise.
15031 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
15033 * tree-vectorizer.h (_stmt_vec_info::same_dr_stmt): Change from
15034 a gimple stmt to a stmt_vec_info.
15035 * tree-vect-stmts.c (vectorizable_load): Update accordingly.
15037 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
15039 * tree-vectorizer.h (vec_info::grouped_stores): Change from
15040 an auto_vec<gimple *> to an auto_vec<stmt_vec_info>.
15041 (_loop_vec_info::reduction_chains): Likewise.
15042 * tree-vect-loop.c (vect_fixup_scalar_cycles_with_patterns): Update
15044 * tree-vect-slp.c (vect_analyze_slp): Likewise.
15046 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
15048 * tree-vectorizer.h (_stmt_vec_info::first_element): Change from
15049 a gimple stmt to a stmt_vec_info.
15050 (_stmt_vec_info::next_element): Likewise.
15051 * tree-vect-data-refs.c (vect_update_misalignment_for_peel)
15052 (vect_slp_analyze_and_verify_node_alignment)
15053 (vect_analyze_group_access_1, vect_analyze_group_access)
15054 (vect_small_gap_p, vect_prune_runtime_alias_test_list)
15055 (vect_create_data_ref_ptr, vect_record_grouped_load_vectors)
15056 (vect_supportable_dr_alignment): Update accordingly.
15057 * tree-vect-loop.c (vect_fixup_reduc_chain): Likewise.
15058 (vect_fixup_scalar_cycles_with_patterns, vect_is_slp_reduction)
15059 (vect_is_simple_reduction, vectorizable_reduction): Likewise.
15060 * tree-vect-patterns.c (vect_reassociating_reduction_p): Likewise.
15061 * tree-vect-slp.c (vect_build_slp_tree_1)
15062 (vect_attempt_slp_rearrange_stmts, vect_supported_load_permutation_p)
15063 (vect_split_slp_store_group, vect_analyze_slp_instance)
15064 (vect_analyze_slp, vect_transform_slp_perm_load): Likewise.
15065 * tree-vect-stmts.c (vect_model_store_cost, vect_model_load_cost)
15066 (get_group_load_store_type, get_load_store_type)
15067 (get_group_alias_ptr_type, vectorizable_store, vectorizable_load)
15068 (vect_transform_stmt, vect_remove_stores): Likewise.
15070 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
15072 * tree-vectorizer.h (vect_dr_stmt): Return a stmt_vec_info rather
15073 than a gimple stmt.
15074 * tree-vect-data-refs.c (vect_analyze_data_ref_dependence)
15075 (vect_slp_analyze_data_ref_dependence, vect_record_base_alignments)
15076 (vect_calculate_target_alignmentm, vect_compute_data_ref_alignment)
15077 (vect_update_misalignment_for_peel, vect_verify_datarefs_alignment)
15078 (vector_alignment_reachable_p, vect_get_data_access_cost)
15079 (vect_get_peeling_costs_all_drs, vect_peeling_hash_get_lowest_cost)
15080 (vect_peeling_supportable, vect_enhance_data_refs_alignment)
15081 (vect_find_same_alignment_drs, vect_analyze_data_refs_alignment)
15082 (vect_analyze_group_access_1, vect_analyze_group_access)
15083 (vect_analyze_data_ref_access, vect_analyze_data_ref_accesses)
15084 (vect_vfa_access_size, vect_small_gap_p, vect_analyze_data_refs)
15085 (vect_supportable_dr_alignment): Remove vinfo_for_stmt from the
15086 result of vect_dr_stmt and use the stmt_vec_info instead of
15087 the associated gimple stmt.
15088 * tree-vect-loop-manip.c (get_misalign_in_elems): Likewise.
15089 (vect_gen_prolog_loop_niters): Likewise.
15090 * tree-vect-loop.c (vect_analyze_loop_2): Likewise.
15092 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
15094 * tree-vectorizer.h (_slp_tree::stmts): Change from a vec<gimple *>
15095 to a vec<stmt_vec_info>.
15096 * tree-vect-slp.c (vect_free_slp_tree): Update accordingly.
15097 (vect_create_new_slp_node): Take a vec<gimple *> instead of a
15098 vec<stmt_vec_info>.
15099 (_slp_oprnd_info::def_stmts): Change from a vec<gimple *>
15100 to a vec<stmt_vec_info>.
15101 (bst_traits::value_type, bst_traits::value_type): Likewise.
15102 (bst_traits::hash): Update accordingly.
15103 (vect_get_and_check_slp_defs): Change the stmts parameter from
15104 a vec<gimple *> to a vec<stmt_vec_info>.
15105 (vect_two_operations_perm_ok_p, vect_build_slp_tree_1): Likewise.
15106 (vect_build_slp_tree): Likewise.
15107 (vect_build_slp_tree_2): Likewise. Update uses of
15108 SLP_TREE_SCALAR_STMTS.
15109 (vect_print_slp_tree): Update uses of SLP_TREE_SCALAR_STMTS.
15110 (vect_mark_slp_stmts, vect_mark_slp_stmts_relevant)
15111 (vect_slp_rearrange_stmts, vect_attempt_slp_rearrange_stmts)
15112 (vect_supported_load_permutation_p, vect_find_last_scalar_stmt_in_slp)
15113 (vect_detect_hybrid_slp_stmts, vect_slp_analyze_node_operations_1)
15114 (vect_slp_analyze_node_operations, vect_slp_analyze_operations)
15115 (vect_bb_slp_scalar_cost, vect_slp_analyze_bb_1)
15116 (vect_get_constant_vectors, vect_get_slp_defs)
15117 (vect_transform_slp_perm_load, vect_schedule_slp_instance)
15118 (vect_remove_slp_scalar_calls, vect_schedule_slp): Likewise.
15119 (vect_analyze_slp_instance): Build up a vec of stmt_vec_infos
15120 instead of gimple stmts.
15121 * tree-vect-data-refs.c (vect_slp_analyze_node_dependences): Change
15122 the stores parameter for a vec<gimple *> to a vec<stmt_vec_info>.
15123 (vect_slp_analyze_instance_dependence): Update uses of
15124 SLP_TREE_SCALAR_STMTS.
15125 (vect_slp_analyze_and_verify_node_alignment): Likewise.
15126 (vect_slp_analyze_and_verify_instance_alignment): Likewise.
15127 * tree-vect-loop.c (neutral_op_for_slp_reduction): Likewise.
15128 (get_initial_defs_for_reduction): Likewise.
15129 (vect_create_epilog_for_reduction): Likewise.
15130 (vectorize_fold_left_reduction): Likewise.
15131 * tree-vect-stmts.c (vect_prologue_cost_for_slp_op): Likewise.
15132 (vect_model_simple_cost, vectorizable_shift, vectorizable_load)
15133 (can_vectorize_live_stmts): Likewise.
15135 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
15137 * tree-vectorizer.h (_loop_vec_info::reductions): Change from an
15138 auto_vec<gimple *> to an auto_vec<stmt_vec_info>.
15139 (vect_force_simple_reduction): Take and return stmt_vec_infos rather
15141 * tree-parloops.c (valid_reduction_p): Take a stmt_vec_info instead
15143 (gather_scalar_reductions): Update after above interface changes.
15144 * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Likewise.
15145 (vect_is_simple_reduction): Take and return stmt_vec_infos rather
15147 (vect_force_simple_reduction): Likewise.
15148 * tree-vect-patterns.c (vect_pattern_recog_1): Update use of
15149 LOOP_VINFO_REDUCTIONS.
15150 * tree-vect-slp.c (vect_analyze_slp_instance): Likewise.
15152 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
15154 * tree-vectorizer.h (_stmt_vec_info::reduc_def): Change from
15155 a gimple stmt to a stmt_vec_info.
15156 * tree-vect-loop.c (vect_active_double_reduction_p)
15157 (vect_force_simple_reduction, vectorizable_reduction): Update
15160 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
15162 * tree-vectorizer.h (_slp_tree::vec_stmts): Change from a
15163 vec<gimple *> to a vec<stmt_vec_info>.
15164 * tree-vect-loop.c (vect_create_epilog_for_reduction): Change
15165 the reduction_phis argument from a vec<gimple *> to a
15166 vec<stmt_vec_info>.
15167 (vectorizable_reduction): Likewise the phis local variable that
15168 is passed to vect_create_epilog_for_reduction. Update for new type
15169 of SLP_TREE_VEC_STMTS.
15170 (vectorizable_induction): Update for new type of SLP_TREE_VEC_STMTS.
15171 (vectorizable_live_operation): Likewise.
15172 * tree-vect-slp.c (vect_get_slp_vect_defs): Likewise.
15173 (vect_transform_slp_perm_load, vect_schedule_slp_instance): Likewise.
15175 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
15177 * tree-vectorizer.h (_stmt_vec_info::vectorized_stmt): Change from
15178 a gimple stmt to a stmt_vec_info.
15179 (vectorizable_condition, vectorizable_live_operation)
15180 (vectorizable_reduction, vectorizable_induction): Pass back the
15181 vectorized statement as a stmt_vec_info.
15182 * tree-vect-data-refs.c (vect_record_grouped_load_vectors): Update
15183 use of STMT_VINFO_VEC_STMT.
15184 * tree-vect-loop.c (vect_create_epilog_for_reduction): Likewise,
15185 accumulating the inner phis that feed the STMT_VINFO_VEC_STMT
15186 as stmt_vec_infos rather than gimple stmts.
15187 (vectorize_fold_left_reduction): Change vec_stmt from a gimple stmt
15188 to a stmt_vec_info.
15189 (vectorizable_live_operation): Likewise.
15190 (vectorizable_reduction, vectorizable_induction): Likewise,
15191 updating use of STMT_VINFO_VEC_STMT.
15192 * tree-vect-stmts.c (vect_get_vec_def_for_operand_1): Update use
15193 of STMT_VINFO_VEC_STMT.
15194 (vect_build_gather_load_calls, vectorizable_bswap, vectorizable_call)
15195 (vectorizable_simd_clone_call, vectorizable_conversion)
15196 (vectorizable_assignment, vectorizable_shift, vectorizable_operation)
15197 (vectorizable_store, vectorizable_load, vectorizable_condition)
15198 (vectorizable_comparison, can_vectorize_live_stmts): Change vec_stmt
15199 from a gimple stmt to a stmt_vec_info.
15200 (vect_transform_stmt): Update use of STMT_VINFO_VEC_STMT. Pass a
15201 pointer to a stmt_vec_info to the vectorizable_* routines.
15203 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
15205 * tree-vectorizer.h (_stmt_vec_info::related_stmt): Change from
15206 a gimple stmt to a stmt_vec_info.
15207 (is_pattern_stmt_p): Update accordingly.
15208 * tree-vect-data-refs.c (vect_preserves_scalar_order_p): Likewise.
15209 (vect_record_grouped_load_vectors): Likewise.
15210 * tree-vect-loop.c (vect_determine_vf_for_stmt): Likewise.
15211 (vect_fixup_reduc_chain, vect_update_vf_for_slp): Likewise.
15212 (vect_model_reduction_cost): Likewise.
15213 (vect_create_epilog_for_reduction): Likewise.
15214 (vectorizable_reduction, vectorizable_induction): Likewise.
15215 * tree-vect-patterns.c (vect_init_pattern_stmt): Likewise.
15216 Return the stmt_vec_info for the pattern statement.
15217 (vect_set_pattern_stmt): Update use of STMT_VINFO_RELATED_STMT.
15218 (vect_split_statement, vect_mark_pattern_stmts): Likewise.
15219 * tree-vect-slp.c (vect_detect_hybrid_slp_stmts): Likewise.
15220 (vect_detect_hybrid_slp, vect_get_slp_defs): Likewise.
15221 * tree-vect-stmts.c (vect_mark_relevant): Likewise.
15222 (vect_get_vec_def_for_operand_1, vectorizable_call): Likewise.
15223 (vectorizable_simd_clone_call, vect_analyze_stmt, new_stmt_vec_info)
15224 (free_stmt_vec_info, vect_is_simple_use): Likewise.
15226 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
15228 * tree-vectorizer.h (vect_finish_replace_stmt): Return a stmt_vec_info
15229 (vect_finish_stmt_generation): Likewise.
15230 * tree-vect-stmts.c (vect_finish_stmt_generation_1): Likewise.
15231 (vect_finish_replace_stmt, vect_finish_stmt_generation): Likewise.
15232 (vect_build_gather_load_calls): Use the return value of the above
15233 functions instead of a separate call to vinfo_for_stmt. Use narrow
15234 scopes for the input gimple stmt and wider scopes for the associated
15235 stmt_vec_info. Use vec_info::lookup_def when setting these
15236 stmt_vec_infos from an SSA_NAME definition.
15237 (vectorizable_bswap, vectorizable_call, vectorizable_simd_clone_call)
15238 (vect_create_vectorized_demotion_stmts, vectorizable_conversion)
15239 (vectorizable_assignment, vectorizable_shift, vectorizable_operation)
15240 (vectorizable_store, vectorizable_load, vectorizable_condition)
15241 (vectorizable_comparison): Likewise.
15242 * tree-vect-loop.c (vectorize_fold_left_reduction): Likewise.
15243 (vectorizable_reduction): Likewise.
15245 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
15247 * tree-vectorizer.h (vect_is_simple_use): Add an optional
15248 stmt_vec_info * parameter before the optional gimple **.
15249 * tree-vect-stmts.c (vect_is_simple_use): Likewise.
15250 (process_use, vect_get_vec_def_for_operand_1): Update callers.
15251 (vect_get_vec_def_for_operand, vectorizable_shift): Likewise.
15252 * tree-vect-loop.c (vectorizable_reduction): Likewise.
15253 (vectorizable_live_operation): Likewise.
15254 * tree-vect-patterns.c (type_conversion_p): Likewise.
15255 (vect_look_through_possible_promotion): Likewise.
15256 (vect_recog_rotate_pattern): Likewise.
15257 * tree-vect-slp.c (vect_get_and_check_slp_defs): Likewise.
15259 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
15261 * tree-vectorizer.h (stmt_vec_info): Temporarily change from
15262 a typedef to a wrapper class.
15263 (NULL_STMT_VEC_INFO): New macro.
15264 (vec_info::stmt_infos): Change to vec<stmt_vec_info>.
15265 (stmt_vec_info::operator*): New function.
15266 (stmt_vec_info::operator gimple *): Likewise.
15267 (set_vinfo_for_stmt): Use NULL_STMT_VEC_INFO.
15268 (add_stmt_costs): Likewise.
15269 * tree-vect-loop-manip.c (iv_phi_p): Likewise.
15270 * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost)
15271 (vect_get_known_peeling_cost): Likewise.
15272 (vect_estimate_min_profitable_iters): Likewise.
15273 * tree-vect-patterns.c (vect_init_pattern_stmt): Likewise.
15274 * tree-vect-slp.c (vect_remove_slp_scalar_calls): Likewise.
15275 * tree-vect-stmts.c (vect_build_gather_load_calls): Likewise.
15276 (vectorizable_store, free_stmt_vec_infos): Likewise.
15277 (new_stmt_vec_info): Change return type of xcalloc to
15280 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
15282 * tree-vectorizer.h (vec_info::lookup_single_use): Declare.
15283 * tree-vectorizer.c (vec_info::lookup_single_use): New function.
15284 * tree-vect-loop.c (vectorizable_reduction): Use it instead of
15285 a single_imm_use-based sequence.
15286 * tree-vect-stmts.c (supportable_widening_operation): Likewise.
15288 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
15290 * tree-vectorizer.h (vec_info::lookup_def): Declare.
15291 * tree-vectorizer.c (vec_info::lookup_def): New function.
15292 * tree-vect-patterns.c (vect_get_internal_def): Use it.
15293 (vect_widened_op_tree): Likewise.
15294 * tree-vect-stmts.c (vect_is_simple_use): Likewise.
15295 * tree-vect-loop.c (vect_analyze_loop_operations): Likewise.
15296 (vectorizable_reduction): Likewise.
15297 (vect_valid_reduction_input_p): Take a stmt_vec_info instead
15299 (vect_is_slp_reduction): Update calls accordingly. Use
15300 vec_info::lookup_def.
15301 (vect_is_simple_reduction): Likewise
15302 * tree-vect-slp.c (vect_detect_hybrid_slp_1): Use vec_info::lookup_def.
15304 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
15306 * tree-vectorizer.h (vec_info::lookup_stmt): Declare.
15307 * tree-vectorizer.c (vec_info::lookup_stmt): New function.
15308 * tree-vect-loop.c (vect_determine_vf_for_stmt): Use it instead
15310 (vect_determine_vectorization_factor, vect_analyze_scalar_cycles_1)
15311 (vect_compute_single_scalar_iteration_cost, vect_analyze_loop_form)
15312 (vect_update_vf_for_slp, vect_analyze_loop_operations)
15313 (vect_is_slp_reduction, vectorizable_induction)
15314 (vect_transform_loop_stmt, vect_transform_loop): Likewise.
15315 * tree-vect-patterns.c (vect_init_pattern_stmt):
15316 (vect_determine_min_output_precision_1, vect_determine_precisions)
15317 (vect_pattern_recog): Likewise.
15318 * tree-vect-stmts.c (vect_analyze_stmt, vect_transform_stmt): Likewise.
15319 * config/powerpcspe/powerpcspe.c (rs6000_density_test): Likewise.
15320 * config/rs6000/rs6000.c (rs6000_density_test): Likewise.
15321 * tree-vect-slp.c (vect_detect_hybrid_slp_stmts): Likewise.
15322 (vect_detect_hybrid_slp_1, vect_detect_hybrid_slp_2)
15323 (vect_detect_hybrid_slp): Likewise. Change the walk_stmt_info
15324 info field from a loop to a loop_vec_info.
15326 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
15328 * tree-vectorizer.h (stmt_vec_info): Move typedef earlier in file.
15329 (vec_info::add_stmt): Declare.
15330 * tree-vectorizer.c (vec_info::add_stmt): New function.
15331 * tree-vect-data-refs.c (vect_create_data_ref_ptr): Use it.
15332 * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Likewise.
15333 (vect_create_epilog_for_reduction, vectorizable_reduction): Likewise.
15334 (vectorizable_induction): Likewise.
15335 * tree-vect-slp.c (_bb_vec_info::_bb_vec_info): Likewise.
15336 * tree-vect-stmts.c (vect_finish_stmt_generation_1): Likewise.
15337 (vectorizable_simd_clone_call, vectorizable_store): Likewise.
15338 (vectorizable_load): Likewise.
15339 * tree-vect-patterns.c (vect_init_pattern_stmt): Likewise.
15340 (vect_recog_bool_pattern, vect_recog_mask_conversion_pattern)
15341 (vect_recog_gather_scatter_pattern): Likewise.
15342 (append_pattern_def_seq): Likewise. Remove a check that is
15343 performed by add_stmt itself.
15345 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
15347 * tree-vect-loop.c (vectorizable_reduction): Fix an instance in
15348 which make_ssa_name was called with new_stmt before new_stmt
15351 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
15353 * tree-vect-loop.c (vect_valid_reduction_input_p): New function,
15355 (vect_is_slp_reduction): ...here...
15356 (vect_is_simple_reduction): ...and here. Remove repetition of tests
15357 that are already known to be false.
15359 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
15361 * tree-vectorizer.h (vect_free_slp_instance): Add a final_p parameter.
15362 * tree-vect-slp.c (vect_free_slp_tree): Likewise. Don't update
15363 STMT_VINFO_NUM_SLP_USES when it's true.
15364 (vect_free_slp_instance): Add a final_p parameter and pass it to
15365 vect_free_slp_tree.
15366 (vect_build_slp_tree_2): Update call to vect_free_slp_instance.
15367 (vect_analyze_slp_instance): Likewise.
15368 (vect_slp_analyze_operations): Likewise.
15369 (vect_slp_analyze_bb_1): Likewise.
15370 * tree-vectorizer.c (vec_info): Likewise.
15371 * tree-vect-loop.c (vect_transform_loop): Likewise.
15373 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
15375 * tree-vect-loop.c (vectorizable_reduction): Assert that the
15376 function is not called for second and subsequent members of
15379 2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
15381 * tree-vect-loop.c (get_initial_def_for_reduction): Move special
15382 cases for nested loops from here to ...
15383 (vect_create_epilog_for_reduction): ...here. Only call
15384 vect_is_simple_use for inner-loop reductions.
15386 2018-07-31 Martin Liska <mliska@suse.cz>
15388 PR gcov-profile/85338
15389 PR gcov-profile/85350
15390 PR gcov-profile/85372
15391 * profile.c (struct location_triplet): New.
15392 (struct location_triplet_hash): Likewise.
15393 (output_location): Do not output a BB that
15394 is already recorded for a line.
15395 (branch_prob): Use streamed_locations.
15397 2018-07-31 Martin Liska <mliska@suse.cz>
15399 PR gcov-profile/85370
15400 * coverage.c (coverage_begin_function): Do not mark target
15401 clones as artificial functions.
15403 2018-07-31 Martin Liska <mliska@suse.cz>
15405 PR gcov-profile/83813
15406 PR gcov-profile/84758
15407 PR gcov-profile/85217
15408 PR gcov-profile/85332
15409 * profile.c (branch_prob): Do not record GOTO expressions
15410 for GIMPLE statements which locations are already streamed.
15412 2018-07-31 Olivier Hainque <hainque@adacore.com>
15414 * gcc.c (handle_spec_function): Accept a soft_matched_part
15415 argument, as do_spec_1. Pass it down to ...
15416 (eval_spec_function): Accept a soft_matched_part argument,
15417 and pass it down to ...
15418 (do_spec_2): Accept a soft_matched_part argument, and pass
15419 it down to do_spec_1.
15420 (do_spec_1): Pass soft_matched_part to handle_spec_function.
15421 (handle_braces): Update call to handle_spec_function.
15422 (driver::set_up_specs): Update calls to do_spec_2.
15423 (compare_debug_dump_opt_spec_function): Likewise.
15424 (compare_debug_self_opt_spec_function): Likewise.
15426 2018-07-31 Olivier Hainque <hainque@adacore.com>
15428 * common.opt (nolibc): New option.
15429 * doc/invoke.texi (Link Options): Document it.
15430 * gcc.c (LINK_GCC_C_SEQUENCE_SPEC): Honor nolibc.
15431 * config/alpha/linux.h: Likewise.
15432 * config/arc/elf.h: Likewise.
15433 * config/arm/uclinux-elf.h: Likewise.
15434 * config/arm/unknown-elf.h: Likewise.
15435 * config/avr/avrlibc.h: Likewise.
15436 * config/bfin/bfin.h: Likewise.
15437 * config/bfin/linux.h: Likewise.
15438 * config/bfin/uclinux.h: Likewise.
15439 * config/darwin.h: Likewise.
15440 * config/darwin10.h: Likewise.
15441 * config/darwin12.h: Likewise.
15442 * config/gnu-user.h: Likewise.
15443 * config/lm32/uclinux-elf.h: Likewise.
15444 * config/pa/pa-hpux11.h: Likewise.
15445 * config/pa/pa64-hpux.h: Likewise.
15446 * config/sparc/sparc.h: Likewise.
15448 2018-07-31 Olivier Hainque <hainque@adacore.com>
15450 * gcc.c (getenv_spec_function): Prepend '/' to value for allowed
15451 undefined variables.
15453 2018-07-30 Segher Boessenkool <segher@kernel.crashing.org>
15456 * config/arm/arm.c (arm_block_set_aligned_vect): Use gen_int_mode
15457 instead of GEN_INT.
15459 2018-07-30 Bernd Edlinger <bernd.edlinger@hotmail.de>
15461 * tree-ssa-forwprop.c (simplify_builtin_call): Don't create a not NUL
15462 terminated string literal.
15464 2018-07-30 Segher Boessenkool <segher@kernel.crashing.org>
15466 PR rtl-optimization/85160
15467 * combine.c (is_just_move): New function.
15468 (try_combine): Allow combining two instructions into two if neither of
15469 the original instructions was a move.
15471 2018-07-30 Alexander Monakov <amonakov@ispras.ru>
15474 * doc/extend.texi (Global Register Variables): Discourage use of type
15476 (Local Register Variables): Likewise.
15478 2018-07-30 Richard Sandiford <richard.sandiford@arm.com>
15480 PR tree-optimization/86506
15481 * hwint.h (ceil_log2): Resync with hwint.c implementation.
15483 2018-07-30 Ilya Leoshkevich <iii@linux.ibm.com>
15486 * lra-constraints.c (spill_hard_reg_in_range): When selecting the
15487 hard_regno, make sure no insn between `from` and `to` clobbers it.
15489 2018-07-30 Cesar Philippidis <cesar@codesourcery.com>
15490 Tom de Vries <tdevries@suse.de>
15492 * config/nvptx/nvptx.c (PTX_GANG_DEFAULT): Rename to ...
15493 (PTX_DEFAULT_RUNTIME_DIM): ... this.
15494 (nvptx_goacc_validate_dims): Set default worker and gang dims to
15495 PTX_DEFAULT_RUNTIME_DIM.
15496 (nvptx_dim_limit): Ignore GOMP_DIM_WORKER.
15498 2018-07-29 John David Anglin <danglin@gcc.gnu.org>
15500 * config/pa/pa.c (pa_output_addr_vec): Align address table.
15501 * config/pa/pa.h (JUMP_TABLES_IN_TEXT_SECTION): Revise comment.
15502 * config/pa/pa32-linux.h (JUMP_TABLES_IN_TEXT_SECTION): Define.
15504 2018-07-27 Michael Meissner <meissner@linux.ibm.com>
15506 * config/rs6000/constraints.md (wG constraint): Delete, no longer
15508 * config/rs6000/predicates.md (p9_fusion_reg_operand): Rename
15509 predicate to reflect toc fusion has been deleted.
15510 (toc_fusion_mem_raw): Delete, no longer used.
15511 (toc_fusion_mem_wrapped): Likewise.
15512 * config/rs6000/rs6000-cpus.def (POWERPC_MASKS): Delete toc
15514 * config/rs6000/rs6000-protos.h (fusion_wrap_memory_address):
15515 Delete, no longer used.
15516 * config/rs6000/rs6000.c (struct rs6000_reg_addr): Delete fields
15517 meant to be used for toc fusion.
15518 (rs6000_debug_print_mode): Delete toc fusion debugging.
15519 (rs6000_debug_reg_global): Likewise.
15520 (rs6000_init_hard_regno_mode_ok): Delete setting up fields for toc
15521 fusion and secondary reload support that were never used.
15522 (rs6000_option_override_internal): Delete TOC fusion, that was only
15523 partially defined, and it did not work unless you also used the
15525 (rs6000_legitimate_address_p): Delete TOC fusion support.
15526 (rs6000_opt_masks): Likewise.
15527 (fusion_wrap_memory_address): Delete function, no longer used.
15528 (fusion_split_address); Delete TOC fusion support.
15529 * config/rs6000/rs6000.h (TARGET_TOC_FUSION_INT): Delete, no
15530 longer used with toc fusion being deleted.
15531 (TARGET_TOC_FUSION_FP): Likewise.
15532 * config/rs6000/rs6000.md (UNSPEC_FUSION_ADDIS): Delete TOC fusion
15534 (toc fusion spliter): Delete TOC fusion support.
15535 (toc_fusionload_<mode>): Likewise.
15536 (toc_fusionload_di): Likewise.
15537 (fusion_gpr_load_<mode>): Delete generator function, this insn no
15538 longer needs to be named. Rename predicate to delete TOC fusion.
15539 (fusion_gpr_<P:mode>_<GPR_FUSION:mode>_load): Likewise.
15540 (fusion_gpr_<P:mode>_<GPR_FUSION:mode>_store): Likewise.
15541 (fusion_vsx_<P:mode>_<GPR_FUSION:mode>_load): Likewise.
15542 (fusion_vsx_<P:mode>_<GPR_FUSION:mode>_store): Likewise.
15543 (p9 fusion peephole2s): Rename predicate to delete TOC fusion.
15545 2018-07-27 Kelvin Nilsen <kelvin@gcc.gnu.org>
15547 * doc/extend.texi (Basic PowerPC Built-in Functions Available on
15548 ISA 2.05): Replace __uint128_t with __uint128 and __int128_t with
15549 __int128 in built-in function prototypes.
15550 (PowerPC AltiVec Built-in Functions on ISA 2.07): Likewise.
15551 (PowerPC AltiVec Built-in Functions on ISA 3.0): Likewise.
15553 2018-07-27 Martin Sebor <msebor@redhat.com>
15555 PR tree-optimization/86696
15556 * tree-ssa-strlen.c (get_min_string_length): Handle all integer
15557 types, including enums.
15558 (handle_char_store): Be prepared for the above function to fail.
15560 2018-07-26 Qing Zhao <qing.zhao@oracle.com>
15562 * builtins.c (inline_expand_builtin_string_cmp): Disable inlining
15563 when optimization level is lower than 2 or optimize for size.
15565 2018-07-26 Martin Sebor <msebor@redhat.com>
15567 PR tree-optimization/86043
15568 PR tree-optimization/86042
15569 * tree-ssa-strlen.c (handle_builtin_memcpy): Handle strict overlaps.
15570 (get_string_cst_length): Rename...
15571 (get_min_string_length): ...to this. Add argument.
15572 (handle_char_store): Extend to handle multi-character stores by
15574 * tree.c (initializer_zerop): Use new argument. Handle MEM_REF.
15575 * tree.h (initializer_zerop): Add argument.
15577 2018-07-26 Jakub Jelinek <jakub@redhat.com>
15579 PR middle-end/86660
15580 * omp-low.c (scan_sharing_clauses): Don't ignore map clauses for
15581 declare target to variables if they have always,{to,from,tofrom} map
15584 2018-07-26 Martin Liska <mliska@suse.cz>
15587 * lto-wrapper.c: Add linker_output as prefix
15588 for ltrans_output_file.
15590 2018-07-26 Segher Boessenkool <segher@kernel.crashing.org>
15592 PR rtl-optimization/85805
15593 * combine.c (reg_nonzero_bits_for_combine): Only use the last set
15594 value for hard registers if that was written in the same mode.
15596 2018-07-26 Martin Liska <mliska@suse.cz>
15598 PR gcov-profile/86536
15599 * gcov.c (format_gcov): Use printf format %.*f directly
15600 and do not handle special values.
15602 2018-07-25 Claudiu Zissulescu <claziss@synopsys.com>
15604 * common/config/arc/arc-common.c (arc_option_optimization_table):
15605 Update default optimizations for size.
15607 2018-07-25 Claudiu Zissulescu <claziss@synopsys.com>
15609 * config/arc/arc.md (movsf_insn): Add short instruction selection.
15610 * config/arc/constraints.md (CfZ): New constraint.
15611 * config/arc/fpu.md (addssf3_fpu): Use CfZ constraint.
15612 (subsf3_fpu): Likewise.
15613 (cmpsf_fpu): Likewise.
15614 (cmpsf_fpu_uneq): Likewise.
15616 2018-07-25 Claudiu Zissulescu <claziss@synopsys.com>
15618 * config/arc/arc.c (compact_memory_operand_p): Check for uncached
15620 (arc_is_uncached_mem_p): uncached applies to both the variable and
15623 2018-07-25 Claudiu Zissulescu <claziss@synopsys.com>
15625 * config/arc/arc.h (ADDITIONAL_REGISTER_NAMES): Add additional
15628 2018-07-25 David Malcolm <dmalcolm@redhat.com>
15630 * optinfo-emit-json.cc (class optrecord_json_writer): Convert
15631 field "m_scopes" from vec to auto_vec.
15633 2018-07-25 Martin Liska <mliska@suse.cz>
15635 * config/powerpcspe/powerpcspe-protos.h (rs6000_loop_align): Fix
15638 2018-07-25 Richard Biener <rguenther@suse.de>
15641 * dwarf2out.c (dwarf2out_decl): Do not handle nested functions
15642 special wrt context_die late.
15643 (gen_subprogram_die): Re-use DIEs in local scope.
15645 2018-07-25 Richard Sandiford <richard.sandiford@arm.com>
15647 PR tree-optimization/86644
15648 * hwint.c (ceil_log2): Fix comment. Return 0 for 0.
15650 2018-07-25 Martin Liska <mliska@suse.cz>
15652 PR middle-end/86645
15653 * dumpfile.c: And excluded values with TDF_ALL_VALUES.
15654 * dumpfile.h (enum dump_flag): Defince TDF_ALL_VALUES.
15656 2018-07-25 Martin Liska <mliska@suse.cz>
15659 * params.def: Explain ASan abbreviation and provide
15660 a documentation link.
15662 2018-07-24 Martin Sebor <msebor@redhat.com>
15664 PR tree-optimization/86622
15665 PR tree-optimization/86532
15666 * builtins.h (string_length): Declare.
15667 * builtins.c (c_strlen): Correct handling of non-constant offsets.
15668 (check_access): Be prepared for non-constant length ranges.
15669 (string_length): Make extern.
15670 * expr.c (string_constant): Only handle the minor non-constant
15671 array index. Use string_constant to compute the length of
15672 a generic string constant.
15674 2018-07-24 Richard Sandiford <richard.sandiford@arm.com>
15676 PR tree-optimization/86618
15677 * tree-vect-stmts.c (vectorizable_call): Don't take the address
15678 of LOOP_VINFO_MASKS (loop_vinfo) when loop_vinfo is null.
15680 2018-07-24 David Malcolm <dmalcolm@redhat.com>
15682 PR tree-optimization/86636
15683 * json.cc (json::object::set): Fix comment. Add assertions.
15684 (json::array::append): Move here from json.h. Add comment and an
15686 (json::string::string): Likewise.
15687 * json.h (json::array::append): Move to json.cc.
15688 (json::string::string): Likewise.
15689 * optinfo-emit-json.cc
15690 (optrecord_json_writer::impl_location_to_json): Assert that we
15691 aren't attempting to write out UNKNOWN_LOCATION, or an ad-hoc
15692 wrapper around it. Expand the location once, rather than three
15694 (optrecord_json_writer::inlining_chain_to_json): Fix the check for
15695 UNKNOWN_LOCATION, to use LOCATION_LOCUS to look through ad-hoc
15697 (optrecord_json_writer::optinfo_to_json): Likewise, in four
15698 places. Fix some overlong lines.
15700 2018-07-24 Matthew Malcomson <matthew.malcomson@arm.com>
15702 * config/aarch64/aarch64-simd.md
15703 (aarch64_<ANY_EXTEND:su><ADDSUB:optab>w<mode>): Split into...
15704 (aarch64_<ANY_EXTEND:su>subw<mode>): ... This...
15705 (aarch64_<ANY_EXTEND:su>addw<mode>): ... And this.
15706 (aarch64_<ANY_EXTEND:su><ADDSUB:optab>w<mode>_internal): Split into...
15707 (aarch64_<ANY_EXTEND:su>subw<mode>_internal): ... This...
15708 (aarch64_<ANY_EXTEND:su>addw<mode>_internal): ... And this.
15709 (aarch64_<ANY_EXTEND:su><ADDSUB:optab>w2<mode>_internal): Split into...
15710 (aarch64_<ANY_EXTEND:su>subw2<mode>_internal): ... This...
15711 (aarch64_<ANY_EXTEND:su>addw2<mode>_internal): ... And this.
15713 2018-07-24 Jakub Jelinek <jakub@redhat.com>
15715 PR middle-end/86627
15716 * expmed.c (expand_divmod): Punt if d == HOST_WIDE_INT_MIN
15717 and size > HOST_BITS_PER_WIDE_INT. For size > HOST_BITS_PER_WIDE_INT
15718 and abs_d == d, do the power of two handling if profitable.
15720 2018-07-24 Richard Biener <rguenther@suse.de>
15722 * match.pd: Add BIT_FIELD_REF canonicalizations.
15724 2018-07-23 Bernd Edlinger <bernd.edlinger@hotmail.de>
15727 * genmatch.c (dt_operand::gen_match_op): Avoid folding volatile values.
15729 2018-07-23 Bernd Edlinger <bernd.edlinger@hotmail.de>
15731 * gimple-fold.c (gimple_fold_builtin_printf): Don't create a not NUL
15732 terminated STRING_CST object.
15734 2018-07-23 Bernd Edlinger <bernd.edlinger@hotmail.de>
15736 hsa-dump.c (dump_hsa_symbol): Avoid out of scope access to buf.
15738 2018-07-23 Segher Boessenkool <segher@kernel.crashing.org>
15740 * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Adjust.
15741 * config/rs6000/rs6000-protos.h (rs6000_split_v4si_init): Delete.
15742 * config/rs6000/rs6000.c (rs6000_expand_vector_init): Always force
15743 the elements into a register.
15744 (rs6000_split_v4si_init_di_reg): Delete.
15745 (rs6000_split_v4si_init): Delete.
15746 * config/rs6000/vsx.md (unspec): Delete UNSPEC_VSX_VEC_INIT.
15747 (vsx_init_v4si): Rewrite as a define_expand.
15749 2018-07-23 Segher Boessenkool <segher@kernel.crashing.org>
15751 * config/rs6000/rs6000.md (splitters for rldimi and rlwimi with the
15752 zero_extend argument from memory): New.
15754 2018-07-22 Martin Sebor <msebor@redhat.com>
15757 * gimple-ssa-warn-alloca.c (alloca_call_type_by_arg): Avoid
15758 diagnosing calls with unknown arguments unless -Walloca-larger-than
15759 is restricted to less than PTRDIFF_MAX bytes.
15761 2018-07-22 Gerald Pfeifer <gerald@pfeifer.com>
15763 * doc/gcov.texi (Invoking Gcov): Editorial changes.
15765 2018-07-20 David Malcolm <dmalcolm@redhat.com>
15767 * pretty-print.c (text_info::set_location): Remove redundant
15768 "line_table" parameter from call to rich_location::set_range.
15770 2018-07-20 Martin Sebor <msebor@redhat.com>
15772 PR middle-end/82063
15773 * builtins.c (expand_builtin_alloca): Adjust.
15774 * calls.c (alloc_max_size): Simplify.
15775 * cgraphunit.c (cgraph_node::expand): Adjust.
15776 * common.opt (larger_than_size, warn_frame_larger_than): Remove
15778 (frame_larger_than_size): Same.
15779 (-Wframe-larger-than, -Wlarger-than, -Wstack-usage): Change options
15780 to take a HOST_WIDE_INT argument and accept a byte-size suffix.
15782 * doc/invoke.texi (GCC Command Options): Document option arguments.
15783 Explain byte-size arguments and suffixes.
15784 (-Wvla-larger-than, -Wno-alloc-size-larger-than): Update.
15785 (-Wno-alloca-larger-than, -Wno-vla-larger-than): Same.
15786 (-Wframe-larger-than, -Wlarger-than, -Wstack-usage): Same.
15787 * doc/options.texi (UInteger): Expand.
15788 (Host_Wide_Int, ByteSize): Document new properties.
15789 * final.c (final_start_function_1): Include sizes in an error message.
15790 * function.c (frame_offset_overflow): Same.
15791 * gimple-ssa-warn-alloca.c (pass_walloca::gate): Adjust.
15792 (alloca_call_type_by_arg): Change function argument to HOST_WIDE_INT.
15793 Diagnose unbounded alloca calls only for limits of less than
15795 (alloca_call_type): Adjust. Diagnose possibly out-of-bounds alloca
15796 calls and VLA size only for limits of less than PTRDIFF_MAX. Same
15798 (pass_walloca::execute): Adjust. Diagnose alloca calls in loops
15799 only for limits of less than PTRDIFF_MAX.
15800 * langhooks-def.h (lhd_handle_option): Change function argument
15802 * langhooks.c (lhd_handle_option): Same.
15803 * langhooks.h (handle_option): Same.
15804 * opt-functions.awk (switch_bit_fields): Handle Host_Wide_Int and
15806 (var_type, var_type_struct): Same.
15807 (var_set): Handle ByteSize flag.
15808 * optc-gen.awk: Add comments to output to ease debugging. Make
15809 use of HOST_WIDE_INT where appropriate.
15810 * opts-gen-save.awk: Use %lx to format unsigned long.
15811 * opth-gen.awk: Change function argument to HOST_WIDE_INT.
15812 * opts-common.c (integral_argument): Return HOST_WIDE_INT and add
15813 arguments. Parse bytes-size suffixes.
15814 (enum_arg_to_value): Change function argument to HOST_WIDE_INT.
15815 (enum_value_to_arg): Same.
15816 (decode_cmdline_option): Handle cl_host_wide_int. Adjust.
15817 (handle_option): Adjust.
15818 (generate_option): Change function argument to HOST_WIDE_INT.
15819 (cmdline_handle_error): Adjust.
15820 (read_cmdline_option): Change function argument to HOST_WIDE_INT.
15821 (set_option): Change function argument to HOST_WIDE_INT.
15822 (option_enabled): Handle cl_host_wide_int.
15823 (get_option_state): Handle CLVC_SIZE.
15824 (control_warning_option): Same.
15825 * opts.c (common_handle_option): Change function argument to
15826 HOST_WIDE_INT. Remove handling of OPT_Walloca_larger_than_ and
15827 OPT_Wvla_larger_than_.
15828 * opts.h (enum cl_var_type): Add an enumerator.
15829 * stor-layout.c (layout_decl): Print a more meaningful warning.
15830 * toplev.c (output_stack_usage): Adjust.
15832 2018-07-20 Qing Zhao <qing.zhao@oracle.com>
15834 * builtins.c (expand_builtin_memcmp): Delete the last parameter for
15835 call to inline_expand_builtin_string_cmp.
15836 (expand_builtin_strcmp): Likewise.
15837 (expand_builtin_strncmp): Likewise.
15838 (inline_string_cmp): Delete the last parameter, change char_type_node
15839 to unsigned_char_type_node for strcmp/strncmp, add conversions to the
15841 (inline_expand_builtin_string_cmp): Delete the last parameter, give up
15842 the inlining expansion on target where the type of the call has same or
15843 narrower precision than unsigned char.
15845 2018-07-20 David Malcolm <dmalcolm@redhat.com>
15847 * Makefile.in (OBJS): Add json.o and optinfo-emit-json.o.
15848 (CFLAGS-optinfo-emit-json.o): Define TARGET_NAME.
15849 * common.opt (fsave-optimization-record): New option.
15850 * coretypes.h (struct kv_pair): Move here from dumpfile.c.
15851 * doc/invoke.texi (-fsave-optimization-record): New option.
15852 * dumpfile.c: Include "optinfo-emit-json.h".
15853 (struct kv_pair): Move to coretypes.h.
15854 (optgroup_options): Make non-static.
15855 (dump_context::end_scope): Call
15856 optimization_records_maybe_pop_dump_scope.
15857 * dumpfile.h (optgroup_options): New decl.
15858 * json.cc: New file.
15859 * json.h: New file.
15860 * optinfo-emit-json.cc: New file.
15861 * optinfo-emit-json.h: New file.
15862 * optinfo.cc: Include "optinfo-emit-json.h".
15863 (optinfo::emit): Call optimization_records_maybe_record_optinfo.
15864 (optinfo_enabled_p): Check optimization_records_enabled_p.
15865 (optinfo_wants_inlining_info_p): Likewise.
15866 * optinfo.h: Update comment.
15867 * profile-count.c (profile_quality_as_string): New function.
15868 * profile-count.h (profile_quality_as_string): New decl.
15869 (profile_count::quality): New accessor.
15870 * selftest-run-tests.c (selftest::run_tests): Call json_cc_tests
15871 and optinfo_emit_json_cc_tests.
15872 * selftest.h (selftest::json_cc_tests): New decl.
15873 (selftest::optinfo_emit_json_cc_tests): New decl.
15874 * toplev.c: Include "optinfo-emit-json.h".
15875 (compile_file): Call optimization_records_finish.
15876 (do_compile): Call optimization_records_start.
15877 * tree-ssa-live.c: Include optinfo.h.
15878 (remove_unused_scope_block_p): Retain inlining information if
15879 optinfo_wants_inlining_info_p returns true.
15881 2018-07-20 Richard Biener <rguenther@suse.de>
15884 * dwarf2out.c (dwarf2out_die_ref_for_decl): Test in_lto_p
15885 to cover -flto-partition=none.
15887 2018-07-20 Martin Liska <mliska@suse.cz>
15889 * tree.h (DECL_LOCATION_RANGE): Remove unused macro.
15890 (get_decl_source_range): Remove unused function.
15892 2018-07-20 Richard Biener <rguenther@suse.de>
15894 * tree-ssa-sccvn.h (struct vn_nary_op_s): Add next member.
15895 (struct vn_phi_s): Likewise.
15896 (struct vn_reference_s): Likewise.
15897 * tree-ssa-sccvn.c (vn_nary_op_hasher::equal): Add shortcut
15898 for searching the slot of an entry known to be in the hash itself.
15899 (vn_phi_hasher::equal): Likewise.
15900 (vn_reference_hasher::equal): Likewise.
15901 (last_inserted_ref, last_inserted_phi, last_inserted_nary): New
15903 (optimistic_info, current_info): Remove, keeping only valid_info.
15904 (vn_reference_lookup_1): Remove fallback lookup.
15905 (vn_reference_lookup_2): Likewise.
15906 (vn_nary_op_lookup_1): Likewise.
15907 (vn_phi_lookup): Likewise.
15908 (vn_nary_build_or_lookup_1): Make sure to not chain the built
15910 (vn_reference_insert): Adjust, chain the inserted hash element
15911 at last_inserted_ref.
15912 (vn_reference_insert_pieces): Likewise.
15913 (visit_reference_op_call): Likewise.
15914 (vn_nary_op_insert_into): Chain the inserted hash element at
15915 last_inserted_nary.
15916 (vn_nary_op_insert_pieces): Adjust.
15917 (vn_nary_op_insert): Likewise.
15918 (vn_nary_op_insert_stmt): Likewise.
15919 (vn_phi_insert): Adjust, chain the inserted hash element at
15921 (process_scc): Remove clearing and copying the optimistic
15922 table. Instead remove elements inserted during an optimistic
15923 iteration from the single table we maintain.
15924 (init_scc_vn): Adjust.
15925 (free_scc_vn): Likewise.
15926 (sccvn_dom_walker::record_cond): Likewise.
15927 (sccvn_dom_walker::after_dom_children): Likewise.
15929 2018-07-19 Martin Sebor <msebor@redhat.com>
15931 PR tree-optimization/84047
15932 PR tree-optimization/83776
15933 * tree-vrp.c (vrp_prop::check_mem_ref): New function.
15934 (check_array_bounds): Call it.
15936 2018-07-19 Martin Sebor <msebor@redhat.com>
15938 * align.h (align_flags): Use member initialization.
15940 2018-07-19 David Malcolm <dmalcolm@redhat.com>
15942 * Makefile.in (OBJS): Add optinfo.o.
15943 * coretypes.h (class symtab_node): New forward decl.
15944 (struct cgraph_node): New forward decl.
15945 (class varpool_node): New forward decl.
15946 * dump-context.h: New file.
15947 * dumpfile.c: Include "optinfo.h", "dump-context.h", "cgraph.h",
15949 (refresh_dumps_are_enabled): Use optinfo_enabled_p.
15950 (set_dump_file): Call dumpfile_ensure_any_optinfo_are_flushed.
15951 (set_alt_dump_file): Likewise.
15952 (dump_context::~dump_context): New dtor.
15953 (dump_gimple_stmt): Move implementation to...
15954 (dump_context::dump_gimple_stmt): ...this new member function.
15955 Add the stmt to any pending optinfo, creating one if need be.
15956 (dump_gimple_stmt_loc): Move implementation to...
15957 (dump_context::dump_gimple_stmt_loc): ...this new member function.
15958 Start a new optinfo and add the stmt to it.
15959 (dump_gimple_expr): Move implementation to...
15960 (dump_context::dump_gimple_expr): ...this new member function.
15961 Add the stmt to any pending optinfo, creating one if need be.
15962 (dump_gimple_expr_loc): Move implementation to...
15963 (dump_context::dump_gimple_expr_loc): ...this new member function.
15964 Start a new optinfo and add the stmt to it.
15965 (dump_generic_expr): Move implementation to...
15966 (dump_context::dump_generic_expr): ...this new member function.
15967 Add the tree to any pending optinfo, creating one if need be.
15968 (dump_generic_expr_loc): Move implementation to...
15969 (dump_context::dump_generic_expr_loc): ...this new member
15970 function. Add the tree to any pending optinfo, creating one if
15972 (dump_printf): Move implementation to...
15973 (dump_context::dump_printf_va): ...this new member function. Add
15974 the text to any pending optinfo, creating one if need be.
15975 (dump_printf_loc): Move implementation to...
15976 (dump_context::dump_printf_loc_va): ...this new member function.
15977 Start a new optinfo and add the stmt to it.
15978 (dump_dec): Move implementation to...
15979 (dump_context::dump_dec): ...this new member function. Add the
15980 value to any pending optinfo, creating one if need be.
15981 (dump_context::dump_symtab_node): New member function.
15982 (dump_context::get_scope_depth): New member function.
15983 (dump_context::begin_scope): New member function.
15984 (dump_context::end_scope): New member function.
15985 (dump_context::ensure_pending_optinfo): New member function.
15986 (dump_context::begin_next_optinfo): New member function.
15987 (dump_context::end_any_optinfo): New member function.
15988 (dump_context::s_current): New global.
15989 (dump_context::s_default): New global.
15990 (dump_scope_depth): Delete global.
15991 (dumpfile_ensure_any_optinfo_are_flushed): New function.
15992 (dump_symtab_node): New function.
15993 (get_dump_scope_depth): Reimplement in terms of dump_context.
15994 (dump_begin_scope): Likewise.
15995 (dump_end_scope): Likewise.
15996 (selftest::temp_dump_context::temp_dump_context): New ctor.
15997 (selftest::temp_dump_context::~temp_dump_context): New dtor.
15998 (selftest::verify_item): New function.
15999 (ASSERT_IS_TEXT): New macro.
16000 (ASSERT_IS_TREE): New macro.
16001 (ASSERT_IS_GIMPLE): New macro.
16002 (selftest::test_capture_of_dump_calls): New test.
16003 (selftest::dumpfile_c_tests): Call it.
16004 * dumpfile.h (dump_printf, dump_printf_loc, dump_basic_block)
16005 (dump_generic_expr_loc, dump_generic_expr, dump_gimple_stmt_loc)
16006 (dump_gimple_stmt, dump_dec): Gather these related decls and add a
16007 descriptive comment.
16008 (dump_function, print_combine_total_stats, enable_rtl_dump_file)
16009 (dump_node, dump_bb): Move these unrelated decls.
16010 (class dump_manager): Add leading comment.
16011 * optinfo.cc: New file.
16012 * optinfo.h: New file.
16014 2018-07-19 Michael Collison <michael.collison@arm.com>
16015 Richard Henderson <rth@redhat.com>
16017 * config/aarch64/aarch64.md (subv<GPI>4, usubv<GPI>4): New patterns.
16018 (subti): Handle op1 zero.
16019 (subvti4, usub4ti4): New.
16020 (*sub<GPI>3_compare1_imm): New.
16021 (sub<GPI>3_carryinCV): New.
16022 (*sub<GPI>3_carryinCV_z1_z2, *sub<GPI>3_carryinCV_z1): New.
16023 (*sub<GPI>3_carryinCV_z2, *sub<GPI>3_carryinCV): New.
16025 2018-07-19 Michael Collison <michael.collison@arm.com>
16026 Richard Henderson <rth@redhat.com>
16028 * config/aarch64/aarch64.md: (addv<GPI>4, uaddv<GPI>4): New.
16029 (addti3): Create simpler code if low part is already known to be 0.
16030 (addvti4, uaddvti4): New.
16031 (*add<GPI>3_compareC_cconly_imm): New.
16032 (*add<GPI>3_compareC_cconly): New.
16033 (*add<GPI>3_compareC_imm): New.
16034 (*add<GPI>3_compareC): Rename from add<GPI>3_compare1; do not
16035 handle constants within this pattern..
16036 (*add<GPI>3_compareV_cconly_imm): New.
16037 (*add<GPI>3_compareV_cconly): New.
16038 (*add<GPI>3_compareV_imm): New.
16039 (add<GPI>3_compareV): New.
16040 (add<GPI>3_carryinC, add<GPI>3_carryinV): New.
16041 (*add<GPI>3_carryinC_zero, *add<GPI>3_carryinV_zero): New.
16042 (*add<GPI>3_carryinC, *add<GPI>3_carryinV): New.
16043 ((*add<GPI>3_compareC_cconly_imm): Replace 'ne' operator
16044 with 'comparison' operator.
16045 (*add<GPI>3_compareV_cconly_imm): Ditto.
16046 (*add<GPI>3_compareV_cconly): Ditto.
16047 (*add<GPI>3_compareV_imm): Ditto.
16048 (add<GPI>3_compareV): Ditto.
16049 (add<mode>3_carryinC): Ditto.
16050 (*add<mode>3_carryinC_zero): Ditto.
16051 (*add<mode>3_carryinC): Ditto.
16052 (add<mode>3_carryinV): Ditto.
16053 (*add<mode>3_carryinV_zero): Ditto.
16054 (*add<mode>3_carryinV): Ditto.
16056 2018-07-19 Michael Collison <michael.collison@arm.com>
16057 Richard Henderson <rth@redhat.com>
16059 * config/aarch64/aarch64-modes.def (CC_V): New.
16060 * config/aarch64/aarch64-protos.h
16061 (aarch64_addti_scratch_regs): Declare
16062 (aarch64_subvti_scratch_regs): Declare.
16063 (aarch64_expand_subvti): Declare.
16064 (aarch64_gen_unlikely_cbranch): Declare
16065 * config/aarch64/aarch64.c (aarch64_select_cc_mode): Test
16066 for signed overflow using CC_Vmode.
16067 (aarch64_get_condition_code_1): Handle CC_Vmode.
16068 (aarch64_gen_unlikely_cbranch): New function.
16069 (aarch64_addti_scratch_regs): New function.
16070 (aarch64_subvti_scratch_regs): New function.
16071 (aarch64_expand_subvti): New function.
16073 2018-07-19 Andre Vieira <andre.simoesdiasvieira@arm.com>
16075 * config/aarch64/aarch64-option-extensions.def: New entry for profile
16077 * config/aarch64/aarch64.h (AARCH64_FL_PROFILE): New.
16078 * doc/invoke.texi (aarch64-feature-modifiers): New entry for profile
16081 2018-07-19 Andre Vieira <andre.simoesdiasvieira@arm.com>
16084 * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): Make
16085 address check not strict.
16087 2018-07-19 Andre Vieira <andre.simoesdiasvieira@arm.com>
16089 * config/aarch64/aarch64-simd.md (aarch64_simd_mov<VQ:mode>): Replace
16091 (store_pair_lanes<mode>): Likewise.
16092 * config/aarch64/aarch64-protos.h (aarch64_addr_query_type): Add new
16093 enum value 'ADDR_QUERY_LDP_STP_N'.
16094 * config/aarch64/aarch64.c (aarch64_addr_query_type): Likewise.
16095 (aarch64_print_address_internal): Add declaration.
16096 (aarch64_print_ldpstp_address): Remove.
16097 (aarch64_classify_address): Adapt mode for 'ADDR_QUERY_LDP_STP_N'.
16098 (aarch64_print_operand): Change printing of 'y'.
16099 * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): Use
16100 new enum value 'ADDR_QUERY_LDP_STP_N', don't hardcode mode and use
16101 'true' rather than '1'.
16102 * config/aarch64/constraints.md (Uml): Likewise.
16103 (Uml): Rename to Umn.
16106 2018-07-19 Richard Biener <rguenther@suse.de>
16108 * tree-ssa-sccvn.h (struct vn_phi_s): Make phiargs member
16110 * tree-ssa-sccvn.c: Remove alloc-pool.h use.
16111 (vn_phi_hasher): Derive from nofree_ptr_hash and remove remove method.
16112 (vn_reference_hasher): Likewise.
16113 (struct vn_tables_s): Remove obstack and alloc-pool members.
16114 (vn_tables_obstack, vn_tables_insert_obstack): New global obstacks.
16115 (vn_nary_build_or_lookup_1): Manually build in vn_tables_insert_obstack.
16116 (vn_reference_insert): Allocate from obstack instead of from alloc-pool.
16117 (vn_reference_insert_pieces): Likewise.
16118 (alloc_vn_nary_op_noinit): Adjust.
16119 (vn_nary_op_insert_stmt): Allocate phiargs in-place.
16120 (vn_phi_eq): Adjust.
16121 (shared_lookup_phiargs): Remove.
16122 (vn_phi_lookup): Allocate temporary vn_phi_s on the stack.
16123 (vn_phi_insert): Allocate from obstack instead of from alloc-pool.
16124 (visit_reference_op_call): Likewise.
16125 (copy_nary, copy_phi, copy_reference): Remove.
16126 (process_scc): Rewind the obstack when iterating. Do not
16127 copy the elements to valid_info but just move them from one
16128 hashtable to the other.
16129 (allocate_vn_table): Adjust.
16130 (free_vn_table): Likewise.
16131 (init_scc_vn): Likewise.
16132 (free_scc_vn): Likewise.
16134 2018-07-19 H.J. Lu <hongjiu.lu@intel.com>
16137 * config/i386/i386.c (rest_of_insert_endbranch): Lookup
16138 indirect_return as function type attribute.
16139 (ix86_attribute_table): Change indirect_return to function
16141 * doc/extend.texi: Update indirect_return attribute.
16143 2018-07-19 Aldy Hernandez <aldyh@redhat.com>
16145 * wide-int.h (widest2_int): New.
16146 * gimple-fold.c (arith_overflowed_p): Use it.
16147 * tree.h (widest2_int_cst): New.
16148 * tree-vrp.c (wide_int_binop_overflow): Rename from
16149 vrp_int_const_binop.
16150 Rewrite to work on trees.
16151 (extract_range_from_multiplicative_op_1): Abstract code to...
16152 (wide_int_range_min_max): ...here.
16153 (wide_int_range_cross_product): ...and here.
16154 (extract_range_from_binary_expr_1): Abstract overflow code to...
16155 (wide_int_range_mult_wrapping): ...here.
16156 * tree-vrp.h (wide_int_range_cross_product): New.
16157 (wide_int_range_mult_wrapping): New.
16159 2018-07-19 Andrew Senkevich <andrew.senkevich@intel.com>
16160 Julia Koval <julia.koval@intel.com>
16162 * config/i386/x86-tune-costs.h (skylake_memcpy,
16163 skylake_memset): Replace rep_prefix with unrolling for size 512.
16165 2018-07-18 Kugan Vivekanandarajah <kuganv@linaro.org>
16167 PR middle-end/86544
16168 * tree-ssa-phiopt.c (cond_removal_in_popcount_pattern): Handle
16169 comparision with EQ_EXPR in last stmt.
16171 2018-07-18 Kelvin Nilsen <kelvin@gcc.gnu.org>
16173 * doc/extend.texi (PowerPC AltiVec Built-in Functions): Rename
16174 this subsection to "PowerPC AltiVec/VSX Built-in Functions".
16175 (PowerPC AltiVec/VSX Built-in Functions): New name for subsection
16176 previously known as "PowerPC AltiVec Built-in Functions". Move
16177 some material to new subsubsections "PowerPC AltiVec Built-in
16178 Functions on ISA 2.06" and "PowerPC AltiVec Built-in Functions on
16180 (PowerPC Altivec Built-in Functions on ISA 2.05): New subsubsection.
16181 (PowerPC Altivec Built-in Functions on ISA 2.06): Likewise.
16182 (PowerPC Altivec Built-in Functions on ISA 2.07): Likewise.
16183 (PowerPC Altivec Built-in Functions on ISA 3.0): Likewise.
16185 2018-07-18 Richard Biener <rguenther@suse.de>
16187 PR tree-optimization/86557
16188 * tree-vect-patterns.c (vect_recog_divmod_pattern): Also handle
16191 2018-07-18 Ilya Leoshkevich <iii@linux.ibm.com>
16193 * config/s390/s390.c (s390_function_profiler): Generate CFI.
16195 2018-07-17 Jeff Law <law@redhat.com>
16197 * config/arm/arm.c (get_label_padding): Update for recent
16198 changes to label_to_alignment.
16200 PR tree-optimization/86010
16201 * tree-ssa-dse.c (compute_trims): Fix typo/thinko.
16203 * config/mips/mips.c (vr4130_align_insns): Update for recent
16204 changes to label_to_alignment.
16206 * config/frv/frv.c (frv_label_align): Update for recent changes
16207 to label_to_alignment.
16209 * config/nios2/nios2.c (nios2_label_align): Update for recent
16210 changes which dropped ALIGN_LABELS_LOG.
16212 2018-07-17 Andreas Schwab <schwab@linux-m68k.org>
16214 * config/m68k/m68k.md (umulsi3_highpart+1, const_umulsi3_highpart)
16215 (smulsi3_highpart+1, const_smulsi3_highpart): Add CC_STATUS_INIT.
16217 2018-07-17 Claudiu Zissulescu <claziss@synopsys.com>
16219 * config/arc/arc.c (arc_label_align): Use align_labels instead of
16220 deprecated align_labels_log.
16222 2018-07-17 Richard Biener <rguenther@suse.de>
16225 * dwarf2out.c (init_sections_and_labels): Always generate
16226 a debug_line_str_section for early LTO debug.
16227 (dwarf2out_finish): Reset debug_line_str_hash output early.
16228 Bump counter for extra dwarf5 .debug_loc labels to not conflict
16230 (dwarf2out_early_finish): Output debug_line_str.
16232 2018-07-17 Robin Dapp <rdapp@linux.ibm.com>
16234 * config/s390/s390.c (preferred_la_operand_p): Do not use LA with
16235 index register on z196 or later.
16237 2018-07-17 Robin Dapp <rdapp@linux.ibm.com>
16239 * config/s390/s390.c (s390_default_align): Set default function
16241 (s390_override_options_after_change): Call s390_default align.
16242 (s390_option_override_internal): Call s390_default_align.
16243 (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): Define.
16245 2018-07-17 Jakub Jelinek <jakub@redhat.com>
16247 PR middle-end/86542
16248 * omp-low.c (create_task_copyfn): Copy over also fields corresponding
16249 to _looptemp_ clauses, other than the first two.
16251 2018-07-17 Martin Liska <mliska@suse.cz>
16253 * opts.c: Do not enable OPT_falign_* for -Os.
16255 2018-07-17 Martin Liska <mliska@suse.cz>
16257 * align.h (MAX_CODE_ALIGN): New.
16258 (MAX_CODE_ALIGN_VALUE): New.
16259 * common/config/i386/i386-common.c (ix86_handle_option):
16260 (MAX_CODE_ALIGN): Moved to align.h.
16261 * final.c (MAX_CODE_ALIGN): Likewise.
16262 * opts.c (parse_and_check_align_values):
16263 (MAX_CODE_ALIGN): Likewise.
16264 (MAX_CODE_ALIGN_VALUE): Likewise.
16266 2018-07-17 Martin Liska <mliska@suse.cz>
16268 * config/i386/att.h (ASM_OUTPUT_ALIGN): Fix spacing
16269 in order to fulfil coding style.
16270 * config/i386/cygming.h (ASM_OUTPUT_ALIGN): Likewise.
16271 * config/i386/gas.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
16272 * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
16273 * config/iq2000/iq2000.h (ASM_OUTPUT_ALIGN): Likewise.
16274 * config/pa/pa.h (ASM_OUTPUT_ALIGN): Likewise.
16275 * config/sparc/sol2.h (ASM_OUTPUT_ALIGN_WITH_NOP): Likewise.
16276 * config/sparc/sparc.h (ASM_OUTPUT_ALIGN): Likewise.
16277 * config/visium/visium.h (ASM_OUTPUT_ALIGN): Likewise.
16278 (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
16280 2018-07-17 Martin Liska <mliska@suse.cz>
16282 * align.h: New file.
16283 * config/alpha/alpha.c (alpha_align_insns_1): Use align_functions
16285 * config/i386/i386.c (ix86_avoid_jump_mispredicts): Use new return type
16286 align_flags of label_to_alignment.
16287 * config/m32r/m32r.h (LOOP_ALIGN): Wrap returned values into
16289 * config/m68k/m68k.c: Do not use removed align_labels_value and
16291 * config/nds32/nds32.h (JUMP_ALIGN): Wrap result into align_flags class.
16292 (LOOP_ALIGN): Likewise.
16293 (LABEL_ALIGN): Likewise.
16294 * config/powerpcspe/powerpcspe.c (TARGET_ASM_LOOP_ALIGN_MAX_SKIP):
16295 Remove not used macro.
16296 (rs6000_loop_align): Change return type to align_flags.
16297 (rs6000_loop_align_max_skip): Remove.
16298 * config/rs6000/rs6000-protos.h (rs6000_loop_align):
16299 Change return type to align_flags.
16300 * config/rs6000/rs6000.c (TARGET_ASM_LOOP_ALIGN_MAX_SKIP):
16301 Remove not used macro.
16302 (rs6000_loop_align): Change return type to align_flags.
16303 (rs6000_loop_align_max_skip): Remove.
16304 * config/rx/rx.h (JUMP_ALIGN): Wrap integer values
16305 * config/rx/rx-protos.h (rx_align_for_label): Make it
16307 * config/rx/rx.c (rx_align_for_label): Change return type
16309 (rx_max_skip_for_label): Remove TARGET_ASM_*_ALIGN_MAX_SKIP
16311 into align_flags class.
16312 (LABEL_ALIGN): Likewise.
16313 (LOOP_ALIGN): Likewise.
16314 * config/s390/s390.c (s390_label_align): Use align_flags
16316 (s390_asm_output_function_label): Likewise.
16317 * config/sh/sh.c (sh_override_options_after_change):
16318 Use align_flags class directly without macros.
16319 (find_barrier): Likewise.
16320 (barrier_align): Likewise.
16321 (sh_loop_align): Likewise.
16322 * config/spu/spu.c (spu_option_override):
16323 Use align_flags_tuple::get_value instead of removed macros.
16324 (spu_sched_init): Likewise.
16325 * config/spu/spu.h (GTY): Likewise.
16326 * config/visium/visium.c (visium_option_override):
16327 Set "8" as default secondary alignment.
16328 * config/visium/visium.h (SUBALIGN_LOG): Define to 3
16329 in order to guarantee secondary alignment of 8.
16330 * coretypes.h: Include align.h header file.
16331 * doc/tm.texi: Remove TARGET_ASM_JUMP_ALIGN_MAX_SKIP,
16332 TARGET_ASM_LOOP_ALIGN_MAX_SKIP, TARGET_ASM_LABEL_ALIGN_MAX_SKIP
16333 and TARGET_ASM_LABEL_ALIGN_AFTER_BARRIER_MAX_SKIP macros.
16334 * doc/tm.texi.in: Likewise.
16335 * final.c (struct label_alignment): Remove not used structure.
16336 (LABEL_ALIGN): Change type to align_flags.
16337 (LOOP_ALIGN): Likewise.
16338 (JUMP_ALIGN): Likewise.
16339 (default_loop_align_max_skip): Remove.
16340 (default_label_align_max_skip): Likewise.
16341 (default_jump_align_max_skip): Likewise.
16342 (default_label_align_after_barrier_max_skip):
16343 (LABEL_TO_ALIGNMENT): Change to access label_align vector.
16344 (LABEL_TO_MAX_SKIP): Remove.
16345 (label_to_alignment): Return align_flags type instead of integer.
16346 (label_to_max_skip): Remove.
16347 (align_fuzz): Use align_flags type.
16348 (compute_alignments): Use align_flags type and use align_flags::max
16349 to combine multiple alignments.
16350 (grow_label_align): Grow vec instead of C array.
16351 (update_alignments): Assign just LABEL_TO_ALIGNMENT.
16352 (shorten_branches): Use align_flags type and use align_flags::max
16353 to combine multiple alignments.
16354 (final_scan_insn_1): Remove usage of secondary alignment that comes
16355 from label alignment, but instead use proper secondary alignment
16356 which is computed in grow_label_align.
16357 * flags.h (struct align_flags_tuple): Move to align.h.
16358 (struct align_flags): Likewise.
16359 (state_align_loops): Rename to align_loops.
16360 (state_align_jumps): Rename to align_jumps.
16361 (state_align_labels): Rename to align_labels.
16362 (state_align_functions): Rename to align_functions.
16363 (align_loops_log): Remove.
16364 (align_jumps_log): Remove.
16365 (align_labels_log): Remove.
16366 (align_functions_log): Remove.
16367 (align_loops_max_skip): Remove.
16368 (align_jumps_max_skip): Remove.
16369 (align_labels_max_skip): Remove.
16370 (align_functions_max_skip): Remove.
16371 (align_loops_value): Remove.
16372 (align_jumps_value): Remove.
16373 (align_labels_value): Remove.
16374 (align_functions_value): Remove.
16375 * output.h (label_to_alignment): Change return type to align_flags.
16376 (label_to_max_skip): Remove.
16377 * target.def: Remove loop_align_max_skip, label_align_max_skip,
16378 jump_align_max_skip macros.
16379 * targhooks.h (default_loop_align_max_skip): Remove.
16380 (default_label_align_max_skip): Likewise.
16381 (default_jump_align_max_skip): Likewise.
16382 (default_label_align_after_barrier_max_skip): Remove.
16383 * toplev.c (read_log_maxskip): Use ::normalize function.
16384 (parse_N_M): Remove not used argument and also call ::normalize.
16385 (parse_alignment_opts): Do not pass unused arguments.
16386 * varasm.c (assemble_start_function): Use directly align_functions
16387 instead of removed macros.
16388 * system.h: Do not poison removed macros.
16390 2018-07-17 Jakub Jelinek <jakub@redhat.com>
16392 PR middle-end/86539
16393 * gimplify.c (gimplify_omp_for): Ensure taskloop firstprivatized init
16394 and cond temporaries don't have reference type if iterator has
16395 pointer type. For init use &for_pre_body instead of pre_p if
16396 for_pre_body is non-empty.
16398 2018-07-16 Segher Boessenkool <segher@kernel.crashing.org>
16400 * config/rs6000/rs6000.md (trunc<mode>sf2): Expand truncates of
16401 double-double modes to SFmode directly directly.
16402 (trunc<mode>sf2_fprs): Delete.
16404 2018-07-16 Segher Boessenkool <segher@kernel.crashing.org>
16406 * config/rs6000/rs6000.c (init_float128_ibm): Use the correct names
16407 for conversions between IFmode and the decimal floating point modes.
16408 (init_float128_ieee): Use the correct names for conversions between
16409 KFmode and the decimal floating point modes.
16411 2018-07-16 Segher Boessenkool <segher@kernel.crashing.org>
16413 * config/rs6000/rs6000.c (init_float128_ibm): Use more correct names
16414 for the conversions between TDmode and IFmode.
16415 (init_float128_ieee): Use more correct names for the conversions
16416 between TDmode and KFmode.
16418 2018-07-16 Jakub Jelinek <jakub@redhat.com>
16420 PR tree-optimization/86526
16421 * builtins.c (expand_builtin_memcmp): Formatting fixes.
16422 (inline_expand_builtin_string_cmp): Likewise.
16423 (inline_string_cmp): Likewise. Use c_readstr instead of
16424 builtin_memcpy_read_str. Add unit_mode temporary.
16426 2018-07-16 Bernd Edlinger <bernd.edlinger@hotmail.de>
16428 PR middle-end/86528
16429 * builtins.c (check_access): Bail out if range[0] is no INTEGER_CST.
16430 * expr.c (string_constant): Fix the element size of ARRAY_TYPE.
16432 2018-07-16 Kelvin Nilsen <kelvin@gcc.gnu.org>
16434 * doc/extend.texi (PowerPC AltiVec Built-in Functions):
16435 Alphabetize prototypes of built-in functions, separating out
16436 built-in functions that are listed in this section but should be
16437 described elsewhere.
16439 2018-07-16 Uros Bizjak <ubizjak@gmail.com>
16442 * expmed.c (emit_store_flag): Do not emit setcc followed by a
16443 conditional move when trapping comparison was split to a
16444 non-trapping one (and vice versa).
16446 2018-07-16 Ilya Leoshkevich <iii@linux.ibm.com>
16448 * config/s390/s390.c (s390_function_profiler): Generate nops
16449 instead of profiler call sequences.
16450 * config/s390/s390.opt: Add the new option.
16452 2018-07-16 Ilya Leoshkevich <iii@linux.ibm.com>
16454 * config/s390/s390.c (s390_function_profiler): Generate
16455 __mcount_loc section.
16456 * config/s390/s390.opt: Add the new option.
16458 2018-07-16 Ilya Leoshkevich <iii@linux.ibm.com>
16460 * common.opt: Add the new warning.
16461 * config/s390/s390.c (s390_function_profiler): Emit "brasl
16462 %r0,__fentry__" when -mfentry is specified.
16463 (s390_option_override_internal): Disallow -mfentry for 31-bit
16465 * config/s390/s390.opt: Add the new option.
16467 2018-07-16 Richard Biener <rguenther@suse.de>
16470 * dwarf2out.c (dwarf2out_register_external_die): Assign DIE parents
16471 for function-local FUNCTION_DECL and RESULT_DECL immediately.
16473 2018-07-16 Martin Liska <mliska@suse.cz>
16476 * ipa-pure-const.c (malloc_candidate_p): Revert ::get
16479 2017-07-16 Claudiu Zissulescu <claziss@synopsys.com>
16481 * config/arc/arcHS.md: Update ARCHS scheduling rules.
16483 2017-07-16 Claudiu Zissulescu <claziss@synopsys.com>
16485 * config/arc/arc-arch.h (arc_tune_attr): Add new tune parameters
16487 * config/arc/arc-cpus.def (hs4x): New cpu.
16489 * config/arc/arc-tables.opt: Regenerate.
16490 * config/arc/arc.c (arc_sched_issue_rate): New function.
16491 (TARGET_SCHED_ISSUE_RATE): Define.
16492 (TARGET_SCHED_EXPOSED_PIPELINE): Likewise.
16493 * config/arc/arc.md (attr type): Add fpu_fuse, fpu_sdiv, fpu_ddiv,
16495 (attr tune): Add ARCHS4x tune values.
16496 (attr tune_dspmpy): Define.
16497 (*tst): Correct instruction type.
16498 * config/arc/arcHS.md: Don't use this automaton for ARCHS4x cpus.
16499 * config/arc/arcHS4x.md: New file.
16500 * config/arc/fpu.md: Update instruction type attributes.
16501 * config/arc/t-multilib: Regenerate.
16503 2018-07-16 Tom de Vries <tdevries@suse.de>
16506 * var-tracking.c (vt_initialize): Fix pre_dec handling.
16508 2018-07-16 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
16510 * config/aarch64/atomics.md (aarch64_store_execlusive<mode>): Add
16513 2018-07-16 Eric Botcazou <ebotcazou@adacore.com>
16515 PR tree-optimization/86514
16516 * tree-ssa-reassoc.c (init_range_entry) <CASE_CONVERT>: Return for a
16517 conversion to a boolean type from a type with greater precision.
16519 2018-07-16 Tom de Vries <tdevries@suse.de>
16521 * var-tracking.c (vt_initialize): Print adjusted insn slim if
16522 dump_flags request TDF_SLIM.
16524 2018-07-16 Aldy Hernandez <aldyh@redhat.com>
16526 * fold-const.c (int_const_binop_1): Abstract...
16527 (wide_int_binop): ...wide int code here.
16528 (poly_int_binop): ...poly int code here.
16529 Abstract the rest of int_const_binop_1 into int_const_binop.
16530 * fold-const.h (wide_int_binop): New.
16531 * tree-vrp.c (vrp_int_const_binop): Call wide_int_binop.
16532 Remove useless PLUS/MINUS_EXPR case.
16533 (zero_nonzero_bits_from_vr): Move wide int code...
16534 (zero_nonzero_bits_from_bounds): ...here.
16535 (extract_range_from_binary_expr_1): Move mask optimization code...
16536 (range_easy_mask_min_max): ...here.
16537 * tree-vrp.h (zero_nonzero_bits_from_bounds): New.
16538 (range_easy_mask_min_max): New.
16540 2018-07-15 Jeff Law <law@redhat.com>
16543 * config/sh/sh.c (output_mi_thunk): Remove dead conditional
16546 2018-07-14 Jim Wilson <jimw@sifive.com>
16548 * config/riscv/linux.h (TARGET_ASM_FILE_END): New.
16550 2018-07-14 Paul Koning <ni1d@arrl.net>
16552 * config/pdp11/pdp11.c (pdp11_rtx_costs): Bugfixes.
16554 2018-07-13 Jan Hubicka <hubicka@ucw.cz>
16556 * lto-streamer-out.c (copy_function_or_variable): Dump info about
16559 2018-07-13 Bill Schmidt <wschmidt@linux.ibm.com>
16560 Steve Munroe <munroesj52@gmail.com>
16562 * config/rs6000/emmintrin.h (_mm_and_si128): New function.
16563 (_mm_andnot_si128): Likewise.
16564 (_mm_or_si128): Likewise.
16565 (_mm_xor_si128): Likewise.
16567 2018-07-13 Qing Zhao <qing.zhao@oracle.com>
16569 PR middle-end/78809
16570 * builtins.c (expand_builtin_memcmp): Inline the calls first
16571 when result_eq is false.
16572 (expand_builtin_strcmp): Inline the calls first.
16573 (expand_builtin_strncmp): Likewise.
16574 (inline_string_cmp): New routine. Expand a string compare
16575 call by using a sequence of char comparison.
16576 (inline_expand_builtin_string_cmp): New routine. Inline expansion
16577 a call to str(n)cmp/memcmp.
16578 * doc/invoke.texi (--param builtin-string-cmp-inline-length):
16580 * params.def (BUILTIN_STRING_CMP_INLINE_LENGTH): New.
16582 2018-07-13 Richard Earnshaw <rearnsha@arm.com>
16584 * config/arm/driver-arm.c: Include arm-native.h.
16585 (host_detect_local_cpu): Use auto-generated data tables.
16586 (vendors, arm_cpu_table): Delete. Move part information to ...
16587 * config/arm/arm-cpus.in: ... here.
16588 * config/arm/parsecpu.awk (gen_native): New function.
16589 (vendor, part): New CPU fields.
16590 (END): Add support for building the native CPU detection tables.
16591 * config/arm/t-arm (arm-native.h): Add build rule.
16592 (driver-arm.o): Add dependency on arm-native.h.
16594 2018-07-13 Richard Biener <rguenther@suse.de>
16596 PR middle-end/85974
16597 * match.pd (addr1 - addr2): Allow either of the operand to
16600 2018-07-13 Tom de Vries <tdevries@suse.de>
16602 * tree-inline.c (remap_ssa_name): Save and reuse debug exprs generated
16605 2018-07-13 Jackson Woodruff <jackson.woodruff@arm.com>
16607 * config/aarch64/aarch64.c (aarch64_operands_adjust_ok_for_ldpstp): Use
16608 arrays instead of numbered variables.
16610 2018-07-13 Eric Botcazou <ebotcazou@adacore.com>
16612 * config/sparc/sparc-protos.h (sparc_compute_frame_size): Delete.
16613 * config/sparc/sparc.c (sparc_compute_frame_size): Make static.
16615 2018-07-13 Richard Biener <rguenther@suse.de>
16618 * dwarf2out.c (gen_type_die_with_usage): Use scope_die_for
16619 instead of get_context_die.
16621 2018-07-13 Kugan Vivekanandarajah <kuganv@linaro.org>
16622 Richard Biener <rguenther@suse.de>
16624 PR middle-end/86489
16625 * tree-ssa-loop-niter.c (number_of_iterations_popcount): Check
16626 that the loop latch destination where phi is defined.
16628 2018-07-12 Kito Cheng <kito.cheng@gmail.com>
16630 * config/riscv/riscv.c (enum riscv_privilege_levels): Add UNKNOWN_MODE.
16631 (riscv_expand_epilogue): Add assertion to check interrupt mode.
16632 (riscv_set_current_function): Extract getting interrupt type to new
16634 (riscv_get_interrupt_type): New function.
16635 (riscv_merge_decl_attributes): New function, checking interrupt type is
16637 (TARGET_MERGE_DECL_ATTRIBUTES): Define.
16639 2018-07-12 Paul Koning <ni1d@arrl.net>
16641 * config/pdp11/pdp11.c (pdp11_output_def): Fix typo in .set
16644 2018-07-12 Paul Koning <ni1d@arrl.net>
16646 * doc/rtl.texi (REG_NONNEG): Remove decrement and branch until
16647 zero reference, add doloop_end instead.
16648 * doc/md.texi (decrement_and_branch_until_zero): Remove.
16649 (Looping patterns): Remove decrement_and_branch_until_zero. Add
16650 detail for doloop_end.
16652 2018-07-12 Martin Sebor <msebor@redhat.com>
16655 * attribs.c (decl_attributes): Reject conflicting attributes before
16656 calling attribute handlers.
16658 2018-07-12 Jan Hubicka <hubicka@ucw.cz>
16660 * dumpfile.c (gcc::dump_manager::get_dump_file_name): Add PART
16662 (gcc::dump_manager::get_dump_file_name): likewise.
16663 (dump_begin): Likewise.
16664 * dumpfile.h (dump_begin): Update prototype.
16665 (gcc::dump_manager::get_dump_file_name,
16666 gcc::dump_manager::get_dump_file_name): Update prototype.
16668 2018-07-12 Richard Sandiford <richard.sandiford@linaro.org>
16670 * internal-fn.h (vectorizable_internal_fn_p): New function.
16671 * tree-vect-slp.c (compatible_calls_p): Likewise.
16672 (vect_build_slp_tree_1): Remove nops argument. Handle calls
16673 to internal functions.
16674 (vect_build_slp_tree_2): Update call to vect_build_slp_tree_1.
16676 2018-07-12 Richard Sandiford <richard.sandiford@linaro.org>
16678 * fold-const.h (inverse_conditions_p): Declare.
16679 * fold-const.c (inverse_conditions_p): New function.
16680 * match.pd: Use inverse_conditions_p. Add folds of view_converts
16681 that test the inverse condition of a conditional internal function.
16682 * internal-fn.h (vectorized_internal_fn_supported_p): Declare.
16683 * internal-fn.c (internal_fn_mask_index): Handle conditional
16684 internal functions.
16685 (vectorized_internal_fn_supported_p): New function.
16686 * tree-if-conv.c: Include internal-fn.h and fold-const.h.
16687 (any_pred_load_store): Replace with...
16688 (need_to_predicate): ...this new variable.
16689 (redundant_ssa_names): New variable.
16690 (ifcvt_can_use_mask_load_store): Move initial checks to...
16691 (ifcvt_can_predicate): ...this new function. Handle tree codes
16692 for which a conditional internal function exists.
16693 (if_convertible_gimple_assign_stmt_p): Use ifcvt_can_predicate
16694 instead of ifcvt_can_use_mask_load_store. Update after variable
16696 (predicate_load_or_store): New function, split out from
16697 predicate_mem_writes.
16698 (check_redundant_cond_expr): New function.
16699 (value_available_p): Likewise.
16700 (predicate_rhs_code): Likewise.
16701 (predicate_mem_writes): Rename to...
16702 (predicate_statements): ...this. Use predicate_load_or_store
16703 and predicate_rhs_code.
16704 (combine_blocks, tree_if_conversion): Update after above name changes.
16705 (ifcvt_local_dce): Handle redundant_ssa_names.
16706 * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): Handle
16707 general conditional functions.
16708 * tree-vect-stmts.c (vectorizable_call): Likewise.
16710 2018-07-12 Richard Sandiford <richard.sandiford@linaro.org>
16711 Alan Hayward <alan.hayward@arm.com>
16712 David Sherwood <david.sherwood@arm.com>
16714 * internal-fn.h (can_interpret_as_conditional_op_p): Declare.
16715 * internal-fn.c (can_interpret_as_conditional_op_p): New function.
16716 * tree-ssa-math-opts.c (convert_mult_to_fma_1): Handle conditional
16717 plus and minus and convert them into IFN_COND_FMA-based sequences.
16718 (convert_mult_to_fma): Handle conditional plus and minus.
16720 2018-07-12 Richard Sandiford <richard.sandiford@linaro.org>
16722 * doc/md.texi (cond_fma, cond_fms, cond_fnma, cond_fnms): Document.
16723 * optabs.def (cond_fma_optab, cond_fms_optab, cond_fnma_optab)
16724 (cond_fnms_optab): New optabs.
16725 * internal-fn.def (COND_FMA, COND_FMS, COND_FNMA, COND_FNMS): New
16726 internal functions.
16727 (FMA): Use DEF_INTERNAL_FLT_FN rather than DEF_INTERNAL_FLT_FLOATN_FN.
16728 * internal-fn.h (get_conditional_internal_fn): Declare.
16729 (get_unconditional_internal_fn): Likewise.
16730 * internal-fn.c (cond_ternary_direct): New macro.
16731 (expand_cond_ternary_optab_fn): Likewise.
16732 (direct_cond_ternary_optab_supported_p): Likewise.
16733 (FOR_EACH_COND_FN_PAIR): Likewise.
16734 (get_conditional_internal_fn): New function.
16735 (get_unconditional_internal_fn): Likewise.
16736 * gimple-match.h (gimple_match_op::MAX_NUM_OPS): Bump to 5.
16737 (gimple_match_op::gimple_match_op): Add a new overload for 5
16739 (gimple_match_op::set_op): Likewise.
16740 (gimple_resimplify5): Declare.
16741 * genmatch.c (decision_tree::gen): Generate simplifications for
16743 * gimple-match-head.c (gimple_simplify): Define an overload for
16744 5 operands. Handle calls with 5 arguments in the top-level overload.
16745 (convert_conditional_op): Handle conversions from unconditional
16746 internal functions to conditional ones.
16747 (gimple_resimplify5): New function.
16748 (build_call_internal): Pass a fifth operand.
16749 (maybe_push_res_to_seq): Likewise.
16750 (try_conditional_simplification): Try converting conditional
16751 internal functions to unconditional internal functions.
16752 Handle 3-operand unconditional forms.
16753 * match.pd (UNCOND_TERNARY, COND_TERNARY): Operator lists.
16754 Define ternary equivalents of the current rules for binary conditional
16755 internal functions.
16756 * config/aarch64/aarch64.c (aarch64_preferred_else_value): Handle
16757 ternary operations.
16758 * config/aarch64/iterators.md (UNSPEC_COND_FMLA, UNSPEC_COND_FMLS)
16759 (UNSPEC_COND_FNMLA, UNSPEC_COND_FNMLS): New unspecs.
16760 (optab): Handle them.
16761 (SVE_COND_FP_TERNARY): New int iterator.
16762 (sve_fmla_op, sve_fmad_op): New int attributes.
16763 * config/aarch64/aarch64-sve.md (cond_<optab><mode>)
16764 (*cond_<optab><mode>_2, *cond_<optab><mode_4)
16765 (*cond_<optab><mode>_any): New SVE_COND_FP_TERNARY patterns.
16767 2018-07-12 Richard Sandiford <richard.sandiford@linaro.org>
16769 * target.def (preferred_else_value): New target hook.
16770 * doc/tm.texi.in (TARGET_PREFERRED_ELSE_VALUE): New hook.
16771 * doc/tm.texi: Regenerate.
16772 * targhooks.h (default_preferred_else_value): Declare.
16773 * targhooks.c (default_preferred_else_value): New function.
16774 * internal-fn.h (conditional_internal_fn_code): Declare.
16775 * internal-fn.c (FOR_EACH_CODE_MAPPING): New macro.
16776 (get_conditional_internal_fn): Use it.
16777 (conditional_internal_fn_code): New function.
16778 * gimple-match.h (gimple_match_cond): New struct.
16779 (gimple_match_op): Add a cond member function.
16780 (gimple_match_op::gimple_match_op): Update all forms to take a
16782 * genmatch.c (expr::gen_transform): Use the same condition as res_op
16783 for the suboperation, but don't specify a particular else_value.
16784 * tree-ssa-sccvn.c (vn_nary_simplify, vn_reference_lookup_3)
16785 (visit_nary_op, visit_reference_op_load): Pass
16786 gimple_match_cond::UNCOND to the gimple_match_op constructor.
16787 * gimple-match-head.c: Include tree-eh.h
16788 (convert_conditional_op): New function.
16789 (maybe_resimplify_conditional_op): Likewise.
16790 (gimple_resimplify1): Call maybe_resimplify_conditional_op.
16791 (gimple_resimplify2): Likewise.
16792 (gimple_resimplify3): Likewise.
16793 (gimple_resimplify4): Likewise.
16794 (maybe_push_res_to_seq): Return null for conditional operations.
16795 (try_conditional_simplification): New function.
16796 (gimple_simplify): Call it. Pass conditions to the gimple_match_op
16798 * match.pd: Fold VEC_COND_EXPRs of an IFN_COND_* call to a new
16800 * config/aarch64/aarch64.c (aarch64_preferred_else_value): New
16802 (TARGET_PREFERRED_ELSE_VALUE): Redefine.
16804 2018-07-12 Jan Hubicka <hubicka@ucw.cz>
16806 * lto-streamer-out.c (DFS::DFS_write_tree_body): Do not stream
16808 (hash_tree): Do not hash DECL_FCONTEXT
16809 * tree-streamer-in.c (lto_input_ts_field_decl_tree_pointers):
16810 Do not stream DECL_FCONTEXT.
16811 * tree-streamer-out.c (write_ts_field_decl_tree_pointers): Likewise.
16812 * tree.c (free_lang_data_in_decl): Free DECL_FCONTEXT.
16814 2018-07-12 Richard Biener <rguenther@suse.de>
16817 * dwarf2out.c (gen_block_die): Only output blocks when they have
16818 at least one !DECL_IGNORED_P variable.
16820 2018-07-12 Richard Biener <rguenther@suse.de>
16823 * config/gnu-user.h (GNU_USER_TARGET_NO_PTHREADS_LIB_SPEC):
16824 Remove -mieee-fp handling.
16826 2018-07-12 Richard Biener <rguenther@suse.de>
16828 * tree-ssa-sccvn.c (vn_lookup_simplify_result): Remove bogus
16829 left-over from last patch.
16831 2018-07-12 Jakub Jelinek <jakub@redhat.com>
16833 PR tree-optimization/86492
16834 * gimple-ssa-store-merging.c
16835 (imm_store_chain_info::coalesce_immediate_stores): Call
16836 check_no_overlap even for the merge_overlapping case. Formatting fix.
16838 2018-07-12 Richard Biener <rguenther@suse.de>
16840 PR middle-end/86479
16841 * fold-const.c (fold_binary_op_with_conditional_arg): Do not
16842 move possibly trapping operations into the conditional.
16844 2018-07-12 Richard Biener <rguenther@suse.de>
16846 * tree-ssa-sccvn.c (mprts_hook_cnt): Remove.
16847 (vn_lookup_simplify_result): Remove recursion limit applied
16849 (vn_nary_build_or_lookup_1): Adjust.
16850 (try_to_simplify): Likewise.
16851 * gimple-match-head.c (gimple_resimplify1): Instead apply one
16853 (gimple_resimplify2): Likewise.
16854 (gimple_resimplify3): Likewise.
16855 (gimple_resimplify4): Likewise.
16857 2018-07-11 Jakub Jelinek <jakub@redhat.com>
16859 * config/i386/avx512bitalgintrin.h (_mm512_mask_bitshuffle_epi64_mask):
16860 Use __mmask64 type instead of __mmask8 for __M argument.
16861 * config/i386/avx512fintrin.h (_mm512_mask_xor_epi64,
16862 _mm512_maskz_xor_epi64): Use __mmask8 type instead of __mmask16 for
16864 (_mm512_mask_cmpneq_epi64_mask): Use __mmask8 type instead of
16865 __mmask16 for __M argument.
16866 (_mm512_maskz_insertf32x4, _mm512_maskz_inserti32x4,
16867 _mm512_mask_insertf32x4, _mm512_mask_inserti32x4): Cast last argument
16868 to __mmask16 instead of __mmask8.
16869 * config/i386/avx512vlintrin.h (_mm_mask_add_ps, _mm_maskz_add_ps,
16870 _mm256_mask_add_ps, _mm256_maskz_add_ps, _mm_mask_sub_ps,
16871 _mm_maskz_sub_ps, _mm256_mask_sub_ps, _mm256_maskz_sub_ps,
16872 _mm256_maskz_cvtepi32_ps, _mm_maskz_cvtepi32_ps): Use __mmask8 type
16873 instead of __mmask16 for __U argument.
16874 * config/i386/avx512vlbwintrin.h (_mm_mask_cmp_epi8_mask): Use
16875 __mmask16 instead of __mmask8 for __U argument.
16876 (_mm256_mask_cmp_epi8_mask): Use __mmask32 instead of __mmask16 for
16878 (_mm256_cmp_epi8_mask): Use __mmask32 return type instead of
16880 (_mm_mask_cmp_epu8_mask): Use __mmask16 instead of __mmask8 for __U
16882 (_mm256_mask_cmp_epu8_mask): Use __mmask32 instead of __mmask16 for
16884 (_mm256_cmp_epu8_mask): Use __mmask32 return type instead of
16886 (_mm_mask_cmp_epi16_mask): Cast last argument to __mmask8 instead
16888 (_mm256_mask_cvtepi8_epi16): Use __mmask16 instead of __mmask32 for
16890 (_mm_mask_cvtepi8_epi16): Use __mmask8 instead of __mmask32 for
16892 (_mm256_mask_cvtepu8_epi16): Use __mmask16 instead of __mmask32 for
16894 (_mm_mask_cvtepu8_epi16): Use __mmask8 instead of __mmask32 for
16896 (_mm256_mask_cmpneq_epu8_mask, _mm256_mask_cmplt_epu8_mask,
16897 _mm256_mask_cmpge_epu8_mask, _mm256_mask_cmple_epu8_mask): Change
16898 return type as well as __M argument type and all casts from __mmask8
16900 (_mm256_mask_cmpneq_epu16_mask, _mm256_mask_cmplt_epu16_mask,
16901 _mm256_mask_cmpge_epu16_mask, _mm256_mask_cmple_epu16_mask): Change
16902 return type as well as __M argument type and all casts from __mmask8
16904 (_mm256_mask_cmpneq_epi8_mask, _mm256_mask_cmplt_epi8_mask,
16905 _mm256_mask_cmpge_epi8_mask, _mm256_mask_cmple_epi8_mask): Change
16906 return type as well as __M argument type and all casts from __mmask8
16908 (_mm256_mask_cmpneq_epi16_mask, _mm256_mask_cmplt_epi16_mask,
16909 _mm256_mask_cmpge_epi16_mask, _mm256_mask_cmple_epi16_mask): Change
16910 return type as well as __M argument type and all casts from __mmask8
16912 * config/i386/avx512vbmi2vlintrin.h (_mm_mask_shrdi_epi32,
16913 _mm_mask_shldi_epi32): Cast last argument to __mmask8 instead of
16916 2018-07-11 Grazvydas Ignotas <notasas@gmail.com>
16918 * config/i386/avx512bwintrin.h: (_mm512_mask_cmp_epi8_mask,
16919 _mm512_mask_cmp_epu8_mask): Use __mmask64 type instead of __mmask32
16922 2018-07-11 Paul Koning <ni1d@arrl.net>
16924 * doc/md.texi (define_subst): Document how multiple occurrences of
16925 the same argument in the replacement pattern are handled.
16927 2018-07-11 Paul Koning <ni1d@arrl.net>
16929 * doc/extend.texi (Common Variable Attributes): Move "mode" into
16930 alphabetical order.
16931 (Common Type Attributes): Add "mode" attribute.
16933 2018-07-11 Jan Hubicka <hubicka@ucw.cz>
16935 * lto-streamer-out.c (DFS::DFS_write_tree_body): Do not
16936 stream DECL_ORIGINAL_TYPE.
16937 (DFS::DFS_write_tree_body): Drop hack handling local external decls.
16938 (hash_tree): Do not walk DECL_ORIGINAL_TYPE.
16939 * tree-streamer-in.c (lto_input_ts_decl_non_common_tree_pointers):
16940 Do not walk original type.
16941 * tree-streamer-out.c (streamer_write_chain): Drop hack handling
16943 (write_ts_decl_non_common_tree_pointers): Do not stream
16945 * tree.c (free_lang_data_in_decl): Clear DECL_ORIGINAL_TYPE.
16946 (find_decls_types_r): Do not walk DEC_ORIGINAL_TYPE.
16948 2018-07-11 Aldy Hernandez <aldyh@redhat.com>
16950 * tree-ssa-threadupdate.c (thread_through_all_blocks): Do not jump
16951 thread twice from the same starting edge.
16953 2018-07-11 Aldy Hernandez <aldyh@redhat.com>
16955 * vr-values.c (gimple_stmt_nonzero_p): Abstract common code to...
16956 * gimple.c (gimple_call_nonnull_result_p): ...here...
16957 (gimple_call_nonnull_arg): ...and here.
16958 * gimple.h (gimple_call_nonnull_result_p): New.
16959 (gimple_call_nonnull_arg): New.
16961 2018-07-11 Richard Earnshaw <rearnsha@arm.com>
16963 * config/arm/arm-cpus.in: Move information from fpu field of each
16964 cpu definition to the isa field.
16965 * config/arm/parsecpu.awk (fpu): Delete match rule.
16966 (gen_comm_data): Don't add bits from the CPU's FPU entry.
16968 2018-07-11 Richard Biener <rguenther@suse.de>
16971 * dwarf2out.c (init_sections_and_labels): Use
16972 output_asm_line_debug_info consistently.
16973 (dwarf2out_early_finish): Likewise.
16974 (dwarf2out_finish): Remove DW_AT_stmt_list from early generated
16977 2018-07-11 Richard Biener <rguenther@suse.de>
16979 * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1):
16980 Rework father_bb setting in a way to avoid propagating constants
16981 multiple times on a loop body.
16983 2018-07-10 Mark Wielaard <mark@klomp.org>
16986 * dwarf2out.c (output_macinfo_op): Fix dwarf_FORM typo in gcc_assert.
16988 2018-07-10 Richard Biener <rguenther@suse.de>
16990 * hash-map.h (hash_map::iterator::operator*): Return
16991 references to key and value.
16993 2018-07-10 Jakub Jelinek <jakub@redhat.com>
16996 * gimplify.c (find_combined_omp_for): Add DATA argument, in addition
16997 to finding the inner OMP_FOR/OMP_SIMD stmt find non-trivial wrappers,
16998 BLOCKs with BLOCK_VARs, OMP_PARALLEL in between, OMP_FOR in between.
16999 (gimplify_omp_for): For composite loops, move outer
17000 OMP_{DISTRIBUTE,TASKLOOP,FOR,PARALLEL} right around innermost
17001 OMP_FOR/OMP_SIMD if there are any non-trivial wrappers. For class
17002 iterators add any needed clauses. Allow OMP_FOR_ORIG_DECLS to contain
17003 TREE_LIST for both the original class iterator and the "last" helper
17004 var. Gimplify OMP_FOR_PRE_BODY before the outermost composite
17005 loop, remember has_decl_expr from outer composite loops for the
17006 innermost OMP_SIMD in TREE_PRIVATE bit on OMP_FOR_INIT.
17008 2018-07-09 Martin Sebor <msebor@redhat.com>
17010 PR middle-end/77357
17011 PR middle-end/86428
17012 * builtins.c (c_strlen): Avoid out-of-bounds warnings when
17013 accessing implicitly initialized array elements.
17014 * expr.c (string_constant): Handle string initializers of
17015 character arrays within aggregates.
17016 * gimple-fold.c (fold_array_ctor_reference): Add argument.
17017 Store element offset. As a special case, handle zero size.
17018 (fold_nonarray_ctor_reference): Same.
17019 (fold_ctor_reference): Add argument. Store subobject offset.
17020 * gimple-fold.h (fold_ctor_reference): Add argument.
17022 2018-07-09 Paul Koning <ni1d@arrl.net>
17024 * config/pdp11/pdp11.c (pdp11_addr_cost): New function.
17025 (pdp11_insn_cost): New function.
17026 (pdp11_md_asm_adjust): New function.
17027 (TARGET_INVALID_WITHIN_DOLOOP): Define.
17028 (pdp11_rtx_costs): Update to match machine better.
17029 (output_addr_const_pdp11): Correct format mismatch warnings.
17030 * config/pdp11/pdp11.h (SLOW_BYTE_ACCESS): Correct definition.
17031 * config/pdp11/pdp11.md: General change to add base_cost and/or
17032 length attributes for use by new pdp11_insn_cost function.
17033 (MIN_BRANCH): Correct definition.
17035 (doloop_end): Use standard pattern name for looping pattern.
17036 (doloop_end_nocc): New.
17037 (movsf): Add another constraint alternative.
17038 (zero_extendqihi2): Add constraint alternatives for not in place
17040 (zero_extendhisi2): Remove.
17041 (shift patterns): Add CC handling variants.
17045 (define_peephole2): New peephole to recognize mov that sets CC for
17048 2018-07-09 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
17050 * config/sparc/sparc.c (sparc_fold_builtin) <SPARC_BUILTIN_PDIST,
17051 SPARC_BUILTIN_PDISTN>: Adapt for signature change of wi::neg,
17054 2018-07-09 Jakub Jelinek <jakub@redhat.com>
17057 * real.c (real_nextafter): Return true if result is denormal.
17059 2018-07-09 Martin Liska <mliska@suse.cz>
17061 * common.opt: Add back wrongly removed attribute.
17063 2018-07-09 Richard Biener <rguenther@suse.de>
17066 * dwarf2out.c (gen_block_die): For an early generated DIE
17067 always output high/low PC attributes.
17069 2018-07-09 Tom de Vries <tdevries@suse.de>
17071 * cfgexpand.c (expand_debug_source_expr): Handle VAR_DECL.
17072 * tree-inline.c (remap_ssa_name): Handle default def ssa_name mapping
17073 onto VAR_DECL with abstract origin.
17075 2018-07-07 Jim Wilson <jimw@sifive.com>
17077 * config/riscv/riscv.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): New.
17079 2018-07-07 Tom de Vries <tdevries@suse.de>
17081 * tree-dfa.c (dump_enumerated_decls): Handle cfun->cfg == NULL.
17083 2018-07-07 Aldy Hernandez <aldyh@redhat.com>
17085 * tree-vrp.c (vrp_int_const_binop): Change overflow type to
17087 (combine_bound): Use wide-int overflow calculation instead of
17089 * calls.c (maybe_warn_alloc_args_overflow): Change overflow type to
17091 * fold-const.c (int_const_binop_2): Same.
17092 (extract_muldiv_1): Same.
17093 (fold_div_compare): Same.
17094 (fold_abs_const): Same.
17096 * poly-int.h (add): Same.
17100 * predict.c (predict_iv_comparison): Same.
17101 * profile-count.c (slow_safe_scale_64bit): Same.
17102 * simplify-rtx.c (simplify_const_binary_operation): Same.
17103 * tree-chrec.c (tree_fold_binomial): Same.
17104 * tree-data-ref.c (split_constant_offset_1): Same.
17105 * tree-if-conv.c (idx_within_array_bound): Same.
17106 * tree-scalar-evolution.c (iv_can_overflow_p): Same.
17107 * tree-ssa-phiopt.c (minmax_replacement): Same.
17108 * tree-vect-loop.c (is_nonwrapping_integer_induction): Same.
17109 * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): Same.
17110 * vr-values.c (vr_values::adjust_range_with_scev): Same.
17111 * wide-int.cc (wi::add_large): Same.
17112 (wi::mul_internal): Same.
17113 (wi::sub_large): Same.
17114 (wi::divmod_internal): Same.
17115 * wide-int.h: Change overflow type to overflow_type for neg, add,
17116 mul, smul, umul, div_trunc, div_floor, div_ceil, div_round,
17117 mod_trunc, mod_ceil, mod_round, add_large, sub_large,
17118 mul_internal, divmod_internal.
17119 (overflow_type): New enum.
17120 (accumulate_overflow): New.
17122 2018-07-06 Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org>
17124 * tree-ssa-phiopt.c (cond_removal_in_popcount_pattern): New.
17125 (tree_ssa_phiopt_worker): Call cond_removal_in_popcount_pattern.
17127 2018-07-06 Kugan Vivekanandarajah <kuganv@linaro.org>
17129 * tree-ssa-loop-niter.c (number_of_iterations_popcount): If popcount
17130 argument is checked for zero before entering loop, avoid checking again.
17132 2018-07-06 Kugan Vivekanandarajah <kuganv@linaro.org>
17134 * gimplify.h (generic_expr_could_trap_p): Set as global function.
17135 * gimplify.h (generic_expr_could_trap_p): Likwise.
17136 * tree-scalar-evolution.c (expression_expensive_p): Handle COND_EXPR.
17138 2018-07-06 Jakub Jelinek <jakub@redhat.com>
17140 PR tree-optimization/86401
17141 * fold-const.c (fold_binary_loc) <case BIT_AND_EXPR>: Move the
17142 ((A & N) + B) & M -> (A + B) & M etc. optimization into ...
17143 (fold_bit_and_mask): ... here. New helper function for match.pd.
17144 * fold-const.h (fold_bit_and_mask): Declare.
17145 * match.pd (((A & N) + B) & M -> (A + B) & M): New optimization.
17147 2018-07-06 Peter Bergner <bergner@linux.ibm.com>
17150 * target.def (translate_mode_attribute): New hook.
17151 * targhooks.h (default_translate_mode_attribute): Declare.
17152 * targhooks.c (default_translate_mode_attribute): New function.
17153 * doc/tm.texi.in (TARGET_TRANSLATE_MODE_ATTRIBUTE): New hook.
17154 * doc/tm.texi: Regenerate.
17155 * config/rs6000/rs6000.c (TARGET_TRANSLATE_MODE_ATTRIBUTE): Define.
17156 (rs6000_translate_mode_attribute): New function.
17158 2018-07-06 Paul Koning <ni1d@arrl.net>
17160 * doc/md.texi (define_split): Document DONE and FAIL.
17161 (define_peephole2): Ditto.
17163 2018-07-05 Jeff Law <law@redhat.com>
17165 PR tree-optimization/86010
17166 * tree-ssa-dse.c (compute_trims): More aggressively trim at
17167 both the head and tail of mem* and str* calls.
17169 2018-07-05 Jim Wilson <jimw@sifive.com>
17171 * config.gcc (riscv*-*-*): When setting xlen, handle riscv-*.
17173 2018-07-05 Indu Bhagat <indu.bhagat@oracle.com>
17175 * config/aarch64/aarch64-simd.md: correct flags text for
17176 MIN_EXPR replacement.
17178 2018-07-05 James Clarke <jrtc27@jrtc27.com>
17180 * configure: Regenerated.
17182 2018-07-05 Carl Love <cel@us.ibm.com>
17184 * config/rs6000/rs6000-c.c: Map ALTIVEC_BUILTIN_VEC_UNPACKH for
17185 float argument to VSX_BUILTIN_DOUBLEH_V4SF.
17186 Map ALTIVEC_BUILTIN_VEC_UNPACKL for float argument to
17187 VSX_BUILTIN_DOUBLEL_V4SF.
17189 2018-07-05 Martin Sebor <msebor@redhat.com>
17192 * tree-ssa-strlen.c (maybe_set_strlen_range): Use type size rather
17193 than its domain to compute its the upper bound of a char array.
17195 2018-07-05 Nathan Sidwell <nathan@acm.org>
17197 Replace NO_IMPLICIT_EXTERN_C with SYSTEM_IMPLICIT_EXTERN_C.
17198 * doc/cpp.texi: Update comment.
17199 * doc/tm.texi: Rebuilt.
17200 * doc/tm.texi.in (NO_IMPLICIT_EXTERN_C): Replace with ...
17201 (SYSTEM_IMPLICIT_EXTERN_C): ... this, opposite sense.
17202 * doc/extend.texi (Backwards Compatibility): Clarify it is system
17203 headers affected by extern "C".
17204 * system.h: Poison NO_IMPLICIT_EXTERN_C.
17205 * config/alpha/alpha.h, config/arm/uclinux-elf.h,
17206 config/bfin/elf.h, config/cris/cris.h, config/darwin.h,
17207 config/dragonfly.h, config/freebsd.h, config/gnu-user.h,
17208 config/i386/cygming.h, config/i386/djgpp.h, config/i386/nto.h,
17209 config/ia64/hpux.h, config/lm32/lm32.h, config/lm32/uclinux-elf.h,
17210 config/lynx.h, config/mips/elf.h, config/mmix/mmix.h,
17211 config/netbsd.h, config/pa/pa-hpux.h, config/powerpcspe/sysv4.h,
17212 config/riscv/elf.h, config/rs6000/sysv4.h, config/rtems.h,
17213 config/s390/tpf.h, config/sh/newlib.h, config/sol2.h,
17214 config/sparc/openbsd64.h, config/sparc/sp-elf.h,
17215 config/sparc/sp64-elf.h, config/spu/spu.h,
17216 config/stormy16/stormy16.h, config/v850/v850.h,
17217 config/visium/visium.h, config/vx-common.h, config/xtensa/elf.h: Don't
17218 define NO_IMPLICIT_EXTERN_C.
17219 * config/rs6000/aix.h: Set SYSTEM_IMPLICIT_EXTERN_C.
17221 2018-07-05 Tamar Christina <tamar.christina@arm.com>
17224 * config/arm/arm.c (arm_can_change_mode_class): Use GET_MODE_UNIT_SIZE
17225 instead of GET_MODE_SIZE when comparing Units.
17227 2018-07-05 Tamar Christina <tamar.christina@arm.com>
17230 * rtlanal.c (set_noop_p): Constrain on mode change,
17231 include hard-reg-set.h
17233 2018-07-05 Tamar Christina <tamar.christina@arm.com>
17235 * config/aarch64/aarch64.c (aarch64_expand_movmem): Fix mode size.
17237 2018-07-05 Jakub Jelinek <jakub@redhat.com>
17240 2018-07-04 Maxim Ostapenko <m.ostapenko@samsung.com>
17243 * config/gnu-user.h (LIBASAN_EARLY_SPEC): Pass -lstdc++ for static
17245 * gcc.c: Do not pass LIBUBSAN_SPEC if ASan is enabled with UBSan.
17247 2018-07-04 Maxim Ostapenko <m.ostapenko@samsung.com>
17250 * config/gnu-user.h (LIBASAN_EARLY_SPEC): Pass -lstdc++ for static
17252 * gcc.c: Do not pass LIBUBSAN_SPEC if ASan is enabled with UBSan.
17254 2018-07-04 Eric Botcazou <ebotcazou@adacore.com>
17256 PR middle-end/86380
17257 * expmed.c (choose_multiplier): Fix incorrect comparison with mask.
17259 2018-07-04 Aldy Hernandez <aldyh@redhat.com>
17261 * tree-vrp.c (extract_range_from_binary_expr_1): Initialize
17262 neg_*_op* variables.
17264 2018-07-04 Martin Liska <mliska@suse.cz>
17266 * tree-switch-conversion.c: Define
17267 max_ratio_for_speed and max_ratio_for_size constants.
17269 2018-07-04 Denys Vlasenko <dvlasenk@redhat.com>
17270 Martin Liska <mliska@suse.cz>
17272 PR middle-end/66240
17275 * common.opt: Rename align options with 'str_' prefix.
17276 * common/config/i386/i386-common.c (set_malign_value): New
17278 (ix86_handle_option): Use it to set -falign-* options/
17279 * config/aarch64/aarch64-protos.h (struct tune_params): Change
17280 type from int to string.
17281 * config/aarch64/aarch64.c: Update default values from int
17283 * config/alpha/alpha.c (alpha_override_options_after_change):
17285 * config/arm/arm.c (arm_override_options_after_change_1): Likewise.
17286 * config/i386/dragonfly.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Print
17287 max skip conditionally.
17288 * config/i386/freebsd.h (SUBALIGN_LOG): New.
17289 (ASM_OUTPUT_MAX_SKIP_ALIGN): Print
17290 max skip conditionally.
17291 * config/i386/gas.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Print
17292 max skip conditionally.
17293 * config/i386/gnu-user.h (SUBALIGN_LOG): New.
17294 (ASM_OUTPUT_MAX_SKIP_ALIGN): Print
17295 max skip conditionally.
17296 * config/i386/i386.c (struct ptt): Change type from int to
17298 (ix86_default_align): Set default values.
17299 * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): Print
17300 max skip conditionally.
17301 * config/i386/iamcu.h (SUBALIGN_LOG): New.
17302 (ASM_OUTPUT_MAX_SKIP_ALIGN):
17303 * config/i386/lynx.h (ASM_OUTPUT_MAX_SKIP_ALIGN):
17304 * config/i386/netbsd-elf.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Print
17305 max skip conditionally.
17306 * config/i386/openbsdelf.h (SUBALIGN_LOG): New.
17307 (ASM_OUTPUT_MAX_SKIP_ALIGN) Print max skip conditionally.:
17308 * config/i386/x86-64.h (SUBALIGN_LOG): New.
17309 (ASM_OUTPUT_MAX_SKIP_ALIGN): Print
17310 max skip conditionally.
17311 (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
17312 * config/ia64/ia64.c (ia64_option_override): Set default values
17313 for alignment options.
17314 * config/m68k/m68k.c: Handle new str_align_* options.
17315 * config/mips/mips.c (mips_set_compression_mode): Change
17317 (mips_option_override): Set default values for options.
17318 * config/powerpcspe/powerpcspe.c (rs6000_option_override_internal):
17320 * config/rs6000/rs6000.c (rs6000_option_override_internal):
17322 * config/rx/rx.c (rx_option_override): Likewise.
17323 * config/rx/rx.h (JUMP_ALIGN): Use align_jumps_log.
17324 (LABEL_ALIGN): Use align_labels_log.
17325 (LOOP_ALIGN): Use align_loops_align.
17326 * config/s390/s390.c (s390_asm_output_function_label): Use new
17328 * config/sh/sh.c (sh_override_options_after_change):
17329 Change type of constants.
17330 * config/spu/spu.c (spu_sched_init): Likewise.
17331 * config/sparc/sparc.c (sparc_option_override): Set default
17332 values for options.
17333 * config/visium/visium.c (visium_option_override): Likewise.
17334 * config/visium/visium.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Do not
17335 emit p2align format with last argument if it's not needed.
17336 * doc/invoke.texi: Document extended format of -falign-*.
17337 * final.c: Use align_labels alignment.
17338 * flags.h (struct target_flag_state): Change type to use
17340 (struct align_flags_tuple): New.
17341 (struct align_flags): Likewise.
17342 (align_loops_log): Redefine macro to use new types.
17343 (align_loops_max_skip): Redefine macro to use new types.
17344 (align_jumps_log): Redefine macro to use new types.
17345 (align_jumps_max_skip): Redefine macro to use new types.
17346 (align_labels_log): Redefine macro to use new types.
17347 (align_labels_max_skip): Redefine macro to use new types.
17348 (align_functions_log): Redefine macro to use new types.
17349 (align_loops): Redefine macro to use new types.
17350 (align_jumps): Redefine macro to use new types.
17351 (align_labels): Redefine macro to use new types.
17352 (align_functions): Redefine macro to use new types.
17353 (align_functions_max_skip): Redefine macro to use new types.
17354 (align_loops_value): New macro.
17355 (align_jumps_value): New macro.
17356 (align_labels_value): New macro.
17357 (align_functions_value): New macro.
17358 * function.c (invoke_set_current_function_hook): Propagate
17359 alignment values from flags to global variables default in
17361 * ipa-icf.c (sem_function::equals_wpa): Use
17362 cl_optimization_option_eq instead of memcmp.
17363 * lto-streamer.h (cl_optimization_stream_out): Support streaming
17365 (cl_optimization_stream_in): Likewise.
17366 * optc-save-gen.awk: Support strings in cl_optimization.
17367 * opth-gen.awk: Likewise.
17368 * opts.c (finish_options): Remove error checking of invalid
17370 (MAX_CODE_ALIGN): Remove.
17371 (MAX_CODE_ALIGN_VALUE): Likewise.
17372 (parse_and_check_align_values): New function.
17373 (check_alignment_argument): Likewise.
17374 (common_handle_option): Use check_alignment_argument.
17375 * opts.h (parse_and_check_align_values): Declare.
17376 * toplev.c (init_alignments): Remove.
17377 (read_log_maxskip): New.
17378 (parse_N_M): Likewise.
17379 (parse_alignment_opts): Likewise.
17380 (backend_init_target): Remove usage of init_alignments.
17381 * toplev.h (parse_alignment_opts): Declare.
17382 * tree-streamer-in.c (streamer_read_tree_bitfields): Add new
17384 * tree-streamer-out.c (streamer_write_tree_bitfields): Likewise.
17385 * tree.c (cl_option_hasher::equal): New.
17386 * varasm.c: Use new global macros.
17388 2018-07-04 Denys Vlasenko <dvlasenk@redhat.com>
17390 * config/i386/dragonfly.h: (ASM_OUTPUT_MAX_SKIP_ALIGN):
17391 Use a simpler align directive also if MAXSKIP = ALIGN-1.
17392 * config/i386/gas.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
17393 * config/i386/lynx.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
17394 * config/i386/netbsd-elf.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
17395 * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
17396 * config/i386/freebsd.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Remove "If N
17397 is large, do at least 8 byte alignment" code. Add SUBALIGN_LOG
17398 define. Use a simpler align directive also if MAXSKIP = ALIGN-1.
17399 * config/i386/gnu-user.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
17400 * config/i386/iamcu.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
17401 * config/i386/openbsdelf.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
17402 * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
17404 2018-07-04 Martin Liska <mliska@suse.cz>
17405 Jonathan Wakely <jwakely@redhat.com>
17407 * coverage.c: Use correct type.
17408 * doc/invoke.texi: Language correction.
17410 2018-07-03 H.J. Lu <hongjiu.lu@intel.com>
17413 * config/i386/i386.c (rest_of_insert_endbranch): Also generate
17414 ENDBRANCH for non-tail call which may return via indirect branch.
17415 * doc/extend.texi: Document indirect_return attribute.
17417 2018-07-03 Martin Sebor <msebor@redhat.com>
17419 PR tree-optimization/86274
17420 * gimple-ssa-sprintf.c (fmtresult::type_max_digits): Verify
17422 (format_floating): Correct handling of infinities and NaNs.
17424 2018-07-03 Martin Sebor <msebor@redhat.com>
17426 * print-tree.c (print_real_cst): New function.
17427 (print_node_brief): Call it.
17428 (print_node): Ditto.
17430 2018-07-03 Jeff Law <law@redhat.com>
17432 * config/h8300/h8300.md (logical<mode>3_sn, logical<mode>3): Merge
17433 into a single pattern.
17435 * config/h8300/h8300.md (ors code_iterator): New.
17436 (bsetqi_msx, bnotqi_msx patterns and splitters): Consolidate into
17437 a single pattern and single splitter.
17438 (bsethi_msx, bnothi_msx patterns): Consolidate into a single pattern.
17439 (iorqi3_1, xorqi3_1): Likewise.
17440 (iorqi3, xorqi3 expanders): Similarly.
17442 * config/h8300/h8300.md (movmd_internal_normal): Consolidated with
17443 (movmd_internal) into a single pattern using the P mode iterator.
17444 (movmd splitters): Similarly.
17445 (stpcpy_internal_normal, stpcpy_internal): Similarly for thes patterns.
17446 (movsd splitters): Similarly.
17448 * config/h8300/h8300.c (h8300_insn_length_from_table): Consolidate
17449 ADDB, ADDW and ADDL into a single ADD attribute which selects the
17450 right table based on the size of the operand.
17451 * config/h8300/h8300.md (length_table): Corresponding changes. All
17452 references to "addb", "addw" and "addl" changed to "add".
17453 (btst patterns): Merge two variants into a single pattern.
17454 (tstqi, tsthi): Likewise.
17455 (addhi3_incdec, addsi3_incdec): Likewise.
17456 (subhi3_h8300hs, subsi3_h8300hs): Likewise.
17457 (mulhi3, mulsi3): Likewise.
17458 (udivhi3, udivsi3): Likewise.
17459 (divhi3, divsi3): Likewise.
17460 (andorqi3, andorhi3, andorsi3): Likewise.
17462 2018-07-03 Uros Bizjak <ubizjak@gmail.com>
17465 * config/i386/sse.md (uavg<mode>3_ceil): New expander.
17466 (<sse2_avx2>_uavg<mode>3<mask_name>): Simplify expander.
17468 2018-07-03 Richard Sandiford <richard.sandiford@arm.com>
17470 PR tree-optimization/85694
17471 * config/aarch64/iterators.md (HADD, RHADD): New int iterators.
17472 (u): Handle UNSPEC_SHADD, UNSPEC_UHADD, UNSPEC_SRHADD and
17474 * config/aarch64/aarch64-simd.md (<u>avg<mode>3_floor)
17475 (<u>avg<mode>3_ceil): New patterns.
17477 2018-07-03 David Malcolm <dmalcolm@redhat.com>
17479 * gcc.dg/vect/slp-perm-1.c: Remove "note: " prefix from
17480 scan-tree-dump directive.
17481 * gcc.dg/vect/slp-perm-2.c: Likewise.
17482 * gcc.dg/vect/slp-perm-3.c: Likewise.
17483 * gcc.dg/vect/slp-perm-5.c: Likewise.
17484 * gcc.dg/vect/slp-perm-6.c: Likewise.
17485 * gcc.dg/vect/slp-perm-7.c: Likewise.
17486 * gcc.dg/vect/slp-perm-8.c: Likewise.
17488 2018-07-03 Marek Polacek <polacek@redhat.com>
17490 PR middle-end/86202
17491 * gimple-fold.c (size_must_be_zero_p): Check the type of the size.
17493 2018-07-03 Richard Biener <rguenther@suse.de>
17496 * tree-ssa-structalias.c (find_func_clobbers): Properly
17497 handle indirect calls.
17499 2018-07-03 Jeff Law <law@redhat.com>
17501 * config/h8300/h8300.md (HSI, QHSI, QHSIF): New mode iterators.
17502 (shifts): New code iterator.
17503 (movqi, movhi, movsi, movsf expanders): Consolidate into a single
17504 expander. Fix HImode handling on H8/SX.
17505 (addqi3, addhi3, addsi3 expanders): Consolidate into a single expander.
17506 (subqi3, subhi3, subsi3 expanders): Likewise.
17507 (andqi3, andhi3, andsi3 expanders): Likewise.
17508 (iorqi3, iorhi3, iorsi3 expanders): Likewise.
17509 (xorqi3, xorhi3, xorsi3 expanders): Likewise.
17510 (negqi2, neghi2, negsi2, negsf2 expanders): Likewise.
17511 (one_cmplqi2, one_cmplhi2, one_cmplsi2): Likewise.
17512 (zero_extendqihi2, zero_extendqisi2): Likewise.
17513 (extendqihi2, extendqisi2): Likewise.
17514 (rotlqi3, rotlhi3, rotlsi3): Likewise.
17515 (neghi2_h8300, negsi2_h8300): Likewise for these patterns.
17516 (rotlqi3_1, rotlhi3_1): Likewise.
17517 (logicalhi3_sn, logicalsi3_sn): Likewise.
17518 (logicalhi3, logicalsi3): Likewise.
17520 2018-07-03 Richard Sandiford <richard.sandiford@arm.com>
17522 * tree-vect-patterns.c (vect_recog_rotate_pattern)
17523 (vect_recog_vector_vector_shift_pattern, vect_recog_divmod_pattern)
17524 (vect_recog_mixed_size_cond_pattern, adjust_bool_pattern_cast)
17525 (adjust_bool_pattern, vect_recog_bool_pattern): Pass the vector
17526 type to append_pattern_def_seq instead of creating a stmt_vec_info
17528 (build_mask_conversion): Likewise. Remove vinfo argument.
17529 (vect_add_conversion_to_patterm): Likewise, renaming to...
17530 (vect_add_conversion_to_pattern): ...this.
17531 (vect_recog_mask_conversion_pattern): Update call to
17532 build_mask_conversion. Pass the vector type to
17533 append_pattern_def_seq here too.
17534 (vect_recog_gather_scatter_pattern): Update call to
17535 vect_add_conversion_to_pattern.
17537 2018-07-03 Richard Sandiford <richard.sandiford@arm.com>
17539 * tree-vect-patterns.c (new_pattern_def_seq): Delete.
17540 (vect_recog_dot_prod_pattern, vect_recog_sad_pattern)
17541 (vect_recog_widen_op_pattern, vect_recog_over_widening_pattern)
17542 (vect_recog_rotate_pattern, vect_synth_mult_by_constant): Don't set
17543 STMT_VINFO_PATTERN_DEF_SEQ to null here.
17544 (vect_recog_pow_pattern, vect_recog_vector_vector_shift_pattern)
17545 (vect_recog_mixed_size_cond_pattern, vect_recog_bool_pattern): Use
17546 append_pattern_def_seq instead of new_pattern_def_seq.
17547 (vect_recog_divmod_pattern): Do both of the above.
17548 (vect_pattern_recog_1): Assert that STMT_VINO_PATTERN_DEF_SEQ
17551 2018-07-03 Richard Sandiford <richard.sandiford@arm.com>
17553 * tree-vect-patterns.c (vect_recog_dot_prod_pattern):
17554 (vect_recog_sad_pattern, vect_recog_widen_op_pattern)
17555 (vect_recog_widen_mult_pattern, vect_recog_pow_pattern):
17556 (vect_recog_widen_sum_pattern, vect_recog_over_widening_pattern)
17557 (vect_recog_average_pattern, vect_recog_cast_forwprop_pattern)
17558 (vect_recog_widen_shift_pattern, vect_recog_rotate_pattern)
17559 (vect_recog_vector_vector_shift_pattern, vect_synth_mult_by_constant)
17560 (vect_recog_mult_pattern, vect_recog_divmod_pattern)
17561 (vect_recog_mixed_size_cond_pattern, vect_recog_bool_pattern)
17562 (vect_recog_mask_conversion_pattern): Replace vec<gimple *>
17563 parameter with a single stmt_vec_info.
17564 (vect_recog_func_ptr): Likewise.
17565 (vect_recog_gather_scatter_pattern): Likewise, folding in...
17566 (vect_try_gather_scatter_pattern): ...this.
17567 (vect_pattern_recog_1): Remove stmts_to_replace and just pass
17568 the stmt_vec_info of the statement to be matched. Don't clear
17569 STMT_VINFO_RELATED_STMT.
17570 (vect_pattern_recog): Update call accordingly.
17572 2018-07-03 Richard Sandiford <richard.sandiford@arm.com>
17574 PR tree-optimization/85694
17575 * doc/md.texi (avgM3_floor, uavgM3_floor, avgM3_ceil)
17576 (uavgM3_ceil): Document new optabs.
17577 * doc/sourcebuild.texi (vect_avg_qi): Document new target selector.
17578 * internal-fn.def (IFN_AVG_FLOOR, IFN_AVG_CEIL): New internal
17580 * optabs.def (savg_floor_optab, uavg_floor_optab, savg_ceil_optab)
17581 (savg_ceil_optab): New optabs.
17582 * tree-vect-patterns.c (vect_recog_average_pattern): New function.
17583 (vect_vect_recog_func_ptrs): Add it.
17584 * tree-vect-stmts.c (vectorizable_call): Get the type of the zero
17585 constant directly from the associated lhs.
17587 2018-07-03 Richard Sandiford <richard.sandiford@arm.com>
17589 * tree-vect-patterns.c (vect_split_statement): New function.
17590 (vect_convert_input): Use it to try to split an existing cast.
17592 2018-07-03 Richard Sandiford <richard.sandiford@arm.com>
17594 * poly-int.h (print_hex): New function.
17595 * dumpfile.h (dump_dec, dump_hex): Declare.
17596 * dumpfile.c (dump_dec, dump_hex): New poly_wide_int functions.
17597 * tree-vectorizer.h (_stmt_vec_info): Add min_output_precision,
17598 min_input_precision, operation_precision and operation_sign.
17599 * tree-vect-patterns.c (vect_get_range_info): New function.
17600 (vect_same_loop_or_bb_p, vect_single_imm_use)
17601 (vect_operation_fits_smaller_type): Delete.
17602 (vect_look_through_possible_promotion): Add an optional
17603 single_use_p parameter.
17604 (vect_recog_over_widening_pattern): Rewrite to use new
17605 stmt_vec_info infomration. Handle one operation at a time.
17606 (vect_recog_cast_forwprop_pattern, vect_narrowable_type_p)
17607 (vect_truncatable_operation_p, vect_set_operation_type)
17608 (vect_set_min_input_precision): New functions.
17609 (vect_determine_min_output_precision_1): Likewise.
17610 (vect_determine_min_output_precision): Likewise.
17611 (vect_determine_precisions_from_range): Likewise.
17612 (vect_determine_precisions_from_users): Likewise.
17613 (vect_determine_stmt_precisions, vect_determine_precisions): Likewise.
17614 (vect_vect_recog_func_ptrs): Put over_widening first.
17616 (vect_pattern_recog): Call vect_determine_precisions.
17618 2018-07-03 Richard Sandiford <richard.sandiford@arm.com>
17620 * tree-vect-patterns.c (vect_mark_pattern_stmts): Remove pattern
17621 statements that have been replaced by further pattern statements.
17622 (vect_pattern_recog_1): Clear STMT_VINFO_PATTERN_DEF_SEQ on failure.
17624 2018-07-03 Richard Biener <rguenther@suse.de>
17626 * tree-vect-stmts.c (vect_is_simple_use): Consolidate dumping,
17627 always set *dt. Dump vectype in vectype overload.
17628 * dumpfile.h (dump_gimple_expr): New function.
17629 (dump_gimple_expr_loc): Likewise.
17630 * dumpfile.c (dump_gimple_expr): New function.
17631 (dump_gimple_expr_loc): Likewise.
17633 2018-07-02 Jeff Law <law@redhat.com>
17635 * config/h8300/h8300.md (movqi_h8300, movqi_h8300hs): Consolidate
17636 the H8/300, H8/300H and H8/S variants into a single pattern.
17637 (movhi_h8300, movqi_h8300hs): Similarly.
17638 (pushqi_h8300hs, pushhi_h8300hs): Consolidate into a single pattern.
17639 (QHI mode iterator): New.
17641 * config/h8300/h8300.md: Remove trailing whitespace.
17643 2018-07-02 Jim Wilson <jimw@sifive.com>
17645 * config/riscv/riscv.c (riscv_expand_epilogue): Use emit_jump_insn
17646 instead of emit_insn for interrupt returns.
17647 * config/riscv/riscv.md (riscv_met): Add (return) to rtl.
17648 (riscv_sret, riscv_uret): Likewise.
17650 2018-07-02 David Malcolm <dmalcolm@redhat.com>
17652 * pretty-print.c (selftest::test_pp_format): Move save and restore
17653 of quotes to class auto_fix_quotes, and add an instance.
17654 * selftest.c: Include "intl.h".
17655 (selftest::auto_fix_quotes::auto_fix_quotes): New ctor.
17656 (selftest::auto_fix_quotes::~auto_fix_quotes): New dtor.
17657 * selftest.h (selftest::auto_fix_quotes): New class.
17659 2018-07-02 Richard Henderson <richard.henderson@linaro.org>
17661 * config/aarch64/aarch64-protos.h, config/aarch64/aarch64.c
17662 (aarch64_sve_prepare_conditional_op): Remove.
17663 * config/aarch64/aarch64-sve.md (cond_<SVE_INT_BINARY><SVE_I>):
17664 Allow aarch64_simd_reg_or_zero as select operand; remove
17665 the aarch64_sve_prepare_conditional_op call.
17666 (cond_<SVE_INT_BINARY_SD><SVE_SDI>): Likewise.
17667 (cond_<SVE_COND_FP_BINARY><SVE_F>): Likewise.
17668 (*cond_<SVE_INT_BINARY><SVE_I>_z): New pattern.
17669 (*cond_<SVE_INT_BINARY_SD><SVE_SDI>_z): New pattern.
17670 (*cond_<SVE_COND_FP_BINARY><SVE_F>_z): New pattern.
17671 (*cond_<SVE_INT_BINARY><SVE_I>_any): New pattern.
17672 (*cond_<SVE_INT_BINARY_SD><SVE_SDI>_any): New pattern.
17673 (*cond_<SVE_COND_FP_BINARY><SVE_F>_any): New pattern
17674 and a splitters to match all of the *_any patterns.
17675 * config/aarch64/predicates.md (aarch64_sve_any_binary_operator): New.
17677 * config/aarch64/iterators.md (SVE_INT_BINARY_REV): Remove.
17678 (SVE_COND_FP_BINARY_REV): Remove.
17679 (sve_int_op_rev, sve_fp_op_rev): New.
17680 * config/aarch64/aarch64-sve.md (*cond_<SVE_INT_BINARY><SVE_I>_0): New.
17681 (*cond_<SVE_INT_BINARY_SD><SVE_SDI>_0): New.
17682 (*cond_<SVE_COND_FP_BINARY><SVE_F>_0): New.
17683 (*cond_<SVE_INT_BINARY><SVE_I>_2): Rename, add movprfx alternative.
17684 (*cond_<SVE_INT_BINARY_SD><SVE_SDI>_2): Similarly.
17685 (*cond_<SVE_COND_FP_BINARY><SVE_F>_2): Similarly.
17686 (*cond_<SVE_INT_BINARY><SVE_I>_3): Similarly; use sve_int_op_rev.
17687 (*cond_<SVE_INT_BINARY_SD><SVE_SDI>_3): Similarly.
17688 (*cond_<SVE_COND_FP_BINARY><SVE_F>_3): Similarly; use sve_fp_op_rev.
17690 * config/aarch64/aarch64-sve.md (cond_<SVE_COND_FP_BINARY><SVE_F>):
17691 Remove match_dup 1 from the inner unspec.
17692 (*cond_<SVE_COND_FP_BINARY><SVE_F>): Likewise.
17694 * config/aarch64/aarch64.md (movprfx): New attr.
17695 (length): Default movprfx to 8.
17696 * config/aarch64/aarch64-sve.md (*mul<SVE_I>3): Add movprfx alt.
17697 (*madd<SVE_I>, *msub<SVE_I): Likewise.
17698 (*<su>mul<SVE_I>3_highpart): Likewise.
17699 (*<SVE_INT_BINARY_SD><SVE_SDI>3): Likewise.
17700 (*v<ASHIFT><SVE_I>3): Likewise.
17701 (*<su><MAXMIN><SVE_I>3): Likewise.
17702 (*<su><MAXMIN><SVE_F>3): Likewise.
17703 (*fma<SVE_F>4, *fnma<SVE_F>4): Likewise.
17704 (*fms<SVE_F>4, *fnms<SVE_F>4): Likewise.
17705 (*div<SVE_F>4): Likewise.
17707 2018-07-02 Richard Sandiford <richard.sandiford@arm.com>
17709 * tree-vect-patterns.c (vect_recog_widen_shift_pattern): Fix typo
17712 2018-07-02 Richard Biener <rguenther@suse.de>
17714 PR tree-optimization/86363
17715 * tree-ssa-sccvn.c (vn_reference_lookup_3): Check the
17716 memset argument refers to a non-variable address.
17718 2018-07-02 Aldy Hernandez <aldyh@redhat.com>
17720 * tree-vrp.c (extract_range_from_binary_expr_1): Abstract a lot of the
17721 {PLUS,MINUS}_EXPR code to...
17722 (adjust_symbolic_bound): ...here,
17723 (combine_bound): ...here,
17724 (set_value_range_with_overflow): ...and here.
17726 2018-07-02 Aldy Hernandez <aldyh@redhat.com>
17728 * tree-vrp.c (extract_range_from_unary_expr): Abstract ABS_EXPR
17730 (extract_range_from_abs_expr): ...here.
17732 2018-07-02 Eric Botcazou <ebotcazou@adacore.com>
17734 * config/i386/i386.c (ix86_finalize_stack_frame_flags): Do not overrule
17735 -fno-omit-frame-pointer when not optimizing.
17737 2018-07-02 Martin Liska <mliska@suse.cz>
17740 * ipa-pure-const.c (malloc_candidate_p): Revert usage of ::get.
17741 (propagate_nothrow): Likewise.
17743 2018-07-02 Martin Liska <mliska@suse.cz>
17746 * ipa-inline.c (early_inliner): Revert wrongly added ::get call.
17748 2018-07-02 David Malcolm <dmalcolm@redhat.com>
17750 * dumpfile.c (dump_generic_expr_loc): Undo removal of this
17751 function in r262149, changing "loc" param from source_location to
17752 const dump_location_t &.
17753 * dumpfile.h (dump_generic_expr_loc): Undo removal of this
17754 declaration, as above.
17756 2018-07-01 Paul Koning <ni1d@arrl.net>
17758 * common/config/pdp11/pdp11-common.c (pdp11_handle_option): Handle
17759 -munit-asm, -mgnu-asm, -mdec-asm.
17760 * config/pdp11/pdp11-protos.h (pdp11_gen_int_label): New.
17761 (pdp11_output_labelref): New.
17762 (pdp11_output_def): New.
17763 (pdp11_output_addr_vec_elt): New.
17764 * config/pdp11/pdp11.c: Use tab between opcode and operands. Use
17765 %# and %@ format codes.
17766 (pdp11_option_override): New.
17767 (TARGET_ASM_FILE_START_FILE_DIRECTIVE): Define.
17768 (pdp11_output_ident): New.
17769 (pdp11_asm_named_section): New.
17770 (pdp11_asm_init_sections): New.
17771 (pdp11_file_start): New.
17772 (pdp11_file_end): New.
17773 (output_ascii): Use .ascii/.asciz for -mdec-asm.
17774 (pdp11_asm_print_operand): Update %# and %$ for -mdec-asm. Add
17775 %o, like %c but octal.
17776 (pdp11_option_override): New.
17777 * config/pdp11/pdp11.h (TEXT_SECTION_ASM_OP): Update for
17779 (DATA_SECTION_ASM_OP): Ditto.
17780 (READONLY_DATA_SECTION_ASM_OP): New.
17781 (IS_ASM_LOGICAL_LINE_SEPARATOR): New.
17782 (ASM_GENERATE_INTERNAL_LABEL): Use new function.
17783 (ASM_OUTPUT_LABELREF): Ditto.
17784 (ASM_OUTPUT_DEF): Ditto.
17785 (ASM_OUTPUT_EXTERNAL): New.
17786 (ASM_OUTPUT_SOURCE_FILENAME): New.
17787 (ASM_OUTPUT_ADDR_VEC_ELT): Use new function.
17788 (ASM_OUTPUT_SKIP): Update for -mdec-asm.
17789 * config/pdp11/pdp11.md: Use tab between opcode and operands. Use
17790 %# and %@ format codes.
17791 * config/pdp11/pdp11.opt (mgnu-asm): New.
17792 (mdec-asm): Conflicts with -mgnu-asm and -munix-asm.
17793 (munix-asm): Conflicts with -mdec-asm and -mgnu-asm.
17794 * doc/invoke.txt (PDP-11 Options): Add -mgnu-asm.
17796 2018-07-01 Aldy Hernandez <aldyh@redhat.com>
17798 * tree-ssa-threadupdate.c (mark_threaded_blocks): Avoid
17799 dereferencing path[] beyond its length.
17801 (debug_all_paths): New.
17802 (rewire_first_differing_edge): New.
17803 (adjust_paths_after_duplication): New.
17804 (duplicate_thread_path): Call adjust_paths_after_duplication.
17806 (thread_through_all_blocks): Add new argument to
17807 duplicate_thread_path.
17809 2018-06-30 Jim Wilson <jimw@sifive.com>
17811 * config/riscv/predicates.md (p2m1_shift_operand): New.
17812 (high_mask_shift_operand): New.
17813 * config/riscv/riscv.md (lshrsi3_zero_extend_3+1): New combiner
17814 pattern using p2m1_shift_operand.
17815 (lshsi3_zero_extend_3+2): New combiner pattern using
17816 high_mask_shift_operand.
17818 2018-06-30 Richard Sandiford <richard.sandiford@arm.com>
17820 * tree-vect-patterns.c (vect_get_external_def_edge): New function,
17822 (vect_recog_rotate_pattern): ...here.
17823 (vect_convert_input): Try to insert casts of invariants in the
17825 * tree-vect-loop-manip.c (vect_loop_versioning): Don't require the
17826 preheader to be empty.
17828 2018-06-30 Richard Sandiford <richard.sandiford@arm.com>
17830 * tree-vect-patterns.c (append_pattern_def_seq): Take an optional
17831 vector type. If given, install it in the new statement's
17832 STMT_VINFO_VECTYPE.
17833 (vect_element_precision): New function.
17834 (vect_unpromoted_value): New struct.
17835 (vect_unpromoted_value::vect_unpromoted_value): New function.
17836 (vect_unpromoted_value::set_op): Likewise.
17837 (vect_look_through_possible_promotion): Likewise.
17838 (vect_joust_widened_integer, vect_joust_widened_type): Likewise.
17839 (vect_widened_op_tree, vect_convert_input): Likewise.
17840 (vect_convert_inputs, vect_convert_output): Likewise.
17841 (vect_recog_dot_prod_pattern): Use vect_look_through_possible_promotion
17842 to handle the optional cast of the multiplication result and
17843 vect_widened_op_tree to detect the widened multiplication itself.
17844 Do not require the input and output of promotion casts to have
17845 the same sign, but base the signedness of the operation on the
17846 input rather than the result. If the pattern includes two
17847 promotions, check that those promotions have the same sign.
17848 Do not restrict the MULT_EXPR handling to a double-width result;
17849 handle quadruple-width results and wider. Use vect_convert_inputs
17850 to convert the inputs to the common type.
17851 (vect_recog_sad_pattern): Use vect_look_through_possible_promotion
17852 to handle the optional cast of the ABS result. Also allow a sign
17853 change or a sign extension between the ABS and MINUS.
17854 Use vect_widened_op_tree to detect the widened subtraction and use
17855 vect_convert_inputs to convert the inputs to the common type.
17856 (vect_handle_widen_op_by_const): Delete.
17857 (vect_recog_widen_op_pattern): New function.
17858 (vect_recog_widen_mult_pattern): Use it.
17859 (vect_recog_widen_shift_pattern): Likewise.
17860 (vect_recog_widen_sum_pattern): Use
17861 vect_look_through_possible_promotion to handle the promoted
17864 2018-06-30 Richard Sandiford <richard.sandiford@arm.com>
17866 * gimple-iterator.c (gsi_for_stmt): Add a new overload that takes
17867 the containing gimple_seq *.
17868 * gimple-iterator.h (gsi_for_stmt): Declare it.
17869 * tree-vect-patterns.c (vect_recog_dot_prod_pattern)
17870 (vect_recog_sad_pattern, vect_recog_widen_sum_pattern)
17871 (vect_recog_widen_shift_pattern, vect_recog_rotate_pattern)
17872 (vect_recog_vector_vector_shift_pattern, vect_recog_divmod_pattern)
17873 (vect_recog_mask_conversion_pattern): Remove STMT_VINFO_IN_PATTERN_P
17875 (vect_init_pattern_stmt, vect_set_pattern_stmt): New functions,
17877 (vect_mark_pattern_stmts): ...here. Handle cases in which the
17878 statement being replaced is part of an existing pattern
17879 definition sequence, inserting the new pattern statements before
17881 (vect_pattern_recog_1): Don't return a bool. If the statement
17882 is already part of a pattern, instead apply pattern matching
17883 to the pattern definition statements. Don't clear the
17884 STMT_VINFO_RELATED_STMT if is_pattern_stmt_p.
17885 (vect_pattern_recog): Don't break after the first match;
17886 continue processing the pattern definition statements instead.
17887 Don't bail out for STMT_VINFO_IN_PATTERN_P here.
17889 2018-06-30 Richard Sandiford <richard.sandiford@arm.com>
17891 * tree-vect-patterns.c (vect_reassociating_reduction_p): New function.
17892 (vect_recog_dot_prod_pattern, vect_recog_sad_pattern)
17893 (vect_recog_widen_sum_pattern): Use it.
17895 2018-06-30 Richard Sandiford <richard.sandiford@arm.com>
17897 * tree-vect-loop.c (vectorizable_reduction): Assert that the
17898 phi is not a pattern statement and has not been replaced by
17899 a pattern statement.
17900 * tree-vect-patterns.c (type_conversion_p): Don't check
17901 STMT_VINFO_IN_PATTERN_P.
17902 (vect_recog_vector_vector_shift_pattern): Likewise.
17903 (vect_recog_dot_prod_pattern): Expect vect_is_simple_use to return
17904 the pattern statement rather than the original statement; check
17905 directly for a WIDEN_MULT_EXPR here.
17906 * tree-vect-slp.c (vect_get_and_check_slp_defs): Expect
17907 vect_is_simple_use to return the pattern statement rather
17908 than the original statement; use is_pattern_stmt_p to check
17909 for such a pattern statement.
17910 * tree-vect-stmts.c (process_use): Expect vect_is_simple_use
17911 to return the pattern statement rather than the original statement;
17912 don't do the same transformation here.
17913 (vect_is_simple_use): If the defining statement has been replaced
17914 by a pattern statement, return the pattern statement instead.
17915 Remove the corresponding (local) transformation from the vectype
17918 2018-06-30 Richard Sandiford <richard.sandiford@arm.com>
17920 * tree-vectorizer.h (vect_is_simple_use): Move the gimple ** to the
17921 end and default to null.
17922 * tree-vect-loop.c (vect_create_epilog_for_reduction)
17923 (vectorizable_reduction): Update calls accordingly, dropping the
17924 gimple ** argument if the passed-back statement isn't needed.
17925 * tree-vect-patterns.c (vect_get_internal_def, type_conversion_p)
17926 (vect_recog_rotate_pattern): Likewise.
17927 (vect_recog_mask_conversion_pattern): Likewise.
17928 * tree-vect-slp.c (vect_get_and_check_slp_defs): Likewise.
17929 (vect_mask_constant_operand_p): Likewise.
17930 * tree-vect-stmts.c (is_simple_and_all_uses_invariant, process_use):
17931 (vect_model_simple_cost, vect_get_vec_def_for_operand): Likewise.
17932 (get_group_load_store_type, get_load_store_type): Likewise.
17933 (vect_check_load_store_mask, vect_check_store_rhs): Likewise.
17934 (vectorizable_call, vectorizable_simd_clone_call): Likewise.
17935 (vectorizable_conversion, vectorizable_assignment): Likewise.
17936 (vectorizable_shift, vectorizable_operation): Likewise.
17937 (vectorizable_store, vect_is_simple_cond): Likewise.
17938 (vectorizable_condition, vectorizable_comparison): Likewise.
17939 (get_same_sized_vectype, vect_get_mask_type_for_stmt): Likewise.
17940 (vect_is_simple_use): Rename the def_stmt argument to def_stmt_out
17941 and move it to the end. Cope with null def_stmt_outs.
17943 2018-06-30 Bernd Edlinger <bernd.edlinger@hotmail.de>
17945 * Makefile.in (FLAGS_TO_PASS): Add RANLIB_FOR_TARGET.
17947 2018-06-29 Jeff Law <law@redhat.com>
17949 * config/v850/v850.c (v850_legitimate_address_p): Handle large
17950 displacements for TARGET_V850E2V3 and newer.
17951 (TARGET_LRA_P): Remove. Defaults to LRA now.
17952 * config/v850/v850.md (sign23byte_load): Remove.
17953 (unsign23byte_load, sign23hword_load, unsign23hword_load): Likewise.
17954 (23word_load, 23byte_store, 23hword_store, 23word_store): Likewise.
17956 2018-06-29 Martin Liska <mliska@suse.cz>
17959 * coverage.c (coverage_init): Mangle full path name.
17960 * doc/invoke.texi: Document the change.
17961 * gcov-io.c (mangle_path): New.
17962 * gcov-io.h (mangle_path): Likewise.
17963 * gcov.c (mangle_name): Use mangle_path for path mangling.
17965 2018-06-29 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
17967 * config/arm/arm.c (output_move_double): Don't allow STRD instructions
17968 if starting source register is not even.
17970 2018-06-29 Martin Liska <mliska@suse.cz>
17972 PR tree-optimization/86263
17973 * tree-switch-conversion.c (switch_decision_tree::try_switch_expansion):
17974 Make edge redirection.
17976 2018-06-29 David Malcolm <dmalcolm@redhat.com>
17978 * dumpfile.c (dump_loc): Add indentation based on scope depth.
17979 (dump_scope_depth): New variable.
17980 (get_dump_scope_depth): New function.
17981 (dump_begin_scope): New function.
17982 (dump_end_scope): New function.
17983 * dumpfile.h (get_dump_scope_depth): New declaration.
17984 (dump_begin_scope): New declaration.
17985 (dump_end_scope): New declaration.
17986 (class auto_dump_scope): New class.
17987 (AUTO_DUMP_SCOPE): New macro.
17988 * tree-vectorizer.h (DUMP_VECT_SCOPE): Reimplement in terms of
17991 2018-06-29 Richard Biener <rguenther@suse.de>
17993 * tree-vect-data-refs.c (vect_analyze_data_ref_dependences): Assert
17994 compute_all_dependences succeeds.
17995 * tree-vect-loop.c (vect_get_datarefs_in_loop): Fail early if we
17996 exceed --param loop-max-datarefs-for-datadeps.
17998 2018-06-29 Jakub Jelinek <jakub@redhat.com>
18000 * config/rs6000/t-rs6000: Append rs6000-modes.h to TM_H.
18002 2018-06-28 Uros Bizjak <ubizjak@gmail.com>
18005 * config/i386/sse.md (*vec_extractv4si_0_zext_sse4): Use
18006 alternative 0 in preferred_for_speed attribute.
18008 2018-06-28 Paul Koning <ni1d@arrl.net>
18010 * config/pdp11/pdp11-protos.h (pdp11_shift_length): New function.
18011 * config/pdp11/pdp11.c (pdp11_shift_length): New function.
18012 * config/pdp11/pdp11.h (ADJUST_INSN_LENGTH): Remove.
18013 * config/pdp11/pdp11.md: Correct "length" attribute calculation
18014 for shift insn patterns.
18016 2018-06-28 David Malcolm <dmalcolm@redhat.com>
18018 * cgraph.c (cgraph_node::get_body): Replace assignments to
18019 "dump_file" with calls to set_dump_file.
18020 * dumpfile.c (alt_dump_file): Make static, and group with...
18021 (alt_flags): ...this definition.
18022 (dumps_are_enabled): New variable.
18023 (refresh_dumps_are_enabled): New function.
18024 (set_dump_file): New function.
18025 (set_alt_dump_file): New function.
18026 (gcc::dump_manager::dump_start): Replace assignments to
18027 "dump_file" and "alt_dump_file" with calls to set_dump_file and
18029 (gcc::dump_manager::dump_finish): Likewise.
18030 * dumpfile.h (alt_dump_file): Delete decl.
18031 (dumps_are_enabled): New variable decl.
18032 (set_dump_file): New function decl.
18033 (dump_enabled_p): Rewrite in terms of new "dumps_are_enabled"
18035 * tree-nested.c (lower_nested_functions): Replace assignments to
18036 "dump_file" with calls to set_dump_file.
18038 2018-06-28 Eric Botcazou <ebotcazou@adacore.com>
18040 * tree-cfg.c (verify_gimple_in_cfg): Call verify_location on the
18041 goto_locus of each outgoing edge of each basic block.
18043 2018-06-28 Richard Biener <rguenther@suse.de>
18045 * dwarf2out.c (decl_scope_table): Remove.
18046 (push_decl_scope): Likewise.
18047 (pop_decl_scope): Likewise.
18048 (gen_type_die_for_member): Do not call push/pop_decl_scope.
18049 (gen_struct_or_union_type_die): Likewise.
18050 (gen_tagged_type_die): Likewise.
18051 (dwarf2out_init): Do not initialize decl_scope_table.
18052 (dwarf2out_c_finalize): Do not free it.
18054 2018-06-28 Richard Biener <rguenther@suse.de>
18056 * dwarf2out.c (gen_subprogram_die): Use is_unit_die when
18057 deciding whether to not re-use a DIE.
18059 2018-06-28 Richard Biener <rguenther@suse.de>
18061 * dwarf2out.c (gen_subprogram_die): Always re-use DIEs with an
18062 DW_AT_abstract_origin attribute.
18064 2018-06-28 Martin Liska <mliska@suse.cz>
18066 * tree-switch-conversion.c (jump_table_cluster::can_be_handled):
18067 Use newly introduced constants.
18068 * tree-switch-conversion.h (struct jump_table_cluster):
18069 Define max_ratio_for_size and max_ratio_for_speed.
18071 2018-06-28 Martin Liska <mliska@suse.cz>
18073 * tree-switch-conversion.c (jump_table_cluster::find_jump_tables):
18074 Add new checking assert to catch invalid state.
18075 (jump_table_cluster::can_be_handled): Handle single case
18077 (jump_table_cluster::is_beneficial): Bail out for such case.
18078 (bit_test_cluster::find_bit_tests):
18079 Add new checking assert to catch invalid state.
18080 (bit_test_cluster::can_be_handled): Handle single case
18082 (bit_test_cluster::is_beneficial): Bail out for such case.
18083 (switch_decision_tree::analyze_switch_statement):
18086 2018-06-28 Martin Liska <mliska@suse.cz>
18088 * common.opt: Introduce -completion option.
18089 * gcc.c (driver_handle_option): Handle it.
18090 (driver::main): Print completions if completion
18092 * opt-suggestions.c (option_proposer::get_completions):
18094 (option_proposer::suggest_completion): Likewise.
18095 (option_proposer::find_param_completions): Likewise.
18096 (verify_autocompletions): Likewise.
18097 (test_completion_valid_options): Likewise.
18098 (test_completion_valid_params): Likewise.
18099 (in_completion_p): Likewise.
18100 (empty_completion_p): Likewise.
18101 (test_completion_partial_match): Likewise.
18102 (test_completion_garbage): Likewise.
18103 (opt_proposer_c_tests): Likewise.
18104 * opt-suggestions.h: Declare new functions.
18105 * opts.c (common_handle_option): Handle OPT__completion_.
18106 * selftest-run-tests.c (selftest::run_tests): Add
18107 opt_proposer_c_tests.
18108 * selftest.c (assert_str_startswith): New.
18109 * selftest.h (assert_str_startswith): Likewise.
18110 (opt_proposer_c_tests): New.
18111 (ASSERT_STR_STARTSWITH): Likewise.
18113 2018-06-28 Martin Liska <mliska@suse.cz>
18115 * Makefile.in: Add opt-suggestions.o.
18116 * gcc-main.c: Include opt-suggestions.h.
18117 * gcc.c (driver::driver): Likewise.
18118 (driver::~driver): Remove m_option_suggestions.
18119 (driver::build_option_suggestions): Moved to option_proposer.
18120 (driver::suggest_option): Likewise.
18121 (driver::handle_unrecognized_options): Use option_proposer.
18122 * gcc.h (class driver): Add new memver m_option_proposer.
18123 * opt-suggestions.c: New file.
18124 * opt-suggestions.h: New file.
18126 2018-06-28 Martin Liska <mliska@suse.cz>
18128 * vec.h (class auto_string_vec): New (moved from auto_argvec).
18129 (auto_string_vec::~auto_string_vec): Likewise.
18131 2018-06-28 Eric Botcazou <ebotcazou@adacore.com>
18133 * tree-inline.h (struct copy_body_data): Move remapping_type_depth and
18134 prevent_decl_creation_for_types fields up and add reset_location field.
18135 * tree-inline.c (remap_gimple_stmt): Force input_location on the new
18136 statement if id->reset_location is true.
18137 (copy_edges_for_bb): Do not set goto_locus on the new edges if
18138 id->reset_location is true.
18139 (copy_phis_for_bb): Force input_location on the arguments if
18140 id->reset_location is true.
18141 (expand_call_inline): Set id->reset_location if DECL_IGNORED_P
18142 is set on the function to be inlined.
18144 2018-06-27 Stephan Bergmann <sbergman@redhat.com>
18146 * doc/invoke.texi (Debugging Options): Add -gsplit-dwarf.
18148 2018-06-27 Dimitar Dimitrov <dimitar@dinux.eu>
18150 * lra-eliminations.c (update_reg_eliminate): Mark all spanning hard
18151 registers for Pmode.
18152 * lra-lives.c (check_pseudos_live_through_calls): Mark all spanning
18153 hard registers for the clobbered pseudo.
18155 2018-06-27 Paul Koning <ni1d@arrl.net>
18157 * common/config/pdp11/pdp11-common.c (pdp11_handle_option): Handle
18158 mutually exclusive options.
18159 * config/pdp11/constraints.md (h): New constraint.
18160 (O): Update definition to match shift code generation.
18161 (D): New constraint.
18162 * config/pdp11/pdp11-modes.def (CCNZ): Define mode.
18164 * config/pdp11/pdp11-protos.h (int_no_side_effect_operand): New
18166 (output_jump): Change arguments.
18167 (pdp11_fixed_cc_regs): New function.
18168 (pdp11_cc_mode): Ditto.
18169 (pdp11_expand_shift): Ditto.
18170 (pdp11_assemble_shift): Ditto.
18171 (pdp11_small_shift): Ditto.
18172 (pdp11_branch_cost): Remove.
18173 * config/pdp11/pdp11.c (pdp11_assemble_integer): Remove comments
18175 (pdp11_register_move_cost): Update for CC registers.
18176 (pdp11_rtx_costs): Add case for LSHIFTRT.
18177 (pdp11_output_jump): Add CCNZ mode conditional branches.
18178 (notice_update_cc_on_set): Remove.
18179 (pdp11_cc_mode): New function.
18180 (simple_memory_operand): Correct pre/post decrement case.
18181 (no_side_effect_operand): New function.
18182 (pdp11_regno_reg_class): Add CC_REGS class.
18183 (pdp11_fixed_cc_regs): New function.
18184 (pdp11_small_shift): New function.
18185 (pdp11_expand_shift): New function to expand shift insns.
18186 (pdp11_assemble_shift): New function to output shifts.
18187 (pdp11_branch_cost): Remove.
18188 (pdp11_modes_tieable_p): Make QI/HI modes tieable.
18189 * config/pdp11/pdp11.h (SIZE_TYPE): Ensure 16-bit type.
18190 (WCHAR_TYPE): Ditto.
18191 (PTRDIFF_TYPE): Ditto.
18192 (ADJUST_INSN_LENGTH): New macro.
18193 (FIXED_REGISTERS): Add CC registers.
18194 (CALL_USED_REGISTERS): Ditto.
18195 (reg_class): Ditto.
18196 (REG_CLASS_NAMES): Ditto.
18197 (REG_CLASS_CONTENTS): Ditto.
18198 (SELECT_CC_MODE): Use new function.
18199 (TARGET_FLAGS_REGNUM): New macro.
18200 (TARGET_FIXED_CONDITION_CODE_REGS): Ditto.
18201 (cc0_reg_rtx): Remove.
18202 (CC_STATUS_MDEP): Remove.
18203 (CC_STATUS_MDEFP_INIT): Remove.
18204 (CC_IN_FPU): Remove.
18205 (NOTICE_UPDATE_CC): Remove.
18206 (REGISTER_NAMES): Add CC registers.
18207 (BRANCH_COST): Change to constant 1.
18208 * config/pdp11/pdp11.md: Rewrite for CCmode condition code
18210 * config/pdp11/pdp11.opt (mbcopy): Remove.
18211 (mbcopy-builtin): Remove.
18212 (mbranch-cheap): Remove.
18213 (mbranch-expensive): Remove.
18214 * config/pdp11/predicates.md (expand_shift_operand): Update to
18215 match shift code generation.
18216 (ccnz_operator): New predicate.
18217 * doc/invoke.texi (PDP-11 Options): Remove deleted options
18218 -mbcopy, -mbcopy-builtin, -mbranch-cheap, -mbranch-expensive.
18219 Remove non-existent option -mabshi, -mno-abshi. Document mutually
18221 * doc/md.texi (PDP-11): Document new D and h constraints. Update
18222 description of O constraint.
18224 2018-06-27 Jeff Law <law@redhat.com>
18225 Austin Law <austinklaw@gmail.com>
18227 * config/v850/v850.md (addsi3_set_flags): New pattern.
18228 (subsi3_set_flags, negsi2_set_flags, andsi3_set_flags): Likewise.
18229 (iorsi3_set_flags, xorsi3_set_flags, one_cmplsi2_set_flags): Likewise.
18230 (zero_extendhisi2_v850_set_flags): Likewise.
18231 (zero_extendqisi2_v850_set_flags): Likewise.
18232 (ashlsi3_set_flags, ashlsi3_v850e2_set_flags): Likewise.
18233 (lshrsi3_set_flags, lshrsi3_v850e2_set_flags): Likewise.
18234 (ashrsi3_set_flags, ashrsi3_v850e2_set_flags): Likewise.
18236 * config/v850/v850-protos.h (notice_update_cc): Remove.
18237 * config/v850/v850.c (v850_compare_op0, v850_compare_op1): Remove.
18238 (v850_print_operand): Handle 'D' and "d".
18239 (v850_select_cc_mode): Remove ATTRIBUTE_UNUSED for last argument.
18240 Add handling of arithmetic/logical operations compared against zero.
18241 (v850_gen_float_compare): Remove ATTRIBUTE_UNUSED for last argument.
18242 Do not look at v850_compare_op, instead get mode from last argument.
18243 (v850_gen_compare): Remove
18244 (increment_stack): Use addsi3_clobber_flags to avoid splitting failure
18245 after reload for prologue insns.
18246 (expand_prologue): Account for CLOBBER of CC_REGNUM in various
18248 (construct_save_jarl): Likewise.
18249 (TARGET_FLAGS_REGNUM): Define.
18250 * config/v850/v850.h (v850_compare_op0, v850_compare_op1): Remove.
18251 (NOTICE_UPDATE_CC): Remove.
18252 * config/v850/v850.md (v850_tst1): Use (reg:CCZ CC_REGNUM) rather
18253 than cc0. Conditionalize on reload_completed.
18254 (cmpsi_insn, setfcc_insn): Likewise.
18255 (tst1 splitter): Turn into define_and_split which sets the flags
18257 (cstoresi4, cbranchsf4, cbranchdf4, cbranchsi4_insn): Likewise.
18258 (cbranchsi4, branch_normal, branch_invert): Do not expose cc0 here.
18259 (cstoresf4, cstoredf4): Clobber the flags.
18260 (cmpsi, cmpsf, cmpdf): Remove expanders.
18261 (setf_insn): Remove pattern.
18262 (addsi3): Turn into define_and_split which clobbers the flags after
18263 reload and a suitable pattern (addsi3_clobber_flags) for use after
18265 (subsi3, negsi2, andsi3, iorsi3, xorsi3, one_cmplsi2) Likewise.
18266 (ashlsi3, ashlsi3_v850e2, lshrsi3, lsh4si3_v850e2): Likewise.
18267 (ashrsi3, ashrsi3_v850e2): Likewise.
18268 (bins): Clobber the flags.
18269 (movsicc_normal_cc, movsicc_normal, movsicc_tst1): Likewise.
18270 (movsicc_tst1_revesed, sasf, swap and rotate patterns): Likewise.
18271 (fix_loop_counter, call_internal_short, call_internal_long): Likewise.
18272 (call_value_internal_short, call_value_internal_long): Likewise.
18273 (callt_save_interrupt, callt_return_interrupt): Likewise.
18274 (save_interrupt, return_interrupt): Likewise.
18275 (callt_save_all_interrupt, save_all_interrupt): Likewise.
18276 (_save_all_interrupt, callt_restore_all_interrupt): Likewise.
18277 (restore_all_interrupt, _restore_all_interrupt): Likewise.
18278 (All FP comparisons): Only allow after reload has completed.
18280 (divh, divhu): Tweak output template.
18281 (branch_z_normal, branch_z_invert): Remove
18282 (branch_nz_normal, branch_nz_invert): Likewise.
18283 (extendhisi_insn, extendqisi_insn): Do not clobber flags.
18285 * config/v850/v850-modes.def (CCZ, CCNZ): Add new modes.
18286 * config/v850/v850.c (notice_update_cc): Remove.
18287 * config/v850/v850.h (CC_OVERFLOW_UNUSABLE): Remove
18288 (CC_NO_CARRY): Likewise.
18289 (NOTICE_UPDATE_CC): Define to nothing.
18290 * config/v850/v850.md: Remove block comment on cc0 handling
18291 Remove "cc" attribute from all patterns. Remove cc_status handling
18292 from all patterns. Minor formatting fixes.
18294 2018-06-27 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
18296 * config/aarch64/aarch64-cores.def (cortex-a76): New entry.
18297 (cortex-a76.cortex-a55): Likewise.
18298 * config/aarch64/aarch64-tune.md: Regenerate.
18299 * doc/invoke.texi (AArch64 Options): Document cortex-a76 and
18300 cortex-a76.cortex-a55.
18302 2018-06-27 Jeff Law <law@redhat.com>
18304 * config/v850/t-v850 (MULTILIB_OPTIONS): Remove 8byte-align.
18305 (MULTILIB_DIRNAMES): Similarly.
18307 2018-06-27 Eric Botcazou <ebotcazou@adacore.com>
18309 * gimple.h (gimple_return_retbnd): Delete.
18310 (gimple_return_set_retbnd): Likewise.
18311 * cgraphunit.c (cgraph_node::expand_thunk): Remove call to
18312 gimple_return_set_retbnd.
18313 * gimple-pretty-print.c (dump_gimple_return): Remove call to
18314 gimple_return_retbnd and adjust.
18315 * tree-inline.h (struct copy_body_data): Remove retbnd field.
18316 * tree-inline.c (remap_gimple_stmt): Remove handling of retbnd.
18317 Explicitly return NULL in a couple more cases. Move assertion
18318 on debug statements and remove unreachable code.
18319 (reset_debug_binding): Do not test id->retbnd.
18320 (expand_call_inline): Do not set it.
18322 2018-06-27 Rasmus Villemoes <rv@rasmusvillemoes.dk>
18324 * configure.ac: Add --disable-gcov option.
18325 * configure: Regenerate.
18326 * Makefile.in: Honour @enable_gcov@.
18327 * doc/install.texi: Document --disable-gcov.
18329 2018-06-27 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
18331 * config/arm/arm-cpus.in (cortex-a76): New entry.
18332 (cortex-a76.cortex-a55): Likewise.
18333 * config/arm/arm-tables.opt: Regenerate.
18334 * config/arm/arm-tune.md: Likewise.
18335 * config/arm/driver-arm.c (arm_cpu_table): Add Cortex-A76 entry.
18336 * doc/invoke.texi (ARM Options): Document cortex-a76 and
18337 cortex-a76.cortex-a55.
18339 2018-06-27 Tamar Christina <tamar.christina@arm.com>
18342 * config/aarch64/aarch64.md (*movhf_aarch64): Add dup v0.4h pattern.
18344 2018-06-27 Siddhesh Poyarekar <siddhesh@sourceware.org>
18346 * config/aarch64/aarch64.h (CALL_USE_REGISTERS): Fix obsolete
18348 (EPILOGUE_USES): Likewise.
18350 2018-06-26 Eric Botcazou <ebotcazou@adacore.com>
18352 * tree-inline.c (remap_location): New function extracted from...
18353 (copy_edges_for_bb): Add ID parameter. Remap goto_locus.
18354 (copy_phis_for_bb): ...here. Call remap_location.
18355 (copy_cfg_body): Adjust call to copy_edges_for_bb.
18357 2018-06-26 Aaron Sawdey <acsawdey@linux.ibm.com>
18359 * config/rs6000/rs6000-string.c (expand_block_clear): Don't use
18360 unaligned vsx for 16B memset.
18362 2018-06-26 Segher Boessenkool <segher@kernel.crashing.org>
18365 * config/rs6000/rs6000.c (rs6000_init_builtins): Do not set
18366 ieee128_float_type_node to long_double_type_node unless
18367 TARGET_LONG_DOUBLE_128 is set.
18369 2018-06-26 David Malcolm <dmalcolm@redhat.com>
18371 * cfgloop.c (get_loop_location): Convert return type from
18372 location_t to dump_user_location_t, replacing INSN_LOCATION lookups
18373 by implicit construction from rtx_insn *, and using
18374 dump_user_location_t::from_function_decl for the fallback case.
18375 * cfgloop.h (get_loop_location): Convert return type from
18376 location_t to dump_user_location_t.
18377 * cgraphunit.c (walk_polymorphic_call_targets): Update call to
18378 dump_printf_loc to pass in a dump_location_t rather than a
18379 location_t, via the gimple stmt.
18380 * coverage.c (get_coverage_counts): Update calls to
18381 dump_printf_loc to pass in dump_location_t rather than a
18383 * doc/optinfo.texi (Dump types): Convert example of
18384 dump_printf_loc from taking "locus" to taking "insn". Update
18385 description of the "_loc" calls to cover dump_location_t.
18386 * dumpfile.c: Include "backend.h", "gimple.h", "rtl.h", and
18388 (dump_user_location_t::dump_user_location_t): New constructors,
18389 from gimple *stmt and rtx_insn *.
18390 (dump_user_location_t::from_function_decl): New function.
18391 (dump_loc): Make static.
18392 (dump_gimple_stmt_loc): Convert param "loc" from location_t to
18393 const dump_location_t &.
18394 (dump_generic_expr_loc): Delete.
18395 (dump_printf_loc): Convert param "loc" from location_t to
18396 const dump_location_t &.
18397 (selftest::test_impl_location): New function.
18398 (selftest::dumpfile_c_tests): New function.
18399 * dumpfile.h: Include "profile-count.h".
18400 (class dump_user_location_t): New class.
18401 (struct dump_impl_location_t): New struct.
18402 (class dump_location_t): New class.
18403 (dump_printf_loc): Convert 2nd param from source_location to
18404 const dump_location_t &.
18405 (dump_generic_expr_loc): Delete.
18406 (dump_gimple_stmt_loc): Convert 2nd param from source_location to
18407 const dump_location_t &.
18408 * gimple-fold.c (fold_gimple_assign): Update call to
18409 dump_printf_loc to pass in a dump_location_t rather than a
18410 location_t, via the gimple stmt.
18411 (gimple_fold_call): Likewise.
18412 * gimple-loop-interchange.cc
18413 (loop_cand::analyze_iloop_reduction_var): Update for change to
18414 check_reduction_path.
18415 (tree_loop_interchange::interchange): Update for change to
18416 find_loop_location.
18417 * graphite-isl-ast-to-gimple.c (scop_to_isl_ast): Update for
18418 change in return-type of find_loop_location.
18419 (graphite_regenerate_ast_isl): Likewise.
18420 * graphite-optimize-isl.c (optimize_isl): Likewise.
18421 * graphite.c (graphite_transform_loops): Likewise.
18422 * ipa-devirt.c (ipa_devirt): Update call to dump_printf_loc to
18423 pass in a dump_location_t rather than a location_t, via the
18425 * ipa-prop.c (ipa_make_edge_direct_to_target): Likewise.
18426 * ipa.c (walk_polymorphic_call_targets): Likewise.
18427 * loop-unroll.c (report_unroll): Convert "locus" param from
18428 location_t to dump_location_t.
18429 (decide_unrolling): Update for change to get_loop_location's
18431 * omp-grid.c (struct grid_prop): Convert field "target_loc" from
18432 location_t to dump_user_location_t.
18433 (grid_find_single_omp_among_assignments_1): Updates calls to
18434 dump_printf_loc to pass in a dump_location_t rather than a
18435 location_t, via the gimple stmt.
18436 (grid_parallel_clauses_gridifiable): Convert "tloc" from
18437 location_t to dump_location_t. Updates calls to dump_printf_loc
18438 to pass in a dump_location_t rather than a location_t, via the
18440 (grid_inner_loop_gridifiable_p): Likewise.
18441 (grid_dist_follows_simple_pattern): Likewise.
18442 (grid_gfor_follows_tiling_pattern): Likewise.
18443 (grid_target_follows_gridifiable_pattern): Likewise.
18444 (grid_attempt_target_gridification): Convert initialization
18445 of local "grid" from memset to zero-initialization; FIXME: does
18446 this require C++11? Update call to dump_printf_loc to pass in a
18447 optinfo_location rather than a location_t, via the gimple stmt.
18448 * profile.c (read_profile_edge_counts): Updates call to
18449 dump_printf_loc to pass in a dump_location_t rather than a
18451 (compute_branch_probabilities): Likewise.
18452 * selftest-run-tests.c (selftest::run_tests): Call
18454 * selftest.h (dumpfile_c_tests): New decl.
18455 * tree-loop-distribution.c (pass_loop_distribution::execute):
18456 Update for change in return type of find_loop_location.
18457 * tree-parloops.c (parallelize_loops): Likewise.
18458 * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Convert
18459 "locus" from location_t to dump_user_location_t.
18460 (canonicalize_loop_induction_variables): Likewise.
18461 * tree-ssa-loop-ivopts.c (tree_ssa_iv_optimize_loop): Update
18462 for change in return type of find_loop_location.
18463 * tree-ssa-loop-niter.c (number_of_iterations_exit): Update call
18464 to dump_printf_loc to pass in a dump_location_t rather than a
18465 location_t, via the stmt.
18466 * tree-ssa-sccvn.c (eliminate_dom_walker::before_dom_children):
18468 * tree-vect-loop-manip.c (find_loop_location): Convert return
18469 type from source_location to dump_user_location_t.
18470 (vect_do_peeling): Update for above change.
18471 (vect_loop_versioning): Update for change in type of
18473 * tree-vect-loop.c (check_reduction_path): Convert "loc" param
18474 from location_t to dump_user_location_t.
18475 (vect_estimate_min_profitable_iters): Update for change in type
18477 * tree-vect-slp.c (vect_print_slp_tree): Convert param "loc" from
18478 location_t to dump_location_t.
18479 (vect_slp_bb): Update for change in type of vect_location.
18480 * tree-vectorizer.c (vect_location): Convert from source_location
18481 to dump_user_location_t.
18482 (try_vectorize_loop_1): Update for change in vect_location's type.
18483 (vectorize_loops): Likewise.
18484 (increase_alignment): Likewise.
18485 * tree-vectorizer.h (vect_location): Convert from source_location
18486 to dump_user_location_t.
18487 (find_loop_location): Convert return type from source_location to
18488 dump_user_location_t.
18489 (check_reduction_path): Convert 1st param from location_t to
18490 dump_user_location_t.
18491 * value-prof.c (check_counter): Update call to dump_printf_loc to
18492 pass in a dump_user_location_t rather than a location_t; update
18493 call to error_at for change in type of "locus".
18494 (check_ic_target): Update call to dump_printf_loc to
18495 pass in a dump_user_location_t rather than a location_t, via the
18498 2018-06-26 Robin Dapp <rdapp@linux.vnet.ibm.com>
18500 * config/s390/s390.h (enum processor_flags): Do not use
18501 default tune parameter when -march was specified.
18503 2018-06-26 Jakub Jelinek <jakub@redhat.com>
18506 * config/i386/i386.md (setcc + movzbl to xor + setcc peephole2s):
18507 Check reg_overlap_mentioned_p in addition to reg_set_p with the same
18510 2018-06-26 Richard Biener <rguenther@suse.de>
18512 PR tree-optimization/86287
18514 * tree-vect-loop.c (vect_transform_loop_stmt): Fix read-after-free.
18515 (vect_analyze_loop): Initialize n_stmts.
18517 2018-06-26 Richard Biener <rguenther@suse.de>
18519 PR middle-end/86271
18520 * fold-const.c (fold_convertible_p): Pointer extension
18523 2018-06-26 Alexandre Oliva <aoliva@redhat.com>
18526 * dwarf2out.c (loc_list_has_views): Adjust comments.
18527 (dw_loc_list): Split single cross-partition range with
18530 2018-06-25 Jeff Law <law@redhat.com>
18532 * common/config/v850/v850-common.c (TARGET_DEFAULT_TARGET_FLAGS): Turn
18533 on -mbig-switch by default.
18535 * config/v850/predicates.md (const_float_1_operand): Fix match_code
18537 (const_float_0_operand): Remove unused predicate.
18538 * config/v850/v850.md (define_constants): Remove UNSPEC_LOOP.
18539 (define_c_enum unspec): Add LOOP, RCP and RSQRT constants.
18540 (recipsf2): New expander. Original pattern now called
18542 (recipdf2, recipdf2_insn): Similarly.
18543 (rsqrtsf2, rsqrtsf2_insn): Similarly
18544 (rsqrtdf2, rsqrtdf2_insn): Similarly
18546 2018-06-26 Gerald Pfeifer <gerald@pfeifer.com>
18548 * ginclude/stddef.h: Remove an obsolete comment on FreeBSD 5.
18549 Simplify logic for FreeBSD (twice).
18551 2018-06-25 Martin Sebor <msebor@redhat.com>
18553 PR tree-optimization/86204
18554 * tree-ssa-strlen.c (handle_builtin_strlen): Avoid storing
18555 a strnlen result if it's less than the length of the string.
18557 2018-06-25 Martin Sebor <msebor@redhat.com>
18559 PR tree-optimization/85700
18560 * gimple-fold.c (gimple_fold_builtin_strncat): Adjust comment.
18561 * tree-ssa-strlen.c (is_strlen_related_p): Handle integer subtraction.
18562 (maybe_diag_stxncpy_trunc): Distinguish strncat from strncpy.
18564 2018-06-25 Martin Sebor <msebor@redhat.com>
18566 * doc/extend.texi (Zero-length arrays): Update and clarify.
18568 2018-06-25 Michael Meissner <meissner@linux.ibm.com>
18570 * config.gcc (powerpc64le*): Revert January 16th, 2018 patch that
18571 added IEEE/IBM long double multilib support on PowerPC little
18572 endian Linux systems.
18573 * config/rs6000/linux64.h (MULTILIB_DEFAULTS_IEEE): Likewise.
18574 (MULTILIB_DEFAULTS): Likewise.
18575 * config/rs6000/rs6000.c (rs6000_option_override_internal):
18577 * config/rs6000/rs6000.h (TARGET_IEEEQUAD_MULTILIB): Likewise.
18578 * config/rs6000/t-ldouble-linux64le-ibm: Delete, no longer used.
18579 * config/rs6000/t-ldouble-linux64le-ieee: Delete, no longer used.
18581 2018-06-25 Alexander Monakov <amonakov@ispras.ru>
18583 PR middle-end/86311
18584 * sort.cc (REORDER_23): Avoid memcpy with same destination and source.
18585 (REORDER_45): Likewise.
18587 2018-06-25 Jeff Law <law@redhat.com>
18589 * config/v850/v850.md (divmodhi4): Make sure to sign extend the
18590 dividend to 32 bits. Adjust length.
18591 (udivmodhi4): Cleanup output template. Fix length.
18593 2018-06-25 Carl Love <cel@us.ibm.com>
18595 * config/rs6000/vsx.md: Change word selector to prefered location.
18597 2018-06-25 Richard Biener <rguenther@suse.de>
18599 PR tree-optimization/86304
18600 * tree-vectorizer.c (vectorize_loops): Walk over new possibly
18601 epilogue-if-converted loops as well.
18603 2018-06-25 Jan Hubicka <hubicka@ucw.cz>
18605 * lto-section-out.c (lto_begin_section): Do not print section
18606 name for noaddr and unnumbered dumps.
18608 2018-06-25 Richard Biener <rguenther@suse.de>
18610 * tree-vectorizer.h (struct vec_info_shared): New structure
18611 with parts split out from struct vec_info and loop_nest from
18612 struct _loop_vec_info.
18613 (struct vec_info): Adjust accordingly.
18614 (struct _loop_vec_info): Likewise.
18615 (LOOP_VINFO_LOOP_NEST): Adjust.
18616 (LOOP_VINFO_DATAREFS): Likewise.
18617 (LOOP_VINFO_DDRS): Likewise.
18618 (struct _bb_vec_info): Likewise.
18619 (BB_VINFO_DATAREFS): Likewise.
18620 (BB_VINFO_DDRS): Likewise.
18621 (struct _stmt_vec_info): Add dr_aux member.
18622 (DR_VECT_AUX): Adjust to refer to member of DR_STMTs vinfo.
18623 (DR_MISALIGNMENT_UNINITIALIZED): New.
18624 (set_dr_misalignment): Adjust.
18625 (dr_misalignment): Assert misalign isn't DR_MISALIGNMENT_UNINITIALIZED.
18626 (vect_analyze_loop): Adjust prototype.
18627 (vect_analyze_loop_form): Likewise.
18628 * tree-vect-data-refs.c (vect_analyze_data_ref_dependences):
18629 Compute dependences lazily.
18630 (vect_record_base_alignments): Use shared datarefs/ddrs.
18631 (vect_verify_datarefs_alignment): Likewise.
18632 (vect_analyze_data_refs_alignment): Likewise.
18633 (vect_analyze_data_ref_accesses): Likewise.
18634 (vect_analyze_data_refs): Likewise.
18635 * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Add
18636 constructor parameter for shared part.
18637 (vect_analyze_loop_form): Pass in shared part and adjust.
18638 (vect_analyze_loop_2): Pass in storage for the number of
18639 stmts. Move loop nest finding to the caller. Compute
18641 (vect_analyze_loop): Pass in shared part.
18642 (vect_transform_loop): Verify shared datarefs are unchanged.
18643 * tree-vect-slp.c (_bb_vec_info::_bb_vec_info): Add
18644 constructor parameter for shared part.
18645 (vect_slp_analyze_bb_1): Pass in shared part and adjust.
18646 (vect_slp_bb): Verify shared datarefs are unchanged before
18648 * tree-vect-stmts.c (ensure_base_align): Adjust for DR_AUX
18650 (new_stmt_vec_info): Initialize DR_AUX misalignment to
18651 DR_MISALIGNMENT_UNINITIALIZED.
18652 * tree-vectorizer.c (vec_info::vec_info): Add constructor
18653 parameter for shared part.
18654 (vec_info::~vec_info): Adjust.
18655 (vec_info_shared::vec_info_shared): New.
18656 (vec_info_shared::~vec_info_shared): Likewise.
18657 (vec_info_shared::save_datarefs): Likewise.
18658 (vec_info_shared::check_datarefs): Likewise.
18659 (try_vectorize_loop_1): Construct shared part live for analyses
18660 of a single loop for multiple vector sizes.
18661 * tree-parloops.c (gather_scalar_reductions): Adjust.
18663 2018-06-25 Richard Biener <rguenther@suse.de>
18665 * tree-vect-data-refs.c (vect_find_stmt_data_reference): Modify
18666 DR for SIMD lane accesses here and mark DR with (void *)-1 aux.
18667 (vect_analyze_data_refs): Remove similar code from here and
18668 simplify accordingly.
18670 2018-06-25 Richard Biener <rguenther@suse.de>
18672 * tree-vect-data-refs.c (vect_check_gather_scatter): Fail
18673 for reverse storage order accesses rather than asserting
18674 they cannot happen here.
18676 2018-06-25 Tom de Vries <tdevries@suse.de>
18679 * config/i386/i386.md (define_insn "*tls_global_dynamic_64_<mode>"):
18680 Use data16 instead of .byte for insn prefix.
18682 2018-06-25 Andreas Krebbel <krebbel@linux.ibm.com>
18685 * parser.c (make_char_string_pack): Pass this literal chars
18686 through cpp_interpret_string.
18687 (cp_parser_userdef_numeric_literal): Check the result of
18688 make_char_string_pack.
18690 2018-06-24 Maya Rashish <coypu@sdf.org>
18692 * ginclude/stddef.h: Simplify conditions around avoiding
18693 re-definition of __size_t.
18695 2018-06-22 Jan Hubicka <hubicka@ucw.cz>
18697 * lto-streamer-out.c (tree_is_indexable): Make LABEL_DECL nonindexable
18698 unless it is forced or nonlocal; assert that we stream no IMPORTED_DECL.
18700 2018-06-22 Maya Rashish <coypu@sdf.org>
18702 * doc/invoke.texi (mno-fancy-math-387): Update for changes
18703 made to OpenBSD and NetBSD through the years.
18705 2018-06-22 Kelvin Nilsen <kelvin@gcc.gnu.org>
18707 * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Change
18708 behavior of vec_pack (vector double, vector double) to match
18709 behavior of vec_float2 (vector double, vector double).
18711 2018-06-22 Olivier Hainque <hainque@adacore.com>
18713 * gimplify.c (gimplify_function_tree): Prevent creation
18714 of a trampoline for the address of the current function
18715 passed to entry/exit instrumentation hooks.
18717 2018-06-22 Aaron Sawdey <acsawdey@linux.ibm.com>
18720 * config/rs6000/rs6000-string.c (expand_strn_compare): Handle -m32
18723 2018-06-22 Martin Liska <mliska@suse.cz>
18725 PR tree-optimization/86263
18726 * tree-switch-conversion.c (jump_table_cluster::find_jump_tables):
18727 Bail out if is_enabled is false.
18728 * tree-switch-conversion.h (jump_table_cluster::is_enabled):
18730 (jump_table_cluster::is_enabled): New function.
18732 2018-06-22 Jan Hubicka <hubicka@ucw.cz>
18734 * lto-streamer-out.c (DFS::DFS_write_tree_body): Do not stream
18735 BINFO_BASE_ACCESSES and BINFO_VPTR_FIELD.
18736 * tree-streamer-in.c (streamer_read_tree_bitfields): Likewise.
18737 (lto_input_ts_binfo_tree_pointers): Likewise.
18738 * tree-streamer-out.c (streamer_write_tree_bitfields,
18739 write_ts_binfo_tree_pointers): Likewise.
18740 * tree.c (free_lang_data_in_binfo): Clear BINFO_VPTR_FIELD.
18742 2018-06-22 Jan Hubicka <hubicka@ucw.cz>
18744 * tree.c (free_lang_data_in_type): Free all TYPE_VFIELDs.
18746 2018-06-22 Martin Liska <mliska@suse.cz>
18748 * symbol-summary.h (get): Make it pure and inline move
18749 functionality from ::get function.
18750 (get): Remove and inline into ::get and ::get_create.
18751 (get_create): Move code from ::get function.
18753 2018-06-22 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
18756 * config/i386/sol2.h (CPP_SPEC): Don't pass -P for
18757 -x assembler-with-cpp.
18759 2018-06-22 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
18761 * config/sol2.h (TARGET_OS_CPP_BUILTINS): Define
18762 _FILE_OFFSET_BITS=64 for C++.
18764 2018-06-21 Michael Meissner <meissner@linux.ibm.com>
18766 * config/rs6000/rs6000.md (extendtfif2): Add missing 128-bit
18767 conversion insn that shows up when pr85657-3.c is compiled using
18768 IEEE 128-bit long double.
18769 (neg<mode>2_internal): Use the correct mode to check whether the
18770 mode is IBM extended.
18771 * config/rs6000/rs6000.c (init_float128_ieee): Prevent complex
18772 multiply and divide external functions from being created more
18775 2018-06-21 Eric Botcazou <ebotcazou@adacore.com>
18777 * cfgrtl.c (fixup_reorder_chain): Do not emit NOPs in DECL_IGNORED_P
18779 (rtl_merge_blocks): Likewise. Do not emit a NOP if the location of
18780 the edge can be forwarded.
18781 (cfg_layout_merge_blocks): Likewise.
18783 2018-06-21 Eric Botcazou <ebotcazou@adacore.com>
18785 * except.c (finish_eh_generation): Commit edge insertions only after
18786 the EH edges have been redirected from post-landing to landing pads.
18788 2018-06-21 Eric Botcazou <ebotcazou@adacore.com>
18790 * tree-nested.c (get_frame_type): Use create_tmp_var_raw instead of
18791 create_tmp_var_for to create the FRAME decl.
18792 (finalize_nesting_tree_1): Do not unchain the FRAME decl.
18794 2018-06-21 Eric Botcazou <ebotcazou@adacore.com>
18796 * tree-inline.c (copy_edges_for_bb): Minor tweak.
18797 (maybe_move_debug_stmts_to_successors): Also reset the locus of the
18798 debug statement when resetting its value.
18799 (expand_call_inline): Copy the locus of the call onto the assignment
18800 of the return value, if any. Use local variable in more cases.
18802 2018-06-21 Martin Liska <mliska@suse.cz>
18804 * ipa-pure-const.c (propagate_nothrow): Use
18805 funct_state_summaries->get.
18806 (dump_malloc_lattice): Likewise.
18807 (propagate_malloc): Likewise.
18809 2018-06-21 Richard Biener <rguenther@suse.de>
18811 * lto-streamer-out.c (DFS::DFS_write_tree_body): Update outdated
18812 comment. Follow BLOCK_ABSTRACT_ORIGIN unconditionally.
18813 * tree-streamer-in.c (lto_input_ts_block_tree_pointers): Update
18815 * tree-streamer-out.c (write_ts_block_tree_pointers): Stream
18816 BLOCK_ABSTRACT_ORIGIN unconditionally.
18818 2018-06-21 David Malcolm <dmalcolm@redhat.com>
18820 * ipa-cp.c (ipcp_driver): Set edge_clone_summaries to NULL after
18822 * ipa-reference.c (ipa_reference_c_finalize): Delete
18823 ipa_ref_opt_sum_summaries and set it to NULL.
18825 2018-06-21 Tom de Vries <tdevries@suse.de>
18827 PR tree-optimization/85859
18828 * tree-ssa-tail-merge.c (stmt_local_def): Copy gimple_is_call
18829 test with comment from bb_no_side_effects_p.
18831 2018-06-21 Richard Biener <rguenther@suse.de>
18833 PR tree-optimization/86232
18834 * tree-ssa-loop-niter.c (number_of_iterations_popcount): Adjust
18835 max for constant niter.
18837 2018-06-21 Andre Vieira <andre.simoesdiasvieira@arm.com>
18839 * config/aarch64/aarch64-simd.md
18840 (*aarch64_crypto_aes<aes_op>v16qi_xor_combine): New.
18842 2018-06-21 Andre Vieira <andre.simoesdiasvieira@arm.com>
18844 * config/aarch64/aarch64-simd.md (aarch64_crypto_aes<aes_op>v16qi):
18845 Make opernads of the unspec commutative.
18847 2018-06-21 Richard Biener <rguenther@suse.de>
18849 * tree-data-ref.c (dr_step_indicator): Handle NULL DR_STEP.
18850 * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr):
18851 Avoid calling vect_mark_for_runtime_alias_test with gathers or scatters.
18852 (vect_analyze_data_ref_dependence): Re-order checks to deal with
18854 (vect_record_base_alignments): Do not record base alignment
18855 for gathers or scatters.
18856 (vect_compute_data_ref_alignment): Drop return value that is always
18857 true. Bail out early for gathers or scatters.
18858 (vect_enhance_data_refs_alignment): Bail out early for gathers
18860 (vect_find_same_alignment_drs): Likewise.
18861 (vect_analyze_data_refs_alignment): Remove dead code.
18862 (vect_slp_analyze_and_verify_node_alignment): Likewise.
18863 (vect_analyze_data_refs): For possible gathers or scatters do
18864 not create an alternate DR, just check their possible validity
18865 and mark them. Adjust DECL_NONALIASED handling to not rely
18866 on DR_BASE_ADDRESS.
18867 * tree-vect-loop-manip.c (vect_update_inits_of_drs): Do not
18868 update inits of gathers or scatters.
18869 * tree-vect-patterns.c (vect_recog_mask_conversion_pattern):
18870 Also copy gather/scatter flag to pattern vinfo.
18872 2018-06-20 Kelvin Nilsen <kelvin@gcc.gnu.org>
18874 * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Change
18875 behavior of vec_packsu (vector unsigned long long, vector unsigned
18876 long long) to match behavior of vec_packs with same signature.
18878 2018-06-20 Chung-Lin Tang <cltang@codesourcery.com>
18879 Thomas Schwinge <thomas@codesourcery.com>
18880 Cesar Philippidis <cesar@codesourcery.com>
18882 * gimplify.c (gimplify_scan_omp_clauses): Add support for
18883 OMP_CLAUSE_{IF_PRESENT,FINALIZE}.
18884 (gimplify_adjust_omp_clauses): Likewise.
18885 (gimplify_oacc_declare_1): Add support for GOMP_MAP_RELEASE, remove
18886 support for GOMP_MAP_FORCE_{ALLOC,TO,FROM,TOFROM}.
18887 (gimplify_omp_target_update): Update handling of acc update and
18889 * omp-low.c (install_var_field): Remove unused parameter
18890 base_pointers_restrict.
18891 (scan_sharing_clauses): Remove base_pointers_restrict parameter.
18892 Update call to install_var_field. Handle OMP_CLAUSE_{IF_PRESENT,
18894 (omp_target_base_pointers_restrict_p): Delete.
18895 (scan_omp_target): Update call to scan_sharing_clauses.
18896 * tree-core.h (enum omp_clause_code): Add OMP_CLAUSE_{IF_PRESENT,
18898 * tree-nested.c (convert_nonlocal_omp_clauses): Handle
18899 OMP_CLAUSE_{IF_PRESENT,FINALIZE}.
18900 (convert_local_omp_clauses): Likewise.
18901 * tree-pretty-print.c (dump_omp_clause): Likewise.
18902 * tree.c (omp_clause_num_ops): Add entries for OMP_CLAUSE_{IF_PRESENT,
18904 (omp_clause_code_name): Likewise.
18906 2018-06-20 Jakub Jelinek <jakub@redhat.com>
18909 * var-tracking.c (use_narrower_mode_test): Check if shift amount can
18912 PR tree-optimization/86231
18913 * tree-vrp.c (union_ranges): For ( [ ) ] or ( )[ ] range and
18914 anti-range don't overwrite *vr0min before using it to compute *vr0max.
18916 2018-06-20 Tom de Vries <tdevries@suse.de>
18918 PR tree-optimization/86097
18919 * tree-ssa-loop-manip.c (canonicalize_loop_ivs): Also convert *nit to
18920 iv type if signedness of iv type is not the same as that of *nit.
18922 2018-06-20 Jakub Jelinek <jakub@redhat.com>
18924 * cfgrtl.c (rtl_verify_edges): Formatting fix. If bb->preds has any
18925 EDGE_EH edges, verify they are all EDGE_EH.
18927 2018-06-20 Maya Rashish <coypu@sdf.org>
18929 * ginclude/stddef.h: Limit #include <machine/ansi.h> to NetBSD.
18931 2018-06-20 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
18933 * config/aarch64/aarch64-tuning-flags.def (no_ldp_stp_qregs): New.
18934 * config/aarch64/aarch64.c (xgene1_tunings): Add
18935 AARCH64_EXTRA_TUNE_NO_LDP_STP_QREGS to tune_flags.
18936 (aarch64_mode_valid_for_sched_fusion_p):
18937 Allow 16-byte modes.
18938 (aarch64_classify_address): Allow 16-byte modes for load_store_pair_p.
18939 * config/aarch64/aarch64-ldpstp.md: Add peepholes for LDP STP of
18941 * config/aarch64/aarch64-simd.md (load_pair<VQ:mode><VQ2:mode>):
18943 (vec_store_pair<VQ:mode><VQ2:mode>): Likewise.
18944 * config/aarch64/iterators.md (VQ2): New mode iterator.
18946 2018-06-20 Martin Liska <mliska@suse.cz>
18948 * tree-switch-conversion.c (jump_table_cluster::can_be_handled):
18949 Change default ratio from 10 to 8.
18951 2018-06-20 Martin Liska <mliska@suse.cz>
18953 * tree-switch-conversion.c (jump_table_cluster::find_jump_tables):
18955 (bit_test_cluster::find_bit_tests): Likewise.
18956 (switch_decision_tree::analyze_switch_statement): Find clusters.
18957 * tree-switch-conversion.h (struct jump_table_cluster): Document
18960 2018-06-20 Martin Liska <mliska@suse.cz>
18962 * tree-switch-conversion.c (switch_conversion::collect):
18963 Record m_uniq property.
18964 (switch_conversion::expand): Bail out for special conditions.
18965 (group_cluster::~group_cluster): New.
18966 (group_cluster::group_cluster): Likewise.
18967 (group_cluster::dump): Likewise.
18968 (jump_table_cluster::emit): New.
18969 (switch_decision_tree::fix_phi_operands_for_edges): New.
18970 (struct case_node): Remove struct.
18971 (jump_table_cluster::can_be_handled): New.
18972 (case_values_threshold): Moved to header.
18973 (reset_out_edges_aux): Likewise.
18974 (jump_table_cluster::is_beneficial): New.
18975 (bit_test_cluster::can_be_handled): Likewise.
18976 (add_case_node): Remove.
18977 (bit_test_cluster::is_beneficial): New.
18978 (case_bit_test::cmp): New.
18979 (bit_test_cluster::emit): New.
18980 (expand_switch_as_decision_tree_p): Remove.
18981 (bit_test_cluster::hoist_edge_and_branch_if_true): New.
18982 (fix_phi_operands_for_edge): Likewise.
18983 (switch_decision_tree::analyze_switch_statement): New.
18984 (compute_cases_per_edge): Move ...
18985 (switch_decision_tree::compute_cases_per_edge): ... here.
18986 (try_switch_expansion): Likewise.
18987 (switch_decision_tree::try_switch_expansion): Likewise.
18988 (record_phi_operand_mapping): Likewise.
18989 (switch_decision_tree::record_phi_operand_mapping): Likewise.
18990 (emit_case_decision_tree): Likewise.
18991 (switch_decision_tree::emit): Likewise.
18992 (balance_case_nodes): Likewise.
18993 (switch_decision_tree::balance_case_nodes): Likewise.
18994 (dump_case_nodes): Likewise.
18995 (switch_decision_tree::dump_case_nodes): Likewise.
18996 (emit_jump): Likewise.
18997 (switch_decision_tree::emit_jump): Likewise.
18998 (emit_cmp_and_jump_insns): Likewise.
18999 (switch_decision_tree::emit_cmp_and_jump_insns): Likewise.
19000 (emit_case_nodes): Likewise.
19001 (switch_decision_tree::emit_case_nodes): Likewise.
19002 (conditional_probability): Remove.
19003 * tree-switch-conversion.h (enum cluster_type): New.
19005 (struct cluster): Likewise.
19006 (cluster::cluster): Likewise.
19007 (struct simple_cluster): Likewise.
19008 (simple_cluster::simple_cluster): Likewise.
19009 (struct group_cluster): Likewise.
19010 (struct jump_table_cluster): Likewise.
19011 (struct bit_test_cluster): Likewise.
19012 (struct min_cluster_item): Likewise.
19013 (struct case_tree_node): Likewise.
19014 (case_tree_node::case_tree_node): Likewise.
19015 (jump_table_cluster::case_values_threshold): Likewise.
19016 (struct case_bit_test): Likewise.
19017 (struct switch_decision_tree): Likewise.
19018 (struct switch_conversion): Likewise.
19019 (switch_decision_tree::reset_out_edges_aux): Likewise.
19021 2018-06-20 Martin Liska <mliska@suse.cz>
19023 * tree-switch-conversion.c (MAX_CASE_BIT_TESTS): Remove.
19024 (hoist_edge_and_branch_if_true): Likewise.
19025 (expand_switch_using_bit_tests_p): Likewise.
19026 (struct case_bit_test): Likewise.
19027 (case_bit_test_cmp): Likewise.
19028 (emit_case_bit_tests): Likewise.
19029 (switch_conversion::switch_conversion): New class.
19030 (struct switch_conv_info): Remove old struct.
19031 (collect_switch_conv_info): More to ...
19032 (switch_conversion::collect): ... this.
19033 (check_range): Likewise.
19034 (switch_conversion::check_range): Likewise.
19035 (check_all_empty_except_final): Likewise.
19036 (switch_conversion::check_all_empty_except_final): Likewise.
19037 (check_final_bb): Likewise.
19038 (switch_conversion::check_final_bb): Likewise.
19039 (create_temp_arrays): Likewise.
19040 (switch_conversion::create_temp_arrays): Likewise.
19041 (free_temp_arrays): Likewise.
19042 (gather_default_values): Likewise.
19043 (switch_conversion::gather_default_values): Likewise.
19044 (build_constructors): Likewise.
19045 (switch_conversion::build_constructors): Likewise.
19046 (constructor_contains_same_values_p): Likewise.
19047 (switch_conversion::contains_same_values_p): Likewise.
19048 (array_value_type): Likewise.
19049 (switch_conversion::array_value_type): Likewise.
19050 (build_one_array): Likewise.
19051 (switch_conversion::build_one_array): Likewise.
19052 (build_arrays): Likewise.
19053 (switch_conversion::build_arrays): Likewise.
19054 (gen_def_assigns): Likewise.
19055 (switch_conversion::gen_def_assigns): Likewise.
19056 (prune_bbs): Likewise.
19057 (switch_conversion::prune_bbs): Likewise.
19058 (fix_phi_nodes): Likewise.
19059 (switch_conversion::fix_phi_nodes): Likewise.
19060 (gen_inbound_check): Likewise.
19061 (switch_conversion::gen_inbound_check): Likewise.
19062 (process_switch): Use the newly created class.
19063 (switch_conversion::expand): New.
19064 (switch_conversion::~switch_conversion): New.
19065 * tree-switch-conversion.h: New file.
19067 2018-06-20 Richard Sandiford <richard.sandiford@arm.com>
19069 * tree-vectorizer.h (NUM_PATTERNS, vect_recog_func_ptr): Move to
19070 tree-vect-patterns.c.
19071 * tree-vect-patterns.c (vect_supportable_direct_optab_p): New function.
19072 (vect_recog_dot_prod_pattern): Use it. Remove the type_in argument.
19073 (vect_recog_sad_pattern): Likewise.
19074 (vect_recog_widen_sum_pattern): Likewise.
19075 (vect_recog_pow_pattern): Likewise. Check for a null vectype.
19076 (vect_recog_widen_shift_pattern): Remove the type_in argument.
19077 (vect_recog_rotate_pattern): Likewise.
19078 (vect_recog_mult_pattern): Likewise.
19079 (vect_recog_vector_vector_shift_pattern): Likewise.
19080 (vect_recog_divmod_pattern): Likewise.
19081 (vect_recog_mixed_size_cond_pattern): Likewise.
19082 (vect_recog_bool_pattern): Likewise.
19083 (vect_recog_mask_conversion_pattern): Likewise.
19084 (vect_try_gather_scatter_pattern): Likewise.
19085 (vect_recog_widen_mult_pattern): Likewise. Check for a null vectype.
19086 (vect_recog_over_widening_pattern): Likewise.
19087 (vect_recog_gather_scatter_pattern): Likewise.
19088 (vect_recog_func_ptr): Move from tree-vectorizer.h
19089 (vect_vect_recog_func_ptrs): Move further down the file.
19090 (vect_recog_func): Likewise. Remove the third argument.
19091 (NUM_PATTERNS): Define based on vect_vect_recog_func_ptrs.
19092 (vect_pattern_recog_1): Expect the pattern function to do any
19093 necessary target tests. Also expect it to provide a vector type.
19094 Remove the type_in handling.
19096 2018-06-20 Richard Sandiford <richard.sandiford@arm.com>
19098 * tree-vect-patterns.c (vect_pattern_detected): New function.
19099 (vect_recog_dot_prod_patternm, vect_recog_sad_pattern)
19100 (vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern)
19101 (vect_recog_over_widening_pattern, vect_recog_widen_shift_pattern
19102 (vect_recog_rotate_pattern, vect_recog_vector_vector_shift_pattern)
19103 (vect_recog_mult_pattern, vect_recog_divmod_pattern)
19104 (vect_recog_mixed_size_cond_pattern, vect_recog_bool_pattern)
19105 (vect_recog_mask_conversion_pattern)
19106 (vect_try_gather_scatter_pattern): Likewise.
19108 2018-06-20 Richard Sandiford <richard.sandiford@arm.com>
19110 * tree-vect-patterns.c (vect_get_internal_def): New function.
19111 (vect_recog_dot_prod_pattern, vect_recog_sad_pattern)
19112 (vect_recog_vector_vector_shift_pattern, check_bool_pattern)
19113 (search_type_for_mask_1): Use it.
19115 2018-06-20 Richard Sandiford <richard.sandiford@arm.com>
19117 * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Remove
19118 redundant WIDEN_SUM_EXPR handling.
19119 (vect_recog_sad_pattern): Likewise.
19121 2018-06-20 Richard Sandiford <richard.sandiford@arm.com>
19123 * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Remove
19124 redundant check that the types of a PLUS_EXPR or MULT_EXPR agree.
19125 (vect_recog_sad_pattern): Likewise PLUS_EXPR, ABS_EXPR and MINUS_EXPR.
19126 (vect_recog_widen_mult_pattern): Likewise MULT_EXPR.
19127 (vect_recog_widen_sum_pattern): Likewise PLUS_EXPR.
19129 2018-06-20 Richard Sandiford <richard.sandiford@arm.com>
19131 * tree-vect-stmts.c (vectorizable_call): Make sure that we
19132 use the stmt_vec_info of the original bb statement for the
19133 new zero assignment, even if the call is part of a pattern.
19135 2018-06-20 Richard Sandiford <richard.sandiford@arm.com>
19137 * tree-vectorizer.h (_stmt_vec_info): Note above pattern_def_seq
19138 that the sequence is attached to the original statement rather
19139 than the pattern statement.
19140 * tree-vect-loop.c (vect_determine_vf_for_stmt): Take the
19141 PATTERN_DEF_SEQ from the original statement rather than
19142 the main pattern statement.
19143 * tree-vect-stmts.c (free_stmt_vec_info): Likewise.
19144 * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Likewise.
19145 (vect_mark_pattern_stmts): Don't copy the PATTERN_DEF_SEQ.
19147 2018-06-20 Richard Sandiford <richard.sandiford@arm.com>
19149 * tree-vect-stmts.c (vect_analyze_stmt): Move the handling of pattern
19150 definition statements before the early exit for statements that aren't
19152 * tree-vect-loop.c (vect_transform_loop_stmt): New function,
19154 (vect_transform_loop): ...here. Process pattern definition
19155 statements without first checking whether the main pattern
19156 statement is live or relevant.
19158 2018-06-19 Eric Botcazou <ebotcazou@adacore.com>
19160 * tree-cfgcleanup.c (tree_forwarder_block_p): Do not return false at
19161 -O0 if the locus represent UNKNOWN_LOCATION but have different values.
19163 2018-06-19 Aaron Sawdey <acsawdey@linux.ibm.com>
19165 * config/rs6000/rs6000-string.c (select_block_compare_mode): Check
19166 TARGET_EFFICIENT_OVERLAPPING_UNALIGNED here instead of in caller.
19167 (do_and3, do_and3_mask, do_compb3, do_rotl3): New functions.
19168 (expand_block_compare): Change select_block_compare_mode call.
19169 (expand_strncmp_align_check): Use new functions, fix comment.
19170 (emit_final_str_compare_gpr): New function.
19171 (expand_strn_compare): Refactor and clean up code.
19172 * config/rs6000/vsx.md (vsx_mov<mode>_64bit): Remove *.
19174 2018-06-19 Tony Reix <tony.reix@atos.com>
19175 Damien Bergamini <damien.bergamini@atos.com>
19176 David Edelsohn <dje.gcc@gmail.com>
19178 * collect2.c (static_obj): New variable.
19179 (static_libs): New variable.
19180 (is_in_list): Uncomment declaration.
19181 (main): Track AIX libraries linked statically.
19182 (is_in_list): Uncomment definition.
19183 (scan_prog_file): Don't add AIX shared libraries initializer
19184 to constructor list if linking statically.
19186 2018-06-19 Max Filippov <jcmvbkbc@gmail.com>
19188 * config/xtensa/xtensa.md (UNSPEC_FRAME_BLOCKAGE): New unspec
19190 (allocate_stack, frame_blockage, *frame_blockage): New patterns.
19192 2018-06-19 Jan Hubicka <hubicka@ucw.cz>
19194 * tree.c (find_decls_types_r): Remove all non-VAR_DECLs from
19197 2018-06-19 Martin Liska <mliska@suse.cz>
19199 * config/i386/i386.c (ix86_can_inline_p): Do not use
19200 ipa_fn_summaries::get_create.
19201 * ipa-cp.c (ipcp_cloning_candidate_p): Replace get_create with
19203 (devirtualization_time_bonus): Likewise.
19204 (ipcp_propagate_stage): Likewise.
19205 * ipa-fnsummary.c (redirect_to_unreachable): Likewise.
19206 (edge_set_predicate): Likewise.
19207 (evaluate_conditions_for_known_args): Likewise.
19208 (evaluate_properties_for_edge): Likewise.
19209 (ipa_call_summary::reset): Tranform to ...
19210 (ipa_call_summary::~ipa_call_summary): ... this.
19211 (ipa_fn_summary::reset): Transform to ...
19212 (ipa_fn_summary::~ipa_fn_summary): ... this.
19213 (ipa_fn_summary_t::remove): Rename to ...
19214 (ipa_fn_summary_t::remove_callees): ... this.
19215 (ipa_fn_summary_t::duplicate): Use placement new
19216 instead of memory copy.
19217 (ipa_call_summary_t::duplicate): Likewise.
19218 (ipa_call_summary_t::remove): Remove.
19219 (dump_ipa_call_summary): Change get_create to get.
19220 (ipa_dump_fn_summary): Dump only when summary exists.
19221 (analyze_function_body): Use symbol_summary::get instead
19223 (compute_fn_summary): Likewise.
19224 (estimate_edge_devirt_benefit): Likewise.
19225 (estimate_edge_size_and_time): Likewise.
19226 (inline_update_callee_summaries): Likewise.
19227 (remap_edge_change_prob): Likewise.
19228 (remap_edge_summaries): Likewise.
19229 (ipa_merge_fn_summary_after_inlining): Likewise.
19230 (write_ipa_call_summary): Likewise.
19231 (ipa_fn_summary_write): Likewise.
19232 (ipa_free_fn_summary): Likewise.
19233 * ipa-fnsummary.h (struct GTY): Add new ctor and copy ctor.
19234 (struct ipa_call_summary): Likewise.
19235 * ipa-icf.c (sem_function::merge): Use symbol_summary::get instead
19237 * ipa-inline-analysis.c (do_estimate_edge_time): Likewise.
19238 (estimate_size_after_inlining): Likewise.
19239 (estimate_growth): Likewise.
19240 (growth_likely_positive): Likewise.
19241 * ipa-inline-transform.c (clone_inlined_nodes): Likewise.
19242 (inline_call): Likewise.
19243 * ipa-inline.c (caller_growth_limits): Likewise.
19244 (can_inline_edge_p): Likewise.
19245 (can_inline_edge_by_limits_p): Likewise.
19246 (compute_uninlined_call_time): Likewise.
19247 (compute_inlined_call_time): Likewise.
19248 (want_inline_small_function_p): Likewise.
19249 (edge_badness): Likewise.
19250 (update_caller_keys): Likewise.
19251 (update_callee_keys): Likewise.
19252 (inline_small_functions): Likewise.
19253 (inline_to_all_callers_1): Likewise.
19254 (dump_overall_stats): Likewise.
19255 (early_inline_small_functions): Likewise.
19256 (early_inliner): Likewise.
19257 * ipa-profile.c (ipa_propagate_frequency_1): Likewise.
19258 * ipa-prop.c (ipa_make_edge_direct_to_target): Likewise.
19259 * ipa-pure-const.c (malloc_candidate_p): Likewise.
19260 * ipa-split.c (execute_split_functions): Likewise.
19261 * symbol-summary.h: Likewise.
19262 * tree-sra.c (ipa_sra_preliminary_function_checks): Likewise.
19264 2018-06-19 Richard Biener <rguenther@suse.de>
19266 * tree-vectorizer.c (try_vectorize_loop_1): Split out of ...
19267 (vectorize_loops): ... here. Fix dbgcnt handling.
19268 (try_vectorize_loop): Wrap try_vectorize_loop_1.
19270 2018-06-19 Segher Boessenkool <segher@kernel.crashing.org>
19273 * config/rs6000/rs6000.md (rs6000_discover_homogeneous_aggregate): An
19274 ieee128 argument takes up only one (vector) register, not two (floating
19277 2018-06-19 Eric Botcazou <ebotcazou@adacore.com>
19279 * gimplify.c (gimplify_init_constructor): Really never clear for an
19280 incomplete constructor if CONSTRUCTOR_NO_CLEARING is set.
19282 2018-06-19 Richard Biener <rguenther@suse.de>
19284 PR tree-optimization/86179
19285 * tree-vect-patterns.c (vect_pattern_recog_1): Clean up
19286 after failed recognition.
19288 2018-06-18 Martin Sebor <msebor@redhat.com>
19290 PR middle-end/85602
19291 * calls.c (maybe_warn_nonstring_arg): Handle strncat.
19292 * tree-ssa-strlen.c (is_strlen_related_p): Make extern.
19293 Handle integer subtraction.
19294 (maybe_diag_stxncpy_trunc): Handle nonstring source arguments.
19295 * tree-ssa-strlen.h (is_strlen_related_p): Declare.
19297 2018-06-18 David Malcolm <dmalcolm@redhat.com>
19299 * config/frv/frv-protos.h (frv_ifcvt_modify_insn): Strengthen 3rd
19300 param from rtx to rtx_insn *.
19301 * config/frv/frv.c (frv_ifcvt_add_insn): Likewise for "insn"
19303 (frv_ifcvt_modify_insn): Likwise.
19304 (frv_ifcvt_modify_final): Likwise for local "existing_insn",
19305 adding an as_a <rtx_insn *> cast. Likewise for local "insn".
19306 * config/mips/mips.c (r10k_insert_cache_barriers): Add an
19307 as_a <rtx_insn *> cast to local "unprotected_region" once
19308 it's been established that it's not NULL or pc_rtx.
19309 * config/nds32/nds32-relax-opt.c (nds32_group_insns): Strengthen
19310 param "sethi" from rtx to rtx_insn *.
19311 (nds32_group_float_insns): Likewise for param "insn".
19312 * config/vax/vax-protos.h (vax_output_int_add): Likewise for 1st
19314 (vax_output_int_subtract): Likewise.
19315 * config/vax/vax.c (vax_output_int_add): Likewise for param
19317 (vax_output_int_subtract): Likewise.
19318 * emit-rtl.c (set_insn_deleted): Likewise, removing cast.
19319 (emit_pattern_after): Likewise for param "after".
19320 (emit_insn_after): Likewise.
19321 (emit_jump_insn_after): Likewise.
19322 (emit_call_insn_after): Likewise.
19323 (emit_debug_insn_after): Likewise.
19324 (emit_pattern_before): Likewise for param "before".
19325 (emit_insn_before): Likewise.
19326 (emit_jump_insn_before): Likewise.
19327 * final.c (get_insn_template): Likewise for param "insn", removing
19329 * output.h (get_insn_template): Likewise for 2nd param.
19330 * rtl.h (emit_insn_before): Likewise.
19331 (emit_jump_insn_before): Likewise.
19332 (emit_debug_insn_before_noloc): Likewise.
19333 (emit_insn_after): Likewise.
19334 (emit_jump_insn_after): Likewise.
19335 (emit_call_insn_after): Likewise.
19336 (emit_debug_insn_after): Likewise.
19337 (set_insn_deleted): Likewise for param.
19339 2018-06-18 Michael Meissner <meissner@linux.ibm.com>
19342 * config/rs6000/rs6000-modes.def (toplevel): Rework the 128-bit
19343 floating point modes, so that IFmode is numerically greater than
19344 TFmode, which is greater than KFmode using FRACTIONAL_FLOAT_MODE
19345 to declare the ordering. This prevents IFmode from being
19346 converted to TFmode when long double is IEEE 128-bit on an ISA 3.0
19347 machine. Include rs6000-modes.h to share the fractional values
19348 between genmodes* and the rest of the compiler.
19349 (IFmode): Likewise.
19350 (KFmode): Likewise.
19351 (TFmode): Likewise.
19352 * config/rs6000/rs6000-modes.h: New file.
19353 * config/rs6000/rs6000.c (rs6000_debug_reg_global): Change the
19354 meaning of rs6000_long_double_size so that 126..128 selects an
19355 appropriate 128-bit floating point type.
19356 (rs6000_option_override_internal): Likewise.
19357 * config/rs6000/rs6000.h (toplevel): Include rs6000-modes.h.
19358 (TARGET_LONG_DOUBLE_128): Change the meaning of
19359 rs6000_long_double_size so that 126..128 selects an appropriate
19360 128-bit floating point type.
19361 (LONG_DOUBLE_TYPE_SIZE): Update comment.
19362 * config/rs6000/rs6000.md (trunciftf2): Correct the modes of the
19363 source and destination to match the standard usage.
19364 (truncifkf2): Likewise.
19365 (copysign<mode>3, IEEE iterator): Rework copysign of float128 on
19366 ISA 2.07 to use an explicit clobber, instead of passing in a
19368 (copysign<mode>3_soft): Likewise.
19370 2018-06-18 David Malcolm <dmalcolm@redhat.com>
19372 * tree-vect-data-refs.c (vect_analyze_data_ref_dependences):
19373 Replace dump_printf_loc call with DUMP_VECT_SCOPE.
19374 (vect_slp_analyze_instance_dependence): Likewise.
19375 (vect_enhance_data_refs_alignment): Likewise.
19376 (vect_analyze_data_refs_alignment): Likewise.
19377 (vect_slp_analyze_and_verify_instance_alignment
19378 (vect_analyze_data_ref_accesses): Likewise.
19379 (vect_prune_runtime_alias_test_list): Likewise.
19380 (vect_analyze_data_refs): Likewise.
19381 * tree-vect-loop-manip.c (vect_update_inits_of_drs): Likewise.
19382 * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
19383 (vect_analyze_scalar_cycles_1): Likewise.
19384 (vect_get_loop_niters): Likewise.
19385 (vect_analyze_loop_form_1): Likewise.
19386 (vect_update_vf_for_slp): Likewise.
19387 (vect_analyze_loop_operations): Likewise.
19388 (vect_analyze_loop): Likewise.
19389 (vectorizable_induction): Likewise.
19390 (vect_transform_loop): Likewise.
19391 * tree-vect-patterns.c (vect_pattern_recog): Likewise.
19392 * tree-vect-slp.c (vect_analyze_slp): Likewise.
19393 (vect_make_slp_decision): Likewise.
19394 (vect_detect_hybrid_slp): Likewise.
19395 (vect_slp_analyze_operations): Likewise.
19396 (vect_slp_bb): Likewise.
19397 * tree-vect-stmts.c (vect_mark_stmts_to_be_vectorized): Likewise.
19398 (vectorizable_bswap): Likewise.
19399 (vectorizable_call): Likewise.
19400 (vectorizable_simd_clone_call): Likewise.
19401 (vectorizable_conversion): Likewise.
19402 (vectorizable_assignment): Likewise.
19403 (vectorizable_shift): Likewise.
19404 (vectorizable_operation): Likewise.
19405 * tree-vectorizer.h (DUMP_VECT_SCOPE): New macro.
19407 2018-06-18 Martin Sebor <msebor@redhat.com>
19409 PR tree-optimization/81384
19410 * builtin-types.def (BT_FN_SIZE_CONST_STRING_SIZE): New.
19411 * builtins.c (expand_builtin_strnlen): New function.
19412 (expand_builtin): Call it.
19413 (fold_builtin_n): Avoid setting TREE_NO_WARNING.
19414 * builtins.def (BUILT_IN_STRNLEN): New.
19415 * calls.c (maybe_warn_nonstring_arg): Handle BUILT_IN_STRNLEN.
19416 Warn for bounds in excess of maximum object size.
19417 * tree-ssa-strlen.c (maybe_set_strlen_range): Return tree representing
19418 single-value ranges. Handle strnlen.
19419 (handle_builtin_strlen): Handle strnlen.
19420 (strlen_check_and_optimize_stmt): Same.
19421 * doc/extend.texi (Other Builtins): Document strnlen.
19423 2018-06-18 Maya Rashish <coypu@sdf.org>
19425 * config/alpha/openbsd.h (TARGET_DEFAULT): Define.
19426 (LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Likewise.
19427 (INTMAX_TYPE, UINTMAX_TYPE, WINT_TYPE): Likewise.
19429 * config/alpha/elf.h (STARTFILE_SPEC, ENDFILE_SPEC): Move from
19431 * config/alpha/linux.h (STARTFILE_SPEC, ENDFILE_SPEC): Here.
19433 2018-06-18 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
19435 * tree.c (escaped_string::escape): Replace cast to char * by
19436 const_cast<char *> (unescaped).
19438 2018-06-18 Nick Clifton <nickc@redhat.com>
19441 * tree.c (escaped_string): New class. Converts an unescaped
19442 string into its escaped equivalent.
19443 (warn_deprecated_use): Use the new class to convert the
19444 deprecation message, if present.
19445 (test_escaped_strings): New self test.
19446 (test_c_tests): Add test_escaped_strings.
19447 * doc/extend.texi (deprecated): Add a note that the
19448 deprecation message is affected by the -fmessage-length
19449 option, and that control characters will be escaped.
19450 (#pragma GCC error): Document this pragma.
19451 (#pragma GCC warning): Likewise.
19452 * doc/invoke.texi (-fmessage-length): Document this option's
19453 effect on the #warning and #error preprocessor directives and
19454 the deprecated attribute.
19456 2018-06-18 Eric Botcazou <ebotcazou@adacore.com>
19458 * tree.c (decl_value_expr_lookup): Revert latest change.
19459 (decl_value_expr_insert): Likewise.
19461 2018-06-17 Eric Botcazou <ebotcazou@adacore.com>
19463 * gimplify.c (nonlocal_vlas): Delete.
19464 (nonlocal_vla_vars): Likewise.
19465 (gimplify_var_or_parm_decl): Do not add debug VAR_DECLs for non-local
19467 (gimplify_body): Do not create and destroy nonlocal_vlas.
19468 * tree-nested.c: Include diagnostic.h.
19469 (use_pointer_in_frame): Tweak.
19470 (lookup_field_for_decl): Add assertion and declare the transformation.
19471 (convert_nonlocal_reference_op) <PARM_DECL>: Rework and issue an
19472 internal error when the reference is in a wrong context. Do not
19473 create a debug decl by default.
19474 (note_nonlocal_block_vlas): Delete.
19475 (convert_nonlocal_reference_stmt) <GIMPLE_BIND>: Do not call it.
19476 (convert_local_reference_op) <PARM_DECL>: Skip the frame decl. Do not
19477 create a debug decl by default.
19478 (convert_gimple_call) <GIMPLE_CALL>: Issue an internal error when the
19479 call is in a wrong context.
19480 (fixup_vla_decls): New function.
19481 (finalize_nesting_tree_1): Adjust comment. Call fixup_vla_decls if no
19482 debug variables were created.
19483 * tree.c (decl_value_expr_lookup): Add checking assertion.
19484 (decl_value_expr_insert): Likewise.
19486 2018-06-16 Kugan Vivekanandarajah <kuganv@linaro.org>
19488 PR middle-end/82479
19489 * ipa-fnsummary.c (will_be_nonconstant_expr_predicate): Handle CALL_EXPR.
19490 * tree-scalar-evolution.c (interpret_expr): Likewise.
19491 (expression_expensive_p): Likewise.
19492 * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Likewise.
19493 * tree-ssa-loop-niter.c (number_of_iterations_popcount): New.
19494 (number_of_iterations_exit_assumptions): Use number_of_iterations_popcount.
19495 (ssa_defined_by_minus_one_stmt_p): New.
19497 2018-06-16 Kugan Vivekanandarajah <kuganv@linaro.org>
19499 PR middle-end/64946
19500 * cfgexpand.c (expand_debug_expr): Hande ABSU_EXPR.
19501 * config/i386/i386.c (ix86_add_stmt_cost): Likewise.
19502 * dojump.c (do_jump): Likewise.
19503 * expr.c (expand_expr_real_2): Check operand type's sign.
19504 * fold-const.c (const_unop): Handle ABSU_EXPR.
19505 (fold_abs_const): Likewise.
19506 * gimple-pretty-print.c (dump_unary_rhs): Likewise.
19507 * gimple-ssa-backprop.c (backprop::process_assign_use): Likesie.
19508 (strip_sign_op_1): Likesise.
19509 * match.pd: Add new pattern to generate ABSU_EXPR.
19510 * optabs-tree.c (optab_for_tree_code): Handle ABSU_EXPR.
19511 * tree-cfg.c (verify_gimple_assign_unary): Likewise.
19512 * tree-eh.c (operation_could_trap_helper_p): Likewise.
19513 * tree-inline.c (estimate_operator_cost): Likewise.
19514 * tree-pretty-print.c (dump_generic_node): Likewise.
19515 * tree-vect-patterns.c (vect_recog_sad_pattern): Likewise.
19516 * tree.def (ABSU_EXPR): New.
19518 2018-06-16 Jakub Jelinek <jakub@redhat.com>
19520 PR middle-end/86095
19521 * common.opt (Wunsafe-loop-optimizations): Add Ignore, remove Var,
19522 documented as preserved for backward compatibility only.
19523 * doc/invoke.texi: Remove -Wunsafe-loop-optimizations documentation.
19525 PR rtl-optimization/86108
19526 * bb-reorder.c (create_forwarder_block): Renamed to ...
19527 (create_eh_forwarder_block): ... this. Split OLD_BB after labels and
19528 jump from new landing pad to the second part.
19529 (sjlj_fix_up_crossing_landing_pad, dw2_fix_up_crossing_landing_pad):
19532 2018-06-15 Jakub Jelinek <jakub@redhat.com>
19534 PR middle-end/85878
19535 * expr.c (expand_assignment): Remove now redundant COMPLEX_MODE_P
19536 check from first store_expr, use to_mode instead of GET_MODE (to_rtx).
19537 Only call store_expr for halves if the mode is the same.
19539 PR middle-end/86123
19540 * match.pd ((X / Y) == 0 -> X < Y): Don't transform complex divisions.
19541 Fix up comment formatting.
19543 2018-06-15 Bernd Edlinger <bernd.edlinger@hotmail.de>
19545 * typed-splay-tree.h (typed_splay_tree::remove): New function.
19546 (typed_splay_tree::closure,
19547 typed_splay_tree::inner_foreach_fn, typed_splay_tree::m_inner): Deleted.
19548 (typed_splay_tree::typed_splay_tree,
19549 typed_splay_tree::operator =): Declared private.
19550 (typed_splay_tree::splay_tree_key, typed_splay_tree::splay_tree_value,
19551 typed_splay_tree::splay_tree_node_s, typed_splay_tree::KDEL,
19552 typed_splay_tree::VDEL, typed_splay_tree::splay_tree_delete_helper,
19553 typed_splay_tree::rotate_left, typed_splay_tree::rotate_right,
19554 typed_splay_tree::splay_tree_splay,
19555 typed_splay_tree::splay_tree_foreach_helper,
19556 typed_splay_tree::splay_tree_insert,
19557 typed_splay_tree::splay_tree_remove,
19558 typed_splay_tree::splay_tree_lookup,
19559 typed_splay_tree::splay_tree_predecessor,
19560 typed_splay_tree::splay_tree_successor,
19561 typed_splay_tree::splay_tree_min,
19562 typed_splay_tree::splay_tree_max): Took over from splay-tree.c/.h.
19563 (typed_splay_tree::root, typed_splay_tree::comp,
19564 typed_splay_tree::delete_key,
19565 typed_splay_tree::delete_value): New data members.
19566 * typed-splay-tree.c (selftest::test_str_to_int): Add a test for
19567 typed_splay_tree::remove.
19569 2018-06-15 Matthew Fortune <matthew.fortune@mips.com>
19571 * config/mips/mips.h (ASM_SPEC): Pass through -mcrc, -mno-crc,
19572 -mginv and -mno-ginv to the assembler.
19573 * config/mips/mips.opt (-mcrc): New option.
19574 (-mginv): Likewise.
19575 * doc/invoke.text (-mcrc): Document.
19576 (-mginv): Likewise.
19578 2018-06-15 Nick Clifton <nickc@redhat.com>
19581 * tree.c (escaped_string): New class. Converts an unescaped
19582 string into its escaped equivalent.
19583 (warn_deprecated_use): Use the new class to convert the
19584 deprecation message, if present.
19585 (test_escaped_strings): New self test.
19586 (test_c_tests): Add test_escaped_strings.
19587 * doc/extend.texi (deprecated): Add a note that the
19588 deprecation message is affected by the -fmessage-length
19589 option, and that control characters will be escaped.
19590 (#pragma GCC error): Document this pragma.
19591 (#pragma GCC warning): Likewise.
19592 * doc/invoke.texi (-fmessage-length): Document this option's
19593 effect on the #warning and #error preprocessor directives and
19594 the deprecated attribute.
19596 2018-06-15 Richard Biener <rguenther@suse.de>
19598 * tree-vect-slp.c (vect_slp_bb): Dump MSG_OPTIMIZED_LOCATIONS
19599 here, also noting vector size used.
19600 * tree-vectorizer.c (vectorize_loops): Adjust. Note vector
19601 size used in MSG_OPTIMIZED_LOCATIONS dump.
19602 (pass_slp_vectorize::execute): Adjust.
19604 2018-06-15 Claudiu Zissulescu <claziss@synopsys.com>
19607 * config/arc/arc.c (arc_return_address_register): Fix
19610 2018-06-15 Richard Biener <rguenther@suse.de>
19612 PR middle-end/86159
19613 * tree-cfg.c (gimplify_build3): Do not strip sign conversions,
19614 leave useless conversion stripping to force_gimple_operand_gsi.
19615 (gimplify_build2): Likewise.
19616 (gimplify_build1): Likewise.
19618 2018-06-15 Richard Biener <rguenther@suse.de>
19620 PR middle-end/86076
19621 * tree-cfg.c (move_stmt_op): unshare invariant addresses
19622 before adjusting their block.
19624 2018-06-15 Sebastian Huber <sebastian.huber@embedded-brains.de>
19626 * config.gcc (riscv*-*-elf* | riscv*-*-rtems*): Use custom
19627 multilibs for *-*-rtems*.
19628 * config/riscv/t-rtems: New file.
19630 2018-06-14 Jakub Jelinek <jakub@redhat.com>
19632 PR middle-end/86122
19633 * match.pd ((A +- CST1) +- CST2): Punt if last resort
19634 unsigned_type_for returns NULL.
19637 * lower-subreg.c (find_decomposable_subregs): Don't decompose float
19638 subregs of multi-word pseudos unless the float mode has word size.
19640 2018-06-14 Richard Biener <rguenther@suse.de>
19642 PR middle-end/86139
19643 * tree-vect-generic.c (build_word_mode_vector_type): Remove
19644 duplicate and harmful type_hash_canon.
19645 * tree.c (type_hash_canon): Assert we didn't find ourselves.
19647 2018-06-14 Richard Biener <rguenther@suse.de>
19650 * tree-ssa-struct-alias.c (create_variable_info_for): Handle
19653 2018-06-14 Sebastian Huber <sebastian.huber@embedded-brains.de>
19655 * config/rtems.h (STDINT_LONG32): Define.
19657 2018-06-13 Matthew Fortune <matthew.fortune@mips.com>
19658 Prachi Godbole <prachi.godbole@imgtec.com>
19660 * config/mips/mips-cpus.def: Define P6600.
19661 * config/mips/mips-tables.opt: Regenerate.
19662 * config/mips/mips.c (mips_ucbranch_type): New enum.
19663 (mips_rtx_cost_data): Add support for P6600.
19664 (mips_issue_rate): Likewise.
19665 (mips_multipass_dfa_lookahead): Likewise.
19666 (mips_avoid_hazard): Likewise.
19667 (mips_reorg_process_insns): Likewise.
19668 (mips_classify_branch_p6600): New function.
19669 * config/mips/mips.h (TUNE_P6600): New define.
19670 (MIPS_ISA_LEVEL_SPEC): Infer mips64r6 from p6600.
19671 (ENABLE_LD_ST_PAIRS): Enable load/store bonding for p6600.
19672 * config/mips/mips.md: Include p6600.md.
19673 (processor): Add p6600.
19674 * config/mips/p6600.md: New file.
19675 * doc/invoke.texi: Add p6600 to supported architectures.
19677 2018-06-13 Martin Sebor <msebor@redhat.com>
19679 PR tree-optimization/86114
19680 * gimple-fold.c (gimple_fold_builtin_strlen): Only handle LHS
19682 * tree-ssa-strlen.c (maybe_set_strlen_range): Same.
19684 2018-06-13 Richard Biener <rguenther@suse.de>
19686 * tree-vect-patterns.c (vect_recog_vector_vector_shift_pattern):
19687 Properly set vector type of the intermediate stmt.
19688 * tree-vect-stmts.c (vectorizable_operation): The destination
19689 var always has vectype_out type.
19691 2018-06-13 Jeff Law <law@redhat.com>
19693 * config/rl78/rl78.c (move_elim_pass): Use TDF_NONE rather than
19694 integer 0 for argument to print_rtl_with_bb.
19695 (rl78_reorg): Likewise.
19697 2018-06-13 David Malcolm <dmalcolm@redhat.com>
19699 * config/arc/arc.c (hwloop_optimize): Strengthen local "end_label"
19700 from rtx to rtx_insn *.
19701 * config/bfin/bfin.c (hwloop_optimize): Likewise for local
19703 (add_sched_insns_for_speculation): Likewise for local "target",
19704 converting usage of JUMP_LABEL to JUMP_LABEL_AS_INSN.
19705 * config/c6x/c6x.c (reorg_split_calls): Strengthen param "call_labels"
19706 from rtx_insn ** to rtx_code_label **.
19707 (reorg_emit_nops): Likewise.
19708 (c6x_reorg): Likewise for local "call_labels".
19709 * config/sh/sh-protos.h (get_dest_uid): Strengthen 1st param from
19711 * config/sh/sh.c (dump_table): Strengthen local "lab" from rtx to
19712 rtx_code_label *, adding safe_as_a <rtx_code_label *> casts to
19713 the loops over LABEL_REFS.
19714 (fixup_addr_diff_vecs): Add as_a <rtx_insn *> to usage of
19716 (barrier_align): Convert usage of JUMP_LABEL to JUMP_LABEL_AS_INSN.
19717 (get_dest_uid): Strengthen param "label" from rtx to rtx_insn *.
19718 (split_branches): Strengthen local "olabel" from rtx to
19719 rtx_insn *, adding a safe_as_a cast.
19720 * emit-rtl.c (next_real_insn): Strengthen param from "rtx"
19722 (add_insn_after): Likewise for first two params.
19723 (add_insn_before): Likewise.
19724 (remove_insn): Likewise for param.
19725 (emit_pattern_before_noloc): Likewise for second and third params.
19726 (emit_jump_insn_before_noloc): Convert NULL_RTX to NULL.
19727 (emit_call_insn_before_noloc): Likewise.
19728 (emit_debug_insn_before_noloc): Strengthen "before" param from "rtx"
19730 (emit_barrier_before): Likewise.
19731 (emit_label_before): Strengthen "label" param from "rtx" to
19732 "rtx_code_label *". Strengthen "before" param from "rtx" to
19734 (emit_insn_after_1): Strengthen "after" param from "rtx" to
19736 (emit_pattern_after_noloc): Likewise.
19737 (emit_insn_after_noloc): Likewise.
19738 (emit_jump_insn_after_noloc): Likewise.
19739 (emit_call_insn_after_noloc): Likewise.
19740 (emit_debug_insn_after_noloc): Likewise.
19741 (emit_barrier_after): Likewise.
19742 (emit_label_after): Likewise for both params.
19743 (emit_pattern_after_setloc): Likewise for "after" param. Convert
19744 "loc" param from "int" to "location_t".
19745 (emit_insn_after_setloc): Likewise.
19746 (emit_jump_insn_after_setloc): Likewise.
19747 (emit_call_insn_after_setloc): Likewise.
19748 (emit_debug_insn_after_setloc): Likewise.
19749 (emit_pattern_before_setloc): Likewise for "before" param. Convert
19750 "loc" param from "int" to "location_t".
19751 (emit_pattern_before): Convert NULL_RTX to NULL.
19752 (emit_insn_before_setloc): Convert "loc" param from "int" to
19754 (emit_jump_insn_before_setloc): Likewise.
19755 (emit_call_insn_before_setloc): Likewise.
19756 (emit_debug_insn_before_setloc): Strengthen "before" param from rtx to
19757 rtx_insn *. Convert "loc" param from "int" to "location_t".
19758 * rtl.h (emit_insn_before_setloc, emit_jump_insn_before_setloc,
19759 emit_call_insn_before_setloc, emit_debug_insn_before_setloc):
19760 Convert 3rd param from "int" to "location_t".
19761 (emit_barrier_before, emit_barrier_after, next_real_insn):
19762 Strengthen param from rtx to rtx_insn *.
19763 (emit_label_before): Strengthen 1st param from "rtx" to
19764 "rtx_code_label *". Strengthen 2nd param from "rtx" to
19766 (emit_insn_after_noloc, emit_jump_insn_after_noloc,
19767 emit_call_insn_after_noloc, emit_debug_insn_after_noloc):
19768 Strengthen 2nd param from "rtx" to "rtx_insn *".
19769 (emit_insn_after_setloc, emit_jump_insn_after_setloc)
19770 emit_call_insn_after_setloc, emit_debug_insn_after_setloc):
19771 Likewise. Convert 3rd param from "int" to "location_t".
19772 (emit_label_after): Strengthen 1st param from "rtx" to
19773 "rtx_code_label *".
19774 (next_real_insn, remove_insn): Strengthen param from "rtx" to
19776 (add_insn_before, add_insn_after): Strengthen 1st and 2nd params
19777 from "rtx" to "rtx_insn *".
19779 2018-06-13 Jan Hubicka <hubicka@gcc.gnu.org>
19781 * cgraph.c (cgraph_node::get_untransformed_body): Dump function
19782 bodies streamed in with -Q.
19783 * dumpfile.c (dump_files): Add lto-stream-out dump file.
19784 * dumpfile.h (tree_dump_index): Add lto_stream_out.
19785 * gimple-streamer-out.c: Include gimple-pretty-print.h
19786 (output_bb): Dump stmts streamed.
19787 * lto-section-out.c: Include print-tree.h
19788 (lto_begin_section): Dump sections created.
19789 (lto_output_decl_index): Dump decl encoded.
19790 * lto-streamer-out.c: Include print-tree.h
19791 (create_output_block): Dump output block created.
19792 (DFS::DFS_write_tree_body): Dump DFS SCCs streamed.
19793 (output_function): Dump function output.
19794 (output_constructor): Dump constructor streamed.
19795 (write_global_stream): Output indexes encoded.
19796 (produce_asm_for_decls): Dump streams encoded.
19797 * lto-streamer.c (streamer_dump_file): New global var.
19798 * lto-streamer.h (streamer_dump_file): Declare.
19799 * passes.c (ipa_write_summaries): Initialize streamer dump.
19800 * varpool.c (varpool_node::get_constructor): Dump constructors streamed
19803 2018-06-13 Eric Botcazou <ebotcazou@adacore.com>
19806 * config/i386/winnt.c (i386_pe_seh_cold_init): Do not emit negative
19807 offsets for register save directives. Emit a second batch of save
19808 directives, if need be, when the function accesses prior frames.
19810 2018-06-12 Claudiu Zissulescu <claziss@synopsys.com>
19812 * config/arc/fpu.md (fmasf4): Force operand to register.
19813 (fnmasf4): Likewise.
19815 2018-06-12 Claudiu Zissulescu <claziss@synopsys.com>
19817 * config/arc/arc-protos.h (arc_pad_return): Remove.
19818 * config/arc/arc.c (machine_function): Remove force_short_suffix
19820 (arc_print_operand): Adjust printing of '&'.
19821 (arc_verify_short): Remove conditional printing of short suffix.
19822 (arc_final_prescan_insn): Remove reference to size_reason.
19823 (pad_return): New function.
19824 (arc_reorg): Call pad_return.
19825 (arc_pad_return): Remove.
19826 (arc_init_machine_status): Remove reference to force_short_suffix.
19827 * config/arc/arc.md (vunspec): Add VUNSPEC_ARC_BLOCKAGE.
19828 (attr length): When attribute iscompact is true force to 2
19829 regardless; in the case of maybe check if we want to force the
19830 instruction to have 4 bytes length.
19831 (nopv): Change it to generate 4 byte long nop as well.
19832 (blockage): New pattern.
19833 (simple_return): Remove call to arc_pad_return.
19834 (p_return_i): Likewise.
19836 2018-06-12 Claudiu Zissulescu <claziss@synopsys.com>
19838 * config/arc/elf.h (LINK_GCC_C_SEQUENCE_SPEC): Define.
19840 2018-06-12 Claudiu Zissulescu <claziss@synopsys.com>
19842 * config/arc/builtins.def (SYNC): SYNC instruction is valid on all
19845 2018-06-12 Claudiu Zissulescu <claziss@synopsys.com>
19847 * config/arc/arc.c (atomic_exchangesi): EX instruction is default
19848 for ARC700 and ARCv2.
19850 2018-06-13 Chenghua Xu <paul.hua.gm@gmail.com>
19853 * config/mips/loongson.md (vec_setv4hi): Gen_lowpart for
19854 operands[2] instead of operands[1].
19857 2018-06-12 Richard Sandiford <richard.sandiford@linaro.org>
19859 * lra-constraints.c (simplify_operand_subreg): In the paradoxical
19860 case, check whether the outer register overlaps an unallocatable
19861 register, not just whether it fits the required class.
19863 2018-06-12 Richard Sandiford <richard.sandiford@linaro.org>
19865 * poly-int.h (can_div_trunc_p): Add new overload in which all values
19867 * alias.c (get_addr): Extend CONST_INT handling to poly_int_rtx_p.
19868 (memrefs_conflict_p): Likewise.
19869 (init_alias_analysis): Likewise.
19870 * cfgexpand.c (expand_debug_expr): Likewise.
19871 * combine.c (combine_simplify_rtx, force_int_to_mode): Likewise.
19872 * cse.c (fold_rtx): Likewise.
19873 * explow.c (adjust_stack, anti_adjust_stack): Likewise.
19874 * expr.c (emit_block_move_hints): Likewise.
19875 (clear_storage_hints, push_block, emit_push_insn): Likewise.
19876 (store_expr_with_bounds, reduce_to_bit_field_precision): Likewise.
19877 (emit_group_load_1): Use rtx_to_poly_int64 for group offsets.
19878 (emit_group_store): Likewise.
19879 (find_args_size_adjust): Use strip_offset. Use rtx_to_poly_int64
19880 to read the PRE/POST_MODIFY increment.
19881 * calls.c (store_one_arg): Use strip_offset.
19882 * rtlanal.c (rtx_addr_can_trap_p_1): Extend CONST_INT handling to
19884 (set_noop_p): Use rtx_to_poly_int64 for the elements selected
19886 * simplify-rtx.c (avoid_constant_pool_reference): Use strip_offset.
19887 (simplify_binary_operation_1): Extend CONST_INT handling to
19889 * var-tracking.c (compute_cfa_pointer): Take a poly_int64 rather
19890 than a HOST_WIDE_INT.
19891 (hard_frame_pointer_adjustment): Change from HOST_WIDE_INT to
19893 (adjust_mems, add_stores): Update accodingly.
19894 (vt_canonicalize_addr): Track polynomial offsets.
19895 (emit_note_insn_var_location): Likewise.
19896 (vt_add_function_parameter): Likewise.
19897 (vt_initialize): Likewise.
19899 2018-06-12 Jeff Law <law@redhat.com>
19901 * config.gcc (alpha*-*-freebsd*): Remove.
19902 * config/alpha/freebsd.h: Remove.
19904 2018-06-12 David Malcolm <dmalcolm@redhat.com>
19907 * spellcheck-tree.c (levenshtein_distance): Rename to...
19908 (get_edit_distance): ...this, and update for underlying renaming.
19909 * spellcheck-tree.h (levenshtein_distance): Rename to...
19910 (get_edit_distance): ...this.
19911 * spellcheck.c (levenshtein_distance): Rename to...
19912 (get_edit_distance): ...this. Convert from Levenshtein distance
19913 to Damerau-Levenshtein distance by supporting transpositions of
19914 adjacent characters. Rename "v1" to "v_next" and "v0" to
19916 (selftest::levenshtein_distance_unit_test_oneway): Rename to...
19917 (selftest::test_edit_distance_unit_test_oneway): ...this, and
19918 update for underlying renaming.
19919 (selftest::levenshtein_distance_unit_test): Rename to...
19920 (selftest::test_get_edit_distance_unit): ...this, and update for
19921 underlying renaming.
19922 (selftest::test_find_closest_string): Add example from PR 69968
19923 where transposition helps
19924 (selftest::test_metric_conditions): Update for renaming.
19925 (selftest::test_metric_conditions): Likewise.
19926 (selftest::spellcheck_c_tests): Likewise.
19927 * spellcheck.h (levenshtein_distance): Rename both overloads to...
19928 (get_edit_distance): ...this.
19929 (best_match::consider): Update for renaming.
19931 2018-06-12 Martin Sebor <msebor@redhat.com>
19933 PR tree-optimization/85259
19934 * builtins.c (compute_objsize): Handle constant offsets.
19935 * gimple-ssa-warn-restrict.c (maybe_diag_offset_bounds): Return
19936 true iff a warning has been issued.
19937 * gimple.h (gimple_nonartificial_location): New function.
19938 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Call
19939 gimple_nonartificial_location and handle -Wno-system-headers.
19940 (handle_builtin_stxncpy): Same.
19942 2018-06-12 Martin Sebor <msebor@redhat.com>
19945 * fold-const.c (operand_equal_p): Handle SAVE_EXPR.
19947 2018-06-12 Will Schmidt <will_schmidt@vnet.ibm.com>
19949 * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
19950 BUILTIN_VEC_XST entries for pointer to double and long long.
19952 2018-06-12 H.J. Lu <hongjiu.lu@intel.com>
19955 * config/i386/gnu-user.h (TARGET_THREAD_SPLIT_STACK_OFFSET):
19957 * config/i386/gnu-user64.h (TARGET_THREAD_SPLIT_STACK_OFFSET):
19960 2018-06-12 Martin Liska <mliska@suse.cz>
19962 * doc/options.texi: Document IntegerRange.
19964 2018-06-12 Martin Liska <mliska@suse.cz>
19966 * config/i386/i386.opt: Make MPX-related options as Deprecated.
19967 * opt-functions.awk: Handle Deprecated flag.
19968 * opts-common.c (decode_cmdline_option): Handle cl_deprecated
19970 (read_cmdline_option): Report warning for a deprecated option.
19971 * opts.h (struct cl_option): Add new field cl_deprecated.
19972 (CL_ERR_DEPRECATED): New.
19974 2018-06-12 Martin Liska <mliska@suse.cz>
19976 * doc/options.texi: Document Deprecated option flag.
19978 2018-06-12 Claudiu Zissulescu <claziss@synopsys.com>
19980 * config/arc/arc-arch.h (arc_extras): New enum.
19981 (arc_cpu_t):Add field extra.
19982 (arc_cpu_types): Consider the extras.
19983 * config/arc/arc-cpus.def: Add extras info.
19984 * config/arc/arc-opts.h (processor_type): Consider extra field.
19985 * config/arc/arc.c (arc_override_options): Handle extra field.
19987 2018-06-12 Claudiu Zissulescu <claziss@synopsys.com>
19989 * config/arc/arc-arch.h: Update ARC_OPTX macro.
19990 * config/arc/arc-options.def (ARC_OPTX): Introduce a new doc
19992 * config/arc/arc.c (arc_init): Update pic warning.
19993 (irq_range): Update irq range parsing warnings.
19994 (arc_override_options): Update various warning messages.
19995 (arc_handle_aux_attribute): Likewise.
19997 2018-06-12 Robert Suchanek <robert.suchanek@mips.com>
19999 * config/mips/i6400.md (i6400_fpu_fadd): Remove frint.
20001 2018-06-12 Jozef Lawrynowicz <jozef.l@mittosystems.com>
20003 * doc/sourcebuild.texi: Document usage of line number 0 in verify
20004 compiler messages directives.
20006 2018-06-12 Matthew Fortune <mfortune@gmail.com>
20008 * config/mips/mips-cpus.def: New MIPS_CPU for i6500.
20009 * config/mips/mips-tables.opt: Regenerate.
20010 * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Mark i6500 as
20012 * doc/invoke.texi: Document -march=i6500.
20014 2018-06-12 Prachi Godbole <prachi.godbole@imgtec.com>
20016 * config/mips/i6400.md (i6400_gpmuldiv): Remove cpu_unit.
20017 (i6400_gpmul): Add cpu_unit.
20018 (i6400_gpdiv): Likewise.
20019 (i6400_msa_add_d): Update reservations.
20020 (i6400_msa_int_add) Likewise.
20021 (i6400_msa_short_logic3) Likewise.
20022 (i6400_msa_short_logic2) Likewise.
20023 (i6400_msa_short_logic) Likewise.
20024 (i6400_msa_move) Likewise.
20025 (i6400_msa_cmp) Likewise.
20026 (i6400_msa_short_float2) Likewise.
20027 (i6400_msa_div_d) Likewise.
20028 (i6400_msa_long_logic1) Likewise.
20029 (i6400_msa_long_logic2) Likewise.
20030 (i6400_msa_mult) Likewise.
20031 (i6400_msa_long_float2) Likewise.
20032 (i6400_msa_long_float4) Likewise.
20033 (i6400_msa_long_float5) Likewise.
20034 (i6400_msa_long_float8) Likewise.
20035 (i6400_fpu_fadd): Include frint type.
20036 (i6400_fpu_store): New define_insn_reservation.
20037 (i6400_fpu_load): Likewise.
20038 (i6400_fpu_move): Likewise.
20039 (i6400_fpu_fcmp): Likewise.
20040 (i6400_fpu_fmadd): Likewise.
20041 (i6400_int_mult): Include imul3nc type and update reservation.
20042 (i6400_int_div): Include idiv3 type and update reservation.
20043 (i6400_int_load): Update to check type not move_type.
20044 (i6400_int_store): Likewise.
20045 (i6400_int_prefetch): Set zero latency.
20047 2018-06-12 Eric Botcazou <ebotcazou@adacore.com>
20049 * gcc.c: Document new %@{...} sequence.
20050 (LINK_COMMAND_SPEC): Use it for the -L switches.
20051 (cpp_unique_options): Use it for the -I switches.
20052 (at_file_argbuf): New global variable.
20053 (in_at_file): Likewise.
20054 (alloc_args): Create at_file_argbuf.
20055 (clear_args): Truncate at_file_argbuf.
20056 (store_arg): If in_at_file, push the argument onto at_file_argbuf.
20057 (open_at_file): New function.
20058 (close_at_file): Likewise.
20059 (create_at_file): Delete.
20060 (do_spec_1) <'i'>: Use open_at_file/close_at_file.
20063 (validate_switches_from_spec): Deal with %@{...} sequence.
20064 (validate_switches): Likewise.
20065 (driver::finalize): Call clear_args.
20067 2018-06-11 Rasmus Villemoes <rasmus.villemoes@prevas.dk>
20069 * config/vx-common.h (USE_TM_CLONE_REGISTRY): #define to 0.
20071 2018-06-11 Martin Sebor <msebor@redhat.com>
20073 * doc/invoke.texi (-Wall): List -Wc++17-compat.
20074 (Wno-class-memaccess): Add @opindex.
20075 (Wno-templates, Wno-multiple-inheritance): Same.
20076 (Wno-virtual-inheritance, Wno-namespaces): Same.
20077 (Wno-pedantic, Wno-chkp, Wcoverage-mismatch): Same.
20078 (Wno-format-overflow, Wno-format-truncation): Same.
20079 (Wno-unused-local-typedefs, Walloc-size-larger-than): Same.
20080 (Wno-alloc-size-larger-than, Wframe-larger-than): Same
20081 (Wno-stack-usage, Wno-c++-compat, Wno-c++11-compat): Same.
20082 (Wno-c++14-compat, Wno-c++17-compat, Wno-openmp-simd): Same.
20083 (Wno-unsuffixed-float-constants, Wno-addr-space-convert): Same.
20084 (Wno-misspelled-isr): Same.
20086 2018-06-11 Martin Sebor <msebor@redhat.com>
20088 * PR tree-optimization/86083
20089 * tree-ssa-strlen.c (handle_char_store): Use tree_expr_nonzero_p.
20091 2018-06-11 Zhouyi Zhou <zhouzhouyi@gmail.com>
20093 * tree-eh.c (lower_eh_constructs_2): Add a comma to comment.
20095 2018-06-11 Segher Boessenkool <segher@kernel.crashing.org>
20098 * config/rs6000/rs6000.md (*movdi_internal32): Put constraint modifiers
20099 on the correct operand.
20100 (*movdi_internal64): Ditto.
20102 2018-06-11 Martin Liska <mliska@suse.cz>
20104 PR tree-optimization/86089
20105 * tree-ssa-strlen.c (get_string_length): Move back removed hunk.
20107 2018-06-11 Julia Koval <julia.koval@intel.com>
20109 * config/i386/vaesintrin.h (_mm_aesdec_epi128, _mm_aesdeclast_epi128)
20110 _mm_aesenc_epi128, _mm_aesenclast_epi128: Remove.
20111 * config/i386/vpclmulqdqintrin.h (_mm_clmulepi64_epi128): Remove.
20113 2018-06-11 Olivier Hainque <hainque@adacore.com>
20115 * dwarf2out.c (gen_compile_unit_die): Fallout to DW_LANG_Ada83
20116 for Ada with strict dwarf2.
20118 2018-06-08 Peter Bergner <bergner@vnet.ibm.com>
20121 * config/rs6000/rs6000.c (mem_operand_gpr): Enable PRE_INC and PRE_DEC
20124 2018-06-08 Jan Hubicka <hubicka@ucw.cz>
20126 * dumpfile.c (FIRST_ME_AUTO_NUMBERED_DUMP): Bump to 4.
20128 2018-06-08 David Edelsohn <dje.gcc@gmail.com>
20130 * config/rs6000/rs6000.c (rs6000_passes_ieee128): Protect with #if
20133 2018-06-08 Martin Liska <mliska@suse.cz>
20135 * tree-cfg.h (debug_function): Fix argument type to match
20138 2018-06-08 Martin Liska <mliska@suse.cz>
20140 * config/powerpcspe/powerpcspe.c (rs6000_xcoff_visibility):
20141 Remove usage of MPX-related (and removed) fields.
20142 * config/rs6000/rs6000.c (rs6000_xcoff_visibility): Likewise.
20144 2018-06-08 David Malcolm <dmalcolm@redhat.com>
20146 * cfg.c (debug): Use TDF_NONE rather than 0.
20147 * cfghooks.c (debug): Likewise.
20148 * dumpfile.c (DUMP_FILE_INFO): Likewise; also for OPTGROUP.
20149 (struct dump_option_value_info): Convert to...
20150 (struct kv_pair): ...this template type.
20151 (dump_options): Convert to kv_pair<dump_flags_t>; use TDF_NONE
20153 (optinfo_verbosity_options): Likewise.
20154 (optgroup_options): Convert to kv_pair<optgroup_flags_t>; use
20156 (gcc::dump_manager::dump_register): Use optgroup_flags_t rather
20157 than int for "optgroup_flags" param.
20158 (dump_generic_expr_loc): Use dump_flags_t rather than int for
20160 (dump_dec): Likewise.
20161 (dump_finish): Use TDF_NONE rather than 0.
20162 (gcc::dump_manager::opt_info_enable_passes): Use optgroup_flags_t
20163 rather than int for "optgroup_flags" param. Use TDF_NONE rather
20164 than 0. Update for change to option_ptr.
20165 (opt_info_switch_p_1): Convert "optgroup_flags" param from int *
20166 to optgroup_flags_t *. Use TDF_NONE and OPTGROUP_NONE rather than
20167 0. Update for changes to optinfo_verbosity_options and
20169 (opt_info_switch_p): Convert optgroup_flags from int to
20171 (dump_basic_block): Use dump_flags_t rather than int
20172 for "dump_kind" param.
20173 * dumpfile.h (TDF_ADDRESS, TDF_SLIM, TDF_RAW, TDF_DETAILS,
20174 TDF_STATS, TDF_BLOCKS, TDF_VOPS, TDF_LINENO, TDF_UID)
20175 TDF_STMTADDR, TDF_GRAPH, TDF_MEMSYMS, TDF_RHS_ONLY, TDF_ASMNAME,
20176 TDF_EH, TDF_NOUID, TDF_ALIAS, TDF_ENUMERATE_LOCALS, TDF_CSELIB,
20177 TDF_SCEV, TDF_GIMPLE, TDF_FOLDING, MSG_OPTIMIZED_LOCATIONS,
20178 MSG_MISSED_OPTIMIZATION, MSG_NOTE, MSG_ALL, TDF_COMPARE_DEBUG,
20179 TDF_NONE): Convert from macros to...
20180 (enum dump_flag): ...this new enum.
20181 (dump_flags_t): Update to use enum.
20182 (operator|, operator&, operator~, operator|=, operator&=):
20183 Implement for dump_flags_t.
20184 (OPTGROUP_NONE, OPTGROUP_IPA, OPTGROUP_LOOP, OPTGROUP_INLINE,
20185 OPTGROUP_OMP, OPTGROUP_VEC, OPTGROUP_OTHER, OPTGROUP_ALL):
20186 Convert from macros to...
20187 (enum optgroup_flag): ...this new enum.
20188 (optgroup_flags_t): New typedef.
20189 (operator|, operator|=): Implement for optgroup_flags_t.
20190 (struct dump_file_info): Convert field "alt_flags" to
20191 dump_flags_t. Convert field "optgroup_flags" to
20193 (dump_basic_block): Use dump_flags_t rather than int for param.
20194 (dump_generic_expr_loc): Likewise.
20195 (dump_dec): Likewise.
20196 (dump_register): Convert param "optgroup_flags" to
20198 (opt_info_enable_passes): Likewise.
20199 * early-remat.c (early_remat::dump_edge_list): Use TDF_NONE rather
20201 * gimple-pretty-print.c (debug): Likewise.
20202 * gimple-ssa-store-merging.c (bswap_replace): Likewise.
20203 (merged_store_group::apply_stores): Likewise.
20204 * gimple-ssa-strength-reduction.c (insert_initializers): Likewise.
20205 * gimple.c (verify_gimple_pp): Likewise.
20206 * graphite-poly.c (print_pbb_body): Likewise.
20207 * passes.c (pass_manager::register_one_dump_file): Convert
20208 local "optgroup_flags" to optgroup_flags_t.
20209 * print-tree.c (print_node): Use TDF_NONE rather than 0.
20211 (debug_body): Likewise.
20212 * tree-pass.h (struct pass_data): Convert field "optgroup_flags"
20213 to optgroup_flags_t.
20214 * tree-pretty-print.c (print_struct_decl): Use TDF_NONE rather
20216 * tree-ssa-math-opts.c (convert_mult_to_fma_1): Likewise.
20217 (convert_mult_to_fma): Likewise.
20218 * tree-ssa-reassoc.c (undistribute_ops_list): Likewise.
20219 * tree-ssa-sccvn.c (vn_eliminate): Likewise.
20220 * tree-vect-data-refs.c (dump_lower_bound): Convert param
20221 "dump_kind" to dump_flags_t.
20223 2018-06-08 Segher Boessenkool <segher@kernel.crashing.org>
20225 * config/rs6000/rs6000.c (min, max): Delete.
20227 2018-06-08 Segher Boessenkool <segher@kernel.crashing.org>
20229 * doc/invoke.texi (RS/6000 and PowerPC Options): Delete mention of
20230 -mabi=spe and -mabi=no-spe.
20232 2018-06-08 Martin Liska <mliska@suse.cz>
20234 * ipa-pure-const.c (propagate_pure_const): Use ::get at places
20235 where we expect an existing summary.
20237 2018-06-08 Martin Liska <mliska@suse.cz>
20239 * ipa-inline-analysis.c (simple_edge_hints): Use ::get method.
20240 * ipa-inline.h (estimate_edge_growth): Likewise.
20242 2018-06-08 Martin Liska <mliska@suse.cz>
20244 * cgraph.c (function_version_hasher::hash): Use
20245 cgraph_node::get_uid ().
20246 (function_version_hasher::equal):
20247 * cgraph.h (cgraph_node::get_uid): New method.
20248 * ipa-inline.c (update_caller_keys): Use
20249 cgraph_node::get_uid ().
20250 (update_callee_keys): Likewise.
20251 * ipa-utils.c (searchc): Likewise.
20252 (ipa_reduced_postorder): Likewise.
20253 * lto-cgraph.c (input_node): Likewise.
20254 * passes.c (is_pass_explicitly_enabled_or_disabled): Likewise.
20255 * symbol-summary.h (symtab_insertion): Likewise.
20256 (symtab_removal): Likewise.
20257 (symtab_duplication): Likewise.
20258 * tree-pretty-print.c (dump_function_header): Likewise.
20259 * tree-sra.c (convert_callers_for_node): Likewise.
20261 2018-06-08 Martin Liska <mliska@suse.cz>
20263 * cgraph.c (symbol_table::create_edge): Always assign a new
20265 (symbol_table::free_edge): Do not recycle numbers.
20266 * cgraph.h (cgraph_edge::get): New method.
20267 * symbol-summary.h (symtab_removal): Use it.
20268 (symtab_duplication): Likewise.
20269 (call_summary::hashable_uid): Remove.
20271 2018-06-08 Martin Liska <mliska@suse.cz>
20273 * ipa-inline-analysis.c (inline_edge_removal_hook): Remove.
20274 (initialize_growth_caches): Remove.
20275 (free_growth_caches): Likewise.
20276 (do_estimate_edge_time): Use edge_growth_cache.
20277 (do_estimate_edge_size): Likewise.
20278 (do_estimate_edge_hints): Likewise.
20279 * ipa-inline.c (reset_edge_caches): Likewise.
20280 (recursive_inlining): Likewise.
20281 (inline_small_functions): Likewise.
20282 * ipa-inline.h (initialize_growth_caches): Remove.
20283 (estimate_edge_size): Likewise.
20284 (estimate_edge_time): Likewise.
20285 (estimate_edge_hints): Likewise.
20286 (reset_edge_growth_cache): Likewise.
20287 * symbol-summary.h (call_summary::remove): New method.
20289 2018-06-08 Martin Liska <mliska@suse.cz>
20291 * ipa-cp.c (class edge_clone_summary): New summary.
20292 (grow_edge_clone_vectors): Remove.
20293 (ipcp_edge_duplication_hook): Remove.
20294 (class edge_clone_summary_t): New call_summary class.
20295 (ipcp_edge_removal_hook): Remove.
20296 (edge_clone_summary_t::duplicate): New function.
20297 (get_next_cgraph_edge_clone): Use edge_clone_summaries.
20298 (create_specialized_node): Likewise.
20299 (ipcp_driver): Initialize edge_clone_summaries and do not
20302 2018-06-08 Martin Liska <mliska@suse.cz>
20304 * symbol-summary.h (get): New function.
20305 (call_summary::m_initialize_when_cloning): New class member.
20307 2018-06-08 Martin Liska <mliska@suse.cz>
20309 * cgraph.c (cgraph_node::remove): Do not recycle uid.
20310 * cgraph.h (symbol_table::release_symbol): Do not pass uid.
20311 (symbol_table::allocate_cgraph_symbol): Do not set uid.
20312 * passes.c (uid_hash_t): Record removed_nodes by their uids.
20313 (remove_cgraph_node_from_order): Use the removed_nodes set.
20314 (do_per_function_toporder): Likwise.
20315 * symbol-summary.h (symtab_insertion): Use cgraph_node::uid
20316 instead of summary_uid.
20317 (symtab_removal): Likewise.
20318 (symtab_duplication): Likewise.
20320 2018-06-08 Martin Liska <mliska@suse.cz>
20322 * ipa-cp.c (ipcp_store_bits_results): Use
20323 ipcp_transformation_sum.
20324 (ipcp_store_vr_results): Likewise.
20325 * ipa-prop.c (ipcp_grow_transformations_if_necessary): Renamed
20327 (ipcp_transformation_initialize): ... this.
20328 (ipa_set_node_agg_value_chain):
20329 (ipa_node_params_t::duplicate): Use ipcp_transformation_sum.
20330 (write_ipcp_transformation_info): Likewise.
20331 (read_ipcp_transformation_info): Likewise.
20332 (ipcp_update_bits): Likewise.
20333 (ipcp_update_vr): Likewise.
20334 (ipcp_transform_function): Likewise.
20335 * ipa-prop.h: Rename ipcp_transformation_summary to
20336 ipcp_transformation.
20337 (class ipcp_transformation_t): New function summary.
20338 (ipcp_get_transformation_summary): Use ipcp_transformation_sum.
20339 (ipa_get_agg_replacements_for_node): Likewise.
20341 2018-06-08 Martin Liska <mliska@suse.cz>
20343 * ipa-pure-const.c (struct funct_state_d): Do it class instead
20345 (class funct_state_summary_t): New function_summary class.
20346 (has_function_state): Remove.
20347 (get_function_state): Likewise.
20348 (set_function_state): Likewise.
20349 (add_new_function): Likewise.
20350 (funct_state_summary_t::insert): New function.
20351 (duplicate_node_data): Remove.
20352 (remove_node_data): Remove.
20353 (funct_state_summary_t::duplicate): New function.
20354 (register_hooks): Create new funct_state_summaries.
20355 (pure_const_generate_summary): Use it.
20356 (pure_const_write_summary): Likewise.
20357 (pure_const_read_summary): Likewise.
20358 (propagate_pure_const): Likewise.
20359 (propagate_nothrow): Likewise.
20360 (dump_malloc_lattice): Likewise.
20361 (propagate_malloc): Likewise.
20362 (execute): Do not register hooks, just remove summary
20364 (pass_ipa_pure_const::pass_ipa_pure_const): Simplify
20367 2018-06-08 Martin Liska <mliska@suse.cz>
20369 * ipa-reference.c (remove_node_data): Remove.
20370 (duplicate_node_data): Likewise.
20371 (class ipa_ref_var_info_summary_t): New class.
20372 (class ipa_ref_opt_summary_t): Likewise.
20373 (get_reference_vars_info): Use ipa_ref_var_info_summaries.
20374 (get_reference_optimization_summary): Use
20375 ipa_ref_opt_sum_summaries.
20376 (set_reference_vars_info): Remove.
20377 (set_reference_optimization_summary): Likewise.
20378 (ipa_init): Create summaries.
20379 (init_function_info): Use function summary.
20380 (ipa_ref_opt_summary_t::duplicate): New function.
20381 (ipa_ref_opt_summary_t::remove): New function.
20382 (get_read_write_all_from_node): Fix GNU coding style.
20383 (propagate): Use function summary.
20384 (write_node_summary_p): Fix GNU coding style.
20385 (stream_out_bitmap): Likewise.
20386 (ipa_reference_read_optimization_summary): Use function summary.
20387 (ipa_reference_c_finalize): Do not release hooks.
20389 2018-06-08 Martin Liska <mliska@suse.cz>
20391 * ipa-fnsummary.c (dump_ipa_call_summary): Use ::get method.
20392 (analyze_function_body): Extract multiple calls of get_create.
20393 * ipa-inline-analysis.c (simple_edge_hints): Likewise.
20394 * ipa-inline.c (recursive_inlining): Use ::get method.
20395 * ipa-inline.h (estimate_edge_growth): Likewise.
20397 2018-06-08 Martin Liska <mliska@suse.cz>
20399 * hsa-common.h (enum hsa_function_kind): Rename HSA_NONE to
20401 (hsa_function_summary::hsa_function_summary): Use the new enum
20403 (hsa_gpu_implementation_p): Use hsa_summaries::get.
20404 * hsa-gen.c (hsa_get_host_function): Likewise.
20405 (get_brig_function_name): Likewise.
20406 * ipa-hsa.c (process_hsa_functions): Likewise.
20407 (ipa_hsa_write_summary): Likewise.
20408 * symbol-summary.h (symtab_duplication): Use ::get function/
20409 (get): New function.
20411 2018-06-08 Martin Liska <mliska@suse.cz>
20413 * config/i386/i386.c (ix86_can_inline_p): Use get_create instead
20415 * hsa-common.c (hsa_summary_t::link_functions): Likewise.
20416 (hsa_register_kernel): Likewise.
20417 * hsa-common.h (hsa_gpu_implementation_p): Likewise.
20418 * hsa-gen.c (hsa_get_host_function): Likewise.
20419 (get_brig_function_name): Likewise.
20420 (generate_hsa): Likewise.
20421 (pass_gen_hsail::execute): Likewise.
20422 * ipa-cp.c (ipcp_cloning_candidate_p): Likewise.
20423 (devirtualization_time_bonus): Likewise.
20424 (ipcp_propagate_stage): Likewise.
20425 * ipa-fnsummary.c (redirect_to_unreachable): Likewise.
20426 (edge_set_predicate): Likewise.
20427 (evaluate_conditions_for_known_args): Likewise.
20428 (evaluate_properties_for_edge): Likewise.
20429 (ipa_fn_summary::reset): Likewise.
20430 (ipa_fn_summary_t::duplicate): Likewise.
20431 (dump_ipa_call_summary): Likewise.
20432 (ipa_dump_fn_summary): Likewise.
20433 (analyze_function_body): Likewise.
20434 (compute_fn_summary): Likewise.
20435 (estimate_edge_devirt_benefit): Likewise.
20436 (estimate_edge_size_and_time): Likewise.
20437 (estimate_calls_size_and_time): Likewise.
20438 (estimate_node_size_and_time): Likewise.
20439 (inline_update_callee_summaries): Likewise.
20440 (remap_edge_change_prob): Likewise.
20441 (remap_edge_summaries): Likewise.
20442 (ipa_merge_fn_summary_after_inlining): Likewise.
20443 (ipa_update_overall_fn_summary): Likewise.
20444 (read_ipa_call_summary): Likewise.
20445 (inline_read_section): Likewise.
20446 (write_ipa_call_summary): Likewise.
20447 (ipa_fn_summary_write): Likewise.
20448 (ipa_free_fn_summary): Likewise.
20449 * ipa-hsa.c (process_hsa_functions): Likewise.
20450 (ipa_hsa_write_summary): Likewise.
20451 (ipa_hsa_read_section): Likewise.
20452 * ipa-icf.c (sem_function::merge): Likewise.
20453 * ipa-inline-analysis.c (simple_edge_hints): Likewise.
20454 (do_estimate_edge_time): Likewise.
20455 (estimate_size_after_inlining): Likewise.
20456 (estimate_growth): Likewise.
20457 (growth_likely_positive): Likewise.
20458 * ipa-inline-transform.c (clone_inlined_nodes): Likewise.
20459 (inline_call): Likewise.
20460 * ipa-inline.c (caller_growth_limits): Likewise.
20461 (can_inline_edge_p): Likewise.
20462 (can_inline_edge_by_limits_p): Likewise.
20463 (compute_uninlined_call_time): Likewise.
20464 (compute_inlined_call_time): Likewise.
20465 (want_inline_small_function_p): Likewise.
20466 (edge_badness): Likewise.
20467 (update_caller_keys): Likewise.
20468 (update_callee_keys): Likewise.
20469 (recursive_inlining): Likewise.
20470 (inline_small_functions): Likewise.
20471 (inline_to_all_callers_1): Likewise.
20472 (dump_overall_stats): Likewise.
20473 (early_inline_small_functions): Likewise.
20474 (early_inliner): Likewise.
20475 * ipa-inline.h (estimate_edge_growth): Likewise.
20476 * ipa-profile.c (ipa_propagate_frequency_1): Likewise.
20477 * ipa-prop.c (ipa_make_edge_direct_to_target): Likewise.
20478 * ipa-prop.h (IPA_NODE_REF): Likewise.
20479 (IPA_EDGE_REF): Likewise.
20480 * ipa-pure-const.c (malloc_candidate_p): Likewise.
20481 (propagate_malloc): Likewise.
20482 * ipa-split.c (execute_split_functions): Likewise.
20483 * symbol-summary.h: Rename get to get_create.
20485 (get_create): Likewise.
20486 * tree-sra.c (ipa_sra_preliminary_function_checks): Likewise.
20488 2018-06-08 Martin Liska <mliska@suse.cz>
20490 * symbol-summary.h (release): Move definition out of class
20492 (symtab_removal): Likewise.
20493 (symtab_duplication): Likewise.
20495 2018-06-08 Martin Liska <mliska@suse.cz>
20497 * symbol-summary.h (function_summary): Move constructor
20498 implementation out of class declaration.
20499 (release): Likewise.
20500 (symtab_insertion): Likewise.
20501 (symtab_removal): Likewise.
20502 (symtab_duplication): Likewise.
20505 2018-06-08 Martin Liska <mliska@suse.cz>
20507 * Makefile.in: Remove support for MPX (macros, related functions,
20508 fields in cgraph_node, ...).
20509 * builtin-types.def (BT_BND): Likewise.
20510 (BT_FN_BND_CONST_PTR): Likewise.
20511 (BT_FN_CONST_PTR_BND): Likewise.
20512 (BT_FN_VOID_PTR_BND): Likewise.
20513 (BT_FN_BND_CONST_PTR_SIZE): Likewise.
20514 (BT_FN_VOID_CONST_PTR_BND_CONST_PTR): Likewise.
20515 * builtins.c (expand_builtin_memcpy_with_bounds): Likewise.
20516 (expand_builtin_mempcpy_with_bounds): Likewise.
20517 (expand_builtin_memset_with_bounds): Likewise.
20518 (expand_builtin_memset_args): Likewise.
20519 (std_expand_builtin_va_start): Likewise.
20520 (expand_builtin): Likewise.
20521 (expand_builtin_with_bounds): Likewise.
20522 * builtins.def (DEF_BUILTIN_CHKP): Likewise.
20523 (DEF_LIB_BUILTIN_CHKP): Likewise.
20524 (DEF_EXT_LIB_BUILTIN_CHKP): Likewise.
20525 (DEF_CHKP_BUILTIN): Likewise.
20526 (BUILT_IN_MEMCPY): Likewise.
20527 (BUILT_IN_MEMMOVE): Likewise.
20528 (BUILT_IN_MEMPCPY): Likewise.
20529 (BUILT_IN_MEMSET): Likewise.
20530 (BUILT_IN_STPCPY): Likewise.
20531 (BUILT_IN_STRCAT): Likewise.
20532 (BUILT_IN_STRCHR): Likewise.
20533 (BUILT_IN_STRCPY): Likewise.
20534 (BUILT_IN_STRLEN): Likewise.
20535 (BUILT_IN_MEMCPY_CHK): Likewise.
20536 (BUILT_IN_MEMMOVE_CHK): Likewise.
20537 (BUILT_IN_MEMPCPY_CHK): Likewise.
20538 (BUILT_IN_MEMSET_CHK): Likewise.
20539 (BUILT_IN_STPCPY_CHK): Likewise.
20540 (BUILT_IN_STRCAT_CHK): Likewise.
20541 (BUILT_IN_STRCPY_CHK): Likewise.
20542 * calls.c (store_bounds): Likewise.
20543 (emit_call_1): Likewise.
20544 (special_function_p): Likewise.
20545 (maybe_warn_nonstring_arg): Likewise.
20546 (initialize_argument_information): Likewise.
20547 (finalize_must_preallocate): Likewise.
20548 (compute_argument_addresses): Likewise.
20549 (expand_call): Likewise.
20550 * cfgexpand.c (expand_call_stmt): Likewise.
20551 (expand_return): Likewise.
20552 (expand_gimple_stmt_1): Likewise.
20553 (pass_expand::execute): Likewise.
20554 * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Likewise.
20555 (cgraph_node::remove): Likewise.
20556 (cgraph_node::dump): Likewise.
20557 (cgraph_node::verify_node): Likewise.
20558 * cgraph.h (chkp_function_instrumented_p): Likewise.
20559 (symtab_node::get_alias_target): Likewise.
20560 (cgraph_node::can_remove_if_no_direct_calls_and_refs_p): Likewise.
20561 (cgraph_local_p): Likewise.
20562 * cgraphbuild.c (cgraph_edge::rebuild_edges): Likewise.
20563 (cgraph_edge::rebuild_references): Likewise.
20564 * cgraphunit.c (varpool_node::finalize_decl): Likewise.
20565 (walk_polymorphic_call_targets): Likewise.
20566 (cgraph_node::expand_thunk): Likewise.
20567 (symbol_table::output_weakrefs): Likewise.
20568 * common/config/i386/i386-common.c (OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET): Likewise.
20569 (ix86_handle_option): Likewise.
20570 * config/i386/constraints.md: Likewise.
20571 * config/i386/i386-builtin-types.def (BND): Likewise.
20575 * config/i386/i386-builtin.def (BDESC_END): Likewise.
20576 (BDESC_FIRST): Likewise.
20578 * config/i386/i386-c.c (ix86_target_macros_internal): Likewise.
20579 * config/i386/i386-protos.h (ix86_bnd_prefixed_insn_p): Likewise.
20580 * config/i386/i386.c (enum reg_class): Likewise.
20581 (ix86_target_string): Likewise.
20582 (ix86_option_override_internal): Likewise.
20583 (ix86_conditional_register_usage): Likewise.
20584 (ix86_valid_target_attribute_inner_p): Likewise.
20585 (ix86_set_indirect_branch_type): Likewise.
20586 (ix86_set_current_function): Likewise.
20587 (ix86_function_arg_regno_p): Likewise.
20588 (init_cumulative_args): Likewise.
20589 (ix86_function_arg_advance): Likewise.
20590 (ix86_function_arg): Likewise.
20591 (ix86_pass_by_reference): Likewise.
20592 (ix86_function_value_regno_p): Likewise.
20593 (ix86_function_value_1): Likewise.
20594 (ix86_function_value_bounds): Likewise.
20595 (ix86_return_in_memory): Likewise.
20596 (ix86_setup_incoming_vararg_bounds): Likewise.
20597 (ix86_va_start): Likewise.
20598 (indirect_thunk_need_prefix): Likewise.
20599 (print_reg): Likewise.
20600 (ix86_print_operand): Likewise.
20601 (ix86_expand_call): Likewise.
20602 (ix86_output_function_return): Likewise.
20603 (reg_encoded_number): Likewise.
20604 (BDESC_VERIFYS): Likewise.
20605 (ix86_init_mpx_builtins): Likewise.
20606 (ix86_init_builtins): Likewise.
20607 (ix86_emit_cmove): Likewise.
20608 (ix86_emit_move_max): Likewise.
20609 (ix86_expand_builtin): Likewise.
20610 (ix86_builtin_mpx_function): Likewise.
20611 (ix86_get_arg_address_for_bt): Likewise.
20612 (ix86_load_bounds): Likewise.
20613 (ix86_store_bounds): Likewise.
20614 (ix86_load_returned_bounds): Likewise.
20615 (ix86_store_returned_bounds): Likewise.
20616 (ix86_class_likely_spilled_p): Likewise.
20617 (ix86_hard_regno_mode_ok): Likewise.
20618 (x86_order_regs_for_local_alloc): Likewise.
20619 (ix86_mitigate_rop): Likewise.
20620 (ix86_bnd_prefixed_insn_p): Likewise.
20621 (ix86_mpx_bound_mode): Likewise.
20622 (ix86_make_bounds_constant): Likewise.
20623 (ix86_initialize_bounds): Likewise.
20624 (TARGET_LOAD_BOUNDS_FOR_ARG): Likewise.
20625 (TARGET_STORE_BOUNDS_FOR_ARG): Likewise.
20626 (TARGET_LOAD_RETURNED_BOUNDS): Likewise.
20627 (TARGET_STORE_RETURNED_BOUNDS): Likewise.
20628 (TARGET_CHKP_BOUND_MODE): Likewise.
20629 (TARGET_BUILTIN_CHKP_FUNCTION): Likewise.
20630 (TARGET_CHKP_FUNCTION_VALUE_BOUNDS): Likewise.
20631 (TARGET_CHKP_MAKE_BOUNDS_CONSTANT): Likewise.
20632 (TARGET_CHKP_INITIALIZE_BOUNDS): Likewise.
20633 * config/i386/i386.h (TARGET_MPX): Likewise.
20634 (TARGET_MPX_P): Likewise.
20635 (VALID_BND_REG_MODE): Likewise.
20636 (FIRST_BND_REG): Likewise.
20637 (LAST_BND_REG): Likewise.
20638 (enum reg_class): Likewise.
20639 (BND_REG_P): Likewise.
20640 (BND_REGNO_P): Likewise.
20641 (BNDmode): Likewise.
20642 (ADJUST_INSN_LENGTH): Likewise.
20643 * config/i386/i386.md: Likewise.
20644 * config/i386/i386.opt: Likewise.
20645 * config/i386/linux-common.h (LIBMPX_LIBS): Likewise.
20646 (defined): Likewise.
20647 (LINK_MPX): Likewise.
20648 (MPX_SPEC): Likewise.
20649 (LIBMPX_SPEC): Likewise.
20650 (LIBMPXWRAPPERS_SPEC): Likewise.
20651 (CHKP_SPEC): Likewise.
20652 * config/i386/predicates.md: Likewise.
20653 * dbxout.c (dbxout_type): Likewise.
20654 * doc/extend.texi: Likewise.
20655 * doc/invoke.texi: Likewise.
20656 * doc/md.texi: Likewise.
20657 * doc/tm.texi: Likewise.
20658 * doc/tm.texi.in: Likewise.
20659 * dwarf2out.c (is_base_type): Likewise.
20660 (gen_formal_types_die): Likewise.
20661 (gen_subprogram_die): Likewise.
20662 (gen_type_die_with_usage): Likewise.
20663 (gen_decl_die): Likewise.
20664 (dwarf2out_late_global_decl): Likewise.
20665 * expr.c (expand_assignment): Likewise.
20666 (emit_storent_insn): Likewise.
20667 (store_expr_with_bounds): Likewise.
20668 (store_expr): Likewise.
20669 (expand_expr_real_1): Likewise.
20670 * expr.h (store_expr_with_bounds): Likewise.
20671 * function.c (use_register_for_decl): Likewise.
20672 (struct bounds_parm_data): Likewise.
20673 (assign_parms_augmented_arg_list): Likewise.
20674 (assign_parm_find_entry_rtl): Likewise.
20675 (assign_parm_is_stack_parm): Likewise.
20676 (assign_parm_load_bounds): Likewise.
20677 (assign_bounds): Likewise.
20678 (assign_parms): Likewise.
20679 (expand_function_start): Likewise.
20680 * gcc.c (CHKP_SPEC): Likewise.
20681 * gimple-fold.c (gimple_fold_builtin_memory_op): Likewise.
20682 * gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Likewise.
20683 (wrestrict_dom_walker::check_call): Likewise.
20684 * gimple.c (gimple_build_call_from_tree): Likewise.
20685 * gimple.h (enum gf_mask): Likewise.
20686 (gimple_call_with_bounds_p): Likewise.
20687 (gimple_call_set_with_bounds): Likewise.
20688 * gimplify.c (gimplify_init_constructor): Likewise.
20689 * ipa-cp.c (initialize_node_lattices): Likewise.
20690 (propagate_constants_across_call): Likewise.
20691 (find_more_scalar_values_for_callers_subset): Likewise.
20692 * ipa-hsa.c (process_hsa_functions): Likewise.
20693 * ipa-icf-gimple.c (func_checker::compare_gimple_call): Likewise.
20694 * ipa-icf.c (sem_function::merge): Likewise.
20695 * ipa-inline.c (early_inliner): Likewise.
20696 * ipa-pure-const.c (warn_function_noreturn): Likewise.
20697 (warn_function_cold): Likewise.
20698 (propagate_pure_const): Likewise.
20699 * ipa-ref.h (enum GTY): Likewise.
20700 * ipa-split.c (find_retbnd): Likewise.
20701 (consider_split): Likewise.
20702 (split_function): Likewise.
20703 * ipa-visibility.c (cgraph_externally_visible_p): Likewise.
20704 * ipa.c (walk_polymorphic_call_targets): Likewise.
20705 (symbol_table::remove_unreachable_nodes): Likewise.
20706 (process_references): Likewise.
20707 (cgraph_build_static_cdtor_1): Likewise.
20708 * lto-cgraph.c (lto_output_node): Likewise.
20709 (output_refs): Likewise.
20710 (compute_ltrans_boundary): Likewise.
20711 (input_overwrite_node): Likewise.
20712 (input_node): Likewise.
20713 (input_cgraph_1): Likewise.
20714 * params.def (PARAM_CHKP_MAX_CTOR_SIZE): Likewise.
20715 * passes.c (pass_manager::execute_early_local_passes): Likewise.
20716 (class pass_chkp_instrumentation_passes): Likewise.
20717 (make_pass_chkp_instrumentation_passes): Likewise.
20718 * passes.def: Likewise.
20719 * rtl.h (struct GTY): Likewise.
20720 (CALL_EXPR_WITH_BOUNDS_P): Likewise.
20721 * stor-layout.c (layout_type): Likewise.
20722 * symtab.c: Likewise.
20723 * target.def: Likewise.
20724 * targhooks.c (default_chkp_bound_type): Likewise.
20725 (default_chkp_bound_mode): Likewise.
20726 (default_builtin_chkp_function): Likewise.
20727 (default_chkp_function_value_bounds): Likewise.
20728 (default_chkp_make_bounds_constant): Likewise.
20729 (default_chkp_initialize_bounds): Likewise.
20730 * targhooks.h (default_chkp_bound_type): Likewise.
20731 (default_chkp_bound_mode): Likewise.
20732 (default_builtin_chkp_function): Likewise.
20733 (default_chkp_function_value_bounds): Likewise.
20734 (default_chkp_make_bounds_constant): Likewise.
20735 (default_chkp_initialize_bounds): Likewise.
20736 * toplev.c (compile_file): Likewise.
20737 (process_options): Likewise.
20738 * tree-core.h (DEF_BUILTIN): Likewise.
20739 (DEF_BUILTIN_CHKP): Likewise.
20740 * tree-inline.c (declare_return_variable): Likewise.
20741 (remap_gimple_stmt): Likewise.
20742 (copy_bb): Likewise.
20743 (initialize_inlined_parameters): Likewise.
20744 (expand_call_inline): Likewise.
20745 * tree-pass.h (make_pass_ipa_chkp_versioning): Likewise.
20746 (make_pass_ipa_chkp_early_produce_thunks): Likewise.
20747 (make_pass_ipa_chkp_produce_thunks): Likewise.
20748 (make_pass_chkp): Likewise.
20749 (make_pass_chkp_opt): Likewise.
20750 (make_pass_chkp_instrumentation_passes): Likewise.
20751 * tree-pretty-print.c (dump_generic_node): Likewise.
20752 * tree-ssa-ccp.c (insert_clobber_before_stack_restore): Likewise.
20753 * tree-ssa-dce.c (propagate_necessity): Likewise.
20754 (eliminate_unnecessary_stmts): Likewise.
20755 * tree-ssa-pre.c (create_expression_by_pieces): Likewise.
20756 * tree-ssa-sccvn.c (copy_reference_ops_from_call): Likewise.
20757 * tree-ssa-sccvn.h: Likewise.
20758 * tree-ssa-strlen.c (get_string_length): Likewise.
20759 (valid_builtin_call): Likewise.
20760 (adjust_last_stmt): Likewise.
20761 (handle_builtin_strchr): Likewise.
20762 (handle_builtin_strcpy): Likewise.
20763 (handle_builtin_stxncpy): Likewise.
20764 (handle_builtin_memcpy): Likewise.
20765 (handle_builtin_strcat): Likewise.
20766 (strlen_check_and_optimize_stmt): Likewise.
20767 * tree-stdarg.c (expand_ifn_va_arg_1): Likewise.
20768 * tree-streamer-in.c: Likewise.
20769 * tree-streamer.c (record_common_node): Likewise.
20770 * tree.c (tree_code_size): Likewise.
20771 (wide_int_to_tree_1): Likewise.
20772 (type_contains_placeholder_1): Likewise.
20773 (build_common_tree_nodes): Likewise.
20774 * tree.def (POINTER_BOUNDS_TYPE): Likewise.
20775 * tree.h (POINTER_BOUNDS_TYPE_P): Likewise.
20776 (POINTER_BOUNDS_P): Likewise.
20777 (BOUNDED_TYPE_P): Likewise.
20778 (BOUNDED_P): Likewise.
20779 (CALL_WITH_BOUNDS_P): Likewise.
20780 (pointer_bounds_type_node): Likewise.
20781 * value-prof.c (gimple_ic): Likewise.
20782 * var-tracking.c (vt_add_function_parameters): Likewise.
20783 * varasm.c (make_decl_rtl): Likewise.
20784 (assemble_start_function): Likewise.
20785 (output_constant): Likewise.
20786 (maybe_assemble_visibility): Likewise.
20787 * varpool.c (ctor_for_folding): Likewise.
20788 * chkp-builtins.def: Remove.
20789 * ipa-chkp.c: Remove.
20790 * ipa-chkp.h: Remove.
20791 * rtl-chkp.c: Remove.
20792 * rtl-chkp.h: Remove.
20793 * tree-chkp-opt.c: Remove.
20794 * tree-chkp.c: Remove.
20795 * tree-chkp.h: Remove.
20797 2018-06-07 Carl Love <cel@us.ibm.com>
20799 * config/rs6000/vsx.md (vextract_fp_from_shorth,
20800 vextract_fp_from_shortl): Add BE support.
20802 2018-06-07 Paul Koning <ni1d@arrl.net>
20804 * compare-elim.c (try_merge_compare): Don't merge compare if
20805 address contains a side effect.
20806 (try_eliminate_compare): Likewise.
20808 2018-06-07 Olga Makhotina <olga.makhotina@intel.com>
20810 * config.gcc: Support "tremont".
20811 * config/i386/driver-i386.c (host_detect_local_cpu): Detect "tremont".
20812 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
20814 * config/i386/i386.c (m_TREMONT): Define.
20815 (processor_target_table): Add "tremont".
20816 (PTA_TREMONT): Define.
20817 (ix86_lea_outperforms): Add TARGET_TREMONT.
20818 (get_builtin_code_for_version): Handle PROCESSOR_TREMONT.
20819 (fold_builtin_cpu): Add M_INTEL_TREMONT, replace M_INTEL_GOLDMONT
20820 and M_INTEL_GOLDMONT_PLUS.
20821 (fold_builtin_cpu): Add "tremont".
20822 (ix86_add_stmt_cost): Add TARGET_TREMONT.
20823 (ix86_option_override_internal): Add "tremont".
20824 * config/i386/i386.h (processor_costs): Define TARGET_TREMONT.
20825 (processor_type): Add PROCESSOR_TREMONT.
20826 * config/i386/x86-tune.def: Add m_TREMONT.
20827 * doc/invoke.texi: Add tremont as x86 -march=/-mtune= CPU type.
20829 2018-06-07 Jozef Lawrynowicz <jozef.l@mittosystems.com>
20831 * config/msp430/msp430.c (msp430_mcu_name): Set the "i" in the
20832 symbol defined for msp430i* devices to be lower case.
20834 2018-06-07 Richard Biener <rguenther@suse.de>
20836 * graphite-sese-to-poly.c (extract_affine): Avoid unneded
20837 wrapping. Properly wrap the result of a BIT_NOT_EXPR.
20838 Properly wrap signed arithmetic if overflow wraps.
20840 2018-06-07 Jakub Jelinek <jakub@redhat.com>
20842 PR tree-optimization/69615
20843 * tree-ssa-reassoc.c (optimize_range_tests_var_bound): If rhs2 is lhs
20844 of a cast from a same precision integral SSA_NAME in a bb dominated
20845 by first_bb, retry with rhs2 set to the rhs1 of the cast. Don't emit
20846 cast to utype if rhs2 has already a compatible type.
20848 2018-06-07 Richard Biener <rguenther@suse.de>
20850 PR tree-optimization/85935
20851 * graphite-scop-detection.c (find_params_in_bb): Analyze
20852 condition operands with respect to the correct loop. Assert
20853 the analysis doesn't fail.
20855 2018-06-04 Carl Love <cel@us.ibm.com>
20857 * config/rs6000/vsx.md (first_match_index_<mode>): Calculate index
20858 using natural element order. Use gen_lshrsi3 instead of gen_ashrsi3
20859 as it is slightly cheaper.
20860 (first_match_or_eos_index_<mode>):
20861 Calculate index using natural element order.
20862 (first_match_index_<mode>):
20863 Calculate index using natural element order.
20864 (first_match_or_eos_index_<mode>):
20865 Calculate index using natural order.
20866 (define_insn vclzlsbb): Change to define_insn vclzlsbb_<mode>.
20867 for BE and LE modes.
20868 * config/rs6000/rs6000-c.c: Rename P9V_BUILTIN_VCLZLSBB,
20869 P9V_BUILTIN_VCLZLSBB_V16QI.
20870 * config/rs6000/rs6000-builtin.def: Make VCLZLSBB mode
20873 2018-06-06 Kelvin Nilsen <kelvin@gcc.gnu.org>
20875 * doc/extend.texi (PowerPC AltiVec Built-in Functions): Adjust
20876 indentation and line wrap for many prototypes. Add missing
20877 @smallexample directives around block of prototypes for vec_xl and
20880 2018-06-05 Michael Meissner <meissner@linux.ibm.com>
20882 * config/rs6000/rs6000.c (rs6000_passes_ieee128): New boolean to
20883 track if we pass or return IEEE 128-bit floating point.
20884 (ieee128_mangling_gcc_8_1): New boolean to say whether to generate
20885 C++ mangling that is compatible with GCC 8.1.
20886 (TARGET_ASM_GLOBALIZE_DECL_NAME): Override target hook.
20887 (init_cumulative_args): Note if we pass or return IEEE 128-bit
20888 floating point types.
20889 (rs6000_function_arg_advance_1): Likewise.
20890 (rs6000_mangle_type): Optionally generate mangled names that match
20891 what GCC 8.1 generated for IEEE 128-bit floating point types.
20892 (rs6000_globalize_decl_name): If we have an external function that
20893 passes or returns IEEE 128-bit types, generate a weak reference
20894 from the mangled name used in GCC 8.1 to the current mangled
20896 (rs6000_init_builtins): Make __ibm128 use the long double type if
20897 long double is IBM extended double. Make __float128 use the long
20898 double type if long double is IEEE 128-bit.
20901 * config/rs6000/rs6000-builtin.def (BU_IBM128_2): New helper
20902 macro for __ibm128 built-in functions.
20903 (PACK_IF): Add __ibm128 pack/unpack functions.
20904 (UNPACK_IF): Likewise.
20905 * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Do not
20906 enable long double built-in functions if long double is IEEE
20907 128-bit floating point.
20908 (rs6000_invalid_builtin): Update long double built-in function
20910 (rs6000_expand_builtin): For PACK_IF and UNPACK_IF built-in
20911 functions, adjust the built-in function to use the long double
20912 built-in function if __ibm128 and long double are the same type.
20913 * doc/extend.texi (PowerPC builtins): Update documention for
20914 __builtin_{,un}pack_longdouble. Add documentation for
20915 __builtin_{,un}pack_ibm128.
20917 2018-06-06 Jim Wilson <jimw@sifive.com>
20919 * config/riscv/riscv.c (enum riscv_privilege_levels): New.
20920 (struct machine_function): New field interrupt_mode.
20921 (riscv_handle_type_attribute): New function. Add forward declaration.
20922 (riscv_attribute_table) <interrupt>: Use riscv_handle_type_attribute.
20923 (riscv_expand_epilogue): Check interrupt_mode field.
20924 (riscv_set_current_function): Check interrupt attribute args and
20925 set interrupt_mode field.
20926 * config/riscv/riscv.md (UNSPECV_SRET, UNSPECV_URET): New.
20927 (riscv_sret, riscv_uret): New.
20928 * doc/extend.texi (RISC-V Function Attributes) <interrupt>: Document
20929 new arguments to interrupt attribute.
20931 2018-06-06 Peter Bergner <bergner@vnet.ibm.com>
20934 * /config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for -mpower9.
20935 Don't handle -mcpu=power8 if -mpower9-vector is also used.
20937 2018-06-06 Kelvin Nilsen <kelvin@gcc.gnu.org>
20939 * config/rs6000/rs6000-builtin.def (VSX_BUILTIN_VEC_LD,
20940 VSX_BUILTIN_VEC_ST): Add comment to explain non-traditional uses.
20941 * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Remove
20942 several redundant entries.
20944 2018-06-06 David Malcolm <dmalcolm@redhat.com>
20946 * config/i386/i386-protos.h (ix86_expand_call): Strengthen return
20947 type from "rtx" to "rtx_insn *".
20948 * config/i386/i386.c (ix86_expand_split_stack_prologue): Likewise
20949 for local "call_insn", removing cast.
20950 (ix86_expand_call): Likewise, introducing a "call_insn" local.
20952 2018-06-06 Eric Botcazou <ebotcazou@adacore.com>
20954 PR tree-optimization/86066
20955 * gimple-ssa-store-merging.c (process_store): Do not bypass BIT_NOT_EXPR
20956 for BIT_INSERT_EXPR stores.
20958 2018-06-06 Richard Biener <rguenther@suse.de>
20960 PR tree-optimization/86062
20961 * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle arbitrary
20962 component refs ontop
20963 of to be offsetted base.
20965 2018-06-06 Jozef Lawrynowicz <jozef.l@mittosystems.com>
20967 * config/msp430/msp430.c (msp430_attr): Allow interrupt handlers
20968 to be static and remove check on interrupt attribute name.
20970 2018-06-05 Kelvin Nilsen <kelvin@gcc.gnu.org>
20972 * doc/extend.texi (PowerPC AltiVec Built-in Functions): Remove
20973 volatile qualifier from vec_lvsl and vec_lvsr argument prototypes.
20975 2018-06-05 Steve Ellcey <sellcey@cavium.com>
20978 * config/aarch64/aarch64-protos.h (aarch64_err_no_fpadvsimd): Remove
20980 * config/aarch64/aarch64-protos..c (aarch64_err_no_fpadvsimd):
20981 Remove second argument, change how error is called.
20982 (aarch64_layout_arg): Remove second argument from
20983 aarch64_err_no_fpadvsimd call.
20984 (aarch64_init_cumulative_args): Ditto.
20985 (aarch64_gimplify_va_arg_expr): Ditto.
20986 * config/aarch64/aarch64.md (mov<mode>): Ditto.
20988 2018-06-05 Uros Bizjak <ubizjak@gmail.com>
20990 * config/i386/i386.md (simple_return_indirect_internal): New expander.
20991 (*simple_return_indirect_internal<mode>): Rename from
20992 simple_return_indirect_internal. Use W mode iterator.
20993 (rstorssp): New expander.
20994 (*rstorssp<mode>): Rename from rstorssp. Use P mode iterator.
20995 (clrssbsy): New expander.
20996 (*clrssbsy<mode>): Rename from clrssbsy. Use P mode iterator.
20998 2018-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
21000 * config/arm/arm_cmse.h (cmse_nsfptr_create): Change typeof to
21002 (cmse_check_pointed_object): Likewise.
21004 2018-06-05 Martin Liska <mliska@suse.cz>
21006 PR gcov-profile/47618
21007 * doc/invoke.texi: Document how -fprofile-dir format
21010 2018-06-05 Richard Biener <rguenther@suse.de>
21012 * tree-cfgcleanup.c (cleanup_control_flow_pre): For edge
21013 removal pretend DOM info isn't available so we do not update
21014 it and only remove edges, not dominated blocks. Actually free
21015 DOM info in case we removed something. Remove unreachable blocks.
21016 (mfb_keep_latches): Work with either DOM info or marked backedges.
21017 (cleanup_tree_cfg_noloop): Do not remove unreachable blocks
21018 first. Mark backedges if DOM info isn't available.
21019 (Re-)compute DOM info after cleanup_control_flow_pre.
21021 2018-06-05 Richard Biener <rguenther@suse.de>
21023 * tree-cfg.c (struct locus_discrim_map): Store line, not location.
21024 (locus_discrim_hasher::hash): Adjust.
21025 (locus_discrim_hasher::equal): Likewise.
21026 (next_discriminator_for_locus): Work on line directly.
21027 (same_line_p): Pass in expanded locus1 as well.
21028 (assign_discriminators): Avoid redundant location expansions.
21030 2018-06-05 Richard Biener <rguenther@suse.de>
21032 PR tree-optimization/86046
21033 * tree-ssa.c (maybe_optimize_var): Clear DECL_GIMPLE_REG_P
21034 if required after clearing TREE_ADDRESSABLE.
21036 2018-06-05 Richard Biener <rguenther@suse.de>
21038 PR tree-optimization/86047
21039 * tree-ssa-loop.c (for_each_index): Glob handling of all
21040 decls and constants and really handle all of them.
21042 2018-06-05 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
21045 * config/arm/arm-builtins.c (arm_type_qualifiers): Add
21046 qualifier_void_pointer and qualifier_const_void_pointer.
21047 (arm_ldc_qualifiers, arm_stc_qualifiers): Use the above.
21048 (arm_init_builtins): Handle the above.
21049 * config/arm/arm_acle.h (__arm_cdp, __arm_ldc, __arm_ldcl, __arm_stc,
21050 __arm_stcl, __arm_mcr, __arm_cdp2, __arm_ldc2, __arm_ldcl2, __arm_stc2,
21051 __arm_stcl2,__arm_mcr2, __arm_mcrr, __arm_mcrr2): Remove return for
21054 2018-06-05 Martin Liska <mliska@suse.cz>
21056 * auto-profile.c (read_autofdo_file): Do not use
21057 gcov_ctr_summary struct.
21058 (afdo_callsite_hot_enough_for_early_inline): Likewise.
21059 * coverage.c (struct counts_entry): Likewise.
21060 (read_counts_file): Read just single summary entry.
21061 (get_coverage_counts): Use gcov_summary struct.
21062 * coverage.h (get_coverage_counts): Likewise.
21063 * gcov-dump.c (dump_working_sets): Likewise.
21064 (tag_summary): Dump just single summary.
21065 * gcov-io.c (gcov_write_summary): Write just histogram
21067 (gcov_read_summary): Read just single summary.
21068 (compute_working_sets): Use gcov_summary struct.
21069 * gcov-io.h (GCOV_TAG_SUMMARY_LENGTH): Remove usage
21070 of GCOV_COUNTERS_SUMMABLE.
21071 (GCOV_COUNTERS_SUMMABLE): Remove.
21072 (GCOV_FIRST_VALUE_COUNTER): Replace with
21073 GCOV_COUNTER_V_INTERVAL.
21074 (struct gcov_ctr_summary): Remove.
21075 (struct gcov_summary): Directly use fields of former
21077 (compute_working_sets): Use gcov_summary struct.
21078 * gcov.c (read_count_file): Do not use ctrs fields.
21079 * lto-cgraph.c (merge_profile_summaries): Use gcov_summary
21081 * lto-streamer.h (struct GTY): Make profile_info gcov_summary
21083 * profile.c: Likewise.
21084 * profile.h: Likewise.
21086 2018-06-05 Martin Liska <mliska@suse.cz>
21088 PR gcov-profile/84846
21089 * gcov.c (output_lines): Print working directory only
21090 in intermediate format.
21092 2018-06-05 Andreas Krebbel <krebbel@linux.ibm.com>
21094 * config/s390/s390-builtin-types.def: Add void function type.
21095 * config/s390/s390-builtins.def: Use the function type for the
21098 2018-06-04 Jim Wilson <jimw@sifive.com>
21100 * config/riscv/riscv-protos.h (riscv_expand_epilogue): Change bool arg
21102 * config/riscv/riscv.c (riscv_for_each_saved_reg): New args epilogue
21103 and maybe_eh_return. Change regno to unsigned int. Use new args to
21104 handle EH_RETURN_DATA_REGNO registers properly.
21105 (riscv_expand_prologue): Pass new args to riscv_for_each_saved_reg.
21106 (riscv_expand_epilogue): Update comment. Change argument name and
21107 type. Update code to use new name and type. Pass new args to
21108 riscv_for_each_saved_reg. Only use EH_RETURN_STACKADJ_RTX when
21110 * config/riscv/riscv.md (NORMAL_RETURN): New.
21111 (SIBCALL_RETURN, EXCEPTION_RETURN): New.
21112 (epilogue, sibcall_epilogue): Update riscv_expand_epilogue arg.
21113 (eh_return): Call gen_eh_return_internal and emit barrier.
21114 (eh_return_internal): Call riscv_expand_epilogue.
21116 2018-06-04 Eric Botcazou <ebotcazou@adacore.com>
21118 * gimple-ssa-store-merging.c (struct merged_store_group): Move up
21119 bit_insertion field and declare can_be_merged_into method.
21120 (merged_store_group::can_be_merged_into): New method.
21121 (imm_store_chain_info::coalesce_immediate): Call it to decide whether
21122 consecutive non-overlapping stores can be merged. Turn MEM_REF stores
21123 into BIT_INSERT_EXPR stores if the group contains a non-MEM_REF store.
21125 2018-06-04 Richard Biener <rguenther@suse.de>
21127 PR tree-optimization/85955
21128 * builtins.c (fold_builtin_sincos): Convert pointers to
21129 destination to appropriate type before dereferencing.
21131 2018-06-04 Segher Boessenkool <segher@kernel.crashing.org>
21133 * config/rs6000/rs6000.md (abs<mode>2 for FLOAT128): Handle IFmode.
21135 2018-06-04 Richard Sandiford <richard.sandiford@linaro.org>
21137 * expr.c (expand_expr_real_1): Force the operand into memory if
21138 its TYPE_MODE is BLKmode and if there is no integer mode for
21139 the number of bits being extracted.
21141 2018-06-04 Jakub Jelinek <jakub@redhat.com>
21145 * config/i386/sse.md (<avx512>_eq<mode>3<mask_scalar_merge_name>_1):
21146 Use vptestnm rather than vptestm in (=Yc,v,C) variant.
21148 2018-06-04 Richard Biener <rguenther@suse.de>
21150 * tree-cfgcleanup.c (cleanup_tree_cfg_1): Fold into...
21151 (cleanup_tree_cfg_noloop): ... single caller. Do
21152 start_recording_case_labels later.
21154 2018-06-04 Sebastian Peryt <sebastian.peryt@intel.com>
21156 * config/i386/cldemoteintrin.h: Change define from _X86INTRIN_H_INCLUDED
21157 to _IMMINTRIN_H_INCLUDED.
21158 * config/i386/pconfigintrin.h: Ditto.
21159 * config/i386/waitpkgintrin.h: Ditto.
21160 * config/i386/immintrin.h: Add includes for sgxintrin.h,
21161 pconfigintrin.h, waitpkgintrin.h and cldemoteintrin.h.
21162 * config/i386/x86intrin.h: Remove includes for mintrin.h, xmmintrin.h,
21163 emmintrin.h, pmmintrin.h, tmmintrin.h, smmintrin.h, wmmintrin.h,
21164 bmiintrin.h, bmi2intrin.h, lzcntintrin.h, sgxintrin.h, pconfigintrin.h,
21165 waitpkgintrin.h and cldemoteintrin.h.
21167 2018-06-04 Richard Biener <rguenther@suse.de>
21169 PR tree-optimization/86038
21170 * tracer.c (find_best_successor): Check probability for
21171 being initialized, bail out if not.
21173 2018-06-04 Richard Earnshaw <rearnsha@arm.com>
21176 * config/arm/arm-cpus.in (ALL_QUIRKS): Add xscale feature to the list
21177 of bits to ignore when comparing architectures.
21179 2018-06-04 Jakub Jelinek <jakub@redhat.com>
21181 PR tree-optimization/69615
21182 * fold-const.c (merge_ranges): If range1 is - [x, x] and x is the
21183 maximum or minimum of the type, try to merge it also as if
21184 range1 is + [-, x - 1] or + [x + 1, -].
21187 * tree.c (inchash::add_expr): Handle IDENTIFIER_NODE.
21189 2018-06-03 Eric Botcazou <ebotcazou@adacore.com>
21191 PR tree-optimization/86034
21192 * gimple-ssa-store-merging.c (output_merged_store): Convert the RHS to
21193 the unsigned bitfield type in a bit insertion sequence if it does not
21194 have a larger precision than the bitfield size.
21195 (process_store): Also bypass widening conversions for BIT_INSERT_EXPR.
21197 2018-06-03 Kito Cheng <kito.cheng@gmail.com>
21199 * config/nds32/nds32-peephole2.md: Add new patterns for code size.
21201 2018-06-03 Chung-Ju Wu <jasonwucj@gmail.com>
21203 * config/nds32/nds32-opts.h (nds32_arch_type): Add ARCH_V3J.
21204 * config/nds32/nds32.c (nds32_option_override): Consider ARCH_V3J.
21205 * config/nds32/nds32.h (TARGET_ISA_V3): Add ARCH_V3J checking.
21206 * config/nds32/nds32.opt (march): Add enum value Value(ARCH_V3J).
21208 2018-06-03 Chung-Ju Wu <jasonwucj@gmail.com>
21210 * common/config/nds32/nds32-common.c (nds32_option_optimization_table):
21211 Disable -fdelete-null-pointer-checks for ELF toolchain.
21213 2018-06-02 Chung-Ju Wu <jasonwucj@gmail.com>
21214 Kito Cheng <kito.cheng@gmail.com>
21216 * config.gcc (nds32*): Use nds32-linux.opt and nds32-elf.opt.
21217 (nds32le-*-*, nds32be-*-*): Integrate checking process.
21218 (nds32*-*-*): Add glibc and uclibc conditions.
21219 * common/config/nds32/nds32-common.c (nds32_except_unwind_info): New.
21220 (TARGET_EXCEPT_UNWIND_INFO): Define.
21221 * config/nds32/elf.h: New file.
21222 * config/nds32/linux.h: New file.
21223 * config/nds32/nds32-elf.opt: New file.
21224 * config/nds32/nds32-linux.opt: New file.
21225 * config/nds32/nds32-fp-as-gp.c
21226 (pass_nds32_fp_as_gp::gate): Consider TARGET_LINUX_ABI.
21227 * config/nds32/nds32.c (nds32_conditional_register_usage): Consider
21229 (nds32_asm_file_end): Ditto.
21230 (nds32_print_operand): Ditto.
21231 (nds32_insert_attributes): Ditto.
21232 (nds32_init_libfuncs): New function.
21233 (TARGET_HAVE_TLS): Define.
21234 (TARGET_INIT_LIBFUNCS): Define.
21235 * config/nds32/nds32.h (TARGET_DEFAULT_RELAX): Apply different relax
21237 (TARGET_ELF): Apply different mcmodel setting.
21238 (LINK_SPEC, LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): The content has
21239 been migrated into elf.h and linux.h files.
21240 * config/nds32/nds32.md (add_pc): Consider TARGET_LINUX_ABI.
21241 * config/nds32/nds32.opt (mvh): Consider TARGET_LINUX_ABI.
21242 (mcmodel): The content has been migrated into nds32-elf.opt and
21243 nds32-linux.opt files.
21244 * config/nds32/t-elf: New file.
21245 * config/nds32/t-linux: New file.
21247 2018-06-02 Chung-Ju Wu <jasonwucj@gmail.com>
21248 Shiva Chen <shiva0217@gmail.com>
21250 * config/nds32/constants.md (unspec_volatile_element): Add
21251 UNSPEC_VOLATILE_OMIT_FP_BEGIN and UNSPEC_VOLATILE_OMIT_FP_END.
21252 * config/nds32/nds32-fp-as-gp.c: New implementation of fp_as_gp
21254 * config/nds32/nds32-protos.h (nds32_naked_function_p): Declare.
21255 (make_pass_nds32_fp_as_gp): Declare.
21256 * config/nds32/nds32.c (nds32_register_passes): Add fp_as_gp as one
21258 (nds32_asm_function_end_prologue): Remove unused asm output.
21259 (nds32_asm_function_begin_epilogue): Remove unused asm output.
21260 (nds32_asm_file_start): Output necessary fp_as_gp information.
21261 (nds32_option_override): Adjust register usage.
21262 (nds32_expand_prologue): Consider fp_as_gp situation.
21263 (nds32_expand_prologue_v3push): Consider fp_as_gp situation.
21264 * config/nds32/nds32.md (prologue): Check fp_as_gp_p and naked_p.
21267 (simple_return): Ditto.
21268 (omit_fp_begin): Output special directive for fp_as_gp.
21269 (omit_fp_end): Output special directive for fp_as_gp.
21270 * config/nds32/nds32.opt (mfp-as-gp, mno-fp-as-gp, mforce-fp-as-gp,
21271 mforbid-fp-as-gp): New options.
21273 2018-06-01 Mark Wielaard <mark@klomp.org>
21275 * dwarf2out.c (dwarf2out_finish): Remove generation of
21276 DW_AT_loclists_base.
21278 2018-06-01 Eric Botcazou <ebotcazou@adacore.com>
21280 * gimple-ssa-store-merging.c: Include gimple-fold.h.
21281 (struct store_immediate_info): Document BIT_INSERT_EXPR stores.
21282 (struct merged_store_group): Add bit_insertion field.
21283 (dump_char_array): Use standard hexadecimal format.
21284 (merged_store_group::merged_store_group): Set bit_insertion to false.
21285 (merged_store_group::apply_stores): Use optimal buffer size. Deal
21286 with BIT_INSERT_EXPR stores. Move up code updating the mask and
21287 also print the mask in the dump file.
21288 (pass_store_merging::gate): Minor tweak.
21289 (imm_store_chain_info::coalesce_immediate): Fix wrong association
21290 of stores with groups in dump. Allow coalescing of BIT_INSERT_EXPR
21291 stores with INTEGER_CST stores.
21292 (count_multiple_uses) <BIT_INSERT_EXPR>: New case.
21293 (imm_store_chain_info::output_merged_store): Add try_bitpos variable
21294 and use it throughout. Generate bit insertion sequences if need be.
21295 (pass_store_merging::process_store): Remove redundant condition.
21296 Record stores from a SSA name to a bit-field with BIT_INSERT_EXPR.
21298 2018-06-01 Segher Boessenkool <segher@kernel.crashing.org>
21300 * config/rs6000/rs6000.c (rs6000_mangle_type): Change the mangling of
21301 the 128-bit floating point types. Fix function comment.
21303 2018-06-01 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
21305 * config/aarch64/aarch64-simd.md
21306 (aarch64_simd_vec_unpack<su>_lo_<mode>): Use UXTL and SXTL assembler
21308 (aarch64_simd_vec_unpack<su>_hi_<mode>): Use UXTL2 and SXTL2 assembler
21311 2018-06-01 Richard Sandiford <richard.sandiford@linaro.org>
21313 PR tree-optimization/85989
21314 * gimple-ssa-backprop.c (backprop::m_visited_phis): New member
21316 (backprop::intersect_uses): Check it when deciding whether this
21317 is a backedge reference.
21318 (backprop::process_block): Add each phi to m_visited_phis
21319 after visiting it, then clear it at the end.
21321 2018-06-01 Richard Biener <rguenther@suse.de>
21323 * tree-vectorizer.h (vect_dr_stmt): New function.
21324 (vect_get_load_cost): Adjust.
21325 (vect_get_store_cost): Likewise.
21326 * tree-vect-data-refs.c (vect_analyze_data_ref_dependence):
21327 Use vect_dr_stmt instead of DR_SMTT.
21328 (vect_record_base_alignments): Likewise.
21329 (vect_calculate_target_alignment): Likewise.
21330 (vect_compute_data_ref_alignment): Likewise and make static.
21331 (vect_update_misalignment_for_peel): Likewise.
21332 (vect_verify_datarefs_alignment): Likewise.
21333 (vector_alignment_reachable_p): Likewise.
21334 (vect_get_data_access_cost): Likewise. Pass down
21335 vinfo to vect_get_load_cost/vect_get_store_cost instead of DR.
21336 (vect_get_peeling_costs_all_drs): Likewise.
21337 (vect_peeling_hash_get_lowest_cost): Likewise.
21338 (vect_enhance_data_refs_alignment): Likewise.
21339 (vect_find_same_alignment_drs): Likewise.
21340 (vect_analyze_data_refs_alignment): Likewise.
21341 (vect_analyze_group_access_1): Likewise.
21342 (vect_analyze_group_access): Likewise.
21343 (vect_analyze_data_ref_access): Likewise.
21344 (vect_analyze_data_ref_accesses): Likewise.
21345 (vect_vfa_segment_size): Likewise.
21346 (vect_small_gap_p): Likewise.
21347 (vectorizable_with_step_bound_p): Likewise.
21348 (vect_prune_runtime_alias_test_list): Likewise.
21349 (vect_analyze_data_refs): Likewise.
21350 (vect_supportable_dr_alignment): Likewise.
21351 * tree-vect-loop-manip.c (get_misalign_in_elems): Likewise.
21352 (vect_gen_prolog_loop_niters): Likewise.
21353 * tree-vect-loop.c (vect_analyze_loop_2): Likewise.
21354 * tree-vect-patterns.c (vect_recog_bool_pattern): Do not
21356 (vect_recog_mask_conversion_pattern): Likewise.
21357 (vect_try_gather_scatter_pattern): Likewise.
21358 * tree-vect-stmts.c (vect_model_store_cost): Pass stmt_info
21359 to vect_get_store_cost.
21360 (vect_get_store_cost): Get stmt_info instead of DR.
21361 (vect_model_load_cost): Pass stmt_info to vect_get_load_cost.
21362 (vect_get_load_cost): Get stmt_info instead of DR.
21364 2018-06-01 Richard Biener <rguenther@suse.de>
21366 PR middle-end/86017
21367 * gimple-fold.c (var_decl_component_p): Also allow offsetted
21368 vars wrapped in MEM_REFs.
21370 2018-06-01 Richard Sandiford <richard.sandiford@linaro.org>
21372 * config/aarch64/aarch64.c (aarch64_ira_change_pseudo_allocno_class):
21373 Fix subreg tests so that we only return a choice between
21374 GENERAL_REGS and FP_REGS if the original classes included both.
21376 2018-06-01 Richard Biener <rguenther@suse.de>
21379 * tree-ssa-structalias.c (get_function_part_constraint):
21380 Handle NULL fi->decl.
21381 (find_func_aliases_for_call): Properly handle indirect
21382 fi from direct call.
21383 (find_func_clobbers): Likewise.
21384 (ipa_pta_execute): Likewise.
21385 (create_variable_info_for): For functions that are ifunc_resolver
21386 resolve to a varinfo that contains the result of the resolver call.
21387 (associate_varinfo_to_alias): Do not treat ifunc resolvers as
21390 2018-05-31 Michael Collison <michael.collison@arm.com>
21392 * config/aarch64/aarch64.md:
21393 (*fix_to_zero_extenddfdi2): New pattern.
21394 * gcc.target/aarch64/fix_extend1.c: New testcase.
21396 2018-05-31 Qing Zhao <qing.zhao@oracle.com>
21398 PR middle-end/78809
21399 PR middle-end/83026
21400 * builtins.c (expand_builtin): Add the handling of BUILT_IN_STRCMP_EQ
21401 and BUILT_IN_STRNCMP_EQ.
21402 * builtins.def: Add new builtins BUILT_IN_STRCMP_EQ and
21403 BUILT_IN_STRNCMP_EQ.
21404 * gimple-fold.c (gimple_fold_builtin_string_compare): Add the
21405 handling of BUILTIN_IN_STRCMP_EQ and BUILT_IN_STRNCMP_EQ.
21406 (gimple_fold_builtin): Likewise.
21407 * tree-ssa-strlen.c (compute_string_length): New function.
21408 (determine_min_obsize): New function.
21409 (handle_builtin_string_cmp): New function to handle calls to
21410 string compare functions.
21411 (strlen_optimize_stmt): Add handling to builtin string compare
21413 * tree-ssa-structalias.c (find_func_aliases_for_builtin_call):
21414 Add the handling of BUILT_IN_STRCMP_EQ and BUILT_IN_STRNCMP_EQ.
21415 * tree.c (build_common_builtin_nodes): Add new defines of
21416 BUILT_IN_STRNCMP_EQ and BUILT_IN_STRCMP_EQ.
21418 2018-05-31 Jakub Jelinek <jakub@redhat.com>
21421 * bb-reorder.c (pass_partition_blocks::gate): Return false for
21422 functions with naked attribute.
21424 2018-05-31 Uros Bizjak <ubizjak@gmail.com>
21426 * config/i386/sse.md (avx_vec_concat<mode>):
21427 Substitute concat_tg_mode mode attribute with xtg_mode.
21428 (<mask_codefor>avx512dq_broadcast<mode><mask_name>_1): Ditto.
21429 (concat_tg_mode): Remove mode attribute.
21431 2018-05-31 Martin Sebor <msebor@redhat.com>
21434 * calls.c (alloc_max_size): Correct a logic error/typo.
21435 Treat excessive arguments as infinite. Warn for invalid arguments.
21436 * doc/invoke.texi (-Walloc-size-larger-than): Update.
21438 2018-05-31 H.J. Lu <hongjiu.lu@intel.com>
21441 * config/i386/x86-tune.def: Re-enable partial_reg_dependency
21442 and movx for Haswell.
21444 2018-05-31 Chung-Lin Tang <cltang@codesourcery.com>
21445 Cesar Philippidis <cesar@codesourcery.com>
21447 PR middle-end/85879
21448 * gimplify.c (gimplify_adjust_omp_clauses): Add 'remove = true'
21449 when emitting error on private/firstprivate reductions.
21450 * omp-low.c (lower_omp_target): Avoid reference-type processing
21451 on pointers for firstprivate clause.
21453 2018-05-31 Sameera Deshpande <sameera.deshpande@linaro.org>
21455 * config/aarch64/aarch64-simd-builtins.def (ld1x3): New.
21458 * config/aarch64/aarch64-simd.md
21459 (aarch64_ld1x3<VALLDIF:mode>): New pattern.
21460 (aarch64_ld1_x3_<mode>): Likewise
21461 (aarch64_st1x2<VALLDIF:mode>): Likewise
21462 (aarch64_st1_x2_<mode>): Likewise
21463 (aarch64_st1x3<VALLDIF:mode>): Likewise
21464 (aarch64_st1_x3_<mode>): Likewise
21465 * config/aarch64/arm_neon.h (vld1_u8_x3): New function.
21466 (vld1_s8_x3): Likewise.
21467 (vld1_u16_x3): Likewise.
21468 (vld1_s16_x3): Likewise.
21469 (vld1_u32_x3): Likewise.
21470 (vld1_s32_x3): Likewise.
21471 (vld1_u64_x3): Likewise.
21472 (vld1_s64_x3): Likewise.
21473 (vld1_f16_x3): Likewise.
21474 (vld1_f32_x3): Likewise.
21475 (vld1_f64_x3): Likewise.
21476 (vld1_p8_x3): Likewise.
21477 (vld1_p16_x3): Likewise.
21478 (vld1_p64_x3): Likewise.
21479 (vld1q_u8_x3): Likewise.
21480 (vld1q_s8_x3): Likewise.
21481 (vld1q_u16_x3): Likewise.
21482 (vld1q_s16_x3): Likewise.
21483 (vld1q_u32_x3): Likewise.
21484 (vld1q_s32_x3): Likewise.
21485 (vld1q_u64_x3): Likewise.
21486 (vld1q_s64_x3): Likewise.
21487 (vld1q_f16_x3): Likewise.
21488 (vld1q_f32_x3): Likewise.
21489 (vld1q_f64_x3): Likewise.
21490 (vld1q_p8_x3): Likewise.
21491 (vld1q_p16_x3): Likewise.
21492 (vld1q_p64_x3): Likewise.
21493 (vst1_s64_x2): Likewise.
21494 (vst1_u64_x2): Likewise.
21495 (vst1_f64_x2): Likewise.
21496 (vst1_s8_x2): Likewise.
21497 (vst1_p8_x2): Likewise.
21498 (vst1_s16_x2): Likewise.
21499 (vst1_p16_x2): Likewise.
21500 (vst1_s32_x2): Likewise.
21501 (vst1_u8_x2): Likewise.
21502 (vst1_u16_x2): Likewise.
21503 (vst1_u32_x2): Likewise.
21504 (vst1_f16_x2): Likewise.
21505 (vst1_f32_x2): Likewise.
21506 (vst1_p64_x2): Likewise.
21507 (vst1q_s8_x2): Likewise.
21508 (vst1q_p8_x2): Likewise.
21509 (vst1q_s16_x2): Likewise.
21510 (vst1q_p16_x2): Likewise.
21511 (vst1q_s32_x2): Likewise.
21512 (vst1q_s64_x2): Likewise.
21513 (vst1q_u8_x2): Likewise.
21514 (vst1q_u16_x2): Likewise.
21515 (vst1q_u32_x2): Likewise.
21516 (vst1q_u64_x2): Likewise.
21517 (vst1q_f16_x2): Likewise.
21518 (vst1q_f32_x2): Likewise.
21519 (vst1q_f64_x2): Likewise.
21520 (vst1q_p64_x2): Likewise.
21521 (vst1_s64_x3): Likewise.
21522 (vst1_u64_x3): Likewise.
21523 (vst1_f64_x3): Likewise.
21524 (vst1_s8_x3): Likewise.
21525 (vst1_p8_x3): Likewise.
21526 (vst1_s16_x3): Likewise.
21527 (vst1_p16_x3): Likewise.
21528 (vst1_s32_x3): Likewise.
21529 (vst1_u8_x3): Likewise.
21530 (vst1_u16_x3): Likewise.
21531 (vst1_u32_x3): Likewise.
21532 (vst1_f16_x3): Likewise.
21533 (vst1_f32_x3): Likewise.
21534 (vst1_p64_x3): Likewise.
21535 (vst1q_s8_x3): Likewise.
21536 (vst1q_p8_x3): Likewise.
21537 (vst1q_s16_x3): Likewise.
21538 (vst1q_p16_x3): Likewise.
21539 (vst1q_s32_x3): Likewise.
21540 (vst1q_s64_x3): Likewise.
21541 (vst1q_u8_x3): Likewise.
21542 (vst1q_u16_x3): Likewise.
21543 (vst1q_u32_x3): Likewise.
21544 (vst1q_u64_x3): Likewise.
21545 (vst1q_f16_x3): Likewise.
21546 (vst1q_f32_x3): Likewise.
21547 (vst1q_f64_x3): Likewise.
21548 (vst1q_p64_x3): Likewise.
21550 2018-05-30 Jozef Lawrynowicz <jozef.l@mittosystems.com>
21552 * config/msp430/msp430.c (msp430_output_labelref): Prepend
21553 user_label_prefix to name.
21555 * tree-core.h: Update comment about the format of NAME string
21556 passed to handler in attribute_spec.
21558 * config/msp430/msp430.md: Remove erroneous subreg expression from
21559 zero_extendqisi2 insn pattern. Remove msp430x ISA restriction on
21560 zero_extend{q,h}isi2.
21562 2018-05-30 Borislav Petkov <bp@suse.de>
21564 * doc/extend.texi: Document some architecture specific
21565 constraints and sort entries.
21567 2018-05-30 Martin Sebor <msebor@redhat.com>
21569 PR middle-end/85369
21570 * builtins.c (expand_builtin_stpcpy_1): New function.
21571 (expand_builtin_stpcpy): Call it, and call maybe_warn_nonstring_arg
21572 only if the former succeeds.
21574 2018-05-31 Sameera Deshpande <sameera.deshpande@linaro.org>
21576 * config/aarch64/aarch64-cores.def (saphira) : Add support for ARMv8.4
21579 2018-05-30 Jan Hubicka <hubicka@ucw.cz>
21581 * doc/invoke.texi (-flinker-output): Document
21583 2018-05-30 Jan Hubicka <hubicka@ucw.cz>
21585 * passes.c (ipa_write_summaries): Only modify statements if body
21587 * cgraphunit.c (ipa_passes): Also produce intermeidate code when
21588 incrementally linking.
21589 (ipa_passes): Likewise.
21590 * lto-cgraph.c (lto_output_node): When incrementally linking do not
21591 pass down resolution info.
21592 * common.opt (flag_incremental_link): Update info.
21593 * gcc.c (plugin specs): Turn flinker-output=* to
21594 -plugin-opt=-linker-output-known
21595 * toplev.c (compile_file): Also cut compilation when doing incremental
21597 * flag-types. (enum lto_partition_model): Add
21598 LTO_LINKER_OUTPUT_NOLTOREL.
21599 (invoke.texi): Add -flinker-output docs.
21600 * ipa.c (symbol_table::remove_unreachable_nodes): Handle LTO incremental
21601 link same way as WPA; do not stream in dead initializers.
21603 * dwarf2out.c (dwarf2out_die_ref_for_decl,
21604 darf2out_register_external_decl): Support incremental link.
21606 2018-05-30 Jan Hubicka <hubicka@ucw.cz>
21608 * lto-opts.c (lto_write_options): Skip OPT_dumpdir, OPT_fresolution_.
21610 2018-05-30 Jan Hubicka <hubicka@ucw.cz>
21612 * lto-wrapper.c (debug_objcopy): Add rename parameter; pass
21613 it down to simple_object_copy_lto_debug_sections.
21614 (run_gcc): Determine incremental LTO link time and configure
21615 lto1 into non-wpa mode, disable renaming of debug sections.
21617 2018-05-30 Kelvin Nilsen <kelvin@gcc.gnu.org>
21619 * doc/extend.texi (PowerPC AltiVec Built-in Functions): Remove
21620 descriptions of various incorrectly documented functions.
21622 2018-05-30 Andre Vieira <andre.simoesdiasvieira@arm.com>
21625 * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): Make
21626 address check not strict.
21628 2018-05-30 Richard Biener <rguenther@suse.de>
21630 PR tree-optimization/85964
21631 * tracer.c (better_p): Drop initialized count check, we only
21632 call the function with initialized counts now.
21633 (find_best_successor): Do find a best edge if one
21634 has uninitialized count.
21635 (find_best_predecessor): Likewise. Do BB frequency check only
21636 if count is initialized.
21638 2017-05-30 Jackson Woodruff <jackson.woodruff@arm.com>
21640 * config/aarch64/aarch64.c (aarch64_host_wide_int_compare): New.
21641 (aarch64_ldrstr_offset_compare): New.
21642 (aarch64_operands_adjust_ok_for_ldpstp): Update to consider all
21643 load/store orderings.
21644 (aarch64_gen_adjusted_ldpstp): Likewise.
21646 2018-05-30 Wilco Dijkstra <wdijkstr@arm.com>
21648 * config/aarch64/aarch64.c (aarch64_ira_change_pseudo_allocno_class):
21649 Check for subset of GENERAL_REGS and FP_REGS.
21650 * config/aarch64/aarch64-simd.md (aarch64_get_lane): Increase cost of
21653 2018-05-30 Richard Sandiford <richard.sandiford@linaro.org>
21655 * alias.c (adjust_offset_for_component_ref): Use poly_int_tree_p
21656 and wi::to_poly_offset. Add the current offset and then check
21657 whether the sum fits, rather than using an unchecked addition of
21658 a checked term. Check for a shwi rather than a uhwi.
21659 * expr.c (get_bit_range): Use tree_to_poly_uint64.
21660 (store_constructor): Use poly_int_tree_p.
21661 (expand_expr_real_1): Likewise.
21662 * function.c (assign_temp): Likewise.
21663 * fold-const.c (const_binop): Use poly_int_tree_p and
21664 wi::to_poly_offset.
21665 (fold_indirect_ref_1): Likewise. Use multiple_p to attempt an exact
21667 * ipa-icf-gimple.c (func_checker::compare_operand): Use
21668 to_poly_offset for MEM offsets.
21669 * ipa-icf.c (sem_variable::equals): Likewise.
21670 * stor-layout.c (compute_record_mode): Use poly_int_tree_p.
21671 * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): Use
21672 wi::to_poly_offset for BIT_FIELD_REF offsets.
21673 (vn_reference_maybe_forwprop_address): Use poly_int_tree_p and
21674 wi::to_poly_offset.
21675 * var-tracking.c (emit_note_insn_var_location): Use
21676 tree_to_poly_uint64.
21678 2018-05-29 Jim Wilson <jimw@sifive.com>
21680 * config/riscv/riscv.c (riscv_interrupt_type): Fix comment typo.
21682 2018-05-29 Uros Bizjak <ubizjak@gmail.com>
21685 * config/i386/i386.md (l<rounding_insn><MODEF:mode><SWI48:mode>2):
21686 Enable for TARGET_SSE4_1 and generate rounds{s,d} and cvtts{s,d}2si{,q}
21688 (sse4_1_round<mode>2): Use nonimmediate_operand
21689 for operand 1 predicate.
21691 2018-05-29 Martin Sebor <msebor@redhat.com>
21692 Richard Biener <rguenther@suse.de>
21695 * calls.c (get_size_range): Call determine_value_range instead
21696 of get_value_range..
21697 * tree-vrp.h (determine_value_range): Declared new function.
21698 * tree-vrp.c (determine_value_range_1, determine_value_range): New.
21700 2018-05-29 Richard Biener <rguenther@suse.de>
21702 * tree-vect-data-refs.c (vect_preserves_scalar_order_p): Make
21703 sure to use non-pattern stmts for get_earlier_stmt arguments.
21704 * tree-vectorizer.h (get_earlier_stmt): Assert we do not get
21705 called on pattern stmts.
21706 (get_later_stmt): Likewise.
21708 2018-05-29 Martin Liska <mliska@suse.cz>
21710 PR gcov-profile/85759
21711 * doc/gcov.texi: Document GCOV_ERROR_FILE and GCOV_EXIT_AT_ERROR
21714 2018-05-29 Jakub Jelinek <jakub@redhat.com>
21716 * tree-cfg.c (verify_gimple_assign_unary): Add checking for
21718 (verify_gimple_assign_binary): Check TYPE_VECTOR_SUBPARTS for
21722 * tree.def (VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR,
21723 VEC_PACK_FLOAT_EXPR): New tree codes.
21724 * tree-pretty-print.c (op_code_prio): Handle
21725 VEC_UNPACK_FIX_TRUNC_HI_EXPR and VEC_UNPACK_FIX_TRUNC_LO_EXPR.
21726 (dump_generic_node): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR,
21727 VEC_UNPACK_FIX_TRUNC_LO_EXPR and VEC_PACK_FLOAT_EXPR.
21728 * tree-inline.c (estimate_operator_cost): Likewise.
21729 * gimple-pretty-print.c (dump_binary_rhs): Handle VEC_PACK_FLOAT_EXPR.
21730 * fold-const.c (const_binop): Likewise.
21731 (const_unop): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR and
21732 VEC_UNPACK_FIX_TRUNC_LO_EXPR.
21733 * tree-cfg.c (verify_gimple_assign_unary): Likewise.
21734 (verify_gimple_assign_binary): Handle VEC_PACK_FLOAT_EXPR.
21735 * cfgexpand.c (expand_debug_expr): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR,
21736 VEC_UNPACK_FIX_TRUNC_LO_EXPR and VEC_PACK_FLOAT_EXPR.
21737 * expr.c (expand_expr_real_2): Likewise.
21738 * optabs.def (vec_packs_float_optab, vec_packu_float_optab,
21739 vec_unpack_sfix_trunc_hi_optab, vec_unpack_sfix_trunc_lo_optab,
21740 vec_unpack_ufix_trunc_hi_optab, vec_unpack_ufix_trunc_lo_optab): New
21742 * optabs.c (expand_widen_pattern_expr): For
21743 VEC_UNPACK_FIX_TRUNC_HI_EXPR and VEC_UNPACK_FIX_TRUNC_LO_EXPR use
21744 sign from result type rather than operand's type.
21745 (expand_binop_directly): For vec_packu_float_optab and
21746 vec_packs_float_optab allow result type to be different from operand's
21748 * optabs-tree.c (optab_for_tree_code): Handle
21749 VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR and
21750 VEC_PACK_FLOAT_EXPR. Formatting fixes.
21751 * tree-vect-generic.c (expand_vector_operations_1): Handle
21752 VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR and
21753 VEC_PACK_FLOAT_EXPR.
21754 * tree-vect-stmts.c (supportable_widening_operation): Handle
21756 (supportable_narrowing_operation): Handle FLOAT_EXPR.
21757 * config/i386/i386.md (fixprefix, floatprefix): New code attributes.
21758 * config/i386/sse.md (*float<floatunssuffix>v2div2sf2): Rename to ...
21759 (float<floatunssuffix>v2div2sf2): ... this. Formatting fix.
21760 (vpckfloat_concat_mode, vpckfloat_temp_mode, vpckfloat_op_mode): New
21762 (vec_pack<floatprefix>_float_<mode>): New expander.
21763 (vunpckfixt_mode, vunpckfixt_model, vunpckfixt_extract_mode): New mode
21765 (vec_unpack_<fixprefix>fix_trunc_lo_<mode>,
21766 vec_unpack_<fixprefix>fix_trunc_hi_<mode>): New expanders.
21767 * doc/md.texi (vec_packs_float_@var{m}, vec_packu_float_@var{m},
21768 vec_unpack_sfix_trunc_hi_@var{m}, vec_unpack_sfix_trunc_lo_@var{m},
21769 vec_unpack_ufix_trunc_hi_@var{m}, vec_unpack_ufix_trunc_lo_@var{m}):
21771 * doc/generic.texi (VEC_UNPACK_FLOAT_HI_EXPR,
21772 VEC_UNPACK_FLOAT_LO_EXPR): Fix pasto in description.
21773 (VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR,
21774 VEC_PACK_FLOAT_EXPR): Document.
21776 2018-05-29 Richard Biener <rguenther@suse.de>
21778 * tree-vectorizer.h (struct vec_info): Add stmt_vec_infos
21780 (stmt_vec_info_vec): Make pointer.
21781 (init_stmt_vec_info_vec): Remove.
21782 (free_stmt_vec_info_vec): Likewise.
21783 (set_stmt_vec_info_vec): New function.
21784 (free_stmt_vec_infos): Likewise.
21785 (vinfo_for_stmt): Adjust for stmt_vec_info_vec indirection.
21786 (set_vinfo_for_stmt): Likewise.
21787 (get_earlier_stmt): Likewise.
21788 (get_later_stmt): Likewise.
21789 * tree-vectorizer.c (stmt_vec_info_vec): Make pointer.
21790 (vec_info::vec_info): Allocate stmt_vec_infos and set the global.
21791 (vec_info::~vec_info): Free stmt_vec_infos.
21792 (vectorize_loops): Set the global stmt_vec_info_vec to NULL.
21793 Remove old init_stmt_vec_info_vec/free_stmt_vec_info_vec calls.
21794 (pass_slp_vectorize::execute): Likewise.
21795 * tree-vect-stmts.c (init_stmt_vec_info_vec): Remove.
21796 (free_stmt_vec_info_vec): Likewise.
21797 (set_stmt_vec_info_vec): New function.
21798 (free_stmt_vec_infos): Likewise.
21799 * tree-vect-loop.c (_loop_vec_info::~_loop_vec_info): Set
21800 the global stmt_vec_info_vec.
21801 * tree-parloops.c (gather_scalar_reductions): Use
21802 set_stmt_vec_info_vec/free_stmt_vec_infos and maintain a local
21805 2018-05-29 Richard Biener <rguenther@suse.de>
21807 * dominance.c (iterate_fix_dominators): Push/pop TV_DOMINANCE.
21809 2018-05-29 Martin Liska <mliska@suse.cz>
21810 David Malcolm <dmalcolm@redhat.com>
21812 * vec.c (test_reverse): New.
21813 (vec_c_tests): Add new test.
21814 * vec.h (vl_ptr>::reverse): New function.
21816 2018-05-29 Gerald Pfeifer <gerald@pfeifer.com>
21818 * config.gcc: Identify FreeBSD 3.x and 4.x as unsupported.
21820 * config/freebsd-spec.h (FBSD_LIB_SPEC): Only consider FreeBSD 5
21823 2018-05-28 Bernd Edlinger <bernd.edlinger@hotmail.de>
21825 * tree-dump.c (dump_node): Use splay_tree_delete_pointers.
21827 2018-05-28 Richard Biener <rguenther@suse.de>
21829 PR tree-optimization/85933
21830 * tree-vect-data-refs.c (vect_record_base_alignments): Only
21831 look at stmts marked as vectorizable.
21833 2018-05-28 Richard Biener <rguenther@suse.de>
21835 PR tree-optimization/85934
21836 * tree-vect-generic.c (expand_vector_operations_1): Hoist
21837 vector boolean check before scalar optimization.
21839 2018-05-28 Jakub Jelinek <jakub@redhat.com>
21841 * doc/invoke.texi (ARM Options): Use @item instead of @itemx
21844 2018-05-28 Mark Wielaard <mark@klomp.org>
21846 * dwarf2asm.c (dw2_asm_output_delta_uleb128): Add brackets around lab2
21847 if it is an expression containing a minus sign.
21849 2018-05-27 John David Anglin <danglin@gcc.gnu.org>
21851 * config/pa/pa-linux.h (NEED_INDICATE_EXEC_STACK): Define to 0.
21853 2018-05-27 Paul Koning <ni1d@arrl.net>
21855 * config/pdp11/pdp11.md (truncsihi2): Remove.
21857 2018-05-27 Monk Chiang <sh.chiang04@gmail.com>
21858 Chung-Ju Wu <jasonwucj@gmail.com>
21860 * config/nds32/nds32-intrinsic.md (unaligned_storedi): Modify patterns
21862 (unaligned_store_dw): Ditto.
21863 * config/nds32/nds32-memory-manipulation.c
21864 (nds32_expand_movmemsi_loop_known_size): Refactoring implementation.
21865 (nds32_gen_dup_4_byte_to_word_value): Rename to ...
21866 (nds32_gen_dup_4_byte_to_word_value_aux): ... this.
21867 (emit_setmem_word_loop): Rename to ...
21868 (emit_setmem_doubleword_loop): ... this.
21869 (nds32_gen_dup_4_byte_to_word_value): New function.
21870 (nds32_gen_dup_8_byte_to_double_word_value): New function.
21871 (nds32_expand_setmem_loop): Refine implementation.
21872 (nds32_expand_setmem_loop_v3m): Ditto.
21873 * config/nds32/nds32-multiple.md (unaligned_store_update_base_dw): New
21876 2018-05-27 Chung-Ju Wu <jasonwucj@gmail.com>
21878 * config/nds32/nds32.md (bswapsi2, bswaphi2): New patterns.
21880 2018-05-27 Chung-Ju Wu <jasonwucj@gmail.com>
21882 * config/nds32/nds32.c (nds32_attribute_table): Add "no_prologue".
21883 (nds32_init_machine_status): Initialize machine->attr_naked_p and
21884 machine->attr_no_prologue_p.
21885 (nds32_compute_stack_frame): Check "naked" and "no_prologue" attributes.
21886 (nds32_naked_function_p): Handle "naked" and "no_prologue" attributes.
21887 (nds32_expand_epilogue): Consider attr_naked_p.
21888 (nds32_expand_epilogue_v3pop): Likewise.
21889 (nds32_can_use_return_insn): Likewise.
21890 * config/nds32/nds32.h (machine_function): Add attr_naked_p and
21891 attr_no_prologue_p fields.
21892 * config/nds32/nds32.opt (mret-in-naked-func): New option.
21894 2018-05-27 Jakub Jelinek <jakub@redhat.com>
21897 * config/i386/i386.md (fixunssuffix, floatunssuffix): New code
21899 * config/i386/sse.md
21900 (<floatsuffix>float<sseintvecmodelower><mode>2<mask_name><round_name>):
21902 (float<floatunssuffix><sseintvecmodelower><mode>2<mask_name><round_name>):
21904 (<floatsuffix>float<sselongvecmodelower><mode>2<mask_name><round_name>):
21906 (float<floatunssuffix><sselongvecmodelower><mode>2<mask_name><round_name>):
21908 (*<floatsuffix>floatv2div2sf2): Rename to ...
21909 (*float<floatunssuffix>v2div2sf2): ... this.
21910 (<floatsuffix>floatv2div2sf2_mask): Rename to ...
21911 (float<floatunssuffix>v2div2sf2_mask): ... this.
21912 (*<floatsuffix>floatv2div2sf2_mask_1): Rename to ...
21913 (*float<floatunssuffix>v2div2sf2_mask_1): ... this.
21914 (<fixsuffix>fix_truncv8dfv8si2<mask_name><round_saeonly_name>): Rename
21916 (fix<fixunssuffix>_truncv8dfv8si2<mask_name><round_saeonly_name>):
21918 (<fixsuffix>fix_trunc<mode><sseintvecmodelower>2<mask_name><round_saeonly_name>):
21920 (fix<fixunssuffix>_trunc<mode><sseintvecmodelower>2<mask_name><round_saeonly_name>):
21922 (<fixsuffix>fix_trunc<mode><sselongvecmodelower>2<mask_name><round_saeonly_name>):
21924 (fix<fixunssuffix>_trunc<mode><sselongvecmodelower>2<mask_name><round_saeonly_name>):
21926 (<fixsuffix>fix_truncv2sfv2di2<mask_name>): Rename to ...
21927 (fix<fixunssuffix>_truncv2sfv2di2<mask_name>): ... this.
21928 (vec_pack_ufix_trunc_<mode>): Use gen_fixuns_truncv8dfv8si2 instead of
21929 gen_ufix_truncv8dfv8si2.
21930 * config/i386/i386-builtin.def (__builtin_ia32_cvttpd2uqq256_mask,
21931 __builtin_ia32_cvttpd2uqq128_mask, __builtin_ia32_cvttps2uqq256_mask,
21932 __builtin_ia32_cvttps2uqq128_mask, __builtin_ia32_cvtuqq2ps256_mask,
21933 __builtin_ia32_cvtuqq2ps128_mask, __builtin_ia32_cvtuqq2pd256_mask,
21934 __builtin_ia32_cvtuqq2pd128_mask, __builtin_ia32_cvttpd2udq512_mask,
21935 __builtin_ia32_cvtuqq2ps512_mask, __builtin_ia32_cvtuqq2pd512_mask,
21936 __builtin_ia32_cvttps2uqq512_mask, __builtin_ia32_cvttpd2uqq512_mask):
21937 Use fixuns instead ufix or floatuns instead ufloat in CODE_FOR_ names.
21939 2018-05-24 H.J. Lu <hongjiu.lu@intel.com>
21943 * varasm.c (assemble_alias): Lookup ifunc attribute on error.
21945 2018-05-25 Jim Wilson <jimw@sifive.com>
21947 * config/riscv/riscv-protos.h (riscv_epilogue_uses): New.
21948 * config/riscv/riscv.c (struct machine_function): Add
21949 interrupt_handler_p and attribute_checked_p fields.
21950 (riscv_attribute_table): Add interrupt.
21951 (riscv_interrupt_type_p): New.
21952 (riscv_save_reg_p): Save extra regs for interrupt handler.
21953 (riscv_use_save_libcall): Return false for interrupt handler.
21954 (riscv_first_stack_step): Add forward declaration.
21955 (riscv_compute_frame_info): New local interrupt_save_t1. Set it
21956 for interrupt handler with large frame. Use it for saved reg list.
21957 (riscv_expand_prologue): Move flag_stack_usage_info support to
21958 eliminate duplication.
21959 (riscv_expand_epilogue): Generate mret for interrupt handler.
21960 (riscv_epilogue_uses): New.
21961 (riscv_can_use_return_insn): Return false for interrupt handler.
21962 (riscv_function_ok_for_sibcall): Likewise.
21963 (riscv_set_current_function): Add interrupt handler support.
21964 * config/riscv/riscv.h (EPILOGUE_USES): Call riscv_epilogue_uses.
21965 * config/riscv/riscv.md (UNSPECV_MRET): New.
21967 (riscv_frflags, riscv_fsflags): Use tab after opcode.
21969 * doc/extend.texi (RISC-V Function Attributes) <interrupt>: New.
21971 2018-05-25 Bill Schmidt <wschmidt@linux.ibm.com>
21973 PR tree-optimization/85712
21974 * gimple-ssa-strength-reduction.c (replace_one_candidate): Skip if
21975 this candidate has already been replaced in-situ by a copy.
21977 2018-05-25 Jason Merrill <jason@redhat.com>
21979 PR c++/80485 - inline function non-zero address.
21980 * symtab.c (nonzero_address): Check DECL_COMDAT.
21982 2018-05-25 Uros Bizjak <ubizjak@gmail.com>
21985 * config/alpha/alpha.md (ashlsi3): New insn pattern.
21986 (*ashlsi_se): Rename from *ashldi_se. Define as sign
21987 extension of SImode operation. Use const123_operand predicate.
21988 (*saddsi_1): Remove.
21989 (*saddl_se_1): Ditto.
21990 (*ssubsi_1): Ditto.
21991 (*ssubl_se_1): Ditto.
21992 * config/alpha/predicates.md (const123_operand): New predicate.
21993 * config/alpha/constraints.md (P): Use IN_RANGE.
21995 2018-05-25 Richard Biener <rguenther@suse.de>
21997 * tree-ssa-alias.h (refs_may_alias_p): Add tbaa_p bool parameter,
21999 (ref_maybe_used_by_stmt_p): Likewise.
22000 (stmt_may_clobber_ref_p): Likewise.
22001 (stmt_may_clobber_ref_p_1): Likewise.
22002 * tree-ssa-alias.c (refs_may_alias_p): Add tbaa_p bool parameter
22004 (ref_maybe_used_by_stmt_p): Likewise.
22005 (stmt_may_clobber_ref_p): Likewise.
22006 (stmt_may_clobber_ref_p_1): Likewise.
22007 * tree-vect-data-refs.c (vect_slp_analyze_node_dependences): Use
22008 the alias oracle to disambiguate DRs with stmts DR analysis
22010 (vect_analyze_data_refs): Do not give up on not analyzable
22011 DRs for BB vectorization. Remove code truncating the dataref
22014 2018-05-25 Jakub Jelinek <jakub@redhat.com>
22017 * config/i386/sse.md (<avx512>_eq<mode>3<mask_scalar_merge_name>_1):
22018 Add (=Yk,v,C) variant using vptestm insn. Use TARGET_AVX512BW
22019 in test instead of TARGET_AVX512F for VI12_AVX512VL iterator.
22021 2018-05-25 Richard Biener <rguenther@suse.de>
22023 * tree-vect-data-refs.c (vect_find_stmt_data_reference): New
22024 function, combining stmt data ref gathering and fatal analysis
22026 (vect_analyze_data_refs): Remove now redudnant code and simplify.
22027 * tree-vect-loop.c (vect_get_datarefs_in_loop): Factor out from
22028 vect_analyze_loop_2 and use vect_find_stmt_data_reference.
22029 * tree-vect-slp.c (vect_slp_bb): Use vect_find_stmt_data_reference.
22030 * tree-vectorizer.h (vect_find_stmt_data_reference): Declare.
22032 2018-05-25 Bin Cheng <bin.cheng@arm.com>
22034 PR tree-optimization/85720
22035 * tree-loop-distribution.c (break_alias_scc_partitions): Don't merge
22036 SCC if all partitions are builtins.
22037 (version_loop_by_alias_check): New parameter. Generate cancelable
22038 runtime alias check if all partitions are builtins.
22039 (distribute_loop): Update call to above function.
22041 2018-05-25 Bin Cheng <bin.cheng@arm.com>
22043 * tree-outof-ssa.c (tree-ssa.h, tree-dfa.h): Include header files.
22044 (create_default_def, for_all_parms): Moved from tree-ssa-coalesce.c.
22045 (parm_default_def_partition_arg): Ditto.
22046 (set_parm_default_def_partition): Ditto.
22047 (get_parm_default_def_partitions): Ditto and make it static.
22048 (get_undefined_value_partitions): Ditto and make it static.
22049 (remove_ssa_form): Refactor call to init_var_map here.
22050 * tree-ssa-coalesce.c (build_ssa_conflict_graph): Support live range
22051 computation for loop region.
22052 (coalesce_partitions, compute_optimized_partition_bases): Ditto.
22053 (register_default_def): Delete.
22054 (for_all_parms, create_default_def): Move to tree-outof-ssa.c.
22055 (parm_default_def_partition_arg): Ditto.
22056 (set_parm_default_def_partition): Ditto.
22057 (get_parm_default_def_partitions): Ditto and make it static.
22058 (get_undefined_value_partitions): Ditto and make it static.
22059 (coalesce_with_default, coalesce_with_default): Update comment.
22060 (create_coalesce_list_for_region): New func factored out from
22061 create_outofssa_var_map.
22062 (populate_coalesce_list_for_outofssa): New func factored out from
22063 create_outofssa_var_map and coalesce_ssa_name.
22064 (create_outofssa_var_map): Delete.
22065 (coalesce_ssa_name): Refactor to support live range computation.
22066 * tree-ssa-coalesce.h (coalesce_ssa_name): Change decl.
22067 (get_parm_default_def_partitions): Delete.
22068 (get_undefined_value_partitions): Ditto.
22069 * tree-ssa-live.c (init_var_map, delete_var_map): Support live range
22070 computation for loop region.
22071 (new_tree_live_info, loe_visit_block): Ditto.
22072 (live_worklist, set_var_live_on_entry): Ditto.
22073 (calculate_live_on_exit, verify_live_on_entry): Ditto.
22074 * tree-ssa-live.h (struct _var_map): New fields.
22075 (init_var_map): Change decl.
22076 (region_contains_p): New.
22078 2018-05-25 Bin Cheng <bin.cheng@arm.com>
22080 * tree-ssa-live.h (live_merge_and_clear): Delete.
22082 2018-05-25 Richard Biener <rguenther@suse.de>
22085 * tree-dump.c (dequeue_and_dump): Remove access to removed
22086 operand 2 of a SWITCH_EXPR.
22088 2018-05-25 Richard Sandiford <richard.sandiford@linaro.org>
22090 * doc/sourcebuild.texi (vect_double_cond_arith): Include
22091 multiplication and division.
22092 * doc/md.texi (cond_mul@var{m}, cond_div@var{m}, cond_mod@var{m})
22093 (cond_udiv@var{m}, cond_umod@var{m}): Document.
22094 * optabs.def (cond_smul_optab, cond_sdiv_optab, cond_smod_optab)
22095 (cond_udiv_optab, cond_umod_optab): New optabs.
22096 * internal-fn.def (IFN_COND_MUL, IFN_COND_DIV, IFN_COND_MOD)
22097 (IFN_COND_RDIV): New internal functions.
22098 * internal-fn.c (get_conditional_internal_fn): Handle TRUNC_DIV_EXPR,
22099 TRUNC_MOD_EXPR and RDIV_EXPR.
22100 * match.pd (UNCOND_BINARY, COND_BINARY): Handle them.
22101 * config/aarch64/iterators.md (UNSPEC_COND_MUL, UNSPEC_COND_DIV):
22103 (SVE_INT_BINARY): Include mult.
22104 (SVE_COND_FP_BINARY): Include UNSPEC_MUL and UNSPEC_DIV.
22105 (optab, sve_int_op): Handle mult.
22106 (optab, sve_fp_op, commutative): Handle UNSPEC_COND_MUL and
22108 * config/aarch64/aarch64-sve.md (cond_<optab><mode>): New pattern
22109 for SVE_INT_BINARY_SD.
22111 2018-05-25 Richard Sandiford <richard.sandiford@linaro.org>
22113 * config/aarch64/iterators.md (SVE_INT_BINARY_SD): New code iterator.
22114 (optab, sve_int_op): Handle div and udiv.
22115 * config/aarch64/aarch64-sve.md (<optab><mode>3): New expander
22116 for SVE_INT_BINARY_SD.
22117 (*<optab><mode>3): New insn for the same.
22119 2018-05-25 Richard Sandiford <richard.sandiford@linaro.org>
22121 * tree-vect-patterns.c: Include predict.h.
22122 (vect_recog_divmod_pattern): Restrict check for division support
22123 to when optimizing for size.
22125 2018-05-25 Richard Sandiford <richard.sandiford@linaro.org>
22127 * doc/sourcebuild.texi (vect_double_cond_arith: Document.
22128 * gimple-match.h (gimple_match_op::MAX_NUM_OPS): Bump to 4.
22129 (gimple_match_op::gimple_match_op): Add an overload for 4 operands.
22130 (gimple_match_op::set_op): Likewise.
22131 (gimple_resimplify4): Declare.
22132 * genmatch.c (get_operand_type): Handle CFN_COND_* functions.
22133 (expr::gen_transform): Likewise.
22134 (decision_tree::gen): Generate a simplification routine for 4 operands.
22135 * gimple-match-head.c (gimple_simplify): Add an overload for
22136 4 operands. In the top-level function, handle up to 4 call
22137 arguments and call gimple_resimplify4.
22138 (gimple_resimplify4): New function.
22139 (build_call_internal): Pass a fourth operand.
22140 (maybe_push_to_seq): Likewise.
22141 * match.pd (UNCOND_BINARY, COND_BINARY): New operator lists.
22142 Fold VEC_COND_EXPRs of an operation and a default value into
22143 an IFN_COND_* function if possible.
22144 * config/aarch64/iterators.md (UNSPEC_COND_MAX, UNSPEC_COND_MIN):
22146 (SVE_COND_FP_BINARY): Include them.
22147 (optab, sve_fp_op): Handle them.
22148 (SVE_INT_BINARY_REV): New code iterator.
22149 (SVE_COND_FP_BINARY_REV): New int iterator.
22150 (commutative): New int attribute.
22151 * config/aarch64/aarch64-protos.h (aarch64_sve_prepare_conditional_op):
22153 * config/aarch64/aarch64.c (aarch64_sve_prepare_conditional_op): New
22155 * config/aarch64/aarch64-sve.md (cond_<optab><mode>): Use it.
22156 (*cond_<optab><mode>): New patterns for reversed operands.
22158 2018-05-25 Richard Biener <rguenther@suse.de>
22160 * tree-vectorizer.h (STMT_VINFO_GROUP_*, GROUP_*): Remove.
22161 (DR_GROUP_*): New, assert we have non-NULL ->data_ref_info.
22162 (REDUC_GROUP_*): New, assert we have NULL ->data_ref_info.
22163 (STMT_VINFO_GROUPED_ACCESS): Adjust.
22164 * tree-vect-data-refs.c (everywhere): Adjust users.
22165 * tree-vect-loop.c (everywhere): Likewise.
22166 * tree-vect-slp.c (everywhere): Likewise.
22167 * tree-vect-stmts.c (everywhere): Likewise.
22168 * tree-vect-patterns.c (vect_reassociating_reduction_p): Likewise.
22170 2018-05-25 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
22172 * configure.ac (gcc_cv_as_section_has_e): Move to common section.
22174 (gcc_cv_as_section_exclude): ... this.
22175 Try Solaris as #exclude syntax.
22176 * configure: Regenerate.
22177 * config.in: Regenerate.
22178 * config/i386/i386.c (i386_solaris_elf_named_section): Handle
22180 * config/sparc/sparc.c (sparc_solaris_elf_asm_named_section)
22181 [HAVE_GAS_SECTION_EXCLUDE]: Handle SECTION_EXCLUDE.
22183 * varasm.c (default_elf_asm_named_section): Don't check if
22184 HAVE_GAS_SECTION_EXCLUDE is defined.
22186 2018-05-25 Richard Sandiford <richard.sandiford@linaro.org>
22188 * doc/md.texi: Update the documentation of the cond_* optabs
22189 to mention the new final operand. Fix GET_MODE_NUNITS call.
22190 Describe the scalar case too.
22191 * internal-fn.def (IFN_EXTRACT_LAST): Change type to fold_left.
22192 * internal-fn.c (expand_cond_unary_optab_fn): Expect 3 operands
22194 (expand_cond_binary_optab_fn): Expect 4 operands instead of 3.
22195 (get_conditional_internal_fn): Update comment.
22196 * tree-vect-loop.c (vectorizable_reduction): Pass the original
22197 accumulator value as a final argument to conditional functions.
22198 * config/aarch64/aarch64-sve.md (cond_<optab><mode>): Turn into
22199 a define_expand and add an "else" operand. Assert for now that
22200 the else operand is equal to operand 2. Use SVE_INT_BINARY and
22201 SVE_COND_FP_BINARY instead of SVE_COND_INT_OP and SVE_COND_FP_OP.
22202 (*cond_<optab><mode>): New patterns.
22203 * config/aarch64/iterators.md (UNSPEC_COND_SMAX, UNSPEC_COND_UMAX)
22204 (UNSPEC_COND_SMIN, UNSPEC_COND_UMIN, UNSPEC_COND_AND, UNSPEC_COND_ORR)
22205 (UNSPEC_COND_EOR): Delete.
22206 (optab): Remove associated mappings.
22207 (SVE_INT_BINARY): New code iterator.
22208 (sve_int_op): Remove int attribute and add "minus" to the code
22210 (SVE_COND_INT_OP): Delete.
22211 (SVE_COND_FP_OP): Rename to...
22212 (SVE_COND_FP_BINARY): ...this.
22214 2018-05-25 Richard Sandiford <richard.sandiford@linaro.org>
22216 * optabs.c (can_reuse_operands_p): New function.
22217 (maybe_legitimize_operands): Try to reuse the results for
22220 2018-05-24 Uros Bizjak <ubizjak@gmail.com>
22222 * config/i386/sse.md (cvtusi2<ssescalarmodesuffix>64<round_name>):
22223 Add {q} suffix to insn mnemonic.
22225 2018-05-23 Jozef Lawrynowicz <jozef.l@mittosystems.com>
22227 * config/msp430/msp430.c (TARGET_WARN_FUNC_RETURN): Define.
22228 (msp430_warn_func_return): New.
22230 2018-05-24 Roger Sayle <roger@nextmovesoftware.com>
22232 * fold-const.c (tree_nonzero_bits): New function.
22233 * fold-const.h (tree_nonzero_bits): Likewise.
22234 * match.pd (POPCOUNT): New patterns to fold BUILTIN_POPCOUNT and
22235 friends. POPCOUNT(x&1) => x&1, POPCOUNT(x)==0 => x==0, etc.
22237 2018-05-24 H.J. Lu <hongjiu.lu@intel.com>
22241 * varasm.c (assemble_alias): Check ifunc_resolver only on
22244 2018-05-24 Uros Bizjak <ubizjak@gmail.com>
22247 * config/i386/sse.md (movdi_to_sse): Do not generate pseudo
22248 when memory input operand is handled.
22250 2018-05-24 Luis Machado <luis.machado@linaro.org>
22252 * config/aarch64/aarch64.c (qdf24xx_addrcost_table): New static
22254 (qdf24xx_tunings) <addr_costs>: Set to qdf24xx_addrcost_table.
22256 2018-05-24 Richard Sandiford <richard.sandiford@linaro.org>
22258 * match.pd: Delay FMA folds until after vectorization.
22260 2018-05-24 Andre Vieira <andre.simoesdiasvieira@arm.com>
22263 * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): Make
22264 address check not strict.
22266 2018-05-24 Richard Sandiford <richard.sandiford@linaro.org>
22268 * gimple-match.h (gimple_match_op): New class.
22269 (mprts_hook): Replace parameters with a gimple_match_op *.
22270 (maybe_build_generic_op): Likewise.
22271 (gimple_simplified_result_is_gimple_val): Replace parameters with
22272 a const gimple_match_op *.
22273 (gimple_simplify): Replace code_helper * and tree * parameters with
22274 a gimple_match_op * parameter.
22275 (gimple_resimplify1): Replace code_helper *, tree and tree *
22276 parameters with a gimple_match_op * parameter.
22277 (gimple_resimplify2): Likewise.
22278 (gimple_resimplify3): Likewise.
22279 (maybe_push_res_to_seq): Replace code_helper, tree and tree *
22280 parameters with a gimple_match_op * parameter.
22281 * gimple-match-head.c (gimple_simplify): Change prototypes of
22282 auto-generated functions to take a gimple_match_op * instead of
22283 separate code_helper * and tree * parameters. Make the same
22284 change in the top-level overload and update calls to the
22285 gimple_resimplify routines. Update calls to the auto-generated
22286 functions and to maybe_push_res_to_seq in the publicly-facing
22287 operation-specific gimple_simplify overloads.
22288 (gimple_match_op::MAX_NUM_OPS): Define.
22289 (gimple_resimplify1): Replace rcode and ops with a single res_op
22290 parameter. Update call to gimple_simplify.
22291 (gimple_resimplify2): Likewise.
22292 (gimple_resimplify3): Likewise.
22293 (mprts_hook): Replace parameters with a gimple_match_op *.
22294 (maybe_build_generic_op): Likewise.
22295 (build_call_internal): Replace type, nargs and ops with
22296 a gimple_match_op *.
22297 (maybe_push_res_to_seq): Replace res_code, type and ops parameters
22298 with a single gimple_match_op *. Update calls to mprts_hook,
22299 build_call_internal and gimple_simplified_result_is_gimple_val.
22300 Factor out code that is common to the tree_code and combined_fn cases.
22301 * genmatch.c (expr::gen_transform): Replace tem_code and
22302 tem_ops with a gimple_match_op called tem_op. Update calls
22303 to the gimple_resimplify functions and maybe_push_res_to_seq.
22304 (dt_simplify::gen_1): Manipulate res_op instead of res_code and
22305 res_ops. Update call to the gimple_resimplify functions.
22306 (dt_simplify::gen): Pass res_op instead of res_code and res_ops.
22307 (decision_tree::gen): Make the functions take a gimple_match_op *
22308 called res_op instead of separate res_code and res_ops parameters.
22309 Update call accordingly.
22310 * gimple-fold.c (replace_stmt_with_simplification): Replace rcode
22311 and ops with a single res_op parameter. Update calls to
22312 maybe_build_generic_op and maybe_push_res_to_seq.
22313 (fold_stmt_1): Update calls to gimple_simplify and
22314 replace_stmt_with_simplification.
22315 (gimple_fold_stmt_to_constant_1): Update calls to gimple_simplify
22316 and gimple_simplified_result_is_gimple_val.
22317 * tree-cfgcleanup.c (cleanup_control_expr_graph): Update call to
22319 * tree-ssa-sccvn.c (vn_lookup_simplify_result): Replace parameters
22320 with a gimple_match_op *.
22321 (vn_nary_build_or_lookup): Likewise. Update call to
22322 vn_nary_build_or_lookup_1.
22323 (vn_nary_build_or_lookup_1): Replace rcode, type and ops with a
22324 gimple_match_op *. Update calls to the gimple_resimplify routines
22325 and to gimple_simplified_result_is_gimple_val.
22326 (vn_nary_simplify): Update call to vn_nary_build_or_lookup_1.
22327 Use gimple_match_op::MAX_NUM_OPS instead of a hard-coded 3.
22328 (vn_reference_lookup_3): Update call to vn_nary_build_or_lookup.
22329 (visit_nary_op): Likewise.
22330 (visit_reference_op_load): Likewise.
22332 2018-05-23 Luis Machado <luis.machado@linaro.org>
22334 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Use correct type
22335 modifier for printing the step amount.
22337 2018-05-23 Jozef Lawrynowicz <jozef.l@somniumtech.com>
22340 * tree.c (build_common_tree_nodes): Dont set TYPE_SIZE for __intN
22343 2018-05-23 Segher Boessenkool <segher@kernel.crashing.org>
22345 * doc/sourcebuild.texi (Endianness): New subsubsection.
22347 2018-05-23 Luis Machado <luis.machado@linaro.org>
22349 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
22350 <prefetch_dynamic_strides>: New const bool field.
22351 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
22352 prefetch_dynamic_strides.
22353 (exynosm1_prefetch_tune): Likewise.
22354 (thunderxt88_prefetch_tune): Likewise.
22355 (thunderx_prefetch_tune): Likewise.
22356 (thunderx2t99_prefetch_tune): Likewise.
22357 (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides to
22359 (aarch64_override_options_internal): Update to set
22360 PARAM_PREFETCH_DYNAMIC_STRIDES.
22361 * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
22362 * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
22363 * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
22364 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
22365 prefetch-dynamic-strides setting.
22367 2018-05-23 Luis Machado <luis.machado@linaro.org>
22369 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
22370 <minimum_stride>: New const int field.
22371 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
22372 minimum_stride field defaulting to -1.
22373 (exynosm1_prefetch_tune): Likewise.
22374 (thunderxt88_prefetch_tune): Likewise.
22375 (thunderx_prefetch_tune): Likewise.
22376 (thunderx2t99_prefetch_tune): Likewise.
22377 (qdf24xx_prefetch_tune) <minimum_stride>: Set to 2048.
22378 <default_opt_level>: Set to 3.
22379 (aarch64_override_options_internal): Update to set
22380 PARAM_PREFETCH_MINIMUM_STRIDE.
22381 * doc/invoke.texi (prefetch-minimum-stride): Document new option.
22382 * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
22383 * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
22384 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
22385 stride is constant and is below the minimum stride threshold.
22387 2018-05-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
22389 * config/arm/arm-cpus.in (mode26): Delete.
22390 (armv4): Delete mode26 reference.
22391 * config/arm/arm.c (arm_configure_build_target): Delete use of
22394 2018-05-23 Uros Bizjak <ubizjak@gmail.com>
22396 * config/i386/i386.md (*floatuns<SWI48:mode><MODEF:mode>2_avx512):
22398 (floatunssi<mode>2): Also enable for AVX512F and TARGET_SSE_MATH.
22399 Rewrite expander pattern. Emit gen_floatunssi<mode>2_i387_with_xmm
22401 (floatunsdisf2): Rewrite expander pattern. Hanlde TARGET_AVX512F.
22402 (floatunsdidf2): Ditto.
22404 2018-05-23 Uros Bizjak <ubizjak@gmail.com>
22406 * config/i386/i386.md (fixuns_trunc<mode>di2): New insn pattern.
22407 (fixuns_trunc<mode>si2_avx512f): Ditto.
22408 (*fixuns_trunc<mode>si2_avx512f_zext): Ditto.
22409 (fixuns_trunc<mode>si2): Also enable for AVX512F and TARGET_SSE_MATH.
22410 Emit fixuns_trunc<mode>si2_avx512f for AVX512F targets.
22412 2018-05-23 Alexander Monakov <amonakov@ispras.ru>
22414 PR rtl-optimization/79985
22415 * df-scan.c (df_insn_refs_collect): Remove special case for
22416 global registers and asm statements.
22418 2018-05-23 Alexander Monakov <amonakov@ispras.ru>
22420 * extend.texi (Global Register Variables): Rewrite the bullet list.
22421 Note that the register is available for allocation. Note that access
22422 via inline asm must use constraints. Add note about async-signal
22423 handlers. Remove paragraph about automagic register selection.
22425 2018-05-23 Richard Biener <rguenther@suse.de>
22427 * tree-ssa-sccvn.c (vn_reference_lookup_3): Remove restriction
22428 of fixed offset from memset VN.
22430 2018-05-23 Bill Schmidt <wschmidt@linux.ibm.com>
22432 * gimple-ssa-strength-reduction.c (struct slsr_cand_d): Add
22433 first_interp field.
22434 (alloc_cand_and_find_basis): Initialize first_interp field.
22435 (slsr_process_mul): Modify first_interp field.
22436 (slsr_process_add): Likewise.
22437 (slsr_process_cast): Modify first_interp field for each new
22439 (slsr_process_copy): Likewise.
22440 (dump_candidate): Dump first_interp field.
22441 (replace_mult_candidate): Process all interpretations, not just
22443 (replace_rhs_if_not_dup): Likewise.
22444 (replace_one_candidate): Likewise.
22446 2018-05-23 Wilco Dijkstra <wdijkstr@arm.com>
22448 * config/aarch64/aarch64.c (aarch64_use_frame_pointer):
22450 (aarch64_needs_frame_chain): New function.
22451 (aarch64_parse_override_string): Set aarch64_use_frame_pointer.
22453 2018-05-23 Sudakshina Das <sudi.das@arm.com>
22456 * common/config/aarch64/aarch64-common.c (aarch64_handle_option):
22457 Check val before adding MASK_STRICT_ALIGN to opts->x_target_flags.
22458 * config/aarch64/aarch64.opt (mstrict-align): Remove RejectNegative.
22459 * config/aarch64/aarch64.c (aarch64_attributes): Mark allow_neg
22460 as true for strict-align.
22461 (aarch64_can_inline_p): Perform checks even when callee has no
22462 attributes to check for strict alignment.
22463 * doc/extend.texi (AArch64 Function Attributes): Document
22465 * doc/invoke.texi: (AArch64 Options): Likewise.
22467 2018-05-23 Richard Sandiford <richard.sandiford@linaro.org>
22469 PR tree-optimization/85853
22470 * tree-vect-slp.c (vect_slp_analyze_node_operations): Split out
22471 the handling of the root of the node to...
22472 (vect_slp_analyze_node_operations_1): ...this new function,
22473 and run the whole thing with the child nodes' def types
22474 set according to their SLP node's def type.
22476 2018-05-23 Richard Biener <rguenther@suse.de>
22478 PR middle-end/85874
22479 * tree-data-ref.c (create_runtime_alias_checks): Defer
22480 and ignore overflow warnings.
22482 2018-05-23 Yury Gribov <tetra2005@gmail.com>
22484 PR tree-optimization/85822
22485 * tree-vrp.c (is_masked_range_test): Fix handling of negative
22488 2018-05-23 Richard Biener <rguenther@suse.de>
22490 * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle arbitrary
22491 memset constants via native_interpret_expr.
22493 2018-05-22 H.J. Lu <hongjiu.lu@intel.com>
22496 * cgraph.h (cgraph_node::create): Set ifunc_resolver for ifunc
22498 (cgraph_node::create_alias): Likewise.
22499 (cgraph_node::get_availability): Check ifunc_resolver instead
22500 of looking up ifunc attribute.
22501 * cgraphunit.c (maybe_diag_incompatible_alias): Likewise.
22502 * varasm.c (do_assemble_alias): Likewise.
22503 (assemble_alias): Likewise.
22504 (default_binds_local_p_3): Likewise.
22505 * cgraph.h (cgraph_node): Add ifunc_resolver.
22506 (cgraph_node::only_called_directly_or_aliased_p): Return false
22507 for IFUNC resolver.
22508 * lto-cgraph.c (input_node): Set ifunc_resolver for ifunc
22510 * symtab.c (symtab_node::verify_base): Verify that ifunc_resolver
22511 is equivalent to lookup_attribute ("ifunc", DECL_ATTRIBUTES (decl)).
22512 (symtab_node::binds_to_current_def_p): Check ifunc_resolver
22513 instead of looking up ifunc attribute.
22515 2018-05-22 Luis Machado <luis.machado@linaro.org>
22517 * config/aarch64/aarch64.md (*ashift<mode>_extv_bfiz): New pattern.
22519 2018-05-22 Martin Sebor <msebor@redhat.com>
22521 PR middle-end/85359
22522 * builtins.c (expand_builtin_strcpy): Call maybe_warn_nonstring_arg
22523 only when expasion succeeds.
22524 (expand_builtin_strcmp): Same.
22525 (expand_builtin_strncmp): Same.
22527 2018-05-22 Martin Sebor <msebor@redhat.com>
22529 * calls.c (maybe_warn_nonstring_arg): Fix a typo in a comment.
22531 2018-05-22 Jackson Woodruff <jackson.woodruff@arm.com>
22532 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
22534 * config/aarch64/aarch64-ldpstp.md: Replace uses of
22535 aarch64_mem_pair_operand with memory_operand and delete operand swapping
22537 * config/aarch64/aarch64.c (aarch64_operands_ok_for_ldpstp):
22538 Add check for legitimate_address.
22539 (aarch64_gen_adjusted_ldpstp): Swap operands where appropriate.
22540 (aarch64_swap_ldrstr_operands): New.
22541 * config/aarch64/aarch64-protos.h (aarch64_swap_ldrstr_operands):
22544 2018-05-22 Jackson Woodruff <jackson.woodruff@arm.com>
22545 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
22547 * config/aarch64/aarch64.md: New patterns to generate stp
22549 (store_pair_sw, store_pair_dw): New patterns to generate stp for
22550 single words and double words.
22551 (load_pair_sw, load_pair_dw): Likewise.
22552 (store_pair_sf, store_pair_df, store_pair_si, store_pair_di):
22554 (load_pair_sf, load_pair_df, load_pair_si, load_pair_di):
22556 * config/aarch64/aarch64-ldpstp.md: Modify peephole
22557 for different mode ldpstp and add peephole for merged zero stores.
22558 Likewise for loads.
22559 * config/aarch64/aarch64.c (aarch64_operands_ok_for_ldpstp):
22561 (aarch64_gen_store_pair): Rename calls to match new patterns.
22562 (aarch64_gen_load_pair): Rename calls to match new patterns.
22563 * config/aarch64/aarch64-simd.md (load_pair<mode>): Rename to...
22564 (load_pair<DREG:mode><DREG2:mode>): ... This.
22565 (store_pair<mode>): Rename to...
22566 (vec_store_pair<DREG:mode><DREG2:mode>): ... This.
22567 * config/aarch64/iterators.md (DREG, DREG2, DX2, SX, SX2, DSX):
22568 New mode iterators.
22569 (V_INT_EQUIV): Handle SImode.
22570 * config/aarch64/predicates.md (aarch64_reg_zero_or_fp_zero):
22573 2018-05-22 Martin Sebor <msebor@redhat.com>
22576 * calls.c (maybe_warn_nonstring_arg): Use string length to set
22577 or ajust the presumed bound on an operation to avoid unnecessary
22580 2018-05-22 Martin Sebor <msebor@redhat.com>
22582 PR tree-optimization/85826
22583 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Avoid
22584 assuming that a DECL necesarily has a constant size.
22586 2018-05-22 Richard Sandiford <richard.sandiford@linaro.org>
22588 PR middle-end/85862
22589 * internal-fn.c (expand_direct_optab_fn): Cope with a null lhs.
22591 2018-05-22 Richard Biener <rguenther@suse.de>
22593 PR tree-optimization/85834
22594 * tree-ssa-sccvn.c (vn_reference_lookup_3): Properly handle
22595 non-constant and non-zero memset arguments.
22597 2018-05-22 Martin Liska <mliska@suse.cz>
22600 * ipa-icf.c (sem_item::add_type): Do not ICE for incomplete types.
22602 2018-05-22 Richard Biener <rguenther@suse.de>
22604 PR tree-optimization/85863
22605 * tree-vect-stmts.c (vect_is_simple_cond): Only widen invariant
22606 comparisons when vectype is specified.
22607 (vectorizable_condition): Do not specify vectype for
22608 vect_is_simple_cond when SLP vectorizing.
22610 2018-05-21 Michael Meissner <meissner@linux.ibm.com>
22613 * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Do not
22614 define __ibm128 as long double.
22615 * config/rs6000/rs6000.c (rs6000_init_builtins): Create __ibm128
22616 as a distinct type when IEEE 128-bit support is enabled.
22617 (init_float128_ieee): Fix up conversions between IFmode and IEEE
22618 128-bit types to use the correct functions.
22619 (rs6000_expand_float128_convert): Use explicit FLOAT_EXTEND to
22620 convert between 128-bit floating point types that have different
22621 modes but the same representation, instead of using gen_lowpart to
22623 * config/rs6000/rs6000.md (IFKF): New iterator for IFmode and
22625 (IFKF_reg): New attributes to give the register constraints for
22627 (extend<mode>tf2_internal): New insns to mark an explicit
22628 conversion between 128-bit floating point types that have a
22629 different mode but share the same representation.
22631 2018-05-21 Richard Sandiford <richard.sandiford@linaro.org>
22633 PR tree-optimization/85814
22634 * tree-ssa-strlen.c (get_stridx_plus_constant): Cope with
22635 a null return from get_strinfo when unsharing the next
22636 strinfo in the chain.
22638 2018-05-21 Vladimir Mezentsev <vladimir.mezentsev@oracle.com>
22641 * varasm.c (weak_finish): Clean up weak_decls.
22643 2018-05-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
22645 * config/aarch64/aarch64.md ("unspec"): Define UNSPEC_SABAL,
22646 UNSPEC_SABDL2, UNSPEC_SADALP, UNSPEC_UABAL, UNSPEC_UABDL2,
22647 UNSPEC_UADALP values.
22648 * config/aarch64/iterators.md (ABAL): New int iterator.
22651 (sur): Add mappings for the above.
22652 * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl2<mode>_3):
22654 (aarch64_<sur>abal<mode>_4): Likewise.
22655 (aarch64_<sur>adalp<mode>_3): Likewise.
22656 (<sur>sadv16qi): New define_expand.
22658 2018-05-21 Alexander Nesterovskiy <alexander.nesterovskiy@intel.com>
22660 * config/i386/i386.md (*movsf_internal): AVX falsedep fix.
22661 (*movdf_internal): Ditto.
22662 (*rcpsf2_sse): Ditto.
22663 (*rsqrtsf2_sse): Ditto.
22664 (*sqrt<mode>2_sse): Ditto.
22666 2018-05-21 Tamar Christina <tamar.christina@arm.com>
22668 * config/aarch64/aarch64-simd.md (aarch64_eor3qv8hi): Change to
22670 (aarch64_bcaxqv8hi): Change to bcaxq<mode>4.
22671 * config/aarch64/aarch64-simd-builtins.def (veor3q_u8, veor3q_u32,
22672 veor3q_u64, veor3q_s8, veor3q_s16, veor3q_s32, veor3q_s64, vbcaxq_u8,
22673 vbcaxq_u32, vbcaxq_u64, vbcaxq_s8, vbcaxq_s16, vbcaxq_s32,
22675 * config/aarch64/arm_neon.h: Likewise.
22676 * config/aarch64/iterators.md (VQ_I): New.
22678 2018-05-21 Alexey Brodkin <abrodkin@synopsys.com>
22680 * config.gcc: Add arc/t-multilib-linux to tmake_file for
22682 * config/arc/t-multilib-linux: Specify MULTILIB_OPTIONS and
22685 2018-05-20 Chung-Ju Wu <jasonwucj@gmail.com>
22687 * config/nds32/constraints.md (S): New constraint.
22688 * config/nds32/nds32.md (call_internal): Use constraint S.
22689 (call_value_internal): Likewise.
22690 (sibcall_internal): Likewise.
22691 (sibcall_value_internal): Likewise.
22693 2018-05-20 Kito Cheng <kito.cheng@gmail.com>
22694 Chung-Ju Wu <jasonwucj@gmail.com>
22696 * config/nds32/nds32.c (nds32_register_move_cost): Take garywolf cpu
22697 into consideration.
22699 2018-05-20 Kito Cheng <kito.cheng@gmail.com>
22700 Chung-Ju Wu <jasonwucj@gmail.com>
22702 * config/nds32/nds32-cost.c (rtx_cost_model_t): New structure.
22703 (insn_size_16bit, insn_size_32bit): New variables for cost evaluation.
22704 (nds32_rtx_costs_impl): Simplify.
22705 (nds32_address_cost_impl): Simplify.
22706 (nds32_init_rtx_costs): New function.
22707 (nds32_rtx_costs_speed_prefer): Likewise.
22708 (nds32_rtx_costs_size_prefer): Likewise.
22709 (nds32_address_cost_speed_prefer): Likewise.
22710 (nds32_address_cost_speed_fwprop): Likewise.
22711 (nds32_address_cost_size_prefer): Likewise.
22712 * config/nds32/nds32-protos.h (nds32_init_rtx_costs): Declare.
22713 * config/nds32/nds32.c (nds32_option_override): Use
22714 nds32_init_rtx_costs function.
22716 2018-05-20 Chung-Ju Wu <jasonwucj@gmail.com>
22718 * config/nds32/nds32.c (nds32_asm_file_start): Output pipeline model.
22719 * config/nds32/nds32.h (TARGET_PIPELINE_N7): Define.
22720 (TARGET_PIPELINE_N8): Likewise.
22721 (TARGET_PIPELINE_N10): Likewise.
22722 (TARGET_PIPELINE_N13): Likewise.
22723 (TARGET_PIPELINE_GRAYWOLF): Likewise.
22725 2018-05-19 Monk Chiang <sh.chiang04@gmail.com>
22727 * config/nds32/nds32-fpu.md: Update copyright year.
22729 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
22731 * config/nds32/nds32.h (ASM_SPEC): Adjust spec rule.
22733 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
22735 * config/nds32/nds32.c
22736 (nds32_md_asm_adjust): Consider flag_inline_asm_r15 variable.
22737 * config/nds32/nds32.opt (minline-asm-r15): New option.
22739 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
22741 * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS): Add
22743 * config/nds32/nds32.md (abssi2): New pattern.
22745 2018-05-19 Uros Bizjak <ubizjak@gmail.com>
22747 * config/i386/i386.md (rex64namesuffix): New mode attribute.
22748 * config/i386/sse.md (sse_cvtsi2ss<rex64namesuffix><round_name>):
22749 Merge insn pattern from sse_cvtsi2ss<round_name> and
22750 sse_cvtsi2ssq<round_name> using SWI48 mode iterator.
22751 (sse_cvtss2si<rex64namesuffix><round_name>): Merge insn pattern
22752 from sse_cvtss2si<round_name> and sse_cvtss2siq<round_name>
22753 using SWI48 mode iterator.
22754 (sse_cvtss2si<rex64namesuffix>_2): Merge insn pattern from
22755 sse_cvtss2si_2 and sse_cvtss2siq_2 using SWI48 mode iterator.
22756 (sse_cvttss2si<rex64namesuffix><round_saeonly_name>): Merge insn
22757 pattern from sse_cvttss2si<round_saeonly_name>
22758 and sse_cvttss2siq<round_saeonly_name> using SWI48 mode iterator.
22759 (avx512f_vcvtss2usi<rex64namesuffix><round_name>): Merge insn pattern
22760 from avx512f_vcvtss2usi<round_name> and avx512f_vcvtss2usiq<round_name>
22761 using SWI48 mode iterator.
22762 (avx512f_vcvttss2usi<rex64namesuffix><round_saeonly_name>): Merge
22763 insn pattern from avx512f_vcvttss2usi<round_saeonly_name> and
22764 avx512f_vcvttss2usiq<round_saeonly_name> using SWI48 mode iterator.
22765 (avx512f_vcvtsd2usi<rex64namesuffix><round_name>): Merge insn pattern
22766 from avx512f_vcvtsd2usi<round_name> and avx512f_vcvtsd2usiq<round_name>
22767 using SWI48 mode iterator.
22768 (avx512f_vcvttsd2usi<rex64namesuffix><round_saeonly_name>): Merge
22769 insn pattern from avx512f_vcvttsd2usi<round_saeonly_name> and
22770 avx512f_vcvttsd2usiq<round_saeonly_name> using SWI48 mode iterator.
22771 (sse2_cvtsd2si<rex64namesuffix><round_name>): Merge insn pattern from
22772 sse2_cvtsd2si<round_name> and sse2_cvtsd2siq<round_name> using
22773 SWI48 mode iterator.
22774 (sse2_cvtsd2si<rex64namesuffix>_2): Merge insn pattern from
22775 sse2_cvtsd2si_2 and sse2_cvtsd2siq_2 using SWI48 mode iterator.
22776 (sse_cvttsd2si<rex64namesuffix><round_saeonly_name>): Merge insn
22777 pattern from sse_cvttsd2si<round_saeonly_name>
22778 and sse_cvttsd2siq<round_saeonly_name> using SWI48 mode iterator.
22780 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
22782 * config/nds32/nds32-md-auxiliary.c
22783 (nds32_valid_smw_lwm_base_p): Refine.
22784 (nds32_output_smw_single_word): Refine.
22785 (nds32_output_smw_double_word): New.
22786 * config/nds32/nds32-protos.h (nds32_output_smw_double_word): New.
22788 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
22790 * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push): Refine.
22791 (nds32_output_stack_pop): Refine.
22792 (nds32_expand_unaligned_load): Refine.
22793 (nds32_expand_unaligned_store): Refine.
22795 2018-05-19 Kuan-Lin Chen <kuanlinchentw@gmail.com>
22796 Chung-Ju Wu <jasonwucj@gmail.com>
22798 * config/nds32/constants.md: Add TP_REGNUM constant.
22799 (unspec_element): Add UNSPEC_GOTINIT, UNSPEC_GOT, UNSPEC_GOTOFF,
22800 UNSPEC_PLT, UNSPEC_TLSGD, UNSPEC_TLSLD, UNSPEC_TLSIE, UNSPEC_TLSLE and
22802 * config/nds32/nds32-doubleword.md: Consider flag_pic.
22803 * config/nds32/nds32-dspext.md (mov<mode>): Expand TLS and PIC cases.
22804 * config/nds32/nds32-predicates.c (nds32_const_unspec_p): New.
22805 * config/nds32/nds32-md-auxiliary.c: Implementation that support TLS
22806 and PIC code generation.
22807 * config/nds32/nds32-protos.h: Declarations that support TLS and PIC
22809 * config/nds32/nds32-relax-opt.c: Consider TLS and PIC for relax
22811 * config/nds32/nds32.md: Support TLS and PIC.
22812 * config/nds32/nds32.c: Support TLS and PIC.
22813 * config/nds32/nds32.h (nds32_relax_insn_type): New enum type.
22814 * config/nds32/predicates.md (nds32_nonunspec_symbolic_operand): New
22817 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
22819 * config/nds32/nds32-predicates.c (const_vector_to_hwint): Use machine
22820 mode with E_ prefix.
22822 2018-05-19 Kuan-Lin Chen <kuanlinchentw@gmail.com>
22823 Chung-Ju Wu <jasonwucj@gmail.com>
22825 * config/nds32/constants.md (unspec_element): Add UNSPEC_ICT.
22826 * config/nds32/nds32-md-auxiliary.c
22827 (symbolic_reference_mentioned_p): New.
22828 (nds32_legitimize_ict_address): New.
22829 (nds32_expand_ict_move): New.
22830 (nds32_indirect_call_referenced_p): New.
22831 (nds32_symbol_binds_local_p): Delete.
22832 (nds32_long_call_p): Modify.
22833 * config/nds32/nds32-opts.h (nds32_ict_model_type): New enum type.
22834 * config/nds32/nds32-protos.h
22835 (symbolic_reference_mentioned_p): Declare.
22836 (nds32_legitimize_ict_address): Declare.
22837 (nds32_expand_ict_move): Declare.
22838 (nds32_indirect_call_referenced_p): Declare.
22839 * config/nds32/nds32-relax-opt.c (nds32_ict_const_p): New.
22840 (nds32_relax_group): Use nds32_ict_const_p as condition.
22841 * config/nds32/nds32.c (nds32_attribute_table): Add "indirect_call".
22842 (nds32_asm_file_start): Output ict_model directive in asm code.
22843 (nds32_legitimate_address_p): Consider indirect call.
22844 (nds32_print_operand): Consider indirect call.
22845 (nds32_print_operand_address): Consider indirect call.
22846 (nds32_insert_attributes): Handle "indirect_call" attribute.
22847 (TARGET_LEGITIMATE_ADDRESS_P): Define.
22848 (TARGET_LEGITIMATE_CONSTANT_P): Define.
22849 (TARGET_CANNOT_FORCE_CONST_MEM): Define.
22850 (TARGET_DELEGITIMIZE_ADDRESS): Define.
22851 (TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA): Define.
22852 * config/nds32/nds32.h (SYMBOLIC_CONST_P): Define.
22853 (TARGET_ICT_MODEL_SMALL): Define.
22854 (TARGET_ICT_MODEL_LARGE): Define.
22855 * config/nds32/nds32.md (movsi): Consider ict model.
22856 (call, call_value): Consider ict model.
22857 (sibcall, sibcall_value): Consider ict model.
22858 * config/nds32/nds32.opt (mict-model): New option.
22859 * config/nds32/predicates.md (nds32_symbolic_operand): Consider ict
22862 2018-05-18 Kito Cheng <kito.cheng@gmail.com>
22863 Monk Chiang <sh.chiang04@gmail.com>
22864 Jim Wilson <jimw@sifive.com>
22866 * common/config/riscv/riscv-common.c (riscv_parse_arch_string):
22867 Add support to parse rv32e*. Clear MASK_RVE for rv32i and rv64i.
22868 * config.gcc (riscv*-*-*): Add support for rv32e* and ilp32e.
22869 * config/riscv/riscv-c.c (riscv_cpu_cpp_builtins): Define
22870 __riscv_32e when TARGET_RVE. Handle ABI_ILP32E as soft-float ABI.
22871 * config/riscv/riscv-opts.h (riscv_abi_type): Add ABI_ILP32E.
22872 * config/riscv/riscv.c (riscv_compute_frame_info): When TARGET_RVE,
22873 compute save_libcall_adjustment properly.
22874 (riscv_option_override): Call error if TARGET_RVE and not ABI_ILP32E.
22875 (riscv_conditional_register_usage): Handle TARGET_RVE and ABI_ILP32E.
22876 * config/riscv/riscv.h (UNITS_PER_FP_ARG): Handle ABI_ILP32E.
22877 (STACK_BOUNDARY, ABI_STACK_BOUNDARY): Handle TARGET_RVE.
22878 (GP_REG_LAST, MAX_ARGS_IN_REGISTERS): Likewise.
22879 (ABI_SPEC): Handle mabi=ilp32e.
22880 * config/riscv/riscv.opt (abi_type): Add ABI_ILP32E.
22881 (RVE): Add RVE mask.
22882 * doc/invoke.texi (RISC-V options) <-mabi>: Add ilp32e info.
22883 <-march>: Add rv32e as an example.
22885 2018-05-18 Marc Glisse <marc.glisse@inria.fr>
22888 * tree-ssa-structalias.c (create_variable_info_for_1): Extra argument.
22889 (intra_create_variable_infos): Handle C++ constructors.
22891 2018-05-18 Martin Liska <mliska@suse.cz>
22893 * passes.def: Remove a redundant pass.
22895 2018-05-18 Eric Botcazou <ebotcazou@adacore.com>
22898 * config/sparc/sparc.c (sparc_expand_builtin): Always initialize op[0].
22900 2018-05-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
22902 * config/arm/arm-cpus.in (armv3m, mode32): Delete features.
22904 (ARMv2, ARMv3, ARMv3m): Delete fgroups.
22906 (armv2, armv2a, armv3, armv3m): Delete architectures.
22907 (arm2, arm250, arm3, arm6, arm60, arm600, arm610, arm620,
22908 arm7, arm7d, arm7di, arm70, arm700, arm700i, arm710, arm720,
22909 arm710c, arm7100, arm7500, arm7500fe, arm7m, arm7dm, arm7dmi):
22911 * config/arm/arm.md (maddsidi4): Remove check for arm_arch3m.
22912 (*mulsidi3adddi): Likewise.
22913 (mulsidi3): Likewise.
22914 (*mulsidi3_nov6): Likewise.
22915 (umulsidi3): Likewise.
22916 (umulsidi3_nov6): Likewise.
22917 (umaddsidi4): Likewise.
22918 (*umulsidi3adddi): Likewise.
22919 (smulsi3_highpart): Likewise.
22920 (*smulsi3_highpart_nov6): Likewise.
22921 (umulsi3_highpart): Likewise.
22922 (*umulsi3_highpart_nov6): Likewise.
22923 * config/arm/arm.h (arm_arch3m): Delete.
22924 * config/arm/arm.c (arm_arch3m): Delete.
22925 (arm_option_override_internal): Update armv3-related comment.
22926 (arm_configure_build_target): Delete use of isa_bit_mode32.
22927 (arm_option_reconfigure_globals): Delete set of arm_ach3m.
22928 (arm_rtx_costs_internal): Delete check of arm_arch3m.
22929 * config/arm/arm-fixed.md (mulsq3): Delete check for arm_arch3m.
22930 (mulsa3): Likewise.
22931 (mulusa3): Likewise.
22932 * config/arm/arm-protos.h (arm_arch3m): Delete.
22933 * config/arm/arm-tables.opt: Regenerate.
22934 * config/arm/arm-tune.md: Likewise.
22935 * config/arm/t-arm-elf (all_early_nofp): Delete mentions of
22936 deleted architectures.
22938 2018-05-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
22940 * config/arm/arm-cpus.in (armv5, armv5e): Delete features.
22941 (armv5t, armv5te): New features.
22942 (ARMv5, ARMv5e): Delete fgroups.
22943 (ARMv5t, ARMv5te): Adjust for above changes.
22944 (ARMv6m): Likewise.
22945 (armv5, armv5e): Delete arches.
22946 * config/arm/arm.md (*call_reg_armv5): Use arm_arch5t instead of
22948 (*call_reg_arm): Likewise.
22949 (*call_value_reg_armv5): Likewise.
22950 (*call_value_reg_arm): Likewise.
22951 (*call_symbol): Likewise.
22952 (*call_value_symbol): Likewise.
22953 (*sibcall_insn): Likewise.
22954 (*sibcall_value_insn): Likewise.
22955 (clzsi2): Likewise.
22956 (prefetch): Likewise.
22957 (define_split and define_peephole2 dependent on arm_arch5):
22959 * config/arm/arm.h (TARGET_LDRD): Use arm_arch5te instead of
22961 (TARGET_ARM_QBIT): Likewise.
22962 (TARGET_DSP_MULTIPLY): Likewise.
22963 (enum base_architecture): Delete BASE_ARCH_5, BASE_ARCH_5E.
22964 (arm_arch5, arm_arch5e): Delete.
22965 (arm_arch5t, arm_arch5te): Declare.
22966 * config/arm/arm.c (arm_arch5, arm_arch5e): Delete.
22967 (arm_arch5t): Declare.
22968 (arm_option_reconfigure_globals): Update for the above.
22969 (arm_options_perform_arch_sanity_checks): Update comment, replace
22970 use of arm_arch5 with arm_arch5t.
22971 (use_return_insn): Likewise.
22972 (arm_emit_call_insn): Likewise.
22973 (output_return_instruction): Likewise.
22974 (arm_final_prescan_insn): Likewise.
22975 (arm_coproc_builtin_available): Likewise.
22976 * config/arm/arm-c.c (arm_cpu_builtins): Replace arm_arch5 and
22977 arm_arch5e with arm_arch5t and arm_arch5te.
22978 * config/arm/arm-protos.h (arm_arch5, arm_arch5e): Delete.
22979 (arm_arch5t, arm_arch5te): Declare.
22980 * config/arm/arm-tables.opt: Regenerate.
22981 * config/arm/t-arm-elf: Remove references to armv5, armv5e.
22982 * config/arm/t-multilib: Likewise.
22983 * config/arm/thumb1.md (*call_reg_thumb1_v5): Check arm_arch5t
22984 instead of arm_arch5.
22985 (*call_reg_thumb1): Likewise.
22986 (*call_value_reg_thumb1_v5): Likewise.
22987 (*call_value_reg_thumb1): Likewise.
22988 * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Remove now
22990 * doc/invoke.texi (ARM Options): Remove references to armv5, armv5e.
22992 2018-05-18 Martin Liska <mliska@suse.cz>
22994 PR gcov-profile/84846
22995 * doc/gcov.texi: Document -t option of gcov tool.
22997 2018-05-18 Martin Liska <mliska@suse.cz>
22999 PR gcov-profile/84846
23000 * gcov.c (print_usage): Add new -t option.
23001 (process_args): Handle the option.
23002 (generate_results): Use stdout as output when requested by
23005 2018-05-18 Martin Liska <mliska@suse.cz>
23007 PR gcov-profile/84846
23008 * coverage.c (coverage_init): Write PWD to .gcno file.
23009 * doc/gcov.texi: Document how working directory is printed.
23010 * gcov-dump.c (dump_gcov_file): Print PWD.
23011 * gcov.c (output_intermediate_file): Likewise.
23012 (read_graph_file): Read PWD string.
23013 (output_lines): Print PWD.
23015 2018-05-18 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
23017 PR middle-end/85817
23018 * ipa-pure-const.c (malloc_candidate_p): Remove the check integer_zerop
23019 for retval and return false if all args to phi are zero.
23021 2018-05-18 Richard Biener <rguenther@suse.de>
23023 * gimple-ssa-evrp.c (class evrp_folder): Add simplify_stmt_using_ranges
23025 (evrp_dom_walker::before_dom_children): Call it.
23027 2018-05-18 Richard Biener <rguenther@suse.de>
23029 * tree-dfa.c (get_ref_base_and_extent): Use range-info to refine
23030 results when processing array refs with variable index.
23032 2018-05-18 Toon Moene <toon@moene.org>
23034 * doc/invoke.texi: Move -floop-unroll-and-jam documentation
23035 directly after that of -floop-interchange. Indicate that both
23036 options are enabled by default when specifying -O3.
23038 2018-05-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
23040 * config/aarch64/aarch64-simd.md (vec_set<mode>): Use VALL_F16 mode
23041 iterator. Delete separate integer-mode vec_set<mode> expander.
23042 (aarch64_simd_vec_setv2di): Delete.
23043 (vec_setv2di): Delete.
23044 (aarch64_simd_vec_set<mode>): Delete all other patterns with that name.
23045 Use VALL_F16 mode iterator. Add LD1 alternative and use vwcore for
23046 the "w, r" alternative.
23048 2018-05-18 Martin Liska <mliska@suse.cz>
23050 * passes.def: Add pass_lower_switch and pass_lower_switch_O0.
23051 * tree-pass.h (make_pass_lower_switch_O0): New function.
23052 * tree-switch-conversion.c (node_has_low_bound): Remove.
23053 (node_has_high_bound): Likewise.
23054 (node_is_bounded): Likewise.
23055 (class pass_lower_switch): Make it a template type and create
23057 (pass_lower_switch::execute): Add template argument.
23058 (make_pass_lower_switch): New function.
23059 (make_pass_lower_switch_O0): New function.
23060 (do_jump_if_equal): Remove.
23061 (emit_case_nodes): Simplify to just handle all 3 cases and leave
23062 all the hard work to tree optimization passes.
23064 2018-05-18 Martin Liska <mliska@suse.cz>
23066 * dbgcnt.c (limit_low): Renamed from limit.
23067 (limit_high): New variable.
23068 (dbg_cnt_is_enabled): Check for upper limit.
23069 (dbg_cnt): Adjust dumping.
23070 (dbg_cnt_set_limit_by_index): Add new argument for high
23072 (dbg_cnt_set_limit_by_name): Likewise.
23073 (dbg_cnt_process_single_pair): Parse new format.
23074 (dbg_cnt_process_opt): Use strtok.
23075 (dbg_cnt_list_all_counters): Remove 'value' and add
23077 * doc/invoke.texi: Document changes.
23079 2018-05-18 Richard Sandiford <richard.sandiford@linaro.org>
23081 * doc/sourcebuild.texi (scalar_all_fma): Document.
23082 * tree.def (FMA_EXPR): Delete.
23083 * internal-fn.def (FMA, FMS, FNMA, FNMS): New internal functions.
23084 * internal-fn.c (ternary_direct): New macro.
23085 (expand_ternary_optab_fn): Likewise.
23086 (direct_ternary_optab_supported_p): Likewise.
23087 * Makefile.in (build/genmatch.o): Depend on case-fn-macros.h.
23088 * builtins.c (fold_builtin_fma): Delete.
23089 (fold_builtin_3): Don't call it.
23090 * cfgexpand.c (expand_debug_expr): Remove FMA_EXPR handling.
23091 * expr.c (expand_expr_real_2): Likewise.
23092 * fold-const.c (operand_equal_p): Likewise.
23093 (fold_ternary_loc): Likewise.
23094 * gimple-pretty-print.c (dump_ternary_rhs): Likewise.
23095 * gimple.c (DEFTREECODE): Likewise.
23096 * gimplify.c (gimplify_expr): Likewise.
23097 * optabs-tree.c (optab_for_tree_code): Likewise.
23098 * tree-cfg.c (verify_gimple_assign_ternary): Likewise.
23099 * tree-eh.c (operation_could_trap_p): Likewise.
23100 (stmt_could_throw_1_p): Likewise.
23101 * tree-inline.c (estimate_operator_cost): Likewise.
23102 * tree-pretty-print.c (dump_generic_node): Likewise.
23103 (op_code_prio): Likewise.
23104 * tree-ssa-loop-im.c (stmt_cost): Likewise.
23105 * tree-ssa-operands.c (get_expr_operands): Likewise.
23106 * tree.c (commutative_ternary_tree_code, add_expr): Likewise.
23107 * fold-const-call.h (fold_fma): Delete.
23108 * fold-const-call.c (fold_const_call_ssss): Handle CFN_FMS,
23109 CFN_FNMA and CFN_FNMS.
23110 (fold_fma): Delete.
23111 * genmatch.c (combined_fn): New enum.
23112 (commutative_ternary_tree_code): Remove FMA_EXPR handling.
23113 (commutative_op): New function.
23114 (commutate): Use it. Handle more than 2 operands.
23115 (dt_operand::gen_gimple_expr): Use commutative_op.
23116 (parser::parse_expr): Allow :c to be used with non-binary
23117 operators if the commutative operand is known.
23118 * gimple-ssa-backprop.c (backprop::process_builtin_call_use): Handle
23119 CFN_FMS, CFN_FNMA and CFN_FNMS.
23120 (backprop::process_assign_use): Remove FMA_EXPR handling.
23121 * hsa-gen.c (gen_hsa_insns_for_operation_assignment): Likewise.
23122 (gen_hsa_fma): New function.
23123 (gen_hsa_insn_for_internal_fn_call): Use it for IFN_FMA, IFN_FMS,
23124 IFN_FNMA and IFN_FNMS.
23125 * match.pd: Add folds for IFN_FMS, IFN_FNMA and IFN_FNMS.
23126 * gimple-fold.h (follow_all_ssa_edges): Declare.
23127 * gimple-fold.c (follow_all_ssa_edges): New function.
23128 * tree-ssa-math-opts.c (convert_mult_to_fma_1): Use the
23129 gimple_build interface and use follow_all_ssa_edges to fold the result.
23130 (convert_mult_to_fma): Use direct_internal_fn_suppoerted_p
23131 instead of checking for optabs directly.
23132 * config/i386/i386.c (ix86_add_stmt_cost): Recognize FMAs as calls
23133 rather than FMA_EXPRs.
23134 * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Create a
23135 call to IFN_FMA instead of an FMA_EXPR.
23137 2018-05-17 Jim Wilson <jimw@sifive.com>
23139 * expr.c (do_tablejump): When converting index to Pmode, if we have a
23140 sign extended promoted subreg, and the range does not have the sign bit
23141 set, then do a sign extend.
23143 * config/riscv/riscv.c (riscv_extend_comparands): In unsigned QImode
23144 test, check for sign extended subreg and/or constant operands, and
23145 do a sign extend in that case.
23147 2018-05-17 Steve Ellcey <sellcey@cavium.com>
23149 * config/aarch64/thunderx2t99.md (thunderx2t99_ls_both): Delete.
23150 (thunderx2t99_multiple): Delete psuedo-units from used cpus.
23152 (thunderx2t99_alu_shift): Remove alu_shift_reg, alus_shift_reg.
23153 Change logics_shift_reg to logics_shift_imm.
23154 (thunderx2t99_fp_loadpair_basic): Delete.
23155 (thunderx2t99_fp_storepair_basic): Delete.
23156 (thunderx2t99_asimd_int): Add neon_sub and neon_sub_q types.
23157 (thunderx2t99_asimd_polynomial): Delete.
23158 (thunderx2t99_asimd_fp_simple): Add neon_fp_mul_s_scalar_q
23159 and neon_fp_mul_d_scalar_q.
23160 (thunderx2t99_asimd_fp_conv): Add *int_to_fp* types.
23161 (thunderx2t99_asimd_misc): Delete neon_dup and neon_dup_q.
23162 (thunderx2t99_asimd_recip_step): Add missing *sqrt* types.
23163 (thunderx2t99_asimd_lut): Add missing tbl types.
23164 (thunderx2t99_asimd_ext): Delete.
23165 (thunderx2t99_asimd_load1_1_mult): Delete.
23166 (thunderx2t99_asimd_load1_2_mult): Delete.
23167 (thunderx2t99_asimd_load1_ldp): New.
23168 (thunderx2t99_asimd_load1): New.
23169 (thunderx2t99_asimd_load2): Add missing *load2* types.
23170 (thunderx2t99_asimd_load3): New.
23171 (thunderx2t99_asimd_load4): New.
23172 (thunderx2t99_asimd_store1_1_mult): Delete.
23173 (thunderx2t99_asimd_store1_2_mult): Delete.
23174 (thunderx2t99_asimd_store2_mult): Delete.
23175 (thunderx2t99_asimd_store2_onelane): Delete.
23176 (thunderx2t99_asimd_store_stp): New.
23177 (thunderx2t99_asimd_store1): New.
23178 (thunderx2t99_asimd_store2): New.
23179 (thunderx2t99_asimd_store3): New.
23180 (thunderx2t99_asimd_store4): New.
23182 2018-05-17 Jerome Lambourg <lambourg@adacore.com>
23184 * config/arm/arm_cmse.h (cmse_nsfptr_create, cmse_is_nsfptr): Remove
23185 #include <stdint.h>. Replace intptr_t with __INTPTR_TYPE__.
23187 2018-05-17 Pat Haugen <pthaugen@us.ibm.com>
23188 Segher Boessenkool <segher@kernel.crashing.org>
23191 * config/rs6000/rs6000.c (rs6000_output_move_128bit): Check dest
23194 2018-05-17 Richard Biener <rguenther@suse.de>
23196 * tree-ssa-dse.c (dse_classify_store): Fix iterator increment
23197 for pruning loop and prune defs feeding only already visited PHIs.
23199 2018-05-17 Richard Biener <rguenther@suse.de>
23201 * tree-ssa-sccvn.c (vn_reference_lookup_3): Improve memset handling.
23203 2018-05-17 Bin Cheng <bin.cheng@arm.com>
23204 Richard Biener <rguenther@suse.de>
23206 PR tree-optimization/85793
23207 * tree-vect-stmts.c (vectorizable_load): Handle 1 element-wise load
23208 for VMAT_ELEMENTWISE.
23210 2018-05-17 Richard Sandiford <richard.sandiford@linaro.org>
23212 * internal-fn.h (lookup_internal_fn): Declare
23213 * internal-fn.c (lookup_internal_fn): New function.
23214 * gimple.c (gimple_build_call_from_tree): Handle calls to
23215 internal functions.
23216 * gimple-pretty-print.c (dump_gimple_call): Print "." before
23217 internal function names.
23218 * tree-pretty-print.c (dump_generic_node): Likewise.
23219 * tree-ssa-scopedtables.c (expr_hash_elt::print): Likewise.
23221 2018-05-17 Richard Sandiford <richard.sandiford@linaro.org>
23223 * gimple-fold.h (gimple_build): Make the function forms take
23224 combined_fn rather than built_in_function.
23225 (gimple_simplify): Likewise.
23226 * gimple-match-head.c (gimple_simplify): Likewise.
23227 * gimple-fold.c (gimple_build): Likewise.
23228 * tree-vect-loop.c (get_initial_def_for_reduction): Use gimple_build
23229 rather than gimple_build_call_internal.
23230 (get_initial_defs_for_reduction): Likewise.
23231 (vect_create_epilog_for_reduction): Likewise.
23232 (vectorizable_live_operation): Likewise.
23234 2018-05-17 Martin Liska <mliska@suse.cz>
23236 * gimple-ssa-sprintf.c (format_directive): Do not use
23237 space in between 'G_' and '('.
23239 2018-05-17 Jakub Jelinek <jakub@redhat.com>
23242 * config/i386/i386.c (ix86_fold_builtin): Handle masked shifts
23243 even if the mask is not all ones.
23246 * config/i386/i386.c (ix86_fold_builtin): Fold shift builtins by
23248 (ix86_gimple_fold_builtin): Likewise.
23251 * config/i386/i386.c: Include tree-vector-builder.h.
23252 (ix86_vector_shift_count): New function.
23253 (ix86_fold_builtin): Fold shift builtins by scalar count.
23254 (ix86_gimple_fold_builtin): Likewise.
23256 * config/i386/avx512fintrin.h (_mm512_set_epi16, _mm512_set_epi8,
23257 _mm512_setzero): New intrinsics.
23259 2018-05-17 James Greenhalgh <james.greenhalgh@arm.com>
23260 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
23262 * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify
23263 code generation for cases where splatting a value is not useful.
23264 * simplify-rtx.c (simplify_ternary_operation): Simplify
23265 vec_merge across a vec_duplicate and a paradoxical subreg forming
23266 a vector mode to a vec_concat.
23268 2018-05-17 Olga Makhotina <olga.makhotina@intel.com>
23270 * config.gcc: Support "goldmont-plus".
23271 * config/i386/driver-i386.c (host_detect_local_cpu): Detect
23273 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
23274 PROCESSOR_GOLDMONT_PLUS.
23275 * config/i386/i386.c (m_GOLDMONT_PLUS): Define.
23276 (processor_target_table): Add "goldmont-plus".
23277 (PTA_GOLDMONT_PLUS): Define.
23278 (ix86_lea_outperforms): Add TARGET_GOLDMONT_PLUS.
23279 (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT_PLUS.
23280 (fold_builtin_cpu): Add M_INTEL_GOLDMONT_PLUS.
23281 (fold_builtin_cpu): Add "goldmont-plus".
23282 (ix86_add_stmt_cost): Add TARGET_GOLDMONT_PLUS.
23283 (ix86_option_override_internal): Add "goldmont-plus".
23284 * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT_PLUS.
23285 (processor_type): Add PROCESSOR_GOLDMONT_PLUS.
23286 * config/i386/x86-tune.def: Add m_GOLDMONT_PLUS.
23287 * doc/invoke.texi: Add goldmont-plus as x86 -march=/-mtune= CPU type.
23289 2018-05-17 Richard Biener <rguenther@suse.de>
23291 PR tree-optimization/85757
23292 * tree-ssa-dse.c (dse_classify_store): Record a PHI def and
23293 remove defs that only feed that PHI from further processing.
23295 2018-05-16 Jim Wilson <jimw@sifive.com>
23297 * config/riscv/riscv.md (<optab>si3_mask, <optab>si3_mask_1): Prepend
23299 (<optab>di3_mask, <optab>di3_mask_1): Likewise.
23301 2018-05-16 Mark Wielaard <mark@klomp.org>
23303 * dwarf2out.c (count_index_strings): New function.
23304 (output_indirect_strings): Call count_index_strings and generate
23305 header for dwarf_version >= 5.
23307 2018-05-16 Mark Wielaard <mark@klomp.org>
23309 * dwarf2out.c (dwarf_FORM): New function.
23310 (set_indirect_string): Use dwarf_FORM.
23311 (reset_indirect_string): Likewise.
23312 (size_of_die): Likewise.
23313 (value_format): Likewise.
23314 (output_die): Likewise.
23315 (add_skeleton_AT_string): Likewise.
23316 (output_macinfo_op): Likewise.
23317 (index_string): Likewise.
23318 (output_index_string_offset): Likewise.
23319 (output_index_string): Likewise.
23320 (count_index_strings): Likewise.
23322 2018-05-16 Carl Love <cel@us.ibm.com>
23324 * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions
23325 dcbt and dcbtstt with TH=16 if operands[2] is 0 and Power 8 or newer.
23327 2018-05-16 Martin Jambor <mjambor@suse.cz>
23329 * ipa-prop.c (ipa_free_all_edge_args): Remove.
23330 * ipa-prop.h (ipa_free_all_edge_args): Likewise.
23332 2018-05-16 Wilco Dijkstra <wdijkstr@arm.com>
23334 * config/aarch64/aarch64.md (fma<mode>4): Change into expand pattern.
23335 (fnma<mode>4): Likewise.
23336 (fms<mode>4): Likewise.
23337 (fnms<mode>4): Likewise.
23338 (aarch64_fma<mode>4): Rename insn, reorder accumulator operand.
23339 (aarch64_fnma<mode>4): Likewise.
23340 (aarch64_fms<mode>4): Likewise.
23341 (aarch64_fnms<mode>4): Likewise.
23342 (aarch64_fnmadd<mode>4): Likewise.
23344 2018-05-16 Jason Merrill <jason@redhat.com>
23346 * tree.c (warn_deprecated_use): Return bool. Simplify logic.
23348 2018-05-16 Richard Biener <rguenther@suse.de>
23350 * tree-vectorizer.h (struct stmt_info_for_cost): Add where member.
23351 (dump_stmt_cost): Declare.
23352 (add_stmt_cost): Dump cost we add.
23353 (add_stmt_costs): New function.
23354 (vect_model_simple_cost, vect_model_store_cost, vect_model_load_cost):
23355 No longer exported.
23356 (vect_analyze_stmt): Adjust prototype.
23357 (vectorizable_condition): Likewise.
23358 (vectorizable_live_operation): Likewise.
23359 (vectorizable_reduction): Likewise.
23360 (vectorizable_induction): Likewise.
23361 * tree-vect-loop.c (vect_analyze_loop_operations): Create local
23362 cost vector to pass to vectorizable_ and record afterwards.
23363 (vect_model_reduction_cost): Take cost vector argument and adjust.
23364 (vect_model_induction_cost): Likewise.
23365 (vectorizable_reduction): Likewise.
23366 (vectorizable_induction): Likewise.
23367 (vectorizable_live_operation): Likewise.
23368 * tree-vect-slp.c (vect_create_new_slp_node): Initialize
23369 SLP_TREE_NUMBER_OF_VEC_STMTS.
23370 (vect_analyze_slp_cost_1): Remove.
23371 (vect_analyze_slp_cost): Likewise.
23372 (vect_slp_analyze_node_operations): Take visited args and
23373 a target cost vector. Avoid processing already visited stmt sets.
23374 (vect_slp_analyze_operations): Use a local cost vector to gather
23375 costs and register those of non-discarded instances.
23376 (vect_bb_vectorization_profitable_p): Use add_stmt_costs.
23377 (vect_schedule_slp_instance): Remove copying of
23378 SLP_TREE_NUMBER_OF_VEC_STMTS. Instead assert that it is not
23380 * tree-vect-stmts.c (record_stmt_cost): Remove path directly
23381 adding cost. Record cost entry location.
23382 (vect_prologue_cost_for_slp_op): Function to compute cost of
23383 a constant or invariant generated for SLP vect in the prologue,
23384 split out from vect_analyze_slp_cost_1.
23385 (vect_model_simple_cost): Make static. Adjust for SLP costing.
23386 (vect_model_promotion_demotion_cost): Likewise.
23387 (vect_model_store_cost): Likewise, make static.
23388 (vect_model_load_cost): Likewise.
23389 (vectorizable_bswap): Add cost vector arg and adjust.
23390 (vectorizable_call): Likewise.
23391 (vectorizable_simd_clone_call): Likewise.
23392 (vectorizable_conversion): Likewise.
23393 (vectorizable_assignment): Likewise.
23394 (vectorizable_shift): Likewise.
23395 (vectorizable_operation): Likewise.
23396 (vectorizable_store): Likewise.
23397 (vectorizable_load): Likewise.
23398 (vectorizable_condition): Likewise.
23399 (vectorizable_comparison): Likewise.
23400 (can_vectorize_live_stmts): Likewise.
23401 (vect_analyze_stmt): Likewise.
23402 (vect_transform_stmt): Adjust calls to vectorizable_*.
23403 * tree-vectorizer.c: Include gimple-pretty-print.h.
23404 (dump_stmt_cost): New function.
23406 2018-05-16 Richard Biener <rguenther@suse.de>
23408 * params.def (PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE): New param.
23409 * doc/invoke.texi (dse-max-alias-queries-per-store): Document.
23410 * tree-ssa-dse.c: Include tree-ssa-loop.h.
23411 (check_name): New callback.
23412 (dse_classify_store): Track cycles via a visited bitmap of PHI
23413 defs and simplify handling of in-loop and across loop dead stores
23414 and properly fail for loop-variant refs. Handle byte-tracking with
23415 multiple defs. Use PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE for
23418 2018-05-16 Richard Sandiford <richard.sandiford@linaro.org>
23420 * tree-vectorizer.h (vect_get_vector_types_for_stmt): Declare.
23421 (vect_get_mask_type_for_stmt): Likewise.
23422 * tree-vect-slp.c (vect_two_operations_perm_ok_p): New function,
23424 (vect_build_slp_tree_1): ...here. Use vect_get_vector_types_for_stmt
23425 to determine the statement's vector type and the vector type that
23426 should be used for calculating nunits. Deal with cases in which
23427 the type has to be deferred.
23428 (vect_slp_analyze_node_operations): Use vect_get_vector_types_for_stmt
23429 and vect_get_mask_type_for_stmt to calculate STMT_VINFO_VECTYPE.
23430 * tree-vect-loop.c (vect_determine_vf_for_stmt_1)
23431 (vect_determine_vf_for_stmt): New functions, split out from...
23432 (vect_determine_vectorization_factor): ...here.
23433 * tree-vect-stmts.c (vect_get_vector_types_for_stmt)
23434 (vect_get_mask_type_for_stmt): New functions, split out from
23435 vect_determine_vectorization_factor.
23437 2018-05-16 Richard Biener <rguenther@suse.de>
23439 * tree-cfg.c (verify_gimple_assign_ternary): Properly
23440 verify the [VEC_]COND_EXPR embedded comparison.
23442 2018-05-15 Martin Sebor <msebor@redhat.com>
23444 PR tree-optimization/85753
23445 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Handle
23446 RECORD_TYPE in addition to ARRAY_TYPE.
23448 2018-05-15 Martin Sebor <msebor@redhat.com>
23450 PR middle-end/85643
23451 * calls.c (get_attr_nonstring_decl): Handle MEM_REF.
23453 2018-05-15 Richard Biener <rguenther@suse.de>
23455 * tree-ssa-dse.c (dse_classify_store): Remove use_stmt parameter,
23456 add by_clobber_p one. Change algorithm to collect all defs
23457 representing uses we need to walk and try reducing them to
23458 a single one before failing.
23459 (dse_dom_walker::dse_optimize_stmt): Adjust.
23461 2018-05-13 Mark Wielaard <mark@klomp.org>
23463 * dwarf2out.c (dwarf_OP): Handle DW_OP_addrx and DW_OP_constx.
23464 (size_of_loc_descr): Likewise.
23465 (output_loc_operands): Likewise.
23466 (output_loc_operands_raw): Likewise.
23467 (dw_addr_op): Use dwarf_OP () for DW_OP_constx and DW_OP_addrx.
23468 (resolve_addr_in_expr): Handle DW_OP_addrx and DW_OP_constx.
23469 (hash_loc_operands): Likewise.
23470 (compare_loc_operands): Likewise.
23472 2018-05-14 Mark Wielaard <mark@klomp.org>
23474 * dwarf2out.c (count_index_addrs): New function.
23475 (dwarf2out_finish): Use count_index_addrs to calculate addrs_length.
23477 2018-05-15 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
23479 PR tree-optimization/83648
23480 * ipa-pure-const.c (malloc_candidate_p): Allow function with NULL
23481 return value as malloc candidate.
23483 2018-05-15 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
23486 * ipa-pure-const.c (warn_function_malloc): Pass value of known_finite
23487 param as true in call to suggest_attribute.
23489 2018-05-14 Segher Boessenkool <segher@kernel.crashing.org>
23491 * doc/invoke.texi (RS/6000 and PowerPC Options): Delete @itemx for
23492 -mreadonly-in-sdata.
23494 2018-05-14 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
23496 * config/aarch64/aarch64-simd.md (*aarch64_crypto_aese_fused):
23498 (aarch64_crypto_aesd_fused): Likewise.
23500 2018-05-14 Wilco Dijkstra <wdijkstr@arm.com>
23502 * config/aarch64/aarch64.md (mov<mode>): Remove '*' in alternatives.
23503 (movsi_aarch64): Likewise.
23504 (load_pairsi): Likewise.
23505 (load_pairdi): Likewise.
23506 (store_pairsi): Likewise.
23507 (store_pairdi): Likewise.
23508 (load_pairsf): Likewise.
23509 (load_pairdf): Likewise.
23510 (store_pairsf): Likewise.
23511 (store_pairdf): Likewise.
23512 (zero_extend): Likewise.
23513 (trunc): Swap alternatives.
23514 (fcvt_target): Add '?' to prefer w over r.
23516 2018-05-14 Jakub Jelinek <jakub@redhat.com>
23519 * config/i386/i386.md: Disallow non-commutative arithmetics in
23520 last twpeephole for mem {+,-,&,|,^}= x; mem != 0 after cmpelim
23521 optimization. Use COMMUTATIVE_ARITH_P test rather than != MINUS
23522 in the peephole2 before it.
23524 2018-05-14 Sebastian Peryt <sebastian.peryt@intel.com>
23526 * common/config/i386/i386-common.c (OPTION_MASK_ISA_CLDEMOTE_SET,
23527 OPTION_MASK_ISA_CLDEMOTE_UNSET): New defines.
23528 (ix86_handle_option): Handle -mcldemote.
23529 * config.gcc: New header.
23530 * config/i386/cldemoteintrin.h: New file.
23531 * config/i386/cpuid.h (bit_CLDEMOTE): New bit.
23532 * config/i386/driver-i386.c (host_detect_local_cpu): Detect
23534 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
23535 OPTION_MASK_ISA_CLDEMOTE.
23536 * config/i386/i386.c (ix86_target_string): Add -mcldemote.
23537 (ix86_valid_target_attribute_inner_p): Ditto.
23538 (enum ix86_builtins): Add IX86_BUILTIN_CLDEMOTE.
23539 (ix86_init_mmx_sse_builtins): Define __builtin_ia32_cldemote.
23540 (ix86_expand_builtin): Expand IX86_BUILTIN_CLDEMOTE.
23541 * config/i386/i386.h (TARGET_CLDEMOTE, TARGET_CLDEMOTE_P): New.
23542 * config/i386/i386.md (UNSPECV_CLDEMOTE): New.
23544 * config/i386/i386.opt: Add -mcldemote.
23545 * config/i386/x86intrin.h: New header.
23546 * doc/invoke.texi: Add -mcldemote.
23548 2018-05-14 Richard Biener <rguenther@suse.de>
23550 * doc/match-and-simplify.texi: Adjust :s documentation.
23552 2018-05-14 Alexander Monakov <amonakov@ispras.ru>
23554 * sort.cc (REORDER_23): Pass the type for the temporaries instead of
23555 intended memcpy size.
23556 (REORDER_45): Likewise.
23558 2018-05-13 Alexander Monakov <amonakov@ispras.ru>
23560 * sort.cc: New file.
23561 * system.h [!CHECKING_P] (qsort): Redirect to gcc_qsort.
23562 * vec.c (qsort_chk): Use gcc_qsort.
23563 * Makefile.in (OBJS-libcommon): Add sort.o.
23564 (build/sort.o): New target. Use it...
23565 (BUILD_RTL): ... here, and...
23566 (build/gencfn-macros): ... here, and...
23567 (build/genmatch): ... here.
23569 2018-05-13 Kito Cheng <kito.cheng@gmail.com>
23570 Chung-Ju Wu <jasonwucj@gmail.com>
23572 * config.gcc (nds32*-*-*): Check that n15 is valid to --with-cpu.
23573 * config/nds32/nds32-graywolf.md: New file.
23574 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_GRAYWOLF.
23575 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n15
23577 * config/nds32/nds32-protos.h: More declarations for n15 pipeline.
23578 * config/nds32/nds32-utils.c: More implementations for n15 pipeline.
23579 * config/nds32/nds32.md (pipeline_model): Add graywolf.
23580 * config/nds32/nds32.opt (mcpu): Support n15 pipeline cpus.
23581 * config/nds32/pipelines.md: Include n15 settings.
23583 2018-05-13 Kito Cheng <kito.cheng@gmail.com>
23584 Chung-Ju Wu <jasonwucj@gmail.com>
23586 * config.gcc (nds32*-*-*): Check that n12/n13 are valid to --with-cpu.
23587 * config/nds32/nds32-n13.md: New file.
23588 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N12 and CPU_N13.
23589 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n12/n13
23591 * config/nds32/nds32-protos.h: More declarations for n12/n13 pipeline.
23592 * config/nds32/nds32.md (pipeline_model): Add n13.
23593 * config/nds32/nds32.opt (mcpu): Support n12/n13 pipeline cpus.
23594 * config/nds32/pipelines.md: Include n13 settings.
23596 2018-05-13 Kito Cheng <kito.cheng@gmail.com>
23597 Chung-Ju Wu <jasonwucj@gmail.com>
23599 * config.gcc (nds32*-*-*): Check that n10/d10 are valid to --with-cpu.
23600 * config/nds32/nds32-n10.md: New file.
23601 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N10.
23602 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n10
23604 * config/nds32/nds32-protos.h: More declarations for n10 pipeline.
23605 * config/nds32/nds32-utils.c: More implementations for n10 pipeline.
23606 * config/nds32/nds32.md (pipeline_model): Add n10.
23607 * config/nds32/nds32.opt (mcpu): Support n10 pipeline cpus.
23608 * config/nds32/pipelines.md: Include n10 settings.
23610 2018-05-13 Monk Chiang <sh.chiang04@gmail.com>
23611 Kito Cheng <kito.cheng@gmail.com>
23612 Chung-Ju Wu <jasonwucj@gmail.com>
23614 * config.gcc (nds32be-*-*): Handle --with-ext-dsp.
23615 * config/nds32/constants.md (unspec_element, unspec_volatile_element):
23616 Add enum values for DSP extension instructions.
23617 * config/nds32/constraints.md (Iu06, IU06, CVp5, CVs5, CVs2, CVhi):
23619 * config/nds32/iterators.md (shifts, shiftrt, sat_plus, all_plus,
23620 sat_minus, all_minus, plus_minus, extend, sumax, sumin, sumin_max):
23621 New code iterators.
23622 (su, zs, uk, opcode, add_rsub, add_sub): New code attributes.
23623 * config/nds32/nds32-dspext.md: New file for DSP implementation.
23624 * config/nds32/nds32-intrinsic.c: Implementation of DSP extension.
23625 * config/nds32/nds32-intrinsic.md: Likewise.
23626 * config/nds32/nds32_intrinsic.h: Likewise.
23627 * config/nds32/nds32-md-auxiliary.c: Likewise.
23628 * config/nds32/nds32-memory-manipulation.c: Consider DSP extension.
23629 * config/nds32/nds32-predicates.c (const_vector_to_hwint): New.
23630 (nds32_valid_CVp5_p, nds32_valid_CVs5_p): New.
23631 (nds32_valid_CVs2_p, nds32_valid_CVhi_p): New.
23632 * config/nds32/nds32-protos.h: New declarations for DSP extension.
23633 * config/nds32/nds32-utils.c (extract_mac_non_acc_rtx): New case
23634 TYPE_DMAC in switch statement.
23635 * config/nds32/nds32.c: New checking and implementation for DSP
23636 extension instructions.
23637 * config/nds32/nds32.h: Likewise.
23638 * config/nds32/nds32.md: Likewise.
23639 * config/nds32/nds32.opt (mhw-abs, mext-dsp): New options.
23640 * config/nds32/predicates.md: Implement new predicates for DSP
23643 2018-05-11 Michael Meissner <meissner@linux.vnet.ibm.com>
23645 * config/rs6000/rs6000.md (mov<mode>_softfloat, FMOVE32):
23646 Reformat alternatives and attributes so it is easier to identify
23647 which constraints/attributes go with which instruction.
23648 (mov<mode>_hardfloat32, FMOVE64): Likewise.
23649 (mov<mode>_softfloat32, FMOVE64): Likewise.
23650 (mov<mode>_hardfloat64, FMOVE64): Likewise.
23651 (mov<mode>_softfloat64, FMOVE64): Likewise.
23653 2018-05-11 Kelvin Nilsen <kelvin@gcc.gnu.org>
23655 * doc/extend.texi (PowerPC Built-in Functions): Rename this
23657 (Basic PowerPC Built-in Functions): The new name of the
23658 subsection previously known as "PowerPC Built-in Functions".
23659 (Basic PowerPC Built-in Functions Available on all Configurations):
23661 (Basic PowerPC Built-in Functions Available on ISA 2.05): Likewise.
23662 (Basic PowerPC Built-in Functions Available on ISA 2.06): Likewise.
23663 (Basic PowerPC Built-in Functions Available on ISA 2.07): Likewise.
23664 (Basic PowerPC Built-in Functions Available on ISA 3.0): Likewise.
23666 2018-05-11 Martin Jambor <mjambor@suse.cz>
23669 * ipa-cp.c (intersect_with_plats): Check that the lattice contains
23672 2018-05-11 Richard Earnshaw <rearnsha@arm.com>
23675 * config/arm/arm-cpus.in (fgroup ARMv6m): Add be8 feature.
23677 2018-05-11 Sebastian Peryt <sebastian.peryt@intel.com>
23679 * common/config/i386/i386-common.c (OPTION_MASK_ISA_WAITPKG_SET,
23680 OPTION_MASK_ISA_WAITPKG_UNSET): New defines.
23681 (ix86_handle_option): Handle -mwaitpkg.
23682 * config.gcc: New header.
23683 * config/i386/cpuid.h (bit_WAITPKG): New bit.
23684 * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mwaitpkg.
23685 * config/i386/i386-builtin-types.def ((UINT8, UNSIGNED, UINT64)): New
23687 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
23688 OPTION_MASK_ISA_WAITPKG.
23689 * config/i386/i386.c (ix86_target_string): Add -mwaitpkg.
23690 (ix86_option_override_internal): Add PTA_WAITPKG.
23691 (ix86_valid_target_attribute_inner_p): Add -mwaitpkg.
23692 (enum ix86_builtins): Add IX86_BUILTIN_UMONITOR, IX86_BUILTIN_UMWAIT,
23693 IX86_BUILTIN_TPAUSE.
23694 (ix86_init_mmx_sse_builtins): Define __builtin_ia32_umonitor,
23695 __builtin_ia32_umwait and __builtin_ia32_tpause.
23696 (ix86_expand_builtin): Expand IX86_BUILTIN_UMONITOR,
23697 IX86_BUILTIN_UMWAIT, IX86_BUILTIN_TPAUSE.
23698 * config/i386/i386.h (TARGET_WAITPKG, TARGET_WAITPKG_P): New.
23699 * config/i386/i386.md (UNSPECV_UMWAIT, UNSPECV_UMONITOR,
23700 UNSPECV_TPAUSE): New.
23701 (umwait, umwait_rex64, umonitor_<mode>, tpause, tpause_rex64): New.
23702 * config/i386/i386.opt: Add -mwaitpkg.
23703 * config/i386/waitpkgintrin.h: New file.
23704 * config/i386/x86intrin.h: New header.
23705 * doc/invoke.texi: Add -mwaitpkg.
23707 2018-05-11 Richard Earnshaw <rearnsha@arm.com>
23710 * config/arm/arm-cpus.in: Add comment that ARMv6-m and ARMv6S-m are now
23712 (cortex-m0): Use armv6s-m isa.
23713 (cortex-m0plus): Likewise.
23714 (cortex-m1): Likewise.
23715 (cortex-m0.small-multiply): Likewise.
23716 (cortex-m0plus.small-multiply): Likewise.
23717 (cortex-m1.small-multiply): Likewise.
23719 2018-05-11 Allan Sandfeld Jensen <allan.jensen@qt.io>
23720 Jakub Jelinek <jakub@redhat.com>
23722 PR tree-optimization/85692
23723 * tree-ssa-forwprop.c (simplify_vector_constructor): Try two
23724 source permute as well.
23726 2018-05-11 Martin Liska <mliska@suse.cz>
23729 * doc/extend.texi: Document LLVM style format for no_sanitize
23732 2018-05-10 Michael Meissner <meissner@linux.vnet.ibm.com>
23734 * config/rs6000/rs6000.c (mode_supports_dq_form): Rename
23735 mode_supports_vsx_dform_quad to mode_supports_dq_form.
23736 (mode_supports_vsx_dform_quad): Likewise.
23737 (mode_supports_vmx_dform): Move these functions to be next to the
23738 other mode_supports functions.
23739 (mode_supports_dq_form): Likewise.
23740 (quad_address_p): Change calls of mode_supports_vsx_dform_quad to
23741 mode_supports_dq_form.
23742 (reg_offset_addressing_ok_p): Likewise.
23743 (offsettable_ok_by_alignment): Likewise.
23744 (rs6000_legitimate_offset_address_p): Likewise.
23745 (legitimate_lo_sum_address_p): Likewise.
23746 (rs6000_legitimize_address): Likewise.
23747 (rs6000_legitimize_reload_address): Likewise.
23748 (rs6000_secondary_reload_inner): Likewise.
23749 (rs6000_preferred_reload_class): Likewise.
23750 (rs6000_output_move_128bit): Likewise.
23752 2018-05-10 Uros Bizjak <ubizjak@gmail.com>
23754 * config/i386/i386.c (ix86_expand_builtin) <case IX86_BUILTIN_RDPID>:
23755 Generate SImode target register for null target.
23756 <case IX86_BUILTIN_XGETBV>: Ditto.
23757 <case IX86_BUILTIN_XSETBV>: Optimize LSHIFTRT generation.
23758 * config/i386/xsaveintrin.h (_xgetbv): Add missing return.
23760 2018-05-10 Carl Love <cel@us.ibm.com>
23762 * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions
23763 dcbtt and dcbtstt if operands[2] is 0.
23765 2018-05-10 Uros Bizjak <ubizjak@gmail.com>
23768 * config/i386/sse.md (usadv64qi): New expander.
23770 2018-05-10 Segher Boessenkool <segher@kernel.crashing.org>
23772 * config/rs6000/altivec.md (altivec_vmrghb, altivec_vmrghh,
23773 altivec_vmrghw, altivec_vmrglb, altivec_vmrglh, altivec_vmrglw): Remove
23774 -maltivec=be support.
23775 (vec_widen_umult_even_v16qi, vec_widen_smult_even_v16qi,
23776 vec_widen_umult_even_v8hi, vec_widen_smult_even_v8hi,
23777 vec_widen_umult_even_v4si, vec_widen_smult_even_v4si,
23778 vec_widen_umult_odd_v16qi, vec_widen_smult_odd_v16qi,
23779 vec_widen_umult_odd_v8hi, vec_widen_smult_odd_v8hi,
23780 vec_widen_umult_odd_v4si, vec_widen_smult_odd_v4si, altivec_vpkpx,
23781 altivec_vpks<VI_char>ss, altivec_vpks<VI_char>us,
23782 altivec_vpku<VI_char>us, altivec_vpku<VI_char>um, altivec_vsum2sws,
23783 altivec_vsumsws): Adjust.
23784 (altivec_vspltb *altivec_vspltb_internal, altivec_vsplth,
23785 *altivec_vsplth_internal, altivec_vspltw, *altivec_vspltw_internal,
23786 altivec_vspltsf, *altivec_vspltsf_internal): Remove -maltivec=be
23788 (altivec_vperm_<mode>, altivec_vperm_<mode>_uns,
23789 altivec_vupkhs<VU_char>, altivec_vupkls<VU_char>, altivec_vupkhpx,
23790 altivec_vupklpx, altivec_lvsl, altivec_lvsr): Adjust.
23791 (altivec_lve<VI_char>x): Delete expand.
23792 (*altivec_lve<VI_char>x_internal): Rename to...
23793 (altivec_lve<VI_char>x): ... this.
23794 (altivec_lvxl_<mode>): Delete expand.
23795 (*altivec_lvxl_<mode>_internal): Rename to ...
23796 (altivec_lvxl_<mode>): ... this.
23797 (altivec_stvxl_<mode>): Delete expand.
23798 (*altivec_stvxl_<mode>_internal): Rename to ...
23799 (altivec_stvxl_<mode>): ... this.
23800 (altivec_stve<VI_char>x): Delete expand.
23801 (*altivec_stve<VI_char>x_internal): Rename to ...
23802 (altivec_stve<VI_char>x): ... this.
23803 (doublee<mode>2, unsdoubleev4si2, doubleo<mode>2, unsdoubleov4si2,
23804 doubleh<mode>2, unsdoublehv4si2, doublel<mode>2, unsdoublelv4si2,
23805 reduc_plus_scal_<mode>): Adjust.
23806 * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Adjust
23808 (rs6000_cpu_cpp_builtins): Adjust.
23809 (altivec_resolve_overloaded_builtin): Remove -maltivec=be support.
23810 * config/rs6000/rs6000-protos.h (altivec_expand_lvx_be,
23811 altivec_expand_stvx_be, altivec_expand_stvex_be): Delete.
23812 * config/rs6000/rs6000.c (rs6000_option_override_internal): Remove
23813 -maltivec=be support.
23814 (rs6000_split_vec_extract_var): Adjust.
23815 (rs6000_split_v4si_init): Adjust.
23816 (swap_selector_for_mode): Delete.
23817 (altivec_expand_lvx_be, altivec_expand_stvx_be,
23818 altivec_expand_stvex_be): Delete.
23819 (altivec_expand_lv_builtin, altivec_expand_stv_builtin): Remove
23820 -maltivec=be support.
23821 (rs6000_gimple_fold_builtin): Ditto.
23822 (rs6000_generate_float2_double_code, rs6000_generate_float2_code):
23824 * config/rs6000/rs6000.h (VECTOR_ELT_ORDER_BIG): Delete.
23825 (TARGET_DIRECT_MOVE_64BIT): Adjust.
23826 * config/rs6000/rs6000.md (split for extendsidi2 for vectors): Adjust.
23827 * config/rs6000/rs6000.opt (maltivec=le, maltivec=be): Delete.
23828 * config/rs6000/vsx.md (floate<mode>, unsfloatev2di, floato<mode>,
23829 unsfloatov2di, vsignedo_v2df, vsignede_v2df, vunsignedo_v2df,
23830 vunsignede_v2df, vsx_extract_<mode>_p9, *vsx_extract_si,
23831 *vsx_extract_<mode>_p8, *vsx_extract_si_<uns>float_df,
23832 *vsx_extract_si_<uns>float_<mode>, vsx_set_<mode>_p9, vsx_set_v4sf_p9,
23833 *vsx_insert_extract_v4sf_p9, *vsx_insert_extract_v4sf_p9_2, and an
23834 anonymous split): Adjust.
23835 (vsx_mergel_<mode>, vsx_mergeh_<mode>): Remove -maltivec=be support.
23836 (vsx_xxspltd_<mode>, extract4b, insert4b): Adjust.
23838 2018-05-10 Eric Botcazou <ebotcazou@adacore.com>
23840 * configure.ac (gcc_gxx_include_dir_add_sysroot): Set it to 1 only
23841 when --with-gxx-include-dir is also specified.
23842 * configure: Regenerate.
23844 2018-05-09 Jim Wilson <jimw@sifive.com>
23847 * config.gcc (riscv*-*-*): Handle --with-multilib-list.
23848 * config/riscv/t-withmultilib: New.
23849 * config/riscv/withmultilib.h: New.
23850 * doc/install.texi: Document RISC-V --with-multilib-list support.
23852 2018-05-09 Richard Biener <rguenther@suse.de>
23854 * tree-vect-slp.c (vect_bb_slp_scalar_cost): Fill a cost
23856 (vect_bb_vectorization_profitable_p): Adjust. Compute
23857 actual scalar cost using the cost vector and the add_stmt_cost
23860 2018-05-09 Segher Boessenkool <segher@kernel.crashing.org>
23862 PR rtl-optimization/85645
23863 * config/rs6000/rs6000.c (rs6000_emit_prologue_components): Put a SET
23864 in the REG_CFA_REGISTER note for LR, don't leave it empty.
23866 2018-05-09 Segher Boessenkool <segher@kernel.crashing.org>
23868 PR rtl-optimization/85645
23869 * shrink-wrap.c (spread_components): Return a boolean saying if
23870 anything was changed.
23871 (try_shrink_wrapping_separate): Iterate spread_components until
23872 nothing changes anymore.
23874 2018-05-09 Segher Boessenkool <segher@kernel.crashing.org>
23876 PR rtl-optimization/85645
23877 * regrename.c (build_def_use): Also kill the chains that include the
23878 destination of a REG_CFA_REGISTER note.
23880 2018-05-09 Segher Boessenkool <segher@kernel.crashing.org>
23882 PR rtl-optimization/85645
23883 * regcprop.c (copyprop_hardreg_forward_1): Don't propagate into an
23884 insn that has a REG_CFA_REGISTER note.
23886 2018-05-09 Richard Sandiford <richard.sandiford@linaro.org>
23888 * cfgexpand.c (expand_clobber): New function.
23889 (expand_gimple_stmt_1): Use it.
23890 * tree-vect-stmts.c (vect_clobber_variable): New function,
23892 (vectorizable_simd_clone_call): ...here.
23893 (vectorizable_store): Emit a clobber either side of an
23894 IFN_STORE_LANES sequence.
23895 (vectorizable_load): Emit a clobber after an IFN_LOAD_LANES sequence.
23897 2018-05-09 Tom de Vries <tom@codesourcery.com>
23900 * config/nvptx/nvptx.md (define_insn "trap", define_insn "trap_if_true")
23901 (define_insn "trap_if_false"): Add exit after trap.
23903 2018-05-09 Eric Botcazou <ebotcazou@adacore.com>
23905 PR rtl-optimization/85638
23906 * bb-reorder.c: Include common/common-target.h.
23907 (create_forwarder_block): New function extracted from...
23908 (fix_up_crossing_landing_pad): ...here. Rename into...
23909 (dw2_fix_up_crossing_landing_pad): ...this.
23910 (sjlj_fix_up_crossing_landing_pad): New function.
23911 (find_rarely_executed_basic_blocks_and_crossing_edges): In SJLJ mode,
23912 call sjlj_fix_up_crossing_landing_pad if there are incoming EH edges
23913 from both partitions and exit the loop after one iteration.
23915 2018-05-08 Kelvin Nilsen <kelvin@gcc.gnu.org>
23918 * doc/extend.texi (PowerPC Built-in Functions): Rename this
23920 (Basic PowerPC Built-in Functions): The new name of the
23921 subsection previously known as "PowerPC Built-in Functions".
23922 (Basic PowerPC Built-in Functions Available on all Configurations):
23924 (Basic PowerPC Built-in Functions Available on ISA 2.05): New
23926 (Basic PowerPC Built-in Functions Available on ISA 2.06): New
23928 (Basic PowerPC Built-in Functions Available on ISA 2.07): New
23930 (Basic PowerPC Built-in Functions Available on ISA 3.0): New
23933 2018-05-08 Jim Wilson <jimw@sifive.com>
23935 * config/riscv/linux.h (MUSL_ABI_SUFFIX): Delete unnecessary backslash.
23936 (LD_EMUL_SUFFIX): New.
23937 (LINK_SPEC): Use it.
23939 2018-05-08 Kelvin Nilsen <kelvin@gcc.gnu.org>
23941 * doc/extend.texi (PowerPC Built-in Functions): Rename this
23943 (Basic PowerPC Built-in Functions): The new name of the
23944 subsection previously known as "PowerPC Built-in Functions".
23945 (Basic PowerPC Built-in Functions Available on all Configurations):
23947 (Basic PowerPC Built-in Functions Available on ISA 2.05): New
23949 (Basic PowerPC Built-in Functions Available on ISA 2.06): New
23951 (Basic PowerPC Built-in Functions Available on ISA 2.07): New
23953 (Basic PowerPC Built-in Functions Available on ISA 3.0): New
23956 2018-05-08 Jakub Jelinek <jakub@redhat.com>
23959 * config/i386/i386.md: Add peepholes for mem {+,-,&,|,^}= x; mem != 0
23960 after cmpelim optimization.
23962 2018-05-08 Olga Makhotina <olga.makhotina@intel.com>
23964 * config.gcc: Support "goldmont".
23965 * config/i386/driver-i386.c (host_detect_local_cpu): Detect "goldmont".
23966 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
23967 PROCESSOR_GOLDMONT.
23968 * config/i386/i386.c (m_GOLDMONT): Define.
23969 (processor_target_table): Add "goldmont".
23970 (PTA_GOLDMONT): Define.
23971 (ix86_lea_outperforms): Add TARGET_GOLDMONT.
23972 (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT.
23973 (fold_builtin_cpu): Add M_INTEL_GOLDMONT.
23974 (fold_builtin_cpu): Add "goldmont".
23975 (ix86_add_stmt_cost): Add TARGET_GOLDMONT.
23976 (ix86_option_override_internal): Add "goldmont".
23977 * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT.
23978 (processor_type): Add PROCESSOR_GOLDMONT.
23979 * config/i386/i386.md: Add CPU "glm".
23980 * config/i386/glm.md: New file.
23981 * config/i386/x86-tune.def: Add m_GOLDMONT.
23982 * doc/invoke.texi: Add goldmont as x86 -march=/-mtune= CPU type.
23984 2018-05-08 Jakub Jelinek <jakub@redhat.com>
23987 * config/i386/i386.c (ix86_expand_sse2_abs): Handle E_V2DImode and
23989 * config/i386/sse.md (abs<mode>2): Use VI_AVX2 iterator instead of
23990 VI1248_AVX512VL_AVX512BW. Handle V2DImode and V4DImode if not
23991 TARGET_AVX512VL using ix86_expand_sse2_abs. Formatting fixes.
23994 * config/i386/i386.c (ix86_fold_builtin): Handle
23995 IX86_BUILTIN_{,P}MOVMSK{PS,PD,B}{,128,256}.
23998 * config/i386/sse.md (ssequaterinsnmode): New mode attribute.
23999 (*<extract_type>_vinsert<shuffletype><extract_suf>_0): New pattern.
24001 2018-05-08 Richard Earnshaw <rearnsha@arm.com>
24004 * config/arm/parsecpu.awk (check_cpu): Fix operator precedence.
24005 (check_arch): Likewise.
24006 (check_fpu): Return the result rather than printing it.
24007 (end arch): Fix operator precedence.
24008 (end cpu): Likewise.
24009 (END): Print the result from check_fpu.
24011 2018-05-08 Richard Sandiford <richard.sandiford@linaro.org>
24012 Alan Hayward <alan.hayward@arm.com>
24013 David Sherwood <david.sherwood@arm.com>
24015 * config/aarch64/aarch64-sve.md (*pred_cmp<cmp_op><mode>_combine)
24016 (*pred_cmp<cmp_op><mode>, *fcm<cmp_op><mode>_and_combine)
24017 (*fcmuo<mode>_and_combine, *fcm<cmp_op><mode>_and)
24018 (*fcmuo<mode>_and): New patterns.
24020 2018-05-08 Richard Sandiford <richard.sandiford@linaro.org>
24022 * config/aarch64/iterators.md (UNSPEC_COND_LO, UNSPEC_COND_LS)
24023 (UNSPEC_COND_HI, UNSPEC_COND_HS, UNSPEC_COND_UO): Delete.
24024 (SVE_INT_CMP, SVE_FP_CMP): New code iterators.
24025 (cmp_op, sve_imm_con): New code attributes.
24026 (SVE_COND_INT_CMP, imm_con): Delete.
24027 (cmp_op): Remove above unspecs from int attribute.
24028 * config/aarch64/aarch64-sve.md (*vec_cmp<cmp_op>_<mode>): Rename
24030 (*cmp<cmp_op><mode>): ...this. Use UNSPEC_MERGE_PTRUE instead of
24031 comparison-specific unspecs.
24032 (*vec_cmp<cmp_op>_<mode>_ptest): Rename to...
24033 (*cmp<cmp_op><mode>_ptest): ...this and adjust likewise.
24034 (*vec_cmp<cmp_op>_<mode>_cc): Rename to...
24035 (*cmp<cmp_op><mode>_cc): ...this and adjust likewise.
24036 (*vec_fcm<cmp_op><mode>): Rename to...
24037 (*fcm<cmp_op><mode>): ...this and adjust likewise.
24038 (*vec_fcmuo<mode>): Rename to...
24039 (*fcmuo<mode>): ...this and adjust likewise.
24040 (*pred_fcm<cmp_op><mode>): New pattern.
24041 * config/aarch64/aarch64.c (aarch64_emit_unop, aarch64_emit_binop)
24042 (aarch64_emit_sve_ptrue_op, aarch64_emit_sve_ptrue_op_cc): New
24044 (aarch64_unspec_cond_code): Remove handling of LTU, GTU, LEU, GEU
24046 (aarch64_gen_unspec_cond, aarch64_emit_unspec_cond): Delete.
24047 (aarch64_emit_sve_predicated_cond): New function.
24048 (aarch64_expand_sve_vec_cmp_int): Use aarch64_emit_sve_ptrue_op_cc.
24049 (aarch64_emit_unspec_cond_or): Replace with...
24050 (aarch64_emit_sve_or_conds): ...this new function. Use
24051 aarch64_emit_sve_ptrue_op for the individual comparisons and
24052 aarch64_emit_binop to OR them together.
24053 (aarch64_emit_inverted_unspec_cond): Replace with...
24054 (aarch64_emit_sve_inverted_cond): ...this new function. Use
24055 aarch64_emit_sve_ptrue_op for the comparison and
24056 aarch64_emit_unop to invert the result.
24057 (aarch64_expand_sve_vec_cmp_float): Update after the above
24058 changes. Use aarch64_emit_sve_ptrue_op for native comparisons.
24060 2018-05-07 Nathan Sidwell <nathan@acm.org>
24062 * doc/invoke.texi (C++ Dialect Options): Remove -ffor-scope.
24063 * doc/extend.texi (Deprecated Features): Remove -fno-for-scope
24064 (Backwards Compatibility): Likewise.
24066 2018-05-07 Luis Machado <luis.machado@linaro.org>
24070 2018-05-07 Luis Machado <luis.machado@linaro.org>
24072 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
24073 <prefetch_dynamic_strides>: New const bool field.
24074 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
24075 prefetch_dynamic_strides.
24076 (exynosm1_prefetch_tune): Likewise.
24077 (thunderxt88_prefetch_tune): Likewise.
24078 (thunderx_prefetch_tune): Likewise.
24079 (thunderx2t99_prefetch_tune): Likewise.
24080 (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides
24082 (aarch64_override_options_internal): Update to set
24083 PARAM_PREFETCH_DYNAMIC_STRIDES.
24084 * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
24085 * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
24086 * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
24087 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
24088 prefetch-dynamic-strides setting.
24090 2018-05-07 Luis Machado <luis.machado@linaro.org>
24092 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
24093 <minimum_stride>: New const int field.
24094 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
24095 minimum_stride field.
24096 (exynosm1_prefetch_tune): Likewise.
24097 (thunderxt88_prefetch_tune): Likewise.
24098 (thunderx_prefetch_tune): Likewise.
24099 (thunderx2t99_prefetch_tune): Likewise.
24100 (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048.
24101 (aarch64_override_options_internal): Update to set
24102 PARAM_PREFETCH_MINIMUM_STRIDE.
24103 * doc/invoke.texi (prefetch-minimum-stride): Document new option.
24104 * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
24105 * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
24106 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
24107 stride is constant and is below the minimum stride threshold.
24109 2018-05-07 Luis Machado <luis.machado@linaro.org>
24111 * config/aarch64/aarch64.c (qdf24xx_prefetch_tune) <l2_cache_size>: Set
24114 2018-05-07 Luis Machado <luis.machado@linaro.org>
24116 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
24117 <prefetch_dynamic_strides>: New const bool field.
24118 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
24119 prefetch_dynamic_strides.
24120 (exynosm1_prefetch_tune): Likewise.
24121 (thunderxt88_prefetch_tune): Likewise.
24122 (thunderx_prefetch_tune): Likewise.
24123 (thunderx2t99_prefetch_tune): Likewise.
24124 (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides
24126 (aarch64_override_options_internal): Update to set
24127 PARAM_PREFETCH_DYNAMIC_STRIDES.
24128 * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
24129 * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
24130 * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
24131 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
24132 prefetch-dynamic-strides setting.
24134 2018-05-07 Luis Machado <luis.machado@linaro.org>
24136 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
24137 <minimum_stride>: New const int field.
24138 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
24139 minimum_stride field.
24140 (exynosm1_prefetch_tune): Likewise.
24141 (thunderxt88_prefetch_tune): Likewise.
24142 (thunderx_prefetch_tune): Likewise.
24143 (thunderx2t99_prefetch_tune): Likewise.
24144 (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048.
24145 (aarch64_override_options_internal): Update to set
24146 PARAM_PREFETCH_MINIMUM_STRIDE.
24147 * doc/invoke.texi (prefetch-minimum-stride): Document new option.
24148 * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
24149 * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
24150 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
24151 stride is constant and is below the minimum stride threshold.
24153 2018-05-06 Jakub Jelinek <jakub@redhat.com>
24156 * cfgexpand.c (expand_asm_stmt): Don't create a temporary if
24157 the type is addressable. Don't force op into register if it has
24160 2018-05-05 Roland McGrath <mcgrathr@google.com>
24163 * varasm.c (default_section_type_flags): Set SECTION_NOTYPE for
24164 any section for which we don't know a specific type it should have,
24165 regardless of name. Previously this was done only for the exact
24166 names ".init_array", ".fini_array", and ".preinit_array".
24167 (default_elf_asm_named_section): Add comment about
24168 relationship with default_section_type_flags and SECTION_NOTYPE.
24169 (get_section): Don't consider it a type conflict if one side has
24170 SECTION_NOTYPE and the other doesn't, as long as neither has the
24171 SECTION_BSS et al used in the default_section_type_flags logic.
24173 2018-05-05 Tom de Vries <tom@codesourcery.com>
24176 * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_3): Define.
24177 (workaround_barsyncs): New function.
24178 (nvptx_reorg): Use workaround_barsyncs.
24179 * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
24180 (define_expand "nvptx_membar_cta"): New define_expand.
24181 (define_insn "*nvptx_membar_cta"): New insn.
24183 2018-05-04 Pekka Jääskeläinen <pekka.jaaskelainen@parmance.com>
24185 * brig-builtins.def: Add consts to ptrs etc. in BRIG builtin defs.
24186 To improve optimization opportunities.
24187 * builtin-types.def: The new needed builtin types for the above.
24189 2018-05-04 Richard Biener <rguenther@suse.de>
24191 * bb-reorder.c (sanitize_hot_paths): Release hot_bbs_to_check.
24192 * gimple-ssa-store-merging.c
24193 (imm_store_chain_info::output_merged_store): Remove redundant create,
24194 release split_store vector contents on failure.
24195 * tree-vect-slp.c (vect_schedule_slp_instance): Avoid leaking
24196 scalar stmt vector on cache hit.
24198 2018-05-04 Segher Boessenkool <segher@kernel.crashing.org>
24200 * common/config/rs6000/rs6000-common.c (rs6000_handle_option): Remove
24202 * config.gcc (powerpc-xilinx-eabi*): Remove.
24203 * config/rs6000/predicates.md (easy_fp_constant): Remove Xilinx FP
24205 (fusion_addis_mem_combo_load): Ditto.
24206 * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Remove Xilinx
24208 (rs6000_cpu_cpp_builtins): Ditto.
24209 * config/rs6000/rs6000-linux.c
24210 (rs6000_linux_float_exceptions_rounding_supported_p): Ditto.
24211 * config/rs6000/rs6000-opts.h (enum fpu_type_t): Delete.
24212 * config/rs6000/rs6000.c (rs6000_debug_reg_global): Remove Xilinx FP
24214 (rs6000_setup_reg_addr_masks): Ditto.
24215 (rs6000_init_hard_regno_mode_ok): Ditto.
24216 (rs6000_option_override_internal): Ditto.
24217 (legitimate_lo_sum_address_p): Ditto.
24218 (rs6000_legitimize_address): Ditto.
24219 (rs6000_legitimize_reload_address): Ditto.
24220 (rs6000_legitimate_address_p): Ditto.
24221 (abi_v4_pass_in_fpr): Ditto.
24222 (setup_incoming_varargs): Ditto.
24223 (rs6000_gimplify_va_arg): Ditto.
24224 (rs6000_split_multireg_move): Ditto.
24225 (rs6000_savres_strategy): Ditto.
24226 (rs6000_emit_prologue_components): Ditto.
24227 (rs6000_emit_epilogue_components): Ditto.
24228 (rs6000_emit_prologue): Ditto.
24229 (rs6000_emit_epilogue): Ditto.
24230 (rs6000_elf_file_end): Ditto.
24231 (rs6000_function_value): Ditto.
24232 (rs6000_libcall_value): Ditto.
24233 * config/rs6000/rs6000.h: Ditto.
24234 (TARGET_MINMAX_SF, TARGET_MINMAX_DF): Delete, merge to ...
24235 (TARGET_MINMAX): ... this. New.
24236 (TARGET_SF_FPR, TARGET_DF_FPR, TARGET_SF_INSN, TARGET_DF_INSN): Delete.
24237 * config/rs6000/rs6000.md: Remove Xilinx FP support.
24238 (*movsi_internal1_single): Delete.
24239 * config/rs6000/rs6000.opt (msingle-float, mdouble-float, msimple-fpu,
24240 mfpu=, mxilinx-fpu): Delete.
24241 * config/rs6000/singlefp.h: Delete.
24242 * config/rs6000/sysv4.h: Remove Xilinx FP support.
24243 * config/rs6000/t-rs6000: Ditto.
24244 * config/rs6000/t-xilinx: Delete.
24245 * config/rs6000/titan.md: Adjust for fp_type removal.
24246 * config/rs6000/vsx.md: Remove Xilinx FP support.
24247 (VStype_simple): Delete.
24248 (VSfptype_simple, VSfptype_mul, VSfptype_div, VSfptype_sqrt): Delete.
24249 * config/rs6000/xfpu.h: Delete.
24250 * config/rs6000/xfpu.md: Delete.
24251 * config/rs6000/xilinx.h: Delete.
24252 * config/rs6000/xilinx.opt: Delete.
24253 * doc/invoke.texi (RS/6000 and PowerPC Options): Remove
24254 -msingle-float, -mdouble-float, -msimple-fpu, -mfpu=, and -mxilinx-fpu.
24256 2018-05-04 Tom de Vries <tom@codesourcery.com>
24259 * builtins.c (expand_builtin_goacc_parlevel_id_size): Handle null target
24262 2018-05-04 Richard Biener <rguenther@suse.de>
24264 PR middle-end/85627
24265 * tree-complex.c (update_complex_assignment): We are always in SSA form.
24266 (expand_complex_div_wide): Likewise.
24267 (expand_complex_operations_1): Likewise.
24268 (expand_complex_libcall): Preserve EH info of the original stmt.
24269 (tree_lower_complex): Handle removed blocks.
24270 * tree.c (build_common_builtin_nodes): Do not set ECF_NOTRHOW
24271 on complex multiplication and division libcall builtins.
24273 2018-05-04 Richard Biener <rguenther@suse.de>
24275 PR middle-end/85574
24276 * fold-const.c (negate_expr_p): Restrict negation of operand
24277 zero of a division to when we know that can happen without
24279 (fold_negate_expr_1): Likewise.
24281 2018-05-04 Jakub Jelinek <jakub@redhat.com>
24284 * real.h (real_nextafter): Declare.
24285 * real.c (real_nextafter): New function.
24286 * fold-const-call.c (fold_const_nextafter): New function.
24287 (fold_const_call_sss): Call it for CASE_CFN_NEXTAFTER and
24288 CASE_CFN_NEXTTOWARD.
24289 (fold_const_call_1): For CASE_CFN_NEXTTOWARD call fold_const_call_sss
24290 even when arg1_mode is different from arg0_mode.
24292 2018-05-03 Nathan Sidwell <nathan@acm.org>
24294 * doc/extend.texi (Deprecated Features): Remove
24295 -ffriend-injection.
24296 (Backwards Compatibility): Likewise.
24297 * doc/invoke.texi (C++ Language Options): Likewise.
24298 (C++ Dialect Options): Likewise.
24300 2018-05-03 Jakub Jelinek <jakub@redhat.com>
24303 * config/i386/avx512fintrin.h (_mm512_mullox_epi64,
24304 _mm512_mask_mullox_epi64): New intrinsics.
24306 2018-05-03 Tom de Vries <tom@codesourcery.com>
24309 * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
24310 dump files): Add offload-tree.
24312 2018-05-03 Richard Biener <rguenther@suse.de>
24314 PR tree-optimization/85615
24315 * tree-ssa-threadupdate.c (thread_block_1): Only allow exits
24316 to loops not nested in BBs loop father to avoid creating multi-entry
24319 2018-05-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
24321 PR tree-optimization/70291
24322 * tree-complex.c (expand_complex_libcall): Add type, inplace_p
24323 arguments. Change return type to tree. Emit libcall as a new
24324 statement rather than replacing existing one when inplace_p is true.
24325 (expand_complex_multiplication_components): New function.
24326 (expand_complex_multiplication): Expand floating-point complex
24327 multiplication using the above.
24328 (expand_complex_division): Rename inner_type parameter to type.
24329 Update expand_complex_libcall call-site.
24330 (expand_complex_operations_1): Update expand_complex_multiplication
24331 and expand_complex_division call-sites.
24333 2018-05-02 Jakub Jelinek <jakub@redhat.com>
24336 * config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
24337 *ashl<dwi>3_doubleword_mask_1, *<shift_insn><dwi>3_doubleword_mask,
24338 *<shift_insn><dwi>3_doubleword_mask_1): In condition require that
24339 the highest significant bit of the shift count mask is clear. In
24340 check whether and[sq]i3 is needed verify that all significant bits
24341 of the shift count other than the highest are set.
24343 2018-05-02 Tom de Vries <tom@codesourcery.com>
24346 * builtins.def (DEF_GOACC_BUILTIN_ONLY): Define.
24347 * omp-builtins.def (BUILT_IN_GOACC_PARLEVEL_ID)
24348 (BUILT_IN_GOACC_PARLEVEL_SIZE): New builtin.
24349 * builtins.c (expand_builtin_goacc_parlevel_id_size): New function.
24350 (expand_builtin): Call expand_builtin_goacc_parlevel_id_size.
24351 * doc/extend.texi (Other Builtins): Add __builtin_goacc_parlevel_id and
24352 __builtin_goacc_parlevel_size.
24354 2018-05-02 Richard Biener <rguenther@suse.de>
24356 PR tree-optimization/85597
24357 * tree-vect-stmts.c (vectorizable_operation): For ternary SLP
24358 do not use split vect_get_vec_defs call but call vect_get_slp_defs
24361 2018-05-02 Tom de Vries <tom@codesourcery.com>
24364 * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
24365 dump files): Add ltrans-tree.
24367 2018-05-02 Tom de Vries <tom@codesourcery.com>
24370 * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
24371 dump files): Add wpa-ipa.
24373 2018-05-02 Segher Boessenkool <segher@kernel.crashing.org>
24375 * config.gcc (powerpc*-*-*): Remove paired.h. Unsupport the
24376 powerpc*-*-linux*paired* target.
24377 * config/rs6000/750cl.h: Delete.
24378 * config/rs6000/paired.h: Delete.
24379 * config/rs6000/paired.md: Delete.
24380 * config/rs6000/predicates.md (easy_vector_constant): Remove paired
24382 * config/rs6000/rs6000-builtin.def: Remove paired float support.
24383 * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Update
24384 comment. Remove paired float support.
24385 * config/rs6000/rs6000-modes.def: Remove V2SF and V2SI.
24386 * config/rs6000/rs6000-opts.h (enum rs6000_vector): Delete
24388 * config/rs6000/rs6000-protos.h (paired_expand_vector_init,
24389 paired_emit_vector_cond_expr, paired_expand_vector_move): Delete
24391 * config/rs6000/rs6000.c: Remove paired float support.
24392 (paired_expand_vector_init, paired_expand_vector_move,
24393 paired_emit_vector_compare, paired_emit_vector_cond_expr,
24394 (paired_expand_lv_builtin, paired_expand_stv_builtin,
24395 paired_expand_builtin, paired_expand_predicate_builtin,
24396 paired_init_builtins): Delete.
24397 * config/rs6000/rs6000.h: Remove paired float support.
24398 * config/rs6000/rs6000.md: Remove paired float support.
24399 (move_from_CR_ov_bit): Delete.
24400 * config/rs6000/rs6000.opt (mpaired): Delete.
24401 * config/rs6000/t-rs6000: Remove paired.md from MD_INCLUDES.
24402 * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mpaired.
24404 2018-05-02 Richard Biener <rguenther@suse.de>
24406 PR middle-end/85567
24407 * gimplify.c (gimplify_save_expr): When in SSA form allow
24408 SAVE_EXPRs to compute to SSA vars.
24410 2018-05-02 Jakub Jelinek <jakub@redhat.com>
24413 * config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
24414 *ashl<dwi>3_doubleword_mask_1, *<shift_insn><dwi>3_doubleword_mask,
24415 *<shift_insn><dwi>3_doubleword_mask_1): If and[sq]i3 is needed, don't
24416 clobber operands[2], instead use a new pseudo. Formatting fixes.
24418 2018-05-02 Richard Sandiford <richard.sandiford@linaro.org>
24420 PR tree-optimization/85586
24421 * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Only
24422 exit early for statements in the same group if the accesses are
24425 2018-05-02 Tom de Vries <tom@codesourcery.com>
24428 * lto-wrapper.c (compile_offload_image): Add "could not find mkoffload"
24431 2018-05-01 Marc Glisse <marc.glisse@inria.fr>
24433 PR tree-optimization/85143
24434 * match.pd (A<B&A<C): Extend to BIT_IOR_EXPR.
24436 2018-05-01 Tom de Vries <tom@codesourcery.com>
24439 * config/nvptx/mkoffload.c (main): Suggest using -B in "offload compiler
24440 not found" error message.
24442 2018-05-01 Tom de Vries <tom@codesourcery.com>
24445 * vec.h (VEC_ORDERED_REMOVE_IF, VEC_ORDERED_REMOVE_IF_FROM_TO): Define.
24446 * vec.c (test_ordered_remove_if): New function.
24447 (vec_c_tests): Call test_ordered_remove_if.
24448 * dwarf2cfi.c (connect_traces): Use VEC_ORDERED_REMOVE_IF_FROM_TO.
24449 * lto-streamer-out.c (prune_offload_funcs): Use VEC_ORDERED_REMOVE_IF.
24450 * tree-vect-patterns.c (vect_pattern_recog_1): Use
24451 VEC_ORDERED_REMOVE_IF.
24453 2018-05-01 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
24455 PR tree-optimization/82665
24456 * vr-values.c (vr_values::extract_range_from_binary_expr): Handle
24457 pointer subtraction where arguments come from a memchr call.
24459 2018-05-01 Jakub Jelinek <jakub@redhat.com>
24461 * configure.ac (LD_AS_NEEDED_OPTION, LD_NO_AS_NEEDED_OPTION): Use
24462 --push-state --as-needed and --pop-state instead of --as-needed and
24463 --no-as-needed if ld supports it.
24464 * configure: Regenerated.
24467 * doc/install.texi2html: Replace _002d with - and _002a with * in
24468 generated html files using sed.
24470 2018-04-30 David Malcolm <dmalcolm@redhat.com>
24473 * gcc-rich-location.c (blank_line_before_p): New function.
24474 (use_new_line): New function.
24475 (gcc_rich_location::add_fixit_insert_formatted): New function.
24476 * gcc-rich-location.h
24477 (gcc_rich_location::add_fixit_insert_formatted): New function.
24479 2018-04-30 David Malcolm <dmalcolm@redhat.com>
24481 * selftest.c (assert_streq): Rename "expected" and "actual" to
24482 "val1" and "val2". Extend NULL-handling to cover both inputs
24483 symmetrically, while still requiring both to be non-NULL for a pass.
24484 * selftest.h (assert_streq): Rename "expected" and "actual" to
24486 (ASSERT_EQ): Likewise.
24487 (ASSERT_EQ_AT): Likewise.
24488 (ASSERT_KNOWN_EQ): Likewise.
24489 (ASSERT_KNOWN_EQ_AT): Likewise.
24490 (ASSERT_NE): Likewise.
24491 (ASSERT_MAYBE_NE): Likewise.
24492 (ASSERT_MAYBE_NE_AT): Likewise.
24493 (ASSERT_STREQ): Likewise. Clarify that both must be non-NULL for
24494 the assertion to pass.
24495 (ASSERT_STREQ_AT): Likewise.
24497 2018-04-30 Jonathan Wakely <jwakely@redhat.com>
24499 * doc/invoke.texi (-fpie, -fPIE): Fix grammar and clarify
24500 interaction with -pie.
24502 2018-04-30 David Malcolm <dmalcolm@redhat.com>
24504 * selftest.h: Fix alphabetization of per-source-file selftest
24507 2018-04-30 Jason Merrill <jason@redhat.com>
24509 PR c++/61982 - dead stores to destroyed objects.
24510 * gimplify.c (gimplify_modify_expr): Simplify complex lvalue on LHS
24513 2018-04-30 Jason Merrill <jason@redhat.com>
24515 * tree.c (build_clobber): New.
24516 * tree.h: Declare it.
24517 * gimplify.c (gimplify_bind_expr, gimplify_target_expr): Use it.
24519 2018-04-30 David Malcolm <dmalcolm@redhat.com>
24521 * diagnostic-show-locus.c (layout::layout): Update for
24522 location_get_source_line returning a char_span.
24523 (struct char_span): Move to input.h.
24524 (struct correction): Update for fields in char_span becoming
24526 (struct source_line): Update for location_get_source_line
24527 returning a char_span.
24528 (layout::print_line): Likewise.
24529 * edit-context.c (edited_file::print_content): Likewise.
24530 (edited_file::print_diff_hunk): Likewise.
24531 (edited_file::print_run_of_changed_lines): Likewise.
24532 (edited_file::get_num_lines): Likewise.
24533 (edited_line::edited_line): Likewise.
24534 * final.c (asm_show_source): Likewise.
24535 * input.c (location_get_source_line): Convert return type
24536 from const char * to char_span, losing the final "line_len"
24538 (dump_location_info): Update for the above.
24539 (get_substring_ranges_for_loc): Likewise. Use a char_span
24540 when handling the literal within the line.
24541 (test_reading_source_line): Update for location_get_source_line
24542 returning a char_span.
24543 * input.h (class char_span): Move here from
24544 diagnostic-show-locus.c, converting from a struct to a class.
24545 Make data members private.
24546 (char_span::operator bool): New.
24547 (char_span::length): New.
24548 (char_span::get_buffer): New.
24549 (char_span::operator[]): New.
24550 (char_span::subspan): Make const.
24551 (char_span::xstrdup): New.
24552 (location_get_source_line): Convert return type from const char *
24553 to char_span, losing the final "line_size" param.
24555 2018-04-30 Jan Hubicka <jh@suse.cz>
24557 * lto-wrapper.c (ltrans_priorities): New static var.
24558 (cmp_priority): New.
24559 (run_gcc): Read priorities and if doing parallel build order
24560 the Makefile by them.
24562 2018-04-30 David Malcolm <dmalcolm@redhat.com>
24564 * input.h (builtins_location_check): Convert to a STATIC_ASSERT.
24566 2018-04-30 Richard Biener <rguenther@suse.de>
24568 * tree-cfg.c (verify_address): Remove base argument, add
24569 flag whether to check TREE_ADDRESSABLE and do that.
24570 (verify_expr): Remove.
24571 (verify_types_in_gimple_reference): Add pieces from verify_expr.
24572 (verify_gimple_assign_single): Likewise.
24573 (verify_gimple_switch): Likewise.
24574 (verify_expr_location_1): Dereference tp once. Add (disabled)
24575 piece from verify_expr.
24576 (verify_gimple_in_cfg): Do not call verify_expr on all ops.
24578 2018-04-30 Claudiu Zissulescu <claziss@synopsys.com>
24580 * config/arc/linux.h (CLEAR_INSN_CACHE): Define.
24582 2018-04-30 Claudiu Zissulescu <claziss@synopsys.com>
24584 * config/arc/arc-protos.h (prepare_extend_operands): Remove.
24585 (small_data_pattern): Likewise.
24586 (arc_rewrite_small_data): Likewise.
24587 * config/arc/arc.c (LEGITIMATE_SMALL_DATA_OFFSET_P): Remove.
24588 (LEGITIMATE_SMALL_DATA_ADDRESS_P): Likewise.
24589 (get_symbol_alignment): New function.
24590 (legitimate_small_data_address_p): Likewise.
24591 (legitimate_scaled_address): Update, call
24592 legitimate_small_data_address_p.
24593 (output_sdata): New static variable.
24594 (arc_print_operand): Update how we handle small data operands.
24595 (arc_print_operand_address): Likewise.
24596 (arc_legitimate_address_p): Update, use
24597 legitimate_small_data_address_p.
24598 (arc_rewrite_small_data_p): Remove.
24599 (arc_rewrite_small_data_1): Likewise.
24600 (arc_rewrite_small_data): Likewise.
24601 (small_data_pattern): Likewise.
24602 (compact_sda_memory_operand): Update to use
24603 legitimate_small_data_address_p and get_symbol_alignment.
24604 (prepare_move_operands): Don't rewite sdata pattern.
24605 (prepare_extend_operands): Remove.
24606 * config/arc/arc.md (zero_extendqihi2): Don't rewrite sdata
24608 (zero_extendqisi2): Likewise.
24609 (zero_extendhisi2): Likewise.
24610 (extendqihi2): Likewise.
24611 (extendqisi2): Likewise.
24612 (extendhisi2): Likewise.
24613 (addsi3): Likewise.
24614 (subsi3): Likewise.
24615 (andsi3): Likewise.
24616 * config/arc/constraints.md (Usd): Change it to memory constraint.
24618 2018-04-30 Claudiu Zissulescu <claziss@synopsys.com>
24620 * config/arc/arc.c (arc_split_move): Allow signed 6-bit constants
24621 as source of std instructions.
24622 * config/arc/arc.md (movsi_insn): Update pattern predicate to
24623 allow 6-bit constants as source for store instructions.
24624 (movdi_insn): Update instruction pattern to allow 6-bit constants
24625 as source for store instructions.
24627 2018-04-30 Jonathan Wakely <jwakely@redhat.com>
24629 * doc/invoke.texi (-fdebug-types-section): Fix grammar.
24631 2018-04-30 Nathan Sidwell <nathan@acm.org>
24632 Sandra Loosemore <sandra@codesourcery.com>
24634 * dumpfile.c (dump_open): Allow '-' for stdout.
24635 * doc/invoke.texi (Developer Options): Document dump filename
24636 determination early. Document stdin/stdout selection.
24638 2018-04-30 Andrew Sadek <andrew.sadek.se@gmail.com>
24640 Microblaze Target: PIC data text relative
24642 * config/microblaze/microblaze.opt: add new option -mpic-data-text-rel.
24643 * config/microblaze/microblaze-protos.h (microblaze_constant_address_p):
24645 * config/microblaze/microblaze.h (microblaze_constant_address_p):
24646 CONSTANT_ADDRESS_P definition to microblaze_constant_address_p.
24647 * config/microblaze/microblaze.c (TARGET_PIC_DATA_TEXT_REL):
24648 New addressing mode for data-text relative position indepenedent code.
24649 (microblaze_classify_unspec): add 'UNSPEC_TEXT' case ->
24650 'ADDRESS_SYMBOLIC_TXT_REL'.
24651 (microblaze_classify_address): Add handling for UNSPEC + CONST_INT.
24652 (microblaze_legitimate_pic_operand): Exclude function calls from
24653 pic operands in case of TARGET_PIC_DATA_TEXT_REL option.
24654 (microblaze_legitimize_address): Generate 'UNSPEC_TEXT' for all possible
24656 (microblaze_address_insns): Add 'ADDRESS_SYMBOLIC_TXT_REL' case.
24657 (print_operand): Add 'ADDRESS_SYMBOLIC_TXT_REL' case.
24658 (print_operand_address): Add 'ADDRESS_SYMBOLIC_TXT_REL' case + handling
24659 for 'address + offset'.
24660 (microblaze_expand_prologue): Add new function prologue call for
24662 (microblaze_asm_generate_pic_addr_dif_vec): Override new target hook
24663 'TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC' to disable address diff vector
24664 table in case of TARGET_PIC_DATA_TEXT_REL.
24665 (expand_pic_symbol_ref): Add handling for 'UNSPEC_TEXT'.
24666 * config/microblaze/microblaze.md (TARGET_PIC_DATA_TEXT_REL):
24667 Add new macros 'UNSPEC_TEXT',
24668 'UNSPEC_SET_TEXT' + add rule for setting r20 in function prologue
24669 + exclude function calls from 'UNSPEC_PLT' in case of data text
24671 * doc/tm.texi.in (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add
24672 new target hook for generating address diff vector tables in case of
24674 * doc/tm.texi : Regenerate.
24675 * stmt.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Append new condition
24676 'targetm.asm_out.generate_pic_addr_diff_vec' to flag_pic in case
24677 of addr diff vector generation.
24678 * target.def (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add
24679 target hook definition.
24680 * targhooks.h, targhooks.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC):
24681 Add default function for generate_pic_addr_diff_vec -> flag_pic.
24682 * doc/invoke.texi (Add new pic option): Add new microblaze pic
24683 option for data text relative.
24685 2018-04-30 Richard Biener <rguenther@suse.de>
24687 * tree-chrec.h (evolution_function_is_constant_p): Remove
24689 * tree-cfg.c (tree_node_can_be_shared): Re-order checks.
24691 2018-04-30 Richard Biener <rguenther@suse.de>
24694 * dwarf2out.c (gen_producer_string): Ignore -fchecking[=].
24696 2018-04-30 Richard Biener <rguenther@suse.de>
24698 PR tree-optimization/28364
24699 PR tree-optimization/85275
24700 * tree-ssa-loop-ch.c (ch_base::copy_headers): Stop after
24701 copying first exit test.
24703 2018-04-28 Mark Wielaard <mark@klomp.org>
24705 * dwarf2out.c (dwarf2out_finish): Add .debug_addr table header for
24706 dwarf_version >= 5.
24707 (dwarf_AT): Handle DW_AT_addr_base.
24708 (add_top_level_skeleton_die_attrs): Use dwarf_AT for DW_AT_addr_base.
24710 2018-04-28 Uros Bizjak <ubizjak@gmail.com>
24713 * config/i386/i386.md (*ashl<dwi>3_doubleword_mask): New pattern.
24714 (*ashl<dwi>3_doubleword_mask_1): Ditto.
24715 (*<shift_insn><dwi>3_doubleword_mask): Ditto.
24716 (*<shift_insn><dwi>3_doubleword_mask_1): Ditto.
24718 2018-04-28 Richard Biener <rguenther@suse.de>
24720 * tree-cfg.c (verify_gimple_phi): Take a gphi * argument.
24721 (verify_gimple_in_cfg): Rename visited_stmts to visited_throwing_stmts
24722 to reflect use. Only add interesting stmts.
24724 2018-04-27 Martin Jambor <mjambor@suse.cz>
24727 * ipa-cp.c (find_aggregate_values_for_callers_subset): Make sure
24728 the jump function allows for passing through aggregate values.
24730 2018-04-27 David Malcolm <dmalcolm@redhat.com>
24732 * input.h (in_system_header_at): Convert from macro to inline
24734 (from_macro_expansion_at): Likewise.
24735 (from_macro_definition_at): Likewise.
24737 2018-04-27 Jeff Law <law@redhat.com>
24739 * config.gcc: Mark tile* targets as deprecated/obsolete.
24741 2018-04-27 Richard Biener <rguenther@suse.de>
24743 * config/aarch64/aarch64.c: Simplify ap.__stack advance and
24746 2018-04-27 Richard Biener <rguenther@suse.de>
24748 * tree-cfg.c (verify_expr): Make dead code hit gcc_unreachable.
24750 2018-04-27 Uros Bizjak <ubizjak@gmail.com>
24752 * config/i386/i386.md (*movti_internal): Substitute Ye constraint
24753 with Yd constraint. Set "preferred_for_speed" attribute from
24754 TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for alternatives
24755 with Yd constraint.
24756 (*movdi_internal): Ditto.
24757 (movti_interunit splitters): Remove
24758 TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC from insn condition.
24759 (movdi_interunit splitters): Ditto.
24760 * config/i386/constraints.md (Ye): Remove.
24761 (Yd): Do not depend on TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC.
24763 2018-04-27 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
24766 * config/aarch64/constraints.md (Usg): Limit to 31.
24767 (Usj): Limit to 63.
24769 2018-04-27 Jakub Jelinek <jakub@redhat.com>
24771 PR tree-optimization/85529
24772 * tree-ssa-reassoc.c (optimize_range_tests_var_bound): Add FIRST_BB
24773 argument. Don't call get_nonzero_bits if opcode is ERROR_MARK_NODE,
24774 rhs2 def stmt's bb is dominated by first_bb and it isn't an obvious
24775 zero extension or masking of the MSB bit.
24776 (optimize_range_tests): Add FIRST_BB argument, pass it through
24777 to optimize_range_tests_var_bound.
24778 (maybe_optimize_range_tests, reassociate_bb): Adjust
24779 optimize_range_tests callers.
24781 2018-04-26 Richard Biener <rguenther@suse.de>
24782 Jakub Jelinek <jakub@redhat.com>
24784 * cgraph.h (symbol_table): Just declare debug method here.
24785 * symtab.c (symbol_table::debug): Define.
24787 2018-04-26 Eric Botcazou <ebotcazou@adacore.com>
24789 * loop-invariant.c (may_assign_reg_p): Return false for frame pointer.
24791 2018-04-26 Uros Bizjak <ubizjak@gmail.com>
24793 * config/i386/i386.md ("isa" attribute): Add x64_sse2.
24794 ("enabled" attribute): Handle x64_sse2 "isa" attribute.
24795 (*movdi_internal): Substitute Yi and Yj constraint with x
24796 and Ym and Yn constraint with y constraint. Update "isa"
24797 attribute and set "preferred_for_speed" attribute from
24798 TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for updated alternatives.
24799 (*movsi_internal): Ditto.
24800 (*movdf_internal): Ditto.
24801 (*movsf_internal): Ditto.
24802 (*zero_extendsidi2): Ditto.
24803 * config/i386/sse.md (vec_set<mode>_0): Ditto.
24804 (sse2_loadld): Ditto.
24805 (*vec_extract<ssevecmodelower>_0): Ditto.
24806 (*vec_extractv4si_0_zext_sse4): Ditto.
24807 (vec_concatv2di): Ditto.
24808 (*vec_dup<mode>): Ditto.
24809 * config/i386/mmx.md (*mov<mode>_internal): Ditto.
24810 * config/i386/constraints.md (Yi): Remove.
24815 2018-04-26 Nathan Sidwell <nathan@acm.org>
24817 * dumpfile.c (dump_open): New.
24818 (dump_open_alternate_stream, dump_start, dump_begin): Call it.
24819 (dump_finish): Detect stdio/stderr by value not name.
24821 2018-04-26 Jonathan Wakely <jwakely@redhat.com>
24823 * doc/invoke.texi (-Wreturn-type): Document default status for C++.
24825 2018-04-26 Tom de Vries <tom@codesourcery.com>
24828 * config/nvptx/nvptx.c (verify_neutering_jumps)
24829 (verify_neutering_labels): New function
24830 (nvptx_single): Use verify_neutering_jumps and verify_neutering_labels.
24832 2018-04-26 Tom de Vries <tom@codesourcery.com>
24835 * config/nvptx/nvptx.c (needs_neutering_p): New function.
24836 (nvptx_single): Use needs_neutering_p to skip over insns that do not
24839 2018-04-26 Richard Biener <rguenther@suse.de>
24840 Tom de Vries <tom@codesourcery.com>
24843 * lto-streamer-out.c (output_function): Fixup loops if required to match
24844 discovery done in the reader.
24846 2018-04-26 Richard Biener <rguenther@suse.de>
24848 PR tree-optimization/85116
24849 * tree-ssa-loop-ch.c (do_while_loop_p): A do-while loop should
24850 have a loop exit from the single latch predecessor. Remove
24851 case of header with just condition.
24852 (ch_base::copy_headers): Exclude infinite loops from any
24854 (pass_ch::execute): Record exits.
24856 2018-04-26 Richard Biener <rguenther@suse.de>
24858 * tree-vect-data-refs.c (vect_get_data_access_cost): Get
24859 prologue cost vector and pass it to vect_get_load_cost.
24860 (vect_get_peeling_costs_all_drs): Likewise.
24861 (vect_peeling_hash_get_lowest_cost): Likewise.
24862 (vect_enhance_data_refs_alignment): Likewise.
24864 2018-04-26 Richard Biener <rguenther@suse.de>
24866 PR middle-end/85450
24867 * tree-cfg.c (verify_gimple_assign_unary): Restore proper
24868 checking of integer<->pointer conversions.
24869 * omp-expand.c (expand_omp_for_static_nochunk): Avoid
24870 sign-/zero-extending pointer types.
24871 (expand_omp_for_static_chunk): Likewise.
24873 2018-03-22 Hans-Peter Nilsson <hp@axis.com>
24874 Jean Lee <xiaoyur347@gmail.com>
24876 * config/mips/mips.c (mips_asan_shadow_offset): New function.
24877 (TARGET_ASAN_SHADOW_OFFSET): Define.
24878 * config/mips/mips.h (FRAME_GROWS_DOWNWARD): Augment to also be
24879 true for -fsanitize=address.
24881 2018-04-25 Mark Wielaard <mark@klomp.org>
24883 * dwarf2out.c (file_info_cmp): Sort longer dir prefixes before
24886 2018-04-25 Jakub Jelinek <jakub@redhat.com>
24888 * config/i386/i386.md (*x86_mov<mode>cc_0_m1): Use type "alu1" rather
24889 than "alu", remove explicit "memory" and "imm_disp" attributes.
24890 (*x86_mov<mode>cc_0_m1_se, *x86_mov<mode>cc_0_m1_neg): Likewise.
24892 PR middle-end/85414
24893 * simplify-rtx.c (simplify_unary_operation_1) <case SIGN_EXTEND,
24894 case ZERO_EXTEND>: Pass SUBREG_REG (op) rather than op to
24895 gen_lowpart_no_emit.
24897 2018-04-25 Sebastian Peryt <sebastian.peryt@intel.com>
24900 * config/i386/i386.c (ix86_expand_builtin): Change memory
24901 operand to XI, extend p0 to Pmode.
24902 * config/i386/i386.md: Change unspec volatile and operand
24903 1 mode to XI, change operand 0 mode to P.
24905 2018-04-25 Chung-Ju Wu <jasonwucj@gmail.com>
24907 * config/nds32/nds32-predicates.c (nds32_can_use_bclr_p): Mask with
24908 GET_MODE_MASK before any checking.
24909 (nds32_can_use_bset_p): Likewise.
24910 (nds32_can_use_btgl_p): Likewise.
24912 2018-04-25 Chung-Ju Wu <jasonwucj@gmail.com>
24914 * config/nds32/nds32-doubleword.md: New define_split pattern for
24915 illegal register number.
24917 2018-04-25 Chung-Ju Wu <jasonwucj@gmail.com>
24919 * config/nds32/nds32.c (nds32_print_operand): Set op_value ealier.
24921 2018-04-25 Chung-Ju Wu <jasonwucj@gmail.com>
24923 * config/nds32/nds32.h (ASM_APP_ON): Add missing newline character.
24925 2018-04-25 Richard Biener <rguenther@suse.de>
24927 * lto-streamer.h (LTO_major_version): Bump to 8.
24929 2018-04-25 Jakub Jelinek <jakub@redhat.com>
24931 * BASE-VER: Set to 9.0.0.
24933 2018-04-24 Segher Boessenkool <segher@kernel.crashing.org>
24935 * config/rs6000/rs6000.c (init_float128_ieee): Fix spelling mistakes
24936 in __abskf2 and __powikf2.
24938 2018-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
24941 * config/aarch64/constraints.md (Usg, Usj): New constraints.
24942 * config/aarch64/iterators.md (cmode_simd): New mode attribute.
24943 * config/aarch64/aarch64.md (*aarch64_ashr_sisd_or_int_<mode>3):
24944 Use the above on operand 2. Reindent.
24945 (*aarch64_lshr_sisd_or_int_<mode>3): Likewise.
24947 2018-04-24 H.J. Lu <hongjiu.lu@intel.com>
24950 * common/config/i386/i386-common.c (ix86_handle_option): Don't
24952 * config/i386/i386.opt (mcet): Removed.
24953 * doc/install.texi: Remove -mcet documentation.
24954 * doc/invoke.texi: Likewise.
24956 2018-04-24 H.J. Lu <hongjiu.lu@intel.com>
24959 * doc/install.texi: Remove -mcet from bootstrap-cet.
24961 2018-04-24 Jakub Jelinek <jakub@redhat.com>
24964 * config/i386/i386.c (ix86_init_mmx_sse_builtins): Don't define
24965 __builtin_ia32_readeflags_u32 and __builtin_ia32_writeeflags_u32
24969 * config/rs6000/rs6000-p8swap.c (const_load_sequence_p): Punt if
24970 const_vector is not CONST_VECTOR or SYMBOL_REF for a constant pool
24971 containing a CONST_VECTOR.
24973 2018-04-24 Cesar Philippidis <cesar@codesourcery.com>
24975 * doc/install.texi: Update newlib dependency for nvptx.
24977 2018-04-24 Jakub Jelinek <jakub@redhat.com>
24980 * config/i386/i386.c (ix86_expand_vector_init_one_var): Use UINTVAL
24981 instead of INTVAL when shifting x left.
24983 2018-04-24 Andreas Krebbel <krebbel@linux.ibm.com>
24985 PR tree-optimization/85478
24986 * tree-vect-loop.c (vect_analyze_loop_2): Do not call
24987 vect_grouped_store_supported for single element vectors.
24989 2018-04-24 Richard Biener <rguenther@suse.de>
24992 * config/i386/i386.c (ix86_add_stmt_cost): Restrict strided
24993 load cost increase to the case of non-constant step.
24995 2018-04-24 Jakub Jelinek <jakub@redhat.com>
24998 * reg-stack.c (move_for_stack_reg): Don't fail assertion about dead
24999 destination if any_malformed_asm.
25001 2018-04-23 Eric Botcazou <ebotcazou@adacore.com>
25003 PR middle-end/85496
25004 * expr.c (store_field): In the bitfield case, if the value comes from
25005 a function call and is returned in registers by means of a PARALLEL,
25006 do not change the mode of the temporary unless BLKmode and VOIDmode.
25008 2018-04-23 Andrey Belevantsev <abel@ispras.ru>
25010 PR rtl-optimization/85423
25011 * sel-sched-ir.c (has_dependence_note_mem_dep): Only discard
25012 dependencies to debug insns when the previous insn is non-debug.
25014 2018-04-23 Claudiu Zissulescu <claziss@synopsys.com>
25016 * config/arc/arc.md ("vunspec"): Delete it, unify all the unspec
25017 enums into a single definition.
25018 (fls): Fix predicates and printing.
25021 2018-04-23 Claudiu Zissulescu <claziss@synopsys.com>
25023 * config/arc/arc-protos.h (check_if_valid_sleep_operand): Remove.
25024 * config/arc/arc.c (arc_expand_builtin): Sleep accepts registers
25025 and short u6 immediate.
25026 (check_if_valid_sleep_operand): Remove.
25027 * config/arc/arc.md (Sleep): Accepts registers and u6 immediates.
25029 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
25031 * config/nds32/nds32.c (nds32_compute_stack_frame): Consider
25032 flag_always_save_lp condition.
25033 * config/nds32/nds32.opt (malways-save-lp): New option.
25035 2018-04-22 Shiva Chen <shiva0217@gmail.com>
25037 * config/nds32/nds32-protos.h (nds32_use_load_post_increment): Declare.
25038 * config/nds32/nds32.c (nds32_use_load_post_increment): New.
25039 * config/nds32/nds32.h
25040 (USE_LOAD_POST_INCREMENT, USE_LOAD_POST_DECREMENT): Define.
25041 (USE_STORE_POST_INCREMENT, USE_STORE_POST_DECREMENT): Define.
25043 2018-04-22 Shiva Chen <shiva0217@gmail.com>
25045 * config/nds32/nds32-protos.h (nds32_ls_333_p): Remove.
25046 * config/nds32/nds32.c (nds32_ls_333_p): Remove.
25048 2018-04-22 Shiva Chen <shiva0217@gmail.com>
25049 Chung-Ju Wu <jasonwucj@gmail.com>
25051 * config/nds32/nds32-protos.h (nds32_case_vector_shorten_mode):
25053 * config/nds32/nds32.c (nds32_case_vector_shorten_mode): New function.
25054 * config/nds32/nds32.h (CASE_VECTOR_SHORTEN_MODE): Modify.
25056 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
25058 * config/nds32/nds32.c (nds32_compute_stack_frame): Fix wrong value.
25060 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
25062 * config/nds32/nds32-protos.h (nds32_data_alignment,
25063 nds32_local_alignment): Declare.
25064 * config/nds32/nds32.c (nds32_data_alignment, nds32_constant_alignment,
25065 nds32_local_alignment): New functions.
25066 (TARGET_CONSTANT_ALIGNMENT): Define.
25067 * config/nds32/nds32.h (DATA_ALIGNMENT, LOCAL_ALIGNMENT): Define.
25069 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
25071 * config/nds32/nds32.c
25072 (TARGET_HARD_REGNO_MODE_OK): Move to the bottom of file.
25073 (TARGET_MODES_TIEABLE_P): Likewise.
25075 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
25077 * config/nds32/nds32.c (nds32_asm_file_start): Display optimization
25078 level Ofast and Og.
25080 2018-04-22 Monk Chiang <sh.chiang04@gmail.com>
25081 Chung-Ju Wu <jasonwucj@gmail.com>
25083 * config/nds32/constants.md (unspec_volatile_element): Add enum values
25084 for unaligned access.
25085 * config/nds32/nds32-intrinsic.c: Implementation of expanding
25087 * config/nds32/nds32-intrinsic.md: Likewise.
25088 * config/nds32/nds32_intrinsic.h: Likewise.
25089 * config/nds32/nds32.h (nds32_builtins): Likewise.
25090 * config/nds32/nds32.opt (munaligned-access): New option.
25091 * config/nds32/nds32.c (nds32_asm_file_start): Display
25092 flag_unaligned_access status.
25094 2018-04-20 Kito Cheng <kito.cheng@gmail.com>
25096 * config/riscv/elf.h (LINK_SPEC): Pass --no-relax if
25097 -mno-relax is present.
25098 * config/riscv/linux.h (LINK_SPEC): Ditto.
25100 2018-04-20 Martin Sebor <msebor@redhat.com>
25103 * gimple-fold.c (gimple_fold_builtin_strcpy): Suppress -Wrestrict
25105 (gimple_fold_builtin_stxcpy_chk): Same.
25106 * gimple-ssa-warn-restrict.c (check_bounds_or_overlap): Same.
25108 2018-04-20 Michael Meissner <meissner@linux.ibm.com>
25111 * config/rs6000/rs6000.c (init_float128_ieee): Add support to call
25112 __powikf2 when long double is IEEE 128-bit.
25114 2018-04-20 Kito Cheng <kito.cheng@gmail.com>
25116 * config/riscv/riscv.c (riscv_first_stack_step): Round up min
25117 step to make sure stack always aligned.
25119 2018-04-20 Carl Love <cel@us.ibm.com>
25122 * config/rs6000/rs6000-c.c (rs6000_gimple_fold_builtin): Add
25123 size check for arg0.
25125 2018-04-20 Nathan Sidwell <nathan@codesourcery.com>
25126 Tom de Vries <tom@codesourcery.com>
25129 * config/nvptx/nvptx.c (nvptx_emit_forking, nvptx_emit_joining):
25130 Emit insns for calls too.
25131 (nvptx_find_par): Always look for worker-level predecessor insn.
25132 (nvptx_propagate): Add is_call parm, return bool. Copy frame for
25134 (nvptx_vpropagate, nvptx_wpropagate): Adjust.
25135 (nvptx_process_pars): Propagate frames for calls.
25137 2018-04-20 H.J. Lu <hongjiu.lu@intel.com>
25140 * common/config/i386/i386-common.c (OPTION_MASK_ISA_IBT_SET):
25142 (OPTION_MASK_ISA_IBT_UNSET): Likewise.
25143 (ix86_handle_option): Don't handle OPT_mibt.
25144 * config/i386/cet.h: Check __CET__ instead of __IBT__ and
25146 * config/i386/driver-i386.c (host_detect_local_cpu): Remove
25148 * config/i386/i386-c.c (ix86_target_macros_internal): Don't
25149 check OPTION_MASK_ISA_IBT nor flag_cf_protection.
25150 (ix86_target_macros): Define __CET__ with flag_cf_protection
25151 for -fcf-protection.
25152 * config/i386/i386.c (isa2_opts): Remove -mibt.
25153 * config/i386/i386.h (TARGET_IBT): Removed.
25154 (TARGET_IBT_P): Likewise.
25155 (ix86_valid_target_attribute_inner_p): Don't check OPT_mibt.
25156 * config/i386/i386.md (nop_endbr): Don't check TARGET_IBT.
25157 * config/i386/i386.opt (mcet): Update help message.
25158 (mshstk): Likewise.
25160 * doc/invoke.texi: Remove -mibt. Document __CET__. Document
25161 -mcet as an alias for -mshstk.
25163 2018-04-20 Richard Biener <rguenther@suse.de>
25165 PR middle-end/85475
25166 * match.pd ((X * CST) * Y -> (X * Y) * CST): Avoid exponential
25167 complexity by forcing a single use of the multiply operand.
25169 2018-04-20 Martin Jambor <mjambor@suse.cz>
25172 * ipa-cp.c (cgraph_edge_brings_value_p): Move check for self-feeding
25173 recursion dependency to only apply to non-clones.
25175 2018-04-20 Martin Jambor <mjambor@suse.cz>
25178 * ipa-cp.c (create_specialized_node): Check that clones of
25179 self-recursive edges exist during IPA-CP.
25181 2018-04-19 Toon Moene <toon@moene.org>
25183 * doc/invoke.texi: Add -floop-unroll-and-jam to options enabled
25186 2018-04-19 Jakub Jelinek <jakub@redhat.com>
25188 PR tree-optimization/85467
25189 * fold-const.c (fold_ternary_loc) <case BIT_FIELD_REF>: Use
25190 VECTOR_TYPE_P macro. If type is vector type, VIEW_CONVERT_EXPR the
25191 VECTOR_CST element to type.
25193 2018-04-19 H.J. Lu <hongjiu.lu@intel.com>
25196 * config/i386/i386.h (STACK_SAVEAREA_MODE): New.
25197 * config/i386/i386.md (builtin_setjmp_setup): Removed.
25198 (builtin_longjmp): Likewise.
25199 (save_stack_nonlocal): New pattern.
25200 (restore_stack_nonlocal): Likewise.
25202 2018-04-19 H.J. Lu <hongjiu.lu@intel.com>
25205 * config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
25206 Replace ASM_OUTPUT_LABEL with fprintf.
25208 2018-04-19 H.J. Lu <hongjiu.lu@intel.com>
25211 * config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
25212 Check flag_cf_protection instead of TARGET_IBT and TARGET_SHSTK.
25213 * config/i386/i386-c.c (ix86_target_macros_internal): Also
25214 define __IBT__ and __SHSTK__ for -fcf-protection.
25215 * config/i386/i386.c (pass_insert_endbranch::gate): Don't check
25217 (ix86_trampoline_init): Likewise.
25218 (x86_output_mi_thunk): Likewise.
25219 (ix86_notrack_prefixed_insn_p): Likewise.
25220 (ix86_option_override_internal): Don't disallow -fcf-protection.
25221 * config/i386/i386.md (rdssp<mode>): Also enable for
25223 (incssp<mode>): Likewise.
25224 (nop_endbr): Likewise.
25225 * config/i386/i386.opt (mcet): Change help message to built-in
25228 (mshstk): Likewise.
25229 * doc/invoke.texi: Remove -mcet, -mibt and -mshstk condition
25230 on -fcf-protection. Change -mcet, -mibt and -mshstk to only
25231 enable CET built-in functions.
25233 2018-04-19 Sebastian Peryt <sebastian.peryt@intel.com>
25235 * common/config/i386/i386-common.c
25236 (OPTION_MASK_ISA_MOVDIRI_SET, OPTION_MASK_ISA_MOVDIR64B_SET,
25237 OPTION_MASK_ISA_MOVDIRI_UNSET,
25238 OPTION_MASK_ISA_MOVDIR64B_UNSET): New defines.
25239 (ix86_handle_option): Handle -mmovdiri and -mmovdir64b.
25240 * config.gcc (movdirintrin.h): New header.
25241 * config/i386/cpuid.h (bit_MOVDIRI,
25242 bit_MOVDIR64B): New bits.
25243 * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mmovdiri
25245 * config/i386/i386-builtin-types.def ((VOID, PUNSIGNED, UNSIGNED),
25246 (VOID, PVOID, PCVOID)): New function types.
25247 * config/i386/i386-builtin.def (__builtin_ia32_directstoreu_u32,
25248 __builtin_ia32_directstoreu_u64,
25249 __builtin_ia32_movdir64b): New builtins.
25250 * config/i386/i386-c.c (__MOVDIRI__, __MOVDIR64B__): New.
25251 * config/i386/i386.c (ix86_target_string): Added -mmovdir64b
25253 (ix86_valid_target_attribute_inner_p): Ditto.
25254 (ix86_expand_special_args_builtin): Added VOID_FTYPE_PUNSIGNED_UNSIGNED
25255 and VOID_FTYPE_PUNSIGNED_UNSIGNED.
25256 (ix86_expand_builtin): Expand IX86_BUILTIN_MOVDIR64B.
25257 * config/i386/i386.h (TARGET_MOVDIRI, TARGET_MOVDIRI_P,
25258 TARGET_MOVDIR64B, TARGET_MOVDIR64B_P): New.
25259 * config/i386/i386.md (UNSPECV_MOVDIRI, UNSPECV_MOVDIR64B): New.
25260 (movdiri<mode>, movdir64b_<mode>): New.
25261 * config/i386/i386.opt: Add -mmovdiri and -mmovdir64b.
25262 * config/i386/immintrin.h: Include movdirintrin.h.
25263 * config/i386/movdirintrin.h: New file.
25264 * doc/invoke.texi: Added -mmovdiri and -mmovdir64b.
25266 2018-04-19 Richard Biener <rguenther@suse.de>
25268 PR middle-end/85455
25269 * cfg.c (clear_bb_flags): When loop state says we have
25270 marked irreducible regions also preserve BB_IRREDUCIBLE_LOOP.
25272 2018-04-19 Richard Biener <rguenther@suse.de>
25274 PR tree-optimization/84737
25275 * tree-vect-data-refs.c (vect_copy_ref_info): New function
25276 copying restrict info.
25277 (vect_setup_realignment): Use it.
25278 * tree-vectorizer.h (vect_copy_ref_info): Declare.
25279 * tree-vect-stmts.c (vectorizable_store): Copy ref info from
25280 the first DR to all generated stores.
25281 (vectorizable_load): Likewise for loads.
25283 2018-04-19 Jakub Jelinek <jakub@redhat.com>
25285 PR tree-optimization/85446
25286 * match.pd ((intptr_t) x eq/ne CST to x eq/ne (typeof x) cst): Require
25287 the integral and pointer types to have the same precision.
25289 * doc/install.texi: Document --disable-cet being the default and
25292 2018-04-18 Martin Liska <mliska@suse.cz>
25294 * ipa-devirt.c (odr_subtypes_equivalent_p): Fix GNU coding
25297 2018-04-18 Martin Liska <mliska@suse.cz>
25300 2018-03-02 Eric Botcazou <ebotcazou@adacore.com>
25303 * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
25304 arguments if they are comparable.
25306 2018-04-18 Martin Liska <mliska@suse.cz>
25309 2018-03-13 Eric Botcazou <ebotcazou@adacore.com>
25312 * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
25315 2018-04-18 H.J. Lu <hongjiu.lu@intel.com>
25318 * config/i386/i386.c (ix86_expand_split_stack_prologue): Insert
25319 ENDBR after calling __morestack.
25321 2018-04-18 David Malcolm <dmalcolm@redhat.com>
25324 * configure.ac (gcc-driver-name.h): Honor --with-gcc-major-version
25325 by using gcc_base_ver to generate a gcc_driver_version, and use
25326 it when generating GCC_DRIVER_NAME.
25327 * configure: Regenerate.
25329 2018-04-18 Jakub Jelinek <jakub@redhat.com>
25332 * config.gcc: Obsolete powerpc*-*-*spe*.
25334 2018-04-17 Jakub Jelinek <jakub@redhat.com>
25337 * dbxout.c (dbxout_int): Perform negation in unsigned int type.
25338 (stabstr_D): Change type of unum from unsigned int to
25339 unsigned HOST_WIDE_INT. Perform negation in unsigned HOST_WIDE_INT
25342 2018-04-17 Jim Wilson <jimw@sifive.com>
25345 * config/riscv/riscv.c (riscv_compute_frame_info): Add calls to
25346 RISCV_STACK_ALIGN when using outgoing_args_size and pretend_args_size.
25347 Set arg_pointer_offset after using pretend_args_size.
25349 2018-04-17 Jakub Jelinek <jakub@redhat.com>
25351 PR rtl-optimization/85431
25352 * dse.c (record_store): Ignore zero width stores.
25355 * asan.c (handle_builtin_stack_restore): Adjust comment. Emit
25356 __asan_allocas_unpoison call and last_alloca_addr = new_sp before
25357 __builtin_stack_restore rather than after it.
25358 * builtins.c (expand_asan_emit_allocas_unpoison): Pass
25359 arg1 + (virtual_dynamic_stack_rtx - stack_pointer_rtx) as second
25360 argument instead of virtual_dynamic_stack_rtx.
25362 2018-04-17 Kelvin Nilsen <kelvin@gcc.gnu.org>
25364 * config/rs6000/rs6000-protos.h (rs6000_builtin_is_supported_p):
25366 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
25367 Add note to error message to explain internal mapping of overloaded
25368 built-in function name to non-overloaded built-in function name.
25369 * config/rs6000/rs6000.c (rs6000_builtin_is_supported_p): New
25372 2018-04-17 Michael Meissner <meissner@linux.vnet.ibm.com>
25375 * config/rs6000/rs6000.md (pack<mode>): Do not try handle a pack
25376 where the inputs overlap with the output.
25378 2018-04-17 Jakub Jelinek <jakub@redhat.com>
25380 * config/i386/sse.md (vec_extract_lo_<mode><mask_name>): Add
25381 (=v, v) alternative and explicit "memory" attribute.
25382 (vec_extract_lo_<mode><mask_name>): Likewise. Also add
25383 "type", "prefix", "prefix_extra", "length_immediate" and "mode"
25385 (vec_extract_lo_<mode><mask_name>): Add (=v, v) alternative and use
25386 "sselog1" type instead of "sselog".
25387 (vec_extract_hi_<mode><mask_name>): Use "sselog1" type instead of
25388 "sselog". Remove explicit "memory" attribute.
25389 (vec_extract_lo_v32hi): Add (=v, v) alternative and explicit "memory",
25390 "type", "prefix", "prefix_extra", "length_immediate" and "mode"
25392 (vec_extract_hi_v32hi): Merge all alternatives into one, use
25393 "sselog1" type instead of "sselog". Remove explicit "memory"
25395 (vec_extract_hi_v16hi): Merge each pair of alternatives into one,
25396 use "sselog1" type instead of "sselog". Remove explicit "memory"
25398 (vec_extract_lo_v64qi): Add (=v, v) alternative and explicit "memory",
25399 "type", "prefix", "prefix_extra", "length_immediate" and "mode"
25401 (vec_extract_hi_v64qi): Merge all alternatives into one, use
25402 "sselog1" type instead of "sselog". Remove explicit "memory"
25404 (vec_extract_hi_v32qi): Merge each pair of alternatives into one,
25405 use "sselog1" type instead of "sselog". Remove explicit "memory"
25409 * config/i386/i386.md (*ashlqi3_1_slp): Use alu1 type instead of alu.
25411 PR middle-end/85414
25412 * rtlhooks.c (gen_lowpart_if_possible): Don't call gen_lowpart_SUBREG
25415 2018-04-17 Martin Jambor <mjambor@suse.cz>
25418 * ipa-cp.c (create_specialized_node): Call
25419 expand_all_artificial_thunks if necessary.
25421 2018-04-17 Martin Liska <mliska@suse.cz>
25424 * ipa-devirt.c (odr_types_equivalent_p): Remove trailing
25425 in message, remote space in between '_G' and '('.
25427 2018-04-17 Jakub Jelinek <jakub@redhat.com>
25430 * config/i386/sse.md (reduces<mode><mask_scalar_name>,
25431 avx512f_vmcmp<mode>3<round_saeonly_name>,
25432 avx512f_vmcmp<mode>3_mask<round_saeonly_name>,
25433 avx512f_sgetexp<mode><mask_scalar_name><round_saeonly_scalar_name>,
25434 avx512f_rndscale<mode><round_saeonly_name>,
25435 avx512dq_ranges<mode><mask_scalar_name><round_saeonly_scalar_name>,
25436 avx512f_vgetmant<mode><mask_scalar_name><round_saeonly_scalar_name>):
25437 Use %<iptr>2 instead of %2 for -masm=intel.
25438 (avx512f_vcvtss2usi<round_name>, avx512f_vcvtss2usiq<round_name>,
25439 avx512f_vcvttss2usi<round_saeonly_name>,
25440 avx512f_vcvttss2usiq<round_saeonly_name>): Use %k1 instead of %1 for
25442 (avx512f_vcvtsd2usi<round_name>, avx512f_vcvtsd2usiq<round_name>,
25443 avx512f_vcvttsd2usi<round_saeonly_name>,
25444 avx512f_vcvttsd2usiq<round_saeonly_name>, ufloatv2siv2df2<mask_name>):
25445 Use %q1 instead of %1 for -masm=intel.
25446 (avx512f_sfixupimm<mode><sd_maskz_name><round_saeonly_name>,
25447 avx512f_sfixupimm<mode>_mask<round_saeonly_name>): Use %<iptr>3 instead
25448 of %3 for -masm=intel.
25449 (sse2_shufpd_v2df_mask): Fix a typo, change %{6%} to %{%6%} for
25451 (*avx512vl_<code>v2div2qi2_store): Use %w0 instead of %0 for
25453 (*avx512vl_<code><mode>v4qi2_store): Use %k0 instead of %0 for
25455 (avx512vl_<code><mode>v4qi2_mask_store): Use a single pattern with
25456 %k0 and %1 for -masm=intel rather than two patterns, one with %0 and
25458 (*avx512vl_<code><mode>v8qi2_store): Use %q0 instead of %0 for
25460 (avx512vl_<code><mode>v8qi2_mask_store): Use a single pattern with
25461 %q0 and %1 for -masm=intel rather than two patterns, one with %0 and
25462 %g1 and one with %0 and %1.
25463 (avx512er_vmrcp28<mode><round_saeonly_name>,
25464 avx512er_vmrsqrt28<mode><round_saeonly_name>): Use %<iptr>1 instead of
25465 %1 for -masm=intel.
25466 (avx5124fmaddps_4fmaddps_mask, avx5124fmaddps_4fmaddss_mask,
25467 avx5124fmaddps_4fnmaddps_mask, avx5124fmaddps_4fnmaddss_mask,
25468 avx5124vnniw_vp4dpwssd_mask, avx5124vnniw_vp4dpwssds_mask): Swap order
25469 of %0 and %{%4%} for -masm=intel.
25470 (avx5124fmaddps_4fmaddps_maskz, avx5124fmaddps_4fmaddss_maskz,
25471 avx5124fmaddps_4fnmaddps_maskz, avx5124fmaddps_4fnmaddss_maskz,
25472 avx5124vnniw_vp4dpwssd_maskz, avx5124vnniw_vp4dpwssds_maskz): Swap
25473 order of %0 and %{%5%}%{z%} for -masm=intel.
25475 2018-04-17 Jan Hubicka <jh@suse.cz>
25478 * ipa-devirt.c (odr_types_equivalent_p): Handle bit fields.
25480 2018-04-17 Martin Liska <mliska@suse.cz>
25483 * multiple_target.c (create_dispatcher_calls): Set apostrophes
25484 for target_clone error message. Make default implementation
25485 clone to be a local declaration.
25486 (separate_attrs): Add new argument and check for an empty
25488 (expand_target_clones): Handle it.
25489 (ipa_target_clone): Make redirection just for target_clones
25492 2018-04-16 Cesar Philippidis <cesar@codesourcery.com>
25493 Tom de Vries <tom@codesourcery.com>
25495 PR middle-end/84955
25496 * omp-expand.c (expand_oacc_for): Add dummy false branch for
25497 tiled basic blocks without omp continue statements.
25499 2018-04-16 Aaron Sawdey <acsawdey@linux.ibm.com>
25502 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Mark
25503 vec_extract expression as having side effects to make sure it gets
25506 2018-04-16 H.J. Lu <hongjiu.lu@intel.com>
25509 * config/i386/i386.c (get_builtin_code_for_version): Check
25512 2018-04-16 Olga Makhotina <olga.makhotina@intel.com>
25515 * config.gcc: Support "skylake".
25516 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
25518 * config/i386/i386.c (m_SKYLAKE): Define.
25519 (processor_target_table): Add "skylake".
25520 (ix86_option_override_internal): Add "skylake".
25521 (get_builtin_code_for_version): Handle PROCESSOR_SKYLAKE,
25522 PROCESSOR_CANNONLAKE.
25523 (get_builtin_code_for_version): Fix priority for
25524 PROCESSOR_ICELAKE_CLIENT, PROCESSOR_ICELAKE_SERVER,
25525 PROCESSOR_SKYLAKE-AVX512.
25526 * config/i386/i386.h (processor_costs): Define TARGET_SKYLAKE.
25527 (processor_type): Add PROCESSOR_SKYLAKE.
25529 2018-04-16 Paolo Carlini <paolo.carlini@oracle.com>
25530 Jason Merrill <jason@redhat.com>
25533 * convert.c (convert_to_integer_1): Use direct recursion for
25534 enumeral types and types with a precision less than the number
25535 of bits in their mode.
25537 2018-04-16 Julia Koval <julia.koval@intel.com>
25540 * config/i386/x86-tune.def (X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL,
25541 X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL): Add m_SKYLAKE_AVX512
25543 2018-04-14 Segher Boessenkool <segher@kernel.crashing.org>
25546 * config/rs6000/rs6000.opt (mdirect-move): Make deprecated.
25547 * doc/invoke.texi (RS/6000 and PowerPC Options): Remove -mdirect-move
25548 and -mno-direct-move.
25550 2018-04-13 Paul A. Clarke <pc@us.ibm.com>
25553 * config/rs6000/emmintrin.h (_mm_slli_epi{16,32,64}):
25554 Ensure that vec_splat_s32 is only called with 0 <= shift < 16.
25555 Ensure negative shifts result in {0}.
25557 2018-04-13 Vladimir Makarov <vmakarov@redhat.com>
25559 PR rtl-optimization/79916
25560 * config/rs6000/rs6000.c (rs6000_emit_move): Use assigned hard
25561 regs (if any) to define how to gnerate SD moves when LRA is in
25564 2018-04-13 Jakub Jelinek <jakub@redhat.com>
25566 PR rtl-optimization/85393
25567 * except.h (expand_dw2_landing_pad_for_region): Remove declaration.
25568 * except.c (expand_dw2_landing_pad_for_region): Make static.
25569 * bb-reorder.c (fix_up_crossing_landing_pad): In new_bb emit just
25570 a label and unconditional jump to old_bb, rather than
25571 expand_dw2_landing_pad_for_region insn(s) and jump to single_succ
25574 PR rtl-optimization/85376
25575 * simplify-rtx.c (simplify_const_unary_operation): For CLZ and CTZ and
25576 zero op0, if C?Z_DEFINED_VALUE_AT_ZERO is false, return NULL_RTX
25577 instead of a specific value.
25579 2018-04-13 Jan Hubicka <hubicka@ucw.cz>
25580 Bin Cheng <bin.cheng@arm.com>
25582 PR tree-optimization/82965
25583 PR tree-optimization/83991
25584 * cfgloopanal.c (expected_loop_iterations_unbounded): Add
25585 by_profile_only parameter.
25586 * cfgloopmanip.c (scale_loop_profile): Further scale loop's profile
25587 information if the loop was predicted to iterate too many times.
25588 * cfgloop.h (expected_loop_iterations_unbounded): Update prototype
25590 2018-04-13 Jan Hubicka <hubicka@ucw.cz>
25593 * config/i386/i386.c (ix86_can_inline_p): Allow safe transitions for
25596 2018-04-13 Martin Liska <mliska@suse.cz>
25597 Jakub Jelinek <jakub@redhat.com>
25599 PR middle-end/81657
25600 * expr.h (enum block_op_methods): Add BLOCK_OP_NO_LIBCALL_RET.
25601 * expr.c (emit_block_move_hints): Handle BLOCK_OP_NO_LIBCALL_RET.
25602 * builtins.c (expand_builtin_memory_copy_args): Use
25603 BLOCK_OP_NO_LIBCALL_RET method for mempcpy with non-ignored target,
25604 handle dest_addr == pc_rtx.
25606 2018-04-12 Segher Boessenkool <segher@kernel.crashing.org>
25609 * config/rs6000/rs6000.md (fix_trunc<mode>si2): Use legacy code if
25610 asked to not generate direct moves.
25611 (fix_trunc<mode>si2_stfiwx): Similar.
25612 (fix_trunc<mode>si2_internal): Similar.
25614 2018-04-12 Jakub Jelinek <jakub@redhat.com>
25617 * var-tracking.c (add_stores): Handle STRICT_LOW_PART SET_DEST.
25618 * cselib.c (cselib_record_sets): For STRICT_LOW_PART dest,
25619 lookup if dest in some wider mode is known to be const0_rtx and
25620 if so, record permanent equivalence for it to be ZERO_EXTEND of
25621 the narrower mode destination.
25623 2018-04-12 Cesar Philippidis <cesar@codesourcery.com>
25625 * lto-streamer-out.c (output_function): Revert 259346.
25626 * omp-expand.c (expand_oacc_for): Likewise.
25628 2018-04-12 Alexander Monakov <amonakov@ispras.ru>
25630 PR rtl-optimization/85354
25631 * sel-sched-ir.c (sel_init_pipelining): Move cfg_cleanup call...
25632 * sel-sched.c (sel_global_init): ... here.
25634 2018-04-12 Eric Botcazou <ebotcazou@adacore.com>
25637 * lto-wrapper.c (debug_objcopy): Open the files in binary mode.
25638 * dwarf2out.c (dwarf2out_early_finish): Do not generate assembly in LTO
25639 mode for PE-COFF targets.
25640 * config/i386/i386-protos.h (i386_pe_asm_lto_start): Declare.
25641 (i386_pe_asm_lto_end): Likewise.
25642 * config/i386/cygming.h (TARGET_ASM_LTO_START): Define.
25643 (TARGET_ASM_LTO_END): Likewise.
25644 * config/i386/winnt.c (saved_debug_info_level): New static variable.
25645 (i386_pe_asm_lto_start): New function.
25646 (i386_pe_asm_lto_end): Likewise.
25648 2018-04-12 Cesar Philippidis <cesar@codesourcery.com>
25649 Richard Biener <rguenther@suse.de>
25651 PR middle-end/84955
25652 * lto-streamer-out.c (output_function): Fix CFG loop state before
25654 * omp-expand.c (expand_oacc_for): Handle calls to internal
25655 functions like regular functions.
25657 2018-04-12 Richard Biener <rguenther@suse.de>
25660 * dwarf2out.c (init_sections_and_labels): Use debug_line_section[_label]
25661 for the early LTO debug to properly generate references to it
25662 during DIE emission. Do not re-use that for the skeleton for
25664 (dwarf2out_early_finish): Likewise.
25666 2018-04-12 Jakub Jelinek <jakub@redhat.com>
25669 * config/i386/sse.md
25670 (<mask_codefor>avx512dq_vextract<shuffletype>64x2_1<mask_name> split,
25671 <mask_codefor>avx512f_vextract<shuffletype>32x4_1<mask_name> split,
25672 vec_extract_lo_<mode><mask_name> split, vec_extract_lo_v32hi,
25673 vec_extract_lo_v64qi): For non-AVX512VL if input is xmm16+ reg
25674 and output is a reg, avoid creating invalid lowpart subreg, but
25675 instead split into a 512-bit move. Don't split if not AVX512VL,
25676 input is xmm16+ reg and output is a mem.
25677 (vec_extract_lo_<mode><mask_name>, vec_extract_lo_v32hi,
25678 vec_extract_lo_v64qi): Don't require split if not AVX512VL, input is
25679 xmm16+ reg and output is a mem.
25681 2018-04-12 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
25683 * config/s390/s390.c (s390_output_indirect_thunk_function): Check
25684 also for flag_dwarf2_cfi_asm.
25686 2018-04-12 Jakub Jelinek <jakub@redhat.com>
25688 PR rtl-optimization/85342
25689 * regcprop.c (copyprop_hardreg_forward_1): Remove replaced array, use
25690 a bool scalar var inside of the loop instead. Don't try to update
25691 recog_data.operand after failed apply_change_group.
25693 2018-04-12 Tom de Vries <tom@codesourcery.com>
25696 * config/nvptx/nvptx.c (flexible_array_member_type_p): New function.
25697 (nvptx_assemble_decl_begin): Add undefined param. Declare undefined
25698 array with flexible array member as array without given dimension.
25699 (nvptx_assemble_undefined_decl): Set nvptx_assemble_decl_begin call
25700 argument for undefined param to true.
25702 2018-04-11 Aaron Sawdey <acsawdey@linux.ibm.com>
25705 * doc/invoke.texi (RS/6000 and PowerPC Options): Document options
25706 -mcall- and -mtraceback=. Remove options -mabi=spe and -mabi=no-spe
25707 from PowerPC section.
25708 * config/rs6000/sysv4.opt (mcall-): Improve help text.
25709 * config/rs6000/rs6000.opt (mblock-compare-inline-limit=): Trim
25710 help text that is too long.
25711 * config/rs6000/rs6000.opt (mblock-compare-inline-loop-limit=): Trim
25712 help text that is too long.
25713 * config/rs6000/rs6000.opt (mstring-compare-inline-limit=): Trim
25714 help text that is too long.
25716 2018-04-11 Uros Bizjak <ubizjak@gmail.com>
25718 * config/alpha/alpha.md (stack_probe_internal): Rename
25719 from "probe_stack". Update all callers.
25721 2018-04-11 Alexander Monakov <amonakov@ispras.ru>
25723 PR rtl-optimization/84566
25724 * sched-deps.c (sched_analyze_insn): Check deps->readonly when invoking
25725 sched_macro_fuse_insns.
25727 2018-04-11 Alexander Monakov <amonakov@ispras.ru>
25730 * sched-rgn.c (add_branch_dependences): Move sel_sched_p check here...
25731 (compute_block_dependences): ... from here.
25733 2018-04-11 Jakub Jelinek <jakub@redhat.com>
25735 PR tree-optimization/85331
25736 * vec-perm-indices.h (vec_perm_indices::clamp): Change input type
25737 from int to HOST_WIDE_INT.
25739 2018-04-11 Martin Jambor <mjambor@suse.cz>
25742 * ipa-cp.c (propagate_vals_across_pass_through): Expand comment.
25743 (cgraph_edge_brings_value_p): New parameter dest_val, check if it is
25744 not the same as the source val.
25745 (cgraph_edge_brings_value_p): New parameter.
25746 (gather_edges_for_value): Pass destination value to
25747 cgraph_edge_brings_value_p.
25748 (perhaps_add_new_callers): Likewise.
25749 (get_info_about_necessary_edges): Likewise and exclude values brought
25750 only by self-recursive edges.
25751 (create_specialized_node): Redirect only clones of self-calling edges.
25752 (+self_recursive_pass_through_p): New function.
25753 (find_more_scalar_values_for_callers_subset): Use it.
25754 (find_aggregate_values_for_callers_subset): Likewise.
25755 (known_aggs_to_agg_replacement_list): Removed.
25756 (decide_whether_version_node): Re-calculate known constants for all
25757 remaining context clones.
25759 2018-04-11 Richard Biener <rguenther@suse.de>
25762 * dwarf2out.c (dwarf2out_finish): Remove DW_AT_stmt_list attribute
25763 from early DWARF output.
25764 (dwarf2out_early_finish): Output line info unconditionally into
25765 early DWARF and add reference to it.
25767 2018-04-11 Jakub Jelinek <jakub@redhat.com>
25770 * config/i386/sse.md (iptr): Add V16SFmode and V8DFmode cases.
25771 (<avx512>_vec_dup<mode><mask_name>): Use a single pattern for modes
25772 other than V2DFmode using iptr mode attribute.
25773 (<avx512>_vec_dup<mode><mask_name>): Use iptr mode attribute.
25775 2018-04-11 Alexander Monakov <amonakov@ispras.ru>
25777 PR rtl-optimization/84659
25778 * sel-sched-ir.c (sel_init_pipelining): Invoke cleanup_cfg.
25780 2018-04-11 Jakub Jelinek <jakub@redhat.com>
25783 * dwarf2out.c (skip_loc_list_entry): Don't call size_of_locs if
25785 (output_loc_list): Pass address of a dummy size variable even in the
25786 locview handling loop.
25787 (index_location_lists): Add comment on why skip_loc_list_entry can't
25790 2018-04-11 Thomas Preud'homme <thomas.preudhomme@arm.com>
25793 * config/arm/arm-builtins.c (arm_expand_builtin): Force input operand
25796 2018-04-10 Aaron Sawdey <acsawdey@linux.ibm.com>
25799 * doc/invoke.texi (RS/6000 and PowerPC Options): Document options
25800 -mblock-compare-inline-limit, -mblock-compare-inline-loop-limit,
25801 and -mstring-compare-inline-limit.
25803 2018-04-10 Segher Boessenkool <segher@kernel.crashing.org>
25806 * config/rs6000/rs6000.md (allocate_stack): Put the residual size
25807 for stack clash protection in a register whenever we need it to be in
25810 2018-04-10 Segher Boessenkool <segher@kernel.crashing.org>
25812 * common/config/rs6000/rs6000-common.c (rs6000_option_init_struct):
25813 Enable -fasynchronous-unwind-tables by default if OBJECT_FORMAT_ELF.
25815 2018-04-10 Segher Boessenkool <segher@kernel.crashing.org>
25818 * config/rs6000/rs6000.opt (mtraceback=): Show the allowed values in
25820 (mlong-double-): Ditto.
25821 * config/rs6000/sysv4.opt (msdata=): Ditto.
25822 (mtls-size=): Ditto.
25824 2018-04-10 Kelvin Nilsen <kelvin@gcc.gnu.org>
25826 * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Remove
25827 erroneous entries for
25828 "vector int vec_ldl (int, long int *)", and
25829 "vector unsigned int vec_ldl (int, unsigned long int *)".
25830 Add comments and entries for
25831 "vector bool char vec_ldl (int, bool char *)",
25832 "vector bool short vec_ldl (int, bool short *)",
25833 "vector bool int vec_ldl (int, bool int *)",
25834 "vector bool long long vec_ldl (int, bool long long *)",
25835 "vector pixel vec_ldl (int, pixel *)",
25836 "vector long long vec_ldl (int, long long *)",
25837 "vector unsigned long long vec_ldl (int, unsigned long long *)".
25838 * config/rs6000/rs6000.c (rs6000_init_builtins): Initialize new
25839 type tree bool_long_long_type_node and correct definition of
25840 bool_V2DI_type_node to make reference to this new type tree.
25841 (rs6000_mangle_type): Replace erroneous reference to
25842 bool_long_type_node with bool_long_long_type_node.
25843 * config/rs6000/rs6000.h (enum rs6000_builtin_type_index): Add
25844 comments to emphasize sign distinctions for char and int types and
25845 replace RS6000_BTI_bool_long constant with
25846 RS6000_BTI_bool_long_long constant. Also add comment to restrict
25847 use of RS6000_BTI_pixel.
25848 (bool_long_type_node): Remove this macro definition.
25849 (bool_long_long_type_node): New macro definition
25851 2018-04-10 Jakub Jelinek <jakub@redhat.com>
25853 PR rtl-optimization/85300
25854 * combine.c (subst): Handle subst of CONST_SCALAR_INT_P new_rtx also
25855 into FLOAT and UNSIGNED_FLOAT like ZERO_EXTEND, return a CLOBBER if
25856 simplify_unary_operation fails.
25858 2018-04-10 Martin Liska <mliska@suse.cz>
25860 * gdbhooks.py: Add pretty-printers for varpool_node, symtab_node,
25861 cgraph_edge and ipa_ref.
25863 2018-04-10 Jakub Jelinek <jakub@redhat.com>
25867 * config/i386/sse.md
25868 (<extract_type>_vinsert<shuffletype><extract_suf>_mask): Fix
25869 computation of the VEC_MERGE selector from mask.
25870 (<extract_type>_vinsert<shuffletype><extract_suf>_1<mask_name>):
25871 Fix decoding of the VEC_MERGE selector into mask.
25873 2018-04-10 Richard Sandiford <richard.sandiford@linaro.org>
25875 PR tree-optimization/85286
25876 * tree-vect-data-refs.c (vect_get_smallest_scalar_type):
25878 2018-04-10 Richard Sandiford <richard.sandiford@linaro.org>
25880 * final.c (final_1): Set insn_last_address as well as
25881 insn_current_address.
25883 2018-04-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
25886 * explow.c (emit_stack_probe): Call validize_mem on memory location
25887 before passing it to gen_probe_stack. Create address operand and
25888 legitimize it for the probe_stack_address case.
25890 2018-04-09 Jan Hubicka <jh@suse.cz>
25893 * ipa-devirt.c (rebuild_type_inheritance-hash): New.
25894 * ipa-utils.h (rebuild_type_inheritance-hash): Declare.
25895 * tree.c (free_lang_data_in_type): Fix handling of binfos;
25897 (free_lang_data): Rebuild type inheritance graph.
25899 2018-04-09 Martin Sebor <msebor@redhat.com>
25901 * invoke.texi (-finline-small-functions): Mention other optimization
25903 (-findirect-inlining, -fpartial-inlining): Same.
25904 (-finline-functions-called-once): Same.
25905 (-freorder-blocks-and-partition): Same.
25907 2018-04-09 Jan Hubicka <jh@suse.cz>
25910 * cfgcleanup.c (try_forward_edges): Do not give up on crossing
25911 jumps; choose last target that matches the criteria (i.e.
25912 no partition changes for non-crossing jumps).
25913 * cfgrtl.c (cfg_layout_redirect_edge_and_branch): Add basic
25914 support for redirecting crossing jumps to non-crossing.
25916 2018-04-09 Alexey Brodkin <abrodkin@synopsys.com>
25918 * config/arc/arc.c (arc_expand_prologue): Set stack usage info
25919 also for naked functions.
25921 2018-04-09 Claudiu Zissulescu <claziss@synopsys.com>
25923 * config/arc/arc.md (add_shift): New pattern.
25924 (add_shift2): Likewise.
25925 (sub_shift): Likewise.
25926 (sub_shift_cmp0_noout): Likewise.
25927 (compare_si_ashiftsi): Likewise.
25928 (xbfu_cmp0_noout): New combine pattern.
25929 (xbfu_cmp0"): Likewise.
25930 (movsi_set_cc_insn): Place the predicable variant first.
25931 (commutative_binary_cmp0_noout): Remove clobber.
25932 (commutative_binary_cmp0): New pattern.
25933 (noncommutative_binary_cmp0): Likewise.
25934 (noncommutative_binary_cmp0_noout): Likewise.
25935 (noncommutative_binary_comparison_result_used): Removed.
25936 (rsub_cmp0): New pattern.
25937 (rsub_cmp0_noout): Likewise.
25938 (extzvsi): Changed, keep only meaningful variants.
25939 (SQH, SEZ): New iterators.
25940 (SQH_postfix): New mode attribute.
25941 (SEZ_prefix): New code attribute.
25942 (<SEZ_prefix>xt<SQH_postfix>_cmp0_noout): New instruction pattern.
25943 (<SEZ_prefix>xt<SQH_postfix>_cmp0): Likewise.
25944 * config/arc/predicates.md (cc_set_register): Use CC_REG instead
25945 of numerical value.
25946 (noncommutative_operator): Check the availability of barrel
25949 2018-04-09 Richard Biener <rguenther@suse.de>
25951 PR tree-optimization/85284
25952 * tree-ssa-loop-niter.c (number_of_iterations_exit_assumptions):
25953 Only use the niter constraining form of simple_iv when the exit
25954 is always executed.
25956 2018-04-09 Tom de Vries <tom@codesourcery.com>
25959 * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
25960 (define_expand "*memory_barrier"): New define_expand.
25961 (define_insn "memory_barrier"): New insn.
25963 2018-04-09 Andrey Belevantsev <abel@ispras.ru>
25965 PR rtl-optimization/80463
25966 PR rtl-optimization/83972
25967 PR rtl-optimization/83480
25969 * sel-sched-ir.c (has_dependence_note_mem_dep): Take into account the
25970 correct producer for the insn.
25971 (tidy_control_flow): Fixup seqnos in case of debug insns.
25973 2018-04-09 Andrey Belevantsev <abel@ispras.ru>
25975 PR rtl-optimization/83913
25977 * sel-sched-ir.c (merge_expr_data): Choose the middle between two
25978 different sched-times when merging exprs.
25980 2018-04-09 Andrey Belevantsev <abel@ispras.ru>
25982 PR rtl-optimization/83962
25984 * sel-sched-ir.c (tidy_control_flow): Correct the order in which we call
25985 tidy_fallthru_edge and tidy_control_flow.
25987 2018-04-09 Andrey Belevantsev <abel@ispras.ru>
25989 PR rtl-optimization/83530
25991 * sel-sched.c (force_next_insn): New global variable.
25992 (remove_insn_for_debug): When force_next_insn is true, also leave only
25993 next insn in the ready list.
25994 (sel_sched_region): When the region wasn't scheduled, make another pass
25995 over it with force_next_insn set to 1.
25997 2018-04-08 Monk Chiang <sh.chiang04@gmail.com>
25999 * config.gcc (nds32le-*-*, nds32be-*-*): Add nds32/nds32_intrinsic.h
26001 * config/nds32/constants.md (unspec_volatile_element): Add enum values
26002 for interrupt control.
26003 * config/nds32/nds32-intrinsic.c: Implementation of intrinsic
26004 functions for interrupt control.
26005 * config/nds32/nds32-intrinsic.md: Likewise.
26006 * config/nds32/nds32_intrinsic.h: Likewise.
26007 * config/nds32/nds32.h (nds32_builtins): Likewise.
26009 2018-04-08 Chung-Ju Wu <jasonwucj@gmail.com>
26011 * config/nds32/nds32.c (nds32_init_machine_status,
26012 nds32_legitimate_index_p, nds32_legitimate_address_p): Consider
26013 strict_aligned_p field.
26014 (nds32_expand_to_rtl_hook): New function.
26015 (TARGET_EXPAND_TO_RTL_HOOK): Define.
26016 * config/nds32/nds32.h (machine_function): Add strict_aligned_p field.
26018 2018-04-08 Kito Cheng <kito.cheng@gmail.com>
26019 Chung-Ju Wu <jasonwucj@gmail.com>
26021 * config.gcc (nds32*-*-*): Check that n7 is valid to --with-cpu.
26022 * config/nds32/nds32-n7.md: New file.
26023 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N7.
26024 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n7
26026 * config/nds32/nds32-protos.h: More declarations for n7 pipeline.
26027 * config/nds32/nds32.md (pipeline_model): Add n7.
26028 * config/nds32/nds32.opt (mcpu): Support n7 pipeline cpus.
26029 * config/nds32/pipelines.md: Include n7 settings.
26031 2018-04-08 Kito Cheng <kito.cheng@gmail.com>
26032 Chung-Ju Wu <jasonwucj@gmail.com>
26034 * config.gcc (nds32*-*-*): Check that e8 is valid to --with-cpu.
26035 * config/nds32/nds32-e8.md: New file.
26036 * config/nds32/nds32-opts.h (nds32-cpu_type): Add CPU_E8.
26037 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for e8
26039 * config/nds32/nds32-protos.h: More declarations for e8 pipeline.
26040 * config/nds32/nds32.md (pipeline_model): Add e8.
26041 * config/nds32/nds32.opt (mcpu): Support e8 pipeline cpus.
26042 * config/nds32/pipelines.md: Include e8 settings.
26044 2018-04-08 Kito Cheng <kito.cheng@gmail.com>
26045 Chung-Ju Wu <jasonwucj@gmail.com>
26047 * config.gcc (nds32*-*-*): Check that n6/n8/s8 are valid to --with-cpu.
26048 * config/nds32/nds32-n8.md: New file.
26049 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N6 and CPU_N8.
26050 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n8
26052 * config/nds32/nds32-protos.h: More declarations for n8 pipeline.
26053 * config/nds32/nds32-utils.c: More implementations for n8 pipeline.
26054 * config/nds32/nds32.md (pipeline_model): Add n8.
26055 * config/nds32/nds32.opt (mcpu): Support n8 pipeline cpus.
26056 * config/nds32/pipelines.md: Include n8 settings.
26058 2018-04-08 Kito Cheng <kito.cheng@gmail.com>
26059 Chung-Ju Wu <jasonwucj@gmail.com>
26061 * config.gcc (nds32*): Add nds32-utils.o into extra_objs.
26062 * config/nds32/nds32-n9-2r1w.md: New file.
26063 * config/nds32/nds32-n9-3r2w.md: New file.
26064 * config/nds32/nds32-opts.h (nds32_cpu_type, nds32_mul_type,
26065 nds32_register_ports): New or modify for cpu n9.
26066 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n9
26068 * config/nds32/nds32-protos.h: More declarations for n9 pipeline.
26069 * config/nds32/nds32-utils.c: New file.
26070 * config/nds32/nds32.h (TARGET_PIPELINE_N9, TARGET_PIPELINE_SIMPLE,
26071 TARGET_MUL_SLOW): Define.
26072 * config/nds32/nds32.md (pipeline_model): New attribute.
26073 * config/nds32/nds32.opt (mcpu, mconfig-mul, mconfig-register-ports):
26074 New options that support cpu n9.
26075 * config/nds32/pipelines.md: Include n9 settings.
26076 * config/nds32/t-nds32 (nds32-utils.o): Add dependency.
26078 2018-04-08 Chung-Ju Wu <jasonwucj@gmail.com>
26080 * config/nds32/nds32-md-auxiliary.c (output_cond_branch): Output align
26081 information if necessary.
26082 (output_cond_branch_compare_zero): Likewise.
26083 * config/nds32/nds32.c (nds32_adjust_insn_length): Consider align case.
26084 (nds32_target_alignment): Refine for alignment.
26085 * config/nds32/nds32.h (NDS32_ALIGN_P): Define.
26086 (FUNCTION_BOUNDARY): Modify.
26087 * config/nds32/nds32.md (call_internal, call_value_internal): Consider
26089 * config/nds32/nds32.opt (malways-align, malign-functions): New.
26091 2018-04-08 Monk Chiang <sh.chiang04@gmail.com>
26093 * config/nds32/constants.md (unspec_volatile_element): Add values for
26094 TLB operation and data prefetch.
26095 * config/nds32/nds32-intrinsic.c: Implementation of intrinsic
26096 functions for TLB operation and data prefetch.
26097 * config/nds32/nds32-intrinsic.md: Likewise.
26098 * config/nds32/nds32_intrinsic.h: Likewise.
26099 * config/nds32/nds32.c (nds32_dpref_names): Likewise.
26100 (nds32_print_operand): Likewise.
26101 * config/nds32/nds32.h (nds32_builtins): Likewise.
26103 2018-04-07 Thomas Koenig <tkoenig@gcc.gnu.org>
26104 Andrew Pinski <pinsika@gcc.gnu.org>
26106 PR middle-end/82976
26107 * match.pd: Use constant_boolean_node of correct type instead of
26108 boolean_true_node or boolean_false_node for simplifying
26109 pointer comparisons to zero.
26111 2018-04-07 Jakub Jelinek <jakub@redhat.com>
26113 PR tree-optimization/80021
26114 * tree.c (verify_type_variant): Make error call in verify_variant_match
26115 translatable and remove final full stop.
26117 2018-04-07 Chung-Ju Wu <jasonwucj@gmail.com>
26119 * config/nds32/constants.md (unspec_volatile_element): Add
26120 UNSPEC_VOLATILE_EH_RETURN.
26121 * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push,
26122 nds32_output_stack_pop): Support dwarf exception handling process.
26123 * config/nds32/nds32-protos.h (nds32_dynamic_chain_address): Declare.
26124 * config/nds32/nds32.c (nds32_init_machine_status): Support dwarf
26125 exception handling process.
26126 (nds32_compute_stack_frame): Likewise.
26127 (nds32_return_addr_rtx): Likewise.
26128 (nds32_initial_elimination_offset): Likewise.
26129 (nds32_expand_prologue): Likewise.
26130 (nds32_expand_epilogue): Likewise.
26131 (nds32_dynamic_chain_address): New function.
26132 * config/nds32/nds32.h (machine_function): Add fields for dwarf
26133 exception handling.
26134 (DYNAMIC_CHAIN_ADDRESS): Define.
26135 (EH_RETURN_DATA_REGNO): Define.
26136 (EH_RETURN_STACKADJ_RTX): Define.
26137 * config/nds32/nds32.md (eh_return, nds32_eh_return): Implement
26138 patterns for dwarf exception handling.
26140 2018-04-07 Chung-Ju Wu <jasonwucj@gmail.com>
26142 * config/nds32/nds32.h: Clean up obsolete macros.
26144 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
26146 * config/nds32/constants.md (unspec_element, unspec_volatile_element):
26147 Add enum values for particular instructions.
26148 * config/nds32/nds32-intrinsic.c: Implementation of expanding
26149 particular intrinsic functions.
26150 * config/nds32/nds32-intrinsic.md: Likewise.
26151 * config/nds32/nds32_intrinsic.h: Likewise.
26152 * config/nds32/nds32.h (nds32_builtins): Likewise.
26153 * config/nds32/nds32.md (type): Add pbsad and pbsada.
26154 (btst, ave): New patterns for particular instructions.
26156 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
26158 * config/nds32/constants.md (unspec_element, unspec_volatile_element):
26159 Add enum values for atomic load/store and memory sync.
26160 * config/nds32/nds32-intrinsic.c: Implementation for atomic load/store
26162 * config/nds32/nds32-intrinsic.md: Likewise.
26163 * config/nds32/nds32_intrinsic.h: Likewise.
26164 * config/nds32/nds32.h (nds32_builtins): Likewise.
26166 2018-04-07 Jakub Jelinek <jakub@redhat.com>
26168 PR tree-optimization/85257
26169 * fold-const.c (native_encode_vector): If not all elts could fit
26170 and off is -1, return 0 rather than offset.
26171 * tree-ssa-sccvn.c (vn_reference_lookup_3): Pass
26172 (offseti - offset2) / BITS_PER_UNIT as 4th argument to
26173 native_encode_expr. Verify len * BITS_PER_UNIT >= maxsizei. Don't
26174 adjust buffer in native_interpret_expr call.
26176 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
26178 * config/nds32/constants.md (unspec_volatile_element): Add cache
26179 control enum values.
26180 * config/nds32/nds32-intrinsic.c: Add cache control expand functions.
26181 * config/nds32/nds32-intrinsic.md: Add cache control patterns.
26182 * config/nds32/nds32.c (nds32_cctl_names): New.
26183 (nds32_print_operand): Handle cache control register names.
26184 * config/nds32/nds32.h (nds32_builtins): New enum values.
26185 * config/nds32/nds32_intrinsic.h: Add cache control enum types and
26187 * config/nds32/nds32.md (type): Add mmu.
26188 * config/nds32/pipelines.md (simple_insn): Add mmu.
26190 2018-04-07 Chung-Ju Wu <jasonwucj@gmail.com>
26192 * config/nds32/nds32.md (type): Remove call.
26193 * config/nds32/pipelines.md (simple_insn): Likewise.
26195 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
26197 * config/nds32/constants.md (unspec_volatile_element): Add
26198 UNSPEC_VOLATILE_FMFCSR, UNSPEC_VOLATILE_FMTCSR and
26199 UNSPEC_VOLATILE_FMFCFG.
26200 * config/nds32/nds32-intrinsic.c (bdesc_noarg): New builtin
26201 description for fmfcfg and fmfcsr.
26202 (bdesc_1arg): Add fmtcsr.
26203 (bdesc_2arg): Add fcpynss, fcpyss, fcpynsd and fcpysd.
26204 (nds32_expand_builtin_impl): Deal with FPU intrinsic functions.
26205 * config/nds32/nds32-intrinsic.md (unspec_fcpynsd, unspec_fcpysd,
26206 unspec_fcpynss, unspec_fcpysd, unspec_fcpyss, unspec_fmfcsr,
26207 unspec_fmfcfg): New patterns.
26208 * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FMFCFG,
26209 NDS32_BUILTIN_FMFCSR, NDS32_BUILTIN_FMTCSR, NDS32_BUILTIN_FCPYNSS,
26210 NDS32_BUILTIN_FCPYSS,NDS32_BUILTIN_FCPYNSD and NDS32_BUILTIN_FCPYSD.
26211 * config/nds32/nds32_intrinsic.h (__nds32__fcpynsd, __nds32__fcpynss,
26212 __nds32__fcpysd, __nds32__fcpyss, __nds32__fmfcsr, __nds32__fmtcsr,
26213 __nds32__fmfcfg): Define.
26215 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
26217 * config/nds32/nds32.c (nds32_intrinsic_register_names): Add more
26218 intrinsic register names.
26219 * config/nds32/nds32_intrinsic.h (nds32_intrinsic_registers): Add more
26220 intrinsic register enum values and macros.
26222 2018-04-07 Chung-Ju Wu <jasonwucj@gmail.com>
26224 * config/nds32/nds32.c (nds32_legitimate_index_p): Modify condition
26225 for load/store addressing form.
26226 (nds32_print_operand_address): Likewise.
26228 2018-04-06 Eric Botcazou <ebotcazou@adacore.com>
26231 * config/sparc/sparc.c (sparc_expand_move): Deal with symbolic operands
26232 based on LABEL_REF. Remove useless assertion.
26233 (pic_address_needs_scratch): Fix formatting.
26234 (sparc_legitimize_pic_address): Minor tweaks.
26235 (sparc_delegitimize_address): Adjust assertion accordingly.
26236 * config/sparc/sparc.md (movsi_pic_label_ref): Change label_ref_operand
26237 into symbolic_operand.
26238 (movsi_high_pic_label_ref): Likewise.
26239 (movsi_lo_sum_pic_label_ref): Likewise.
26240 (movdi_pic_label_ref): Likewise.
26241 (movdi_high_pic_label_ref): Likewise.
26242 (movdi_lo_sum_pic_label_ref): Likewise.
26244 2018-04-06 Amaan Cheval <amaan.cheval@gmail.com>
26246 * config.gcc (x86_64-*-rtems*): Add rtems.h to tm_file for
26247 custom LIB_SPEC setup.
26249 2018-04-06 Ruslan Bukin <br@bsdpad.com>
26250 Kito Cheng <kito.cheng@gmail.com>
26252 * config.gcc (riscv*-*-freebsd*): Add RISC-V FreeBSD support.
26253 * config/riscv/freebsd.h: New.
26255 2018-04-06 Chung-Ju Wu <jasonwucj@gmail.com>
26257 * config/nds32/nds32.c (nds32_adjust_insn_length): Refine.
26258 * config/nds32/nds32.h (ADJUST_INSN_LENGTH): Change the location in
26261 2018-04-06 Chung-Ju Wu <jasonwucj@gmail.com>
26262 Kito Cheng <kito.cheng@gmail.com>
26264 * config/nds32/nds32-md-auxiliary.c (nds32_output_return,
26265 nds32_output_call, nds32_symbol_binds_local_p): New functions.
26266 * config/nds32/nds32-protos.h (nds32_output_call,
26267 nds32_output_return): Declare.
26268 * config/nds32/nds32.md: Refine all the call and return patterns.
26270 2018-04-06 Jakub Jelinek <jakub@redhat.com>
26273 * dwarf2out.c (rtl_for_decl_init): For STRING_CST initializer only
26274 build CONST_STRING if TYPE_MAX_VALUE is non-NULL and is INTEGER_CST.
26276 PR rtl-optimization/84872
26277 * cfgloopmanip.c (create_preheader): Use make_forwarder_block even if
26278 nentry == 1 when CP_FALLTHRU_PREHEADERS and single_entry is
26279 EDGE_CROSSING edge.
26281 2018-04-06 Tamar Christina <tamar.christina@arm.com>
26283 * expr.c (copy_blkmode_to_reg): Revert 254862.
26284 * doc/sourcebuild.texi (word_mode_no_slow_unalign): Likewise.
26286 2018-04-06 Richard Biener <rguenther@suse.de>
26288 PR middle-end/85244
26289 * tree-dfa.c (get_ref_base_and_extent): Reset seen_variable_array_ref
26290 after seeing a component reference with an adjacent field. Treat
26291 refs to arrays at struct end of external decls similar to
26292 refs to unconstrained commons.
26294 2018-04-06 Jakub Jelinek <jakub@redhat.com>
26297 * fold-const.c (twoval_comparison_p): Remove SAVE_P argument and don't
26298 look through SAVE_EXPRs with non-side-effects argument. Adjust
26300 (fold_comparison): Adjust twoval_comparison_p caller, don't handle
26303 2018-04-06 Richard Biener <rguenther@suse.de>
26305 PR middle-end/85180
26306 * alias.c (find_base_term): New wrapper around find_base_term
26307 unwinding CSELIB_VAL_PTR changes.
26308 (find_base_term): Do not restore CSELIB_VAL_PTR during the
26311 2018-04-06 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
26313 * config/s390/s390.c (s390_z10_optimize_cmp): Expand dedicated NOP
26315 * config/s390/s390.md (UNSPECV_NOP_LR_0, UNSPECV_NOP_LR_1): New
26316 constant definitions.
26317 ("nop"): lr 0,0 -> nopr r0
26318 ("nop_lr0", "nop_lr1"): New insn definitions.
26320 2018-04-06 Chung-Ju Wu <jasonwucj@gmail.com>
26322 * config/nds32/nds32.md (*stack_push, *stack_pop): Use
26323 NDS32_V3PUSH_AVAILABLE_P macro.
26325 2018-04-06 Monk Chiang <sh.chiang04@gmail.com>
26326 Chung-Ju Wu <jasonwucj@gmail.com>
26328 * config.gcc (nds32*-*-*): Add v2j v3f v3s checking.
26329 (nds32*-*-*): Add float and fpu_config into supported_defaults.
26330 * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS):
26331 Include TARGET_DEFAULT_FPU_ISA and TARGET_DEFAULT_FPU_FMA.
26332 * config/nds32/constants.md (unspec_element): Add UNSPEC_COPYSIGN,
26333 UNSPEC_FCPYNSD, UNSPEC_FCPYNSS, UNSPEC_FCPYSD and UNSPEC_FCPYSS.
26334 * config/nds32/constraints.md: New constraints and checking for hard
26335 float configuration.
26336 * config/nds32/iterators.md: New mode iterator and attribute for hard
26337 float configuration.
26338 * config/nds32/nds32-doubleword.md: Use hard float alternatives and
26340 * config/nds32/nds32-fpu.md: New file.
26341 * config/nds32/nds32-md-auxiliary.c: New functions and checkings to
26342 deal with hard float code generation.
26343 * config/nds32/nds32-opts.h (nds32_arch_type): Add ARCH_V3F and
26345 (abi_type, float_reg_number): New enum type.
26346 * config/nds32/nds32-predicates.c: New predicates for hard float.
26347 * config/nds32/nds32-protos.h: Declare functions for hard float.
26348 * config/nds32/nds32.c: Implementation for hard float configuration.
26349 * config/nds32/nds32.h: Definitions for hard float configuration.
26350 * config/nds32/nds32.md: Include hard float machine description and
26351 modify patterns for hard float configuration.
26352 * config/nds32/nds32.opt: New options for hard float configuration.
26353 * config/nds32/predicates.md: New predicates for hard float
26356 2018-04-06 Kuan-Lin Chen <kuanlinchentw@gmail.com>
26358 * common/config/nds32/nds32-common.c
26359 (nds32_option_optimization_table): Enable -mreleax-hint by default.
26361 2018-04-05 Jakub Jelinek <jakub@redhat.com>
26363 PR middle-end/85195
26364 * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Use view_convert around
26365 CONSTRUCTOR_ELT (ctor, ...)->value.
26367 2018-04-05 Uros Bizjak <ubizjak@gmail.com>
26370 * config/i386/i386.md (define_attr "memory"): Handle rotate1 type.
26372 2018-04-05 Tom de Vries <tom@codesourcery.com>
26375 * config/nvptx/nvptx.c (nvptx_single): Fix neutering of bb with only
26378 2018-04-05 Shiva Chen <shiva0217@gmail.com>
26379 Kito Cheng <kito.cheng@gmail.com>
26381 * config/nds32/constraints.md (U33): Fine-tune checking condition.
26382 * config/nds32/nds32-md-auxiliary.c (nds32_mem_format): Ditto.
26383 * config/nds32/nds32.h (nds32_16bit_address_type): Add
26384 ADDRESS_POST_MODIFY_LO_REG_IMM3U.
26386 2018-04-05 Shiva Chen <shiva0217@gmail.com>
26387 Kito Cheng <kito.cheng@gmail.com>
26389 * config/nds32/constraints.md (Ufe): New memory constraint.
26390 * config/nds32/nds32-md-auxiliary.c (nds32_mem_format,
26391 nds32_output_16bit_load): Consider r8 register for lwi45.fe format.
26392 * config/nds32/nds32.c (nds32_print_operand): Output lwi45.fe
26394 * config/nds32/nds32.h (nds32_16bit_address_type): Add ADDRESS_R8_IMM7U.
26395 * config/nds32/nds32.md (*mov<mode>): Adjust pattern.
26397 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
26399 * config/nds32/nds32.md: Use optimize_size in the condition for
26400 alu-shift instructions.
26402 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
26404 * config/nds32/nds32.md (divsi4, udivsi4): New patterns.
26406 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
26408 * config/nds32/nds32.md (negsi2): Refine pattern.
26410 2018-04-05 Kito Cheng <kito.cheng@gmail.com>
26411 Chung-Ju Wu <jasonwucj@gmail.com>
26413 * config/nds32/iterators.md (shift_rotate): New code iterator.
26414 (shift): New code attribute.
26415 * config/nds32/nds32-md-auxiliary.c (nds32_expand_constant): New.
26416 * config/nds32/nds32-protos.h (nds32_expand_constant): Declare.
26417 * config/nds32/nds32.c (nds32_print_operand): Deal with more cases.
26418 * config/nds32/nds32.md (addsi3, *add_srli): Refine implementation for
26419 bit-wise operations.
26420 (andsi3, *andsi3): Ditto.
26421 (iorsi3, *iorsi3, *or_slli, *or_srli): Ditto.
26422 (xorsi3, *xorsi3, *xor_slli, *xor_srli): Ditto.
26423 (<shift>si3, *ashlsi3, *ashrsi3, *lshrsi3, *rotrsi3): Ditto.
26424 * config/nds32/predicates.md (nds32_rimm5u_operand, nds32_and_operand,
26425 nds32_ior_operand, nds32_xor_operand): New predicates.
26427 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
26429 * config/nds32/nds32.md (add<mode>3, sub<mode>3): Rename to ...
26430 (addsi3, subsi3): ... this.
26432 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
26434 * config/nds32/nds32.md (*sub_srli, *and_slli): Fine-tune predicator.
26436 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
26438 * config/nds32/nds32.md: Adjust indention.
26440 2018-04-05 Kito Cheng <kito.cheng@gmail.com>
26442 * config/nds32/nds32.md (feature): New attribute.
26444 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
26446 * config/nds32/nds32.md (subtype): New attribute.
26448 2018-04-04 Thomas Preud'homme <thomas.preudhomme@arm.com>
26451 * config/arm/arm-builtins.c (arm_expand_builtin): Change
26452 expansion to perform a bitwise AND of the argument followed by a
26453 boolean negation of the result.
26455 2018-04-04 Peter Bergner <bergner@vnet.ibm.com>
26457 PR rtl-optimization/84878
26458 * ddg.c (add_cross_iteration_register_deps): Use DF_REF_BB to determine
26459 the basic block. Assert the use reference is not artificial and that
26460 it has an associated insn.
26462 2018-04-04 Michael Matz <matz@suse.de>
26464 * builtins.c (compute_objsize): Pass correct operand
26465 to array_at_struct_end_p.
26467 2018-04-04 Richard Biener <rguenther@suse.de>
26470 * dwarf2out.c (dwarf2out_register_external_die): Peel namespaces
26471 from contexts for DINFO_LEVEL_TERSE and below.
26473 2018-04-04 Kito Cheng <kito.cheng@gmail.com>
26475 * config/nds32/nds32-doubleword.md (move_<mode>): Require
26476 resiter_operand condition.
26477 * config/nds32/nds32.md (*move<mode>): Ditto.
26479 2018-04-04 Kito Cheng <kito.cheng@gmail.com>
26480 Monk Chiang <sh.chiang04@gmail.com>
26482 * config/nds32/nds32.md (movmisalign<mode>): New pattern.
26484 2018-04-04 Chung-Ju Wu <jasonwucj@gmail.com>
26486 * config/nds32/nds32.md (movqi, movhi): Merge into mov<mode>.
26488 2018-04-04 Chung-Ju Wu <jasonwucj@gmail.com>
26489 Kito Cheng <kito.cheng@gmail.com>
26491 * config/nds32/nds32-md-auxiliary.c (nds32_inverse_cond_code,
26492 nds32_cond_code_str, output_cond_branch,
26493 output_cond_branch_compare_zero, nds32_expand_cbranch,
26494 nds32_expand_cstore, nds32_expand_movcc,
26495 nds32_output_cbranchsi4_equality_zero,
26496 nds32_output_cbranchsi4_equality_reg,
26497 nds32_output_cbranchsi4_equality_reg_or_const_int,
26498 nds32_output_cbranchsi4_greater_less_zero: New functions.
26499 * config/nds32/nds32-protos.h (nds32_expand_cbranch,
26500 nds32_expand_cstore, nds32_expand_movcc,
26501 nds32_output_cbranchsi4_equality_zero,
26502 nds32_output_cbranchsi4_equality_reg,
26503 nds32_output_cbranchsi4_equality_reg_or_const_int,
26504 nds32_output_cbranchsi4_greater_less_zero): Declare.
26505 * config/nds32/predicates.md (nds32_movecc_comparison_operator,
26506 nds32_rimm11s_operand): New predicates.
26507 * config/nds32/nds32.h (nds32_expand_result_type): New enum type.
26508 * config/nds32/nds32.md: Rewrite all the branch and conditional move
26511 2018-04-04 Kito Cheng <kito.cheng@gmail.com>
26513 * config/nds32/nds32-doubleword.md: Refine all the instruction type.
26514 * config/nds32/nds32.md: Ditto.
26515 * config/nds32/pipelines.md: Ditto.
26517 2018-04-04 Richard Biener <rguenther@suse.de>
26519 PR tree-optimization/85168
26520 * tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address): Avoid
26521 propagating abnormals.
26523 2018-04-04 Chung-Ju Wu <jasonwucj@gmail.com>
26525 * config/nds32/nds32.md (enabled): Use yes/no for this attribute.
26527 2018-04-04 Chung-Ju Wu <jasonwucj@gmail.com>
26528 Kito Cheng <kito.cheng@gmail.com>
26530 * config/nds32/nds32-md-auxiliary.c (nds32_long_call_p): New function.
26531 * config/nds32/nds32-protos.h (nds32_long_call_p): Declare.
26532 * config/nds32/nds32.c (nds32_function_ok_for_sibcall): New function.
26533 (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
26534 * config/nds32/nds32.md (sibcall_internal): New.
26535 (sibcall_register): Remove.
26536 (sibcall_immediate): Remove.
26537 (sibcall_value_internal): New.
26538 (sibcall_value_register): Remove.
26539 (sibcall_value_immediate): Remove.
26540 * config/nds32/predicates.md (nds32_general_register_operand): New.
26541 (nds32_call_address_operand): New.
26543 2018-04-03 Jakub Jelinek <jakub@redhat.com>
26545 PR rtl-optimization/85167
26546 * shrink-wrap.c (move_insn_for_shrink_wrap): Don't set bb_uses and
26547 bb_defs if *split_p, instead preinitialize it to NULL.
26549 PR tree-optimization/85156
26550 * builtins.c (fold_builtin_expect): Use save_expr on arg1 to avoid
26551 evaluating the argument multiple times.
26553 2018-04-03 Bill Schmidt <wschmidt@linux.ibm.com>
26555 * config/rs6000/emmintrin.h (_mm_cvtpd_epi32): Use __vector rather
26557 (_mm_cvtpd_ps): Likewise.
26558 (_mm_cvttpd_epi32): Likewise.
26559 * config/rs6000/mmintrin.h (_mm_unpacklo_pi8): Likewise.
26560 * config/rs6000/xmmintrin.h: For strict-ANSI C++ or C11, undefine
26561 vector, pixel, and bool following altivec.h include.
26563 2018-04-03 Martin Sebor <msebor@redhat.com>
26565 * doc/extend.texi (Common Function Attributes): Clarify.
26566 (const attribute): Likewise.
26567 (pure attribute): Likewise.
26569 2018-04-03 Jakub Jelinek <jakub@redhat.com>
26572 * config/i386/i386.c (ix86_expand_vector_set): Use
26573 HOST_WIDE_INT_1U << elt instead of 1 << elt. Formatting fix.
26575 2018-04-03 Uros Bizjak <ubizjak@gmail.com>
26577 * config/i386/i386.c (emit_i387_cw_initialization): Always use logic
26578 instructions when changing rounding bits to preserve precision bits
26579 in the x87 control word.
26581 2018-04-03 Martin Liska <mliska@suse.cz>
26583 PR tree-optimization/82491
26584 * rtl.h (strip_offset_and_add): Replace += suboffset with
26585 poly_uint64 () + suboffset.
26587 2018-03-29 Martin Liska <mliska@suse.cz>
26588 Martin Jambor <mjambor@suse.cz>
26591 * ipa-cp.c (propagate_bits_across_jump_function): Bail out if
26592 param_type is not an integral or pointer type.
26594 2018-04-03 Richard Biener <rguenther@suse.de>
26596 * sese.h (recompute_all_dominators): Remove.
26598 2018-04-02 Martin Sebor <msebor@redhat.com>
26600 * doc/invoke.texi (-Wrestrict): Fix typos.
26602 2018-04-02 Jim Wilson <jimw@sifive.com>
26604 * config/riscv/riscv.h (SHIFT_COUNT_TRUNCATED): Set to zero.
26605 * config/riscv/riscv.md (<optab>si3): Use QImode shift count.
26606 (<optab>di3, <optab>si3_extend): Likewise.
26607 (<optab>si3_mask, <optab>si3_mask_1): New.
26608 (<optab>di3_mask, <optab>di3_mask_1): New.
26609 (<optab>si3_extend_mask, <optab>si3_extend_mask_1): New.
26610 (lshrsi3_zero_extend_1): Use VOIDmode shift count.
26611 * config/riscv/sync.md (atomic_test_and_set): Emit QImode shift count.
26613 2018-04-02 Gerald Pfeifer <gerald@pfeifer.com>
26615 * doc/cpp.texi (Variadic Macros): Fix line continuation in an
26618 2018-04-02 Chung-Ju Wu <jasonwucj@gmail.com>
26620 * config/nds32/nds32.c (TARGET_CANONICALIZE_COMPARISON): Define.
26621 (nds32_canonicalize_comparison): New function.
26623 2018-04-01 Chung-Ju Wu <jasonwucj@gmail.com>
26624 Kito Cheng <kito.cheng@gmail.com>
26625 Kuan-Lin Chen <kuanlinchentw@gmail.com>
26627 * config.gcc (nds32): Add nds32-relax-opt.o into extra_objs.
26628 * config/nds32/constants.md (unspec_volatile_element): Add
26629 UNSPEC_VOLATILE_RELAX_GROUP.
26630 * config/nds32/nds32-relax-opt.c: New file.
26631 * config/nds32/nds32-predicates.c
26632 (nds32_symbol_load_store_p): New function.
26633 * config/nds32/nds32-protos.h
26634 (nds32_symbol_load_store_p): Declare function.
26635 (make_pass_nds32_relax_opt): Declare new rtl pass function.
26636 * config/nds32/nds32.c
26637 (nds32_register_pass): New function to register pass.
26638 (nds32_register_passes): New function to register passes.
26639 * config/nds32/nds32.md (relax_group): New pattern.
26640 * config/nds32/nds32.opt (mrelax-hint): New option.
26641 * config/nds32/t-nds32 (nds32-relax-opt.o): New dependency.
26643 2018-04-01 Kito Cheng <kito.cheng@gmail.com>
26645 * config/nds32/t-nds32: Modify files dependency.
26647 2018-04-01 Chung-Ju Wu <jasonwucj@gmail.com>
26649 * config/nds32/nds32.h (FUNCTION_PROFILER): Output newline character.
26650 (PROFILE_HOOK): Define its implementation.
26652 2018-04-01 Chung-Ju Wu <jasonwucj@gmail.com>
26654 * config/nds32/nds32.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Use unsigned int
26655 type and 32-bit size.
26657 2018-04-01 Jakub Jelinek <jakub@redhat.com>
26659 PR middle-end/85090
26660 * config/i386/sse.md (V): Add V64QI and V32HI for TARGET_AVX512F.
26661 (V_128_256): New mode iterator.
26662 (*avx512dq_vextract<shuffletype>64x2_1 splitter): New define_split.
26663 (*avx512f_vextract<shuffletype>32x4_1 splitter): Likewise.
26664 (xop_pcmov_<mode><avxsizesuffix>): Use V_128_256 mode iterator instead
26666 * config/i386/i386.c (ix86_expand_vector_set): Improve V32HImode and
26667 V64QImode expansion for !TARGET_AVX512BW && TARGET_AVX512F.
26669 2018-03-31 Segher Boessenkool <segher@kernel.crashing.org>
26672 * config/rs6000/xmmintrin.h (_mm_set_ps, _mm_max_ps): Handle (quiet)
26673 NaN inputs correctly.
26675 2018-03-30 Peter Bergner <bergner@vnet.ibm.com>
26678 * config/rs6000/vsx.md (??r): New mode attribute.
26679 (*vsx_mov<mode>_64bit): Use it.
26680 (*vsx_mov<mode>_32bit): Likewise.
26682 2018-03-30 Martin Sebor <msebor@redhat.com>
26684 PR tree-optimization/84818
26685 * builtins.c (check_access): Use warning_n.
26687 2018-03-30 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
26690 * config/rs6000/rs6000-string.c (expand_compare_loop): Fix redundant
26692 * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Fix redundant
26695 2018-03-30 Julia Koval <julia.koval@intel.com>
26698 * x86-tune.def (movx, partial_reg_dependency): Enable for
26701 2018-03-29 Vladimir Makarov <vmakarov@redhat.com>
26703 PR inline-asm/84985
26704 * lra-constraints.c (process_alt_operands): Move setting
26705 this_alternative_matches below.
26707 2018-03-29 Martin Liska <mliska@suse.cz>
26710 * doc/invoke.texi: Document how LTO works with debug info.
26711 Describe auto-load support of binutils. Mention 'x86-64'
26712 as valid option value of -march option.
26714 2018-03-29 Jakub Jelinek <jakub@redhat.com>
26716 * config/i386/sse.md (<avx512>_blendm<mode>): Use <sseintprefix>.
26719 * fold-const.c (operand_equal_p): Handle DEBUG_BEGIN_STMT.
26720 For STATEMENT_LIST, pass down OEP_LEXICOGRAPHIC and maybe
26721 OEP_NO_HASH_CHECK for recursive call, to avoid exponential
26724 2018-03-28 Peter Bergner <bergner@vnet.ibm.com>
26727 * config/rs6000/rs6000.h (RS6000_BTM_POWERPC64): New define.
26728 (RS6000_BTM_COMMON): Add RS6000_BTM_POWERPC64.
26729 * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add support
26730 for RS6000_BTM_POWERPC64.
26731 (rs6000_invalid_builtin): Add handling for RS6000_BTM_POWERPC64
26732 (rs6000_builtin_mask_names): Add RS6000_BTM_POWERPC64.
26733 * config/rs6000/rs6000-builtin.def (BU_P7_POWERPC64_MISC_2): New macro
26736 (DIVDEU): Likewise.
26738 2018-03-28 Carl Love <cel@us.ibm.com>
26741 2017-09-27 Carl Love <cel@us.ibm.com>
26743 * config/rs6000/rs6000-builtin.def (BU_FP_1MISC_1): Add define macro.
26744 (FCTID, FCTIW): Add BU_FP_MISC_1 macro expansion for builtins.
26745 * config/rs6000/rs6000.md (lrintsfsi2): Add define_insn for the
26748 2018-03-28 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
26750 * config/rs6000/xmmintrin.h (_mm_max_pi16): Use __vector __bool
26751 instead of __vector bool.
26752 (_mm_max_pu8): Likewise.
26753 (_mm_min_pi16): Likewise.
26755 2018-03-28 Peter Bergner <bergner@vnet.ibm.com>
26758 * config/rs6000/rs6000-builtin.def (DIVWEO): Delete macro expansion.
26759 (DIVWEUO): Likewise.
26760 (DIVDEO): Likewise.
26761 (DIVDEUO): Likewise.
26762 * config/rs6000/rs6000.c (builtin_function_type): Remove support for
26763 DIVWEUO and DIVDEUO.
26764 * config/rs6000/rs6000.md (UNSPEC_DIVEO, UNSPEC_DIVEUO): Delete unspecs.
26765 (UNSPEC_DIV_EXTEND): Remove deleted unspecs.
26766 (div_extend): Likewise.
26767 * doc/extend.texi (__builtin_divweo): Remove documentation for deleted
26769 (__builtin_divweuo): Likewise.
26770 (__builtin_divdeo): Likewise.
26771 (__builtin_divdeuo): Likewise.
26773 2018-03-28 Jakub Jelinek <jakub@redhat.com>
26776 * config/i386/i386.md (*add<mode>3_carry_0, *addsi3_carry_zext_0,
26777 *sub<mode>3_carry_0, *subsi3_carry_zext_0): New patterns.
26779 PR tree-optimization/82004
26780 * gimple-match-head.c (optimize_pow_to_exp): New function.
26781 * match.pd (pow(C,x) -> exp(log(C)*x)): Wrap with #if GIMPLE.
26782 Don't fold to exp if optimize_pow_to_exp is false.
26784 2018-03-28 Martin Liska <mliska@suse.cz>
26787 * calls.c (initialize_argument_information): Fix trailing space.
26788 * common.opt: Fix typo and provide better explanation for
26789 -fsanitize-coverage option.
26790 * config/i386/i386.opt: Fix typo.
26792 2018-03-28 Jakub Jelinek <jakub@redhat.com>
26793 Martin Liska <mliska@suse.cz>
26796 * gimplify.c (asan_poison_variable): Don't do the check for
26797 gimplify_omp_ctxp here.
26798 (gimplify_decl_expr): Do it here.
26799 (gimplify_target_expr): Likewise.
26801 2018-03-28 Martin Liska <mliska@suse.cz>
26804 * config/i386/i386.c (ix86_function_arg_advance): Do not call
26805 chkp_type_bounds_count if MPX is not enabled.
26807 2018-03-27 Chung-Ju Wu <jasonwucj@gmail.com>
26809 * config/nds32/nds32.h (BRANCH_COST): Adjust cost.
26811 2018-03-27 Michael Meissner <meissner@linux.vnet.ibm.com>
26814 * config/rs6000/rs6000.c (create_complex_muldiv): New helper
26815 function to create the function decl for complex long double
26816 multiply and divide for -mabi=ieeelongdouble.
26817 (init_float128_ieee): Call it.
26819 2018-03-27 H.J. Lu <hongjiu.lu@intel.com>
26822 * config/i386/i386.c (ix86_trampoline_init): Insert ENDBR for
26823 -fcf-protection=branch -mibt.
26824 * config/i386/i386.h (TRAMPOLINE_SIZE): Increased by 4 bytes.
26826 2018-03-27 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
26829 * config/arm/arm.c (arm_valid_symbolic_address): Handle
26830 arm_word_relocations.
26832 2018-03-27 Cesar Philippidis <cesar@codesourcery.com>
26835 * config/nvptx/nvptx.c (nvptx_assemble_decl_begin): Add '[]' to
26836 extern array declarations.
26838 2018-03-27 Richard Biener <rguenther@suse.de>
26840 PR middle-end/84067
26841 * match.pd ((A * C) +- (B * C) -> (A+-B) * C): Guard with
26842 explicit single_use checks.
26844 2018-03-27 Richard Biener <rguenther@suse.de>
26846 PR tree-optimization/85082
26847 * tree-ssa-sccvn.c (vn_reference_lookup_or_insert_for_pieces):
26850 2018-03-27 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
26852 * config.gcc (aarch64*-*-linux*): New TARGET_DEFAULT_ASYNC_UNWIND_TABLES
26853 * common/config/aarch64/aarch64-common.c (aarch64_optimization_table[]):
26854 Turn on fasynchronous-unwind-tables and funwind-tables.
26856 2018-03-26 Uros Bizjak <ubizjak@gmail.com>
26859 * config/i386/i386.md (*bmi_blsr_<mode>_cmp): New insn pattern.
26860 (*bmi_blsr_<mode>_ccz): Ditto.
26862 2018-03-26 Tom de Vries <tom@codesourcery.com>
26864 PR tree-optimization/85063
26865 * omp-general.c (offloading_function_p): New function. Factor out
26867 * omp-offload.c (pass_omp_target_link::gate): ... here.
26868 * omp-general.h (offloading_function_p): Declare.
26869 * tree-switch-conversion.c (build_one_array): Mark CSWTCH.x variable
26870 with attribute omp declare target for offloading functions.
26872 2018-03-24 Richard Sandiford <richard.sandiford@linaro.org>
26874 PR tree-optimization/84005
26875 * tree-data-ref.h (get_base_for_alignment): Declare.
26876 * tree-data-ref.c (get_base_for_alignment_1): New function.
26877 (get_base_for_alignment): Likewise.
26878 * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Use
26879 get_base_for_alignment to find a suitable base object, instead
26880 of always using drb->base_address.
26882 2018-03-23 Jakub Jelinek <jakub@redhat.com>
26884 PR inline-asm/85022
26885 * emit-rtl.c (init_emit_regs): Indicate that VOIDmode MEMs don't have
26886 known size by default.
26888 2018-03-23 Vladimir Makarov <vmakarov@redhat.com>
26890 PR inline-asm/85030
26891 * lra-constraints.c (process_alt_operands): Don't match BLKmode
26892 and non BLKmode operands.
26894 2018-03-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
26897 * config/arm/arm.md (unaligned_loadhis): Remove first alternative.
26898 Clean up attributes.
26900 2018-03-23 Richard Biener <rguenther@suse.de>
26903 * dwarf2out.c (rtl_for_decl_location): Do not generate RTL early when
26904 we are going to emit early debug for LTO.
26906 2018-03-23 Jakub Jelinek <jakub@redhat.com>
26908 PR inline-asm/85034
26909 * function.c (match_asm_constraints_1): Don't optimize if input
26910 doesn't satisfy general_operand predicate for output's mode.
26912 PR inline-asm/85022
26913 * alias.c (write_dependence_p): Don't require for x_canonicalized
26914 non-VOIDmode if x has VOIDmode.
26917 * sanopt.c (maybe_optimize_ubsan_ptr_ifn): If DECL_REGISTER (base),
26918 just don't try to optimize it rather than assert it never happens.
26920 2018-03-22 Kelvin Nilsen <kelvin@gcc.gnu.org>
26922 * config/rs6000/rs6000-builtin.def: Remove various BU_ALTIVEC_X
26923 macro expansions for definition of ST_INTERNAL_<mode> and
26924 LD_INTERNAL_<mode> builtins.
26925 * config/rs6000/rs6000-protos.h (rs6000_address_for_altivec):
26927 * config/rs6000/rs6000.c (altivec_expand_ld_builtin): Delete this
26929 (altivec_expand_st_builtin): Likewise.
26930 (altivec_expand_builtin): Remove calls to deleted functions.
26931 (rs6000_address_for_altivec): Delete this function.
26932 * config/rs6000/vector.md: Remove expands for
26933 vector_altivec_load_<mode> and vector_altivec_store_<mode>.
26935 2018-03-22 Sudakshina Das <sudi.das@arm.com>
26938 * config/arm/arm.h (machine_function): Add static_chain_stack_bytes.
26939 * config/arm/arm.c (arm_compute_static_chain_stack_bytes): Avoid
26940 re-computing once computed.
26941 (arm_expand_prologue): Compute machine->static_chain_stack_bytes.
26942 (arm_init_machine_status): Initialize
26943 machine->static_chain_stack_bytes.
26945 2018-03-22 Kelvin Nilsen <kelvin@gcc.gnu.org>
26948 * doc/extend.texi: Add four new prototypes for vec_ld.
26949 * config/rs6000/rs6000-builtin.def (LVX_V1TI): Reorder symbol
26950 definitions for more logical presentation.
26951 * config/rs6000/rs6000-c.c: (altivec_overloaded_builtins): Add
26952 entries for V1TI variants of __builtin_altivec_ld builtin.
26953 * config/rs6000/rs6000.c: (altivec_expand_lv_builtin): Add test and
26954 handling of V1TI variant of LVX icode pattern.
26955 (altivec_expand_builtin): Add case for ALTIVEC_BUILTIN_LVX_V1TI.
26956 (rs6000_gimple_fold_builtin): Likewise.
26957 (altivec_init_builtins): Add code to define
26958 __builtin_altivec_lvx_v1ti function.
26960 2018-03-22 Jakub Jelinek <jakub@redhat.com>
26962 PR inline-asm/84941
26963 * function.c (match_asm_constraints_1): Don't do the optimization
26964 if input isn't a REG, SUBREG, MEM or constant.
26966 2018-03-22 Tom de Vries <tom@codesourcery.com>
26968 PR tree-optimization/84956
26969 * tree-ssa-tail-merge.c (find_clusters_1): Skip bbs with
26970 bb_has_abnormal_pred.
26972 2018-03-22 Jakub Jelinek <jakub@redhat.com>
26975 * dwarf2asm.c (dw2_output_indirect_constant_1): Set
26976 DECL_INITIAL (decl) to decl at the end.
26977 * varasm.c (use_blocks_for_decl_p): Revert the 2018-03-20 change,
26978 adjust the comment.
26980 2018-03-21 Joseph Myers <joseph@codesourcery.com>
26982 * doc/extend.texi (__builtin_tgmath): Document when complex
26983 integer types are treated as _Complex _Float64.
26985 2018-03-21 Tom de Vries <tom@codesourcery.com>
26987 * doc/extend.texi (__builtin_extend_pointer): Remove pasto.
26989 2018-03-21 Jakub Jelinek <jakub@redhat.com>
26991 PR tree-optimization/84960
26992 * tree-cfg.c (remove_bb): Don't move forced labels into bb->prev_bb
26993 if it is ENTRY block, move them into single succ of ENTRY in that case.
26995 2018-03-21 Richard Sandiford <richard.sandiford@linaro.org>
26997 PR tree-optimization/84811
26998 * poly-int.h (poly_span_traits): Remove the T3 parameter and
26999 promote HOST_WIDE_INT T2 - T1 results to unsigned HOST_WIDE_INT.
27000 (maybe_in_range_p, known_in_range_p, ranges_known_overlap_p):
27001 (known_subrange_p): Update accordingly. Cast each value involved
27002 in the size comparison, rather than casting the result of the
27005 2018-03-21 Jakub Jelinek <jakub@redhat.com>
27007 PR tree-optimization/84982
27008 * gimple-ssa-store-merging.c (invert_op): Handle boolean inversion
27009 by flipping the least significant bit rather than all bits from
27010 bitpos to bitpos + bitsize - 1.
27012 2018-03-21 Nathan Sidwell <nathan@acm.org>
27014 * doc/extend.texi (Deprecated Features): Remove mention of
27015 long-deleted deprecations.
27017 2018-03-21 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
27020 * configure.ac (gcc_cv_ld_soname) <*-*-solaris2*>: Set.
27021 * configure: Regenerate.
27023 2018-03-21 Tom de Vries <tom@codesourcery.com>
27025 PR tree-optimization/83126
27026 * tree-parloops.c (num_phis): New function.
27027 (gen_parallel_loop): Detect and handle canonicalize_loop_ivs failure.
27029 2018-03-21 Nathan Sidwell <nathan@acm.org>
27031 * doc/extend.texi (Deprecated Features): Update deprecated flags,
27032 mention anon-struct/union members and trailing attributes.
27034 2018-03-21 Bin Cheng <bin.cheng@arm.com>
27036 PR tree-optimization/84969
27037 * tree-loop-distribution.c (fuse_memset_builtins): Don't reorder
27038 builtin memset partitions if they set different rhs values.
27040 2018-03-21 Jakub Jelinek <jakub@redhat.com>
27042 PR rtl-optimization/84989
27043 * simplify-rtx.c (simplify_unary_operation_1): Don't try to simplify
27044 VEC_DUPLICATE with scalar result mode.
27046 2018-03-21 Martin Liska <mliska@suse.cz>
27049 * ipa-icf.c (sem_item_optimizer::fixup_points_to_sets): Remove
27050 not intended return statement.
27052 2018-03-21 Martin Liska <mliska@suse.cz>
27055 * tree-chkp.c (CHKP_ARRAY_MAX_CHECK_STEPS): Define a new macro.
27056 (chkp_find_bound_slots_1): Limit number of iterations.
27058 2018-03-20 David H. Gutteridge <dhgutteridge@sympatico.ca>
27061 * Minor grammar fixes for x86 options.
27063 2018-03-20 Jakub Jelinek <jakub@redhat.com>
27066 * dce.c (delete_unmarked_insns): Don't remove frame related noop moves
27067 holding REG_CFA_RESTORE notes, instead turn them into a USE.
27069 2018-03-20 Peter Bergner <bergner@vnet.ibm.com>
27072 * config/rs6000/altivec.md (altivec_lvx_<mode>_2op): Delete define_insn.
27073 (altivec_lvx_<mode>_1op): Likewise.
27074 (altivec_stvx_<mode>_2op): Likewise.
27075 (altivec_stvx_<mode>_1op): Likewise.
27076 (altivec_lvx_<VM2:mode>): New define_expand.
27077 (altivec_stvx_<VM2:mode>): Likewise.
27078 (altivec_lvx_<VM2:mode>_2op_<P:mptrsize>): New define_insn.
27079 (altivec_lvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
27080 (altivec_stvx_<VM2:mode>_2op_<P:mptrsize>): Likewise.
27081 (altivec_stvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
27082 * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Use new expanders.
27083 (rs6000_gen_lvx): Likewise.
27084 * config/rs6000/rs6000.c (altivec_expand_lv_builtin): Likewise.
27085 (altivec_expand_stv_builtin): Likewise.
27086 (altivec_expand_builtin): Likewise.
27087 * config/rs6000/vector.md: Likewise.
27089 2018-03-20 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
27092 * config/arm/arm.c (arm_array_mode_supported_p): Return false for
27095 2018-03-20 Richard Biener <rguenther@suse.de>
27098 * config/i386/i386.c (ix86_add_stmt_cost): Only cost
27099 sign-conversions as zero, fall back to standard scalar_stmt
27102 2018-03-20 Martin Liska <mliska@suse.cz>
27105 * predict.c (rebuild_frequencies): Handle case when we have
27106 PROFILE_ABSENT, but flag_guess_branch_prob is false.
27108 2018-03-20 Jakub Jelinek <jakub@redhat.com>
27111 * dwarf2asm.c (dw2_output_indirect_constant_1): Temporarily turn off
27112 flag_section_anchors.
27113 * varasm.c (use_blocks_for_decl_p): Remove hack for
27114 dw2_force_const_mem.
27117 * config/aarch64/aarch64.md (*aarch64_reg_<mode>3_neg_mask2): Rename
27119 (*aarch64_<optab>_reg_<mode>3_neg_mask2): ... this. If pseudos can't
27120 be created, use lowpart_subreg of operands[0] rather than operands[0]
27122 (*aarch64_reg_<mode>3_minus_mask): Rename to ...
27123 (*aarch64_ashl_reg_<mode>3_minus_mask): ... this.
27124 (*aarch64_<optab>_reg_di3_mask2): Use const_int_operand predicate
27125 and n constraint instead of aarch64_shift_imm_di and Usd.
27126 (*aarch64_reg_<optab>_minus<mode>3): Rename to ...
27127 (*aarch64_<optab>_reg_minus<mode>3): ... this.
27129 2018-03-20 Sudakshina Das <sudi.das@arm.com>
27132 * config/arm/neon.md (ashldi3_neon): Update ?s for constraints
27133 to favor GPR over NEON registers.
27134 (<shift>di3_neon): Likewise.
27136 2018-03-20 Tom de Vries <tom@codesourcery.com>
27139 * config/nvptx/nvptx.c (nvptx_single): Don't neuter bar.sync.
27140 (nvptx_process_pars): Emit bar.sync asap and alap.
27142 2018-03-20 Tom de Vries <tom@codesourcery.com>
27145 * config/nvptx/nvptx.c (prevent_branch_around_nothing): Also update
27146 seen_label if seen_label is already set.
27148 2018-03-20 Jakub Jelinek <jakub@redhat.com>
27151 * config/i386/i386.c (fold_builtin_cpu): For features above 31
27152 use __cpu_features2 variable instead of __cpu_model.__cpu_features[0].
27153 Use 1U instead of 1. Formatting fixes.
27156 * builtins.c (fold_builtin_strpbrk): For strpbrk(x, "") use type
27157 instead of TREE_TYPE (s1) for the return value.
27159 2018-03-19 Jakub Jelinek <jakub@redhat.com>
27161 PR tree-optimization/84946
27162 * gimple-ssa-store-merging.c (mem_valid_for_store_merging): Compute
27163 bitsize + bitsize in poly_uint64 rather than poly_int64.
27166 * dwarf2asm.c: Include fold-const.c.
27167 (dw2_output_indirect_constant_1): Set DECL_INITIAL (decl) to ADDR_EXPR
27168 of decl rather than decl itself.
27170 PR rtl-optimization/84643
27171 * memmodel.h (enum memmodel): Add MEMMODEL_MAX enumerator.
27173 2018-03-19 Maxim Ostapenko <m.ostapenko@samsung.com>
27176 * dwarf2asm.c (dw2_output_indirect_constant_1): Disable ASan before
27177 calling assemble_variable.
27179 2018-03-19 Sudakshina Das <sudi.das@arm.com>
27182 * config/aarch64/aarch64-simd.md (vec_cmp<mode><v_int_equiv>): Modify
27183 instructions for UNLT, UNLE, UNGT, UNGE, UNEQ, UNORDERED and ORDERED.
27185 2018-03-19 Jim Wilson <jimw@sifive.com>
27188 * config/riscv/riscv.c (riscv_function_arg_boundary): Use
27189 PREFERRED_STACK_BOUNDARY instead of STACK_BOUNDARY.
27190 (riscv_first_stack_step): Likewise.
27191 (riscv_option_override): Use STACK_BOUNDARY instead of
27192 MIN_STACK_BOUNDARY.
27193 * config/riscv/riscv.h (STACK_BOUNDARY): Renamed from
27194 MIN_STACK_BOUNDARY.
27195 (BIGGEST_ALIGNMENT): Set to 128.
27196 (PREFERRED_STACK_BOUNDARY): Renamed from STACK_BOUNDARY.
27197 (RISCV_STACK_ALIGN): Use PREFERRED_STACK_BOUNDARY instead of
27200 2018-03-19 Richard Biener <rguenther@suse.de>
27202 PR tree-optimization/84933
27203 * tree-vrp.c (set_and_canonicalize_value_range): Treat out-of-bound
27204 values as -INF/INF when canonicalizing an ANTI_RANGE to a RANGE.
27206 2018-03-19 Richard Biener <rguenther@suse.de>
27208 PR tree-optimization/84859
27209 * tree-ssa-phiopt.c (single_trailing_store_in_bb): New function.
27210 (cond_if_else_store_replacement): Perform sinking operation on
27211 single-store BBs regardless of MAX_STORES_TO_SINK setting.
27212 Generalize what a BB with a single eligible store is.
27214 2018-03-19 Richard Biener <rguenther@suse.de>
27216 PR tree-optimization/84929
27217 * tree-data-ref.c (analyze_siv_subscript_cst_affine): Guard
27218 chrec_is_positive against non-chrec arg.
27220 2018-03-19 Tamar Christina <tamar.christina@arm.com>
27223 * config/arm/arm.c (arm_can_change_mode_class): revert r258554.
27225 2018-03-18 Martin Liska <mliska@suse.cz>
27227 PR rtl-optimization/84635
27228 * regrename.c (build_def_use): Use matches_mode only when
27231 2018-03-18 Richard Sandiford <richard.sandiford@linaro.org>
27233 PR tree-optimization/84913
27234 * tree-vect-loop.c (vectorizable_reduction): Don't try to
27235 vectorize chains of COND_EXPRs.
27237 2018-03-18 Chung-Ju Wu <jasonwucj@gmail.com>
27239 * config/nds32/nds32.h (MAX_REGS_PER_ADDRESS): Fix the value.
27241 2018-03-18 Chung-Ju Wu <jasonwucj@gmail.com>
27243 * config/nds32/nds32.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Define.
27245 2018-03-18 Chung-Ju Wu <jasonwucj@gmail.com>
27247 * config/nds32/nds32.h (CLZ_DEFINED_VALUE_AT_ZERO): Define.
27249 2018-03-17 Chung-Ju Wu <jasonwucj@gmail.com>
27250 Kito Cheng <kito.cheng@gmail.com>
27252 * config/nds32/nds32-protos.h (nds32_adjust_reg_alloc_order): Declare.
27253 * config/nds32/nds32.c (nds32_reg_alloc_order_for_speed): New array.
27254 (nds32_adjust_reg_alloc_order): New function.
27255 * config/nds32/nds32.h (ADJUST_REG_ALLOC_ORDER): Define.
27257 2018-03-17 Kito Cheng <kito.cheng@gmail.com>
27259 * config/nds32/nds32.c (nds32_asm_output_mi_thunk,
27260 nds32_print_operand, nds32_print_operand_address): Use
27261 HOST_WIDE_INT_PRINT_DEC instead.
27263 2018-03-17 Chung-Ju Wu <jasonwucj@gmail.com>
27265 * config/nds32/nds32.c (nds32_register_priority): Modify cost.
27267 2018-03-17 Jakub Jelinek <jakub@redhat.com>
27270 * config/i386/i386.c (initial_ix86_tune_features,
27271 initial_ix86_arch_features): Use unsigned HOST_WIDE_INT rather than
27272 unsigned long long.
27273 (set_ix86_tune_features): Change ix86_tune_mask from unsigned int
27274 to unsigned HOST_WIDE_INT, initialize to HOST_WIDE_INT_1U << ix86_tune
27275 rather than 1u << ix86_tune. Formatting fix.
27276 (ix86_option_override_internal): Change ix86_arch_mask from
27277 unsigned int to unsigned HOST_WIDE_INT, initialize to
27278 HOST_WIDE_INT_1U << ix86_arch rather than 1u << ix86_arch.
27279 (ix86_function_specific_restore): Likewise.
27281 2018-03-16 Jakub Jelinek <jakub@redhat.com>
27284 * postreload.c (reload_combine_recognize_pattern): Perform
27285 INTVAL addition in unsigned HOST_WIDE_INT type to avoid UB and
27286 truncate_int_for_mode the result for the destination's mode.
27289 * hsa-gen.c (mem_type_for_type): Fix comment typo.
27290 * tree-vect-loop-manip.c (vect_create_cond_for_niters_checks):
27292 * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
27295 2018-03-16 Vladimir Makarov <vmakarov@redhat.com>
27298 * lra-assigns.c (lra_split_hard_reg_for): Don't use
27299 regno_allocno_class_array and sorted_pseudos.
27300 * lra-constraints.c (spill_hard_reg_in_range): Ignore hard regs in
27301 insns where regno is used.
27303 2018-03-16 Martin Liska <mliska@suse.cz>
27306 * multiple_target.c (create_dispatcher_calls): Redirect
27307 reference in the symbol table.
27309 2018-03-16 Martin Liska <mliska@suse.cz>
27312 * multiple_target.c (create_dispatcher_calls): Redirect also
27315 2018-03-16 Jakub Jelinek <jakub@redhat.com>
27319 * tree.h (TARGET_EXPR_NO_ELIDE): Define.
27320 * gimplify.c (gimplify_modify_expr_rhs): Don't elide TARGET_EXPRs with
27321 TARGET_EXPR_NO_ELIDE flag set unless *expr_p is INIT_EXPR.
27323 2018-03-16 Julia Koval <julia.koval@intel.com>
27325 * doc/invoke.texi (Skylake Server): Add CLWB.
27326 Cannonlake): Remove CLWB.
27328 2018-03-16 Jakub Jelinek <jakub@redhat.com>
27330 PR tree-optimization/84841
27331 * tree-ssa-reassoc.c (INTEGER_CONST_TYPE): Change to 1 << 4 from
27333 (FLOAT_ONE_CONST_TYPE): Define.
27334 (constant_type): Return FLOAT_ONE_CONST_TYPE for -1.0 and 1.0.
27335 (sort_by_operand_rank): Put entries with higher constant_type last
27336 rather than first to match comments.
27338 2018-03-15 Sandra Loosemore <sandra@codesourcery.com>
27340 * config/nios2/nios2.md (movsi_internal): Fix thinko in
27343 2018-03-15 Jakub Jelinek <jakub@redhat.com>
27346 * calls.c (expand_call): For TREE_ADDRESSABLE rettype ignore alignment
27347 check and use address of target always.
27349 2018-03-15 H.J. Lu <hongjiu.lu@intel.com>
27352 * config/i386/i386.c (indirect_thunk_needed): Update comments.
27353 (indirect_thunk_bnd_needed): Likewise.
27354 (indirect_thunks_used): Likewise.
27355 (indirect_thunks_bnd_used): Likewise.
27356 (indirect_return_needed): New.
27357 (indirect_return_bnd_needed): Likewise.
27358 (output_indirect_thunk_function): Add a bool argument for
27360 (output_indirect_thunk_function): Don't generate alias for
27361 function return thunk.
27362 (ix86_code_end): Call output_indirect_thunk_function to generate
27363 function return thunks.
27364 (ix86_output_function_return): Set indirect_return_bnd_needed
27365 and indirect_return_needed instead of indirect_thunk_bnd_needed
27366 and indirect_thunk_needed.
27368 2018-03-15 Olga Makhotina <olga.makhotina@intel.com>
27370 * config/i386/sgxintrin.h (_enclv_u32): New intrinsic.
27371 (__enclv_bc, __enclv_cd, __enclv_generic): New definitions.
27372 (ERDINFO, ETRACKC, ELDBC, ELDUC): New leaves.
27374 2018-03-15 David Malcolm <dmalcolm@redhat.com>
27375 Paul Hua <paul.hua.gm@gmail.com>
27378 * gcc.dg/fixits-pr84852-1.c: Fix filename in dg-regexp.
27380 2018-03-15 Segher Boessenkool <segher@kernel.crashing.org>
27382 * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add back the
27383 TARGET_DOUBLE_FLOAT and TARGET_SINGLE_FLOAT conditions on the DFmode
27384 resp. SFmode cases.
27386 2018-03-15 Tamar Christina <tamar.christina@arm.com>
27389 * config/arm/arm.c (arm_can_change_mode_class): Use GET_MODE_UNIT_SIZE
27390 instead of GET_MODE_SIZE when comparing Units.
27392 2018-03-15 Vladimir Mezentsev <vladimir.mezentsev@oracle.com>
27395 * varasm.c (hash_section): Return an unchangeble hash value
27396 * config/aarch64/aarch64.c (aarch64_use_blocks_for_constant_p):
27397 Return !aarch64_can_use_per_function_literal_pools_p ().
27399 2018-03-15 Jakub Jelinek <jakub@redhat.com>
27402 * optabs.c (emit_conditional_move): Pass address of cmode's copy
27403 rather than address of cmode as last argument to prepare_cmp_insn.
27405 2018-03-15 Julia Koval <julia.koval@intel.com>
27407 * config/i386/i386.c (F_AVX512VBMI2, F_GFNI, F_VPCLMULQDQ,
27408 F_AVX512VNNI, F_AVX512BITALG): New.
27410 2018-03-14 John David Anglin <danglin@gcc.gnu.org>
27413 * config/pa/pa.c (pa_emit_move_sequence): Always emit secondary reload
27414 insn for floating-point loads and stores.
27416 2018-03-14 Carl Love <cel@us.ibm.com>
27418 * config/rs6000/rs6000-c.c: Add macro definitions for
27419 ALTIVEC_BUILTIN_VEC_PERMXOR.
27420 * config/rs6000/rs6000.h: Add #define for vec_permxor builtin.
27421 * config/rs6000/rs6000-builtin.def: Add macro expansions for VPERMXOR.
27422 * config/rs6000/altivec.md (altivec_vpermxor): New define expand.
27423 * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Add case
27425 * config/doc/extend.texi: Add prototypes for vec_permxor.
27427 2018-03-14 David Malcolm <dmalcolm@redhat.com>
27430 * diagnostic-show-locus.c (class layout_point): Convert m_line
27431 from int to linenum_type.
27432 (line_span::comparator): Use linenum "compare" function when
27433 comparing line numbers.
27434 (test_line_span): New function.
27435 (layout_range::contains_point): Convert param "row" from int to
27437 (layout_range::intersects_line_p): Likewise.
27438 (layout::will_show_line_p): Likewise.
27439 (layout::print_source_line): Likewise.
27440 (layout::should_print_annotation_line_p): Likewise.
27441 (layout::print_annotation_line): Likewise.
27442 (layout::print_leading_fixits): Likewise.
27443 (layout::annotation_line_showed_range_p): Likewise.
27444 (struct line_corrections): Likewise for field m_row.
27445 (line_corrections::line_corrections): Likewise for param "row".
27446 (layout::print_trailing_fixits): Likewise.
27447 (layout::get_state_at_point): Likewise.
27448 (layout::get_x_bound_for_row): Likewise.
27449 (layout::print_line): Likewise.
27450 (diagnostic_show_locus): Likewise for locals "last_line" and "row".
27451 (selftest::diagnostic_show_locus_c_tests): Call test_line_span.
27452 * input.c (selftest::test_linenum_comparisons): New function.
27453 (selftest::input_c_tests): Call it.
27454 * selftest.c (selftest::test_assertions): Test ASSERT_GT,
27455 ASSERT_GT_AT, ASSERT_LT, and ASSERT_LT_AT.
27456 * selftest.h (ASSERT_GT): New macro.
27457 (ASSERT_GT_AT): New macro.
27458 (ASSERT_LT): New macro.
27459 (ASSERT_LT_AT): New macro.
27461 2018-03-14 Segher Boessenkool <segher@kernel.crashing.org>
27463 PR rtl-optimization/84780
27464 * combine.c (distribute_links): Don't make a link based on pc_rtx.
27466 2018-03-14 Martin Liska <mliska@suse.cz>
27468 * tree.c (record_node_allocation_statistics): Use
27469 get_stats_node_kind.
27470 (get_stats_node_kind): New function extracted from
27471 record_node_allocation_statistics.
27472 (free_node): Use get_stats_node_kind.
27474 2018-03-14 Richard Biener <rguenther@suse.de>
27476 * tree-ssa-pre.c (compute_antic_aux): Remove code that asserts
27477 that the value-set of ANTIC_IN doesn't grow.
27480 * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
27482 (BB_VISITED_WITH_VISITED_SUCCS): New define.
27483 (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
27485 2018-03-14 Julia Koval <julia.koval@intel.com>
27487 * config.gcc (icelake-client, icelake-server): New.
27489 * config/i386/i386.c (initial_ix86_tune_features): Extend to 64 bit.
27490 (initial_ix86_arch_features): Ditto.
27491 (PTA_SKYLAKE): Add SGX.
27492 (PTA_ICELAKE): Remove.
27493 (PTA_ICELAKE_CLIENT): New.
27494 (PTA_ICELAKE_SERVER): New.
27495 (ix86_option_override_internal): Split up icelake on icelake client and
27497 (get_builtin_code_for_version): Ditto.
27498 (fold_builtin_cpu): Ditto.
27499 * config/i386/driver-i386.c (config/i386/driver-i386.c): Ditto.
27500 * config/i386/i386-c.c (ix86_target_macros_internal): Ditto
27501 * config/i386/i386.h (processor_type): Ditto.
27502 * doc/invoke.texi: Ditto.
27504 2018-03-14 Jakub Jelinek <jakub@redhat.com>
27507 * sanopt.c (maybe_optimize_ubsan_ptr_ifn): Handle also
27508 INTEGER_CST offset, add it together with bitpos / 8 and
27509 sign extend based on POINTER_SIZE.
27513 2017-04-20 Uros Bizjak <ubizjak@gmail.com>
27516 * config/i386/constraints.md (Yc): New register constraint.
27517 * config/i386/i386.md (*float<SWI48:mode><MODEF:mode>2_mixed):
27518 Use Yc constraint for alternative 2 of operand 0. Remove
27519 preferred_for_speed attribute.
27521 2018-03-14 Richard Biener <rguenther@suse.de>
27523 PR tree-optimization/84830
27524 * tree-ssa-pre.c (compute_antic_aux): Intersect the new ANTIC_IN
27525 with the old one to avoid oscillations.
27527 2018-03-13 Vladimir Makarov <vmakarov@redhat.com>
27530 * lra-assigns.c (find_all_spills_for): Ignore uninteresting
27532 (assign_by_spills): Return a flag of reload assignment failure.
27533 Do not process the reload assignment failures. Do not spill other
27534 reload pseudos if they has the same reg class. Update n if
27536 (lra_assign): Add a return arg. Set up from the result of
27537 assign_by_spills call.
27538 (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
27539 * lra-constraints.c (split_reg): Add a new arg. Use it instead of
27540 usage_insns if it is not NULL.
27541 (spill_hard_reg_in_range): New function.
27542 (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
27543 * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
27544 function prototypes.
27545 (lra_assign): Change prototype.
27546 * lra.c (lra): Add code to deal with fails by splitting hard reg
27549 2018-03-01 Palmer Dabbelt <palmer@sifive.com>
27551 * config/riscv/riscv.opt (mrelax): New option.
27552 * config/riscv/riscv.c (riscv_file_start): Emit ".option
27553 "norelax" when riscv_mrelax is disabled.
27554 * doc/invoke.texi (RISC-V): Document "-mrelax" and "-mno-relax".
27556 2018-03-13 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
27559 * config/rs6000/rs6000.c (rs6000_reassociation_width): Disable parallel
27560 reassociation for int modes.
27562 2018-03-13 Richard Sandiford <richard.sandiford@linaro.org>
27564 * tree-vect-loop-manip.c (vect_maybe_permute_loop_masks):
27565 Reverse the choice between VEC_UNPACK_LO_EXPR and VEC_UNPACK_HI_EXPR
27567 * config/aarch64/iterators.md (hi_lanes_optab): New int attribute.
27568 * config/aarch64/aarch64-sve.md
27569 (*aarch64_sve_<perm_insn><perm_hilo><mode>): Rename to...
27570 (aarch64_sve_<perm_insn><perm_hilo><mode>): ...this.
27571 (*extend<mode><Vwide>2): Rename to...
27572 (aarch64_sve_extend<mode><Vwide>2): ...this.
27573 (vec_unpack<su>_<perm_hilo>_<mode>): Turn into a define_expand,
27574 renaming the old pattern to...
27575 (aarch64_sve_punpk<perm_hilo>_<mode>): ...this. Only define
27577 (vec_unpack<su>_<perm_hilo>_<SVE_BHSI:mode>): Turn into a
27578 define_expand, renaming the old pattern to...
27579 (aarch64_sve_<su>unpk<perm_hilo>_<SVE_BHSI:mode>): ...this.
27580 (*vec_unpacku_<perm_hilo>_<mode>_no_convert): Delete.
27581 (vec_unpacks_<perm_hilo>_<mode>): Take BYTES_BIG_ENDIAN into
27582 account when deciding which SVE instruction the optab should use.
27583 (vec_unpack<su_optab>_float_<perm_hilo>_vnx4si): Likewise.
27585 2018-03-13 Richard Sandiford <richard.sandiford@linaro.org>
27587 * config/aarch64/aarch64.md (V4_REGNUM, V8_REGNUM, V12_REGNUM)
27588 (V20_REGNUM, V24_REGNUM, V28_REGNUM, P1_REGNUM, P2_REGNUM, P3_REGNUM)
27589 (P4_REGNUM, P5_REGNUM, P6_REGNUM, P8_REGNUM, P9_REGNUM, P10_REGNUM)
27590 (P11_REGNUM, P12_REGNUM, P13_REGNUM, P14_REGNUM): New define_constants.
27591 (tlsdesc_small_<mode>): Turn a define_expand and use
27592 tlsdesc_small_sve_<mode> for SVE. Rename original define_insn to...
27593 (tlsdesc_small_advsimd_<mode>): ...this.
27594 (tlsdesc_small_sve_<mode>): New pattern.
27596 2018-03-13 Richard Sandiford <richard.sandiford@linaro.org>
27598 * config/aarch64/iterators.md (UNSPEC_SMUL_HIGHPART)
27599 (UNSPEC_UMUL_HIGHPART): New constants.
27600 (MUL_HIGHPART): New int iteraor.
27601 (su): Handle UNSPEC_SMUL_HIGHPART and UNSPEC_UMUL_HIGHPART.
27602 * config/aarch64/aarch64-sve.md (<su>mul<mode>3_highpart): New
27604 (*<su>mul<mode>3_highpart): New define_insn.
27606 2018-03-13 Eric Botcazou <ebotcazou@adacore.com>
27609 * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
27612 2018-03-13 Martin Liska <mliska@suse.cz>
27615 * (sem_item_optimizer::sem_item_optimizer): Initialize new
27617 (sem_item_optimizer::~sem_item_optimizer): Release it.
27618 (sem_item_optimizer::merge_classes): Register variable aliases.
27619 (sem_item_optimizer::fixup_pt_set): New function.
27620 (sem_item_optimizer::fixup_points_to_sets): Likewise.
27621 * ipa-icf.h: Declare new variables and functions.
27623 2018-03-13 Jakub Jelinek <jakub@redhat.com>
27625 PR middle-end/84834
27626 * match.pd ((A & C) != 0 ? D : 0): Use INTEGER_CST@2 instead of
27627 integer_pow2p@2 and test integer_pow2p in condition.
27628 (A < 0 ? C : 0): Similarly for @1.
27630 PR middle-end/84831
27631 * stmt.c (parse_output_constraint): If the CONSTRAINT_LEN (*p, p)
27632 characters starting at p contain '\0' character, don't look beyond
27636 * config/i386/i386.md (round<mode>2): For 387 fancy math, disable
27637 pattern if -ftrapping-math -fno-fp-int-builtin-inexact.
27640 * reg-stack.c (change_stack): Change update_end var from int to
27641 rtx_insn *, if non-NULL don't update just BB_END (current_block), but
27642 also call set_block_for_insn on the newly added insns and rescan.
27645 * config/i386/sse.md (sse2_loadhpd): Use Yv constraint rather than v
27646 on the last operand.
27649 * tree.c (stabilize_reference_1): Return save_expr (e) for
27650 STATEMENT_LIST even if it doesn't have side-effects.
27652 2018-03-12 Jonathan Wakely <jwakely@redhat.com>
27654 * doc/invoke.texi (-mclflushopt): Fix spelling of option.
27656 2018-03-12 Renlin Li <renlin.li@arm.com>
27658 * config/aarch64/aarch64.md (movhf_aarch64): Fix mode argument to
27659 aarch64_output_scalar_simd_mov_immediate.
27661 2018-03-12 Martin Sebor <msebor@redhat.com>
27663 PR tree-optimization/83456
27664 * gimple-fold.c (gimple_fold_builtin_memory_op): Avoid warning
27665 for perfectly overlapping calls to memcpy.
27666 (gimple_fold_builtin_memory_chk): Same.
27667 (gimple_fold_builtin_strcpy): Handle no-warning.
27668 (gimple_fold_builtin_stxcpy_chk): Same.
27669 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Handle no-warning.
27671 2018-03-12 Segher Boessenkool <segher@kernel.crashing.org>
27673 * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add bool "named"
27674 parameter. Use it for SFmode.
27675 (rs6000_function_arg_advance_1): Adjust.
27676 (rs6000_function_arg): Adjust.
27677 (rs6000_gimplify_va_arg): Pass false for that new parameter.
27679 2018-03-12 Segher Boessenkool <segher@kernel.crashing.org>
27681 PR rtl-optimization/84169
27682 PR rtl-optimization/84780
27683 * combine.c (can_combine_p): Check for a 2-insn combination whether
27684 the destination register is used between the two insns, too.
27686 2018-03-12 Richard Biener <rguenther@suse.de>
27688 PR tree-optimization/84803
27689 * tree-if-conv.c (ifcvt_memrefs_wont_trap): Don't do anything
27690 for refs DR analysis didn't process.
27692 2018-03-12 Richard Biener <rguenther@suse.de>
27694 PR tree-optimization/84777
27695 * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): For
27696 force-vectorize loops ignore whether we are optimizing for size.
27698 2018-03-12 Chung-Ju Wu <jasonwucj@gmail.com>
27700 * config/nds32/nds32.c (nds32_md_asm_adjust): New function.
27701 (TARGET_MD_ASM_ADJUST): Define.
27703 2018-03-12 Monk Chiang <sh.chiang04@gmail.com>
27704 Kito Cheng <kito.cheng@gmail.com>
27705 Chung-Ju Wu <jasonwucj@gmail.com>
27707 * config/nds32/nds32.c (nds32_compute_stack_frame,
27708 nds32_emit_stack_push_multiple, nds32_emit_stack_pop_multiple,
27709 nds32_emit_stack_v3push, nds32_emit_stack_v3pop,
27710 nds32_emit_adjust_frame, nds32_expand_prologue, nds32_expand_epilogue,
27711 nds32_expand_prologue_v3push, nds32_expand_epilogue_v3pop): Refine.
27712 * config/nds32/nds32.h (NDS32_FIRST_CALLEE_SAVE_GPR_REGNUM,
27713 NDS32_LAST_CALLEE_SAVE_GPR_REGNUM, NDS32_V3PUSH_AVAILABLE_P): New.
27714 * config/nds32/nds32.md (prologue, epilogue): Use macro
27715 NDS32_V3PUSH_AVAILABLE_P to do checking.
27717 2018-03-11 Jakub Jelinek <jakub@redhat.com>
27720 * dwarf2out.c (gen_enumeration_type_die): Don't guard adding
27721 DW_AT_declaration for ENUM_IS_OPAQUE on -gdwarf-4 or -gno-strict-dwarf,
27722 but on TYPE_SIZE. Don't do anything for ENUM_IS_OPAQUE if not creating
27723 a new die. Don't set TREE_ASM_WRITTEN if ENUM_IS_OPAQUE. Guard
27724 addition of most attributes on !orig_type_die or the attribute not
27725 being present already. Assert TYPE_VALUES is NULL for ENUM_IS_OPAQUE.
27727 2018-03-11 Kito Cheng <kito.cheng@gmail.com>
27728 Chung-Ju Wu <jasonwucj@gmail.com>
27730 * config/nds32/nds32.c (nds32_cpu_cpp_builtins): Modify to define
27731 __NDS32_VH__ macro.
27732 * config/nds32/nds32.opt (mvh): New option.
27734 2018-03-11 Kito Cheng <kito.cheng@gmail.com>
27735 Chung-Ju Wu <jasonwucj@gmail.com>
27737 * config/nds32/nds32-protos.h (nds32_cpu_cpp_builtins): Declare
27739 * config/nds32/nds32.c (nds32_cpu_cpp_builtins): New function.
27740 * config/nds32/nds32.h (TARGET_CPU_CPP_BUILTINS): Modify its
27743 2018-03-11 Kito Cheng <kito.cheng@gmail.com>
27744 Chung-Ju Wu <jasonwucj@gmail.com>
27746 * config/nds32/nds32-memory-manipulation.c (nds32_expand_strlen): New
27748 * config/nds32/nds32-multiple.md (strlensi): New pattern.
27749 * config/nds32/nds32-protos.h (nds32_expand_strlen): Declare function.
27751 2018-03-11 Monk Chiang <sh.chiang04@gmail.com>
27752 Kito Cheng <kito.cheng@gmail.com>
27753 Chung-Ju Wu <jasonwucj@gmail.com>
27755 * config/nds32/constants.md (unspec_element): Add UNSPEC_FFB,
27756 UNSPEC_FFMISM and UNSPEC_FLMISM.
27757 * config/nds32/nds32-intrinsic.c (bdesc_2arg): Add builtin description
27758 for ffb, ffmism and flmism.
27759 * config/nds32/nds32-intrinsic.md (unspec_ffb): Define new pattern.
27760 (unspec_ffmism): Ditto.
27761 (unspec_flmism): Ditto.
27762 (nds32_expand_builtin_impl): Check if string extension is available.
27763 * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FFB,
27764 NDS32_BUILTIN_FFMISM and NDS32_BUILTIN_FLMISM.
27766 2018-03-10 Vladimir Makarov <vmakarov@redhat.com>
27769 2018-03-09 Vladimir Makarov <vmakarov@redhat.com>
27772 * lra-assigns.c (assign_by_spills): Return a flag of reload
27773 assignment failure. Do not process the reload assignment
27774 failures. Do not spill other reload pseudos if they has the same
27776 (lra_assign): Add a return arg. Set up from the result of
27777 assign_by_spills call.
27778 (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
27779 * lra-constraints.c (split_reg): Add a new arg. Use it instead of
27780 usage_insns if it is not NULL.
27781 (spill_hard_reg_in_range): New function.
27782 (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
27783 * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
27784 function prototypes.
27785 (lra_assign): Change prototype.
27786 * lra.c (lra): Add code to deal with fails by splitting hard reg
27789 2018-03-10 H.J. Lu <hongjiu.lu@intel.com>
27792 * config/i386/i386.opt: Replace Enforcment with Enforcement.
27794 2018-03-10 Alexandre Oliva <aoliva@redhat.com>
27797 * dwarf2out.h (dw_val_class): Add dw_val_class_symview.
27798 (dw_val_node): Add val_symbolic_view.
27799 * dwarf2out.c (dw_line_info_table): Add symviews_since_reset.
27800 (symview_upper_bound): New.
27801 (new_line_info_table): Initialize symviews_since_reset.
27802 (dwarf2out_source_line): Count symviews_since_reset and set
27803 symview_upper_bound.
27804 (dw_val_equal_p): Handle symview.
27805 (add_AT_symview): New.
27806 (print_dw_val): Handle symview.
27807 (attr_checksum, attr_checksum_ordered): Likewise.
27808 (same_dw_val_p, size_of_die): Likewise.
27809 (value_format, output_die): Likewise.
27810 (add_high_low_attributes): Use add_AT_symview for entry_view.
27811 (dwarf2out_finish): Reset symview_upper_bound, clear
27814 2018-03-09 Peter Bergner <bergner@vnet.ibm.com>
27817 * config/rs6000/rs6000.c (rs6000_offsettable_memref_p): New prototype.
27818 Add strict argument and use it.
27819 (rs6000_split_multireg_move): Update for new strict argument.
27820 (mem_operand_gpr): Disallow all non-offsettable addresses.
27821 * config/rs6000/rs6000.md (*movdi_internal64): Use YZ constraint.
27823 2018-03-09 Jakub Jelinek <jakub@redhat.com>
27826 * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Mark va_arg_tmp
27827 temporary TREE_ADDRESSABLE before gimplification of BUILT_IN_MEMCPY.
27828 * config/powerpcspe/powerpcspe.c (rs6000_gimplify_va_arg): Likewise.
27831 * tree-inline.c (copy_tree_body_r): For INDIRECT_REF of a remapped
27832 decl, use remap_type if we want to use the type.
27834 2018-03-09 Martin Sebor <msebor@redhat.com>
27836 PR tree-optimization/84526
27837 * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
27839 (builtin_access::generic_overlap): Be prepared to handle non-array
27842 2018-03-09 Alexandre Oliva <aoliva@redhat.com>
27844 PR rtl-optimization/84682
27845 * lra-constraints.c (process_address_1): Check is_address flag
27846 for address constraints.
27847 (process_alt_operands): Likewise.
27848 * lra.c (lra_set_insn_recog_data): Pass asm operand locs to
27849 preprocess_constraints.
27850 * recog.h (preprocess_constraints): Add oploc parameter.
27852 * recog.c (preprocess_constraints): Test address_operand for
27853 CT_ADDRESS constraints.
27855 2018-03-09 Vladimir Makarov <vmakarov@redhat.com>
27858 * lra-assigns.c (assign_by_spills): Return a flag of reload
27859 assignment failure. Do not process the reload assignment
27860 failures. Do not spill other reload pseudos if they has the same
27862 (lra_assign): Add a return arg. Set up from the result of
27863 assign_by_spills call.
27864 (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
27865 * lra-constraints.c (split_reg): Add a new arg. Use it instead of
27866 usage_insns if it is not NULL.
27867 (spill_hard_reg_in_range): New function.
27868 (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
27869 * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
27870 function prototypes.
27871 (lra_assign): Change prototype.
27872 * lra.c (lra): Add code to deal with fails by splitting hard reg
27875 2018-03-09 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
27878 * common/config/arm/arm-common.c (arm_parse_arch_option_name):
27879 Accept complain bool parameter. Only emit errors if it is true.
27880 (arm_parse_cpu_option_name): Likewise.
27881 (arm_target_thumb_only): Adjust callers of the above.
27882 * config/arm/arm-protos.h (arm_parse_cpu_option_name): Adjust
27883 prototype to take a default true bool parameter.
27884 (arm_parse_arch_option_name): Likewise.
27886 2018-03-09 David Malcolm <dmalcolm@redhat.com>
27887 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
27891 * Makefile.in (LD_VERSION_SCRIPT_OPTION, LD_SONAME_OPTION): New.
27892 * configure: Regenerate.
27893 * configure.ac ("linker --version-script option"): New.
27894 ("linker soname option"): New.
27896 2018-03-09 Richard Biener <rguenther@suse.de>
27898 PR tree-optimization/84775
27899 * tree-if-conv.c (add_bb_predicate_gimplified_stmts): Delink
27900 immediate uses of predicate stmts and mark them modified.
27903 PR tree-optimization/84178
27904 * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
27906 (version_loop_for_if_conversion): Delay update_ssa call.
27907 (tree_if_conversion): Delay update_ssa until after predicate
27910 2018-03-09 Eric Botcazou <ebotcazou@adacore.com>
27913 * config/i386/winnt.c (i386_pe_seh_cold_init): Use small pre-allocation
27914 when the function accesses prior frames.
27916 2018-03-08 Jakub Jelinek <jakub@redhat.com>
27919 * dwarf2out.c (dw_loc_list): If list && loc_list->first->next, call
27920 gen_llsym, otherwise call maybe_gen_llsym.
27922 PR inline-asm/84742
27923 * recog.c (asm_operand_ok): Return 0 if multi-character constraint
27924 has ',' character inside of it.
27926 2018-03-08 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
27929 * config/aarch64/aarch64.md (*compare_cstore<mode>_insn): Mark pattern
27930 as clobbering CC_REGNUM.
27932 2018-03-08 Richard Biener <rguenther@suse.de>
27934 PR middle-end/84552
27935 * tree-scalar-evolution.c: Include tree-into-ssa.h.
27936 (follow_copies_to_constant): Do not follow SSA names registered
27939 2018-03-08 Richard Biener <rguenther@suse.de>
27941 PR tree-optimization/84178
27942 * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
27944 (version_loop_for_if_conversion): Delay update_ssa call.
27945 (tree_if_conversion): Delay update_ssa until after predicate
27948 2018-03-08 David Malcolm <dmalcolm@redhat.com>
27950 PR tree-optimization/84178
27951 * tree-if-conv.c (release_bb_predicate): Remove the
27952 the assertion that the stmts have NULL use_ops.
27953 Discard the statements, asserting that they haven't
27954 yet been added to a BB.
27956 2018-03-08 Richard Biener <rguenther@suse.de>
27958 PR tree-optimization/84746
27959 * tree-ssa-pre.c (find_leader_in_sets): Deal with SET1 being NULL.
27960 (phi_translate): Pass in destination ANTIC_OUT set.
27961 (phi_translate_1): Likewise. For a simplified result lookup
27962 a leader in ANTIC_OUT and AVAIL_OUT, not the ANTIC_IN sets.
27963 (phi_translate_set): Adjust.
27964 (do_pre_regular_insertion): Likewise.
27965 (do_pre_partial_partial_insertion): Likewise.
27967 2018-03-08 Martin Liska <mliska@suse.cz>
27969 PR gcov-profile/84735
27970 * doc/gcov.texi: Document usage of profile files.
27971 * gcov-io.h: Document changes in the format.
27973 2018-03-08 Alexandre Oliva <aoliva@redhat.com>
27977 * dwarf2out.c (struct dw_line_info_table): Update comments for
27979 (FORCE_RESET_NEXT_VIEW): New.
27980 (FORCE_RESETTING_VIEW_P): New.
27981 (RESETTING_VIEW_P): Check for -1 too.
27982 (ZERO_VIEW_P): Likewise.
27983 (new_line_info_table): Force-reset next view.
27984 (dwarf2out_begin_function): Likewise.
27985 (dwarf2out_source_line): Simplify zero_view_p initialization.
27986 Test FORCE_RESETTING_VIEW_P and RESETTING_VIEW_P instead of
27987 view directly. Omit view when omitting .loc at line 0.
27989 2018-03-08 Jakub Jelinek <jakub@redhat.com>
27991 PR tree-optimization/84740
27992 * tree-switch-conversion.c (process_switch): Call build_constructors
27993 only if info.phi_count is non-zero.
27995 PR tree-optimization/84739
27996 * tree-tailcall.c (find_tail_calls): Check call arguments against
27997 DECL_ARGUMENTS (current_function_decl) rather than
27998 DECL_ARGUMENTS (func) when checking for tail recursion.
28000 2018-03-07 Jakub Jelinek <jakub@redhat.com>
28002 * doc/contrib.texi: Add entries for Martin Liska, David Malcolm,
28003 Marek Polacek, extend Vladimir Makarov's, Jonathan Wakely's and
28004 Volker Reichelt's entry and add entries for people that perform
28005 GCC fuzzy testing and report numerous bugs.
28007 2018-03-07 Segher Boessenkool <segher@kernel.crashing.org>
28010 * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Don't put
28011 readonly data in sdata, if that is disabled.
28012 * config/rs6000/sysv4.opt (mreadonly-in-sdata): New option.
28013 * doc/invoke.texi (RS/6000 and PowerPC Options): Document
28014 -mreadonly-in-sdata option.
28016 2018-03-07 Martin Sebor <msebor@redhat.com>
28018 PR tree-optimization/84468
28019 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Consider successor
28020 basic block when looking for nul assignment.
28022 2018-03-07 Eric Botcazou <ebotcazou@adacore.com>
28025 * except.h (output_function_exception_table): Adjust prototype.
28026 * except.c (output_function_exception_table): Remove FNNAME parameter
28027 and add SECTION parameter. Ouput one part of the table at a time.
28028 * final.c (final_scan_insn_1) <NOTE_INSN_SWITCH_TEXT_SECTIONS>: Output
28029 the first part of the exception table and emit unwind directives.
28030 * config/i386/i386-protos.h (i386_pe_end_cold_function): Declare.
28031 (i386_pe_seh_cold_init): Likewise.
28032 * config/i386/cygming.h (ASM_DECLARE_COLD_FUNCTION_NAME): New macro.
28033 (ASM_DECLARE_COLD_FUNCTION_SIZE): Likewise.
28034 * config/i386/i386.c (x86_expand_epilogue): Fix wording in comment.
28035 (ix86_output_call_insn): Emit a nop in one more case for SEH.
28036 * config/i386/winnt.c: Include except.h.
28037 (struct seh_frame_state): Add reg_offset, after_prologue and
28038 in_cold_section fields.
28039 (i386_pe_seh_end_prologue): Set seh->after_prologue.
28040 (i386_pe_seh_cold_init): New function.
28041 (i386_pe_seh_fini): Add COLD parameter and bail out if it is not equal
28042 to seh->in_cold_section.
28043 (seh_emit_push): Record the offset of the push.
28044 (seh_emit_save): Record the offet of the save.
28045 (i386_pe_seh_unwind_emit): Deal with NOTE_INSN_SWITCH_TEXT_SECTIONS.
28046 Test seh->after_prologue to disregard the epilogue.
28047 (i386_pe_end_function): Pass FALSE to i386_pe_seh_fini.
28048 (i386_pe_end_cold_function): New function.
28050 2018-03-07 Jakub Jelinek <jakub@redhat.com>
28053 * config/aarch64/predicates.md (aarch64_simd_reg_or_zero): Use
28054 aarch64_simd_or_scalar_imm_zero rather than aarch64_simd_imm_zero.
28057 * gimple-expr.c (create_tmp_var_raw): Set DECL_NAMELESS flag
28059 * tree-pretty-print.c (dump_decl_name): For TDF_COMPARE_DEBUG,
28060 don't print names of DECL_NAMELESS DECL_IGNORED_P decls.
28062 PR middle-end/84723
28063 * multiple_target.c: Include tree-inline.h and intl.h.
28064 (expand_target_clones): Diagnose and fail if node->definition and
28065 !tree_versionable_function_p (node->decl).
28067 2018-03-06 John David Anglin <danglin@gcc.gnu.org>
28069 * config/pa/pa.h (ASM_GENERATE_INTERNAL_LABEL): Revise to use
28071 (ASM_OUTPUT_ADDR_VEC_ELT): Revise for above change.
28072 (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
28073 * config/pa/pa64-hpux.h (ASM_GENERATE_INTERNAL_LABEL): Revise as above.
28075 2018-03-06 Jakub Jelinek <jakub@redhat.com>
28078 * combine.c (try_combine): Use reg_or_subregno instead of handling
28079 just paradoxical SUBREGs and REGs.
28081 2018-03-06 Claudiu Zissulescu <claziss@synopsys.com>
28083 * config/arc/arc.c (arc_finalize_pic): Remove function.
28084 (arc_must_save_register): We use single base PIC register, remove
28085 checks to save/restore the PIC register.
28086 (arc_expand_prologue): Likewise.
28087 * config/arc/arc-protos.h (arc_set_default_type_attributes):
28089 (arc_verify_short): Likewise.
28090 (arc_attr_type): Likewise.
28091 * config/arc/arc.c (arc_set_default_type_attributes): Remove.
28092 (walk_stores): Likewise.
28093 (arc_address_cost): Make it static.
28094 (arc_verify_short): Likewise.
28095 (branch_dest): Likewise.
28096 (arc_attr_type): Likewise.
28097 * config/arc/arc.c (TARGET_ADJUST_INSN_LENGTH): Remove.
28098 (TARGET_INSN_LENGTH_PARAMETERS): Likewise.
28099 (arc_final_prescan_insn): Remove inserting the nops due to
28100 hardware hazards. It is done in reorg step.
28101 (insn_length_variant_t): Remove.
28102 (insn_length_parameters_t): Likewise.
28103 (arc_insn_length_parameters): Likewise.
28104 (arc_get_insn_variants): Likewise.
28105 * config/arc/arc.h (TARGET_UPSIZE_DBR): Remove.
28107 2018-03-06 Jakub Jelinek <jakub@redhat.com>
28109 PR inline-asm/84683
28110 * reg-stack.c (move_for_stack_reg): If any_malformed_asm, avoid
28113 PR tree-optimization/84687
28114 * omp-simd-clone.c (simd_clone_create): Clear DECL_BUILT_IN_CLASS
28116 * match.pd (pow(C,x)*expN(y) -> expN(logN(C)*x+y)): New optimization.
28118 2018-03-05 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
28120 * config/rs6000/rs6000-builtin.def (rs6000_speculation_barrier):
28121 Rename to ppc_speculation_barrier.
28122 * config/rs6000/rs6000.c (rs6000_init_builtins): Rename builtin to
28123 __builtin_ppc_speculation_barrier.
28125 2018-03-05 Jakub Jelinek <jakub@redhat.com>
28128 * combine.c (combine_simplify_rtx): Don't try to simplify if
28129 if_then_else_cond returned non-NULL, but either true_rtx or false_rtx
28132 2018-03-05 Segher Boessenkool <segher@kernel.crashing.org>
28134 * config/rs6000/rs6000.c (rs6000_loop_align): Don't align tiny loops
28135 to 32 bytes when compiling for POWER9.
28137 2018-03-05 Jakub Jelinek <jakub@redhat.com>
28140 * config/i386/i386.c (ix86_function_ok_for_sibcall): Check for
28141 regparm >= 3 with no arg reg available also for calls with
28142 flag_force_indirect_call. Pass decl to ix86_function_regparm.
28145 * config/i386/sse.md (*<code><mode>3): Replace <mask_prefix3> with
28147 (*<plusminus_insn><mode>3): Likewise. Remove <mask_operand3> uses.
28149 2018-03-05 Peter Bergner <bergner@vnet.ibm.com>
28152 * config/rs6000/vector.md (mov<mode>): Disallow altivec memory operands.
28154 2018-03-05 Richard Biener <rguenther@suse.de>
28156 PR tree-optimization/84486
28157 * tree-ssa-pre.c (create_expression_by_pieces): Remove dead code.
28158 When inserting a __builtin_assume_aligned call set the LHS
28159 SSA name alignment info accordingly.
28161 2018-03-05 Wilco Dijkstra <wdijkstr@arm.com>
28163 PR tree-optimization/84114
28164 * config/aarch64/aarch64.c (aarch64_reassociation_width)
28165 Avoid reassociation of FLOAT_MODE addition.
28167 2018-03-05 Olga Makhotina <olga.makhotina@intel.com>
28169 * common/config/i386/i386-common.c (OPTION_MASK_ISA_PCONFIG_SET,
28170 OPTION_MASK_ISA_PCONFIG_UNSET, OPTION_MASK_ISA_WBNOINVD_SET,
28171 OPTION_MASK_ISA_WBNOINVD_UNSET): New definitions.
28172 (ix86_handle_option): Handle -mpconfig and -mwbnoinvd.
28173 * config.gcc (pconfigintrin.h, wbnoinvdintrin.h) : Add headers.
28174 * config/i386/cpuid.h (bit_PCONFIG, bit_WBNOINVD): New.
28175 * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mpconfig
28177 * config/i386/i386-builtin.def (__builtin_ia32_wbnoinvd,
28178 __builtin_ia32_wbinvd): New builtins.
28179 (SPECIAL_ARGS2): New.
28180 * config/i386/i386-c.c (__WBNOINVD__, __PCONFIG__): New.
28181 (SPECIAL_ARGS2): New.
28182 * config/i386/i386.c (ix86_target_string): Add -mpconfig and -mwbnoinvd.
28183 (ix86_valid_target_attribute_inner_p): Ditto.
28184 (ix86_init_mmx_sse_builtins): Add special_args2.
28185 * config/i386/i386.h (TARGET_PCONFIG, TARGET_PCONFIG_P, TARGET_WBNOINVD,
28186 TARGET_WBNOINVD_P): New.
28187 * config/i386/i386.md (UNSPECV_WBINVD, UNSPECV_WBNOINVD): New.
28188 (define_insn "wbinvd", define_insn "wbnoinvd"): New.
28189 * config/i386/i386.opt: Add -mpconfig and -mwbnoinvd.
28190 * config/i386/immintrin.h (_wbinvd): New intrinsic.
28191 * config/i386/pconfigintrin.h: New file.
28192 * config/i386/wbnoinvdintrin.h: Ditto.
28193 * config/i386/x86intrin.h: Add headers pconfigintrin.h and
28195 * doc/invoke.texi (-mpconfig, -mwbnoinvd): New.
28197 2018-03-05 Richard Biener <rguenther@suse.de>
28199 PR tree-optimization/84670
28200 * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
28202 (BB_VISITED_WITH_VISITED_SUCCS): New define.
28203 (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
28204 (compute_antic_aux): Only assert the number of values in ANTIC_IN
28205 doesn't grow if all successors (recursively) were visited at least
28208 2018-03-05 Richard Biener <rguenther@suse.de>
28210 PR tree-optimization/84650
28211 * tree-ssa-loop-im.c (pass_lim::execute): Reset the SCEV cache
28212 if executed in the loop pipeline.
28214 2018-03-05 Sandra Loosemore <sandra@codesourcery.com>
28216 * doc/configfiles.texi (Configuration Files): Move info about
28217 conditionalizing $target-protos.h to...
28218 * doc/sourcebuild.texi (Back End): Here. Explain how $target.h
28219 differs from $target-protos.h.
28221 2018-03-05 Kito Cheng <kito.cheng@gmail.com>
28222 Chung-Ju Wu <jasonwucj@gmail.com>
28224 * config/nds32/nds32-protos.h (nds32_expand_setmem): Declare.
28225 * config/nds32/nds32-multiple.md (setmemsi): Define.
28226 * config/nds32/nds32-memory-manipulation.c
28227 (nds32_gen_dup_4_byte_to_word_value): New.
28228 (emit_setmem_word_loop): New.
28229 (emit_setmem_byte_loop): New.
28230 (nds32_expand_setmem_loop): New.
28231 (nds32_expand_setmem_loop_v3m): New.
28232 (nds32_expand_setmem_unroll): New.
28233 (nds32_expand_setmem): New.
28235 2018-03-04 Kito Cheng <kito.cheng@gmail.com>
28236 Chung-Ju Wu <jasonwucj@gmail.com>
28238 * config/nds32/nds32-memory-manipulation.c
28239 (nds32_emit_load_store): New.
28240 (nds32_emit_post_inc_load_store): New.
28241 (nds32_emit_mem_move): New.
28242 (nds32_emit_mem_move_block): New.
28243 (nds32_expand_movmemsi_loop_unknown_size): New.
28244 (nds32_expand_movmemsi_loop_known_size): New.
28245 (nds32_expand_movmemsi_loop): New.
28246 (nds32_expand_movmemsi_unroll): New.
28247 (nds32_expand_movmemqi): Rename ...
28248 (nds32_expand_movmemsi): ... to this.
28249 * config/nds32/nds32-multiple.md (movmemqi): Rename ...
28250 (movmemsi): ... to this.
28251 * config/nds32/nds32-protos.h (nds32_expand_movmemqi): Rename ...
28252 (nds32_expand_movmemsi): ... to this.
28254 2018-03-04 Kito Cheng <kito.cheng@gmail.com>
28255 Monk Chiang <sh.chiang04@gmail.com>
28256 Chung-Ju Wu <jasonwucj@gmail.com>
28258 * config/nds32/nds32-protos.h
28259 (nds32_expand_load_multiple): New arguments.
28260 (nds32_expand_store_multiple): Ditto.
28261 (nds32_valid_multiple_load_store): Rename ...
28262 (nds32_valid_multiple_load_store_p): ... to this.
28263 * config/nds32/nds32-memory-manipulation.c
28264 (nds32_expand_load_multiple): Refine implementation.
28265 (nds32_expand_store_multiple): Ditto.
28266 * config/nds32/nds32-multiple.md
28267 (load_multiple): Update nds32_expand_load_multiple interface.
28268 (store_multiple): Update nds32_expand_store_multiple interface.
28269 * config/nds32/nds32-predicates.c
28270 (nds32_valid_multiple_load_store): Rename ...
28271 (nds32_valid_multiple_load_store_p): ... to this and refine
28273 * config/nds32/predicates.md
28274 (nds32_load_multiple_and_update_address_operation): New predicate.
28275 (nds32_store_multiple_and_update_address_operation): New predicate.
28277 2018-03-04 Kito Cheng <kito.cheng@gmail.com>
28278 Chung-Ju Wu <jasonwucj@gmail.com>
28280 * config/nds32/nds32.md (type): Add load_multiple and store_multiple.
28281 (combo): New attribute.
28282 * config/nds32/nds32-multiple.md: Refine patterns with new attributes.
28284 2018-03-03 Chung-Ju Wu <jasonwucj@gmail.com>
28286 * config/nds32/nds32.opt: Change -mcmodel= default value.
28288 2018-03-03 Kito Cheng <kito.cheng@gmail.com>
28289 Monk Chiang <sh.chiang04@gmail.com>
28290 Chung-Ju Wu <jasonwucj@gmail.com>
28292 * config/nds32/constants.md (unspec_element): New enum.
28293 * config/nds32/constraints.md (Umw): New constraint.
28294 * config/nds32/nds32-intrinsic.c: Add more builtin functions.
28295 * config/nds32/nds32-intrinsic.md: Likewise.
28296 * config/nds32/nds32-md-auxiliary.c (nds32_regno_to_enable4): New.
28297 (nds32_valid_smw_lwm_base_p): New.
28298 (nds32_output_smw_single_word): New.
28299 (nds32_output_lmw_single_word): New.
28300 (nds32_expand_unaligned_load): New.
28301 (nds32_expand_unaligned_store): New.
28302 * config/nds32/nds32-protos.h (nds32_valid_smw_lwm_base_p): Declare.
28303 (nds32_output_smw_single_word): Declare.
28304 (nds32_output_lmw_single_word): Declare.
28305 (nds32_expand_unaligned_load): Declare.
28306 (nds32_expand_unaligned_store): Declare.
28307 * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_UALOAD_HW,
28308 NDS32_BUILTIN_UALOAD_W, NDS32_BUILTIN_UALOAD_DW,
28309 NDS32_BUILTIN_UASTORE_HW, NDS32_BUILTIN_UASTORE_W,
28310 NDS32_BUILTIN_UASTORE_DW.
28311 * config/nds32/predicates.md (nds32_lmw_smw_base_operand): New
28314 2018-03-03 Monk Chiang <sh.chiang04@gmail.com>
28315 Kito Cheng <kito.cheng@gmail.com>
28316 Chung-Ju Wu <jasonwucj@gmail.com>
28318 * config/nds32/nds32-intrinsic.c
28319 (nds32_expand_builtin_null_ftype_reg): Delete.
28320 (nds32_expand_builtin_reg_ftype_imm): Ditto.
28321 (nds32_expand_builtin_null_ftype_reg_imm): Ditto.
28322 (nds32_read_argument): New.
28323 (nds32_legitimize_target): Ditto.
28324 (nds32_legitimize_argument): Ditto.
28325 (nds32_check_constant_argument): Ditto.
28326 (nds32_expand_unop_builtin): Ditto.
28327 (nds32_expand_unopimm_builtin): Ditto.
28328 (nds32_expand_binop_builtin): Ditto.
28329 (nds32_builtin_decl_impl): Ditto.
28330 (builtin_description): Ditto.
28331 (nds32_expand_builtin_impl): Rewrite with new infrastructure.
28332 (nds32_init_builtins_impl): Ditto.
28333 * config/nds32/nds32.c (TARGET_BUILTIN_DECL): Define.
28334 (nds32_builtin_decl): New.
28335 * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_COUNT.
28336 * config/nds32/nds32-protos.h (nds32_builtin_decl_impl): Declare.
28338 2018-03-02 Jeff Law <law@redhat.com>
28340 * reorg.c (stop_search_p): Handle DEBUG_INSN.
28341 (redundant_insn, fill_simple_delay_slots): Likewise.
28342 (fill_slots_from_thread): Likewise.
28343 * resource.c (mark_referenced_resources): Likewise.
28344 (mark_set_resources, find_dead_or_set_registers): Likewise.
28346 2018-03-02 Jakub Jelinek <jakub@redhat.com>
28348 * substring-locations.h (format_warning_va): Formatting fix for
28349 ATTRIBUTE_GCC_DIAG.
28350 (format_warning_at_substring): Fix up ATTRIBUTE_GCC_DIAG second
28352 (format_warning_n_va, format_warning_at_substring_n): New prototypes.
28353 * substring-locations.c: Include intl.h.
28354 (format_warning_va): Turned into small wrapper around
28355 format_warning_n_va, renamed to ...
28356 (format_warning_n_va): ... this, add N and PLURAL_GMSGID arguments,
28357 rename GMSGID to SINGULAR_GMSGID, if SINGULAR_GMSGID != PLURAL_GMSGID,
28359 (format_warning_at_substring_n): New function.
28360 * gimple-ssa-sprintf.c: Remove GCC diagnostic ignored pragma.
28361 (fmtwarn): Add ATTRIBUTE_GCC_DIAG. Turn into a copy of
28362 format_warning_at_substring with just a shorter name instead of
28363 const function pointer.
28364 (fmtwarn_n): New function.
28365 (maybe_warn, format_directive, parse_directive): Use fmtwarn_n where
28366 appropriate, get rid of all the fmtstr temporaries, move conditionals
28367 with G_() wrapped string literals directly into fmtwarn arguments,
28368 cast dir.len to (int), formatting fixes.
28370 2018-03-02 Thomas Schwinge <thomas@codesourcery.com>
28372 * doc/invoke.texi: Remove "Cilk Plus" references.
28374 2018-03-02 Jakub Jelinek <jakub@redhat.com>
28375 Richard Biener <rguenther@suse.de>
28378 * expr.c (expand_expr_real_1) <case CALL_EXPR>: Don't emit diagnostics
28379 for error or warning attributes if CALL_FROM_THUNK_P is set.
28382 2018-03-02 Jakub Jelinek <jakub@redhat.com>
28385 * config/pa/pa.h (TARGET_CPU_CPP_BUILTINS): Predefine
28386 __SIZEOF_128__ macro if HPUX_LONG_DOUBLE_LIBRARY.
28389 * config/ia64/ia64.h (TARGET_CPU_CPP_BUILTINS): Predefine
28390 __SIZEOF_{FPREG,FLOAT{80,128}}__ macros.
28392 * predict.c (test_prediction_value_range): Use PROB_UNINITIALIZED
28393 instead of -1U in last predictors element's probability member.
28395 2018-03-02 Eric Botcazou <ebotcazou@adacore.com>
28398 * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
28399 arguments if they are comparable.
28401 2018-03-02 Richard Sandiford <richard.sandiford@linaro.org>
28403 PR tree-optimization/84634
28404 * tree-vect-stmts.c (vectorizable_store, vectorizable_load): Replace
28405 masks and masked_loop_p with a single loop_masks, making sure it's
28406 null for bb vectorization.
28408 2018-03-02 Richard Sandiford <richard.sandiford@linaro.org>
28410 * tree-vect-data-refs.c (vect_analyze_data_ref_dependence)
28411 (vect_analyze_data_ref_access): Use loop->safe_len rather than
28412 loop->force_vectorize to check whether there is no alias.
28414 2018-03-02 Jakub Jelinek <jakub@redhat.com>
28417 * rtl.h (prev_real_nondebug_insn, next_real_nondebug_insn): New
28419 * emit-rtl.c (next_real_insn, prev_real_insn): Fix up function
28421 (next_real_nondebug_insn, prev_real_nondebug_insn): New functions.
28422 * cfgcleanup.c (try_head_merge_bb): Use prev_real_nondebug_insn
28423 instead of a loop around prev_real_insn.
28424 * combine.c (move_deaths): Use prev_real_nondebug_insn instead of
28427 PR inline-asm/84625
28428 * config/i386/i386.c (ix86_print_operand): Use conditional
28429 output_operand_lossage instead of gcc_assert if CONST_VECTOR is not
28432 2018-03-02 Richard Biener <rguenther@suse.de>
28434 PR tree-optimization/84427
28435 * tree-ssa-pre.c (bitmap_remove_expr_from_set): Remove.
28436 (bitmap_set_subtract_values): Rewrite to handle multiple
28439 (prune_clobbered_mems): Likewise.
28440 (phi_translate): Take edge instead of pred/phiblock.
28441 (phi_translate_1): Likewise.
28442 (phi_translate_set): Likewise. Insert all translated
28443 exprs for a value into the set, keeping possibly multiple
28444 expressions per value.
28445 (compute_antic_aux): Adjust for phi_translate changes.
28446 When intersecting union the expressions and prune those
28447 not in the final value set, keeping possibly multiple
28448 expressions per value. Do not use value-insertion
28449 for unioning ANTIC_OUT U EXP_GEN - TMP_GEN but merge
28450 all expressions. Add verification that the value-sets
28451 only shrink during iteration.
28452 (compute_partial_antic_aux): Adjust for the phi_translate changes.
28453 (do_pre_regular_insertion): Likewise.
28454 (do_pre_partial_partial_insertion): Likewise.
28456 2018-03-02 Richard Biener <rguenther@suse.de>
28459 * config/darwin.c (saved_debug_info_level): New static global.
28460 (darwin_asm_lto_start): Disable debug info generation for LTO out.
28461 (darwin_asm_lto_end): Restore debug info generation settings.
28463 2018-03-01 Martin Liska <mliska@suse.cz>
28466 * sanopt.c (sanitize_rewrite_addressable_params): Do not handle
28467 volatile arguments.
28469 2018-03-01 Richard Biener <rguenther@suse.de>
28472 * dwarf2out.c (gen_variable_die): Properly handle late VLA
28473 type annotation with LTO when debug was disabled at compile-time.
28475 2018-03-01 Matthew Fortune <mfortune@gmail.com>
28477 * config/mips/mips.c (mips_final_prescan_insn): Fix incorrect
28479 (mips_final_postscan_insn): Likewise.
28481 2018-03-01 Richard Sandiford <richard.sandiford@linaro.org>
28483 PR rtl-optimization/84528
28484 * alias.c (init_alias_target): Add commentary.
28485 (init_alias_analysis): Only give HARD_FRAME_POINTER_REGNUM
28486 a unique base value if the frame pointer is not eliminated
28487 to the stack pointer.
28489 2018-03-01 Tom de Vries <tom@codesourcery.com>
28491 PR rtl-optimization/83327
28492 * lra-int.h (hard_regs_spilled_into): Declare.
28493 * lra.c (hard_regs_spilled_into): Define.
28494 (init_reg_info): Init hard_regs_spilled_into.
28495 * lra-spills.c (assign_spill_hard_regs): Update hard_regs_spilled_into.
28496 * lra-lives.c (make_hard_regno_born, make_hard_regno_dead)
28497 (process_bb_lives): Handle hard_regs_spilled_into.
28498 (lra_create_live_ranges_1): Before doing liveness propagation, clear
28499 regs in all_hard_regs_bitmap if set in hard_regs_spilled_into.
28501 2018-02-28 David Edelsohn <dje.gcc@gmail.com>
28503 * config.gcc (powerpc-ibm-aix7.1.*): New stanza.
28504 (powerpc-ibm-aix[789]*): Default to AIX 7.2.
28505 * config/rs6000/aix71.h (TARGET_DEFAULT): Revert to Power4 ISA.
28506 * config/rs6000/aix72.h: New file.
28508 2018-02-28 Jakub Jelinek <jakub@redhat.com>
28510 * gimple-ssa-warn-restrict.c (maybe_diag_overlap): Use warning_n
28511 instead of warning_at with conditional singular and plural messages
28515 * stor-layout.c (update_alignment_for_field): For
28516 targetm.ms_bitfield_layout_p (rli->t), if !is_bitfield
28517 && !DECL_PACKED (field), do the alignment update, just use
28518 only desired_align instead of MAX (type_align, desired_align)
28520 (place_field): Don't do known_align < desired_align handling
28521 early if targetm.ms_bitfield_layout_p (rli->t) and rli->prev_field
28522 is non-NULL, instead do it after rli->prev_field handling and
28523 only if not within a bitfield word. For DECL_PACKED (field)
28524 use type_align of BITS_PER_UNIT.
28526 2018-02-28 Eric Botcazou <ebotcazou@adacore.com>
28528 * config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Remove
28529 superfluous parentheses and trailing spaces.
28531 2018-02-28 Richard Biener <rguenther@suse.de>
28533 PR tree-optimization/84584
28534 * graphite-scop-detection.c (scop_detection::add_scop): Discard
28535 SCoPs with fake exit edge.
28537 2018-02-28 Martin Liska <mliska@suse.cz>
28540 * timevar.c (timer::print): Fix format to properly print 100%
28543 2018-02-28 Richard Biener <rguenther@suse.de>
28545 PR middle-end/84607
28546 * genmatch.c (capture_info::walk_match): Do not mark
28547 captured expressions without operands as expr_p given
28548 they act more like predicates and should be subject to
28549 "lost tail" side-effect preserving.
28551 2018-02-28 Alexandre Oliva <aoliva@redhat.com>
28553 PR rtl-optimization/81611
28554 * auto-inc-dec.c (attempt_change): Move dead note from
28555 mem_insn if it's the next use of regno
28556 (find_address): Take address use of reg holding
28557 non-incremented value. Add parm to limit search to the named
28559 (merge_in_block): Attempt to use a mem insn that is the next
28560 use of the original regno.
28562 2018-02-27 Martin Sebor <msebor@redhat.com>
28565 * doc/invoke.texi (-Wmissing-attributes): New option.
28566 * print-tree.c (print_node): Handle DECL_UNINLINABLE.
28568 2018-02-27 Martin Sebor <msebor@redhat.com>
28570 PR translation/84207
28571 * diagnostic-core.h (warning_n, error_n, inform_n): Change
28572 n argument to unsigned HOST_WIDE_INT.
28573 * diagnostic.c (warning_n, error_n, inform_n): Ditto.
28574 (diagnostic_n_impl): Ditto. Handle arguments in excess of LONG_MAX.
28575 * gimple-ssa-sprintf.c (format_directive): Simplify inform_n call.
28576 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Use warning_n.
28578 2018-02-27 Richard Biener <rguenther@suse.de>
28580 PR tree-optimization/84512
28581 * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost):
28582 Do not use the estimate returned from record_stmt_cost for
28583 the scalar iteration cost but sum properly using add_stmt_cost.
28585 2018-02-27 Richard Biener <rguenther@suse.de>
28587 PR tree-optimization/84466
28588 * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
28589 Adjust last change to less strictly validate use operands.
28591 2018-02-27 Martin Liska <mliska@suse.cz>
28593 PR gcov-profile/84548
28594 * gcov.c (process_file): Allow partial overlap and consider it
28595 also as group functions.
28596 (output_lines): Properly calculate range of lines for a group.
28598 2018-02-27 Martin Liska <mliska@suse.cz>
28600 * timevar.c (timer::print_row): Remove 'usr', 'sys', 'wall' and
28601 'ggc' suffixes. Change first column width.
28602 (timer::print): Fix formatting of the column.
28604 2018-02-27 Alexandre Oliva <aoliva@redhat.com>
28606 * tree-ssa-live.c (remove_unused_scope_block_p): Do not
28607 preserve inline entry blocks for the sake of debug inline
28608 entry point markers alone.
28609 (remove_unused_locals): Suggest in comments a better place to
28610 force the preservation of inline entry blocks that are
28611 otherwise unused, but do not preserve them.
28613 2018-02-26 H.J. Lu <hongjiu.lu@intel.com>
28615 * config/i386/i386.c (ix86_output_indirect_jmp): Update comments.
28617 2018-02-26 H.J. Lu <hongjiu.lu@intel.com>
28620 * config/i386/constraints.md (Bs): Replace
28621 ix86_indirect_branch_register with
28622 TARGET_INDIRECT_BRANCH_REGISTER.
28624 * config/i386/i386.md (indirect_jump): Likewise.
28625 (tablejump): Likewise.
28626 (*sibcall_memory): Likewise.
28627 (*sibcall_value_memory): Likewise.
28628 Peepholes of indirect call and jump via memory: Likewise.
28629 (*sibcall_GOT_32): Disallowed for TARGET_INDIRECT_BRANCH_REGISTER.
28630 (*sibcall_value_GOT_32): Likewise.
28631 * config/i386/predicates.md (indirect_branch_operand): Likewise.
28632 (GOT_memory_operand): Likewise.
28633 (call_insn_operand): Likewise.
28634 (sibcall_insn_operand): Likewise.
28635 (GOT32_symbol_operand): Likewise.
28636 * config/i386/i386.h (TARGET_INDIRECT_BRANCH_REGISTER): New.
28638 2018-02-26 Eric Botcazou <ebotcazou@adacore.com>
28640 PR rtl-optimization/83496
28641 * reorg.c (steal_delay_list_from_target): Change REDUNDANT array from
28642 booleans to RTXes. Call fix_reg_dead_note on every non-null element.
28643 (steal_delay_list_from_fallthrough): Call fix_reg_dead_note on a
28644 redundant insn, if any.
28645 (relax_delay_slots): Likewise.
28646 (update_reg_unused_notes): Rename REDUNDANT_INSN to OTHER_INSN.
28648 2018-02-26 Richard Sandiford <richard.sandiford@linaro.org>
28650 PR tree-optimization/83965
28651 * tree-vect-patterns.c (vect_reassociating_reduction_p): Assume
28652 that grouped statements are part of a reduction chain. Return
28653 true if the statement is not marked as a reduction itself but
28654 is part of a group.
28655 (vect_recog_dot_prod_pattern): Don't check whether the statement
28656 is part of a group here.
28657 (vect_recog_sad_pattern): Likewise.
28658 (vect_recog_widen_sum_pattern): Likewise.
28660 2018-02-26 Eric Botcazou <ebotcazou@adacore.com>
28663 * final.c (rest_of_clean_state): Also look for calls inside sequences.
28665 2018-02-26 H.J. Lu <hongjiu.lu@intel.com>
28668 * config/i386/i386-protos.h (ix86_output_indirect_jmp): Remove
28670 (ix86_output_indirect_function_return): New prototype.
28671 (ix86_split_simple_return_pop_internal): Likewise.
28672 * config/i386/i386.c (indirect_return_via_cx): New.
28673 (indirect_return_via_cx_bnd): Likewise.
28674 (indirect_thunk_name): Handle return va CX_REG.
28675 (output_indirect_thunk_function): Create alias for
28676 __x86_return_thunk_[re]cx and __x86_return_thunk_[re]cx_bnd.
28677 (ix86_output_indirect_jmp): Remove the bool argument.
28678 (ix86_output_indirect_function_return): New function.
28679 (ix86_split_simple_return_pop_internal): Likewise.
28680 * config/i386/i386.md (*indirect_jump): Don't pass false
28681 to ix86_output_indirect_jmp.
28682 (*tablejump_1): Likewise.
28683 (simple_return_pop_internal): Change it to define_insn_and_split.
28684 Call ix86_split_simple_return_pop_internal to split it for
28685 -mfunction-return=.
28686 (simple_return_indirect_internal): Call
28687 ix86_output_indirect_function_return instead of
28688 ix86_output_indirect_jmp.
28690 2018-02-26 Jakub Jelinek <jakub@redhat.com>
28693 * vec.h (vec_default_construct): For BROKEN_VALUE_INITIALIZATION use
28694 memset and value initialization afterwards.
28696 2018-02-26 Christophe Lyon <christophe.lyon@linaro.org>
28698 * Makefile.in (lto-wrapper): Use ALL_LINKERFLAGS.
28700 2018-02-26 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
28703 * common/config/aarch64/aarch64-common.c
28704 (aarch_option_optimization_table[]): Switch
28705 off fomit-frame-pointer
28707 2018-02-26 Kito Cheng <kito.cheng@gmail.com>
28708 Chung-Ju Wu <jasonwucj@gmail.com>
28710 * config/nds32/nds32-multiple.md (load_multiple): Disallow
28712 (store_multiple): Ditto.
28714 2018-02-26 Kito Cheng <kito.cheng@gmail.com>
28716 * config.gcc: Add --with-cpu support for nds32 target.
28717 * config/nds32/nds32-opts.h (nds32_cpu_type): New.
28718 * config/nds32/nds32.opt: Add -mcpu= option.
28720 2018-02-25 Segher Boessenkool <segher@kernel.crashing.org>
28722 * config/rs6000/rs6000.opt (mvrsave=no, mvrsave=yes, isel=no,
28723 isel=yes): Warn for these deprecated options.
28725 2018-02-23 David Edelsohn <dje.gcc@gmail.com>
28727 * config/rs6000/aix71.h (TARGET_DEFAULT): Change to
28728 ISA_2_5_MASKS_EMBEDDED.
28730 2018-02-23 Jakub Jelinek <jakub@redhat.com>
28732 * ipa-prop.c (ipa_vr_ggc_hash_traits::hash): Hash p->min and
28733 p->max as pointers rather than using iterative_hash_expr.
28735 2018-02-23 Carl Love <cel@us.ibm.com>
28737 * config/rs6000/rs6000-builtin.def: Change VSIGNED2 and VUNSIGNED2
28738 macro expansions from BU_VSX_2 to BU_P8V_VSX_2 and BU_VSX_OVERLOAD_2 to
28740 * config/rs6000/rs6000-c.c: Change VSX_BUILTIN_VEC_VSIGNED2 to
28741 P8V_BUILTIN_VEC_VSIGNED2. Change VSX_BUILTIN_VEC_VUNSIGNED2 to
28742 P8V_BUILTIN_VEC_VUNSIGNED2.
28744 2018-02-22 Vladimir Makarov <vmakarov@redhat.com>
28747 * lra-int.h (LRA_UNKNOWN_ALT, LRA_NON_CLOBBERED_ALT): New macros.
28748 * lra.c (lra_set_insn_recog_data, lra_update_insn_recog_data): Use
28750 * lra-constraints.c (curr_insn_transform): Set up
28751 LRA_NON_CLOBBERED_ALT for moves processed on the fast path. Use
28753 (remove_inheritance_pseudos): Use LRA_UNKNOWN_ALT.
28754 * lra-eliminations.c (spill_pseudos): Ditto.
28755 (process_insn_for_elimination): Ditto.
28756 * lra-lives.c (reg_early_clobber_p): Use the new macros.
28757 * lra-spills.c (spill_pseudos): Use LRA_UNKNOWN_ALT and
28758 LRA_NON_CLOBBERED_ALT.
28760 2018-02-22 Martin Sebor <msebor@redhat.com>
28762 PR tree-optimization/84480
28763 * gimple-fold.c (gimple_fold_builtin_strcpy): Move warnings
28764 to maybe_diag_stxncpy_trunc. Call it.
28765 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Integrate warnings
28766 from gimple_fold_builtin_strcpy. Print inlining stack.
28767 (handle_builtin_stxncpy): Print inlining stack.
28768 * tree-ssa-strlen.h (maybe_diag_stxncpy_trunc): Declare.
28770 2018-02-22 H.J. Lu <hongjiu.lu@intel.com>
28773 * config/i386/i386.c (ix86_set_indirect_branch_type): Issue an
28774 error when -mindirect-branch=thunk-extern, -fcf-protection=branch
28775 and -fcheck-pointer-bounds are used together.
28776 (indirect_thunk_prefix): New enum.
28777 (indirect_thunk_need_prefix): New function.
28778 (indirect_thunk_name): Replace need_bnd_p with need_prefix. Use
28779 "_nt" instead of "_bnd" for NOTRACK prefix.
28780 (output_indirect_thunk): Replace need_bnd_p with need_prefix.
28781 (output_indirect_thunk_function): Likewise.
28783 (ix86_code_end): Update output_indirect_thunk_function calls.
28784 (ix86_output_indirect_branch_via_reg): Replace
28785 ix86_bnd_prefixed_insn_p with indirect_thunk_need_prefix.
28786 (ix86_output_indirect_branch_via_push): Likewise.
28787 (ix86_output_function_return): Likewise.
28788 * doc/invoke.texi: Document -mindirect-branch=thunk-extern is
28789 incompatible with -fcf-protection=branch and
28790 -fcheck-pointer-bounds.
28792 2018-02-22 Steve Ellcey <sellcey@cavium.com>
28795 * config/aarch64/aarch64.c (aarch64_print_address_internal):
28796 Change gcc_assert call to output_operand_lossage.
28798 2018-02-22 Steve Ellcey <sellcey@cavium.com>
28800 * doc/extend.texi (__builtin_extend_pointer): Document builtin.
28802 2018-02-22 DJ Delorie <dj@redhat.com>
28803 Sebastian Perta <sebastian.perta@renesas.com>
28804 Oleg Endo <olegendo@gcc.gnu.org>
28806 * config/rx/rx.c (rx_rtx_costs): New function.
28807 (TARGET_RTX_COSTS): Override to use rx_rtx_costs.
28809 2018-02-22 Thomas Preud'homme <thomas.preudhomme@arm.com>
28811 * config/arm/t-multilib: Map Armv8-R to Armv7 multilibs.
28813 2018-02-22 Martin Liska <mliska@suse.cz>
28816 * common/config/arm/arm-common.c (arm_print_hint_for_cpu_option):
28817 Add "native" as a possible value.
28819 2018-02-22 Martin Liska <mliska@suse.cz>
28822 * config/i386/i386.c (ix86_option_override_internal):
28823 Add "native" as a possible value for -march and -mtune.
28825 2018-02-22 Jakub Jelinek <jakub@redhat.com>
28828 * stor-layout.c (finalize_type_size): Propagate TYPE_EMPTY_P flag
28829 to all type variants.
28831 PR tree-optimization/84503
28832 * gimple-ssa-store-merging.c (merged_store_group::merge_into): Compute
28833 width as info->bitpos + info->bitsize - start.
28834 (merged_store_group::merge_overlapping): Simplify width computation.
28835 (check_no_overlap): New function.
28836 (imm_store_chain_info::try_coalesce_bswap): Compute expected
28837 start + width and last_order of the group, fail if check_no_overlap
28839 (imm_store_chain_info::coalesce_immediate_stores): Don't merge info
28840 to group if check_no_overlap fails.
28842 2018-02-21 Segher Boessenkool <segher@kernel.crashing.org>
28844 * config/rs6000/altivec.md: Delete contraint arguments to
28845 define_expand, define_split, and define_peephole2, and in
28846 define_insn_and_split if always unused.
28847 * config/rs6000/darwin.md: Ditto.
28848 * config/rs6000/dfp.md: Ditto.
28849 * config/rs6000/rs6000.md: Ditto.
28850 * config/rs6000/sync.md: Ditto.
28851 * config/rs6000/vector.md: Ditto.
28852 * config/rs6000/vsx.md: Ditto.
28854 2018-02-21 Segher Boessenkool <segher@kernel.crashing.org>
28856 * config/rs6000/altivec.md: Write output control strings as braced
28857 blocks instead of double-quoted strings.
28858 * config/rs6000/darwin.md: Ditto.
28859 * config/rs6000/rs6000.md: Ditto.
28860 * config/rs6000/vector.md: Ditto.
28861 * config/rs6000/vsx.md: Ditto.
28863 2018-02-21 Jason Merrill <jason@redhat.com>
28865 PR c++/84314 - ICE with templates and fastcall attribute.
28866 * attribs.c (build_type_attribute_qual_variant): Remove assert.
28868 2018-02-21 Jan Hubicka <hubicka@ucw.cz>
28870 * ipa-cp.c (determine_versionability): Fix comment typos.
28872 2018-02-21 Jan Hubicka <hubicka@ucw.cz>
28875 * ipa-cp.c (determine_versionability): Do not version functions caling
28878 2018-02-21 Martin Liska <mliska@suse.cz>
28881 * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch):
28882 Add "native" as a possible value.
28883 * config/aarch64/aarch64.h (HAVE_LOCAL_CPU_DETECT): Define
28884 the macro when native cpu detection is available.
28886 2018-02-21 Martin Liska <mliska@suse.cz>
28889 * common/config/arm/arm-common.c (arm_print_hint_for_arch_option):
28890 Add "native" as a possible value.
28891 * config/arm/arm.h (HAVE_LOCAL_CPU_DETECT): Define the macro
28892 when native cpu detection is available.
28894 2018-02-21 Jakub Jelinek <jakub@redhat.com>
28895 Martin Sebor <msebor@redhat.com>
28897 PR tree-optimization/84478
28898 * gimple-fold.h (get_range_strlen): Add a bool argument defaulted to
28900 * gimple-fold.c (get_range_strlen): Make minlen const and assume it
28901 can't be NULL. Change FUZZY from bool to int, for 1 add PHI/COND_EXPR
28902 support which is conservatively correct, for 2 only stay conservative
28903 for maxlen. Formatting and comment capitalization fixes. Add STRICT
28904 argument to the 2 argument get_range_strlen, adjust 6 arg
28905 get_range_strlen caller and clear minmaxlen[0] and [1] if it returned
28907 (get_maxval_strlen): Adjust 6 arg get_range_strlen caller.
28908 (gimple_fold_builtin_strlen): Pass true as last argument to
28911 2018-02-20 Martin Sebor <msebor@redhat.com>
28913 PR middle-end/84095
28914 * gimple-ssa-warn-restrict.c (builtin_memref::extend_offset_range): New.
28915 (builtin_memref::set_base_and_offset): Same. Handle inner references.
28916 (builtin_memref::builtin_memref): Factor out parts into
28917 set_base_and_offset and call it.
28919 2018-02-20 Richard Sandiford <richard.sandiford@linaro.org>
28921 PR middle-end/84406
28922 * optabs-query.c (find_widening_optab_handler_and_mode): If from_mode
28923 is a scalar_int_mode, assert that to_mode is a scalar_int_mode with
28924 greater precision. If to_mode is a MODE_PARTIAL_INT, stop the
28925 search at the associated MODE_INT.
28927 2018-02-20 Jeff Law <law@redhat.com>
28929 PR middle-end/82123
28930 PR tree-optimization/81592
28931 PR middle-end/79257
28932 * gimple-ssa-sprintf.c (format_integer): Query EVRP range analyzer
28933 for range data rather than using global data.
28934 * gimple-ssa-sprintf.c (get_int_range): Query EVRP range analyzer for
28935 range data rather than using global data.
28936 * gimple-ssa-sprintf.c (get_int_range): Accept vr_values parameter
28937 pass it to children as needed.
28938 (struct directive::fmtresult): Similarly.
28939 (struct directive::set_width): Similarly.
28940 (struct directive::set_precision): Similarly.
28941 (format_integer, format_directive, parse_directive): Similarly.
28942 (format_none): Accept unnamed vr_values parameter.
28943 (format_percent, format_floating, format_character): Similarly.
28944 (format_string, format_plain): Similarly.
28945 * gimple-ssa-sprintf.c (sprintf_dom_walker::handle_gimple_call): Query
28946 the EVRP range analyzer for range data rather than using global data.
28947 * gimple-ssa-sprintf.c: Include alloc-pool.h, vr-values.h and
28948 gimple-ssa-evrp-analyze.h
28949 (class sprintf_dom_walker): Add after_dom_children member function.
28950 Add evrp_range_analyzer member.
28951 (sprintf_dom_walker::before_dom_children): Call into the EVRP
28952 range analyzer as needed.
28953 (sprintf_dom_walker::after_dom_children): New member function.
28954 * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::enter): Do nothing
28956 (evrp_range_analyzer::record_ranges_from_stmt): Likewise.
28957 (evrp_range_analyzer::pop_to_marker): Likewise.
28959 2018-02-20 Richard Sandiford <richard.sandiford@linaro.org>
28961 PR tree-optimization/84419
28962 * internal-fn.c (expand_call_mem_ref): Create a TARGET_MEM_REF
28963 with the required type if its current type is compatible but
28966 2018-02-20 Jakub Jelinek <jakub@redhat.com>
28968 PR middle-end/82004
28969 * match.pd (pow(C,x) -> exp(log(C)*x)): Delay all folding until
28970 after vectorization.
28972 2018-02-20 Martin Liska <mliska@suse.cz>
28975 * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch): Print
28976 possible values if we don't have a hint.
28978 2018-02-20 Martin Liska <mliska@suse.cz>
28982 * final.c (shorten_branches): Build align_tab array with one
28984 * opts.c (finish_options): Add alignment option limit check.
28985 (MAX_CODE_ALIGN): Likewise.
28986 (MAX_CODE_ALIGN_VALUE): Likewise.
28987 * doc/invoke.texi: Document maximum allowed option value for
28988 all -falign-* options.
28990 2018-02-19 Jakub Jelinek <jakub@redhat.com>
28993 * reg-notes.def (REG_CALL_ARG_LOCATION): New reg note.
28994 * insn-notes.def (NOTE_INSN_CALL_ARG_LOCATION): Remove.
28995 * var-tracking.c (emit_note_insn_var_location): Remove all references
28996 to NOTE_INSN_CALL_ARG_LOCATION.
28997 (emit_notes_in_bb): Emit arguments as REG_CALL_ARG_LOCATION note on
28998 the CALL_INSN rather than separate NOTE_INSN_CALL_ARG_LOCATION note.
28999 Use copy_rtx_if_shared.
29000 * dwarf2out.c (gen_subprogram_die): Use XEXP with 0 instead of
29001 NOTE_VAR_LOCATION on ca_loc->call_arg_loc_note.
29002 (dwarf2out_var_location): Remove handling of
29003 NOTE_INSN_CALL_ARG_LOCATION, instead handle REG_CALL_ARG_LOCATION note
29005 * final.c (final_scan_insn): Remove all references to
29006 NOTE_INSN_CALL_ARG_LOCATION.
29007 (rest_of_clean_state): Likewise. Remove REG_CALL_ARG_LOCATION notes
29008 before dumping final insns.
29009 * except.c (emit_note_eh_region_end): Remove all references to
29010 NOTE_INSN_CALL_ARG_LOCATION.
29011 * config/alpha/alpha.c (alpha_pad_function_end): Likewise.
29012 * config/c6x/c6x.c (c6x_gen_bundles): Likewise.
29013 * config/arc/arc.c (hwloop_optimize): Likewise.
29014 * config/arm/arm.c (create_fix_barrier): Likewise.
29015 * config/s390/s390.c (s390_chunkify_start): Likewise.
29016 * config/sh/sh.c (find_barrier): Likewise.
29017 * config/i386/i386.c (rest_of_insert_endbranch,
29018 ix86_seh_fixup_eh_fallthru): Likewise.
29019 * config/xtensa/xtensa.c (hwloop_optimize): Likewise.
29020 * config/iq2000/iq2000.c (final_prescan_insn): Likewise.
29021 * config/frv/frv.c (frv_function_prologue): Likewise.
29022 * emit-rtl.c (try_split): Likewise. Copy over REG_CALL_ARG_LOCATION
29024 (note_outside_basic_block_p): Remove all references to
29025 NOTE_INSN_CALL_ARG_LOCATION.
29026 * gengtype.c (adjust_field_rtx_def): Likewise.
29027 * print-rtl.c (rtx_writer::print_rtx_operand_code_0, print_insn):
29029 * jump.c (cleanup_barriers, delete_related_insns): Likewise.
29030 * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
29033 * builtins.c (builtin_mathfn_code): Don't check if CALL_EXPR_FN (t)
29036 PR tree-optimization/84452
29037 * tree-vect-patterns.c (vect_recog_pow_pattern): Don't call
29038 expand_simd_clones if targetm.simd_clone.compute_vecsize_and_simdlen
29041 2018-02-19 Martin Liska <mliska@suse.cz>
29044 * passes.def: Put pass_sancov_O0 before pass_lower_switch with -O0.
29046 2018-02-19 Martin Liska <mliska@suse.cz>
29047 Richard Sandiford <richard.sandiford@linaro.org>
29049 PR tree-optimization/82491
29050 * gimple-fold.c (get_base_constructor): Make earlier bail out
29053 2018-02-19 Carl Love <cel@us.ibm.com>
29055 * config/rs6000/rs6000-builtin.def: Change NEG macro expansions from
29056 BU_ALTIVEC_A to BU_P8V_AV_1 and BU_ALTIVEC_OVERLOAD_1 to
29058 * config/rs6000/rs6000-c.c: Change ALTIVEC_BUILTIN_VEC_NEG to
29059 P8V_BUILTIN_VEC_NEG.
29061 2018-02-19 Sebastian Perta <sebastian.perta@renesas.com>
29063 * config/rl78/rl78.md (movdf): New define expand.
29065 2018-02-19 Martin Liska <mliska@suse.cz>
29068 * doc/invoke.texi: Fix typo.
29069 * params.def (PARAM_MAX_LOOP_HEADER_INSNS): Likewise.
29071 2018-02-18 Segher Boessenkool <segher@kernel.crashing.org>
29073 * config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
29074 handle rs6000_single_float and rs6000_double_float specially for
29077 2018-02-16 Jeff Law <law@redhat.com>
29079 * config/rx/rx.c (add_pop_cfi_notes): New function.;
29080 (pop_regs): Use it.
29082 2018-02-16 Jakub Jelinek <jakub@redhat.com>
29085 * ipa-inline.c (inline_small_functions): Fix a typo.
29087 2018-02-16 Nathan Sidwell <nathan@acm.org>
29089 * doc/extend.texi (Backwards Compatibility): Americanize 'behaviour'.
29091 2018-02-16 Carl Love <cel@us.ibm.com>
29093 * config/rs6000/rs6000-builtin.def: Add BU_P8V_VSX_2 macro definition.
29094 Change FLOAT2 expansions from BU_VSX_2 to BU_P8V_VSX_2 and
29095 from BU_VSX_OVERLOAD_2 to BU_P8V_OVERLOAD_2.
29096 * config/rs6000/rs6000-c.c: Changed macro VSX_BUILTIN_VEC_FLOAT2
29097 expansion to P8V_BUILTIN_VEC_FLOAT2.
29099 2018-02-16 Vladimir Makarov <vmakarov@redhat.com>
29101 PR rtl-optimization/70023
29102 * lra-constraints.c (inherit_in_ebb): Take hard reg mode of
29103 src_regno into account.
29105 2018-02-16 Carl Love <cel@us.ibm.com>
29107 * config/rs6000/altivec.h: Remove vec_vextract4b and vec_vinsert4b.
29108 * config/rs6000/rs6000-builtin.def: Remove macro expansion for
29109 VEXTRACT4B, VINSERT4B, VINSERT4B_DI and VEXTRACT4B.
29110 * config/rs6000/rs6000.c: Remove case statements for
29111 P9V_BUILTIN_VEXTRACT4B, P9V_BUILTIN_VEC_VEXTRACT4B,
29112 P9V_BUILTIN_VINSERT4B, P9V_BUILTIN_VINSERT4B_DI,
29113 and P9V_BUILTIN_VEC_VINSERT4B.
29114 * config/rs6000/rs6000-c.c (altivec_expand_builtin): Remove entries for
29115 P9V_BUILTIN_VEC_VEXTRACT4B and P9V_BUILTIN_VEC_VINSERT4B.
29116 * config/rs6000/vsx.md:
29117 * doc/extend.texi: Remove vec_vextract4b, non ABI definitions for
29120 2018-02-16 Carl Love <cel@us.ibm.com>
29122 * config/rs6000/altivec.h: Add builtin names vec_extract4b
29124 * config/rs6000/rs6000-builtin.def: Add INSERT4B and EXTRACT4B
29126 * config/rs6000/rs6000-c.c: Add the definitions for
29127 P9V_BUILTIN_VEC_EXTRACT4B and P9V_BUILTIN_VEC_INSERT4B.
29128 * config/rs6000/rs6000.c (altivec_expand_builtin): Add
29129 P9V_BUILTIN_EXTRACT4B and P9V_BUILTIN_INSERT4B case statements.
29130 * config/rs6000/vsx.md: Add define_insn extract4b. Add define_expand
29131 definition for insert4b and define insn *insert3b_internal.
29132 * doc/extend.texi: Add documentation for vec_extract4b.
29134 2018-02-16 Nathan Sidwell <nathan@acm.org>
29136 * doc/extend.texi (Backwards Compatibility): Mention friend
29137 injection. Note for-scope is deprecated.
29138 * doc/invoke.texi (-ffriend-injection): Deprecate.
29140 2018-02-16 Segher Boessenkool <segher@kernel.crashing.org>
29142 * combine.c (try_combine): When adjusting LOG_LINKS for the destination
29143 that moved to I2, also allow destinations that are a paradoxical
29144 subreg (instead of a normal reg).
29146 2018-02-16 Oleg Endo <olegendo@gcc.gnu.org>
29149 * config/rx/rx.c (rx_fuse_in_memory_bitop): Convert shift operand
29152 2018-02-16 Richard Biener <rguenther@suse.de>
29154 PR tree-optimization/84037
29155 PR tree-optimization/84016
29157 * config/i386/i386.c (ix86_builtin_vectorization_cost):
29158 Adjust vec_construct for the fact we need additional higher latency
29159 128bit inserts for AVX256 and AVX512 vector builds.
29160 (ix86_add_stmt_cost): Scale vector construction cost for
29163 2018-02-16 Richard Biener <rguenther@suse.de>
29165 PR tree-optimization/84417
29166 * tree-ssa.c (non_rewritable_mem_ref_base): Properly constrain
29167 the MEM_REF offset when conversion to BIT_FIELD_REF is desired.
29168 (non_rewritable_lvalue_p): Likewise, use poly-ints.
29170 2018-02-16 Martin Liska <mliska@suse.cz>
29173 * internal-fn.def (ASAN_CHECK): Set proper flags.
29174 (ASAN_MARK): Likewise.
29176 2018-02-16 Julia Koval <julia.koval@intel.com>
29178 * config/i386/i386.c (ix86_option_override_internal): Remove PTA_CLWB
29179 from PTA_CANNONLAKE.
29181 2018-02-16 Jakub Jelinek <jakub@redhat.com>
29184 * config/aarch64/cortex-a57-fma-steering.c (fma_forest::merge_forest):
29185 Use ++iter rather than iter++ for std::list iterators.
29186 (func_fma_steering::dfs): Likewise. Don't delete nodes right away,
29187 defer deleting them until all nodes in the forest are processed. Do
29188 free even leaf nodes. Change to_process into auto_vec.
29191 * system.h (BROKEN_VALUE_INITIALIZATION): Define for GCC < 4.3.
29192 * vec.h (vec_default_construct): Use memset instead of placement new
29193 if BROKEN_VALUE_INITIALIZATION is defined.
29194 * hash-table.h (hash_table<Descriptor, Allocator>::empty_slow): Use
29195 memset instead of value initialization if BROKEN_VALUE_INITIALIZATION
29198 PR rtl-optimization/83723
29199 * lra-int.h (lra_substitute_pseudo): Add DEBUG_P argument.
29200 * lra.c (lra_substitute_pseudo): Likewise. If true, use
29201 gen_rtx_raw_SUBREG instead of gen_rtx_SUBREG. Pass DEBUG_P to
29203 (lra_substitute_pseudo_within_insn): Adjust lra_substitute_pseudo
29205 * lra-constraints.c (inherit_reload_reg, split_reg): Likewise.
29207 2018-02-16 Eric Botcazou <ebotcazou@adacore.com>
29209 PR rtl-optimization/81443
29210 * rtlanal.c (num_sign_bit_copies1) <SUBREG>: Do not propagate results
29211 from inner REGs to paradoxical SUBREGs.
29213 2018-02-16 Richard Biener <rguenther@suse.de>
29215 PR tree-optimization/84399
29216 * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
29217 For operands we can analyze at their definition make sure we can
29218 analyze them at each use as well.
29220 2018-02-16 Richard Biener <rguenther@suse.de>
29222 PR tree-optimization/84190
29223 * tree-ssa.c (non_rewritable_mem_ref_base): Do not touch
29224 volatile accesses if the decl isn't volatile.
29226 2018-02-15 Jason Merrill <jason@redhat.com>
29228 PR c++/84314 - ICE with templates and fastcall attribute.
29229 * attribs.c (build_type_attribute_qual_variant): Don't clobber
29230 TYPE_CANONICAL on an existing type.
29232 2018-02-15 Jakub Jelinek <jakub@redhat.com>
29234 PR tree-optimization/84383
29235 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Don't look at
29236 dstoff nor call operand_equal_p if dstbase is NULL.
29238 PR tree-optimization/84334
29239 * match.pd ((A +- CST1) +- CST2 -> A + CST3): If A is
29240 also a CONSTANT_CLASS_P, punt.
29242 2018-02-14 Jim Wilson <jimw@sifive.com>
29244 * config/riscv/riscv.c (riscv_first_stack_step): Move locals after
29245 first SMALL_OPERAND check. New local min_second_step. Move assert
29246 to where locals are set. Add TARGET_RVC support.
29247 * config/riscv/riscv.h (C_SxSP_BITS, SWSP_REACH, SDSP_REACH): New.
29249 2018-02-14 Indu Bhagat <indu.bhagat@oracle.com>
29251 * doc/invoke.texi: Correct -Wformat-overflow code sample.
29253 2018-02-14 Martin Sebor <msebor@redhat.com>
29255 PR tree-optimization/83698
29256 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For
29257 arrays constrain the offset range to their bounds.
29258 (builtin_access::strcat_overlap): Adjust the bounds of overlap offset.
29259 (builtin_access::overlap): Avoid setting the size of overlap if it's
29261 (maybe_diag_overlap): Also consider arrays when deciding what values
29262 of offsets to include in diagnostics.
29264 2018-02-14 Martin Sebor <msebor@redhat.com>
29267 * attribs.c (diag_attr_exclusions): Consider the exclusion(s)
29268 that correspond to the kind of a declaration.
29270 2018-02-14 John David Anglin <danglin@gcc.gnu.org>
29273 * config/pa/pa.md: Load address of PIC label using the linkage table
29274 if the label is nonlocal.
29276 2018-02-14 Kelvin Nilsen <kelvin@gcc.gnu.org>
29278 * config/rs6000/rs6000.c (rs6000_option_override_internal): Issue
29279 warning message if user requests -maltivec=be.
29280 * doc/invoke.texi: Document deprecation of -maltivec=be.
29282 2018-02-14 Will Schmidt <will_schmidt@vnet.ibm.com>
29285 * config/rs6000/rs6000-c.c: Update definitions for
29286 ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VEC_SLDW,
29287 VEC_XXSLDWI and ALTIVEC_BUILTIN_VEC_XXPERMDI builtins.
29289 2018-02-14 Igor Tsimbalist <igor.v.tsimbalist@intel.com>
29292 * config/i386/cetintrin.h: Remove _rdssp[d|q] and
29293 add _get_ssp intrinsics. Remove argument from
29294 __builtin_ia32_rdssp[d|q].
29295 * config/i386/i386-builtin-types.def: Add UINT_FTYPE_VOID.
29296 * config/i386/i386-builtin.def: Remove argument from
29297 __builtin_ia32_rdssp[d|q].
29298 * config/i386/i386.c: Use UINT_FTYPE_VOID. Use
29299 ix86_expand_special_args_builtin for _rdssp[d|q].
29300 * config/i386/i386.md: Remove argument from rdssp[si|di] insn.
29301 Clear register before usage.
29302 * doc/extend.texi: Remove argument from __builtin_ia32_rdssp[d|q].
29303 Add documentation for new _get_ssp and _inc_ssp intrinsics.
29305 2018-02-14 Richard Sandiford <richard.sandiford@linaro.org>
29307 PR tree-optimization/84357
29308 * tree-data-ref.c (object_address_invariant_in_loop_p): Check
29309 operand 1 of an ARRAY_REF too.
29311 2018-02-14 Oleg Endo <olegendo@gcc.gnu.org>
29314 * config/rx/rx-protos.h (rx_reg_dead_or_unused_after_insn,
29315 rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
29317 (set_of_reg): New struct.
29318 (rx_find_set_of_reg, rx_find_use_of_reg): New functions.
29319 * config/rx/rx.c (rx_reg_dead_or_unused_after_insn,
29320 rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
29322 * config/rx/rx.md (andsi3, iorsi3, xorsi3): Convert to insn_and_split.
29323 Split into bitclr, bitset, bitinvert patterns if appropriate.
29324 (*bitset, *bitinvert, *bitclr): Convert to named insn_and_split and
29325 use rx_fuse_in_memory_bitop.
29326 (*bitset_in_memory, *bitinvert_in_memory, *bitclr_in_memory): Convert
29327 to named insn, correct maximum insn length.
29329 2018-02-14 Jozef Lawrynowicz <jozefl.gcc@gmail.com>
29332 * machmode.def: Define a complex mode for PARTIAL_INT.
29333 * genmodes.c (complex_class): Return MODE_COMPLEX_INT for
29335 * doc/rtl.texi: Document CSPImode.
29336 * config/msp430/msp430.c (msp430_hard_regno_nregs): Add CPSImode
29338 (msp430_hard_regno_nregs_with_padding): Likewise.
29340 2018-02-13 Peter Bergner <bergner@vnet.ibm.com>
29343 * config/rs6000/rs6000.c (mem_operand_gpr): Disallow altivec addresses.
29345 2018-02-13 Segher Boessenkool <segher@kernel.crashing.org>
29347 PR rtl-optimization/84169
29348 * combine.c (try_combine): New variable split_i2i3. Set it to true if
29349 we generated a parallel as new i3 and we split that to new i2 and i3
29350 instructions. Handle split_i2i3 similar to swap_i2i3: scan the
29351 LOG_LINKs of i3 to see which of those need to link to i2 now. Link
29352 those to i2, not i1. Partially rewrite this scan code.
29354 2018-02-13 Jakub Jelinek <jakub@redhat.com>
29357 * stor-layout.c (place_field): For variable length fields, adjust
29358 offset_align afterwards not just based on the field's alignment,
29359 but also on the size.
29361 PR middle-end/84309
29362 * match.pd (pow(C,x) -> exp(log(C)*x)): Use exp2s and log2s instead
29363 of exps and logs in the use_exp2 case.
29365 2018-02-13 Jeff Law <law@redhat.com>
29367 * config/rl/rl78.c (rl78_attribute_table): Fix terminator and
29368 entry for "vector".
29370 * config/rl78/rl78.c (rl78_handle_func_attribute): Mark
29373 2018-02-13 Alexandre Oliva <aoliva@redhat.com>
29377 * common.opt (gas-loc-support, gas-locview-support): New.
29378 (ginline-points, ginternal-reset-location-views): New.
29379 * doc/invoke.texi: Document them. Use @itemx where intended.
29380 (gvariable-location-views): Adjust.
29381 * target.def (reset_location_view): New.
29382 * doc/tm.texi.in (DWARF2_ASM_VIEW_DEBUG_INFO): New.
29383 (TARGET_RESET_LOCATION_VIEW): New.
29384 * doc/tm.texi: Rebuilt.
29385 * dwarf2out.c (dwarf2out_default_as_loc_support): New.
29386 (dwarf2out_default_as_locview_support): New.
29387 (output_asm_line_debug_info): Use option variables.
29388 (dwarf2out_maybe_output_loclist_view_pair): Likewise.
29389 (output_loc_list): Likewise.
29390 (add_high_low_attributes): Check option variables.
29391 Don't output entry view attribute in strict mode.
29392 (gen_inlined_subroutine_die): Check option variables.
29393 (dwarf2out_inline_entry): Likewise.
29394 (init_sections_and_labels): Likewise.
29395 (dwarf2out_early_finish): Likewise.
29396 (maybe_reset_location_view): New, from...
29397 (dwarf2out_var_location): ... here. Call it.
29398 * debug.h (dwarf2out_default_as_loc_support): Declare.
29399 (dwarf2out_default_as_locview_support): Declare.
29400 * hooks.c (hook_int_rtx_insn_0): New.
29401 * hooks.h (hook_int_rtx_insn_0): Declare.
29402 * toplev.c (process_options): Take -gas-loc-support and
29403 -gas-locview-support from dwarf2out. Enable
29404 -gvariable-location-views by default only with locview
29405 assembler support. Enable -ginternal-reset-location-views by
29406 default only if the target defines the corresponding hook.
29407 Enable -ginline-points by default if location views are
29408 enabled; force it disabled if statement frontiers are
29410 * tree-inline.c (expand_call_inline): Check option variables.
29411 * tree-ssa-live.c (remove_unused_scope_block_p): Likewise.
29413 2018-02-13 Richard Sandiford <richard.sandiford@linaro.org>
29415 PR tree-optimization/84321
29416 * tree-vrp.c (intersect_range_with_nonzero_bits): Fix VR_ANTI_RANGE
29417 handling. Also check whether the anti-range contains any values
29418 that satisfy the mask; switch to a VR_RANGE if not.
29420 2018-02-13 Paolo Bonzini <bonzini@gnu.org>
29423 * internal-fn.def (ASAN_CHECK, ASAN_MARK): Revert changes to fnspec.
29425 2018-02-13 Martin Jambor <mjambor@suse.cz>
29428 * ipa-param-manipulation.c (ipa_modify_call_arguments): Use location
29429 of call statements, also set location of a load to a temporary.
29431 2018-02-13 Sebastian Perta <sebastian.perta@renesas.com>
29433 * config/rl78/rl78.c (add_vector_labels): New function.
29434 * config/rl78/rl78.c (rl78_handle_vector_attribute): New function.
29435 * config/rl78/rl78.c (rl78_start_function): Call add_vector_labels.
29436 * config/rl78/rl78.c (rl78_handle_func_attribute): Removed the assert
29437 which checks that no arguments are passed.
29438 * config/rl78/rl78.c (rl78_attribute_table): Add "vector" attribute.
29439 * doc/extend.texi: Documentation for the new attribute.
29441 2018-02-13 Andreas Schwab <schwab@suse.de>
29443 * config/riscv/linux.h (CPP_SPEC): Define.
29445 2018-02-13 Jakub Jelinek <jakub@redhat.com>
29448 * config/i386/i386.c (ix86_init_mmx_sse_builtins): Pass
29449 OPTION_MASK_ISA_AES | OPTION_MASK_ISA_SSE2 instead of
29450 OPTION_MASK_ISA_AES as first argument to def_builtin_const
29451 for AES builtins. Pass OPTION_MASK_ISA_PCLMUL | OPTION_MASK_ISA_SSE2
29452 instead of OPTION_MASK_ISA_PCLMUL as first argument to
29453 def_builtin_const for __builtin_ia32_pclmulqdq128 builtin.
29454 * config/i386/wmmintrin.h: If __SSE2__ is not defined, enable it
29455 temporarily for AES and PCLMUL builtins.
29457 PR tree-optimization/84339
29458 * gimple-fold.c (get_range_strlen): Set *FLEXP to true when handling
29459 ARRAY_REF where first operand is array_at_struct_end_p COMPONENT_REF.
29462 PR middle-end/84309
29463 * match.pd (pow(C,x) -> exp(log(C)*x)): Optimize instead into
29464 exp2(log2(C)*x) if C is a power of 2 and c99 runtime is available.
29465 * generic-match-head.c (canonicalize_math_after_vectorization_p): New
29467 * gimple-match-head.c (canonicalize_math_after_vectorization_p): New
29469 * omp-simd-clone.h: New file.
29470 * omp-simd-clone.c: Include omp-simd-clone.h.
29471 (expand_simd_clones): No longer static.
29472 * tree-vect-patterns.c: Include fold-const-call.h, attribs.h,
29473 cgraph.h and omp-simd-clone.h.
29474 (vect_recog_pow_pattern): Optimize pow(C,x) to exp(log(C)*x).
29475 (vect_recog_widen_shift_pattern): Formatting fix.
29476 (vect_pattern_recog_1): Don't check optab for calls.
29479 * config/i386/sse.md (<avx512>_vpermi2var<mode>3_mask): Force
29480 operands[2] into a REG before using gen_lowpart on it.
29482 2018-02-12 Jeff Law <law@redhat.com>
29485 * config/sh/sh.c (find_barrier): Consider a sibling call
29488 * cse.c (try_back_substitute_reg): Move any REG_ARGS_SIZE note when
29489 successfully back substituting a reg.
29491 2018-02-12 Richard Biener <rguenther@suse.de>
29493 PR tree-optimization/84037
29494 * tree-vect-slp.c (vect_analyze_slp_cost): Add visited
29495 parameter, move visited init to caller.
29496 (vect_slp_analyze_operations): Separate cost from validity
29497 check, initialize visited once for all instances.
29498 (vect_schedule_slp): Analyze map to CSE vectorized nodes once
29500 * tree-vect-stmts.c (vect_model_simple_cost): Make early
29502 (vect_model_promotion_demotion_cost): Likewise.
29503 (vectorizable_bswap): Guard cost modeling with !slp_node
29504 instead of !PURE_SLP_STMT to avoid double-counting on hybrid
29506 (vectorizable_call): Likewise.
29507 (vectorizable_conversion): Likewise.
29508 (vectorizable_assignment): Likewise.
29509 (vectorizable_shift): Likewise.
29510 (vectorizable_operation): Likewise.
29511 (vectorizable_store): Likewise.
29512 (vectorizable_load): Likewise.
29513 (vectorizable_condition): Likewise.
29514 (vectorizable_comparison): Likewise.
29516 2018-02-12 Paolo Bonzini <bonzini@gnu.org>
29519 * internal-fn.def (ASAN_CHECK): Fix fnspec to account for return value.
29520 (ASAN_MARK): Fix fnspec to account for return value, change pointer
29521 argument from 'R' to 'W' so that the pointed-to datum is clobbered.
29523 2018-02-08 Jan Hubicka <hubicka@ucw.cz>
29525 PR middle-end/83665
29526 * params.def (inline-min-speedup): Increase from 8 to 15.
29527 (max-inline-insns-auto): Decrease from 40 to 30.
29528 * ipa-split.c (consider_split): Add some buffer for function to
29529 be considered inlining candidate.
29530 * invoke.texi (max-inline-insns-auto, inline-min-speedup): UPdate
29533 2018-02-12 Richard Biener <rguenther@suse.de>
29535 PR tree-optimization/84037
29536 * tree-vect-slp.c (vect_build_slp_tree_2): Try swapping the
29537 matched stmts if we cannot swap the non-matched ones.
29539 2018-02-12 Olga Makhotina <olga.makhotina@intel.com>
29541 * config/i386/avx512fintrin.h (_mm_mask_scalef_round_sd,
29542 _mm_maskz_scalef_round_sd, _mm_mask_scalef_round_ss,
29543 _mm_maskz_scalef_round_ss): New intrinsics.
29544 (__builtin_ia32_scalefsd_round, __builtin_ia32_scalefss_round): Fix.
29545 * config/i386/i386-builtin.def (__builtin_ia32_scalefsd_round,
29546 __builtin_ia32_scalefss_round): Remove.
29547 (__builtin_ia32_scalefsd_mask_round,
29548 __builtin_ia32_scalefss_mask_round): New intrinsics.
29549 * config/i386/sse.md (vmscalef<mode><round_name>): Renamed to ...
29550 (vmscalef<mode><mask_scalar_name><round_scalar_name>): ... this.
29551 ((match_operand:VF_128 2 "<round_nimm_predicate>"
29552 "<round_constraint>")): Changed to ...
29553 ((match_operand:VF_128 2 "<round_scalar_nimm_predicate>"
29554 "<round_scalar_constraint>")): ... this.
29555 ("vscalef<ssescalarmodesuffix>\t{<round_op3>%2, %1, %0|
29556 %0, %1, %2<round_op3>}"): Changed to ...
29557 ("vscalef<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%2, %1,
29558 %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %1,
29559 %2<round_scalar_mask_op3>}"): ... this.
29560 * config/i386/subst.md (round_scalar_nimm_predicate): New.
29562 2018-02-12 Olga Makhotina <olga.makhotina@intel.com>
29564 * config/i386/avx512fintrin.h (_mm_mask_sqrt_round_sd)
29565 (_mm_maskz_sqrt_round_sd, _mm_mask_sqrt_round_ss)
29566 (_mm_maskz_sqrt_round_ss): New intrinsics.
29567 (__builtin_ia32_sqrtsd_round, __builtin_ia32_sqrtss_round): Remove.
29568 (__builtin_ia32_sqrtsd_mask_round)
29569 (__builtin_ia32_sqrtss_mask_round): New builtins.
29570 * config/i386/i386-builtin.def (__builtin_ia32_sqrtsd_round)
29571 (__builtin_ia32_sqrtss_round): Remove.
29572 (__builtin_ia32_sqrtsd_mask_round)
29573 (__builtin_ia32_sqrtss_mask_round): New builtins.
29574 * config/i386/sse.md (vmsqrt<mode>2<round_name>): Renamed to ...
29575 (vmsqrt<mode>2<mask_scalar_name><round_scalar_name>): ... this.
29576 ((match_operand:VF_128 1 "vector_operand"
29577 "xBm,<round_constraint>")): Changed to ...
29578 ((match_operand:VF_128 1 "vector_operand"
29579 "xBm,<round_scalar_constraint>")): ... this.
29580 (vsqrt<ssescalarmodesuffix>\t{<round_op3>%1, %2, %0|
29581 %0, %2, %<iptr>1<round_op3>}): Changed to ...
29582 (vsqrt<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%1, %2,
29583 %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %2,
29584 %<iptr>1<round_scalar_mask_op3>}): ... this.
29585 ((set_attr "prefix" "<round_prefix>")): Changed to ...
29586 ((set_attr "prefix" "<round_scalar_prefix>")): ... this.
29588 2018-02-11 Steven Munroe <munroesj@gcc.gnu.org>
29591 * config/rs6000/mmintrin.h (_mm_cmpeq_pi32 [_ARCH_PWR9]):
29592 Cast vec_cmpeq result to correct type.
29593 * config/rs6000/mmintrin.h (_mm_cmpgt_pi32 [_ARCH_PWR9]):
29594 Cast vec_cmpgt result to correct type.
29596 2018-02-11 Alexandre Oliva <aoliva@redhat.com>
29598 * final.c (final_scan_insn_1): Renamed from...
29599 (final_scan_insn): ... this. New wrapper, to recover
29600 seen from the outermost call in recursive ones.
29601 * config/sparc/sparc.c (output_return): Drop seen from call.
29602 (output_sibcall): Likewise.
29603 * config/visium/visium.c (output_branch): Likewise.
29605 2018-02-10 John David Anglin <danglin@gcc.gnu.org>
29607 * config/pa/pa.c (hppa_profile_hook): Mark SYMBOL_REF for _mcount as
29610 2018-02-10 Alan Modra <amodra@gmail.com>
29613 * config/rs6000/rs6000.md (split_stack_return): Remove (use ..).
29614 Specify LR as an input.
29616 2018-02-10 Jakub Jelinek <jakub@redhat.com>
29619 * omp-low.c (maybe_remove_omp_member_access_dummy_vars,
29620 remove_member_access_dummy_vars): New functions.
29621 (lower_omp_for, lower_omp_taskreg, lower_omp_target,
29622 lower_omp_1, execute_lower_omp): Use them.
29624 PR rtl-optimization/84308
29625 * shrink-wrap.c (spread_components): Release todo vector.
29627 2018-02-09 Vladimir Makarov <vmakarov@redhat.com>
29629 PR rtl-optimization/57193
29630 * ira-color.c (struct allocno_color_data): Add member
29631 conflict_allocno_hard_prefs.
29632 (update_conflict_allocno_hard_prefs): New.
29633 (bucket_allocno_compare_func): Add a preference based on
29634 conflict_allocno_hard_prefs.
29635 (push_allocno_to_stack): Update conflict_allocno_hard_prefs.
29636 (color_allocnos): Remove a dead code. Initiate
29637 conflict_allocno_hard_prefs. Call update_costs_from_prefs.
29639 2018-02-09 Jakub Jelinek <jakub@redhat.com>
29642 * config/rs6000/vsx.md (p9_xxbrq_v16qi): Change input operand
29643 constraint from =wa to wa. Avoid a subreg on the output operand,
29644 instead use a pseudo and subreg it in a move.
29645 (p9_xxbrd_<mode>): Changed to ...
29646 (p9_xxbrd_v2di): ... this insn, without VSX_D iterator.
29647 (p9_xxbrd_v2df): New expander.
29648 (p9_xxbrw_<mode>): Changed to ...
29649 (p9_xxbrw_v4si): ... this insn, without VSX_W iterator.
29650 (p9_xxbrw_v4sf): New expander.
29652 2018-02-09 Sebastian Perta <sebastian.perta@renesas.com>
29654 * config/rx/rx.md (movsicc): Update expander to be matched by GCC.
29656 2018-02-09 Peter Bergner <bergner@vnet.ibm.com>
29659 * config/rs6000/vsx.md (vsx_mul_v2di): Handle generating a 64-bit
29660 multiply in 32-bit mode.
29661 (vsx_div_v2di): Handle generating a 64-bit signed divide in 32-bit mode.
29662 (vsx_udiv_v2di): Handle generating a 64-bit unsigned divide in 32-bit
29665 2018-02-09 Sebastian Perta <sebastian.perta@renesas.com>
29667 * config/rx/constraints.md (CALL_OP_SYMBOL_REF): Added new constraint
29668 to allow or block "symbol_ref" depending on the value of TARGET_JSR.
29669 * config/rx/rx.md (call_internal): Use CALL_OP_SYMBOL_REF.
29670 * config/rx/rx.md (call_value_internal): Use CALL_OP_SYMBOL_REF.
29672 2018-02-09 Pierre-Marie de Rodat <derodat@adacore.com>
29675 * dwarf2out.c (is_trivial_indirect_ref): New function.
29676 (dwarf2out_late_global_decl): Do not generate a location
29677 attribute for variables that have a non-trivial DECL_VALUE_EXPR
29678 and that are not defined in the current unit.
29680 2018-02-09 Eric Botcazou <ebotcazou@adacore.com>
29682 * optabs.c (prepare_cmp_insn): Try harder to emit a direct comparison
29683 instead of a libcall for UNORDERED.
29685 2018-02-09 Tamar Christina <tamar.christina@arm.com>
29688 * config/arm/arm-c.c (arm_cpu_builtins): Un-define __ARM_FEATURE_LDREX,
29689 __ARM_ARCH_PROFILE, __ARM_ARCH_ISA_THUMB, __ARM_FP and __ARM_NEON_FP.
29691 2018-02-09 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
29694 * config/s390/s390.c (s390_set_current_function): Invoke
29695 s390_indirect_branch_settings also if fndecl didn't change.
29697 2018-02-09 Alexandre Oliva <aoliva@redhat.com>
29699 * config/rs6000/rs6000.md (blockage): Set length to zero.
29701 2018-02-09 Eric Botcazou <ebotcazou@adacore.com>
29703 * expr.c (optimize_bitfield_assignment_op): Remove obsolete assertion.
29705 2018-02-09 Jakub Jelinek <jakub@redhat.com>
29708 * gcc.c (STATIC_LIBASAN_LIBS, STATIC_LIBTSAN_LIBS,
29709 STATIC_LIBLSAN_LIBS, STATIC_LIBUBSAN_LIBS): Handle -static like
29713 * var-tracking.c (vt_add_function_parameter): Punt for non-onepart
29714 PARALLEL incoming that failed vt_get_decl_and_offset check.
29716 PR middle-end/84237
29717 * output.h (bss_initializer_p): Add NAMED argument, defaulted to false.
29718 * varasm.c (bss_initializer_p): Add NAMED argument, if true, ignore
29720 (get_variable_section): For decls in named .bss* sections pass true as
29721 second argument to bss_initializer_p.
29723 2018-02-09 Marek Polacek <polacek@redhat.com>
29724 Jakub Jelinek <jakub@redhat.com>
29727 * fold-const.c (fold_indirect_ref_1): Use VECTOR_TYPE_P macro.
29728 Formatting fixes. Verify first that tree_fits_poly_int64_p (op01).
29729 Sync some changes from cxx_fold_indirect_ref.
29731 2018-02-09 Alexandre Oliva <aoliva@redhat.com>
29733 * cfgexpand.c (expand_gimple_basic_block): Handle inline entry
29735 * dwarf2out.c (dwarf2_debug_hooks): Enable inline_entry hook.
29736 (BLOCK_INLINE_ENTRY_LABEL): New.
29737 (dwarf2out_var_location): Disregard inline entry markers.
29738 (inline_entry_data): New struct.
29739 (inline_entry_data_hasher): New hashtable type.
29740 (inline_entry_data_hasher::hash): New.
29741 (inline_entry_data_hasher::equal): New.
29742 (inline_entry_data_table): New variable.
29743 (add_high_low_attributes): Add DW_AT_entry_pc and
29744 DW_AT_GNU_entry_view attributes if a pending entry is found
29745 in inline_entry_data_table. Add old entry_pc attribute only
29746 if debug nonbinding markers are disabled.
29747 (gen_inlined_subroutine_die): Set BLOCK_DIE if nonbinding
29748 markers are enabled.
29749 (block_within_block_p, dwarf2out_inline_entry): New.
29750 (dwarf2out_finish): Check that no entries remained in
29751 inline_entry_data_table.
29752 * final.c (reemit_insn_block_notes): Handle inline entry notes.
29753 (final_scan_insn, notice_source_line): Likewise.
29754 (rest_of_clean_state): Skip inline entry markers.
29755 * gimple-pretty-print.c (dump_gimple_debug): Handle inline entry
29757 * gimple.c (gimple_build_debug_inline_entry): New.
29758 * gimple.h (enum gimple_debug_subcode): Add
29759 GIMPLE_DEBUG_INLINE_ENTRY.
29760 (gimple_build_debug_inline_entry): Declare.
29761 (gimple_debug_inline_entry_p): New.
29762 (gimple_debug_nonbind_marker_p): Adjust.
29763 * insn-notes.def (INLINE_ENTRY): New.
29764 * print-rtl.c (rtx_writer::print_rtx_operand_code_0): Handle
29765 inline entry marker notes.
29766 (print_insn): Likewise.
29767 * rtl.h (NOTE_MARKER_P): Add INLINE_ENTRY support.
29768 (INSN_DEBUG_MARKER_KIND): Likewise.
29769 (GEN_RTX_DEBUG_MARKER_INLINE_ENTRY_PAT): New.
29770 * tree-inline.c (expand_call_inline): Build and insert
29771 debug_inline_entry stmt.
29772 * tree-ssa-live.c (remove_unused_scope_block_p): Preserve
29773 inline entry blocks early, if nonbind markers are enabled.
29774 (dump_scope_block): Dump fragment info.
29775 * var-tracking.c (reemit_marker_as_note): Handle inline entry note.
29776 * doc/gimple.texi (gimple_debug_inline_entry_p): New.
29777 (gimple_build_debug_inline_entry): New.
29778 * doc/invoke.texi (gstatement-frontiers, gno-statement-frontiers):
29779 Enable/disable inline entry points too.
29780 * doc/rtl.texi (NOTE_INSN_INLINE_ENTRY): New.
29781 (DEBUG_INSN): Describe inline entry markers.
29783 * common.opt (gvariable-location-views): New.
29784 (gvariable-location-views=incompat5): New.
29785 * config.in: Rebuilt.
29786 * configure: Rebuilt.
29787 * configure.ac: Test assembler for view support.
29788 * dwarf2asm.c (dw2_asm_output_symname_uleb128): New.
29789 * dwarf2asm.h (dw2_asm_output_symname_uleb128): Declare.
29790 * dwarf2out.c (var_loc_view): New typedef.
29791 (struct dw_loc_list_struct): Add vl_symbol, vbegin, vend.
29792 (dwarf2out_locviews_in_attribute): New.
29793 (dwarf2out_locviews_in_loclist): New.
29794 (dw_val_equal_p): Compare val_view_list of dw_val_class_view_lists.
29795 (enum dw_line_info_opcode): Add LI_adv_address.
29796 (struct dw_line_info_table): Add view.
29797 (RESET_NEXT_VIEW, RESETTING_VIEW_P): New macros.
29798 (DWARF2_ASM_VIEW_DEBUG_INFO): Define default.
29799 (zero_view_p): New variable.
29800 (ZERO_VIEW_P): New macro.
29801 (output_asm_line_debug_info): New.
29802 (struct var_loc_node): Add view.
29803 (add_AT_view_list, AT_loc_list): New.
29804 (add_var_loc_to_decl): Add view param. Test it against last.
29805 (new_loc_list): Add view params. Record them.
29806 (AT_loc_list_ptr): Handle loc and view lists.
29807 (view_list_to_loc_list_val_node): New.
29808 (print_dw_val): Handle dw_val_class_view_list.
29809 (size_of_die): Likewise.
29810 (value_format): Likewise.
29811 (loc_list_has_views): New.
29812 (gen_llsym): Set vl_symbol too.
29813 (maybe_gen_llsym, skip_loc_list_entry): New.
29814 (dwarf2out_maybe_output_loclist_view_pair): New.
29815 (output_loc_list): Output view list or entries too.
29816 (output_view_list_offset): New.
29817 (output_die): Handle dw_val_class_view_list.
29818 (output_dwarf_version): New.
29819 (output_compilation_unit_header): Use it.
29820 (output_skeleton_debug_sections): Likewise.
29821 (output_rnglists, output_line_info): Likewise.
29822 (output_pubnames, output_aranges): Update version comments.
29823 (output_one_line_info_table): Output view numbers in asm comments.
29824 (dw_loc_list): Determine current endview, pass it to new_loc_list.
29825 Call maybe_gen_llsym.
29826 (loc_list_from_tree_1): Adjust.
29827 (add_AT_location_description): Create view list attribute if
29828 needed, check it's absent otherwise.
29829 (convert_cfa_to_fb_loc_list): Adjust.
29830 (maybe_emit_file): Call output_asm_line_debug_info for test.
29831 (dwarf2out_var_location): Reset views as needed. Precompute
29832 add_var_loc_to_decl args. Call get_attr_min_length only if we have the
29833 attribute. Set view.
29834 (new_line_info_table): Reset next view.
29835 (set_cur_line_info_table): Call output_asm_line_debug_info for test.
29836 (dwarf2out_source_line): Likewise. Output view resets and labels to
29837 the assembler, or select appropriate line info opcodes.
29838 (prune_unused_types_walk_attribs): Handle dw_val_class_view_list.
29839 (optimize_string_length): Catch it. Adjust.
29840 (resolve_addr): Copy vl_symbol along with ll_symbol. Handle
29841 dw_val_class_view_list, and remove it if no longer needed.
29842 (hash_loc_list): Hash view numbers.
29843 (loc_list_hasher::equal): Compare them.
29844 (optimize_location_lists): Check whether a view list symbol is
29845 needed, and whether the locview attribute is present, and
29846 whether they match. Remove the locview attribute if no longer
29848 (index_location_lists): Call skip_loc_list_entry for test.
29849 (dwarf2out_finish): Call output_asm_line_debug_info for test.
29850 Use output_dwarf_version.
29851 * dwarf2out.h (enum dw_val_class): Add dw_val_class_view_list.
29852 (struct dw_val_node): Add val_view_list.
29853 * final.c (SEEN_NEXT_VIEW): New.
29854 (set_next_view_needed): New.
29855 (clear_next_view_needed): New.
29856 (maybe_output_next_view): New.
29857 (final_start_function): Rename to...
29858 (final_start_function_1): ... this. Take pointer to FIRST,
29859 add SEEN parameter. Emit param bindings in the initial view.
29860 (final_start_function): Reintroduce SEEN-less interface.
29861 (final): Rename to...
29862 (final_1): ... this. Take SEEN parameter. Output final pending
29863 next view at the end.
29864 (final): Reintroduce seen-less interface.
29865 (final_scan_insn): Output pending next view before switching
29866 sections or ending a block. Mark the next view as needed when
29867 outputting variable locations. Notify debug backend of section
29868 changes, and of location view changes.
29869 (rest_of_handle_final): Adjust.
29870 * toplev.c (process_options): Autodetect value for debug variable
29871 location views option. Warn on incompat5 without -gdwarf-5.
29872 * doc/invoke.texi (gvariable-location-views): New.
29873 (gvariable-location-views=incompat5): New.
29874 (gno-variable-location-views): New.
29876 2018-02-08 David Malcolm <dmalcolm@redhat.com>
29878 PR tree-optimization/84136
29879 * tree-cfg.c (find_taken_edge_computed_goto): Remove assertion
29880 that the result of find_edge is non-NULL.
29882 2018-02-08 Sergey Shalnov <sergey.shalnov@intel.com>
29885 * config/i386/x86-tune-costs.h (skylake_cost): Fix cost of
29886 storing integer register in SImode. Fix cost of 256 and 512
29887 byte aligned SSE register store.
29889 2018-02-08 Sergey Shalnov <sergey.shalnov@intel.com>
29891 * config/i386/i386.c (ix86_multiplication_cost): Fix
29892 multiplication cost for TARGET_AVX512DQ.
29894 2018-02-08 Marek Polacek <polacek@redhat.com>
29896 PR tree-optimization/84238
29897 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Verify the result of
29900 2018-02-08 Richard Sandiford <richard.sandiford@linaro.org>
29902 PR tree-optimization/84265
29903 * tree-vect-stmts.c (vectorizable_store): Don't treat
29904 VMAT_CONTIGUOUS accesses as grouped.
29905 (vectorizable_load): Likewise.
29907 2018-02-08 Richard Sandiford <richard.sandiford@linaro.org>
29909 PR tree-optimization/81635
29910 * wide-int.h (wi::round_down_for_mask, wi::round_up_for_mask): Declare.
29911 * wide-int.cc (wi::round_down_for_mask, wi::round_up_for_mask)
29912 (test_round_for_mask): New functions.
29913 (wide_int_cc_tests): Call test_round_for_mask.
29914 * tree-vrp.h (intersect_range_with_nonzero_bits): Declare.
29915 * tree-vrp.c (intersect_range_with_nonzero_bits): New function.
29916 * tree-data-ref.c (split_constant_offset_1): Use it to refine the
29917 range returned by get_range_info.
29919 2018-02-08 Jan Hubicka <hubicka@ucw.cz>
29922 * cgraph.h (symtab_node::output_to_lto_symbol_table_p): Declare
29923 * symtab.c: Include builtins.h
29924 (symtab_node::output_to_lto_symbol_table_p): Move here
29925 from lto-streamer-out.c:output_symbol_p.
29926 * lto-streamer-out.c (write_symbol): Turn early exit to assert.
29927 (output_symbol_p): Move all logic to symtab.c
29928 (produce_symtab): Update.
29930 2018-02-08 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
29932 * config/s390/s390-opts.h (enum indirect_branch): Define.
29933 * config/s390/s390-protos.h (s390_return_addr_from_memory)
29934 (s390_indirect_branch_via_thunk)
29935 (s390_indirect_branch_via_inline_thunk): Add function prototypes.
29936 (enum s390_indirect_branch_type): Define.
29937 * config/s390/s390.c (struct s390_frame_layout, struct
29938 machine_function): Remove.
29939 (indirect_branch_prez10thunk_mask, indirect_branch_z10thunk_mask)
29940 (indirect_branch_table_label_no, indirect_branch_table_name):
29942 (INDIRECT_BRANCH_NUM_OPTIONS): Define macro.
29943 (enum s390_indirect_branch_option): Define.
29944 (s390_return_addr_from_memory): New function.
29945 (s390_handle_string_attribute): New function.
29946 (s390_attribute_table): Add new attribute handler.
29947 (s390_execute_label): Handle UNSPEC_EXECUTE_JUMP patterns.
29948 (s390_indirect_branch_via_thunk): New function.
29949 (s390_indirect_branch_via_inline_thunk): New function.
29950 (s390_function_ok_for_sibcall): When jumping via thunk disallow
29951 sibling call optimization for non z10 compiles.
29952 (s390_emit_call): Force indirect branch target to be a single
29953 register. Add r1 clobber for non-z10 compiles.
29954 (s390_emit_epilogue): Emit return jump via return_use expander.
29955 (s390_reorg): Handle JUMP_INSNs as execute targets.
29956 (s390_option_override_internal): Perform validity checks for the
29957 new command line options.
29958 (s390_indirect_branch_attrvalue): New function.
29959 (s390_indirect_branch_settings): New function.
29960 (s390_set_current_function): Invoke s390_indirect_branch_settings.
29961 (s390_output_indirect_thunk_function): New function.
29962 (s390_code_end): Implement target hook.
29963 (s390_case_values_threshold): Implement target hook.
29964 (TARGET_ASM_CODE_END, TARGET_CASE_VALUES_THRESHOLD): Define target
29966 * config/s390/s390.h (struct s390_frame_layout)
29967 (struct machine_function): Move here from s390.c.
29968 (TARGET_INDIRECT_BRANCH_NOBP_RET)
29969 (TARGET_INDIRECT_BRANCH_NOBP_JUMP)
29970 (TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK)
29971 (TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK)
29972 (TARGET_INDIRECT_BRANCH_NOBP_CALL)
29973 (TARGET_DEFAULT_INDIRECT_BRANCH_TABLE)
29974 (TARGET_INDIRECT_BRANCH_THUNK_NAME_EXRL)
29975 (TARGET_INDIRECT_BRANCH_THUNK_NAME_EX)
29976 (TARGET_INDIRECT_BRANCH_TABLE): Define macros.
29977 * config/s390/s390.md (UNSPEC_EXECUTE_JUMP)
29978 (INDIRECT_BRANCH_THUNK_REGNUM): Define constants.
29979 (mnemonic attribute): Add values which aren't recognized
29981 ("*cjump_long", "*icjump_long", "*basr", "*basr_r"): Disable
29982 pattern for branch conversion. Fix mnemonic attribute.
29983 ("*c<code>", "*sibcall_br", "*sibcall_value_br", "*return"): Emit
29984 indirect branch via thunk if requested.
29985 ("indirect_jump", "<code>"): Expand patterns for branch conversion.
29986 ("*indirect_jump"): Disable for branch conversion using out of
29988 ("indirect_jump_via_thunk<mode>_z10")
29989 ("indirect_jump_via_thunk<mode>")
29990 ("indirect_jump_via_inlinethunk<mode>_z10")
29991 ("indirect_jump_via_inlinethunk<mode>", "*casesi_jump")
29992 ("casesi_jump_via_thunk<mode>_z10", "casesi_jump_via_thunk<mode>")
29993 ("casesi_jump_via_inlinethunk<mode>_z10")
29994 ("casesi_jump_via_inlinethunk<mode>", "*basr_via_thunk<mode>_z10")
29995 ("*basr_via_thunk<mode>", "*basr_r_via_thunk_z10")
29996 ("*basr_r_via_thunk", "return<mode>_prez10"): New pattern.
29997 ("*indirect2_jump"): Disable for branch conversion.
29998 ("casesi_jump"): Turn into expander and expand patterns for branch
30000 ("return_use"): New expander.
30001 ("*return"): Emit return via thunk and rename it to ...
30002 ("*return<mode>"): ... this one.
30003 * config/s390/s390.opt: Add new options and and enum for the
30006 2018-02-08 Richard Sandiford <richard.sandiford@linaro.org>
30008 * lra-constraints.c (match_reload): Unconditionally use
30009 gen_lowpart_SUBREG, rather than selecting between that
30010 and equivalent gen_rtx_SUBREG code.
30012 2018-02-08 Richard Biener <rguenther@suse.de>
30014 PR tree-optimization/84233
30015 * tree-ssa-phiprop.c (propagate_with_phi): Use separate
30016 changed flag instead of boguously re-using phi_inserted.
30018 2018-02-08 Martin Jambor <mjambor@suse.cz>
30020 * hsa-gen.c (get_symbol_for_decl): Set program allocation for
30021 static local variables.
30023 2018-02-08 Richard Biener <rguenther@suse.de>
30025 PR tree-optimization/84278
30026 * tree-vect-stmts.c (vectorizable_store): When looking for
30027 smaller vector types to perform grouped strided loads/stores
30028 make sure the mode is supported by the target.
30029 (vectorizable_load): Likewise.
30031 2018-02-08 Wilco Dijkstra <wdijkstr@arm.com>
30033 * config/aarch64/aarch64.c (aarch64_components_for_bb):
30034 Increase LDP/STP opportunities by adding adjacent callee-saves.
30036 2018-02-08 Wilco Dijkstra <wdijkstr@arm.com>
30038 PR rtl-optimization/84068
30039 PR rtl-optimization/83459
30040 * haifa-sched.c (rank_for_schedule): Fix SCHED_PRESSURE_MODEL sorting.
30042 2018-02-08 Aldy Hernandez <aldyh@redhat.com>
30044 PR tree-optimization/84224
30045 * gimple-ssa-warn-alloca.c (pass_walloca::execute): Remove assert.
30046 * calls.c (gimple_alloca_call_p): Only return TRUE when we have
30047 non-zero arguments.
30049 2018-02-07 Iain Sandoe <iain@codesourcery.com>
30052 * config/rs6000/altivec.md (*restore_world): Remove LR use.
30053 * config/rs6000/predicates.md (restore_world_operation): Adjust op
30054 count, remove one USE.
30056 2018-02-07 Michael Meissner <meissner@linux.vnet.ibm.com>
30058 * doc/install.texi (Configuration): Document the
30059 --with-long-double-format={ibm,ieee} PowerPC configuration
30063 * config/rs6000/rs6000.md (fix_trunc<SFDF:mode><QHI:mode>2):
30064 Convert from define_expand to be define_insn_and_split. Rework
30065 float/double/_Float128 conversions to QI/HI/SImode to work with
30066 both ISA 2.07 (power8) or ISA 3.0 (power9). Fix regression where
30067 conversions to QI/HImode types did a store and then a load to
30068 truncate the value. For conversions to VSX registers, don't split
30069 the insn, instead emit the code directly. Use the code iterator
30070 any_fix to combine signed and unsigned conversions.
30071 (fix<uns>_trunc<SFDF:mode>si2_p8): Likewise.
30072 (fixuns_trunc<SFDF:mode><QHI:mode>2): Likewise.
30073 (fix_trunc<IEEE128:mode><QHI:mode>2): Likewise.
30074 (fix<uns>_trunc<SFDF:mode><QHI:mode>2): Likewise.
30075 (fix_<mode>di2_hw): Likewise.
30076 (fixuns_<mode>di2_hw): Likewise.
30077 (fix_<mode>si2_hw): Likewise.
30078 (fixuns_<mode>si2_hw): Likewise.
30079 (fix<uns>_<IEEE128:mode><SDI:mode>2_hw): Likewise.
30080 (fix<uns>_trunc<IEEE128:mode><QHI:mode>2): Likewise.
30081 (fctiw<u>z_<mode>_smallint): Rename fctiw<u>z_<mode>_smallint to
30082 fix<uns>_trunc<SFDF:mode>si2_p8.
30083 (fix_trunc<SFDF:mode><QHI:mode>2_internal): Delete, no longer used.
30084 (fixuns_trunc<SFDF:mode><QHI:mode>2_internal): Likewise.
30085 (fix<uns>_<mode>_mem): Likewise.
30086 (fctiw<u>z_<mode>_mem): Likewise.
30087 (fix<uns>_<mode>_mem): Likewise.
30088 (fix<uns>_trunc<SFDF:mode><QHSI:mode>2_mem): On ISA 3.0, prevent
30089 the register allocator from doing a direct move to the GPRs to do
30090 a store, and instead use the ISA 3.0 store byte/half-word from
30091 vector register instruction. For IEEE 128-bit floating point,
30092 also optimize stores of 32-bit ints.
30093 (fix<uns>_trunc<IEEE128:mode><QHSI:mode>2_mem): Likewise.
30095 2018-02-07 Alan Hayward <alan.hayward@arm.com>
30097 * genextract.c (push_pathstr_operand): New function to support
30099 (walk_rtx): Call push_pathstr_operand.
30100 (print_path): Support [a-zA-Z].
30102 2018-02-07 Richard Biener <rguenther@suse.de>
30104 PR tree-optimization/84037
30105 * tree-vectorizer.h (struct _loop_vec_info): Add ivexpr_map member.
30106 (cse_and_gimplify_to_preheader): Declare.
30107 (vect_get_place_in_interleaving_chain): Likewise.
30108 * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
30110 (_loop_vec_info::~_loop_vec_info): Delete it.
30111 (cse_and_gimplify_to_preheader): New function.
30112 * tree-vect-slp.c (vect_get_place_in_interleaving_chain): Export.
30113 * tree-vect-stmts.c (vectorizable_store): CSE base and steps.
30114 (vectorizable_load): Likewise. For grouped stores always base
30115 the IV on the first element.
30116 * tree-vect-loop-manip.c (vect_loop_versioning): Unshare versioning
30117 condition before gimplifying.
30119 2018-02-07 Jakub Jelinek <jakub@redhat.com>
30121 * tree-eh.c (operation_could_trap_helper_p): Ignore honor_trapv for
30122 *DIV_EXPR and *MOD_EXPR.
30124 2018-02-07 H.J. Lu <hongjiu.lu@intel.com>
30127 * config/i386/i386.c (ix86_option_override_internal): Mask out
30128 the CF_SET bit when checking -fcf-protection.
30130 2018-02-07 Tom de Vries <tom@codesourcery.com>
30133 * omp-expand.c (expand_oacc_collapse_init): Ensure diff_type is large
30136 2018-02-07 Richard Biener <rguenther@suse.de>
30138 PR tree-optimization/84204
30139 * tree-chrec.c (chrec_fold_plus_1): Remove size limiting in
30142 PR tree-optimization/84205
30143 * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Also
30144 special-case isl_ast_op_zdiv_r.
30146 PR tree-optimization/84223
30147 * graphite-scop-detection.c (gather_bbs::before_dom_children):
30148 Only add conditions from within the region.
30149 (gather_bbs::after_dom_children): Adjust.
30151 2018-02-07 Georg-Johann Lay <avr@gjlay.de>
30154 * config/avr/avr.h (GENERAL_REGNO_P, GENERAL_REG_P): New macros.
30155 * config/avr/avr.md: Only post-reload split REG-REG moves if
30156 either register is GENERAL_REG_P.
30158 2018-02-07 Jakub Jelinek <jakub@redhat.com>
30160 PR tree-optimization/84235
30161 * tree-ssa-scopedtables.c
30162 (avail_exprs_stack::simplify_binary_operation): Fir MINUS_EXPR, punt
30163 if the subtraction is performed in floating point type where NaNs are
30164 honored. For *DIV_EXPR, punt for ALL_FRACT_MODE_Ps where we can't
30165 build 1. Formatting fix.
30167 2018-02-06 Jakub Jelinek <jakub@redhat.com>
30170 * config/i386/i386.c (rest_of_insert_endbranch): Only skip
30171 NOTE_INSN_CALL_ARG_LOCATION after a call, not anything else,
30172 and skip it regardless of bb boundaries. Use CALL_P macro,
30173 don't test INSN_P (insn) together with CALL_P or JUMP_P check
30174 unnecessarily, formatting fix.
30176 2018-02-06 Michael Collison <michael.collison@arm.com>
30178 * config/arm/thumb2.md:
30179 (*thumb2_mov_negscc): Split only if TARGET_THUMB2 && !arm_restrict_it.
30180 (*thumb_mov_notscc): Ditto.
30182 2018-02-06 Michael Meissner <meissner@linux.vnet.ibm.com>
30185 * config/rs6000/rs6000.md (su code attribute): Use "u" for
30186 unsigned_fix, not "s".
30188 2018-02-06 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
30190 * configure.ac (gcc_fn_eh_frame_ro): New function.
30191 (gcc_cv_as_cfi_directive): Check both 32 and 64-bit assembler for
30192 correct .eh_frame permissions.
30193 * configure: Regenerate.
30195 2018-02-06 Andrew Jenner <andrew@codeourcery.com>
30197 * doc/invoke.texi: Add section for the PowerPC SPE backend. Remove
30198 irrelevant options.
30200 2018-02-06 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
30202 * config/rs6000/rs6000.c (rs6000_option_override_internal):
30203 Display warning message for -mno-speculate-indirect-jumps.
30205 2018-02-06 Andrew Jenner <andrew@codesourcery.com>
30207 * config/powerpcspe/powerpcspe.opt: (msimple-fpu, mfpu) Add
30209 * config/powerpcspe/sysv4.opt (mbit-align): Likewise.
30211 2018-02-06 Aldy Hernandez <aldyh@redhat.com>
30213 PR tree-optimization/84225
30214 * tree-eh.c (find_trapping_overflow): Only call
30215 operation_no_trapping_overflow when ANY_INTEGRAL_TYPE_P.
30217 2018-02-06 Igor Tsimbalist <igor.v.tsimbalist@intel.com>
30220 * config/i386/i386.c: Reimplement the check of possible options
30221 -mibt/-mshstk conbination. Change error messages.
30222 * doc/invoke.texi: Fix a typo: remove extra '='.
30224 2018-02-06 Marek Polacek <polacek@redhat.com>
30226 PR tree-optimization/84228
30227 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Skip debug statements.
30229 2018-02-06 Tamar Christina <tamar.christina@arm.com>
30232 * config/arm/arm.c (arm_print_asm_arch_directives): Record already
30233 emitted arch directives.
30234 * config/arm/arm-c.c (arm_cpu_builtins): Undefine __ARM_ARCH and
30235 __ARM_FEATURE_COPROC before changing architectures.
30237 2018-02-06 Richard Biener <rguenther@suse.de>
30239 * config/i386/i386.c (print_reg): Fix typo.
30240 (ix86_loop_unroll_adjust): Do not unroll beyond the original nunroll.
30242 2018-02-06 Eric Botcazou <ebotcazou@adacore.com>
30244 * configure: Regenerate.
30246 2018-02-05 Martin Sebor <msebor@redhat.com>
30248 PR tree-optimization/83369
30249 * tree-ssa-ccp.c (pass_post_ipa_warn::execute): Use %G to print
30252 2018-02-05 Martin Liska <mliska@suse.cz>
30254 * doc/invoke.texi: Cherry-pick upstream r323995.
30256 2018-02-05 Richard Sandiford <richard.sandiford@linaro.org>
30258 * ira.c (ira_init_register_move_cost): Adjust comment.
30260 2018-02-05 Martin Liska <mliska@suse.cz>
30262 PR gcov-profile/84137
30263 * doc/gcov.texi: Fix typo in documentation.
30265 2018-02-05 Martin Liska <mliska@suse.cz>
30267 PR gcov-profile/83879
30268 * doc/gcov.texi: Document necessity of --dynamic-list-data when
30269 using dlopen functionality.
30271 2018-02-05 Olga Makhotina <olga.makhotina@intel.com>
30273 * config/i386/avx512dqintrin.h (_mm_mask_range_sd, _mm_maskz_range_sd,
30274 _mm_mask_range_round_sd, _mm_maskz_range_round_sd, _mm_mask_range_ss,
30275 _mm_maskz_range_ss, _mm_mask_range_round_ss,
30276 _mm_maskz_range_round_ss): New intrinsics.
30277 (__builtin_ia32_rangesd128_round)
30278 (__builtin_ia32_rangess128_round): Remove.
30279 (__builtin_ia32_rangesd128_mask_round,
30280 __builtin_ia32_rangess128_mask_round): New builtins.
30281 * config/i386/i386-builtin.def (__builtin_ia32_rangesd128_round,
30282 __builtin_ia32_rangess128_round): Remove.
30283 (__builtin_ia32_rangesd128_mask_round,
30284 __builtin_ia32_rangess128_mask_round): New builtins.
30285 * config/i386/sse.md (ranges<mode><round_saeonly_name>): Renamed to ...
30286 (ranges<mode><mask_scalar_name><round_saeonly_scalar_name>): ... this.
30287 ((match_operand:VF_128 2 "<round_saeonly_nimm_predicate>"
30288 "<round_saeonly_constraint>")): Changed to ...
30289 ((match_operand:VF_128 2 "<round_saeonly_scalar_nimm_predicate>"
30290 "<round_saeonly_scalar_constraint>")): ... this.
30291 ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_op4>%2, %1, %0|
30292 %0, %1, %2<round_saeonly_op4>, %3}"): Changed to ...
30293 ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_scalar_mask_op4>%2,
30294 %1, %0<mask_scalar_operand4>|%0<mask_scalar_operand4>, %1,
30295 %2<round_saeonly_scalar_mask_op4>, %3}"): ... this.
30297 2018-02-02 Andrew Jenner <andrew@codesourcery.com>
30299 * config/powerpcspe/powerpcspe.opt: Add Undocumented to irrelevant
30301 * config/powerpcspe/powerpcspe-tables.opt (rs6000_cpu_opt_value):
30302 Remove all values except native, 8540 and 8548.
30304 2018-02-02 H.J. Lu <hongjiu.lu@intel.com>
30306 * config/i386/i386.c (ix86_output_function_return): Pass
30307 INVALID_REGNUM, instead of -1, as invalid register number to
30308 indirect_thunk_name and output_indirect_thunk.
30310 2018-02-02 Julia Koval <julia.koval@intel.com>
30312 * config.gcc: Add -march=icelake.
30313 * config/i386/driver-i386.c (host_detect_local_cpu): Detect icelake.
30314 * config/i386/i386-c.c (ix86_target_macros_internal): Handle icelake.
30315 * config/i386/i386.c (processor_costs): Add m_ICELAKE.
30316 (PTA_ICELAKE, PTA_AVX512VNNI, PTA_GFNI, PTA_VAES, PTA_AVX512VBMI2,
30317 PTA_VPCLMULQDQ, PTA_RDPID, PTA_AVX512BITALG): New.
30318 (processor_target_table): Add icelake.
30319 (ix86_option_override_internal): Handle new PTAs.
30320 (get_builtin_code_for_version): Handle icelake.
30321 (M_INTEL_COREI7_ICELAKE): New.
30322 (fold_builtin_cpu): Handle icelake.
30323 * config/i386/i386.h (TARGET_ICELAKE, PROCESSOR_ICELAKE): New.
30324 * doc/invoke.texi: Add -march=icelake.
30326 2018-02-02 Julia Koval <julia.koval@intel.com>
30328 * config/i386/i386.c (ix86_option_override_internal): Change flags type
30329 to wide_int_bitmask.
30330 * wide-int-bitmask.h: New.
30332 2018-02-02 Igor Tsimbalist <igor.v.tsimbalist@intel.com>
30335 * config/i386/i386.md: Replace Pmode with word_mode in
30336 builtin_setjmp_setup and builtin_longjmp to support x32.
30338 2018-02-01 Peter Bergner <bergner@vnet.ibm.com>
30342 * config/rs6000/driver-rs6000.c: #include "diagnostic.h".
30344 (rs6000_supported_cpu_names): New static variable.
30345 (linux_cpu_translation_table): Likewise.
30346 (elf_platform) <cpu>: Define new static variable and use it.
30347 Translate kernel AT_PLATFORM name to canonical name if needed.
30348 Error if platform name is unknown.
30350 2018-02-01 Aldy Hernandez <aldyh@redhat.com>
30353 * config/pa/predicates.md (base14_operand): Handle E_VOIDmode.
30355 2018-02-01 Jeff Law <law@redhat.com>
30358 * config/i386/i386.c (release_scratch_register_on_entry): Add new
30359 OFFSET and RELEASE_VIA_POP arguments. Use SP+OFFSET to restore
30360 the scratch if RELEASE_VIA_POP is false.
30361 (ix86_adjust_stack_and_probe_stack_clash): Un-constify SIZE.
30362 If we have to save a temporary register, decrement SIZE appropriately.
30363 Pass new arguments to release_scratch_register_on_entry.
30364 (ix86_adjust_stack_and_probe): Likewise.
30365 (ix86_emit_probe_stack_range): Pass new arguments to
30366 release_scratch_register_on_entry.
30368 2018-02-01 Uros Bizjak <ubizjak@gmail.com>
30370 PR rtl-optimization/84157
30371 * combine.c (change_zero_ext): Use REG_P predicate in
30372 front of HARD_REGISTER_P predicate.
30374 2018-02-01 Georg-Johann Lay <avr@gjlay.de>
30376 * config/avr/avr.c (avr_option_override): Move disabling of
30377 -fdelete-null-pointer-checks to...
30378 * common/config/avr/avr-common.c (avr_option_optimization_table):
30381 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
30383 PR tree-optimization/81635
30384 * tree-data-ref.c (split_constant_offset_1): For types that
30385 wrap on overflow, try to use range info to prove that wrapping
30388 2018-02-01 Renlin Li <renlin.li@arm.com>
30391 * config/aarch64/aarch64.c (aarch64_class_max_nregs): Handle
30392 TAILCALL_ADDR_REGS.
30393 (aarch64_register_move_cost): Likewise.
30394 * config/aarch64/aarch64.h (reg_class): Rename CALLER_SAVE_REGS to
30395 TAILCALL_ADDR_REGS.
30396 (REG_CLASS_NAMES): Likewise.
30397 (REG_CLASS_CONTENTS): Rename CALLER_SAVE_REGS to
30398 TAILCALL_ADDR_REGS. Remove IP registers.
30399 * config/aarch64/aarch64.md (Ucs): Update register constraint.
30401 2018-02-01 Richard Biener <rguenther@suse.de>
30403 * domwalk.h (dom_walker::dom_walker): Add additional constructor
30404 for specifying RPO order and allow NULL for that.
30405 * domwalk.c (dom_walker::dom_walker): Likewise.
30406 (dom_walker::walk): Handle NULL RPO order.
30407 * tree-into-ssa.c (rewrite_dom_walker): Do not walk dom children
30409 (rewrite_update_dom_walker): Likewise.
30410 (mark_def_dom_walker): Likewise.
30412 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
30414 * config/aarch64/aarch64-protos.h (aarch64_split_sve_subreg_move)
30415 (aarch64_maybe_expand_sve_subreg_move): Declare.
30416 * config/aarch64/aarch64.md (UNSPEC_REV_SUBREG): New unspec.
30417 * config/aarch64/predicates.md (aarch64_any_register_operand): New
30419 * config/aarch64/aarch64-sve.md (mov<mode>): Optimize subreg moves
30420 that are semantically a reverse operation.
30421 (*aarch64_sve_mov<mode>_subreg_be): New pattern.
30422 * config/aarch64/aarch64.c (aarch64_maybe_expand_sve_subreg_move):
30423 (aarch64_replace_reg_mode, aarch64_split_sve_subreg_move): New
30425 (aarch64_can_change_mode_class): For big-endian, forbid changes
30426 between two SVE modes if they have different element sizes.
30428 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
30430 * config/aarch64/aarch64.c (aarch64_expand_sve_const_vector): Prefer
30431 the TImode handling for big-endian targets.
30433 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
30435 * config/aarch64/aarch64-sve.md (sve_ld1rq): Replace with...
30436 (*sve_ld1rq<Vesize>): ... this new pattern. Handle all element sizes,
30438 * config/aarch64/aarch64.c (aarch64_expand_sve_widened_duplicate):
30439 Remove BSWAP handing for big-endian targets and use the form of
30440 LD1RQ appropariate for the mode.
30442 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
30444 * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Handle
30445 all CONST_VECTOR_DUPLICATE_P vectors, not just those with a single
30446 duplicated element.
30448 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
30451 * config/aarch64/aarch64.c (aarch64_secondary_reload): Tighten
30452 check for operands that need to go through aarch64_sve_reload_be.
30454 2018-02-01 Jakub Jelinek <jakub@redhat.com>
30456 PR tree-optimization/81661
30457 PR tree-optimization/84117
30458 * tree-eh.h (rewrite_to_non_trapping_overflow): Declare.
30459 * tree-eh.c: Include gimplify.h.
30460 (find_trapping_overflow, replace_trapping_overflow,
30461 rewrite_to_non_trapping_overflow): New functions.
30462 * tree-vect-loop.c: Include tree-eh.h.
30463 (vect_get_loop_niters): Use rewrite_to_non_trapping_overflow.
30464 * tree-data-ref.c: Include tree-eh.h.
30465 (get_segment_min_max): Use rewrite_to_non_trapping_overflow.
30467 2018-01-31 Uros Bizjak <ubizjak@gmail.com>
30469 PR rtl-optimization/84123
30470 * combine.c (change_zero_ext): Check if hard register satisfies
30471 can_change_dest_mode before calling gen_lowpart_SUBREG.
30473 2018-01-31 Vladimir Makarov <vmakarov@redhat.com>
30476 * ira.c (ira_init_register_move_cost): Remove assert.
30478 2018-01-31 Eric Botcazou <ebotcazou@adacore.com>
30480 PR rtl-optimization/84071
30481 * doc/tm.texi.in (WORD_REGISTER_OPERATIONS): Add explicit case.
30482 * doc/tm.texi: Regenerate.
30484 2018-01-31 Richard Biener <rguenther@suse.de>
30486 PR tree-optimization/84132
30487 * tree-data-ref.c (analyze_miv_subscript): Properly
30488 check whether evolution_function_is_affine_multivariate_p
30489 before calling gcd_of_steps_may_divide_p.
30491 2018-01-31 Julia Koval <julia.koval@intel.com>
30494 * config/i386/i386.c (ix86_expand_builtin): Handle IX86_BUILTIN_RDPID.
30495 * config/i386/i386.md (rdpid_rex64) New.
30496 (rdpid): Make 32bit only.
30498 2018-01-29 Aldy Hernandez <aldyh@redhat.com>
30501 * tree-pretty-print.c (dump_generic_node): Handle a TYPE_NAME with
30502 an IDENTIFIER_NODE for FUNCTION_TYPE's.
30504 2018-01-31 Eric Botcazou <ebotcazou@adacore.com>
30507 2018-01-12 Eric Botcazou <ebotcazou@adacore.com>
30509 * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
30511 2018-01-31 Eric Botcazou <ebotcazou@adacore.com>
30513 PR rtl-optimization/84071
30514 * combine.c (record_dead_and_set_regs_1): Record the source unmodified
30515 for a paradoxical SUBREG on a WORD_REGISTER_OPERATIONS target.
30517 2018-01-31 Claudiu Zissulescu <claziss@synopsys.com>
30519 * config/arc/arc.c (arc_handle_aux_attribute): New function.
30520 (arc_attribute_table): Add 'aux' attribute.
30521 (arc_in_small_data_p): Consider aux like variables.
30522 (arc_is_aux_reg_p): New function.
30523 (arc_asm_output_aligned_decl_local): Ignore 'aux' like variables.
30524 (arc_get_aux_arg): New function.
30525 (prepare_move_operands): Handle aux-register access.
30526 (arc_handle_aux_attribute): New function.
30527 * doc/extend.texi (ARC Variable attributes): Add subsection.
30529 2018-01-31 Claudiu Zissulescu <claziss@synopsys.com>
30531 * config/arc/arc-protos.h (arc_is_uncached_mem_p): Function proto.
30532 * config/arc/arc.c (arc_handle_uncached_attribute): New function.
30533 (arc_attribute_table): Add 'uncached' attribute.
30534 (arc_print_operand): Print '.di' flag for uncached memory
30536 (arc_in_small_data_p): Do not consider for small data the uncached
30538 (arc_is_uncached_mem_p): New function.
30539 * config/arc/predicates.md (compact_store_memory_operand): Check
30540 for uncached memory accesses.
30541 (nonvol_nonimm_operand): Likewise.
30542 * doc/extend.texi (ARC Type Attribute): New subsection.
30544 2018-01-31 Jakub Jelinek <jakub@redhat.com>
30547 * common.opt (falign-functions=, falign-jumps=, falign-labels=,
30548 falign-loops=): Add Optimization flag.
30550 2018-01-30 Jeff Law <law@redhat.com>
30553 * i386.c (ix86_adjust_stack_and_probe_stack_clash): New argument
30554 INT_REGISTERS_SAVED. Check it prior to calling
30555 get_scratch_register_on_entry.
30556 (ix86_adjust_stack_and_probe): Similarly.
30557 (ix86_emit_probe_stack_range): Similarly.
30558 (ix86_expand_prologue): Corresponding changes.
30560 2018-01-30 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
30563 * config/sol2.h (STARTFILE_ARCH_SPEC): Use -std=c*,
30564 -std=iso9899:199409 instead of -pedantic to select values-Xc.o.
30566 2018-01-30 Vladimir Makarov <vmakarov@redhat.com>
30569 * lra-constraints.c (curr_insn_transform): Process AND in the
30572 2018-01-30 Jakub Jelinek <jakub@redhat.com>
30574 PR rtl-optimization/83986
30575 * sched-deps.c (sched_analyze_insn): For frame related insns, add anti
30576 dependence against last_pending_memory_flush in addition to
30577 pending_jump_insns.
30579 2018-01-30 Alexandre Oliva <aoliva@redhat.com>
30581 PR tree-optimization/81611
30582 * tree-ssa-dom.c (simple_iv_increment_p): Skip intervening
30585 2018-01-30 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
30588 * config/rs6000/rs6000.c (rs6000_internal_arg_pointer): Only return
30591 2018-01-30 Richard Biener <rguenther@suse.de>
30592 Jakub Jelinek <jakub@redhat.com>
30594 PR tree-optimization/84111
30595 * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1): Skip
30596 inner loops added during recursion, as they don't have up-to-date
30599 2018-01-30 Jan Hubicka <hubicka@ucw.cz>
30602 * ipa-inline.c (can_inline_edge_p): Break out late tests to...
30603 (can_inline_edge_by_limits_p): ... here.
30604 (can_early_inline_edge_p, check_callers,
30605 update_caller_keys, update_callee_keys, recursive_inlining,
30606 add_new_edges_to_heap, speculation_useful_p,
30607 inline_small_functions,
30608 inline_small_functions, flatten_function,
30609 inline_to_all_callers_1): Update.
30611 2018-01-30 Jan Hubicka <hubicka@ucw.cz>
30613 * profile-count.c (profile_count::combine_with_ipa_count): Handle
30616 2018-01-30 Richard Biener <rguenther@suse.de>
30618 PR tree-optimization/83008
30619 * tree-vect-slp.c (vect_analyze_slp_cost_1): Properly cost
30620 invariant and constant vector uses in stmts when they need
30621 more than one stmt.
30623 2018-01-30 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
30626 * configure.ac (gcc_cv_as_shf_merge): Disable on Solaris 10/x86.
30627 * configure: Regenerate.
30629 2018-01-30 Richard Sandiford <richard.sandiford@linaro.org>
30631 * config/aarch64/aarch64-sve.md (*vec_extract<mode><Vel>_0): New
30633 (*vec_extract<mode><Vel>_v128): Require a nonzero lane number.
30634 Use gen_rtx_REG rather than gen_lowpart.
30636 2018-01-30 Richard Sandiford <richard.sandiford@linaro.org>
30638 * lra-constraints.c (match_reload): Use subreg_lowpart_offset
30639 rather than 0 when creating partial subregs.
30641 2018-01-30 Richard Sandiford <richard.sandiford@linaro.org>
30643 * vec-perm-indices.c (vec_perm_indices::series_p): Give examples
30646 2018-01-29 Michael Meissner <meissner@linux.vnet.ibm.com>
30649 * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): If DFmode
30650 and SFmode can go in Altivec registers (-mcpu=power7 for DFmode,
30651 -mcpu=power8 for SFmode) don't set the PRE_INCDEC or PRE_MODIFY
30652 flags. This restores the settings used before the 2017-07-24.
30653 Turning off pre increment/decrement/modify allows IVOPTS to
30654 optimize DF/SF loops where the index is an int.
30656 2018-01-29 Richard Biener <rguenther@suse.de>
30657 Kelvin Nilsen <kelvin@gcc.gnu.org>
30660 * tree-vect-stmts.c (vectorizable_call): Don't call
30661 targetm.vectorize_builtin_md_vectorized_function if callee is
30664 2018-01-22 Carl Love <cel@us.ibm.com>
30666 * doc/extend.tex: Fix typo in second arg in
30667 __builtin_bcdadd_{lt|eq|gt|ov} and __builtin_bcdsub_{lt|eq|gt|ov}.
30669 2018-01-29 Richard Biener <rguenther@suse.de>
30671 PR tree-optimization/84086
30672 * tree-ssanames.c: Include cfgloop.h and tree-scalar-evolution.h.
30673 (flush_ssaname_freelist): When SSA names were released reset
30674 the SCEV hash table.
30676 2018-01-29 Richard Biener <rguenther@suse.de>
30678 PR tree-optimization/84057
30679 * tree-ssa-loop-ivcanon.c (unloop_loops): Deal with already
30680 removed paths when removing edges.
30682 2018-01-27 H.J. Lu <hongjiu.lu@intel.com>
30684 * doc/invoke.texi: Replace -mfunction-return==@var{choice} with
30685 -mfunction-return=@var{choice}.
30687 2018-01-27 Bernd Edlinger <bernd.edlinger@hotmail.de>
30689 PR diagnostic/84034
30690 * diagnostic-show-locus.c (get_line_width_without_trailing_whitespace):
30691 Handle CR like TAB.
30692 (layout::print_source_line): Likewise.
30693 (test_get_line_width_without_trailing_whitespace): Add test cases.
30695 2018-01-27 Jakub Jelinek <jakub@redhat.com>
30697 PR middle-end/84040
30698 * sched-deps.c (sched_macro_fuse_insns): Return immediately for
30701 2018-01-26 Jim Wilson <jimw@sifive.com>
30703 * config/riscv/riscv.h (MAX_FIXED_MODE_SIZE): New.
30705 * config/riscv/elf.h (LIB_SPEC): Don't include -lgloss when nosys.specs
30708 2018-01-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
30710 * config/aarch64/aarch64.md: Add peepholes for CMP + SUB -> SUBS
30711 and CMP + SUB-immediate -> SUBS.
30713 2018-01-26 Martin Sebor <msebor@redhat.com>
30715 PR tree-optimization/83896
30716 * tree-ssa-strlen.c (get_string_len): Rename...
30717 (get_string_cst_length): ...to this. Return HOST_WIDE_INT.
30718 Avoid assuming length is constant.
30719 (handle_char_store): Use HOST_WIDE_INT for string length.
30721 2018-01-26 Uros Bizjak <ubizjak@gmail.com>
30724 * config/i386/i386.md (*andndi3_doubleword): Add earlyclobber
30725 to (=&r,r,rm) alternative. Add (=r,0,rm) and (=r,r,0) alternatives.
30727 2018-01-26 Richard Biener <rguenther@suse.de>
30729 PR rtl-optimization/84003
30730 * dse.c (record_store): Only record redundant stores when
30731 the earlier store aliases at least all accesses the later one does.
30733 2018-01-26 Jakub Jelinek <jakub@redhat.com>
30735 PR rtl-optimization/83985
30736 * dce.c (deletable_insn_p): Return false for separate shrink wrapping
30737 REG_CFA_RESTORE insns.
30738 (delete_unmarked_insns): Don't ignore separate shrink wrapping
30739 REG_CFA_RESTORE insns here.
30742 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Don't
30743 use SSA_NAME_VAR as base for SSA_NAMEs with non-NULL SSA_NAME_VAR.
30745 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
30747 * config/arc/arc-arch.h (arc_tune_attr): Add ARC_TUNE_CORE_3.
30748 * config/arc/arc.c (arc_sched_issue_rate): Use ARC_TUNE_... .
30749 (arc_init): Likewise.
30750 (arc_override_options): Likewise.
30751 (arc_file_start): Choose Tag_ARC_CPU_variation based on arc_tune
30753 (hwloop_fail): Use TARGET_DBNZ when we want to check for dbnz insn
30755 * config/arc/arc.h (TARGET_DBNZ): Define.
30756 * config/arc/arc.md (attr tune): Add core_3, use ARC_TUNE_... to
30757 properly set the tune attribute.
30758 (dbnz): Use TARGET_DBNZ guard.
30759 * config/arc/arc.opt (mtune): Add core3 option.
30761 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
30763 * config/arc/arc.c (arc_delegitimize_address_0): Refactored to
30764 recognize new pic like addresses.
30765 (arc_delegitimize_address): Clean up.
30767 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
30769 * config/arc/arc-arches.def: Option mrf16 valid for all
30771 * config/arc/arc-c.def (__ARC_RF16__): New predefined macro.
30772 * config/arc/arc-cpus.def (em_mini): New cpu with rf16 on.
30773 * config/arc/arc-options.def (FL_RF16): Add mrf16 option.
30774 * config/arc/arc-tables.opt: Regenerate.
30775 * config/arc/arc.c (arc_conditional_register_usage): Handle
30776 reduced register file case.
30777 (arc_file_start): Set must have build attributes.
30778 * config/arc/arc.h (MAX_ARC_PARM_REGS): Conditional define using
30779 mrf16 option value.
30780 * config/arc/arc.opt (mrf16): Add new option.
30781 * config/arc/elf.h (ATTRIBUTE_PCS): Define.
30782 * config/arc/genmultilib.awk: Handle new mrf16 option.
30783 * config/arc/linux.h (ATTRIBUTE_PCS): Define.
30784 * config/arc/t-multilib: Regenerate.
30785 * doc/invoke.texi (ARC Options): Document mrf16 option.
30787 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
30789 * config/arc/arc-protos.h: Add arc_is_secure_call_p proto.
30790 * config/arc/arc.c (arc_handle_secure_attribute): New function.
30791 (arc_attribute_table): Add 'secure_call' attribute.
30792 (arc_print_operand): Print secure call operand.
30793 (arc_function_ok_for_sibcall): Don't optimize tail calls when
30795 (arc_is_secure_call_p): New function. * config/arc/arc.md
30796 (call_i): Add support for sjli instruction.
30797 (call_value_i): Likewise.
30798 * config/arc/constraints.md (Csc): New constraint.
30800 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
30801 John Eric Martin <John.Martin@emmicro-us.com>
30803 * config/arc/arc-protos.h: Add arc_is_jli_call_p proto.
30804 * config/arc/arc.c (_arc_jli_section): New struct.
30805 (arc_jli_section): New type.
30806 (rc_jli_sections): New static variable.
30807 (arc_handle_jli_attribute): New function.
30808 (arc_attribute_table): Add jli_always and jli_fixed attribute.
30809 (arc_file_end): New function.
30810 (TARGET_ASM_FILE_END): Define.
30811 (arc_print_operand): Reuse 'S' letter for JLI output instruction.
30812 (arc_add_jli_section): New function.
30813 (jli_call_scan): Likewise.
30814 (arc_reorg): Call jli_call_scan.
30815 (arc_output_addsi): Remove 'S' from printing asm operand.
30816 (arc_is_jli_call_p): New function.
30817 * config/arc/arc.md (movqi_insn): Remove 'S' from printing asm
30819 (movhi_insn): Likewise.
30820 (movsi_insn): Likewise.
30821 (movsi_set_cc_insn): Likewise.
30822 (loadqi_update): Likewise.
30823 (load_zeroextendqisi_update): Likewise.
30824 (load_signextendqisi_update): Likewise.
30825 (loadhi_update): Likewise.
30826 (load_zeroextendhisi_update): Likewise.
30827 (load_signextendhisi_update): Likewise.
30828 (loadsi_update): Likewise.
30829 (loadsf_update): Likewise.
30830 (movsicc_insn): Likewise.
30831 (bset_insn): Likewise.
30832 (bxor_insn): Likewise.
30833 (bclr_insn): Likewise.
30834 (bmsk_insn): Likewise.
30835 (bicsi3_insn): Likewise.
30836 (cmpsi_cc_c_insn): Likewise.
30837 (movsi_ne): Likewise.
30838 (movsi_cond_exec): Likewise.
30839 (clrsbsi2): Likewise.
30840 (norm_f): Likewise.
30850 (call_i): Remove 'S' asm letter, add jli instruction.
30851 (call_value_i): Likewise.
30852 * config/arc/arc.op (mjli-always): New option.
30853 * config/arc/constraints.md (Cji): New constraint.
30854 * config/arc/fpx.md (addsf3_fpx): Remove 'S' from printing asm
30856 (subsf3_fpx): Likewise.
30857 (mulsf3_fpx): Likewise.
30858 * config/arc/simdext.md (vendrec_insn): Remove 'S' from printing
30860 * doc/extend.texi (ARC): Document 'jli-always' and 'jli-fixed'
30861 function attrbutes.
30862 * doc/invoke.texi (ARC): Document mjli-always option.
30864 2018-01-26 Sebastian Perta <sebastian.perta@renesas.com>
30866 * config/rl78/rl78.c (rl78_addsi3_internal): If operand 2 is const
30867 avoid addition with 0 and use incw and decw where possible.
30869 2018-01-26 Richard Biener <rguenther@suse.de>
30871 PR tree-optimization/81082
30872 * fold-const.c (fold_plusminus_mult_expr): Do not perform the
30873 association if it requires casting to unsigned.
30874 * match.pd ((A * C) +- (B * C) -> (A+-B)): New patterns derived
30875 from fold_plusminus_mult_expr to catch important cases late when
30876 range info is available.
30878 2018-01-26 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
30880 * config/i386/sol2.h (USE_HIDDEN_LINKONCE): Remove.
30881 * configure.ac (hidden_linkonce): New test.
30882 * configure: Regenerate.
30883 * config.in: Regenerate.
30885 2018-01-26 Julia Koval <julia.koval@intel.com>
30887 * config/i386/avx512bitalgintrin.h (_mm512_bitshuffle_epi64_mask,
30888 _mm512_mask_bitshuffle_epi64_mask, _mm256_bitshuffle_epi64_mask,
30889 _mm256_mask_bitshuffle_epi64_mask, _mm_bitshuffle_epi64_mask,
30890 _mm_mask_bitshuffle_epi64_mask): Fix type.
30891 * config/i386/i386-builtin-types.def (UHI_FTYPE_V2DI_V2DI_UHI,
30892 USI_FTYPE_V4DI_V4DI_USI): Remove.
30893 * config/i386/i386-builtin.def (__builtin_ia32_vpshufbitqmb512_mask,
30894 __builtin_ia32_vpshufbitqmb256_mask,
30895 __builtin_ia32_vpshufbitqmb128_mask): Fix types.
30896 * config/i386/i386.c (ix86_expand_args_builtin): Remove old types.
30897 * config/i386/sse.md (VI1_AVX512VLBW): Change types.
30899 2018-01-26 Alan Modra <amodra@gmail.com>
30902 * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Exclude
30903 UNSPEC_VBPERMQ. Sort other unspecs.
30905 2018-01-25 David Edelsohn <dje.gcc@gmail.com>
30907 * doc/invoke.texi (PowerPC Options): Document 'native' cpu type.
30909 2018-01-25 Jan Hubicka <hubicka@ucw.cz>
30911 PR middle-end/83055
30912 * predict.c (drop_profile): Do not push/pop cfun; update also
30914 (handle_missing_profiles): Fix logic looking for zero profiles.
30916 2018-01-25 Jakub Jelinek <jakub@redhat.com>
30918 PR middle-end/83977
30919 * ipa-fnsummary.c (compute_fn_summary): Clear can_change_signature
30920 on functions with #pragma omp declare simd or functions with simd
30922 * omp-simd-clone.c (expand_simd_clones): Revert 2018-01-24 change.
30923 * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen):
30924 Remove trailing \n from warning_at calls.
30926 2018-01-25 Tom de Vries <tom@codesourcery.com>
30929 * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
30930 for neutered workers.
30932 2018-01-24 Joseph Myers <joseph@codesourcery.com>
30935 * config/m68k/m68k.c (m68k_promote_function_mode): New function.
30936 (TARGET_PROMOTE_FUNCTION_MODE): New macro.
30938 2018-01-24 Jeff Law <law@redhat.com>
30941 * i386.c (get_probe_interval): Move to earlier point.
30942 (ix86_compute_frame_layout): If -fstack-clash-protection and
30943 the frame is larger than the probe interval, then use pushes
30944 to save registers rather than reg->mem moves.
30945 (ix86_expand_prologue): Remove conditional for int_registers_saved
30948 2018-01-24 Vladimir Makarov <vmakarov@redhat.com>
30951 * ira-build.c (setup_min_max_allocno_live_range_point): Set up
30952 min/max for never referenced object.
30954 2018-01-24 Jakub Jelinek <jakub@redhat.com>
30956 PR middle-end/83977
30957 * tree.c (free_lang_data_in_decl): Don't clear DECL_ABSTRACT_ORIGIN
30959 * omp-low.c (create_omp_child_function): Remove "omp declare simd"
30960 attributes from DECL_ATTRIBUTES (decl) without affecting
30961 DECL_ATTRIBUTES (current_function_decl).
30962 * omp-simd-clone.c (expand_simd_clones): Ignore DECL_ARTIFICIAL
30963 functions with non-NULL DECL_ABSTRACT_ORIGIN.
30965 2018-01-24 Richard Sandiford <richard.sandiford@linaro.org>
30967 PR tree-optimization/83979
30968 * fold-const.c (fold_comparison): Use constant_boolean_node
30969 instead of boolean_{true,false}_node.
30971 2018-01-24 Jan Hubicka <hubicka@ucw.cz>
30973 * ipa-profile.c (ipa_propagate_frequency_1): Fix logic skipping calls
30976 2018-01-24 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
30978 * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
30979 Simplify the clause that sets the length attribute.
30980 (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
30981 (*sibcall_nonlocal_sysv<mode>): Clean up code block; simplify the
30982 clause that sets the length attribute.
30983 (*sibcall_value_nonlocal_sysv<mode>): Likewise.
30985 2018-01-24 Tom de Vries <tom@codesourcery.com>
30988 * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_2): Define to 1.
30989 (nvptx_pc_set, nvptx_condjump_label): New function. Copy from jump.c.
30990 Add strict parameter.
30991 (prevent_branch_around_nothing): Insert dummy insn between branch to
30992 label and label with no ptx insn inbetween.
30993 * config/nvptx/nvptx.md (define_insn "fake_nop"): New insn.
30995 2018-01-24 Tom de Vries <tom@codesourcery.com>
30998 * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
30999 for neutered threads in warp.
31000 * config/nvptx/nvptx.md (define_insn "exit"): New insn.
31002 2018-01-24 Richard Biener <rguenther@suse.de>
31004 PR tree-optimization/83176
31005 * tree-chrec.c (chrec_fold_plus_1): Handle (signed T){(T) .. }
31008 2018-01-24 Richard Biener <rguenther@suse.de>
31010 PR tree-optimization/82819
31011 * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Avoid
31012 code generating pluses that are no-ops in the target precision.
31014 2018-01-24 Richard Biener <rguenther@suse.de>
31016 PR middle-end/84000
31017 * tree-cfg.c (replace_loop_annotate): Handle annot_expr_parallel_kind.
31019 2018-01-23 Jan Hubicka <hubicka@ucw.cz>
31021 * cfgcleanup.c (try_crossjump_to_edge): Use combine_with_count
31022 to merge probabilities.
31023 * predict.c (probably_never_executed): Also mark as cold functions
31024 with global 0 profile and guessed local profile.
31025 * profile-count.c (profile_probability::combine_with_count): New
31027 * profile-count.h (profile_probability::operator*,
31028 profile_probability::operator*=, profile_probability::operator/,
31029 profile_probability::operator/=): Reduce precision to adjusted
31030 and set value to guessed on contradictory divisions.
31031 (profile_probability::combine_with_freq): Remove.
31032 (profile_probability::combine_wiht_count): Declare.
31033 (profile_count::force_nonzero):: Set to adjusted.
31034 (profile_count::probability_in):: Set quality to adjusted.
31035 * tree-ssa-tail-merge.c (replace_block_by): Use
31036 combine_with_count.
31038 2018-01-23 Andrew Waterman <andrew@sifive.com>
31039 Jim Wilson <jimw@sifive.com>
31041 * config/riscv/riscv.c (riscv_stack_boundary): New.
31042 (riscv_option_override): Set riscv_stack_boundary. Handle
31043 riscv_preferred_stack_boundary_arg.
31044 * config/riscv/riscv.h (MIN_STACK_BOUNDARY, ABI_STACK_BOUNDARY): New.
31045 (BIGGEST_ALIGNMENT): Set to STACK_BOUNDARY.
31046 (STACK_BOUNDARY): Set to riscv_stack_boundary.
31047 (RISCV_STACK_ALIGN): Use STACK_BOUNDARY.
31048 * config/riscv/riscv.opt (mpreferred-stack-boundary): New.
31049 * doc/invoke.tex (RISC-V Options): Add -mpreferred-stack-boundary.
31051 2018-01-23 H.J. Lu <hongjiu.lu@intel.com>
31054 * config/i386/i386.c (ix86_expand_prologue): Use cost reference
31055 of struct ix86_frame.
31056 (ix86_expand_epilogue): Likewise. Add a local variable for
31057 the reg_save_offset field in struct ix86_frame.
31059 2018-01-23 Bin Cheng <bin.cheng@arm.com>
31061 PR tree-optimization/82604
31062 * tree-loop-distribution.c (enum partition_kind): New enum item
31063 PKIND_PARTIAL_MEMSET.
31064 (partition_builtin_p): Support above new enum item.
31065 (generate_code_for_partition): Ditto.
31066 (compute_access_range): Differentiate cases that equality can be
31067 proven at all loops, the innermost loops or no loops.
31068 (classify_builtin_st, classify_builtin_ldst): Adjust call to above
31069 function. Set PKIND_PARTIAL_MEMSET for partition appropriately.
31070 (finalize_partitions, distribute_loop): Don't fuse partition of
31071 PKIND_PARTIAL_MEMSET kind when distributing 3-level loop nest.
31072 (prepare_perfect_loop_nest): Distribute 3-level loop nest only if
31073 parloop is enabled.
31075 2018-01-23 Martin Liska <mliska@suse.cz>
31077 * predict.def (PRED_INDIR_CALL): Set probability to PROB_EVEN in
31078 order to ignore the predictor.
31079 (PRED_POLYMORPHIC_CALL): Likewise.
31080 (PRED_RECURSIVE_CALL): Likewise.
31082 2018-01-23 Martin Liska <mliska@suse.cz>
31084 * tree-profile.c (tree_profiling): Print function header to
31085 aware reader which function we are working on.
31086 * value-prof.c (gimple_find_values_to_profile): Do not print
31087 not interesting value histograms.
31089 2018-01-23 Martin Liska <mliska@suse.cz>
31091 * profile-count.h (enum profile_quality): Add
31092 profile_uninitialized as the first value. Do not number values
31093 as they are zero based.
31094 (profile_count::verify): Update sanity check.
31095 (profile_probability::verify): Likewise.
31097 2018-01-23 Nathan Sidwell <nathan@acm.org>
31099 * doc/invoke.texi (ffor-scope): Deprecate.
31101 2018-01-23 David Malcolm <dmalcolm@redhat.com>
31103 PR tree-optimization/83510
31104 * domwalk.c (set_all_edges_as_executable): New function.
31105 (dom_walker::dom_walker): Convert bool param
31106 "skip_unreachable_blocks" to enum reachability. Move setup of
31107 edge flags to set_all_edges_as_executable and only do it when
31108 reachability is REACHABLE_BLOCKS.
31109 * domwalk.h (enum dom_walker::reachability): New enum.
31110 (dom_walker::dom_walker): Convert bool param
31111 "skip_unreachable_blocks" to enum reachability.
31112 (set_all_edges_as_executable): New decl.
31113 * graphite-scop-detection.c (gather_bbs::gather_bbs): Convert
31114 from false for "skip_unreachable_blocks" to ALL_BLOCKS for
31116 * tree-ssa-dom.c (dom_opt_dom_walker::dom_opt_dom_walker): Likewise,
31117 but converting true to REACHABLE_BLOCKS.
31118 * tree-ssa-sccvn.c (sccvn_dom_walker::sccvn_dom_walker): Likewise.
31120 (check_array_bounds_dom_walker::check_array_bounds_dom_walker):
31121 Likewise, but converting it to REACHABLE_BLOCKS_PRESERVING_FLAGS.
31122 (vrp_dom_walker::vrp_dom_walker): Likewise, but converting it to
31124 (vrp_prop::vrp_finalize): Call set_all_edges_as_executable
31125 if check_all_array_refs will be called.
31127 2018-01-23 David Malcolm <dmalcolm@redhat.com>
31129 * tree.c (selftest::test_location_wrappers): Add more test
31132 2018-01-23 David Malcolm <dmalcolm@redhat.com>
31134 * sbitmap.c (selftest::test_set_range): Fix memory leaks.
31135 (selftest::test_bit_in_range): Likewise.
31137 2018-01-23 Richard Sandiford <richard.sandiford@linaro.org>
31140 * doc/sourcebuild.texi (vect_float): Say that the selector
31141 only describes the situation when -funsafe-math-optimizations is on.
31142 (vect_float_strict): Document.
31144 2018-01-23 Richard Sandiford <richard.sandiford@linaro.org>
31146 PR tree-optimization/83965
31147 * tree-vect-patterns.c (vect_reassociating_reduction_p): New function.
31148 (vect_recog_dot_prod_pattern, vect_recog_sad_pattern): Use it
31149 instead of checking only for a reduction.
31150 (vect_recog_widen_sum_pattern): Likewise.
31152 2018-01-23 Jan Hubicka <hubicka@ucw.cz>
31154 * predict.c (probably_never_executed): Only use precise profile info.
31155 (compute_function_frequency): Skip after inlining hack since we now
31156 have quality checking.
31158 2018-01-23 Jan Hubicka <hubicka@ucw.cz>
31160 * profile-count.h (profile_probability::very_unlikely,
31161 profile_probability::unlikely, profile_probability::even): Set
31162 precision to guessed.
31164 2018-01-23 Richard Biener <rguenther@suse.de>
31166 PR tree-optimization/83963
31167 * graphite-scop-detection.c (scop_detection::harmful_loop_in_region):
31168 Properly terminate dominator walk when crossing the exit edge not
31169 when visiting its source block.
31171 2018-01-23 Jakub Jelinek <jakub@redhat.com>
31174 * tree.c (maybe_wrap_with_location): Use NON_LVALUE_EXPR rather than
31175 VIEW_CONVERT_EXPR to wrap CONST_DECLs.
31177 2018-01-22 Jakub Jelinek <jakub@redhat.com>
31179 PR tree-optimization/83957
31180 * omp-expand.c (expand_omp_for_generic): Ignore virtual PHIs. Remove
31181 semicolon after for body surrounded by braces.
31183 PR tree-optimization/83081
31184 * profile-count.h (profile_probability::split): New method.
31185 * dojump.c (do_jump_1) <case TRUTH_ANDIF_EXPR, case TRUTH_ORIF_EXPR>:
31186 Use profile_probability::split.
31187 (do_compare_rtx_and_jump): Fix adjustment of probabilities
31188 when splitting a single conditional jump into 2.
31190 2018-01-22 David Malcolm <dmalcolm@redhat.com>
31192 PR tree-optimization/69452
31193 * tree-ssa-loop-im.c (class move_computations_dom_walker): Remove
31196 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
31198 * config/rl78/rl78-expand.md (bswaphi2): New define_expand.
31199 * config/rl78/rl78-virt.md (*bswaphi2_virt): New define_insn.
31200 * config/rl78/rl78-real.md (*bswaphi2_real): New define_insn.
31202 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
31204 * config/rl78/rl78-protos.h (rl78_split_movdi): New function
31206 * config/rl78/rl78.md (movdi): New define_expand.
31207 * config/rl78/rl78.c (rl78_split_movdi): New function.
31209 2018-01-22 Michael Meissner <meissner@linux.vnet.ibm.com>
31212 * config/rs6000/rs6000-protos.h (rs6000_split_signbit): Delete,
31214 * config/rs6000/rs6000.c (rs6000_split_signbit): Likewise.
31215 * config/rs6000/rs6000.md (signbit<mode>2): Change code for IEEE
31216 128-bit to produce an UNSPEC move to get the double word with the
31217 signbit and then a shift directly to do signbit.
31218 (signbit<mode>2_dm): Replace old IEEE 128-bit signbit
31219 implementation with a new version that just does either a direct
31220 move or a regular move. Move memory interface to separate insns.
31221 Move insns so they are next to the expander.
31222 (signbit<mode>2_dm_mem_be): New combiner insns to combine load
31223 with signbit move. Split big and little endian case.
31224 (signbit<mode>2_dm_mem_le): Likewise.
31225 (signbit<mode>2_dm_<su>ext): Delete, no longer used.
31226 (signbit<mode>2_dm2): Likewise.
31228 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
31230 * config/rl78/rl78.md (anddi3): New define_expand.
31232 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
31234 * config/rl78/rl78.md (umindi3): New define_expand.
31236 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
31238 * config/rl78/rl78.md (smindi3): New define_expand.
31240 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
31242 * config/rl78/rl78.md (smaxdi3): New define_expand.
31244 2018-01-22 Carl Love <cel@us.ibm.com>
31246 * config/rs6000/rs6000-builtin.def (ST_ELEMREV_V1TI, LD_ELEMREV_V1TI,
31247 LVX_V1TI): Add macro expansion.
31248 * config/rs6000/rs6000-c.c (altivec_builtin_types): Add argument
31249 definitions for VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_VEC_ST,
31250 VSX_BUILTIN_VEC_XL, LD_ELEMREV_V1TI builtins.
31251 * config/rs6000/rs6000-p8swap.c (insn_is_swappable_p);
31252 Change check to determine if the instruction is a byte reversing
31253 entry. Fix typo in comment.
31254 * config/rs6000/rs6000.c (altivec_expand_builtin): Add case entry
31255 for VSX_BUILTIN_ST_ELEMREV_V1TI and VSX_BUILTIN_LD_ELEMREV_V1TI.
31256 Add def_builtin calls for new builtins.
31257 * config/rs6000/vsx.md (vsx_st_elemrev_v1ti, vsx_ld_elemrev_v1ti):
31258 Add define_insn expansion.
31260 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
31262 * config/rl78/rl78.md (umaxdi3): New define_expand.
31264 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
31266 * config/rl78/rl78.c (rl78_note_reg_set): Fixed dead reg check
31267 for non-QImode registers.
31269 2018-01-22 Richard Biener <rguenther@suse.de>
31271 PR tree-optimization/83963
31272 * graphite-scop-detection.c (scop_detection::get_sese): Delay
31273 including the loop exit block.
31274 (scop_detection::merge_sese): Likewise.
31275 (scop_detection::add_scop): Do it here instead.
31277 2018-01-22 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
31279 * doc/sourcebuild.texi (arm_softfloat): Document.
31281 2018-01-21 John David Anglin <danglin@gcc.gnu.org>
31284 * config/pa/pa.c (pa_function_ok_for_sibcall): Use
31285 targetm.binds_local_p instead of TREE_PUBLIC to check local binding.
31286 Move TARGET_PORTABLE_RUNTIME check after TARGET_64BIT check.
31288 2018-01-21 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
31289 David Edelsohn <dje.gcc@gmail.com>
31292 * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
31293 Change "crset eq" to "crset 2".
31294 (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
31295 (*call_indirect_aix<mode>_nospec): Likewise.
31296 (*call_value_indirect_aix<mode>_nospec): Likewise.
31297 (*call_indirect_elfv2<mode>_nospec): Likewise.
31298 (*call_value_indirect_elfv2<mode>_nospec): Likewise.
31299 (*sibcall_nonlocal_sysv<mode>): Change "crset eq" to "crset 2";
31300 change assembly output from . to $.
31301 (*sibcall_value_nonlocal_sysv<mode>): Likewise.
31302 (indirect_jump<mode>_nospec): Change assembly output from . to $.
31303 (*tablejump<mode>_internal1_nospec): Likewise.
31305 2018-01-21 Oleg Endo <olegendo@gcc.gnu.org>
31308 * config/sh/sh_optimize_sett_clrt.cc:
31309 Use INCLUDE_ALGORITHM and INCLUDE_VECTOR instead of direct includes.
31311 2018-01-20 Richard Sandiford <richard.sandiford@linaro.org>
31313 PR tree-optimization/83940
31314 * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): Set
31315 offset_dt to vect_constant_def rather than vect_unknown_def_type.
31316 (vect_check_load_store_mask): Add a mask_dt_out parameter and
31317 use it to pass back the definition type.
31318 (vect_check_store_rhs): Likewise rhs_dt_out.
31319 (vect_build_gather_load_calls): Add a mask_dt argument and use
31320 it instead of a call to vect_is_simple_use.
31321 (vectorizable_store): Update calls to vect_check_load_store_mask
31322 and vect_check_store_rhs. Use the dt returned by the latter instead
31323 of scatter_src_dt. Use the cached mask_dt and gs_info.offset_dt
31324 instead of calls to vect_is_simple_use. Pass the scalar rather
31325 than the vector operand to vect_is_simple_use when handling
31326 second and subsequent copies of an rhs value.
31327 (vectorizable_load): Update calls to vect_check_load_store_mask
31328 and vect_build_gather_load_calls. Use the cached mask_dt and
31329 gs_info.offset_dt instead of calls to vect_is_simple_use.
31331 2018-01-20 Jakub Jelinek <jakub@redhat.com>
31333 PR middle-end/83945
31334 * tree-emutls.c: Include gimplify.h.
31335 (lower_emutls_2): New function.
31336 (lower_emutls_1): If ADDR_EXPR is a gimple invariant and walk_tree
31337 with lower_emutls_2 callback finds some TLS decl in it, unshare_expr
31338 it before further processing.
31341 * simplify-rtx.c (simplify_binary_operation_1) <case UMOD>: Use
31342 UINTVAL (trueop1) instead of INTVAL (op1).
31344 2018-01-19 Jakub Jelinek <jakub@redhat.com>
31348 * dwarf2cfi.c (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define to
31349 INCOMING_FRAME_SP_OFFSET if not defined.
31350 (scan_trace): Add ENTRY argument. If true and
31351 DEFAULT_INCOMING_FRAME_SP_OFFSET != INCOMING_FRAME_SP_OFFSET,
31352 emit a note to adjust the CFA offset.
31353 (create_cfi_notes): Adjust scan_trace callers.
31354 (create_cie_data): Use DEFAULT_INCOMING_FRAME_SP_OFFSET rather than
31355 INCOMING_FRAME_SP_OFFSET in the CIE.
31356 * config/i386/i386.h (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define.
31357 * config/stormy16/stormy16.h (DEFAULT_INCOMING_FRAME_SP_OFFSET):
31359 * doc/tm.texi.in (DEFAULT_INCOMING_FRAME_SP_OFFSET): Document.
31360 * doc/tm.texi: Regenerated.
31362 2018-01-19 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
31364 PR rtl-optimization/83147
31365 * lra-constraints.c (remove_inheritance_pseudos): Use
31366 lra_substitute_pseudo_within_insn.
31368 2018-01-19 Tom de Vries <tom@codesourcery.com>
31369 Cesar Philippidis <cesar@codesourcery.com>
31372 * config/nvptx/nvptx.c (nvptx_single): Fix jit workaround.
31374 2018-01-19 Cesar Philippidis <cesar@codesourcery.com>
31377 * config/nvptx/nvptx.c (output_init_frag): Don't use generic address
31378 spaces for function labels.
31380 2018-01-19 Martin Liska <mliska@suse.cz>
31382 * predict.def (PRED_LOOP_EXIT): Change from 85 to 89.
31383 (PRED_LOOP_EXIT_WITH_RECURSION): Change from 72 to 78.
31384 (PRED_LOOP_EXTRA_EXIT): Change from 83 to 67.
31385 (PRED_OPCODE_POSITIVE): Change from 64 to 59.
31386 (PRED_TREE_OPCODE_POSITIVE): Change from 64 to 59.
31387 (PRED_CONST_RETURN): Change from 69 to 65.
31388 (PRED_NULL_RETURN): Change from 91 to 71.
31389 (PRED_LOOP_IV_COMPARE_GUESS): Change from 98 to 64.
31390 (PRED_LOOP_GUARD): Change from 66 to 73.
31392 2018-01-19 Martin Liska <mliska@suse.cz>
31394 * predict.c (predict_insn_def): Add new assert.
31395 (struct branch_predictor): Change type to signed integer.
31396 (test_prediction_value_range): Amend test to cover
31397 PROB_UNINITIALIZED.
31398 * predict.def (PRED_LOOP_ITERATIONS): Use the new constant.
31399 (PRED_LOOP_ITERATIONS_GUESSED): Likewise.
31400 (PRED_LOOP_ITERATIONS_MAX): Likewise.
31401 (PRED_LOOP_IV_COMPARE): Likewise.
31402 * predict.h (PROB_UNINITIALIZED): Define new constant.
31404 2018-01-19 Martin Liska <mliska@suse.cz>
31406 * predict.c (dump_prediction): Add new format for
31407 analyze_brprob.py script which is enabled with -details
31409 * profile-count.h (precise_p): New function.
31411 2018-01-19 Richard Sandiford <richard.sandiford@linaro.org>
31413 PR tree-optimization/83922
31414 * tree-vect-loop.c (vect_verify_full_masking): Return false if
31415 there are no statements that need masking.
31416 (vect_active_double_reduction_p): New function.
31417 (vect_analyze_loop_operations): Use it when handling phis that
31418 are not in the loop header.
31420 2018-01-19 Richard Sandiford <richard.sandiford@linaro.org>
31422 PR tree-optimization/83914
31423 * tree-vect-loop.c (vectorizable_induction): Don't convert
31424 init_expr or apply the peeling adjustment for inductions
31425 that are nested within the vectorized loop.
31427 2018-01-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
31429 * config/arm/thumb2.md (*thumb2_negsi2_short): Use RSB mnemonic
31432 2018-01-18 Jakub Jelinek <jakub@redhat.com>
31436 * function.h (gimplify_parameters): Add gimple_seq * argument.
31437 * function.c: Include gimple.h and options.h.
31438 (gimplify_parameters): Add cleanup argument, add CLOBBER stmts
31439 for the added local temporaries if needed.
31440 * gimplify.c (gimplify_body): Adjust gimplify_parameters caller,
31441 if there are any parameter cleanups, wrap whole body into a
31442 try/finally with the cleanups.
31444 2018-01-18 Wilco Dijkstra <wdijkstr@arm.com>
31447 * config/aarch64/aarch64.c (aarch64_legitimate_constant_p):
31448 Use GET_MODE_CLASS for scalar floating point.
31450 2018-01-18 Jan Hubicka <hubicka@ucw.cz>
31454 * cgraphclones.c (cgraph_node::create_version_clone_with_body):
31455 Fix call of call_cgraph_insertion_hooks.
31457 2018-01-18 Martin Sebor <msebor@redhat.com>
31459 * doc/invoke.texi (-Wclass-memaccess): Tweak text.
31461 2018-01-18 Jan Hubicka <hubicka@ucw.cz>
31464 * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Update edge
31467 2018-01-18 Boris Kolpackov <boris@codesynthesis.com>
31470 * common.opt: (-ffile-prefix-map): New option.
31471 * opts.c (common_handle_option): Defer it.
31472 * opts-global.c (handle_common_deferred_options): Handle it.
31473 * debug.h (remap_debug_filename, add_debug_prefix_map): Move to...
31474 * file-prefix-map.h: New file.
31475 (remap_debug_filename, add_debug_prefix_map): ...here.
31476 (add_macro_prefix_map, add_file_prefix_map, remap_macro_filename): New.
31477 * final.c (debug_prefix_map, add_debug_prefix_map
31478 remap_debug_filename): Move to...
31479 * file-prefix-map.c: New file.
31480 (file_prefix_map, add_prefix_map, remap_filename) ...here and rename,
31481 generalize, get rid of alloca(), use strrchr() instead of strchr().
31482 (add_macro_prefix_map, add_debug_prefix_map, add_file_prefix_map):
31483 Implement in terms of add_prefix_map().
31484 (remap_macro_filename, remap_debug_filename): Implement in term of
31486 * Makefile.in (OBJS, PLUGIN_HEADERS): Add new files.
31487 * builtins.c (fold_builtin_FILE): Call remap_macro_filename().
31488 * dbxout.c: Include file-prefix-map.h.
31489 * varasm.c: Likewise.
31490 * vmsdbgout.c: Likewise.
31491 * xcoffout.c: Likewise.
31492 * dwarf2out.c: Likewise plus omit new options from DW_AT_producer.
31493 * doc/cppopts.texi (-fmacro-prefix-map): Document.
31494 * doc/invoke.texi (-ffile-prefix-map): Document.
31495 (-fdebug-prefix-map): Update description.
31497 2018-01-18 Martin Liska <mliska@suse.cz>
31499 * config/i386/i386.c (indirect_thunk_name): Document that also
31501 (output_indirect_thunk): Document why both instructions
31502 (pause and lfence) are generated.
31504 2018-01-18 Richard Biener <rguenther@suse.de>
31506 PR tree-optimization/83887
31507 * graphite-scop-detection.c
31508 (scop_detection::get_nearest_dom_with_single_entry): Remove.
31509 (scop_detection::get_nearest_pdom_with_single_exit): Likewise.
31510 (scop_detection::merge_sese): Re-implement with a flood-fill
31511 algorithm that properly finds a SESE region if it exists.
31513 2018-01-18 Jakub Jelinek <jakub@redhat.com>
31516 * match.pd ((P + A) - P, P - (P + A), (P + A) - (P + B)): For
31517 pointer_diff optimizations use view_convert instead of convert.
31519 2018-01-17 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
31521 * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
31522 Generate different code for -mno-speculate-indirect-jumps.
31523 (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
31524 (*call_indirect_aix<mode>): Disable for
31525 -mno-speculate-indirect-jumps.
31526 (*call_indirect_aix<mode>_nospec): New define_insn.
31527 (*call_value_indirect_aix<mode>): Disable for
31528 -mno-speculate-indirect-jumps.
31529 (*call_value_indirect_aix<mode>_nospec): New define_insn.
31530 (*sibcall_nonlocal_sysv<mode>): Generate different code for
31531 -mno-speculate-indirect-jumps.
31532 (*sibcall_value_nonlocal_sysv<mode>): Likewise.
31534 2018-01-17 Michael Meissner <meissner@linux.vnet.ibm.com>
31536 * config/rs6000/rs6000.c (rs6000_emit_move): If we load or store a
31537 long double type, set the flags for noting the default long double
31538 type, even if we don't pass or return a long double type.
31540 2018-01-17 Jan Hubicka <hubicka@ucw.cz>
31543 * ipa-inline.c (flatten_function): Do not overwrite final inlining
31546 2018-01-17 Will Schmidt <will_schmidt@vnet.ibm.com>
31548 * config/rs6000/rs6000.c (rs6000_gimple_builtin): Add gimple folding
31549 support for merge[hl].
31550 (fold_mergehl_helper): New helper function.
31551 (tree-vector-builder.h): New #include for tree_vector_builder usage.
31552 * config/rs6000/altivec.md (altivec_vmrghw_direct): Add xxmrghw insn.
31553 (altivec_vmrglw_direct): Add xxmrglw insn.
31555 2018-01-17 Andrew Waterman <andrew@sifive.com>
31557 * config/riscv/riscv.c (riscv_conditional_register_usage): If
31558 UNITS_PER_FP_ARG is 0, set call_used_regs to 1 for all FP regs.
31560 2018-01-17 David Malcolm <dmalcolm@redhat.com>
31563 * ipa-devirt.c (add_type_duplicate): When comparing memory layout,
31564 call the lto_location_cache before reading the
31565 DECL_SOURCE_LOCATION of the types.
31567 2018-01-17 Wilco Dijkstra <wdijkstr@arm.com>
31568 Richard Sandiford <richard.sandiford@linaro.org>
31570 * config/aarch64/aarch64.md (movti_aarch64): Use Uti constraint.
31571 * config/aarch64/aarch64.c (aarch64_mov128_immediate): New function.
31572 (aarch64_legitimate_constant_p): Just support CONST_DOUBLE
31573 SF/DF/TF mode to avoid creating illegal CONST_WIDE_INT immediates.
31574 * config/aarch64/aarch64-protos.h (aarch64_mov128_immediate):
31576 * config/aarch64/constraints.md (aarch64_movti_operand):
31578 * config/aarch64/predicates.md (Uti): Add new constraint.
31580 2018-01-17 Carl Love <cel@us.ibm.com>
31582 * config/rs6000/vsx.md (define_expand xl_len_r,
31583 define_expand stxvl, define_expand *stxvl): Add match_dup argument.
31584 (define_insn): Add, match_dup 1 argument to define_insn stxvll and
31586 (define_expand, define_insn): Move the shift left from the
31587 define_insn to the define_expand for lxvl and stxvl instructions.
31588 * config/rs6000/rs6000-builtin.def (BU_P9V_64BIT_VSX_2): Change LXVL
31589 and XL_LEN_R definitions to PURE.
31591 2018-01-17 Uros Bizjak <ubizjak@gmail.com>
31593 * config/i386/i386.c (indirect_thunk_name): Declare regno
31594 as unsigned int. Compare regno with INVALID_REGNUM.
31595 (output_indirect_thunk): Ditto.
31596 (output_indirect_thunk_function): Ditto.
31597 (ix86_code_end): Declare regno as unsigned int. Use INVALID_REGNUM
31598 in the call to output_indirect_thunk_function.
31600 2018-01-17 Richard Sandiford <richard.sandiford@linaro.org>
31602 PR middle-end/83884
31603 * expr.c (expand_expr_real_1): Use the size of GET_MODE (op0)
31604 rather than the size of inner_type to determine the stack slot size
31605 when handling VIEW_CONVERT_EXPRs on strict-alignment targets.
31607 2018-01-16 Sebastian Peryt <sebastian.peryt@intel.com>
31610 * config/i386/i386.c (ix86_option_override_internal): Add PTA_RDRND
31613 2018-01-16 Michael Meissner <meissner@linux.vnet.ibm.com>
31615 * config.gcc (powerpc*-linux*-*): Add support for 64-bit little
31616 endian Linux systems to optionally enable multilibs for selecting
31617 the long double type if the user configured an explicit type.
31618 * config/rs6000/rs6000.h (TARGET_IEEEQUAD_MULTILIB): Indicate we
31619 have no long double multilibs if not defined.
31620 * config/rs6000/rs6000.c (rs6000_option_override_internal): Do not
31621 warn if the user used -mabi={ieee,ibm}longdouble and we built
31622 multilibs for long double.
31623 * config/rs6000/linux64.h (MULTILIB_DEFAULTS_IEEE): Define as the
31624 appropriate multilib option.
31625 (MULTILIB_DEFAULTS): Add MULTILIB_DEFAULTS_IEEE to the default
31627 * config/rs6000/t-ldouble-linux64le-ibm: New configuration files
31628 for building long double multilibs.
31629 * config/rs6000/t-ldouble-linux64le-ieee: Likewise.
31631 2018-01-16 John David Anglin <danglin@gcc.gnu.org>
31633 * config.gcc (hppa*-*-linux*): Change callee copies ABI to caller
31636 * config/pa.h (MALLOC_ABI_ALIGNMENT): Set 32-bit alignment default to
31638 * config/pa/pa32-linux.h (MALLOC_ABI_ALIGNMENT): Set alignment to
31641 * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Cleanup type and mode
31644 * config/pa/pa.c (pa_function_arg_size): Apply CEIL to GET_MODE_SIZE
31647 2018-01-16 Eric Botcazou <ebotcazou@adacore.com>
31649 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For an
31650 ADDR_EXPR, do not count the offset of a COMPONENT_REF twice.
31652 2018-01-16 Kelvin Nilsen <kelvin@gcc.gnu.org>
31654 * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Generate
31655 different rtl trees depending on TARGET_64BIT.
31656 (rs6000_gen_lvx): Likewise.
31658 2018-01-16 Eric Botcazou <ebotcazou@adacore.com>
31660 * config/visium/visium.md (nop): Tweak comment.
31661 (hazard_nop): Likewise.
31663 2018-01-16 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
31665 * config/rs6000/rs6000.c (rs6000_opt_vars): Add entry for
31666 -mspeculate-indirect-jumps.
31667 * config/rs6000/rs6000.md (*call_indirect_elfv2<mode>): Disable
31668 for -mno-speculate-indirect-jumps.
31669 (*call_indirect_elfv2<mode>_nospec): New define_insn.
31670 (*call_value_indirect_elfv2<mode>): Disable for
31671 -mno-speculate-indirect-jumps.
31672 (*call_value_indirect_elfv2<mode>_nospec): New define_insn.
31673 (indirect_jump): Emit different RTL for
31674 -mno-speculate-indirect-jumps.
31675 (*indirect_jump<mode>): Disable for
31676 -mno-speculate-indirect-jumps.
31677 (*indirect_jump<mode>_nospec): New define_insn.
31678 (tablejump): Emit different RTL for
31679 -mno-speculate-indirect-jumps.
31680 (tablejumpsi): Disable for -mno-speculate-indirect-jumps.
31681 (tablejumpsi_nospec): New define_expand.
31682 (tablejumpdi): Disable for -mno-speculate-indirect-jumps.
31683 (tablejumpdi_nospec): New define_expand.
31684 (*tablejump<mode>_internal1): Disable for
31685 -mno-speculate-indirect-jumps.
31686 (*tablejump<mode>_internal1_nospec): New define_insn.
31687 * config/rs6000/rs6000.opt (mspeculate-indirect-jumps): New
31690 2018-01-16 Artyom Skrobov tyomitch@gmail.com
31692 * caller-save.c (insert_save): Drop unnecessary parameter. All
31695 2018-01-16 Jakub Jelinek <jakub@redhat.com>
31696 Richard Biener <rguenth@suse.de>
31699 * gimplify.c (gimplify_one_sizepos): For is_gimple_constant (expr)
31700 return early, inline manually is_gimple_sizepos. Make sure if we
31701 call gimplify_expr we don't end up with a gimple constant.
31702 * tree.c (variably_modified_type_p): Don't return true for
31703 is_gimple_constant (_t). Inline manually is_gimple_sizepos.
31704 * gimplify.h (is_gimple_sizepos): Remove.
31706 2018-01-16 Richard Sandiford <richard.sandiford@linaro.org>
31708 PR tree-optimization/83857
31709 * tree-vect-loop.c (vect_analyze_loop_operations): Don't call
31710 vectorizable_live_operation for pure SLP statements.
31711 (vectorizable_live_operation): Handle PHIs.
31713 2018-01-16 Richard Biener <rguenther@suse.de>
31715 PR tree-optimization/83867
31716 * tree-vect-stmts.c (vect_transform_stmt): Precompute
31717 nested_in_vect_loop_p since the scalar stmt may get invalidated.
31719 2018-01-16 Jakub Jelinek <jakub@redhat.com>
31722 * stor-layout.c (handle_warn_if_not_align): Use byte_position and
31723 multiple_of_p instead of unchecked tree_to_uhwi and UHWI check.
31724 If off is not INTEGER_CST, issue a may not be aligned warning
31725 rather than isn't aligned. Use isn%'t rather than isn't.
31726 * fold-const.c (multiple_of_p) <case BIT_AND_EXPR>: Don't fall through
31728 <case MULT_EXPR>: Improve the case when bottom and one of the
31729 MULT_EXPR operands are INTEGER_CSTs and bottom is multiple of that
31730 operand, in that case check if the other operand is multiple of
31731 bottom divided by the INTEGER_CST operand.
31733 2018-01-16 Richard Sandiford <richard.sandiford@linaro.org>
31736 * config/pa/pa.h (FUNCTION_ARG_SIZE): Delete.
31737 * config/pa/pa-protos.h (pa_function_arg_size): Declare.
31738 * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Use
31739 pa_function_arg_size instead of FUNCTION_ARG_SIZE.
31740 * config/pa/pa.c (pa_function_arg_advance): Likewise.
31741 (pa_function_arg, pa_arg_partial_bytes): Likewise.
31742 (pa_function_arg_size): New function.
31744 2018-01-16 Richard Sandiford <richard.sandiford@linaro.org>
31746 * fold-const.c (fold_ternary_loc): Construct the vec_perm_indices
31747 in a separate statement.
31749 2018-01-16 Richard Sandiford <richard.sandiford@linaro.org>
31751 PR tree-optimization/83847
31752 * tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Don't
31753 group gathers and scatters.
31755 2018-01-16 Jakub Jelinek <jakub@redhat.com>
31757 PR rtl-optimization/86620
31758 * params.def (max-sched-ready-insns): Bump minimum value to 1.
31760 PR rtl-optimization/83213
31761 * recog.c (peep2_attempt): Copy over CROSSING_JUMP_P from peepinsn
31762 to last if both are JUMP_INSNs.
31764 PR tree-optimization/83843
31765 * gimple-ssa-store-merging.c
31766 (imm_store_chain_info::output_merged_store): Handle bit_not_p on
31767 store_immediate_info for bswap/nop orig_stores.
31769 2018-01-15 Andrew Waterman <andrew@sifive.com>
31771 * config/riscv/riscv.c (riscv_rtx_costs) <MULT>: Increase cost if
31773 <UDIV>: Increase cost if !TARGET_DIV.
31775 2018-01-15 Segher Boessenkool <segher@kernel.crashing.org>
31777 * config/rs6000/rs6000.md (define_attr "type"): Remove delayed_cr.
31778 (define_attr "cr_logical_3op"): New.
31779 (cceq_ior_compare): Adjust.
31780 (cceq_ior_compare_complement): Adjust.
31781 (*cceq_rev_compare): Adjust.
31782 * config/rs6000/rs6000.c (rs6000_adjust_cost): Adjust.
31783 (is_cracked_insn): Adjust.
31784 (insn_must_be_first_in_group): Adjust.
31785 * config/rs6000/40x.md: Adjust.
31786 * config/rs6000/440.md: Adjust.
31787 * config/rs6000/476.md: Adjust.
31788 * config/rs6000/601.md: Adjust.
31789 * config/rs6000/603.md: Adjust.
31790 * config/rs6000/6xx.md: Adjust.
31791 * config/rs6000/7450.md: Adjust.
31792 * config/rs6000/7xx.md: Adjust.
31793 * config/rs6000/8540.md: Adjust.
31794 * config/rs6000/cell.md: Adjust.
31795 * config/rs6000/e300c2c3.md: Adjust.
31796 * config/rs6000/e500mc.md: Adjust.
31797 * config/rs6000/e500mc64.md: Adjust.
31798 * config/rs6000/e5500.md: Adjust.
31799 * config/rs6000/e6500.md: Adjust.
31800 * config/rs6000/mpc.md: Adjust.
31801 * config/rs6000/power4.md: Adjust.
31802 * config/rs6000/power5.md: Adjust.
31803 * config/rs6000/power6.md: Adjust.
31804 * config/rs6000/power7.md: Adjust.
31805 * config/rs6000/power8.md: Adjust.
31806 * config/rs6000/power9.md: Adjust.
31807 * config/rs6000/rs64.md: Adjust.
31808 * config/rs6000/titan.md: Adjust.
31810 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
31812 * config/i386/predicates.md (indirect_branch_operand): Rewrite
31813 ix86_indirect_branch_register logic.
31815 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
31817 * config/i386/constraints.md (Bs): Update
31818 ix86_indirect_branch_register check. Don't check
31819 ix86_indirect_branch_register with GOT_memory_operand.
31821 * config/i386/predicates.md (GOT_memory_operand): Don't check
31822 ix86_indirect_branch_register here.
31823 (GOT32_symbol_operand): Likewise.
31825 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
31827 * config/i386/predicates.md (constant_call_address_operand):
31828 Rewrite ix86_indirect_branch_register logic.
31829 (sibcall_insn_operand): Likewise.
31831 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
31833 * config/i386/constraints.md (Bs): Replace
31834 ix86_indirect_branch_thunk_register with
31835 ix86_indirect_branch_register.
31837 * config/i386/i386.md (indirect_jump): Likewise.
31838 (tablejump): Likewise.
31839 (*sibcall_memory): Likewise.
31840 (*sibcall_value_memory): Likewise.
31841 Peepholes of indirect call and jump via memory: Likewise.
31842 * config/i386/i386.opt: Likewise.
31843 * config/i386/predicates.md (indirect_branch_operand): Likewise.
31844 (GOT_memory_operand): Likewise.
31845 (call_insn_operand): Likewise.
31846 (sibcall_insn_operand): Likewise.
31847 (GOT32_symbol_operand): Likewise.
31849 2018-01-15 Jakub Jelinek <jakub@redhat.com>
31851 PR middle-end/83837
31852 * omp-expand.c (expand_omp_atomic_pipeline): Use loaded_val
31853 type rather than type addr's type points to.
31854 (expand_omp_atomic_mutex): Likewise.
31855 (expand_omp_atomic): Likewise.
31857 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
31860 * config/i386/i386.c (output_indirect_thunk_function): Use
31861 ASM_OUTPUT_LABEL, instead of ASM_OUTPUT_DEF, for TARGET_MACHO
31862 for __x86_return_thunk.
31864 2018-01-15 Richard Biener <rguenther@suse.de>
31866 PR middle-end/83850
31867 * expmed.c (extract_bit_field_1): Fix typo.
31869 2018-01-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
31872 * config/arm/iterators.md (VF): New mode iterator.
31873 * config/arm/neon.md (neon_vabd<mode>_2): Use the above.
31874 Remove integer-related logic from pattern.
31875 (neon_vabd<mode>_3): Likewise.
31877 2018-01-15 Jakub Jelinek <jakub@redhat.com>
31879 PR middle-end/82694
31880 * common.opt (fstrict-overflow): No longer an alias.
31881 (fwrapv-pointer): New option.
31882 * tree.h (TYPE_OVERFLOW_WRAPS, TYPE_OVERFLOW_UNDEFINED): Define
31883 also for pointer types based on flag_wrapv_pointer.
31884 * opts.c (common_handle_option) <case OPT_fstrict_overflow>: Set
31885 opts->x_flag_wrap[pv] to !value, clear opts->x_flag_trapv if
31886 opts->x_flag_wrapv got set.
31887 * fold-const.c (fold_comparison, fold_binary_loc): Revert 2017-08-01
31888 changes, just use TYPE_OVERFLOW_UNDEFINED on pointer type instead of
31889 POINTER_TYPE_OVERFLOW_UNDEFINED.
31890 * match.pd: Likewise in address comparison pattern.
31891 * doc/invoke.texi: Document -fwrapv and -fstrict-overflow.
31893 2018-01-15 Richard Biener <rguenther@suse.de>
31896 * tree.c (free_lang_data_in_type): Always unlink TYPE_DECLs
31897 from TYPE_FIELDS. Free TYPE_BINFO if not used by devirtualization.
31898 Reset type names to their identifier if their TYPE_DECL doesn't
31899 have linkage (and thus is used for ODR and devirt).
31900 (save_debug_info_for_decl): Remove.
31901 (save_debug_info_for_type): Likewise.
31902 (add_tree_to_fld_list): Adjust.
31903 * tree-pretty-print.c (dump_generic_node): Make dumping of
31904 type names more robust.
31906 2018-01-15 Richard Biener <rguenther@suse.de>
31908 * BASE-VER: Bump to 8.0.1.
31910 2018-01-14 Martin Sebor <msebor@redhat.com>
31913 * builtins.c (check_access): Avoid warning when the no-warning bit
31916 2018-01-14 Cory Fields <cory-nospam-@coryfields.com>
31918 * tree-ssa-loop-im.c (sort_bbs_in_loop_postorder_cmp): Stabilize sort.
31919 * ira-color (allocno_hard_regs_compare): Likewise.
31921 2018-01-14 Nathan Rossi <nathan@nathanrossi.com>
31924 * config/microblaze/microblaze.c (microblaze_asm_output_ident):
31925 Use .pushsection/.popsection.
31927 2018-01-14 Martin Sebor <msebor@redhat.com>
31930 * doc/invoke.texi (-Wlass-memaccess): Document suppression by casting.
31932 2018-01-14 Jakub Jelinek <jakub@redhat.com>
31934 * config.gcc (i[34567]86-*-*): Remove one duplicate gfniintrin.h
31935 entry from extra_headers.
31936 (x86_64-*-*): Remove two duplicate gfniintrin.h entries from
31937 extra_headers, make the list bitwise identical to the i?86-*-* one.
31939 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
31941 * config/i386/i386.c (ix86_set_indirect_branch_type): Disallow
31942 -mcmodel=large with -mindirect-branch=thunk,
31943 -mindirect-branch=thunk-extern, -mfunction-return=thunk and
31944 -mfunction-return=thunk-extern.
31945 * doc/invoke.texi: Document -mcmodel=large is incompatible with
31946 -mindirect-branch=thunk, -mindirect-branch=thunk-extern,
31947 -mfunction-return=thunk and -mfunction-return=thunk-extern.
31949 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
31951 * config/i386/i386.c (print_reg): Print the name of the full
31952 integer register without '%'.
31953 (ix86_print_operand): Handle 'V'.
31954 * doc/extend.texi: Document 'V' modifier.
31956 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
31958 * config/i386/constraints.md (Bs): Disallow memory operand for
31959 -mindirect-branch-register.
31961 * config/i386/predicates.md (indirect_branch_operand): Likewise.
31962 (GOT_memory_operand): Likewise.
31963 (call_insn_operand): Likewise.
31964 (sibcall_insn_operand): Likewise.
31965 (GOT32_symbol_operand): Likewise.
31966 * config/i386/i386.md (indirect_jump): Call convert_memory_address
31967 for -mindirect-branch-register.
31968 (tablejump): Likewise.
31969 (*sibcall_memory): Likewise.
31970 (*sibcall_value_memory): Likewise.
31971 Disallow peepholes of indirect call and jump via memory for
31972 -mindirect-branch-register.
31973 (*call_pop): Replace m with Bw.
31974 (*call_value_pop): Likewise.
31975 (*sibcall_pop_memory): Replace m with Bs.
31976 * config/i386/i386.opt (mindirect-branch-register): New option.
31977 * doc/invoke.texi: Document -mindirect-branch-register option.
31979 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
31981 * config/i386/i386-protos.h (ix86_output_function_return): New.
31982 * config/i386/i386.c (ix86_set_indirect_branch_type): Also
31983 set function_return_type.
31984 (indirect_thunk_name): Add ret_p to indicate thunk for function
31986 (output_indirect_thunk_function): Pass false to
31987 indirect_thunk_name.
31988 (ix86_output_indirect_branch_via_reg): Likewise.
31989 (ix86_output_indirect_branch_via_push): Likewise.
31990 (output_indirect_thunk_function): Create alias for function
31991 return thunk if regno < 0.
31992 (ix86_output_function_return): New function.
31993 (ix86_handle_fndecl_attribute): Handle function_return.
31994 (ix86_attribute_table): Add function_return.
31995 * config/i386/i386.h (machine_function): Add
31996 function_return_type.
31997 * config/i386/i386.md (simple_return_internal): Use
31998 ix86_output_function_return.
31999 (simple_return_internal_long): Likewise.
32000 * config/i386/i386.opt (mfunction-return=): New option.
32001 (indirect_branch): Mention -mfunction-return=.
32002 * doc/extend.texi: Document function_return function attribute.
32003 * doc/invoke.texi: Document -mfunction-return= option.
32005 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
32007 * config/i386/i386-opts.h (indirect_branch): New.
32008 * config/i386/i386-protos.h (ix86_output_indirect_jmp): Likewise.
32009 * config/i386/i386.c (ix86_using_red_zone): Disallow red-zone
32010 with local indirect jump when converting indirect call and jump.
32011 (ix86_set_indirect_branch_type): New.
32012 (ix86_set_current_function): Call ix86_set_indirect_branch_type.
32013 (indirectlabelno): New.
32014 (indirect_thunk_needed): Likewise.
32015 (indirect_thunk_bnd_needed): Likewise.
32016 (indirect_thunks_used): Likewise.
32017 (indirect_thunks_bnd_used): Likewise.
32018 (INDIRECT_LABEL): Likewise.
32019 (indirect_thunk_name): Likewise.
32020 (output_indirect_thunk): Likewise.
32021 (output_indirect_thunk_function): Likewise.
32022 (ix86_output_indirect_branch_via_reg): Likewise.
32023 (ix86_output_indirect_branch_via_push): Likewise.
32024 (ix86_output_indirect_branch): Likewise.
32025 (ix86_output_indirect_jmp): Likewise.
32026 (ix86_code_end): Call output_indirect_thunk_function if needed.
32027 (ix86_output_call_insn): Call ix86_output_indirect_branch if
32029 (ix86_handle_fndecl_attribute): Handle indirect_branch.
32030 (ix86_attribute_table): Add indirect_branch.
32031 * config/i386/i386.h (machine_function): Add indirect_branch_type
32032 and has_local_indirect_jump.
32033 * config/i386/i386.md (indirect_jump): Set has_local_indirect_jump
32035 (tablejump): Likewise.
32036 (*indirect_jump): Use ix86_output_indirect_jmp.
32037 (*tablejump_1): Likewise.
32038 (simple_return_indirect_internal): Likewise.
32039 * config/i386/i386.opt (mindirect-branch=): New option.
32040 (indirect_branch): New.
32043 (thunk-inline): Likewise.
32044 (thunk-extern): Likewise.
32045 * doc/extend.texi: Document indirect_branch function attribute.
32046 * doc/invoke.texi: Document -mindirect-branch= option.
32048 2018-01-14 Jan Hubicka <hubicka@ucw.cz>
32051 * ipa-inline.c (edge_badness): Tolerate roundoff errors.
32053 2018-01-14 Richard Sandiford <richard.sandiford@linaro.org>
32055 * ipa-inline.c (want_inline_small_function_p): Return false if
32056 inlining has already failed with CIF_FINAL_ERROR.
32057 (update_caller_keys): Call want_inline_small_function_p before
32059 (update_callee_keys): Likewise.
32061 2018-01-10 Kelvin Nilsen <kelvin@gcc.gnu.org>
32063 * config/rs6000/rs6000-p8swap.c (rs6000_sum_of_two_registers_p):
32065 (rs6000_quadword_masked_address_p): Likewise.
32066 (quad_aligned_load_p): Likewise.
32067 (quad_aligned_store_p): Likewise.
32068 (const_load_sequence_p): Add comment to describe the outer-most loop.
32069 (mimic_memory_attributes_and_flags): New function.
32070 (rs6000_gen_stvx): Likewise.
32071 (replace_swapped_aligned_store): Likewise.
32072 (rs6000_gen_lvx): Likewise.
32073 (replace_swapped_aligned_load): Likewise.
32074 (replace_swapped_load_constant): Capitalize argument name in
32075 comment describing this function.
32076 (rs6000_analyze_swaps): Add a third pass to search for vector loads
32077 and stores that access quad-word aligned addresses and replace
32078 with stvx or lvx instructions when appropriate.
32079 * config/rs6000/rs6000-protos.h (rs6000_sum_of_two_registers_p):
32080 New function prototype.
32081 (rs6000_quadword_masked_address_p): Likewise.
32082 (rs6000_gen_lvx): Likewise.
32083 (rs6000_gen_stvx): Likewise.
32084 * config/rs6000/vsx.md (*vsx_le_perm_load_<mode>): For modes
32085 VSX_D (V2DF, V2DI), modify this split to select lvx instruction
32086 when memory address is aligned.
32087 (*vsx_le_perm_load_<mode>): For modes VSX_W (V4SF, V4SI), modify
32088 this split to select lvx instruction when memory address is aligned.
32089 (*vsx_le_perm_load_v8hi): Modify this split to select lvx
32090 instruction when memory address is aligned.
32091 (*vsx_le_perm_load_v16qi): Likewise.
32092 (four unnamed splitters): Modify to select the stvx instruction
32093 when memory is aligned.
32095 2018-01-13 Jan Hubicka <hubicka@ucw.cz>
32097 * predict.c (determine_unlikely_bbs): Handle correctly BBs
32098 which appears in the queue multiple times.
32100 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
32101 Alan Hayward <alan.hayward@arm.com>
32102 David Sherwood <david.sherwood@arm.com>
32104 * tree-vectorizer.h (vec_lower_bound): New structure.
32105 (_loop_vec_info): Add check_nonzero and lower_bounds.
32106 (LOOP_VINFO_CHECK_NONZERO): New macro.
32107 (LOOP_VINFO_LOWER_BOUNDS): Likewise.
32108 (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Check lower_bounds too.
32109 * tree-data-ref.h (dr_with_seg_len): Add access_size and align
32110 fields. Make seg_len the distance travelled, not including the
32112 (dr_direction_indicator): Declare.
32113 (dr_zero_step_indicator): Likewise.
32114 (dr_known_forward_stride_p): Likewise.
32115 * tree-data-ref.c: Include stringpool.h, tree-vrp.h and
32117 (runtime_alias_check_p): Allow runtime alias checks with
32119 (operator ==): Compare access_size and align.
32120 (prune_runtime_alias_test_list): Rework for new distinction between
32121 the access_size and seg_len.
32122 (create_intersect_range_checks_index): Likewise. Cope with polynomial
32124 (get_segment_min_max): New function.
32125 (create_intersect_range_checks): Use it.
32126 (dr_step_indicator): New function.
32127 (dr_direction_indicator): Likewise.
32128 (dr_zero_step_indicator): Likewise.
32129 (dr_known_forward_stride_p): Likewise.
32130 * tree-loop-distribution.c (data_ref_segment_size): Return
32131 DR_STEP * (niters - 1).
32132 (compute_alias_check_pairs): Update call to the dr_with_seg_len
32134 * tree-vect-data-refs.c (vect_check_nonzero_value): New function.
32135 (vect_preserves_scalar_order_p): New function, split out from...
32136 (vect_analyze_data_ref_dependence): ...here. Check for zero steps.
32137 (vect_vfa_segment_size): Return DR_STEP * (length_factor - 1).
32138 (vect_vfa_access_size): New function.
32139 (vect_vfa_align): Likewise.
32140 (vect_compile_time_alias): Take access_size_a and access_b arguments.
32141 (dump_lower_bound): New function.
32142 (vect_check_lower_bound): Likewise.
32143 (vect_small_gap_p): Likewise.
32144 (vectorizable_with_step_bound_p): Likewise.
32145 (vect_prune_runtime_alias_test_list): Ignore cross-iteration
32146 depencies if the vectorization factor is 1. Convert the checks
32147 for nonzero steps into checks on the bounds of DR_STEP. Try using
32148 a bunds check for variable steps if the minimum required step is
32149 relatively small. Update calls to the dr_with_seg_len
32150 constructor and to vect_compile_time_alias.
32151 * tree-vect-loop-manip.c (vect_create_cond_for_lower_bounds): New
32153 (vect_loop_versioning): Call it.
32154 * tree-vect-loop.c (vect_analyze_loop_2): Clear LOOP_VINFO_LOWER_BOUNDS
32156 (vect_estimate_min_profitable_iters): Account for any bounds checks.
32158 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
32159 Alan Hayward <alan.hayward@arm.com>
32160 David Sherwood <david.sherwood@arm.com>
32162 * doc/sourcebuild.texi (vect_scatter_store): Document.
32163 * optabs.def (scatter_store_optab, mask_scatter_store_optab): New
32165 * doc/md.texi (scatter_store@var{m}, mask_scatter_store@var{m}):
32167 * genopinit.c (main): Add supports_vec_scatter_store and
32168 supports_vec_scatter_store_cached to target_optabs.
32169 * gimple.h (gimple_expr_type): Handle IFN_SCATTER_STORE and
32170 IFN_MASK_SCATTER_STORE.
32171 * internal-fn.def (SCATTER_STORE, MASK_SCATTER_STORE): New internal
32173 * internal-fn.h (internal_store_fn_p): Declare.
32174 (internal_fn_stored_value_index): Likewise.
32175 * internal-fn.c (scatter_store_direct): New macro.
32176 (expand_scatter_store_optab_fn): New function.
32177 (direct_scatter_store_optab_supported_p): New macro.
32178 (internal_store_fn_p): New function.
32179 (internal_gather_scatter_fn_p): Handle IFN_SCATTER_STORE and
32180 IFN_MASK_SCATTER_STORE.
32181 (internal_fn_mask_index): Likewise.
32182 (internal_fn_stored_value_index): New function.
32183 (internal_gather_scatter_fn_supported_p): Adjust operand numbers
32184 for scatter stores.
32185 * optabs-query.h (supports_vec_scatter_store_p): Declare.
32186 * optabs-query.c (supports_vec_scatter_store_p): New function.
32187 * tree-vectorizer.h (vect_get_store_rhs): Declare.
32188 * tree-vect-data-refs.c (vect_analyze_data_ref_access): Return
32189 true for scatter stores.
32190 (vect_gather_scatter_fn_p): Handle scatter stores too.
32191 (vect_check_gather_scatter): Consider using scatter stores if
32192 supports_vec_scatter_store_p.
32193 * tree-vect-patterns.c (vect_try_gather_scatter_pattern): Handle
32194 scatter stores too.
32195 * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
32196 internal_fn_stored_value_index.
32197 (check_load_store_masking): Handle scatter stores too.
32198 (vect_get_store_rhs): Make public.
32199 (vectorizable_call): Use internal_store_fn_p.
32200 (vectorizable_store): Handle scatter store internal functions.
32201 (vect_transform_stmt): Compare GROUP_STORE_COUNT with GROUP_SIZE
32202 when deciding whether the end of the group has been reached.
32203 * config/aarch64/aarch64.md (UNSPEC_ST1_SCATTER): New unspec.
32204 * config/aarch64/aarch64-sve.md (scatter_store<mode>): New expander.
32205 (mask_scatter_store<mode>): New insns.
32207 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
32208 Alan Hayward <alan.hayward@arm.com>
32209 David Sherwood <david.sherwood@arm.com>
32211 * tree-vectorizer.h (vect_gather_scatter_fn_p): Declare.
32212 * tree-vect-data-refs.c (vect_gather_scatter_fn_p): Make public.
32213 * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): New
32215 (vect_use_strided_gather_scatters_p): Take a masked_p argument.
32216 Use vect_truncate_gather_scatter_offset if we can't treat the
32217 operation as a normal gather load or scatter store.
32218 (get_group_load_store_type): Take the gather_scatter_info
32219 as argument. Try using a gather load or scatter store for
32220 single-element groups.
32221 (get_load_store_type): Update calls to get_group_load_store_type
32222 and vect_use_strided_gather_scatters_p.
32224 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
32225 Alan Hayward <alan.hayward@arm.com>
32226 David Sherwood <david.sherwood@arm.com>
32228 * tree-vectorizer.h (vect_create_data_ref_ptr): Take an extra
32229 optional tree argument.
32230 * tree-vect-data-refs.c (vect_check_gather_scatter): Check for
32232 (vect_create_data_ref_ptr): Take the iv_step as an optional argument,
32233 but continue to use the current value as a fallback.
32234 (bump_vector_ptr): Use operand_equal_p rather than tree_int_cst_compare
32235 to compare the updates.
32236 * tree-vect-stmts.c (vect_use_strided_gather_scatters_p): New function.
32237 (get_load_store_type): Use it when handling a strided access.
32238 (vect_get_strided_load_store_ops): New function.
32239 (vect_get_data_ptr_increment): Likewise.
32240 (vectorizable_load): Handle strided gather loads. Always pass
32241 a step to vect_create_data_ref_ptr and bump_vector_ptr.
32243 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
32244 Alan Hayward <alan.hayward@arm.com>
32245 David Sherwood <david.sherwood@arm.com>
32247 * doc/md.texi (gather_load@var{m}): Document.
32248 (mask_gather_load@var{m}): Likewise.
32249 * genopinit.c (main): Add supports_vec_gather_load and
32250 supports_vec_gather_load_cached to target_optabs.
32251 * optabs-tree.c (init_tree_optimization_optabs): Use
32252 ggc_cleared_alloc to allocate target_optabs.
32253 * optabs.def (gather_load_optab, mask_gather_laod_optab): New optabs.
32254 * internal-fn.def (GATHER_LOAD, MASK_GATHER_LOAD): New internal
32256 * internal-fn.h (internal_load_fn_p): Declare.
32257 (internal_gather_scatter_fn_p): Likewise.
32258 (internal_fn_mask_index): Likewise.
32259 (internal_gather_scatter_fn_supported_p): Likewise.
32260 * internal-fn.c (gather_load_direct): New macro.
32261 (expand_gather_load_optab_fn): New function.
32262 (direct_gather_load_optab_supported_p): New macro.
32263 (direct_internal_fn_optab): New function.
32264 (internal_load_fn_p): Likewise.
32265 (internal_gather_scatter_fn_p): Likewise.
32266 (internal_fn_mask_index): Likewise.
32267 (internal_gather_scatter_fn_supported_p): Likewise.
32268 * optabs-query.c (supports_at_least_one_mode_p): New function.
32269 (supports_vec_gather_load_p): Likewise.
32270 * optabs-query.h (supports_vec_gather_load_p): Declare.
32271 * tree-vectorizer.h (gather_scatter_info): Add ifn, element_type
32272 and memory_type field.
32273 (NUM_PATTERNS): Bump to 15.
32274 * tree-vect-data-refs.c: Include internal-fn.h.
32275 (vect_gather_scatter_fn_p): New function.
32276 (vect_describe_gather_scatter_call): Likewise.
32277 (vect_check_gather_scatter): Try using internal functions for
32278 gather loads. Recognize existing calls to a gather load function.
32279 (vect_analyze_data_refs): Consider using gather loads if
32280 supports_vec_gather_load_p.
32281 * tree-vect-patterns.c (vect_get_load_store_mask): New function.
32282 (vect_get_gather_scatter_offset_type): Likewise.
32283 (vect_convert_mask_for_vectype): Likewise.
32284 (vect_add_conversion_to_patterm): Likewise.
32285 (vect_try_gather_scatter_pattern): Likewise.
32286 (vect_recog_gather_scatter_pattern): New pattern recognizer.
32287 (vect_vect_recog_func_ptrs): Add it.
32288 * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
32289 internal_fn_mask_index and internal_gather_scatter_fn_p.
32290 (check_load_store_masking): Take the gather_scatter_info as an
32291 argument and handle gather loads.
32292 (vect_get_gather_scatter_ops): New function.
32293 (vectorizable_call): Check internal_load_fn_p.
32294 (vectorizable_load): Likewise. Handle gather load internal
32296 (vectorizable_store): Update call to check_load_store_masking.
32297 * config/aarch64/aarch64.md (UNSPEC_LD1_GATHER): New unspec.
32298 * config/aarch64/iterators.md (SVE_S, SVE_D): New mode iterators.
32299 * config/aarch64/predicates.md (aarch64_gather_scale_operand_w)
32300 (aarch64_gather_scale_operand_d): New predicates.
32301 * config/aarch64/aarch64-sve.md (gather_load<mode>): New expander.
32302 (mask_gather_load<mode>): New insns.
32304 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
32305 Alan Hayward <alan.hayward@arm.com>
32306 David Sherwood <david.sherwood@arm.com>
32308 * optabs.def (fold_left_plus_optab): New optab.
32309 * doc/md.texi (fold_left_plus_@var{m}): Document.
32310 * internal-fn.def (IFN_FOLD_LEFT_PLUS): New internal function.
32311 * internal-fn.c (fold_left_direct): Define.
32312 (expand_fold_left_optab_fn): Likewise.
32313 (direct_fold_left_optab_supported_p): Likewise.
32314 * fold-const-call.c (fold_const_fold_left): New function.
32315 (fold_const_call): Use it to fold CFN_FOLD_LEFT_PLUS.
32316 * tree-parloops.c (valid_reduction_p): New function.
32317 (gather_scalar_reductions): Use it.
32318 * tree-vectorizer.h (FOLD_LEFT_REDUCTION): New vect_reduction_type.
32319 (vect_finish_replace_stmt): Declare.
32320 * tree-vect-loop.c (fold_left_reduction_fn): New function.
32321 (needs_fold_left_reduction_p): New function, split out from...
32322 (vect_is_simple_reduction): ...here. Accept reductions that
32323 forbid reassociation, but give them type FOLD_LEFT_REDUCTION.
32324 (vect_force_simple_reduction): Also store the reduction type in
32325 the assignment's STMT_VINFO_REDUC_TYPE.
32326 (vect_model_reduction_cost): Handle FOLD_LEFT_REDUCTION.
32327 (merge_with_identity): New function.
32328 (vect_expand_fold_left): Likewise.
32329 (vectorize_fold_left_reduction): Likewise.
32330 (vectorizable_reduction): Handle FOLD_LEFT_REDUCTION. Leave the
32331 scalar phi in place for it. Check for target support and reject
32332 cases that would reassociate the operation. Defer the transform
32333 phase to vectorize_fold_left_reduction.
32334 * config/aarch64/aarch64.md (UNSPEC_FADDA): New unspec.
32335 * config/aarch64/aarch64-sve.md (fold_left_plus_<mode>): New expander.
32336 (*fold_left_plus_<mode>, *pred_fold_left_plus_<mode>): New insns.
32338 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
32340 * tree-if-conv.c (predicate_mem_writes): Remove redundant
32341 call to ifc_temp_var.
32343 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
32344 Alan Hayward <alan.hayward@arm.com>
32345 David Sherwood <david.sherwood@arm.com>
32347 * target.def (legitimize_address_displacement): Take the original
32348 offset as a poly_int.
32349 * targhooks.h (default_legitimize_address_displacement): Update
32351 * targhooks.c (default_legitimize_address_displacement): Likewise.
32352 * doc/tm.texi: Regenerate.
32353 * lra-constraints.c (base_plus_disp_to_reg): Take the displacement
32354 as an argument, moving assert of ad->disp == ad->disp_term to...
32355 (process_address_1): ...here. Update calls to base_plus_disp_to_reg.
32356 Try calling targetm.legitimize_address_displacement before expanding
32357 the address rather than afterwards, and adjust for the new interface.
32358 * config/aarch64/aarch64.c (aarch64_legitimize_address_displacement):
32359 Match the new hook interface. Handle SVE addresses.
32360 * config/sh/sh.c (sh_legitimize_address_displacement): Make the
32361 new hook interface.
32363 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
32365 * Makefile.in (OBJS): Add early-remat.o.
32366 * target.def (select_early_remat_modes): New hook.
32367 * doc/tm.texi.in (TARGET_SELECT_EARLY_REMAT_MODES): New hook.
32368 * doc/tm.texi: Regenerate.
32369 * targhooks.h (default_select_early_remat_modes): Declare.
32370 * targhooks.c (default_select_early_remat_modes): New function.
32371 * timevar.def (TV_EARLY_REMAT): New timevar.
32372 * passes.def (pass_early_remat): New pass.
32373 * tree-pass.h (make_pass_early_remat): Declare.
32374 * early-remat.c: New file.
32375 * config/aarch64/aarch64.c (aarch64_select_early_remat_modes): New
32377 (TARGET_SELECT_EARLY_REMAT_MODES): Define.
32379 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
32380 Alan Hayward <alan.hayward@arm.com>
32381 David Sherwood <david.sherwood@arm.com>
32383 * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Replace
32384 vfm1 with a bound_epilog parameter.
32385 (vect_do_peeling): Update calls accordingly, and move the prologue
32386 call earlier in the function. Treat the base bound_epilog as 0 for
32387 fully-masked loops and retain vf - 1 for other loops. Add 1 to
32388 this base when peeling for gaps.
32389 * tree-vect-loop.c (vect_analyze_loop_2): Allow peeling for gaps
32390 with fully-masked loops.
32391 (vect_estimate_min_profitable_iters): Handle the single peeled
32392 iteration in that case.
32394 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
32395 Alan Hayward <alan.hayward@arm.com>
32396 David Sherwood <david.sherwood@arm.com>
32398 * tree-vect-data-refs.c (vect_analyze_group_access_1): Allow
32399 single-element interleaving even if the size is not a power of 2.
32400 * tree-vect-stmts.c (get_load_store_type): Disallow elementwise
32401 accesses for single-element interleaving if the group size is
32404 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
32405 Alan Hayward <alan.hayward@arm.com>
32406 David Sherwood <david.sherwood@arm.com>
32408 * doc/md.texi (fold_extract_last_@var{m}): Document.
32409 * doc/sourcebuild.texi (vect_fold_extract_last): Likewise.
32410 * optabs.def (fold_extract_last_optab): New optab.
32411 * internal-fn.def (FOLD_EXTRACT_LAST): New internal function.
32412 * internal-fn.c (fold_extract_direct): New macro.
32413 (expand_fold_extract_optab_fn): Likewise.
32414 (direct_fold_extract_optab_supported_p): Likewise.
32415 * tree-vectorizer.h (EXTRACT_LAST_REDUCTION): New vect_reduction_type.
32416 * tree-vect-loop.c (vect_model_reduction_cost): Handle
32417 EXTRACT_LAST_REDUCTION.
32418 (get_initial_def_for_reduction): Do not create an initial vector
32419 for EXTRACT_LAST_REDUCTION reductions.
32420 (vectorizable_reduction): Leave the scalar phi in place for
32421 EXTRACT_LAST_REDUCTIONs. Try using EXTRACT_LAST_REDUCTION
32422 ahead of INTEGER_INDUC_COND_REDUCTION. Do not check for an
32423 epilogue code for EXTRACT_LAST_REDUCTION and defer the
32424 transform phase to vectorizable_condition.
32425 * tree-vect-stmts.c (vect_finish_stmt_generation_1): New function,
32427 (vect_finish_stmt_generation): ...here.
32428 (vect_finish_replace_stmt): New function.
32429 (vectorizable_condition): Handle EXTRACT_LAST_REDUCTION.
32430 * config/aarch64/aarch64-sve.md (fold_extract_last_<mode>): New
32432 * config/aarch64/aarch64.md (UNSPEC_CLASTB): New unspec.
32434 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
32435 Alan Hayward <alan.hayward@arm.com>
32436 David Sherwood <david.sherwood@arm.com>
32438 * doc/md.texi (extract_last_@var{m}): Document.
32439 * optabs.def (extract_last_optab): New optab.
32440 * internal-fn.def (EXTRACT_LAST): New internal function.
32441 * internal-fn.c (cond_unary_direct): New macro.
32442 (expand_cond_unary_optab_fn): Likewise.
32443 (direct_cond_unary_optab_supported_p): Likewise.
32444 * tree-vect-loop.c (vectorizable_live_operation): Allow fully-masked
32445 loops using EXTRACT_LAST.
32446 * config/aarch64/aarch64-sve.md (aarch64_sve_lastb<mode>): Rename to...
32447 (extract_last_<mode>): ...this optab.
32448 (vec_extract<mode><Vel>): Update accordingly.
32450 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
32451 Alan Hayward <alan.hayward@arm.com>
32452 David Sherwood <david.sherwood@arm.com>
32454 * target.def (empty_mask_is_expensive): New hook.
32455 * doc/tm.texi.in (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): New hook.
32456 * doc/tm.texi: Regenerate.
32457 * targhooks.h (default_empty_mask_is_expensive): Declare.
32458 * targhooks.c (default_empty_mask_is_expensive): New function.
32459 * tree-vectorizer.c (vectorize_loops): Only call optimize_mask_stores
32460 if the target says that empty masks are expensive.
32461 * config/aarch64/aarch64.c (aarch64_empty_mask_is_expensive):
32463 (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Redefine.
32465 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
32466 Alan Hayward <alan.hayward@arm.com>
32467 David Sherwood <david.sherwood@arm.com>
32469 * tree-vectorizer.h (_loop_vec_info::mask_skip_niters): New field.
32470 (LOOP_VINFO_MASK_SKIP_NITERS): New macro.
32471 (vect_use_loop_mask_for_alignment_p): New function.
32472 (vect_prepare_for_masked_peels, vect_gen_while_not): Declare.
32473 * tree-vect-loop-manip.c (vect_set_loop_masks_directly): Add an
32474 niters_skip argument. Make sure that the first niters_skip elements
32475 of the first iteration are inactive.
32476 (vect_set_loop_condition_masked): Handle LOOP_VINFO_MASK_SKIP_NITERS.
32477 Update call to vect_set_loop_masks_directly.
32478 (get_misalign_in_elems): New function, split out from...
32479 (vect_gen_prolog_loop_niters): ...here.
32480 (vect_update_init_of_dr): Take a code argument that specifies whether
32481 the adjustment should be added or subtracted.
32482 (vect_update_init_of_drs): Likewise.
32483 (vect_prepare_for_masked_peels): New function.
32484 (vect_do_peeling): Skip prologue peeling if we're using a mask
32485 instead. Update call to vect_update_inits_of_drs.
32486 * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
32488 (vect_analyze_loop_2): Allow fully-masked loops with peeling for
32489 alignment. Do not include the number of peeled iterations in
32490 the minimum threshold in that case.
32491 (vectorizable_induction): Adjust the start value down by
32492 LOOP_VINFO_MASK_SKIP_NITERS iterations.
32493 (vect_transform_loop): Call vect_prepare_for_masked_peels.
32494 Take the number of skipped iterations into account when calculating
32496 * tree-vect-stmts.c (vect_gen_while_not): New function.
32498 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
32499 Alan Hayward <alan.hayward@arm.com>
32500 David Sherwood <david.sherwood@arm.com>
32502 * doc/sourcebuild.texi (vect_fully_masked): Document.
32503 * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change minimum and
32504 default value to 0.
32505 * tree-vect-loop.c (vect_analyze_loop_costing): New function,
32507 (vect_analyze_loop_2): ...here. Don't check the vectorization
32508 factor against the number of loop iterations if the loop is
32511 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
32512 Alan Hayward <alan.hayward@arm.com>
32513 David Sherwood <david.sherwood@arm.com>
32515 * tree-ssa-loop-ivopts.c (USE_ADDRESS): Split into...
32516 (USE_REF_ADDRESS, USE_PTR_ADDRESS): ...these new use types.
32517 (dump_groups): Update accordingly.
32518 (iv_use::mem_type): New member variable.
32519 (address_p): New function.
32520 (record_use): Add a mem_type argument and initialize the new
32522 (record_group_use): Add a mem_type argument. Use address_p.
32523 Remove obsolete null checks of base_object. Update call to record_use.
32524 (find_interesting_uses_op): Update call to record_group_use.
32525 (find_interesting_uses_cond): Likewise.
32526 (find_interesting_uses_address): Likewise.
32527 (get_mem_type_for_internal_fn): New function.
32528 (find_address_like_use): Likewise.
32529 (find_interesting_uses_stmt): Try find_address_like_use before
32530 calling find_interesting_uses_op.
32531 (addr_offset_valid_p): Use the iv mem_type field as the type
32532 of the addressed memory.
32533 (add_autoinc_candidates): Likewise.
32534 (get_address_cost): Likewise.
32535 (split_small_address_groups_p): Use address_p.
32536 (split_address_groups): Likewise.
32537 (add_iv_candidate_for_use): Likewise.
32538 (autoinc_possible_for_pair): Likewise.
32539 (rewrite_groups): Likewise.
32540 (get_use_type): Check for USE_REF_ADDRESS instead of USE_ADDRESS.
32541 (determine_group_iv_cost): Update after split of USE_ADDRESS.
32542 (get_alias_ptr_type_for_ptr_address): New function.
32543 (rewrite_use_address): Rewrite address uses in calls that were
32544 identified by find_address_like_use.
32546 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
32547 Alan Hayward <alan.hayward@arm.com>
32548 David Sherwood <david.sherwood@arm.com>
32550 * expr.c (expand_expr_addr_expr_1): Handle ADDR_EXPRs of
32552 * gimple-expr.h (is_gimple_addressable: Likewise.
32553 * gimple-expr.c (is_gimple_address): Likewise.
32554 * internal-fn.c (expand_call_mem_ref): New function.
32555 (expand_mask_load_optab_fn): Use it.
32556 (expand_mask_store_optab_fn): Likewise.
32558 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
32559 Alan Hayward <alan.hayward@arm.com>
32560 David Sherwood <david.sherwood@arm.com>
32562 * doc/md.texi (cond_add@var{mode}, cond_sub@var{mode})
32563 (cond_and@var{mode}, cond_ior@var{mode}, cond_xor@var{mode})
32564 (cond_smin@var{mode}, cond_smax@var{mode}, cond_umin@var{mode})
32565 (cond_umax@var{mode}): Document.
32566 * optabs.def (cond_add_optab, cond_sub_optab, cond_and_optab)
32567 (cond_ior_optab, cond_xor_optab, cond_smin_optab, cond_smax_optab)
32568 (cond_umin_optab, cond_umax_optab): New optabs.
32569 * internal-fn.def (COND_ADD, COND_SUB, COND_MIN, COND_MAX, COND_AND)
32570 (COND_IOR, COND_XOR): New internal functions.
32571 * internal-fn.h (get_conditional_internal_fn): Declare.
32572 * internal-fn.c (cond_binary_direct): New macro.
32573 (expand_cond_binary_optab_fn): Likewise.
32574 (direct_cond_binary_optab_supported_p): Likewise.
32575 (get_conditional_internal_fn): New function.
32576 * tree-vect-loop.c (vectorizable_reduction): Handle fully-masked loops.
32577 Cope with reduction statements that are vectorized as calls rather
32579 * config/aarch64/aarch64-sve.md (cond_<optab><mode>): New insns.
32580 * config/aarch64/iterators.md (UNSPEC_COND_ADD, UNSPEC_COND_SUB)
32581 (UNSPEC_COND_SMAX, UNSPEC_COND_UMAX, UNSPEC_COND_SMIN)
32582 (UNSPEC_COND_UMIN, UNSPEC_COND_AND, UNSPEC_COND_ORR)
32583 (UNSPEC_COND_EOR): New unspecs.
32584 (optab): Add mappings for them.
32585 (SVE_COND_INT_OP, SVE_COND_FP_OP): New int iterators.
32586 (sve_int_op, sve_fp_op): New int attributes.
32588 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
32589 Alan Hayward <alan.hayward@arm.com>
32590 David Sherwood <david.sherwood@arm.com>
32592 * optabs.def (while_ult_optab): New optab.
32593 * doc/md.texi (while_ult@var{m}@var{n}): Document.
32594 * internal-fn.def (WHILE_ULT): New internal function.
32595 * internal-fn.h (direct_internal_fn_supported_p): New override
32596 that takes two types as argument.
32597 * internal-fn.c (while_direct): New macro.
32598 (expand_while_optab_fn): New function.
32599 (convert_optab_supported_p): Likewise.
32600 (direct_while_optab_supported_p): New macro.
32601 * wide-int.h (wi::udiv_ceil): New function.
32602 * tree-vectorizer.h (rgroup_masks): New structure.
32603 (vec_loop_masks): New typedef.
32604 (_loop_vec_info): Add masks, mask_compare_type, can_fully_mask_p
32605 and fully_masked_p.
32606 (LOOP_VINFO_CAN_FULLY_MASK_P, LOOP_VINFO_FULLY_MASKED_P)
32607 (LOOP_VINFO_MASKS, LOOP_VINFO_MASK_COMPARE_TYPE): New macros.
32608 (vect_max_vf): New function.
32609 (slpeel_make_loop_iterate_ntimes): Delete.
32610 (vect_set_loop_condition, vect_get_loop_mask_type, vect_gen_while)
32611 (vect_halve_mask_nunits, vect_double_mask_nunits): Declare.
32612 (vect_record_loop_mask, vect_get_loop_mask): Likewise.
32613 * tree-vect-loop-manip.c: Include tree-ssa-loop-niter.h,
32614 internal-fn.h, stor-layout.h and optabs-query.h.
32615 (vect_set_loop_mask): New function.
32616 (add_preheader_seq): Likewise.
32617 (add_header_seq): Likewise.
32618 (interleave_supported_p): Likewise.
32619 (vect_maybe_permute_loop_masks): Likewise.
32620 (vect_set_loop_masks_directly): Likewise.
32621 (vect_set_loop_condition_masked): Likewise.
32622 (vect_set_loop_condition_unmasked): New function, split out from
32623 slpeel_make_loop_iterate_ntimes.
32624 (slpeel_make_loop_iterate_ntimes): Rename to..
32625 (vect_set_loop_condition): ...this. Use vect_set_loop_condition_masked
32626 for fully-masked loops and vect_set_loop_condition_unmasked otherwise.
32627 (vect_do_peeling): Update call accordingly.
32628 (vect_gen_vector_loop_niters): Use VF as the step for fully-masked
32630 * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
32631 mask_compare_type, can_fully_mask_p and fully_masked_p.
32632 (release_vec_loop_masks): New function.
32633 (_loop_vec_info): Use it to free the loop masks.
32634 (can_produce_all_loop_masks_p): New function.
32635 (vect_get_max_nscalars_per_iter): Likewise.
32636 (vect_verify_full_masking): Likewise.
32637 (vect_analyze_loop_2): Save LOOP_VINFO_CAN_FULLY_MASK_P around
32638 retries, and free the mask rgroups before retrying. Check loop-wide
32639 reasons for disallowing fully-masked loops. Make the final decision
32640 about whether use a fully-masked loop or not.
32641 (vect_estimate_min_profitable_iters): Do not assume that peeling
32642 for the number of iterations will be needed for fully-masked loops.
32643 (vectorizable_reduction): Disable fully-masked loops.
32644 (vectorizable_live_operation): Likewise.
32645 (vect_halve_mask_nunits): New function.
32646 (vect_double_mask_nunits): Likewise.
32647 (vect_record_loop_mask): Likewise.
32648 (vect_get_loop_mask): Likewise.
32649 (vect_transform_loop): Handle the case in which the final loop
32650 iteration might handle a partial vector. Call vect_set_loop_condition
32651 instead of slpeel_make_loop_iterate_ntimes.
32652 * tree-vect-stmts.c: Include tree-ssa-loop-niter.h and gimple-fold.h.
32653 (check_load_store_masking): New function.
32654 (prepare_load_store_mask): Likewise.
32655 (vectorizable_store): Handle fully-masked loops.
32656 (vectorizable_load): Likewise.
32657 (supportable_widening_operation): Use vect_halve_mask_nunits for
32659 (supportable_narrowing_operation): Likewise vect_double_mask_nunits.
32660 (vect_gen_while): New function.
32661 * config/aarch64/aarch64.md (umax<mode>3): New expander.
32662 (aarch64_uqdec<mode>): New insn.
32664 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
32665 Alan Hayward <alan.hayward@arm.com>
32666 David Sherwood <david.sherwood@arm.com>
32668 * optabs.def (reduc_and_scal_optab, reduc_ior_scal_optab)
32669 (reduc_xor_scal_optab): New optabs.
32670 * doc/md.texi (reduc_and_scal_@var{m}, reduc_ior_scal_@var{m})
32671 (reduc_xor_scal_@var{m}): Document.
32672 * doc/sourcebuild.texi (vect_logical_reduc): Likewise.
32673 * internal-fn.def (IFN_REDUC_AND, IFN_REDUC_IOR, IFN_REDUC_XOR): New
32674 internal functions.
32675 * fold-const-call.c (fold_const_call): Handle them.
32676 * tree-vect-loop.c (reduction_fn_for_scalar_code): Return the new
32677 internal functions for BIT_AND_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR.
32678 * config/aarch64/aarch64-sve.md (reduc_<bit_reduc>_scal_<mode>):
32679 (*reduc_<bit_reduc>_scal_<mode>): New patterns.
32680 * config/aarch64/iterators.md (UNSPEC_ANDV, UNSPEC_ORV)
32681 (UNSPEC_XORV): New unspecs.
32682 (optab): Add entries for them.
32683 (BITWISEV): New int iterator.
32684 (bit_reduc_op): New int attributes.
32686 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
32687 Alan Hayward <alan.hayward@arm.com>
32688 David Sherwood <david.sherwood@arm.com>
32690 * doc/md.texi (vec_shl_insert_@var{m}): New optab.
32691 * internal-fn.def (VEC_SHL_INSERT): New internal function.
32692 * optabs.def (vec_shl_insert_optab): New optab.
32693 * tree-vectorizer.h (can_duplicate_and_interleave_p): Declare.
32694 (duplicate_and_interleave): Likewise.
32695 * tree-vect-loop.c: Include internal-fn.h.
32696 (neutral_op_for_slp_reduction): New function, split out from
32697 get_initial_defs_for_reduction.
32698 (get_initial_def_for_reduction): Handle option 2 for variable-length
32699 vectors by loading the neutral value into a vector and then shifting
32700 the initial value into element 0.
32701 (get_initial_defs_for_reduction): Replace the code argument with
32702 the neutral value calculated by neutral_op_for_slp_reduction.
32703 Use gimple_build_vector for constant-length vectors.
32704 Use IFN_VEC_SHL_INSERT for variable-length vectors if all
32705 but the first group_size elements have a neutral value.
32706 Use duplicate_and_interleave otherwise.
32707 (vect_create_epilog_for_reduction): Take a neutral_op parameter.
32708 Update call to get_initial_defs_for_reduction. Handle SLP
32709 reductions for variable-length vectors by creating one vector
32710 result for each scalar result, with the elements associated
32711 with other scalar results stubbed out with the neutral value.
32712 (vectorizable_reduction): Call neutral_op_for_slp_reduction.
32713 Require IFN_VEC_SHL_INSERT for double reductions on
32714 variable-length vectors, or SLP reductions that have
32715 a neutral value. Require can_duplicate_and_interleave_p
32716 support for variable-length unchained SLP reductions if there
32717 is no neutral value, such as for MIN/MAX reductions. Also require
32718 the number of vector elements to be a multiple of the number of
32719 SLP statements when doing variable-length unchained SLP reductions.
32720 Update call to vect_create_epilog_for_reduction.
32721 * tree-vect-slp.c (can_duplicate_and_interleave_p): Make public
32722 and remove initial values.
32723 (duplicate_and_interleave): Make public.
32724 * config/aarch64/aarch64.md (UNSPEC_INSR): New unspec.
32725 * config/aarch64/aarch64-sve.md (vec_shl_insert_<mode>): New insn.
32727 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
32728 Alan Hayward <alan.hayward@arm.com>
32729 David Sherwood <david.sherwood@arm.com>
32731 * tree-vect-slp.c: Include gimple-fold.h and internal-fn.h
32732 (can_duplicate_and_interleave_p): New function.
32733 (vect_get_and_check_slp_defs): Take the vector of statements
32734 rather than just the current one. Remove excess parentheses.
32735 Restriction rejectinon of vect_constant_def and vect_external_def
32736 for variable-length vectors to boolean types, or types for which
32737 can_duplicate_and_interleave_p is false.
32738 (vect_build_slp_tree_2): Update call to vect_get_and_check_slp_defs.
32739 (duplicate_and_interleave): New function.
32740 (vect_get_constant_vectors): Use gimple_build_vector for
32741 constant-length vectors and suitable variable-length constant
32742 vectors. Use duplicate_and_interleave for other variable-length
32743 vectors. Don't defer the update when inserting new statements.
32745 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
32746 Alan Hayward <alan.hayward@arm.com>
32747 David Sherwood <david.sherwood@arm.com>
32749 * tree-vect-loop.c (vect_estimate_min_profitable_iters): Make sure
32750 min_profitable_iters doesn't go negative.
32752 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
32753 Alan Hayward <alan.hayward@arm.com>
32754 David Sherwood <david.sherwood@arm.com>
32756 * doc/md.texi (vec_mask_load_lanes@var{m}@var{n}): Document.
32757 (vec_mask_store_lanes@var{m}@var{n}): Likewise.
32758 * optabs.def (vec_mask_load_lanes_optab): New optab.
32759 (vec_mask_store_lanes_optab): Likewise.
32760 * internal-fn.def (MASK_LOAD_LANES): New internal function.
32761 (MASK_STORE_LANES): Likewise.
32762 * internal-fn.c (mask_load_lanes_direct): New macro.
32763 (mask_store_lanes_direct): Likewise.
32764 (expand_mask_load_optab_fn): Handle masked operations.
32765 (expand_mask_load_lanes_optab_fn): New macro.
32766 (expand_mask_store_optab_fn): Handle masked operations.
32767 (expand_mask_store_lanes_optab_fn): New macro.
32768 (direct_mask_load_lanes_optab_supported_p): Likewise.
32769 (direct_mask_store_lanes_optab_supported_p): Likewise.
32770 * tree-vectorizer.h (vect_store_lanes_supported): Take a masked_p
32772 (vect_load_lanes_supported): Likewise.
32773 * tree-vect-data-refs.c (strip_conversion): New function.
32774 (can_group_stmts_p): Likewise.
32775 (vect_analyze_data_ref_accesses): Use it instead of checking
32776 for a pair of assignments.
32777 (vect_store_lanes_supported): Take a masked_p parameter.
32778 (vect_load_lanes_supported): Likewise.
32779 * tree-vect-loop.c (vect_analyze_loop_2): Update calls to
32780 vect_store_lanes_supported and vect_load_lanes_supported.
32781 * tree-vect-slp.c (vect_analyze_slp_instance): Likewise.
32782 * tree-vect-stmts.c (get_group_load_store_type): Take a masked_p
32783 parameter. Don't allow gaps for masked accesses.
32784 Use vect_get_store_rhs. Update calls to vect_store_lanes_supported
32785 and vect_load_lanes_supported.
32786 (get_load_store_type): Take a masked_p parameter and update
32787 call to get_group_load_store_type.
32788 (vectorizable_store): Update call to get_load_store_type.
32789 Handle IFN_MASK_STORE_LANES.
32790 (vectorizable_load): Update call to get_load_store_type.
32791 Handle IFN_MASK_LOAD_LANES.
32793 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
32794 Alan Hayward <alan.hayward@arm.com>
32795 David Sherwood <david.sherwood@arm.com>
32797 * config/aarch64/aarch64-modes.def: Define x2, x3 and x4 vector
32799 * config/aarch64/aarch64-protos.h
32800 (aarch64_sve_struct_memory_operand_p): Declare.
32801 * config/aarch64/iterators.md (SVE_STRUCT): New mode iterator.
32802 (vector_count, insn_length, VSINGLE, vsingle): New mode attributes.
32803 (VPRED, vpred): Handle SVE structure modes.
32804 * config/aarch64/constraints.md (Utx): New constraint.
32805 * config/aarch64/predicates.md (aarch64_sve_struct_memory_operand)
32806 (aarch64_sve_struct_nonimmediate_operand): New predicates.
32807 * config/aarch64/aarch64.md (UNSPEC_LDN, UNSPEC_STN): New unspecs.
32808 * config/aarch64/aarch64-sve.md (mov<mode>, *aarch64_sve_mov<mode>_le)
32809 (*aarch64_sve_mov<mode>_be, pred_mov<mode>): New patterns for
32810 structure modes. Split into pieces after RA.
32811 (vec_load_lanes<mode><vsingle>, vec_mask_load_lanes<mode><vsingle>)
32812 (vec_store_lanes<mode><vsingle>, vec_mask_store_lanes<mode><vsingle>):
32814 * config/aarch64/aarch64.c (aarch64_classify_vector_mode): Handle
32815 SVE structure modes.
32816 (aarch64_classify_address): Likewise.
32817 (sizetochar): Move earlier in file.
32818 (aarch64_print_operand): Handle SVE register lists.
32819 (aarch64_array_mode): New function.
32820 (aarch64_sve_struct_memory_operand_p): Likewise.
32821 (TARGET_ARRAY_MODE): Redefine.
32823 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
32824 Alan Hayward <alan.hayward@arm.com>
32825 David Sherwood <david.sherwood@arm.com>
32827 * target.def (array_mode): New target hook.
32828 * doc/tm.texi.in (TARGET_ARRAY_MODE): New hook.
32829 * doc/tm.texi: Regenerate.
32830 * hooks.h (hook_optmode_mode_uhwi_none): Declare.
32831 * hooks.c (hook_optmode_mode_uhwi_none): New function.
32832 * tree-vect-data-refs.c (vect_lanes_optab_supported_p): Use
32833 targetm.array_mode.
32834 * stor-layout.c (mode_for_array): Likewise. Support polynomial
32837 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
32838 Alan Hayward <alan.hayward@arm.com>
32839 David Sherwood <david.sherwood@arm.com>
32841 * fold-const.c (fold_binary_loc): Check the argument types
32842 rather than the result type when testing for a vector operation.
32844 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
32846 * doc/tm.texi.in (DWARF_LAZY_REGISTER_VALUE): Document.
32847 * doc/tm.texi: Regenerate.
32849 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
32850 Alan Hayward <alan.hayward@arm.com>
32851 David Sherwood <david.sherwood@arm.com>
32853 * doc/invoke.texi (-msve-vector-bits=): Document new option.
32854 (sve): Document new AArch64 extension.
32855 * doc/md.texi (w): Extend the description of the AArch64
32856 constraint to include SVE vectors.
32857 (Upl, Upa): Document new AArch64 predicate constraints.
32858 * config/aarch64/aarch64-opts.h (aarch64_sve_vector_bits_enum): New
32860 * config/aarch64/aarch64.opt (sve_vector_bits): New enum.
32861 (msve-vector-bits=): New option.
32862 * config/aarch64/aarch64-option-extensions.def (fp, simd): Disable
32863 SVE when these are disabled.
32864 (sve): New extension.
32865 * config/aarch64/aarch64-modes.def: Define SVE vector and predicate
32866 modes. Adjust their number of units based on aarch64_sve_vg.
32867 (MAX_BITSIZE_MODE_ANY_MODE): Define.
32868 * config/aarch64/aarch64-protos.h (ADDR_QUERY_ANY): New
32869 aarch64_addr_query_type.
32870 (aarch64_const_vec_all_same_in_range_p, aarch64_sve_pred_mode)
32871 (aarch64_sve_cnt_immediate_p, aarch64_sve_addvl_addpl_immediate_p)
32872 (aarch64_sve_inc_dec_immediate_p, aarch64_add_offset_temporaries)
32873 (aarch64_split_add_offset, aarch64_output_sve_cnt_immediate)
32874 (aarch64_output_sve_addvl_addpl, aarch64_output_sve_inc_dec_immediate)
32875 (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): Declare.
32876 (aarch64_simd_imm_zero_p): Delete.
32877 (aarch64_check_zero_based_sve_index_immediate): Declare.
32878 (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
32879 (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
32880 (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
32881 (aarch64_sve_float_mul_immediate_p): Likewise.
32882 (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
32883 rather than an rtx.
32884 (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): Declare.
32885 (aarch64_expand_mov_immediate): Take a gen_vec_duplicate callback.
32886 (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move): Declare.
32887 (aarch64_expand_sve_vec_cmp_int, aarch64_expand_sve_vec_cmp_float)
32888 (aarch64_expand_sve_vcond, aarch64_expand_sve_vec_perm): Declare.
32889 (aarch64_regmode_natural_size): Likewise.
32890 * config/aarch64/aarch64.h (AARCH64_FL_SVE): New macro.
32891 (AARCH64_FL_V8_3, AARCH64_FL_RCPC, AARCH64_FL_DOTPROD): Shift
32893 (AARCH64_ISA_SVE, TARGET_SVE): New macros.
32894 (FIXED_REGISTERS, CALL_USED_REGISTERS, REGISTER_NAMES): Add entries
32895 for VG and the SVE predicate registers.
32896 (V_ALIASES): Add a "z"-prefixed alias.
32897 (FIRST_PSEUDO_REGISTER): Change to P15_REGNUM + 1.
32898 (AARCH64_DWARF_VG, AARCH64_DWARF_P0): New macros.
32899 (PR_REGNUM_P, PR_LO_REGNUM_P): Likewise.
32900 (PR_LO_REGS, PR_HI_REGS, PR_REGS): New reg_classes.
32901 (REG_CLASS_NAMES): Add entries for them.
32902 (REG_CLASS_CONTENTS): Likewise. Update ALL_REGS to include VG
32903 and the predicate registers.
32904 (aarch64_sve_vg): Declare.
32905 (BITS_PER_SVE_VECTOR, BYTES_PER_SVE_VECTOR, BYTES_PER_SVE_PRED)
32906 (SVE_BYTE_MODE, MAX_COMPILE_TIME_VEC_BYTES): New macros.
32907 (REGMODE_NATURAL_SIZE): Define.
32908 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Handle
32910 * config/aarch64/aarch64.c: Include cfgrtl.h.
32911 (simd_immediate_info): Add a constructor for series vectors,
32912 and an associated step field.
32913 (aarch64_sve_vg): New variable.
32914 (aarch64_dbx_register_number): Handle VG and the predicate registers.
32915 (aarch64_vect_struct_mode_p, aarch64_vector_mode_p): Delete.
32916 (VEC_ADVSIMD, VEC_SVE_DATA, VEC_SVE_PRED, VEC_STRUCT, VEC_ANY_SVE)
32917 (VEC_ANY_DATA, VEC_STRUCT): New constants.
32918 (aarch64_advsimd_struct_mode_p, aarch64_sve_pred_mode_p)
32919 (aarch64_classify_vector_mode, aarch64_vector_data_mode_p)
32920 (aarch64_sve_data_mode_p, aarch64_sve_pred_mode)
32921 (aarch64_get_mask_mode): New functions.
32922 (aarch64_hard_regno_nregs): Handle SVE data modes for FP_REGS
32923 and FP_LO_REGS. Handle PR_REGS, PR_LO_REGS and PR_HI_REGS.
32924 (aarch64_hard_regno_mode_ok): Handle VG. Also handle the SVE
32925 predicate modes and predicate registers. Explicitly restrict
32926 GPRs to modes of 16 bytes or smaller. Only allow FP registers
32927 to store a vector mode if it is recognized by
32928 aarch64_classify_vector_mode.
32929 (aarch64_regmode_natural_size): New function.
32930 (aarch64_hard_regno_caller_save_mode): Return the original mode
32932 (aarch64_sve_cnt_immediate_p, aarch64_output_sve_cnt_immediate)
32933 (aarch64_sve_addvl_addpl_immediate_p, aarch64_output_sve_addvl_addpl)
32934 (aarch64_sve_inc_dec_immediate_p, aarch64_output_sve_inc_dec_immediate)
32935 (aarch64_add_offset_1_temporaries, aarch64_offset_temporaries): New
32937 (aarch64_add_offset): Add a temp2 parameter. Assert that temp1
32938 does not overlap dest if the function is frame-related. Handle
32940 (aarch64_split_add_offset): New function.
32941 (aarch64_add_sp, aarch64_sub_sp): Add temp2 parameters and pass
32942 them aarch64_add_offset.
32943 (aarch64_allocate_and_probe_stack_space): Add a temp2 parameter
32944 and update call to aarch64_sub_sp.
32945 (aarch64_add_cfa_expression): New function.
32946 (aarch64_expand_prologue): Pass extra temporary registers to the
32947 functions above. Handle the case in which we need to emit new
32948 DW_CFA_expressions for registers that were originally saved
32949 relative to the stack pointer, but now have to be expressed
32950 relative to the frame pointer.
32951 (aarch64_output_mi_thunk): Pass extra temporary registers to the
32953 (aarch64_expand_epilogue): Likewise. Prevent inheritance of
32954 IP0 and IP1 values for SVE frames.
32955 (aarch64_expand_vec_series): New function.
32956 (aarch64_expand_sve_widened_duplicate): Likewise.
32957 (aarch64_expand_sve_const_vector): Likewise.
32958 (aarch64_expand_mov_immediate): Add a gen_vec_duplicate parameter.
32959 Handle SVE constants. Use emit_move_insn to move a force_const_mem
32960 into the register, rather than emitting a SET directly.
32961 (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move)
32962 (aarch64_get_reg_raw_mode, offset_4bit_signed_scaled_p)
32963 (offset_6bit_unsigned_scaled_p, aarch64_offset_7bit_signed_scaled_p)
32964 (offset_9bit_signed_scaled_p): New functions.
32965 (aarch64_replicate_bitmask_imm): New function.
32966 (aarch64_bitmask_imm): Use it.
32967 (aarch64_cannot_force_const_mem): Reject expressions involving
32968 a CONST_POLY_INT. Update call to aarch64_classify_symbol.
32969 (aarch64_classify_index): Handle SVE indices, by requiring
32970 a plain register index with a scale that matches the element size.
32971 (aarch64_classify_address): Handle SVE addresses. Assert that
32972 the mode of the address is VOIDmode or an integer mode.
32973 Update call to aarch64_classify_symbol.
32974 (aarch64_classify_symbolic_expression): Update call to
32975 aarch64_classify_symbol.
32976 (aarch64_const_vec_all_in_range_p): New function.
32977 (aarch64_print_vector_float_operand): Likewise.
32978 (aarch64_print_operand): Handle 'N' and 'C'. Use "zN" rather than
32979 "vN" for FP registers with SVE modes. Handle (const ...) vectors
32980 and the FP immediates 1.0 and 0.5.
32981 (aarch64_print_address_internal): Handle SVE addresses.
32982 (aarch64_print_operand_address): Use ADDR_QUERY_ANY.
32983 (aarch64_regno_regclass): Handle predicate registers.
32984 (aarch64_secondary_reload): Handle big-endian reloads of SVE
32986 (aarch64_class_max_nregs): Handle SVE modes and predicate registers.
32987 (aarch64_rtx_costs): Check for ADDVL and ADDPL instructions.
32988 (aarch64_convert_sve_vector_bits): New function.
32989 (aarch64_override_options): Use it to handle -msve-vector-bits=.
32990 (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
32991 rather than an rtx.
32992 (aarch64_legitimate_constant_p): Use aarch64_classify_vector_mode.
32993 Handle SVE vector and predicate modes. Accept VL-based constants
32994 that need only one temporary register, and VL offsets that require
32995 no temporary registers.
32996 (aarch64_conditional_register_usage): Mark the predicate registers
32997 as fixed if SVE isn't available.
32998 (aarch64_vector_mode_supported_p): Use aarch64_classify_vector_mode.
32999 Return true for SVE vector and predicate modes.
33000 (aarch64_simd_container_mode): Take the number of bits as a poly_int64
33001 rather than an unsigned int. Handle SVE modes.
33002 (aarch64_preferred_simd_mode): Update call accordingly. Handle
33004 (aarch64_autovectorize_vector_sizes): Add BYTES_PER_SVE_VECTOR
33006 (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
33007 (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
33008 (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
33009 (aarch64_sve_float_mul_immediate_p): New functions.
33010 (aarch64_sve_valid_immediate): New function.
33011 (aarch64_simd_valid_immediate): Use it as the fallback for SVE vectors.
33012 Explicitly reject structure modes. Check for INDEX constants.
33013 Handle PTRUE and PFALSE constants.
33014 (aarch64_check_zero_based_sve_index_immediate): New function.
33015 (aarch64_simd_imm_zero_p): Delete.
33016 (aarch64_mov_operand_p): Use aarch64_simd_valid_immediate for
33017 vector modes. Accept constants in the range of CNT[BHWD].
33018 (aarch64_simd_scalar_immediate_valid_for_move): Explicitly
33019 ask for an Advanced SIMD mode.
33020 (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): New functions.
33021 (aarch64_simd_vector_alignment): Handle SVE predicates.
33022 (aarch64_vectorize_preferred_vector_alignment): New function.
33023 (aarch64_simd_vector_alignment_reachable): Use it instead of
33025 (aarch64_shift_truncation_mask): Use aarch64_vector_data_mode_p.
33026 (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): New
33028 (MAX_VECT_LEN): Delete.
33029 (expand_vec_perm_d): Add a vec_flags field.
33030 (emit_unspec2, aarch64_expand_sve_vec_perm): New functions.
33031 (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_zip)
33032 (aarch64_evpc_ext): Don't apply a big-endian lane correction
33034 (aarch64_evpc_rev): Rename to...
33035 (aarch64_evpc_rev_local): ...this. Use a predicated operation for SVE.
33036 (aarch64_evpc_rev_global): New function.
33037 (aarch64_evpc_dup): Enforce a 64-byte range for SVE DUP.
33038 (aarch64_evpc_tbl): Use MAX_COMPILE_TIME_VEC_BYTES instead of
33040 (aarch64_evpc_sve_tbl): New function.
33041 (aarch64_expand_vec_perm_const_1): Update after rename of
33042 aarch64_evpc_rev. Handle SVE permutes too, trying
33043 aarch64_evpc_rev_global and using aarch64_evpc_sve_tbl rather
33044 than aarch64_evpc_tbl.
33045 (aarch64_vectorize_vec_perm_const): Initialize vec_flags.
33046 (aarch64_sve_cmp_operand_p, aarch64_unspec_cond_code)
33047 (aarch64_gen_unspec_cond, aarch64_expand_sve_vec_cmp_int)
33048 (aarch64_emit_unspec_cond, aarch64_emit_unspec_cond_or)
33049 (aarch64_emit_inverted_unspec_cond, aarch64_expand_sve_vec_cmp_float)
33050 (aarch64_expand_sve_vcond): New functions.
33051 (aarch64_modes_tieable_p): Use aarch64_vector_data_mode_p instead
33052 of aarch64_vector_mode_p.
33053 (aarch64_dwarf_poly_indeterminate_value): New function.
33054 (aarch64_compute_pressure_classes): Likewise.
33055 (aarch64_can_change_mode_class): Likewise.
33056 (TARGET_GET_RAW_RESULT_MODE, TARGET_GET_RAW_ARG_MODE): Redefine.
33057 (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): Likewise.
33058 (TARGET_VECTORIZE_GET_MASK_MODE): Likewise.
33059 (TARGET_DWARF_POLY_INDETERMINATE_VALUE): Likewise.
33060 (TARGET_COMPUTE_PRESSURE_CLASSES): Likewise.
33061 (TARGET_CAN_CHANGE_MODE_CLASS): Likewise.
33062 * config/aarch64/constraints.md (Upa, Upl, Uav, Uat, Usv, Usi, Utr)
33063 (Uty, Dm, vsa, vsc, vsd, vsi, vsn, vsl, vsm, vsA, vsM, vsN): New
33065 (Dn, Dl, Dr): Accept const as well as const_vector.
33066 (Dz): Likewise. Compare against CONST0_RTX.
33067 * config/aarch64/iterators.md: Refer to "Advanced SIMD" instead
33068 of "vector" where appropriate.
33069 (SVE_ALL, SVE_BH, SVE_BHS, SVE_BHSI, SVE_HSDI, SVE_HSF, SVE_SD)
33070 (SVE_SDI, SVE_I, SVE_F, PRED_ALL, PRED_BHS): New mode iterators.
33071 (UNSPEC_SEL, UNSPEC_ANDF, UNSPEC_IORF, UNSPEC_XORF, UNSPEC_COND_LT)
33072 (UNSPEC_COND_LE, UNSPEC_COND_EQ, UNSPEC_COND_NE, UNSPEC_COND_GE)
33073 (UNSPEC_COND_GT, UNSPEC_COND_LO, UNSPEC_COND_LS, UNSPEC_COND_HS)
33074 (UNSPEC_COND_HI, UNSPEC_COND_UO): New unspecs.
33075 (Vetype, VEL, Vel, VWIDE, Vwide, vw, vwcore, V_INT_EQUIV)
33076 (v_int_equiv): Extend to SVE modes.
33077 (Vesize, V128, v128, Vewtype, V_FP_EQUIV, v_fp_equiv, VPRED): New
33079 (LOGICAL_OR, SVE_INT_UNARY, SVE_FP_UNARY): New code iterators.
33080 (optab): Handle popcount, smin, smax, umin, umax, abs and sqrt.
33081 (logical_nn, lr, sve_int_op, sve_fp_op): New code attributs.
33082 (LOGICALF, OPTAB_PERMUTE, UNPACK, UNPACK_UNSIGNED, SVE_COND_INT_CMP)
33083 (SVE_COND_FP_CMP): New int iterators.
33084 (perm_hilo): Handle the new unpack unspecs.
33085 (optab, logicalf_op, su, perm_optab, cmp_op, imm_con): New int
33087 * config/aarch64/predicates.md (aarch64_sve_cnt_immediate)
33088 (aarch64_sve_addvl_addpl_immediate, aarch64_split_add_offset_immediate)
33089 (aarch64_pluslong_or_poly_operand, aarch64_nonmemory_operand)
33090 (aarch64_equality_operator, aarch64_constant_vector_operand)
33091 (aarch64_sve_ld1r_operand, aarch64_sve_ldr_operand): New predicates.
33092 (aarch64_sve_nonimmediate_operand): Likewise.
33093 (aarch64_sve_general_operand): Likewise.
33094 (aarch64_sve_dup_operand, aarch64_sve_arith_immediate): Likewise.
33095 (aarch64_sve_sub_arith_immediate, aarch64_sve_inc_dec_immediate)
33096 (aarch64_sve_logical_immediate, aarch64_sve_mul_immediate): Likewise.
33097 (aarch64_sve_dup_immediate, aarch64_sve_cmp_vsc_immediate): Likewise.
33098 (aarch64_sve_cmp_vsd_immediate, aarch64_sve_index_immediate): Likewise.
33099 (aarch64_sve_float_arith_immediate): Likewise.
33100 (aarch64_sve_float_arith_with_sub_immediate): Likewise.
33101 (aarch64_sve_float_mul_immediate, aarch64_sve_arith_operand): Likewise.
33102 (aarch64_sve_add_operand, aarch64_sve_logical_operand): Likewise.
33103 (aarch64_sve_lshift_operand, aarch64_sve_rshift_operand): Likewise.
33104 (aarch64_sve_mul_operand, aarch64_sve_cmp_vsc_operand): Likewise.
33105 (aarch64_sve_cmp_vsd_operand, aarch64_sve_index_operand): Likewise.
33106 (aarch64_sve_float_arith_operand): Likewise.
33107 (aarch64_sve_float_arith_with_sub_operand): Likewise.
33108 (aarch64_sve_float_mul_operand): Likewise.
33109 (aarch64_sve_vec_perm_operand): Likewise.
33110 (aarch64_pluslong_operand): Include aarch64_sve_addvl_addpl_immediate.
33111 (aarch64_mov_operand): Accept const_poly_int and const_vector.
33112 (aarch64_simd_lshift_imm, aarch64_simd_rshift_imm): Accept const
33113 as well as const_vector.
33114 (aarch64_simd_imm_zero, aarch64_simd_imm_minus_one): Move earlier
33115 in file. Use CONST0_RTX and CONSTM1_RTX.
33116 (aarch64_simd_or_scalar_imm_zero): Likewise. Add match_codes.
33117 (aarch64_simd_reg_or_zero): Accept const as well as const_vector.
33118 Use aarch64_simd_imm_zero.
33119 * config/aarch64/aarch64-sve.md: New file.
33120 * config/aarch64/aarch64.md: Include it.
33121 (VG_REGNUM, P0_REGNUM, P7_REGNUM, P15_REGNUM): New register numbers.
33122 (UNSPEC_REV, UNSPEC_LD1_SVE, UNSPEC_ST1_SVE, UNSPEC_MERGE_PTRUE)
33123 (UNSPEC_PTEST_PTRUE, UNSPEC_UNPACKSHI, UNSPEC_UNPACKUHI)
33124 (UNSPEC_UNPACKSLO, UNSPEC_UNPACKULO, UNSPEC_PACK)
33125 (UNSPEC_FLOAT_CONVERT, UNSPEC_WHILE_LO): New unspec constants.
33126 (sve): New attribute.
33127 (enabled): Disable instructions with the sve attribute unless
33129 (movqi, movhi): Pass CONST_POLY_INT operaneds through
33130 aarch64_expand_mov_immediate.
33131 (*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64): Handle
33132 CNT[BHSD] immediates.
33133 (movti): Split CONST_POLY_INT moves into two halves.
33134 (add<mode>3): Accept aarch64_pluslong_or_poly_operand.
33135 Split additions that need a temporary here if the destination
33136 is the stack pointer.
33137 (*add<mode>3_aarch64): Handle ADDVL and ADDPL immediates.
33138 (*add<mode>3_poly_1): New instruction.
33139 (set_clobber_cc): New expander.
33141 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
33143 * simplify-rtx.c (simplify_immed_subreg): Add an inner_bytes
33144 parameter and use it instead of GET_MODE_SIZE (innermode). Use
33145 inner_bytes * BITS_PER_UNIT instead of GET_MODE_BITSIZE (innermode).
33146 Use CEIL (inner_bytes, GET_MODE_UNIT_SIZE (innermode)) instead of
33147 GET_MODE_NUNITS (innermode). Also add a first_elem parameter.
33148 Change innermode from fixed_mode_size to machine_mode.
33149 (simplify_subreg): Update call accordingly. Handle a constant-sized
33150 subreg of a variable-length CONST_VECTOR.
33152 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
33153 Alan Hayward <alan.hayward@arm.com>
33154 David Sherwood <david.sherwood@arm.com>
33156 * tree-ssa-address.c (mem_ref_valid_without_offset_p): New function.
33157 (add_offset_to_base): New function, split out from...
33158 (create_mem_ref): ...here. When handling a scale other than 1,
33159 check first whether the address is valid without the offset.
33160 Add it into the base if so, leaving the index and scale as-is.
33162 2018-01-12 Jakub Jelinek <jakub@redhat.com>
33165 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Call
33166 fold_for_warn before checking if arg2 is INTEGER_CST.
33168 2018-01-12 Segher Boessenkool <segher@kernel.crashing.org>
33170 * config/rs6000/predicates.md (load_multiple_operation): Delete.
33171 (store_multiple_operation): Delete.
33172 * config/rs6000/rs6000-cpus.def (601): Remove MASK_STRING.
33173 * config/rs6000/rs6000-protos.h (rs6000_output_load_multiple): Delete.
33174 * config/rs6000/rs6000-string.c (expand_block_move): Delete everything
33175 guarded by TARGET_STRING.
33176 (rs6000_output_load_multiple): Delete.
33177 * config/rs6000/rs6000.c (rs6000_option_override_internal): Delete
33178 OPTION_MASK_STRING / TARGET_STRING handling.
33179 (print_operand) <'N', 'O'>: Add comment that these are unused now.
33180 (const rs6000_opt_masks) <"string">: Change mask to 0.
33181 * config/rs6000/rs6000.h (TARGET_DEFAULT): Remove MASK_STRING.
33182 (MASK_STRING): Delete.
33183 * config/rs6000/rs6000.md (*mov<mode>_string): Delete TARGET_STRING
33185 (load_multiple): Delete.
33192 (store_multiple): Delete.
33199 (movmemsi_8reg): Delete.
33200 (corresponding unnamed define_insn): Delete.
33201 (movmemsi_6reg): Delete.
33202 (corresponding unnamed define_insn): Delete.
33203 (movmemsi_4reg): Delete.
33204 (corresponding unnamed define_insn): Delete.
33205 (movmemsi_2reg): Delete.
33206 (corresponding unnamed define_insn): Delete.
33207 (movmemsi_1reg): Delete.
33208 (corresponding unnamed define_insn): Delete.
33209 * config/rs6000/rs6000.opt (mno-string): New.
33210 (mstring): Replace by deprecation warning stub.
33211 * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mstring.
33213 2018-01-12 Jakub Jelinek <jakub@redhat.com>
33215 * regrename.c (regrename_do_replace): If replacing the same
33216 reg multiple times, try to reuse last created gen_raw_REG.
33219 * bb-reorder.c (pass_partition_blocks::gate): In lto don't partition
33220 main to workaround a bug in GDB.
33222 2018-01-12 Tom de Vries <tom@codesourcery.com>
33225 * config.gcc (nvptx*-*-*): Set use_gcc_stdint=wrap.
33227 2018-01-12 Vladimir Makarov <vmakarov@redhat.com>
33229 PR rtl-optimization/80481
33230 * ira-color.c (get_cap_member): New function.
33231 (allocnos_conflict_by_live_ranges_p): Use it.
33232 (slot_coalesced_allocno_live_ranges_intersect_p): Add assert.
33233 (setup_slot_coalesced_allocno_live_ranges): Ditto.
33235 2018-01-12 Uros Bizjak <ubizjak@gmail.com>
33238 * config/alpha/alpha.md (*saddsi_1): New insn_ans_split pattern.
33239 (*saddl_se_1): Ditto.
33240 (*ssubsi_1): Ditto.
33241 (*ssubl_se_1): Ditto.
33243 2018-01-12 Richard Sandiford <richard.sandiford@linaro.org>
33245 * tree-predcom.c (aff_combination_dr_offset): Use wi::to_poly_widest
33246 rather than wi::to_widest for DR_INITs.
33247 * tree-vect-data-refs.c (vect_find_same_alignment_drs): Use
33248 wi::to_poly_offset rather than wi::to_offset for DR_INIT.
33249 (vect_analyze_data_ref_accesses): Require both DR_INITs to be
33251 (vect_analyze_group_access_1): Note that here.
33253 2018-01-12 Richard Sandiford <richard.sandiford@linaro.org>
33255 * tree-vectorizer.c (get_vec_alignment_for_array_type): Handle
33256 polynomial type sizes.
33258 2018-01-12 Richard Sandiford <richard.sandiford@linaro.org>
33260 * gimplify.c (gimple_add_tmp_var_fn): Allow variables to have a
33261 poly_uint64 size, rather than requiring an unsigned HOST_WIDE_INT size.
33262 (gimple_add_tmp_var): Likewise.
33264 2018-01-12 Martin Liska <mliska@suse.cz>
33266 * gimple.c (gimple_alloc_counts): Use uint64_t instead of int.
33267 (gimple_alloc_sizes): Likewise.
33268 (dump_gimple_statistics): Use PRIu64 in printf format.
33269 * gimple.h: Change uint64_t to int.
33271 2018-01-12 Martin Liska <mliska@suse.cz>
33273 * tree-core.h: Use uint64_t instead of int.
33274 * tree.c (tree_node_counts): Likewise.
33275 (tree_node_sizes): Likewise.
33276 (dump_tree_statistics): Use PRIu64 in printf format.
33278 2018-01-12 Martin Liska <mliska@suse.cz>
33280 * Makefile.in: As qsort_chk is implemented in vec.c, add
33281 vec.o to linkage of gencfn-macros.
33282 * tree.c (build_new_poly_int_cst): Add CXX_MEM_STAT_INFO as it's
33283 passing the info to record_node_allocation_statistics.
33284 (test_vector_cst_patterns): Add CXX_MEM_STAT_INFO to declaration
33286 * ggc-common.c (struct ggc_usage): Add operator== and use
33287 it in operator< and compare function.
33288 * mem-stats.h (struct mem_usage): Likewise.
33289 * vec.c (struct vec_usage): Remove operator< and compare
33290 function. Can be simply inherited.
33292 2018-01-12 Martin Jambor <mjambor@suse.cz>
33295 * params.def: New parameter PARAM_AVOID_FMA_MAX_BITS.
33296 * tree-ssa-math-opts.c: Include domwalk.h.
33297 (convert_mult_to_fma_1): New function.
33298 (fma_transformation_info): New type.
33299 (fma_deferring_state): Likewise.
33300 (cancel_fma_deferring): New function.
33301 (result_of_phi): Likewise.
33302 (last_fma_candidate_feeds_initial_phi): Likewise.
33303 (convert_mult_to_fma): Added deferring logic, split actual
33304 transformation to convert_mult_to_fma_1.
33305 (math_opts_dom_walker): New type.
33306 (math_opts_dom_walker::after_dom_children): New method, body moved
33307 here from pass_optimize_widening_mul::execute, added deferring logic
33309 (pass_optimize_widening_mul::execute): Moved most of code to
33310 math_opts_dom_walker::after_dom_children.
33311 * config/i386/x86-tune.def (X86_TUNE_AVOID_128FMA_CHAINS): New.
33312 * config/i386/i386.c (ix86_option_override_internal): Added
33313 maybe_setting of PARAM_AVOID_FMA_MAX_BITS.
33315 2018-01-12 Richard Biener <rguenther@suse.de>
33318 * dwarf2out.c (gen_variable_die): Do not reset old_die for
33319 inline instance vars.
33321 2018-01-12 Oleg Endo <olegendo@gcc.gnu.org>
33324 * config/rx/rx.c (rx_is_restricted_memory_address):
33325 Handle SUBREG case.
33327 2018-01-12 Richard Biener <rguenther@suse.de>
33329 PR tree-optimization/80846
33330 * target.def (split_reduction): New target hook.
33331 * targhooks.c (default_split_reduction): New function.
33332 * targhooks.h (default_split_reduction): Declare.
33333 * tree-vect-loop.c (vect_create_epilog_for_reduction): If the
33334 target requests first reduce vectors by combining low and high
33336 * tree-vect-stmts.c (vect_gen_perm_mask_any): Adjust.
33337 (get_vectype_for_scalar_type_and_size): Export.
33338 * tree-vectorizer.h (get_vectype_for_scalar_type_and_size): Declare.
33339 * doc/tm.texi.in (TARGET_VECTORIZE_SPLIT_REDUCTION): Document.
33340 * doc/tm.texi: Regenerate.
33341 * config/i386/i386.c (ix86_split_reduction): Implement
33342 TARGET_VECTORIZE_SPLIT_REDUCTION.
33344 2018-01-12 Eric Botcazou <ebotcazou@adacore.com>
33347 * config/sparc/sparc.h (PIC_OFFSET_TABLE_REGNUM): Set to INVALID_REGNUM
33348 in PIC mode except for TARGET_VXWORKS_RTP.
33349 * config/sparc/sparc.c: Include cfgrtl.h.
33350 (TARGET_INIT_PIC_REG): Define.
33351 (TARGET_USE_PSEUDO_PIC_REG): Likewise.
33352 (sparc_pic_register_p): New predicate.
33353 (sparc_legitimate_address_p): Use it.
33354 (sparc_legitimize_pic_address): Likewise.
33355 (sparc_delegitimize_address): Likewise.
33356 (sparc_mode_dependent_address_p): Likewise.
33357 (gen_load_pcrel_sym): Remove 4th parameter.
33358 (load_got_register): Adjust call to above. Remove obsolete stuff.
33359 (sparc_expand_prologue): Do not call load_got_register here.
33360 (sparc_flat_expand_prologue): Likewise.
33361 (sparc_output_mi_thunk): Set the pic_offset_table_rtx object.
33362 (sparc_use_pseudo_pic_reg): New function.
33363 (sparc_init_pic_reg): Likewise.
33364 * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
33365 (builtin_setjmp_receiver): Enable only for TARGET_VXWORKS_RTP.
33367 2018-01-12 Christophe Lyon <christophe.lyon@linaro.org>
33369 * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
33370 Add item for branch_cost.
33372 2018-01-12 Eric Botcazou <ebotcazou@adacore.com>
33374 PR rtl-optimization/83565
33375 * rtlanal.c (nonzero_bits1): On WORD_REGISTER_OPERATIONS machines, do
33376 not extend the result to a larger mode for rotate operations.
33377 (num_sign_bit_copies1): Likewise.
33379 2018-01-12 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
33382 * config/sol2.h (STARTFILE_ARCH_SPEC): Don't use with -shared or
33384 Use values-Xc.o for -pedantic.
33385 Link with values-xpg4.o for C90, values-xpg6.o otherwise.
33387 2018-01-12 Martin Liska <mliska@suse.cz>
33390 * ipa-devirt.c (final_warning_record::grow_type_warnings):
33392 (possible_polymorphic_call_targets): Use it.
33393 (ipa_devirt): Likewise.
33395 2018-01-12 Martin Liska <mliska@suse.cz>
33397 * profile-count.h (enum profile_quality): Use 0 as invalid
33398 enum value of profile_quality.
33400 2018-01-12 Chung-Ju Wu <jasonwucj@gmail.com>
33402 * doc/invoke.texi (NDS32 Options): Add -mext-perf, -mext-perf2 and
33403 -mext-string options.
33405 2018-01-12 Richard Biener <rguenther@suse.de>
33407 * lto-streamer-out.c (DFS::DFS_write_tree_body): Process
33408 DECL_DEBUG_EXPR conditional on DECL_HAS_DEBUG_EXPR_P.
33409 * tree-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
33411 * tree-streamer-out.c (write_ts_decl_common_tree_pointers): Likewise.
33413 2018-01-11 Michael Meissner <meissner@linux.vnet.ibm.com>
33415 * configure.ac (--with-long-double-format): Add support for the
33416 configuration option to change the default long double format on
33418 * config.gcc (powerpc*-linux*-*): Likewise.
33419 * configure: Regenerate.
33420 * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): If long
33421 double is IEEE, define __KC__ and __KF__ to allow floatn.h to be
33422 used without modification.
33424 2018-01-11 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
33426 * config/rs6000/rs6000-builtin.def (BU_P7_MISC_X): New #define.
33427 (SPEC_BARRIER): New instantiation of BU_P7_MISC_X.
33428 * config/rs6000/rs6000.c (rs6000_expand_builtin): Handle
33429 MISC_BUILTIN_SPEC_BARRIER.
33430 (rs6000_init_builtins): Likewise.
33431 * config/rs6000/rs6000.md (UNSPECV_SPEC_BARRIER): New UNSPECV
33433 (speculation_barrier): New define_insn.
33434 * doc/extend.texi: Document __builtin_speculation_barrier.
33436 2018-01-11 Jakub Jelinek <jakub@redhat.com>
33439 * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): If one_var
33440 is 0, for V{8,16}S[IF] and V[48]D[IF]mode use gen_vec_set<mode>_0.
33441 * config/i386/sse.md (VI8_AVX_AVX512F, VI4F_256_512): New mode
33443 (ssescalarmodesuffix): Add 512-bit vectors. Use "d" or "q" for
33444 integral modes instead of "ss" and "sd".
33445 (vec_set<mode>_0): New define_insns for 256-bit and 512-bit
33446 vectors with 32-bit and 64-bit elements.
33447 (vecdupssescalarmodesuffix): New mode attribute.
33448 (vec_dup<mode>): Use it.
33450 2018-01-11 H.J. Lu <hongjiu.lu@intel.com>
33453 * config/i386/i386.c (ix86_compute_frame_layout): Align stack
33454 frame if argument is passed on stack.
33456 2018-01-11 Jakub Jelinek <jakub@redhat.com>
33459 * ree.c (combine_reaching_defs): Optimize also
33460 reg2=exp; reg1=reg2; reg2=any_extend(reg1); into
33461 reg2=any_extend(exp); reg1=reg2;, formatting fix.
33463 2018-01-11 Jan Hubicka <hubicka@ucw.cz>
33465 PR middle-end/83189
33466 * gimple-ssa-isolate-paths.c (isolate_path): Fix profile update.
33468 2018-01-11 Jan Hubicka <hubicka@ucw.cz>
33470 PR middle-end/83718
33471 * tree-inline.c (copy_cfg_body): Adjust num&den for scaling
33472 after they are computed.
33474 2018-01-11 Bin Cheng <bin.cheng@arm.com>
33476 PR tree-optimization/83695
33477 * gimple-loop-linterchange.cc
33478 (tree_loop_interchange::interchange_loops): Call scev_reset_htab to
33479 reset cached scev information after interchange.
33480 (pass_linterchange::execute): Remove call to scev_reset_htab.
33482 2018-01-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
33484 * config/arm/arm_neon.h (vfmlal_lane_low_u32, vfmlal_lane_high_u32,
33485 vfmlalq_laneq_low_u32, vfmlalq_lane_low_u32, vfmlal_laneq_low_u32,
33486 vfmlalq_laneq_high_u32, vfmlalq_lane_high_u32, vfmlal_laneq_high_u32,
33487 vfmlsl_lane_low_u32, vfmlsl_lane_high_u32, vfmlslq_laneq_low_u32,
33488 vfmlslq_lane_low_u32, vfmlsl_laneq_low_u32, vfmlslq_laneq_high_u32,
33489 vfmlslq_lane_high_u32, vfmlsl_laneq_high_u32): Define.
33490 * config/arm/arm_neon_builtins.def (vfmal_lane_low,
33491 vfmal_lane_lowv4hf, vfmal_lane_lowv8hf, vfmal_lane_high,
33492 vfmal_lane_highv4hf, vfmal_lane_highv8hf, vfmsl_lane_low,
33493 vfmsl_lane_lowv4hf, vfmsl_lane_lowv8hf, vfmsl_lane_high,
33494 vfmsl_lane_highv4hf, vfmsl_lane_highv8hf): New sets of builtins.
33495 * config/arm/iterators.md (VFMLSEL2, vfmlsel2): New mode attributes.
33496 (V_lane_reg): Likewise.
33497 * config/arm/neon.md (neon_vfm<vfml_op>l_lane_<vfml_half><VCVTF:mode>):
33499 (neon_vfm<vfml_op>l_lane_<vfml_half><vfmlsel2><mode>): Likewise.
33500 (vfmal_lane_low<mode>_intrinsic,
33501 vfmal_lane_low<vfmlsel2><mode>_intrinsic,
33502 vfmal_lane_high<vfmlsel2><mode>_intrinsic,
33503 vfmal_lane_high<mode>_intrinsic, vfmsl_lane_low<mode>_intrinsic,
33504 vfmsl_lane_low<vfmlsel2><mode>_intrinsic,
33505 vfmsl_lane_high<vfmlsel2><mode>_intrinsic,
33506 vfmsl_lane_high<mode>_intrinsic): New define_insns.
33508 2018-01-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
33510 * config/arm/arm-cpus.in (fp16fml): New feature.
33511 (ALL_SIMD): Add fp16fml.
33512 (armv8.2-a): Add fp16fml as an option.
33513 (armv8.3-a): Likewise.
33514 (armv8.4-a): Add fp16fml as part of fp16.
33515 * config/arm/arm.h (TARGET_FP16FML): Define.
33516 * config/arm/arm-c.c (arm_cpu_builtins): Define __ARM_FEATURE_FP16_FML
33518 * config/arm/arm-modes.def (V2HF): Define.
33519 * config/arm/arm_neon.h (vfmlal_low_u32, vfmlsl_low_u32,
33520 vfmlal_high_u32, vfmlsl_high_u32, vfmlalq_low_u32,
33521 vfmlslq_low_u32, vfmlalq_high_u32, vfmlslq_high_u32): Define.
33522 * config/arm/arm_neon_builtins.def (vfmal_low, vfmal_high,
33523 vfmsl_low, vfmsl_high): New set of builtins.
33524 * config/arm/iterators.md (PLUSMINUS): New code iterator.
33525 (vfml_op): New code attribute.
33526 (VFMLHALVES): New int iterator.
33527 (VFML, VFMLSEL): New mode attributes.
33528 (V_reg): Define mapping for V2HF.
33529 (V_hi, V_lo): New mode attributes.
33530 (VF_constraint): Likewise.
33531 (vfml_half, vfml_half_selector): New int attributes.
33532 * config/arm/neon.md (neon_vfm<vfml_op>l_<vfml_half><mode>): New
33534 (vfmal_low<mode>_intrinsic, vfmsl_high<mode>_intrinsic,
33535 vfmal_high<mode>_intrinsic, vfmsl_low<mode>_intrinsic):
33537 * config/arm/t-arm-elf (v8_fps): Add fp16fml.
33538 * config/arm/t-multilib (v8_2_a_simd_variants): Add fp16fml.
33539 * config/arm/unspecs.md (UNSPEC_VFML_LO, UNSPEC_VFML_HI): New unspecs.
33540 * doc/invoke.texi (ARM Options): Document fp16fml. Update armv8.4-a
33542 * doc/sourcebuild.texi (arm_fp16fml_neon_ok, arm_fp16fml_neon):
33543 Document new effective target and option set.
33545 2018-01-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
33547 * config/arm/arm-cpus.in (armv8_4): New feature.
33548 (ARMv8_4a): New fgroup.
33549 (armv8.4-a): New arch.
33550 * config/arm/arm-tables.opt: Regenerate.
33551 * config/arm/t-aprofile: Add matching rules for -march=armv8.4-a.
33552 * config/arm/t-arm-elf (all_v8_archs): Add armv8.4-a.
33553 * config/arm/t-multilib (v8_4_a_simd_variants): New variable.
33554 Add matching rules for -march=armv8.4-a and extensions.
33555 * doc/invoke.texi (ARM Options): Document -march=armv8.4-a.
33557 2018-01-11 Oleg Endo <olegendo@gcc.gnu.org>
33560 * config/rx/rx.md (BW): New mode attribute.
33561 (sync_lock_test_and_setsi): Add mode suffix to insn output.
33563 2018-01-11 Richard Biener <rguenther@suse.de>
33565 PR tree-optimization/83435
33566 * graphite.c (canonicalize_loop_form): Ignore fake loop exit edges.
33567 * graphite-scop-detection.c (scop_detection::get_sese): Likewise.
33568 * tree-vrp.c (add_assert_info): Drop TREE_OVERFLOW if they appear.
33570 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
33571 Alan Hayward <alan.hayward@arm.com>
33572 David Sherwood <david.sherwood@arm.com>
33574 * config/aarch64/aarch64.c (aarch64_address_info): Add a const_offset
33576 (aarch64_classify_address): Initialize it. Track polynomial offsets.
33577 (aarch64_print_address_internal): Use it to check for a zero offset.
33579 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
33580 Alan Hayward <alan.hayward@arm.com>
33581 David Sherwood <david.sherwood@arm.com>
33583 * config/aarch64/aarch64-modes.def (NUM_POLY_INT_COEFFS): Set to 2.
33584 * config/aarch64/aarch64-protos.h (aarch64_initial_elimination_offset):
33585 Return a poly_int64 rather than a HOST_WIDE_INT.
33586 (aarch64_offset_7bit_signed_scaled_p): Take the offset as a poly_int64
33587 rather than a HOST_WIDE_INT.
33588 * config/aarch64/aarch64.h (aarch64_frame): Protect with
33589 HAVE_POLY_INT_H rather than HOST_WIDE_INT. Change locals_offset,
33590 hard_fp_offset, frame_size, initial_adjust, callee_offset and
33591 final_offset from HOST_WIDE_INT to poly_int64.
33592 * config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args): Use
33593 to_constant when getting the number of units in an Advanced SIMD
33595 (aarch64_builtin_vectorized_function): Check for a constant number
33597 * config/aarch64/aarch64-simd.md (mov<mode>): Handle polynomial
33599 (aarch64_ld<VSTRUCT:nregs>_lane<VALLDIF:mode>): Use the nunits
33600 attribute instead of GET_MODE_NUNITS.
33601 * config/aarch64/aarch64.c (aarch64_hard_regno_nregs)
33602 (aarch64_class_max_nregs): Use the constant_lowest_bound of the
33603 GET_MODE_SIZE for fixed-size registers.
33604 (aarch64_const_vec_all_same_in_range_p): Use const_vec_duplicate_p.
33605 (aarch64_hard_regno_call_part_clobbered, aarch64_classify_index)
33606 (aarch64_mode_valid_for_sched_fusion_p, aarch64_classify_address)
33607 (aarch64_legitimize_address_displacement, aarch64_secondary_reload)
33608 (aarch64_print_operand, aarch64_print_address_internal)
33609 (aarch64_address_cost, aarch64_rtx_costs, aarch64_register_move_cost)
33610 (aarch64_short_vector_p, aapcs_vfp_sub_candidate)
33611 (aarch64_simd_attr_length_rglist, aarch64_operands_ok_for_ldpstp):
33612 Handle polynomial GET_MODE_SIZE.
33613 (aarch64_hard_regno_caller_save_mode): Likewise. Return modes
33614 wider than SImode without modification.
33615 (tls_symbolic_operand_type): Use strip_offset instead of split_const.
33616 (aarch64_pass_by_reference, aarch64_layout_arg, aarch64_pad_reg_upward)
33617 (aarch64_gimplify_va_arg_expr): Assert that we don't yet handle
33618 passing and returning SVE modes.
33619 (aarch64_function_value, aarch64_layout_arg): Use gen_int_mode
33620 rather than GEN_INT.
33621 (aarch64_emit_probe_stack_range): Take the size as a poly_int64
33622 rather than a HOST_WIDE_INT, but call sorry if it isn't constant.
33623 (aarch64_allocate_and_probe_stack_space): Likewise.
33624 (aarch64_layout_frame): Cope with polynomial offsets.
33625 (aarch64_save_callee_saves, aarch64_restore_callee_saves): Take the
33626 start_offset as a poly_int64 rather than a HOST_WIDE_INT. Track
33627 polynomial offsets.
33628 (offset_9bit_signed_unscaled_p, offset_12bit_unsigned_scaled_p)
33629 (aarch64_offset_7bit_signed_scaled_p): Take the offset as a
33630 poly_int64 rather than a HOST_WIDE_INT.
33631 (aarch64_get_separate_components, aarch64_process_components)
33632 (aarch64_expand_prologue, aarch64_expand_epilogue)
33633 (aarch64_use_return_insn_p): Handle polynomial frame offsets.
33634 (aarch64_anchor_offset): New function, split out from...
33635 (aarch64_legitimize_address): ...here.
33636 (aarch64_builtin_vectorization_cost): Handle polynomial
33637 TYPE_VECTOR_SUBPARTS.
33638 (aarch64_simd_check_vect_par_cnst_half): Handle polynomial
33640 (aarch64_simd_make_constant, aarch64_expand_vector_init): Get the
33641 number of elements from the PARALLEL rather than the mode.
33642 (aarch64_shift_truncation_mask): Use GET_MODE_UNIT_BITSIZE
33643 rather than GET_MODE_BITSIZE.
33644 (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_ext)
33645 (aarch64_evpc_rev, aarch64_evpc_dup, aarch64_evpc_zip)
33646 (aarch64_expand_vec_perm_const_1): Handle polynomial
33647 d->perm.length () and d->perm elements.
33648 (aarch64_evpc_tbl): Likewise. Use nelt rather than GET_MODE_NUNITS.
33649 Apply to_constant to d->perm elements.
33650 (aarch64_simd_valid_immediate, aarch64_vec_fpconst_pow_of_2): Handle
33651 polynomial CONST_VECTOR_NUNITS.
33652 (aarch64_move_pointer): Take amount as a poly_int64 rather
33654 (aarch64_progress_pointer): Avoid temporary variable.
33655 * config/aarch64/aarch64.md (aarch64_<crc_variant>): Use
33656 the mode attribute instead of GET_MODE.
33658 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
33659 Alan Hayward <alan.hayward@arm.com>
33660 David Sherwood <david.sherwood@arm.com>
33662 * config/aarch64/aarch64.c (aarch64_force_temporary): Assert that
33663 x exists before using it.
33664 (aarch64_add_constant_internal): Rename to...
33665 (aarch64_add_offset_1): ...this. Replace regnum with separate
33666 src and dest rtxes. Handle the case in which they're different,
33667 including when the offset is zero. Replace scratchreg with an rtx.
33668 Use 2 additions if there is no spare register into which we can
33669 move a 16-bit constant.
33670 (aarch64_add_constant): Delete.
33671 (aarch64_add_offset): Replace reg with separate src and dest
33672 rtxes. Take a poly_int64 offset instead of a HOST_WIDE_INT.
33673 Use aarch64_add_offset_1.
33674 (aarch64_add_sp, aarch64_sub_sp): Take the scratch register as
33675 an rtx rather than an int. Take the delta as a poly_int64
33676 rather than a HOST_WIDE_INT. Use aarch64_add_offset.
33677 (aarch64_expand_mov_immediate): Update uses of aarch64_add_offset.
33678 (aarch64_expand_prologue): Update calls to aarch64_sub_sp,
33679 aarch64_allocate_and_probe_stack_space and aarch64_add_offset.
33680 (aarch64_expand_epilogue): Update calls to aarch64_add_offset
33681 and aarch64_add_sp.
33682 (aarch64_output_mi_thunk): Use aarch64_add_offset rather than
33683 aarch64_add_constant.
33685 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
33687 * config/aarch64/aarch64.c (aarch64_reinterpret_float_as_int):
33688 Use scalar_float_mode.
33690 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
33692 * config/aarch64/aarch64-simd.md
33693 (aarch64_fml<f16mac1>l<f16quad>_low<mode>): Avoid GET_MODE_NUNITS.
33694 (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Likewise.
33695 (aarch64_fml<f16mac1>l_lane_lowv2sf): Likewise.
33696 (aarch64_fml<f16mac1>l_lane_highv2sf): Likewise.
33697 (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Likewise.
33698 (aarch64_fml<f16mac1>lq_laneq_highv4sf): Likewise.
33699 (aarch64_fml<f16mac1>l_laneq_lowv2sf): Likewise.
33700 (aarch64_fml<f16mac1>l_laneq_highv2sf): Likewise.
33701 (aarch64_fml<f16mac1>lq_lane_lowv4sf): Likewise.
33702 (aarch64_fml<f16mac1>lq_lane_highv4sf): Likewise.
33704 2018-01-11 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
33707 * config/arm/arm.c (arm_declare_function_name): Set arch_to_print if
33708 targ_options->x_arm_arch_string is non NULL.
33710 2018-01-11 Tamar Christina <tamar.christina@arm.com>
33712 * config/aarch64/aarch64.h
33713 (AARCH64_FL_FOR_ARCH8_4): Add AARCH64_FL_DOTPROD.
33715 2018-01-11 Sudakshina Das <sudi.das@arm.com>
33718 * expmed.c (emit_store_flag_force): Swap if const op0
33719 and change VOIDmode to mode of op0.
33721 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
33723 PR rtl-optimization/83761
33724 * caller-save.c (replace_reg_with_saved_mem): Pass bits rather
33725 than bytes to mode_for_size.
33727 2018-01-10 Jan Hubicka <hubicka@ucw.cz>
33729 PR middle-end/83189
33730 * gfortran.fortran-torture/compile/pr83189.f90: New testcase.
33731 * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Handle zero
33734 2018-01-10 Jan Hubicka <hubicka@ucw.cz>
33736 PR middle-end/83575
33737 * cfgrtl.c (rtl_verify_edges): Only verify fixability of partition
33738 when in layout mode.
33739 (cfg_layout_finalize): Do not verify cfg before we are out of layout.
33740 * cfgcleanup.c (try_optimize_cfg): Only verify flow info when doing
33743 2018-01-10 Michael Collison <michael.collison@arm.com>
33745 * config/aarch64/aarch64-modes.def (V2HF): New VECTOR_MODE.
33746 * config/aarch64/aarch64-option-extension.def: Add
33747 AARCH64_OPT_EXTENSION of 'fp16fml'.
33748 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
33749 (__ARM_FEATURE_FP16_FML): Define if TARGET_F16FML is true.
33750 * config/aarch64/predicates.md (aarch64_lane_imm3): New predicate.
33751 * config/aarch64/constraints.md (Ui7): New constraint.
33752 * config/aarch64/iterators.md (VFMLA_W): New mode iterator.
33753 (VFMLA_SEL_W): Ditto.
33756 (VFMLA16_LOW): New int iterator.
33757 (VFMLA16_HIGH): Ditto.
33758 (UNSPEC_FMLAL): New unspec.
33759 (UNSPEC_FMLSL): Ditto.
33760 (UNSPEC_FMLAL2): Ditto.
33761 (UNSPEC_FMLSL2): Ditto.
33762 (f16mac): New code attribute.
33763 * config/aarch64/aarch64-simd-builtins.def
33764 (aarch64_fmlal_lowv2sf): Ditto.
33765 (aarch64_fmlsl_lowv2sf): Ditto.
33766 (aarch64_fmlalq_lowv4sf): Ditto.
33767 (aarch64_fmlslq_lowv4sf): Ditto.
33768 (aarch64_fmlal_highv2sf): Ditto.
33769 (aarch64_fmlsl_highv2sf): Ditto.
33770 (aarch64_fmlalq_highv4sf): Ditto.
33771 (aarch64_fmlslq_highv4sf): Ditto.
33772 (aarch64_fmlal_lane_lowv2sf): Ditto.
33773 (aarch64_fmlsl_lane_lowv2sf): Ditto.
33774 (aarch64_fmlal_laneq_lowv2sf): Ditto.
33775 (aarch64_fmlsl_laneq_lowv2sf): Ditto.
33776 (aarch64_fmlalq_lane_lowv4sf): Ditto.
33777 (aarch64_fmlsl_lane_lowv4sf): Ditto.
33778 (aarch64_fmlalq_laneq_lowv4sf): Ditto.
33779 (aarch64_fmlsl_laneq_lowv4sf): Ditto.
33780 (aarch64_fmlal_lane_highv2sf): Ditto.
33781 (aarch64_fmlsl_lane_highv2sf): Ditto.
33782 (aarch64_fmlal_laneq_highv2sf): Ditto.
33783 (aarch64_fmlsl_laneq_highv2sf): Ditto.
33784 (aarch64_fmlalq_lane_highv4sf): Ditto.
33785 (aarch64_fmlsl_lane_highv4sf): Ditto.
33786 (aarch64_fmlalq_laneq_highv4sf): Ditto.
33787 (aarch64_fmlsl_laneq_highv4sf): Ditto.
33788 * config/aarch64/aarch64-simd.md:
33789 (aarch64_fml<f16mac1>l<f16quad>_low<mode>): New pattern.
33790 (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
33791 (aarch64_simd_fml<f16mac1>l<f16quad>_low<mode>): Ditto.
33792 (aarch64_simd_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
33793 (aarch64_fml<f16mac1>l_lane_lowv2sf): Ditto.
33794 (aarch64_fml<f16mac1>l_lane_highv2sf): Ditto.
33795 (aarch64_simd_fml<f16mac>l_lane_lowv2sf): Ditto.
33796 (aarch64_simd_fml<f16mac>l_lane_highv2sf): Ditto.
33797 (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Ditto.
33798 (aarch64_fml<f16mac1>lq_laneq_highv4sf): Ditto.
33799 (aarch64_simd_fml<f16mac>lq_laneq_lowv4sf): Ditto.
33800 (aarch64_simd_fml<f16mac>lq_laneq_highv4sf): Ditto.
33801 (aarch64_fml<f16mac1>l_laneq_lowv2sf): Ditto.
33802 (aarch64_fml<f16mac1>l_laneq_highv2sf): Ditto.
33803 (aarch64_simd_fml<f16mac>l_laneq_lowv2sf): Ditto.
33804 (aarch64_simd_fml<f16mac>l_laneq_highv2sf): Ditto.
33805 (aarch64_fml<f16mac1>lq_lane_lowv4sf): Ditto.
33806 (aarch64_fml<f16mac1>lq_lane_highv4sf): Ditto.
33807 (aarch64_simd_fml<f16mac>lq_lane_lowv4sf): Ditto.
33808 (aarch64_simd_fml<f16mac>lq_lane_highv4sf): Ditto.
33809 * config/aarch64/arm_neon.h (vfmlal_low_u32): New intrinsic.
33810 (vfmlsl_low_u32): Ditto.
33811 (vfmlalq_low_u32): Ditto.
33812 (vfmlslq_low_u32): Ditto.
33813 (vfmlal_high_u32): Ditto.
33814 (vfmlsl_high_u32): Ditto.
33815 (vfmlalq_high_u32): Ditto.
33816 (vfmlslq_high_u32): Ditto.
33817 (vfmlal_lane_low_u32): Ditto.
33818 (vfmlsl_lane_low_u32): Ditto.
33819 (vfmlal_laneq_low_u32): Ditto.
33820 (vfmlsl_laneq_low_u32): Ditto.
33821 (vfmlalq_lane_low_u32): Ditto.
33822 (vfmlslq_lane_low_u32): Ditto.
33823 (vfmlalq_laneq_low_u32): Ditto.
33824 (vfmlslq_laneq_low_u32): Ditto.
33825 (vfmlal_lane_high_u32): Ditto.
33826 (vfmlsl_lane_high_u32): Ditto.
33827 (vfmlal_laneq_high_u32): Ditto.
33828 (vfmlsl_laneq_high_u32): Ditto.
33829 (vfmlalq_lane_high_u32): Ditto.
33830 (vfmlslq_lane_high_u32): Ditto.
33831 (vfmlalq_laneq_high_u32): Ditto.
33832 (vfmlslq_laneq_high_u32): Ditto.
33833 * config/aarch64/aarch64.h (AARCH64_FL_F16SML): New flag.
33834 (AARCH64_FL_FOR_ARCH8_4): New.
33835 (AARCH64_ISA_F16FML): New ISA flag.
33836 (TARGET_F16FML): New feature flag for fp16fml.
33837 (doc/invoke.texi): Document new fp16fml option.
33839 2018-01-10 Michael Collison <michael.collison@arm.com>
33841 * config/aarch64/aarch64-builtins.c:
33842 (aarch64_types_ternopu_imm_qualifiers, TYPES_TERNOPUI): New.
33843 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
33844 (__ARM_FEATURE_SHA3): Define if TARGET_SHA3 is true.
33845 * config/aarch64/aarch64.h (AARCH64_FL_SHA3): New flags.
33846 (AARCH64_ISA_SHA3): New ISA flag.
33847 (TARGET_SHA3): New feature flag for sha3.
33848 * config/aarch64/iterators.md (sha512_op): New int attribute.
33849 (CRYPTO_SHA512): New int iterator.
33850 (UNSPEC_SHA512H): New unspec.
33851 (UNSPEC_SHA512H2): Ditto.
33852 (UNSPEC_SHA512SU0): Ditto.
33853 (UNSPEC_SHA512SU1): Ditto.
33854 * config/aarch64/aarch64-simd-builtins.def
33855 (aarch64_crypto_sha512hqv2di): New builtin.
33856 (aarch64_crypto_sha512h2qv2di): Ditto.
33857 (aarch64_crypto_sha512su0qv2di): Ditto.
33858 (aarch64_crypto_sha512su1qv2di): Ditto.
33859 (aarch64_eor3qv8hi): Ditto.
33860 (aarch64_rax1qv2di): Ditto.
33861 (aarch64_xarqv2di): Ditto.
33862 (aarch64_bcaxqv8hi): Ditto.
33863 * config/aarch64/aarch64-simd.md:
33864 (aarch64_crypto_sha512h<sha512_op>qv2di): New pattern.
33865 (aarch64_crypto_sha512su0qv2di): Ditto.
33866 (aarch64_crypto_sha512su1qv2di): Ditto.
33867 (aarch64_eor3qv8hi): Ditto.
33868 (aarch64_rax1qv2di): Ditto.
33869 (aarch64_xarqv2di): Ditto.
33870 (aarch64_bcaxqv8hi): Ditto.
33871 * config/aarch64/arm_neon.h (vsha512hq_u64): New intrinsic.
33872 (vsha512h2q_u64): Ditto.
33873 (vsha512su0q_u64): Ditto.
33874 (vsha512su1q_u64): Ditto.
33875 (veor3q_u16): Ditto.
33876 (vrax1q_u64): Ditto.
33877 (vxarq_u64): Ditto.
33878 (vbcaxq_u16): Ditto.
33879 * config/arm/types.md (crypto_sha512): New type attribute.
33880 (crypto_sha3): Ditto.
33881 (doc/invoke.texi): Document new sha3 option.
33883 2018-01-10 Michael Collison <michael.collison@arm.com>
33885 * config/aarch64/aarch64-builtins.c:
33886 (aarch64_types_quadopu_imm_qualifiers, TYPES_QUADOPUI): New.
33887 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
33888 (__ARM_FEATURE_SM3): Define if TARGET_SM4 is true.
33889 (__ARM_FEATURE_SM4): Define if TARGET_SM4 is true.
33890 * config/aarch64/aarch64.h (AARCH64_FL_SM4): New flags.
33891 (AARCH64_ISA_SM4): New ISA flag.
33892 (TARGET_SM4): New feature flag for sm4.
33893 * config/aarch64/aarch64-simd-builtins.def
33894 (aarch64_sm3ss1qv4si): Ditto.
33895 (aarch64_sm3tt1aq4si): Ditto.
33896 (aarch64_sm3tt1bq4si): Ditto.
33897 (aarch64_sm3tt2aq4si): Ditto.
33898 (aarch64_sm3tt2bq4si): Ditto.
33899 (aarch64_sm3partw1qv4si): Ditto.
33900 (aarch64_sm3partw2qv4si): Ditto.
33901 (aarch64_sm4eqv4si): Ditto.
33902 (aarch64_sm4ekeyqv4si): Ditto.
33903 * config/aarch64/aarch64-simd.md:
33904 (aarch64_sm3ss1qv4si): Ditto.
33905 (aarch64_sm3tt<sm3tt_op>qv4si): Ditto.
33906 (aarch64_sm3partw<sm3part_op>qv4si): Ditto.
33907 (aarch64_sm4eqv4si): Ditto.
33908 (aarch64_sm4ekeyqv4si): Ditto.
33909 * config/aarch64/iterators.md (sm3tt_op): New int iterator.
33910 (sm3part_op): Ditto.
33911 (CRYPTO_SM3TT): Ditto.
33912 (CRYPTO_SM3PART): Ditto.
33913 (UNSPEC_SM3SS1): New unspec.
33914 (UNSPEC_SM3TT1A): Ditto.
33915 (UNSPEC_SM3TT1B): Ditto.
33916 (UNSPEC_SM3TT2A): Ditto.
33917 (UNSPEC_SM3TT2B): Ditto.
33918 (UNSPEC_SM3PARTW1): Ditto.
33919 (UNSPEC_SM3PARTW2): Ditto.
33920 (UNSPEC_SM4E): Ditto.
33921 (UNSPEC_SM4EKEY): Ditto.
33922 * config/aarch64/constraints.md (Ui2): New constraint.
33923 * config/aarch64/predicates.md (aarch64_imm2): New predicate.
33924 * config/arm/types.md (crypto_sm3): New type attribute.
33925 (crypto_sm4): Ditto.
33926 * config/aarch64/arm_neon.h (vsm3ss1q_u32): New intrinsic.
33927 (vsm3tt1aq_u32): Ditto.
33928 (vsm3tt1bq_u32): Ditto.
33929 (vsm3tt2aq_u32): Ditto.
33930 (vsm3tt2bq_u32): Ditto.
33931 (vsm3partw1q_u32): Ditto.
33932 (vsm3partw2q_u32): Ditto.
33933 (vsm4eq_u32): Ditto.
33934 (vsm4ekeyq_u32): Ditto.
33935 (doc/invoke.texi): Document new sm4 option.
33937 2018-01-10 Michael Collison <michael.collison@arm.com>
33939 * config/aarch64/aarch64-arches.def (armv8.4-a): New architecture.
33940 * config/aarch64/aarch64.h (AARCH64_ISA_V8_4): New ISA flag.
33941 (AARCH64_FL_FOR_ARCH8_4): New.
33942 (AARCH64_FL_V8_4): New flag.
33943 (doc/invoke.texi): Document new armv8.4-a option.
33945 2018-01-10 Michael Collison <michael.collison@arm.com>
33947 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
33948 (__ARM_FEATURE_AES): Define if TARGET_AES is true.
33949 (__ARM_FEATURE_SHA2): Define if TARGET_SHA2 is true.
33950 * config/aarch64/aarch64-option-extension.def: Add
33951 AARCH64_OPT_EXTENSION of 'sha2'.
33952 (aes): Add AARCH64_OPT_EXTENSION of 'aes'.
33953 (crypto): Disable sha2 and aes if crypto disabled.
33954 (crypto): Enable aes and sha2 if enabled.
33955 (simd): Disable sha2 and aes if simd disabled.
33956 * config/aarch64/aarch64.h (AARCH64_FL_AES, AARCH64_FL_SHA2):
33958 (AARCH64_ISA_AES, AARCH64_ISA_SHA2): New ISA flags.
33959 (TARGET_SHA2): New feature flag for sha2.
33960 (TARGET_AES): New feature flag for aes.
33961 * config/aarch64/aarch64-simd.md:
33962 (aarch64_crypto_aes<aes_op>v16qi): Make pattern
33963 conditional on TARGET_AES.
33964 (aarch64_crypto_aes<aesmc_op>v16qi): Ditto.
33965 (aarch64_crypto_sha1hsi): Make pattern conditional
33967 (aarch64_crypto_sha1hv4si): Ditto.
33968 (aarch64_be_crypto_sha1hv4si): Ditto.
33969 (aarch64_crypto_sha1su1v4si): Ditto.
33970 (aarch64_crypto_sha1<sha1_op>v4si): Ditto.
33971 (aarch64_crypto_sha1su0v4si): Ditto.
33972 (aarch64_crypto_sha256h<sha256_op>v4si): Ditto.
33973 (aarch64_crypto_sha256su0v4si): Ditto.
33974 (aarch64_crypto_sha256su1v4si): Ditto.
33975 (doc/invoke.texi): Document new aes and sha2 options.
33977 2018-01-10 Martin Sebor <msebor@redhat.com>
33979 PR tree-optimization/83781
33980 * gimple-fold.c (get_range_strlen): Avoid treating arrays of pointers
33983 2018-01-11 Martin Sebor <msebor@gmail.com>
33984 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
33986 PR tree-optimization/83501
33987 PR tree-optimization/81703
33989 * tree-ssa-strlen.c (get_string_cst): Rename...
33990 (get_string_len): ...to this. Handle global constants.
33991 (handle_char_store): Adjust.
33993 2018-01-10 Kito Cheng <kito.cheng@gmail.com>
33994 Jim Wilson <jimw@sifive.com>
33996 * config/riscv/riscv-protos.h (riscv_output_return): New.
33997 * config/riscv/riscv.c (struct machine_function): New naked_p field.
33998 (riscv_attribute_table, riscv_output_return),
33999 (riscv_handle_fndecl_attribute, riscv_naked_function_p),
34000 (riscv_allocate_stack_slots_for_args, riscv_warn_func_return): New.
34001 (riscv_compute_frame_info): Only compute frame->mask if not a naked
34003 (riscv_expand_prologue): Add early return for naked function.
34004 (riscv_expand_epilogue): Likewise.
34005 (riscv_function_ok_for_sibcall): Return false for naked function.
34006 (riscv_set_current_function): New.
34007 (TARGET_SET_CURRENT_FUNCTION, TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS),
34008 (TARGET_ATTRIBUTE_TABLE, TARGET_WARN_FUNC_RETURN): New.
34009 * config/riscv/riscv.md (simple_return): Call riscv_output_return.
34010 * doc/extend.texi (RISC-V Function Attributes): New.
34012 2018-01-10 Michael Meissner <meissner@linux.vnet.ibm.com>
34014 * config/rs6000/rs6000.c (is_complex_IBM_long_double): Explicitly
34015 check for 128-bit long double before checking TCmode.
34016 * config/rs6000/rs6000.h (FLOAT128_IEEE_P): Explicitly check for
34017 128-bit long doubles before checking TFmode or TCmode.
34018 (FLOAT128_IBM_P): Likewise.
34020 2018-01-10 Martin Sebor <msebor@redhat.com>
34022 PR tree-optimization/83671
34023 * builtins.c (c_strlen): Unconditionally return zero for the empty
34025 Use -Warray-bounds for warnings.
34026 * gimple-fold.c (get_range_strlen): Handle non-constant lengths
34027 for non-constant array indices with COMPONENT_REF, arrays of
34028 arrays, and pointers to arrays.
34029 (gimple_fold_builtin_strlen): Determine and set length range for
34030 non-constant character arrays.
34032 2018-01-10 Aldy Hernandez <aldyh@redhat.com>
34034 PR middle-end/81897
34035 * tree-ssa-uninit.c (convert_control_dep_chain_into_preds): Skip
34038 2018-01-10 Eric Botcazou <ebotcazou@adacore.com>
34040 * dwarf2out.c (dwarf2out_var_location): Do not pass NULL to fprintf.
34042 2018-01-10 Peter Bergner <bergner@vnet.ibm.com>
34045 * config/rs6000/rs6000.c (print_operand) <'y'>: Use
34046 VECTOR_MEM_ALTIVEC_OR_VSX_P.
34047 * config/rs6000/vsx.md (*vsx_le_perm_load_<mode> for VSX_D): Use
34048 indexed_or_indirect_operand predicate.
34049 (*vsx_le_perm_load_<mode> for VSX_W): Likewise.
34050 (*vsx_le_perm_load_v8hi): Likewise.
34051 (*vsx_le_perm_load_v16qi): Likewise.
34052 (*vsx_le_perm_store_<mode> for VSX_D): Likewise.
34053 (*vsx_le_perm_store_<mode> for VSX_W): Likewise.
34054 (*vsx_le_perm_store_v8hi): Likewise.
34055 (*vsx_le_perm_store_v16qi): Likewise.
34056 (eight unnamed splitters): Likewise.
34058 2018-01-10 Peter Bergner <bergner@vnet.ibm.com>
34060 * config/rs6000/x86intrin.h: Change #warning to #error. Update message.
34061 * config/rs6000/emmintrin.h: Likewise.
34062 * config/rs6000/mmintrin.h: Likewise.
34063 * config/rs6000/xmmintrin.h: Likewise.
34065 2018-01-10 David Malcolm <dmalcolm@redhat.com>
34068 * tree-core.h: Document EXPR_LOCATION_WRAPPER_P's usage of
34070 * tree.c (tree_nop_conversion): Return true for location wrapper
34072 (maybe_wrap_with_location): New function.
34073 (selftest::check_strip_nops): New function.
34074 (selftest::test_location_wrappers): New function.
34075 (selftest::tree_c_tests): Call it.
34076 * tree.h (STRIP_ANY_LOCATION_WRAPPER): New macro.
34077 (maybe_wrap_with_location): New decl.
34078 (EXPR_LOCATION_WRAPPER_P): New macro.
34079 (location_wrapper_p): New inline function.
34080 (tree_strip_any_location_wrapper): New inline function.
34082 2018-01-10 H.J. Lu <hongjiu.lu@intel.com>
34085 * config/i386/i386.c (ix86_compute_frame_layout): Always adjust
34086 stack_realign_offset for the largest alignment of stack slot
34088 (ix86_find_max_used_stack_alignment): New function.
34089 (ix86_finalize_stack_frame_flags): Use it. Set
34090 max_used_stack_alignment if we don't realign stack.
34091 * config/i386/i386.h (machine_function): Add
34092 max_used_stack_alignment.
34094 2018-01-10 Christophe Lyon <christophe.lyon@linaro.org>
34096 * config/arm/arm.opt (-mbranch-cost): New option.
34097 * config/arm/arm.h (BRANCH_COST): Take arm_branch_cost into
34100 2018-01-10 Segher Boessenkool <segher@kernel.crashing.org>
34103 * config/rs6000/rs6000.md (load_toc_v4_PIC_2, load_toc_v4_PIC_3b,
34104 load_toc_v4_PIC_3c): Wrap const term in CONST RTL.
34106 2018-01-10 Richard Biener <rguenther@suse.de>
34109 * dwarf2out.c (gen_subprogram_die): Hoist old_die && declaration
34110 early out so it also covers the case where we have a non-NULL
34113 2018-01-10 Richard Sandiford <richard.sandiford@linaro.org>
34115 PR tree-optimization/83753
34116 * tree-vect-stmts.c (get_group_load_store_type): Use VMAT_CONTIGUOUS
34117 for non-strided grouped accesses if the number of elements is 1.
34119 2018-01-10 Jan Hubicka <hubicka@ucw.cz>
34122 * i386.c (ix86_vectorize_builtin_gather): Check TARGET_USE_GATHER.
34123 * i386.h (TARGET_USE_GATHER): Define.
34124 * x86-tune.def (X86_TUNE_USE_GATHER): New.
34126 2018-01-10 Martin Liska <mliska@suse.cz>
34129 * basic-block.h (CLEANUP_NO_PARTITIONING): New define.
34130 * bb-reorder.c (pass_reorder_blocks::execute): Do not clean up
34132 * cfgcleanup.c (try_optimize_cfg): Fix up partitioning if
34133 CLEANUP_NO_PARTITIONING is not set.
34135 2018-01-10 Richard Sandiford <richard.sandiford@linaro.org>
34137 * doc/rtl.texi: Remove documentation of (const ...) wrappers
34138 for vectors, as a partial revert of r254296.
34139 * rtl.h (const_vec_p): Delete.
34140 (const_vec_duplicate_p): Don't test for vector CONSTs.
34141 (unwrap_const_vec_duplicate, const_vec_series_p): Likewise.
34142 * expmed.c (make_tree): Likewise.
34145 * common.md (E, F): Use CONSTANT_P instead of checking for
34147 * emit-rtl.c (gen_lowpart_common): Use const_vec_p instead of
34148 checking for CONST_VECTOR.
34150 2018-01-09 Jan Hubicka <hubicka@ucw.cz>
34152 PR middle-end/83575
34153 * predict.c (force_edge_cold): Handle in more sane way edges
34154 with no prediction.
34156 2018-01-09 Carl Love <cel@us.ibm.com>
34158 * config/rs6002/altivec.md (p8_vmrgow): Add support for V2DI, V2DF,
34160 (p8_vmrgew): Add support for V2DI, V2DF, V4SF types.
34161 * config/rs6000/rs6000-builtin.def: Add definitions for FLOAT2_V2DF,
34162 VMRGEW_V2DI, VMRGEW_V2DF, VMRGEW_V4SF, VMRGOW_V4SI, VMRGOW_V4SF,
34163 VMRGOW_V2DI, VMRGOW_V2DF. Remove definition for VMRGOW.
34164 * config/rs6000/rs6000-c.c (VSX_BUILTIN_VEC_FLOAT2,
34165 P8V_BUILTIN_VEC_VMRGEW, P8V_BUILTIN_VEC_VMRGOW): Add definitions.
34166 * config/rs6000/rs6000-protos.h: Add extern defition for
34167 rs6000_generate_float2_double_code.
34168 * config/rs6000/rs6000.c (rs6000_generate_float2_double_code): Add
34170 * config/rs6000/vsx.md (vsx_xvcdpsp): Add define_insn.
34171 (float2_v2df): Add define_expand.
34173 2018-01-09 Uros Bizjak <ubizjak@gmail.com>
34176 * combine.c (force_int_to_mode) <case ASHIFT>: Use mode instead of
34177 op_mode in the force_to_mode call.
34179 2018-01-09 Richard Sandiford <richard.sandiford@linaro.org>
34181 * config/aarch64/aarch64.c (aarch64_evpc_trn): Use d.perm.series_p
34182 instead of checking each element individually.
34183 (aarch64_evpc_uzp): Likewise.
34184 (aarch64_evpc_zip): Likewise.
34185 (aarch64_evpc_ext): Likewise.
34186 (aarch64_evpc_rev): Likewise.
34187 (aarch64_evpc_dup): Test the encoding for a single duplicated element,
34188 instead of checking each element individually. Return true without
34190 (aarch64_vectorize_vec_perm_const): Use all_from_input_p to test
34191 whether all selected elements come from the same input, instead of
34192 checking each element individually. Remove calls to gen_rtx_REG,
34193 start_sequence and end_sequence and instead assert that no rtl is
34196 2018-01-09 Richard Sandiford <richard.sandiford@linaro.org>
34198 * config/aarch64/aarch64.c (aarch64_legitimate_constant_p): Fix
34199 order of HIGH and CONST checks.
34201 2018-01-09 Richard Sandiford <richard.sandiford@linaro.org>
34203 * tree-vect-stmts.c (permute_vec_elements): Create a fresh variable
34204 if the destination isn't an SSA_NAME.
34206 2018-01-09 Richard Biener <rguenther@suse.de>
34208 PR tree-optimization/83668
34209 * graphite.c (canonicalize_loop_closed_ssa): Add edge argument,
34211 (canonicalize_loop_form): ... here, renamed from ...
34212 (canonicalize_loop_closed_ssa_form): ... this and amended to
34213 swap successor edges for loop exit blocks to make us use
34214 the RPO order we need for initial schedule generation.
34216 2018-01-09 Joseph Myers <joseph@codesourcery.com>
34218 PR tree-optimization/64811
34219 * match.pd: When optimizing comparisons with Inf, avoid
34220 introducing or losing exceptions from comparisons with NaN.
34222 2018-01-09 Martin Liska <mliska@suse.cz>
34225 * asan.c (shadow_mem_size): Add gcc_assert.
34227 2018-01-09 Georg-Johann Lay <avr@gjlay.de>
34229 Don't save registers in main().
34232 * doc/invoke.texi (AVR Options) [-mmain-is-OS_task]: Document it.
34233 * config/avr/avr.opt (-mmain-is-OS_task): New target option.
34234 * config/avr/avr.c (avr_set_current_function): Don't error if
34235 naked, OS_task or OS_main are specified at the same time.
34236 (avr_function_ok_for_sibcall): Don't disable sibcalls for OS_task,
34238 (avr_insert_attributes) [-mmain-is-OS_task] <main>: Add OS_task
34240 * common/config/avr/avr-common.c (avr_option_optimization_table):
34241 Switch on -mmain-is-OS_task for optimizing compilations.
34243 2018-01-09 Richard Biener <rguenther@suse.de>
34245 PR tree-optimization/83572
34246 * graphite.c: Include cfganal.h.
34247 (graphite_transform_loops): Connect infinite loops to exit
34248 and remove fake edges at the end.
34250 2018-01-09 Jan Hubicka <hubicka@ucw.cz>
34252 * ipa-inline.c (edge_badness): Revert accidental checkin.
34254 2018-01-09 Jan Hubicka <hubicka@ucw.cz>
34257 * ipa-comdats.c (set_comdat_group): Only set comdat group of real
34258 symbols; not inline clones.
34260 2018-01-09 Jakub Jelinek <jakub@redhat.com>
34263 * modulo-sched.c (schedule_reg_moves): Punt if we'd need to move
34264 hard registers. Formatting fixes.
34266 PR preprocessor/83722
34267 * gcc.c (try_generate_repro): Pass
34268 &temp_stderr_files[RETRY_ICE_ATTEMPTS - 1] rather than
34269 &temp_stdout_files[RETRY_ICE_ATTEMPTS - 1] as last argument to
34272 2018-01-08 Monk Chiang <sh.chiang04@gmail.com>
34273 Kito Cheng <kito.cheng@gmail.com>
34275 * config/riscv/riscv.c (machine_function::is_leaf): Remove field.
34276 (riscv_leaf_function_p): Delete.
34277 (riscv_function_ok_for_sibcall): Return false when TARGET_SAVE_RESTORE.
34279 2018-01-08 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
34281 * config/rs6000/rs6000-string.c (do_load_for_compare_from_addr): New
34283 (do_ifelse): New function.
34284 (do_isel): New function.
34285 (do_sub3): New function.
34286 (do_add3): New function.
34287 (do_load_mask_compare): New function.
34288 (do_overlap_load_compare): New function.
34289 (expand_compare_loop): New function.
34290 (expand_block_compare): Call expand_compare_loop() when appropriate.
34291 * config/rs6000/rs6000.opt (-mblock-compare-inline-limit): Change
34292 option description.
34293 (-mblock-compare-inline-loop-limit): New option.
34295 2018-01-08 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
34298 * config/rs6000/altivec.md (*altivec_vpermr_<mode>_internal):
34299 Reverse order of second and third operands in first alternative.
34300 * config/rs6000/rs6000.c (rs6000_expand_vector_set): Reverse order
34301 of first and second elements in UNSPEC_VPERMR vector.
34302 (altivec_expand_vec_perm_le): Likewise.
34304 2018-01-08 Jeff Law <law@redhat.com>
34306 PR rtl-optimizatin/81308
34307 * tree-switch-conversion.c (cfg_altered): New file scoped static.
34308 (process_switch): If group_case_labels makes a change, then set
34310 (pass_convert_switch::execute): If a switch is converted, then
34311 set cfg_altered. Return TODO_cfg_cleanup if cfg_altered is true.
34313 PR rtl-optimization/81308
34314 * recog.c (split_all_insns): Conditionally cleanup the CFG after
34317 2018-01-08 Vidya Praveen <vidyapraveen@arm.com>
34319 PR target/83663 - Revert r255946
34320 * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify code
34321 generation for cases where splatting a value is not useful.
34322 * simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge
34323 across a vec_duplicate and a paradoxical subreg forming a vector
34324 mode to a vec_concat.
34326 2018-01-08 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
34328 * config/arm/t-aprofile (MULTILIB_MATCHES): Add mapping rules for
34329 -march=armv8.3-a variants.
34330 * config/arm/t-multilib: Likewise.
34331 * config/arm/t-arm-elf: Likewise. Handle dotprod extension.
34333 2018-01-08 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
34335 * config/rs6000/rs6000.md (cceq_ior_compare): Remove * so I can use it
34337 (cceq_ior_compare_complement): Give it a name so I can use it, and
34338 change boolean_or_operator predicate to boolean_operator so it can
34339 be used to generate a crand.
34340 (eqne): New code iterator.
34341 (bd/bd_neg): New code_attrs.
34342 (<bd>_<mode>): New name for ctr<mode>_internal[12] now combined into
34343 a single define_insn.
34344 (<bd>tf_<mode>): A new insn pattern for the conditional form branch
34345 decrement (bdnzt/bdnzf/bdzt/bdzf).
34346 * config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Updated
34347 with the new names of the branch decrement patterns, and added the
34348 names of the branch decrement conditional patterns.
34350 2018-01-08 Richard Biener <rguenther@suse.de>
34352 PR tree-optimization/83563
34353 * graphite.c (canonicalize_loop_closed_ssa_form): Reset the SCEV
34356 2018-01-08 Richard Biener <rguenther@suse.de>
34358 PR middle-end/83713
34359 * convert.c (do_narrow): Properly guard TYPE_OVERFLOW_WRAPS checks.
34361 2018-01-08 Richard Biener <rguenther@suse.de>
34363 PR tree-optimization/83685
34364 * tree-ssa-pre.c (create_expression_by_pieces): Do not insert
34365 references to abnormals.
34367 2018-01-08 Richard Biener <rguenther@suse.de>
34370 * dwarf2out.c (output_indirect_strings): Handle empty
34371 skeleton_debug_str_hash.
34372 (dwarf2out_early_finish): Index strings for -gsplit-dwarf.
34374 2018-01-08 Claudiu Zissulescu <claziss@synopsys.com>
34376 * config/arc/arc.c (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Delete.
34377 (emit_store_direct): Likewise.
34378 (arc_trampoline_adjust_address): Likewise.
34379 (arc_asm_trampoline_template): New function.
34380 (arc_initialize_trampoline): Use asm_trampoline_template.
34381 (TARGET_ASM_TRAMPOLINE_TEMPLATE): Define.
34382 * config/arc/arc.h (TRAMPOLINE_SIZE): Adjust to 16.
34383 * config/arc/arc.md (flush_icache): Delete pattern.
34385 2018-01-08 Claudiu Zissulescu <claziss@synopsys.com>
34387 * config/arc/arc-c.def (__ARC_UNALIGNED__): New define.
34388 * config/arc/arc.h (STRICT_ALIGNMENT): Control this macro using
34391 2018-01-08 Sebastian Huber <sebastian.huber@embedded-brains.de>
34394 * config/epiphany/epiphany.h (make_pass_mode_switch_use): Guard
34395 by not USED_FOR_TARGET.
34396 (make_pass_resolve_sw_modes): Likewise.
34398 2018-01-08 Sebastian Huber <sebastian.huber@embedded-brains.de>
34400 * config/nios2/nios2.h (nios2_section_threshold): Guard by not
34403 2018-01-08 Richard Biener <rguenther@suse.de>
34405 PR middle-end/83580
34406 * tree-data-ref.c (split_constant_offset): Remove STRIP_NOPS.
34408 2018-01-08 Richard Biener <rguenther@suse.de>
34410 PR middle-end/83517
34411 * match.pd ((t * 2) / 2) -> t): Add missing :c.
34413 2018-01-06 Aldy Hernandez <aldyh@redhat.com>
34415 PR middle-end/81897
34416 * tree-ssa-uninit.c (compute_control_dep_chain): Do not bail on
34417 basic blocks with a small number of successors.
34418 (convert_control_dep_chain_into_preds): Improve handling of
34420 (dump_predicates): Split apart into...
34421 (dump_pred_chain): ...here...
34422 (dump_pred_info): ...and here.
34423 (can_one_predicate_be_invalidated_p): Add debugging printfs.
34424 (can_chain_union_be_invalidated_p): Improve check for invalidation
34426 (uninit_uses_cannot_happen): Avoid unnecessary if
34427 convert_control_dep_chain_into_preds yielded nothing.
34429 2018-01-06 Martin Sebor <msebor@redhat.com>
34431 PR tree-optimization/83640
34432 * gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Avoid
34433 subtracting negative offset from size.
34434 (builtin_access::overlap): Adjust offset bounds of the access to fall
34435 within the size of the object if possible.
34437 2018-01-06 Richard Sandiford <richard.sandiford@linaro.org>
34439 PR rtl-optimization/83699
34440 * expmed.c (extract_bit_field_1): Restrict the vector usage of
34441 extract_bit_field_as_subreg to cases in which the extracted
34442 value is also a vector.
34444 * lra-constraints.c (process_alt_operands): Test for the equivalence
34445 substitutions when detecting a possible reload cycle.
34447 2018-01-06 Jakub Jelinek <jakub@redhat.com>
34450 * toplev.c (process_options): Don't enable debug_nonbind_markers_p
34451 by default if flag_selective_schedling{,2}. Formatting fixes.
34453 PR rtl-optimization/83682
34454 * rtl.h (const_vec_duplicate_p): Only return true for VEC_DUPLICATE
34455 if it has non-VECTOR_MODE element mode.
34456 (vec_duplicate_p): Likewise.
34458 PR middle-end/83694
34459 * cfgexpand.c (expand_debug_expr): Punt if mode1 is VOIDmode
34460 and bitsize might be greater than MAX_BITSIZE_MODE_ANY_INT.
34462 2018-01-05 Jakub Jelinek <jakub@redhat.com>
34465 * config/i386/i386-builtin.def
34466 (__builtin_ia32_vgf2p8affineinvqb_v64qi,
34467 __builtin_ia32_vgf2p8affineqb_v64qi, __builtin_ia32_vgf2p8mulb_v64qi):
34468 Require also OPTION_MASK_ISA_AVX512F in addition to
34469 OPTION_MASK_ISA_GFNI.
34470 (__builtin_ia32_vgf2p8affineinvqb_v16qi_mask,
34471 __builtin_ia32_vgf2p8affineqb_v16qi_mask): Require
34472 OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_SSE in addition
34473 to OPTION_MASK_ISA_GFNI.
34474 (__builtin_ia32_vgf2p8mulb_v32qi_mask): Require
34475 OPTION_MASK_ISA_AVX512VL in addition to OPTION_MASK_ISA_GFNI and
34476 OPTION_MASK_ISA_AVX512BW.
34477 (__builtin_ia32_vgf2p8mulb_v16qi_mask): Require
34478 OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_AVX512BW in
34479 addition to OPTION_MASK_ISA_GFNI.
34480 (__builtin_ia32_vgf2p8affineinvqb_v16qi,
34481 __builtin_ia32_vgf2p8affineqb_v16qi, __builtin_ia32_vgf2p8mulb_v16qi):
34482 Require OPTION_MASK_ISA_SSE2 instead of OPTION_MASK_ISA_SSE in addition
34483 to OPTION_MASK_ISA_GFNI.
34484 * config/i386/i386.c (def_builtin): Change to builtin isa/isa2 being
34485 a requirement for all ISAs rather than any of them with a few
34487 (ix86_add_new_builtins): Clear OPTION_MASK_ISA_64BIT from isa before
34489 (ix86_expand_builtin): Require all ISAs from builtin's isa and isa2
34490 bitmasks to be enabled with 3 exceptions, instead of requiring any
34491 enabled ISA with lots of exceptions.
34492 * config/i386/sse.md (vgf2p8affineinvqb_<mode><mask_name>,
34493 vgf2p8affineqb_<mode><mask_name>, vgf2p8mulb_<mode><mask_name>):
34494 Change avx512bw in isa attribute to avx512f.
34495 * config/i386/sgxintrin.h: Add license boilerplate.
34496 * config/i386/vaesintrin.h: Likewise. Fix macro spelling __AVX512F
34497 to __AVX512F__ and __AVX512VL to __AVX512VL__.
34498 (_mm256_aesdec_epi128, _mm256_aesdeclast_epi128, _mm256_aesenc_epi128,
34499 _mm256_aesenclast_epi128): Enable temporarily avx if __AVX__ is not
34501 * config/i386/gfniintrin.h (_mm_gf2p8mul_epi8,
34502 _mm_gf2p8affineinv_epi64_epi8, _mm_gf2p8affine_epi64_epi8): Enable
34503 temporarily sse2 rather than sse if not enabled already.
34506 * config/i386/sse.md (VI248_VLBW): Rename to ...
34507 (VI248_AVX512VL): ... this. Don't guard V32HI with TARGET_AVX512BW.
34508 (vpshrd_<mode><mask_name>, vpshld_<mode><mask_name>,
34509 vpshrdv_<mode>, vpshrdv_<mode>_mask, vpshrdv_<mode>_maskz,
34510 vpshrdv_<mode>_maskz_1, vpshldv_<mode>, vpshldv_<mode>_mask,
34511 vpshldv_<mode>_maskz, vpshldv_<mode>_maskz_1): Use VI248_AVX512VL
34512 mode iterator instead of VI248_VLBW.
34514 2018-01-05 Jan Hubicka <hubicka@ucw.cz>
34516 * ipa-fnsummary.c (record_modified_bb_info): Add OP.
34517 (record_modified): Skip clobbers; add debug output.
34518 (param_change_prob): Use sreal frequencies.
34520 2018-01-05 Richard Sandiford <richard.sandiford@linaro.org>
34522 * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Don't
34523 punt for user-aligned variables.
34525 2018-01-05 Richard Sandiford <richard.sandiford@linaro.org>
34527 * tree-chrec.c (chrec_contains_symbols): Return true for
34530 2018-01-05 Sudakshina Das <sudi.das@arm.com>
34533 * simplify-rtx.c (simplify_relational_operation_1): Add simplifications
34534 of (x|y) == x for BICS pattern.
34536 2018-01-05 Jakub Jelinek <jakub@redhat.com>
34538 PR tree-optimization/83605
34539 * gimple-ssa-strength-reduction.c: Include tree-eh.h.
34540 (find_candidates_dom_walker::before_dom_children): Ignore stmts that
34543 2018-01-05 Sebastian Huber <sebastian.huber@embedded-brains.de>
34545 * config.gcc (epiphany-*-elf*): Add (epiphany-*-rtems*) configuration.
34546 * config/epiphany/rtems.h: New file.
34548 2018-01-04 Jakub Jelinek <jakub@redhat.com>
34549 Uros Bizjak <ubizjak@gmail.com>
34552 * config/i386/i386.md (*<rotate_insn>hi3_1 splitter): Use
34553 QIreg_operand instead of register_operand predicate.
34554 * config/i386/i386.c (ix86_rop_should_change_byte_p,
34555 set_rop_modrm_reg_bits, ix86_mitigate_rop): Use -mmitigate-rop in
34556 comments instead of -fmitigate[-_]rop.
34558 2018-01-04 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
34561 * cgraphunit.c (symbol_table::compile): Switch to text_section
34562 before calling assembly_start debug hook.
34563 * run-rtl-passes.c (run_rtl_passes): Likewise.
34566 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
34568 * tree-vrp.c (extract_range_from_binary_expr_1): Check
34569 range_int_cst_p rather than !symbolic_range_p before calling
34570 extract_range_from_multiplicative_op_1.
34572 2018-01-04 Jeff Law <law@redhat.com>
34574 * tree-ssa-math-opts.c (execute_cse_reciprocals_1): Remove
34575 redundant test in assertion.
34577 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
34579 * doc/rtl.texi: Document machine_mode wrapper classes.
34581 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
34583 * fold-const.c (fold_ternary_loc): Check tree_fits_uhwi_p before
34584 using tree_to_uhwi.
34586 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
34588 * tree-ssa-forwprop.c (is_combined_permutation_identity): Allow
34589 the VEC_PERM_EXPR fold to fail.
34591 2018-01-04 Jakub Jelinek <jakub@redhat.com>
34594 * bb-reorder.c (insert_section_boundary_note): Set has_bb_partition
34595 to switched_sections.
34597 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
34600 * config/arm/arm.c (arm_vectorize_vec_perm_const): Fix inverted
34601 test for d.testing.
34603 2018-01-04 Peter Bergner <bergner@vnet.ibm.com>
34606 * config/rs6000/rs6000.c (rs6000_discover_homogeneous_aggregate): Do not
34607 allow arguments in FP registers if TARGET_HARD_FLOAT is false.
34609 2018-01-04 Jakub Jelinek <jakub@redhat.com>
34612 * cfgexpand.c (expand_debug_expr) <case BIT_FIELD_REF>: Punt if mode
34613 is BLKmode and bitpos not zero or mode change is needed.
34615 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
34618 * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): Require
34621 2018-01-04 Uros Bizjak <ubizjak@gmail.com>
34624 * config/alpha/alpha.md (*sadd<modesuffix>): Use ASHIFT
34625 instead of MULT rtx. Update all corresponding splitters.
34626 (*saddl_se): Ditto.
34627 (*ssub<modesuffix>): Ditto.
34628 (*ssubl_se): Ditto.
34629 (*cmp_sadd_di): Update split patterns.
34630 (*cmp_sadd_si): Ditto.
34631 (*cmp_sadd_sidi): Ditto.
34632 (*cmp_ssub_di): Ditto.
34633 (*cmp_ssub_si): Ditto.
34634 (*cmp_ssub_sidi): Ditto.
34635 * config/alpha/predicates.md (const23_operand): New predicate.
34636 * config/alpha/alpha.c (alpha_rtx_costs) [PLUS, MINUS]:
34637 Look for ASHIFT, not MULT inner operand.
34638 (alpha_split_conditional_move): Update for *sadd<modesuffix> change.
34640 2018-01-04 Martin Liska <mliska@suse.cz>
34642 PR gcov-profile/83669
34643 * gcov.c (output_intermediate_file): Add version to intermediate
34645 * doc/gcov.texi: Document new field 'version' in intermediate
34646 file format. Fix location of '-k' option of gcov command.
34648 2018-01-04 Martin Liska <mliska@suse.cz>
34651 * ipa-icf.c (sem_function::merge): Do not cross comdat boundary.
34653 2018-01-04 Jakub Jelinek <jakub@redhat.com>
34655 * gimple-ssa-sprintf.c (parse_directive): Cast second dir.len to uhwi.
34657 2018-01-03 Martin Sebor <msebor@redhat.com>
34659 PR tree-optimization/83655
34660 * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call): Avoid
34661 checking calls with invalid arguments.
34663 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
34665 * tree-vect-stmts.c (vect_get_store_rhs): New function.
34666 (vectorizable_mask_load_store): Delete.
34667 (vectorizable_call): Return false for masked loads and stores.
34668 (vectorizable_store): Handle IFN_MASK_STORE. Use vect_get_store_rhs
34669 instead of gimple_assign_rhs1.
34670 (vectorizable_load): Handle IFN_MASK_LOAD.
34671 (vect_transform_stmt): Don't set is_store for call_vec_info_type.
34673 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
34675 * tree-vect-stmts.c (vect_build_gather_load_calls): New function,
34677 (vectorizable_mask_load_store): ...here.
34678 (vectorizable_load): ...and here.
34680 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
34682 * tree-vect-stmts.c (vect_build_all_ones_mask)
34683 (vect_build_zero_merge_argument): New functions, split out from...
34684 (vectorizable_load): ...here.
34686 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
34688 * tree-vect-stmts.c (vect_check_store_rhs): New function,
34690 (vectorizable_mask_load_store): ...here.
34691 (vectorizable_store): ...and here.
34693 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
34695 * tree-vect-stmts.c (vect_check_load_store_mask): New function,
34697 (vectorizable_mask_load_store): ...here.
34699 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
34701 * tree-vectorizer.h (vec_load_store_type): Moved from tree-vec-stmts.c
34702 (vect_model_store_cost): Take a vec_load_store_type instead of a
34704 * tree-vect-stmts.c (vec_load_store_type): Move to tree-vectorizer.h.
34705 (vect_model_store_cost): Take a vec_load_store_type instead of a
34707 (vectorizable_mask_load_store): Update accordingly.
34708 (vectorizable_store): Likewise.
34709 * tree-vect-slp.c (vect_analyze_slp_cost_1): Update accordingly.
34711 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
34713 * tree-vect-loop.c (vect_transform_loop): Stub out scalar
34714 IFN_MASK_LOAD calls here rather than...
34715 * tree-vect-stmts.c (vectorizable_mask_load_store): ...here.
34717 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
34718 Alan Hayward <alan.hayward@arm.com>
34719 David Sherwood <david.sherwood@arm.com>
34721 * expmed.c (extract_bit_field_1): For vector extracts,
34722 fall back to extract_bit_field_as_subreg if vec_extract
34725 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
34726 Alan Hayward <alan.hayward@arm.com>
34727 David Sherwood <david.sherwood@arm.com>
34729 * lra-spills.c (pseudo_reg_slot_compare): Sort slots by whether
34730 they are variable or constant sized.
34731 (assign_stack_slot_num_and_sort_pseudos): Don't reuse variable-sized
34732 slots for constant-sized data.
34734 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
34735 Alan Hayward <alan.hayward@arm.com>
34736 David Sherwood <david.sherwood@arm.com>
34738 * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): When
34739 handling COND_EXPRs with boolean comparisons, try to find a better
34740 basis for the mask type than the boolean itself.
34742 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
34744 * doc/rtl.texi (MAX_BITSIZE_MODE_ANY_MODE): Describe how the default
34745 is calculated and how it can be overridden.
34746 * genmodes.c (max_bitsize_mode_any_mode): New variable.
34747 (create_modes): Initialize it from MAX_BITSIZE_MODE_ANY_MODE,
34749 (emit_max_int): Use it to set the output MAX_BITSIZE_MODE_ANY_MODE,
34752 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
34753 Alan Hayward <alan.hayward@arm.com>
34754 David Sherwood <david.sherwood@arm.com>
34756 * config/aarch64/aarch64-protos.h (aarch64_output_simd_mov_immediate):
34757 Remove the mode argument.
34758 (aarch64_simd_valid_immediate): Remove the mode and inverse
34760 * config/aarch64/iterators.md (bitsize): New iterator.
34761 * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>, and<mode>3)
34762 (ior<mode>3): Update calls to aarch64_output_simd_mov_immediate.
34763 * config/aarch64/constraints.md (Do, Db, Dn): Update calls to
34764 aarch64_simd_valid_immediate.
34765 * config/aarch64/predicates.md (aarch64_reg_or_orr_imm): Likewise.
34766 (aarch64_reg_or_bic_imm): Likewise.
34767 * config/aarch64/aarch64.c (simd_immediate_info): Replace mvn
34768 with an insn_type enum and msl with a modifier_type enum.
34769 Replace element_width with a scalar_mode. Change the shift
34770 to unsigned int. Add constructors for scalar_float_mode and
34771 scalar_int_mode elements.
34772 (aarch64_vect_float_const_representable_p): Delete.
34773 (aarch64_can_const_movi_rtx_p)
34774 (aarch64_simd_scalar_immediate_valid_for_move)
34775 (aarch64_simd_make_constant): Update call to
34776 aarch64_simd_valid_immediate.
34777 (aarch64_advsimd_valid_immediate_hs): New function.
34778 (aarch64_advsimd_valid_immediate): Likewise.
34779 (aarch64_simd_valid_immediate): Remove mode and inverse
34780 arguments. Rewrite to use the above. Use const_vec_duplicate_p
34781 to detect duplicated constants and use aarch64_float_const_zero_rtx_p
34782 and aarch64_float_const_representable_p on the result.
34783 (aarch64_output_simd_mov_immediate): Remove mode argument.
34784 Update call to aarch64_simd_valid_immediate and use of
34785 simd_immediate_info.
34786 (aarch64_output_scalar_simd_mov_immediate): Update call
34789 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
34790 Alan Hayward <alan.hayward@arm.com>
34791 David Sherwood <david.sherwood@arm.com>
34793 * machmode.h (mode_precision): Prefix with CONST_MODE_PRECISION.
34794 (mode_nunits): Likewise CONST_MODE_NUNITS.
34795 * machmode.def (ADJUST_NUNITS): Document.
34796 * genmodes.c (mode_data::need_nunits_adj): New field.
34797 (blank_mode): Update accordingly.
34798 (adj_nunits): New variable.
34799 (print_maybe_const_decl): Replace CATEGORY with a NEEDS_ADJ
34801 (emit_mode_size_inline): Set need_bytesize_adj for all modes
34802 listed in adj_nunits.
34803 (emit_mode_nunits_inline): Set need_nunits_adj for all modes
34804 listed in adj_nunits. Don't emit case statements for such modes.
34805 (emit_insn_modes_h): Emit definitions of CONST_MODE_NUNITS
34806 and CONST_MODE_PRECISION. Make CONST_MODE_SIZE expand to
34807 nothing if adj_nunits is nonnull.
34808 (emit_mode_precision, emit_mode_nunits): Use print_maybe_const_decl.
34809 (emit_mode_unit_size, emit_mode_base_align, emit_mode_ibit)
34810 (emit_mode_fbit): Update use of print_maybe_const_decl.
34811 (emit_move_size): Likewise. Treat the array as non-const
34813 (emit_mode_adjustments): Handle adj_nunits.
34815 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
34817 * machmode.def (VECTOR_MODES_WITH_PREFIX): Document.
34818 * genmodes.c (VECTOR_MODES_WITH_PREFIX): New macro.
34819 (VECTOR_MODES): Use it.
34820 (make_vector_modes): Take the prefix as an argument.
34822 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
34823 Alan Hayward <alan.hayward@arm.com>
34824 David Sherwood <david.sherwood@arm.com>
34826 * mode-classes.def (MODE_VECTOR_BOOL): New mode class.
34827 * machmode.h (INTEGRAL_MODE_P, VECTOR_MODE_P): Return true
34828 for MODE_VECTOR_BOOL.
34829 * machmode.def (VECTOR_BOOL_MODE): Document.
34830 * genmodes.c (VECTOR_BOOL_MODE): New macro.
34831 (make_vector_bool_mode): New function.
34832 (complete_mode, emit_mode_wider, emit_mode_adjustments): Handle
34834 * lto-streamer-in.c (lto_input_mode_table): Likewise.
34835 * rtx-vector-builder.c (rtx_vector_builder::find_cached_value):
34837 * stor-layout.c (int_mode_for_mode): Likewise.
34838 * tree.c (build_vector_type_for_mode): Likewise.
34839 * varasm.c (output_constant_pool_2): Likewise.
34840 * emit-rtl.c (init_emit_once): Make sure that CONST1_RTX (BImode) and
34841 CONSTM1_RTX (BImode) are the same thing. Initialize const_tiny_rtx
34842 for MODE_VECTOR_BOOL.
34843 * expr.c (expand_expr_real_1): Use VECTOR_MODE_P instead of a list
34844 of mode class checks.
34845 * tree-vect-generic.c (expand_vector_operation): Use VECTOR_MODE_P
34846 instead of a list of mode class checks.
34847 (expand_vector_scalar_condition): Likewise.
34848 (type_for_widest_vector_mode): Handle BImode as an inner mode.
34850 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
34851 Alan Hayward <alan.hayward@arm.com>
34852 David Sherwood <david.sherwood@arm.com>
34854 * machmode.h (mode_size): Change from unsigned short to
34856 (mode_to_bytes): Return a poly_uint16 rather than an unsigned short.
34857 (GET_MODE_SIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
34858 or if measurement_type is not polynomial.
34859 (fixed_size_mode::includes_p): Check for constant-sized modes.
34860 * genmodes.c (emit_mode_size_inline): Make mode_size_inline
34861 return a poly_uint16 rather than an unsigned short.
34862 (emit_mode_size): Change the type of mode_size from unsigned short
34863 to poly_uint16_pod. Use ZERO_COEFFS for the initializer.
34864 (emit_mode_adjustments): Cope with polynomial vector sizes.
34865 * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
34867 * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
34869 * auto-inc-dec.c (try_merge): Treat GET_MODE_SIZE as polynomial.
34870 * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Likewise.
34871 * caller-save.c (setup_save_areas): Likewise.
34872 (replace_reg_with_saved_mem): Likewise.
34873 * calls.c (emit_library_call_value_1): Likewise.
34874 * combine-stack-adj.c (combine_stack_adjustments_for_block): Likewise.
34875 * combine.c (simplify_set, make_extraction, simplify_shift_const_1)
34876 (gen_lowpart_for_combine): Likewise.
34877 * convert.c (convert_to_integer_1): Likewise.
34878 * cse.c (equiv_constant, cse_insn): Likewise.
34879 * cselib.c (autoinc_split, cselib_hash_rtx): Likewise.
34880 (cselib_subst_to_values): Likewise.
34881 * dce.c (word_dce_process_block): Likewise.
34882 * df-problems.c (df_word_lr_mark_ref): Likewise.
34883 * dwarf2cfi.c (init_one_dwarf_reg_size): Likewise.
34884 * dwarf2out.c (multiple_reg_loc_descriptor, mem_loc_descriptor)
34885 (concat_loc_descriptor, concatn_loc_descriptor, loc_descriptor)
34886 (rtl_for_decl_location): Likewise.
34887 * emit-rtl.c (gen_highpart, widen_memory_access): Likewise.
34888 * expmed.c (extract_bit_field_1, extract_integral_bit_field): Likewise.
34889 * expr.c (emit_group_load_1, clear_storage_hints): Likewise.
34890 (emit_move_complex, emit_move_multi_word, emit_push_insn): Likewise.
34891 (expand_expr_real_1): Likewise.
34892 * function.c (assign_parm_setup_block_p, assign_parm_setup_block)
34893 (pad_below): Likewise.
34894 * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
34895 * gimple-ssa-store-merging.c (rhs_valid_for_store_merging_p): Likewise.
34896 * ira.c (get_subreg_tracking_sizes): Likewise.
34897 * ira-build.c (ira_create_allocno_objects): Likewise.
34898 * ira-color.c (coalesced_pseudo_reg_slot_compare): Likewise.
34899 (ira_sort_regnos_for_alter_reg): Likewise.
34900 * ira-costs.c (record_operand_costs): Likewise.
34901 * lower-subreg.c (interesting_mode_p, simplify_gen_subreg_concatn)
34902 (resolve_simple_move): Likewise.
34903 * lra-constraints.c (get_reload_reg, operands_match_p): Likewise.
34904 (process_addr_reg, simplify_operand_subreg, curr_insn_transform)
34905 (lra_constraints): Likewise.
34906 (CONST_POOL_OK_P): Reject variable-sized modes.
34907 * lra-spills.c (slot, assign_mem_slot, pseudo_reg_slot_compare)
34908 (add_pseudo_to_slot, lra_spill): Likewise.
34909 * omp-low.c (omp_clause_aligned_alignment): Likewise.
34910 * optabs-query.c (get_best_extraction_insn): Likewise.
34911 * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
34912 * optabs.c (expand_vec_perm_var, expand_vec_cond_expr): Likewise.
34913 (expand_mult_highpart, valid_multiword_target_p): Likewise.
34914 * recog.c (offsettable_address_addr_space_p): Likewise.
34915 * regcprop.c (maybe_mode_change): Likewise.
34916 * reginfo.c (choose_hard_reg_mode, record_subregs_of_mode): Likewise.
34917 * regrename.c (build_def_use): Likewise.
34918 * regstat.c (dump_reg_info): Likewise.
34919 * reload.c (complex_word_subreg_p, push_reload, find_dummy_reload)
34920 (find_reloads, find_reloads_subreg_address): Likewise.
34921 * reload1.c (eliminate_regs_1): Likewise.
34922 * rtlanal.c (for_each_inc_dec_find_inc_dec, rtx_cost): Likewise.
34923 * simplify-rtx.c (avoid_constant_pool_reference): Likewise.
34924 (simplify_binary_operation_1, simplify_subreg): Likewise.
34925 * targhooks.c (default_function_arg_padding): Likewise.
34926 (default_hard_regno_nregs, default_class_max_nregs): Likewise.
34927 * tree-cfg.c (verify_gimple_assign_binary): Likewise.
34928 (verify_gimple_assign_ternary): Likewise.
34929 * tree-inline.c (estimate_move_cost): Likewise.
34930 * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
34931 * tree-ssa-loop-ivopts.c (add_autoinc_candidates): Likewise.
34932 (get_address_cost_ainc): Likewise.
34933 * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
34934 (vect_supportable_dr_alignment): Likewise.
34935 * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
34936 (vectorizable_reduction): Likewise.
34937 * tree-vect-stmts.c (vectorizable_assignment, vectorizable_shift)
34938 (vectorizable_operation, vectorizable_load): Likewise.
34939 * tree.c (build_same_sized_truth_vector_type): Likewise.
34940 * valtrack.c (cleanup_auto_inc_dec): Likewise.
34941 * var-tracking.c (emit_note_insn_var_location): Likewise.
34942 * config/arc/arc.h (ASM_OUTPUT_CASE_END): Use as_a <scalar_int_mode>.
34943 (ADDR_VEC_ALIGN): Likewise.
34945 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
34946 Alan Hayward <alan.hayward@arm.com>
34947 David Sherwood <david.sherwood@arm.com>
34949 * machmode.h (mode_to_bits): Return a poly_uint16 rather than an
34951 (GET_MODE_BITSIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
34952 or if measurement_type is polynomial.
34953 * calls.c (shift_return_value): Treat GET_MODE_BITSIZE as polynomial.
34954 * combine.c (make_extraction): Likewise.
34955 * dse.c (find_shift_sequence): Likewise.
34956 * dwarf2out.c (mem_loc_descriptor): Likewise.
34957 * expmed.c (store_integral_bit_field, extract_bit_field_1): Likewise.
34958 (extract_bit_field, extract_low_bits): Likewise.
34959 * expr.c (convert_move, convert_modes, emit_move_insn_1): Likewise.
34960 (optimize_bitfield_assignment_op, expand_assignment): Likewise.
34961 (store_expr_with_bounds, store_field, expand_expr_real_1): Likewise.
34962 * fold-const.c (optimize_bit_field_compare, merge_ranges): Likewise.
34963 * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
34964 * reload.c (find_reloads): Likewise.
34965 * reload1.c (alter_reg): Likewise.
34966 * stor-layout.c (bitwise_mode_for_mode, compute_record_mode): Likewise.
34967 * targhooks.c (default_secondary_memory_needed_mode): Likewise.
34968 * tree-if-conv.c (predicate_mem_writes): Likewise.
34969 * tree-ssa-strlen.c (handle_builtin_memcmp): Likewise.
34970 * tree-vect-patterns.c (adjust_bool_pattern): Likewise.
34971 * tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise.
34972 * valtrack.c (dead_debug_insert_temp): Likewise.
34973 * varasm.c (mergeable_constant_section): Likewise.
34974 * config/sh/sh.h (LOCAL_ALIGNMENT): Use as_a <fixed_size_mode>.
34976 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
34977 Alan Hayward <alan.hayward@arm.com>
34978 David Sherwood <david.sherwood@arm.com>
34980 * expr.c (expand_assignment): Cope with polynomial mode sizes
34981 when assigning to a CONCAT.
34983 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
34984 Alan Hayward <alan.hayward@arm.com>
34985 David Sherwood <david.sherwood@arm.com>
34987 * machmode.h (mode_precision): Change from unsigned short to
34989 (mode_to_precision): Return a poly_uint16 rather than an unsigned
34991 (GET_MODE_PRECISION): Return a constant if ONLY_FIXED_SIZE_MODES,
34992 or if measurement_type is not polynomial.
34993 (HWI_COMPUTABLE_MODE_P): Turn into a function. Optimize the case
34994 in which the mode is already known to be a scalar_int_mode.
34995 * genmodes.c (emit_mode_precision): Change the type of mode_precision
34996 from unsigned short to poly_uint16_pod. Use ZERO_COEFFS for the
34998 * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
34999 for GET_MODE_PRECISION.
35000 * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
35001 for GET_MODE_PRECISION.
35002 * combine.c (update_rsp_from_reg_equal): Treat GET_MODE_PRECISION
35004 (try_combine, find_split_point, combine_simplify_rtx): Likewise.
35005 (expand_field_assignment, make_extraction): Likewise.
35006 (make_compound_operation_int, record_dead_and_set_regs_1): Likewise.
35007 (get_last_value): Likewise.
35008 * convert.c (convert_to_integer_1): Likewise.
35009 * cse.c (cse_insn): Likewise.
35010 * expr.c (expand_expr_real_1): Likewise.
35011 * lra-constraints.c (simplify_operand_subreg): Likewise.
35012 * optabs-query.c (can_atomic_load_p): Likewise.
35013 * optabs.c (expand_atomic_load): Likewise.
35014 (expand_atomic_store): Likewise.
35015 * ree.c (combine_reaching_defs): Likewise.
35016 * rtl.h (partial_subreg_p, paradoxical_subreg_p): Likewise.
35017 * rtlanal.c (nonzero_bits1, lsb_bitfield_op_p): Likewise.
35018 * tree.h (type_has_mode_precision_p): Likewise.
35019 * ubsan.c (instrument_si_overflow): Likewise.
35021 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35022 Alan Hayward <alan.hayward@arm.com>
35023 David Sherwood <david.sherwood@arm.com>
35025 * tree.h (TYPE_VECTOR_SUBPARTS): Turn into a function and handle
35026 polynomial numbers of units.
35027 (SET_TYPE_VECTOR_SUBPARTS): Likewise.
35028 (valid_vector_subparts_p): New function.
35029 (build_vector_type): Remove temporary shim and take the number
35030 of units as a poly_uint64 rather than an int.
35031 (build_opaque_vector_type): Take the number of units as a
35032 poly_uint64 rather than an int.
35033 * tree.c (build_vector_from_ctor): Handle polynomial
35034 TYPE_VECTOR_SUBPARTS.
35035 (type_hash_canon_hash, type_cache_hasher::equal): Likewise.
35036 (uniform_vector_p, vector_type_mode, build_vector): Likewise.
35037 (build_vector_from_val): If the number of units is variable,
35038 use build_vec_duplicate_cst for constant operands and
35039 VEC_DUPLICATE_EXPR otherwise.
35040 (make_vector_type): Remove temporary is_constant ().
35041 (build_vector_type, build_opaque_vector_type): Take the number of
35042 units as a poly_uint64 rather than an int.
35043 (check_vector_cst): Handle polynomial TYPE_VECTOR_SUBPARTS and
35045 * cfgexpand.c (expand_debug_expr): Likewise.
35046 * expr.c (count_type_elements, categorize_ctor_elements_1): Likewise.
35047 (store_constructor, expand_expr_real_1): Likewise.
35048 (const_scalar_mask_from_tree): Likewise.
35049 * fold-const-call.c (fold_const_reduction): Likewise.
35050 * fold-const.c (const_binop, const_unop, fold_convert_const): Likewise.
35051 (operand_equal_p, fold_vec_perm, fold_ternary_loc): Likewise.
35052 (native_encode_vector, vec_cst_ctor_to_array): Likewise.
35053 (fold_relational_const): Likewise.
35054 (native_interpret_vector): Likewise. Change the size from an
35055 int to an unsigned int.
35056 * gimple-fold.c (gimple_fold_stmt_to_constant_1): Handle polynomial
35057 TYPE_VECTOR_SUBPARTS.
35058 (gimple_fold_indirect_ref, gimple_build_vector): Likewise.
35059 (gimple_build_vector_from_val): Use VEC_DUPLICATE_EXPR when
35060 duplicating a non-constant operand into a variable-length vector.
35061 * hsa-brig.c (hsa_op_immed::emit_to_buffer): Handle polynomial
35062 TYPE_VECTOR_SUBPARTS and VECTOR_CST_NELTS.
35063 * ipa-icf.c (sem_variable::equals): Likewise.
35064 * match.pd: Likewise.
35065 * omp-simd-clone.c (simd_clone_subparts): Likewise.
35066 * print-tree.c (print_node): Likewise.
35067 * stor-layout.c (layout_type): Likewise.
35068 * targhooks.c (default_builtin_vectorization_cost): Likewise.
35069 * tree-cfg.c (verify_gimple_comparison): Likewise.
35070 (verify_gimple_assign_binary): Likewise.
35071 (verify_gimple_assign_ternary): Likewise.
35072 (verify_gimple_assign_single): Likewise.
35073 * tree-pretty-print.c (dump_generic_node): Likewise.
35074 * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
35075 (simplify_bitfield_ref, is_combined_permutation_identity): Likewise.
35076 * tree-vect-data-refs.c (vect_permute_store_chain): Likewise.
35077 (vect_grouped_load_supported, vect_permute_load_chain): Likewise.
35078 (vect_shift_permute_load_chain): Likewise.
35079 * tree-vect-generic.c (nunits_for_known_piecewise_op): Likewise.
35080 (expand_vector_condition, optimize_vector_constructor): Likewise.
35081 (lower_vec_perm, get_compute_type): Likewise.
35082 * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
35083 (get_initial_defs_for_reduction, vect_transform_loop): Likewise.
35084 * tree-vect-patterns.c (vect_recog_bool_pattern): Likewise.
35085 (vect_recog_mask_conversion_pattern): Likewise.
35086 * tree-vect-slp.c (vect_supported_load_permutation_p): Likewise.
35087 (vect_get_constant_vectors, vect_transform_slp_perm_load): Likewise.
35088 * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
35089 (get_group_load_store_type, vectorizable_mask_load_store): Likewise.
35090 (vectorizable_bswap, simd_clone_subparts, vectorizable_assignment)
35091 (vectorizable_shift, vectorizable_operation, vectorizable_store)
35092 (vectorizable_load, vect_is_simple_cond, vectorizable_comparison)
35093 (supportable_widening_operation): Likewise.
35094 (supportable_narrowing_operation): Likewise.
35095 * tree-vector-builder.c (tree_vector_builder::binary_encoded_nelts):
35097 * varasm.c (output_constant): Likewise.
35099 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35100 Alan Hayward <alan.hayward@arm.com>
35101 David Sherwood <david.sherwood@arm.com>
35103 * tree-vect-data-refs.c (vect_permute_store_chain): Reorganize
35104 so that both the length == 3 and length != 3 cases set up their
35105 own permute vectors. Add comments explaining why we know the
35106 number of elements is constant.
35107 (vect_permute_load_chain): Likewise.
35109 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35110 Alan Hayward <alan.hayward@arm.com>
35111 David Sherwood <david.sherwood@arm.com>
35113 * machmode.h (mode_nunits): Change from unsigned char to
35115 (ONLY_FIXED_SIZE_MODES): New macro.
35116 (pod_mode::measurement_type, scalar_int_mode::measurement_type)
35117 (scalar_float_mode::measurement_type, scalar_mode::measurement_type)
35118 (complex_mode::measurement_type, fixed_size_mode::measurement_type):
35120 (mode_to_nunits): Return a poly_uint16 rather than an unsigned short.
35121 (GET_MODE_NUNITS): Return a constant if ONLY_FIXED_SIZE_MODES,
35122 or if measurement_type is not polynomial.
35123 * genmodes.c (ZERO_COEFFS): New macro.
35124 (emit_mode_nunits_inline): Make mode_nunits_inline return a
35126 (emit_mode_nunits): Change the type of mode_nunits to poly_uint16_pod.
35127 Use ZERO_COEFFS when emitting initializers.
35128 * data-streamer.h (bp_pack_poly_value): New function.
35129 (bp_unpack_poly_value): Likewise.
35130 * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
35131 for GET_MODE_NUNITS.
35132 * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
35133 for GET_MODE_NUNITS.
35134 * tree.c (make_vector_type): Remove temporary shim and make
35135 the real function take the number of units as a poly_uint64
35136 rather than an int.
35137 (build_vector_type_for_mode): Handle polynomial nunits.
35138 * dwarf2out.c (loc_descriptor, add_const_value_attribute): Likewise.
35139 * emit-rtl.c (const_vec_series_p_1): Likewise.
35140 (gen_rtx_CONST_VECTOR): Likewise.
35141 * fold-const.c (test_vec_duplicate_folding): Likewise.
35142 * genrecog.c (validate_pattern): Likewise.
35143 * optabs-query.c (can_vec_perm_var_p, can_mult_highpart_p): Likewise.
35144 * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
35145 * optabs.c (expand_vector_broadcast, expand_binop_directly): Likewise.
35146 (shift_amt_for_vec_perm_mask, expand_vec_perm_var): Likewise.
35147 (expand_vec_cond_expr, expand_mult_highpart): Likewise.
35148 * rtlanal.c (subreg_get_info): Likewise.
35149 * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
35150 (vect_grouped_load_supported): Likewise.
35151 * tree-vect-generic.c (type_for_widest_vector_mode): Likewise.
35152 * tree-vect-loop.c (have_whole_vector_shift): Likewise.
35153 * simplify-rtx.c (simplify_unary_operation_1): Likewise.
35154 (simplify_const_unary_operation, simplify_binary_operation_1)
35155 (simplify_const_binary_operation, simplify_ternary_operation)
35156 (test_vector_ops_duplicate, test_vector_ops): Likewise.
35157 (simplify_immed_subreg): Use GET_MODE_NUNITS on a fixed_size_mode
35158 instead of CONST_VECTOR_NUNITS.
35159 * varasm.c (output_constant_pool_2): Likewise.
35160 * rtx-vector-builder.c (rtx_vector_builder::build): Only include the
35161 explicit-encoded elements in the XVEC for variable-length vectors.
35163 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35165 * lra-constraints.c (curr_insn_transform): Use partial_subreg_p.
35167 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35168 Alan Hayward <alan.hayward@arm.com>
35169 David Sherwood <david.sherwood@arm.com>
35171 * coretypes.h (fixed_size_mode): Declare.
35172 (fixed_size_mode_pod): New typedef.
35173 * builtins.h (target_builtins::x_apply_args_mode)
35174 (target_builtins::x_apply_result_mode): Change type to
35175 fixed_size_mode_pod.
35176 * builtins.c (apply_args_size, apply_result_size, result_vector)
35177 (expand_builtin_apply_args_1, expand_builtin_apply)
35178 (expand_builtin_return): Update accordingly.
35180 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35182 * cse.c (hash_rtx_cb): Hash only the encoded elements.
35183 * cselib.c (cselib_hash_rtx): Likewise.
35184 * expmed.c (make_tree): Build VECTOR_CSTs directly from the
35185 CONST_VECTOR encoding.
35187 2018-01-03 Jakub Jelinek <jakub@redhat.com>
35188 Jeff Law <law@redhat.com>
35191 * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): For
35192 noreturn probe, use gen_pop instead of ix86_emit_restore_reg_using_pop,
35193 only set RTX_FRAME_RELATED_P on both the push and pop if cfa_reg is sp
35194 and add REG_CFA_ADJUST_CFA notes in that case to both insns.
35197 * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): Do not
35198 explicitly probe *sp in a noreturn function if there were any callee
35199 register saves or frame pointer is needed.
35201 2018-01-03 Jakub Jelinek <jakub@redhat.com>
35204 * cfgexpand.c (expand_debug_expr): Return NULL if mode is
35205 BLKmode for ternary, binary or unary expressions.
35208 * var-tracking.c (delete_vta_debug_insn): New inline function.
35209 (delete_vta_debug_insns): Add USE_CFG argument, if true, walk just
35210 insns from get_insns () to NULL instead of each bb separately.
35211 Use delete_vta_debug_insn. No longer static.
35212 (vt_debug_insns_local, variable_tracking_main_1): Adjust
35213 delete_vta_debug_insns callers.
35214 * rtl.h (delete_vta_debug_insns): Declare.
35215 * final.c (rest_of_handle_final): Call delete_vta_debug_insns
35216 instead of variable_tracking_main.
35218 2018-01-03 Martin Sebor <msebor@redhat.com>
35220 PR tree-optimization/83603
35221 * calls.c (maybe_warn_nonstring_arg): Avoid accessing function
35222 arguments past the endof the argument list in functions declared
35223 without a prototype.
35224 * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call):
35225 Avoid checking when arguments are null.
35227 2018-01-03 Martin Sebor <msebor@redhat.com>
35230 * doc/extend.texi (attribute const): Fix a typo.
35231 * ipa-pure-const.c ((warn_function_const, warn_function_pure): Avoid
35232 issuing -Wsuggest-attribute for void functions.
35234 2018-01-03 Martin Sebor <msebor@redhat.com>
35236 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Use
35237 offset_int::from instead of wide_int::to_shwi.
35238 (maybe_diag_overlap): Remove assertion.
35239 Use HOST_WIDE_INT_PRINT_DEC instead of %lli.
35240 * gimple-ssa-sprintf.c (format_directive): Same.
35241 (parse_directive): Same.
35242 (sprintf_dom_walker::compute_format_length): Same.
35243 (try_substitute_return_value): Same.
35245 2018-01-03 Jeff Law <law@redhat.com>
35247 PR middle-end/83654
35248 * explow.c (anti_adjust_stack_and_probe_stack_clash): Test a
35249 non-constant residual for zero at runtime and avoid probing in
35250 that case. Reorganize code for trailing problem to mirror handling
35253 2018-01-03 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
35255 PR tree-optimization/83501
35256 * tree-ssa-strlen.c (get_string_cst): New.
35257 (handle_char_store): Call get_string_cst.
35259 2018-01-03 Martin Liska <mliska@suse.cz>
35261 PR tree-optimization/83593
35262 * tree-ssa-strlen.c: Include tree-cfg.h.
35263 (strlen_check_and_optimize_stmt): Add new argument cleanup_eh.
35264 (strlen_dom_walker): Add new member variable m_cleanup_cfg.
35265 (strlen_dom_walker::strlen_dom_walker): Initialize m_cleanup_cfg
35267 (strlen_dom_walker::before_dom_children): Call
35268 gimple_purge_dead_eh_edges. Dump tranformation with details
35270 (strlen_dom_walker::before_dom_children): Update call by adding
35271 new argument cleanup_eh.
35272 (pass_strlen::execute): Return TODO_cleanup_cfg if needed.
35274 2018-01-03 Martin Liska <mliska@suse.cz>
35277 * cif-code.def (VARIADIC_THUNK): New enum value.
35278 * ipa-fnsummary.c (compute_fn_summary): Do not inline variadic
35281 2018-01-03 Jan Beulich <jbeulich@suse.com>
35283 * sse.md (mov<mode>_internal): Tighten condition for when to use
35284 vmovdqu<ssescalarsize> for TI and OI modes.
35286 2018-01-03 Jakub Jelinek <jakub@redhat.com>
35288 Update copyright years.
35290 2018-01-03 Martin Liska <mliska@suse.cz>
35293 * ipa-visibility.c (function_and_variable_visibility): Skip
35294 functions with noipa attribure.
35296 2018-01-03 Jakub Jelinek <jakub@redhat.com>
35298 * gcc.c (process_command): Update copyright notice dates.
35299 * gcov-dump.c (print_version): Ditto.
35300 * gcov.c (print_version): Ditto.
35301 * gcov-tool.c (print_version): Ditto.
35302 * gengtype.c (create_file): Ditto.
35303 * doc/cpp.texi: Bump @copying's copyright year.
35304 * doc/cppinternals.texi: Ditto.
35305 * doc/gcc.texi: Ditto.
35306 * doc/gccint.texi: Ditto.
35307 * doc/gcov.texi: Ditto.
35308 * doc/install.texi: Ditto.
35309 * doc/invoke.texi: Ditto.
35311 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35313 * vector-builder.h (vector_builder::m_full_nelts): Change from
35314 unsigned int to poly_uint64.
35315 (vector_builder::full_nelts): Update prototype accordingly.
35316 (vector_builder::new_vector): Likewise.
35317 (vector_builder::encoded_full_vector_p): Handle polynomial full_nelts.
35318 (vector_builder::operator ==): Likewise.
35319 (vector_builder::finalize): Likewise.
35320 * int-vector-builder.h (int_vector_builder::int_vector_builder):
35321 Take the number of elements as a poly_uint64 rather than an
35323 * vec-perm-indices.h (vec_perm_indices::m_nelts_per_input): Change
35324 from unsigned int to poly_uint64.
35325 (vec_perm_indices::vec_perm_indices): Update prototype accordingly.
35326 (vec_perm_indices::new_vector): Likewise.
35327 (vec_perm_indices::length): Likewise.
35328 (vec_perm_indices::nelts_per_input): Likewise.
35329 (vec_perm_indices::input_nelts): Likewise.
35330 * vec-perm-indices.c (vec_perm_indices::new_vector): Take the
35331 number of elements per input as a poly_uint64 rather than an
35332 unsigned int. Use the original encoding for variable-length
35333 vectors, rather than clamping each individual element.
35334 For the second and subsequent elements in each pattern,
35335 clamp the step and base before clamping their sum.
35336 (vec_perm_indices::series_p): Handle polynomial element counts.
35337 (vec_perm_indices::all_in_range_p): Likewise.
35338 (vec_perm_indices_to_tree): Likewise.
35339 (vec_perm_indices_to_rtx): Likewise.
35340 * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise.
35341 * tree-vector-builder.c (tree_vector_builder::new_unary_operation)
35342 (tree_vector_builder::new_binary_operation): Handle polynomial
35343 element counts. Return false if we need to know the number
35344 of elements at compile time.
35345 * fold-const.c (fold_vec_perm): Punt if the number of elements
35346 isn't known at compile time.
35348 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35350 * vec-perm-indices.h (vec_perm_builder): Change element type
35351 from HOST_WIDE_INT to poly_int64.
35352 (vec_perm_indices::element_type): Update accordingly.
35353 (vec_perm_indices::clamp): Handle polynomial element_types.
35354 * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
35355 (vec_perm_indices::all_in_range_p): Likewise.
35356 (tree_to_vec_perm_builder): Check for poly_int64 trees rather
35358 * vector-builder.h (vector_builder::stepped_sequence_p): Handle
35359 polynomial vec_perm_indices element types.
35360 * int-vector-builder.h (int_vector_builder::equal_p): Likewise.
35361 * fold-const.c (fold_vec_perm): Likewise.
35362 * optabs.c (shift_amt_for_vec_perm_mask): Likewise.
35363 * tree-vect-generic.c (lower_vec_perm): Likewise.
35364 * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
35365 * config/aarch64/aarch64.c (aarch64_evpc_tbl): Cast d->perm
35366 element type to HOST_WIDE_INT.
35368 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35369 Alan Hayward <alan.hayward@arm.com>
35370 David Sherwood <david.sherwood@arm.com>
35372 * alias.c (addr_side_effect_eval): Take the size as a poly_int64
35373 rather than an int. Use plus_constant.
35374 (memrefs_conflict_p): Take the sizes as poly_int64s rather than ints.
35375 Take the offset "c" as a poly_int64 rather than a HOST_WIDE_INT.
35377 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35378 Alan Hayward <alan.hayward@arm.com>
35379 David Sherwood <david.sherwood@arm.com>
35381 * calls.c (emit_call_1, expand_call): Change struct_value_size from
35382 a HOST_WIDE_INT to a poly_int64.
35384 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35385 Alan Hayward <alan.hayward@arm.com>
35386 David Sherwood <david.sherwood@arm.com>
35388 * calls.c (load_register_parameters): Cope with polynomial
35389 mode sizes. Require a constant size for BLKmode parameters
35390 that aren't described by a PARALLEL. If BLOCK_REG_PADDING
35391 forces a parameter to be padded at the lsb end in order to
35392 fill a complete number of words, require the parameter size
35393 to be ordered wrt UNITS_PER_WORD.
35395 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35396 Alan Hayward <alan.hayward@arm.com>
35397 David Sherwood <david.sherwood@arm.com>
35399 * reload1.c (spill_stack_slot_width): Change element type
35400 from unsigned int to poly_uint64_pod.
35401 (alter_reg): Treat mode sizes as polynomial.
35403 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35404 Alan Hayward <alan.hayward@arm.com>
35405 David Sherwood <david.sherwood@arm.com>
35407 * reload.c (complex_word_subreg_p): New function.
35408 (reload_inner_reg_of_subreg, push_reload): Use it.
35410 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35411 Alan Hayward <alan.hayward@arm.com>
35412 David Sherwood <david.sherwood@arm.com>
35414 * lra-constraints.c (process_alt_operands): Reject matched
35415 operands whose sizes aren't ordered.
35416 (match_reload): Refer to this check here.
35418 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35419 Alan Hayward <alan.hayward@arm.com>
35420 David Sherwood <david.sherwood@arm.com>
35422 * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Assert
35423 that the mode size is in the set {1, 2, 4, 8, 16}.
35425 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35426 Alan Hayward <alan.hayward@arm.com>
35427 David Sherwood <david.sherwood@arm.com>
35429 * var-tracking.c (adjust_mems): Treat mode sizes as polynomial.
35430 Use plus_constant instead of gen_rtx_PLUS.
35432 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35433 Alan Hayward <alan.hayward@arm.com>
35434 David Sherwood <david.sherwood@arm.com>
35436 * config/cr16/cr16-protos.h (cr16_push_rounding): Declare.
35437 * config/cr16/cr16.h (PUSH_ROUNDING): Move implementation to...
35438 * config/cr16/cr16.c (cr16_push_rounding): ...this new function.
35439 * config/h8300/h8300-protos.h (h8300_push_rounding): Declare.
35440 * config/h8300/h8300.h (PUSH_ROUNDING): Move implementation to...
35441 * config/h8300/h8300.c (h8300_push_rounding): ...this new function.
35442 * config/i386/i386-protos.h (ix86_push_rounding): Declare.
35443 * config/i386/i386.h (PUSH_ROUNDING): Move implementation to...
35444 * config/i386/i386.c (ix86_push_rounding): ...this new function.
35445 * config/m32c/m32c-protos.h (m32c_push_rounding): Take and return
35447 * config/m32c/m32c.c (m32c_push_rounding): Likewise.
35448 * config/m68k/m68k-protos.h (m68k_push_rounding): Declare.
35449 * config/m68k/m68k.h (PUSH_ROUNDING): Move implementation to...
35450 * config/m68k/m68k.c (m68k_push_rounding): ...this new function.
35451 * config/pdp11/pdp11-protos.h (pdp11_push_rounding): Declare.
35452 * config/pdp11/pdp11.h (PUSH_ROUNDING): Move implementation to...
35453 * config/pdp11/pdp11.c (pdp11_push_rounding): ...this new function.
35454 * config/stormy16/stormy16-protos.h (xstormy16_push_rounding): Declare.
35455 * config/stormy16/stormy16.h (PUSH_ROUNDING): Move implementation to...
35456 * config/stormy16/stormy16.c (xstormy16_push_rounding): ...this new
35458 * expr.c (emit_move_resolve_push): Treat the input and result
35459 of PUSH_ROUNDING as a poly_int64.
35460 (emit_move_complex_push, emit_single_push_insn_1): Likewise.
35461 (emit_push_insn): Likewise.
35462 * lra-eliminations.c (mark_not_eliminable): Likewise.
35463 * recog.c (push_operand): Likewise.
35464 * reload1.c (elimination_effects): Likewise.
35465 * rtlanal.c (nonzero_bits1): Likewise.
35466 * calls.c (store_one_arg): Likewise. Require the padding to be
35467 known at compile time.
35469 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35470 Alan Hayward <alan.hayward@arm.com>
35471 David Sherwood <david.sherwood@arm.com>
35473 * expr.c (emit_single_push_insn_1): Treat mode sizes as polynomial.
35474 Use plus_constant instead of gen_rtx_PLUS.
35476 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35477 Alan Hayward <alan.hayward@arm.com>
35478 David Sherwood <david.sherwood@arm.com>
35480 * auto-inc-dec.c (set_inc_state): Take the mode size as a poly_int64
35481 rather than an int.
35483 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35484 Alan Hayward <alan.hayward@arm.com>
35485 David Sherwood <david.sherwood@arm.com>
35487 * expr.c (expand_expr_real_1): Use tree_to_poly_uint64
35488 instead of int_size_in_bytes when handling VIEW_CONVERT_EXPRs
35489 via stack temporaries. Treat the mode size as polynomial too.
35491 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35492 Alan Hayward <alan.hayward@arm.com>
35493 David Sherwood <david.sherwood@arm.com>
35495 * expr.c (expand_expr_real_2): When handling conversions involving
35496 unions, apply tree_to_poly_uint64 to the TYPE_SIZE rather than
35497 multiplying int_size_in_bytes by BITS_PER_UNIT. Treat GET_MODE_BISIZE
35498 as a poly_uint64 too.
35500 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35501 Alan Hayward <alan.hayward@arm.com>
35502 David Sherwood <david.sherwood@arm.com>
35504 * rtlanal.c (subreg_get_info): Handle polynomial mode sizes.
35506 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35507 Alan Hayward <alan.hayward@arm.com>
35508 David Sherwood <david.sherwood@arm.com>
35510 * combine.c (can_change_dest_mode): Handle polynomial
35511 REGMODE_NATURAL_SIZE.
35512 * expmed.c (store_bit_field_1): Likewise.
35513 * expr.c (store_constructor): Likewise.
35514 * emit-rtl.c (validate_subreg): Operate on polynomial mode sizes
35515 and polynomial REGMODE_NATURAL_SIZE.
35516 (gen_lowpart_common): Likewise.
35517 * reginfo.c (record_subregs_of_mode): Likewise.
35518 * rtlanal.c (read_modify_subreg_p): Likewise.
35520 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35521 Alan Hayward <alan.hayward@arm.com>
35522 David Sherwood <david.sherwood@arm.com>
35524 * internal-fn.c (expand_vector_ubsan_overflow): Handle polynomial
35525 numbers of elements.
35527 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35528 Alan Hayward <alan.hayward@arm.com>
35529 David Sherwood <david.sherwood@arm.com>
35531 * match.pd: Cope with polynomial numbers of vector elements.
35533 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35534 Alan Hayward <alan.hayward@arm.com>
35535 David Sherwood <david.sherwood@arm.com>
35537 * fold-const.c (fold_indirect_ref_1): Handle polynomial offsets
35538 in a POINTER_PLUS_EXPR.
35540 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35541 Alan Hayward <alan.hayward@arm.com>
35542 David Sherwood <david.sherwood@arm.com>
35544 * omp-simd-clone.c (simd_clone_subparts): New function.
35545 (simd_clone_init_simd_arrays): Use it instead of TYPE_VECTOR_SUBPARTS.
35546 (ipa_simd_modify_function_body): Likewise.
35548 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35549 Alan Hayward <alan.hayward@arm.com>
35550 David Sherwood <david.sherwood@arm.com>
35552 * tree-vect-generic.c (nunits_for_known_piecewise_op): New function.
35553 (expand_vector_piecewise): Use it instead of TYPE_VECTOR_SUBPARTS.
35554 (expand_vector_addition, add_rshift, expand_vector_divmod): Likewise.
35555 (expand_vector_condition, vector_element): Likewise.
35556 (subparts_gt): New function.
35557 (get_compute_type): Use subparts_gt.
35558 (count_type_subparts): Delete.
35559 (expand_vector_operations_1): Use subparts_gt instead of
35560 count_type_subparts.
35562 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35563 Alan Hayward <alan.hayward@arm.com>
35564 David Sherwood <david.sherwood@arm.com>
35566 * tree-vect-data-refs.c (vect_no_alias_p): Replace with...
35567 (vect_compile_time_alias): ...this new function. Do the calculation
35568 on poly_ints rather than trees.
35569 (vect_prune_runtime_alias_test_list): Update call accordingly.
35571 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35572 Alan Hayward <alan.hayward@arm.com>
35573 David Sherwood <david.sherwood@arm.com>
35575 * tree-vect-slp.c (vect_build_slp_tree_1): Handle polynomial
35577 (vect_schedule_slp_instance): Likewise.
35579 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35580 Alan Hayward <alan.hayward@arm.com>
35581 David Sherwood <david.sherwood@arm.com>
35583 * tree-vect-slp.c (vect_get_and_check_slp_defs): Reject
35584 constant and extern definitions for variable-length vectors.
35585 (vect_get_constant_vectors): Note that the number of units
35586 is known to be constant.
35588 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35589 Alan Hayward <alan.hayward@arm.com>
35590 David Sherwood <david.sherwood@arm.com>
35592 * tree-vect-stmts.c (vectorizable_conversion): Treat the number
35593 of units as polynomial. Choose between WIDE and NARROW based
35596 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35597 Alan Hayward <alan.hayward@arm.com>
35598 David Sherwood <david.sherwood@arm.com>
35600 * tree-vect-stmts.c (simd_clone_subparts): New function.
35601 (vectorizable_simd_clone_call): Use it instead of TYPE_VECTOR_SUBPARTS.
35603 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35604 Alan Hayward <alan.hayward@arm.com>
35605 David Sherwood <david.sherwood@arm.com>
35607 * tree-vect-stmts.c (vectorizable_call): Treat the number of
35608 vectors as polynomial. Use build_index_vector for
35609 IFN_GOMP_SIMD_LANE.
35611 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35612 Alan Hayward <alan.hayward@arm.com>
35613 David Sherwood <david.sherwood@arm.com>
35615 * tree-vect-stmts.c (get_load_store_type): Treat the number of
35616 units as polynomial. Reject VMAT_ELEMENTWISE and VMAT_STRIDED_SLP
35617 for variable-length vectors.
35618 (vectorizable_mask_load_store): Treat the number of units as
35619 polynomial, asserting that it is constant if the condition has
35620 already been enforced.
35621 (vectorizable_store, vectorizable_load): Likewise.
35623 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35624 Alan Hayward <alan.hayward@arm.com>
35625 David Sherwood <david.sherwood@arm.com>
35627 * tree-vect-loop.c (vectorizable_live_operation): Treat the number
35628 of units as polynomial. Punt if we can't tell at compile time
35629 which vector contains the final result.
35631 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35632 Alan Hayward <alan.hayward@arm.com>
35633 David Sherwood <david.sherwood@arm.com>
35635 * tree-vect-loop.c (vectorizable_induction): Treat the number
35636 of units as polynomial. Punt on SLP inductions. Use an integer
35637 VEC_SERIES_EXPR for variable-length integer reductions. Use a
35638 cast of such a series for variable-length floating-point
35641 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35642 Alan Hayward <alan.hayward@arm.com>
35643 David Sherwood <david.sherwood@arm.com>
35645 * tree.h (build_index_vector): Declare.
35646 * tree.c (build_index_vector): New function.
35647 * tree-vect-loop.c (get_initial_defs_for_reduction): Treat the number
35648 of units as polynomial, forcibly converting it to a constant if
35649 vectorizable_reduction has already enforced the condition.
35650 (vect_create_epilog_for_reduction): Likewise. Use build_index_vector
35651 to create a {1,2,3,...} vector.
35652 (vectorizable_reduction): Treat the number of units as polynomial.
35653 Choose vectype_in based on the largest scalar element size rather
35654 than the smallest number of units. Enforce the restrictions
35657 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35658 Alan Hayward <alan.hayward@arm.com>
35659 David Sherwood <david.sherwood@arm.com>
35661 * tree-vect-data-refs.c (vector_alignment_reachable_p): Treat the
35662 number of units as polynomial.
35664 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35665 Alan Hayward <alan.hayward@arm.com>
35666 David Sherwood <david.sherwood@arm.com>
35668 * target.h (vector_sizes, auto_vector_sizes): New typedefs.
35669 * target.def (autovectorize_vector_sizes): Return the vector sizes
35670 by pointer, using vector_sizes rather than a bitmask.
35671 * targhooks.h (default_autovectorize_vector_sizes): Update accordingly.
35672 * targhooks.c (default_autovectorize_vector_sizes): Likewise.
35673 * config/aarch64/aarch64.c (aarch64_autovectorize_vector_sizes):
35675 * config/arc/arc.c (arc_autovectorize_vector_sizes): Likewise.
35676 * config/arm/arm.c (arm_autovectorize_vector_sizes): Likewise.
35677 * config/i386/i386.c (ix86_autovectorize_vector_sizes): Likewise.
35678 * config/mips/mips.c (mips_autovectorize_vector_sizes): Likewise.
35679 * omp-general.c (omp_max_vf): Likewise.
35680 * omp-low.c (omp_clause_aligned_alignment): Likewise.
35681 * optabs-query.c (can_vec_mask_load_store_p): Likewise.
35682 * tree-vect-loop.c (vect_analyze_loop): Likewise.
35683 * tree-vect-slp.c (vect_slp_bb): Likewise.
35684 * doc/tm.texi: Regenerate.
35685 * tree-vectorizer.h (current_vector_size): Change from an unsigned int
35687 * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Take
35688 the vector size as a poly_uint64 rather than an unsigned int.
35689 (current_vector_size): Change from an unsigned int to a poly_uint64.
35690 (get_vectype_for_scalar_type): Update accordingly.
35691 * tree.h (build_truth_vector_type): Take the size and number of
35692 units as a poly_uint64 rather than an unsigned int.
35693 (build_vector_type): Add a temporary overload that takes
35694 the number of units as a poly_uint64 rather than an unsigned int.
35695 * tree.c (make_vector_type): Likewise.
35696 (build_truth_vector_type): Take the number of units as a poly_uint64
35697 rather than an unsigned int.
35699 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35700 Alan Hayward <alan.hayward@arm.com>
35701 David Sherwood <david.sherwood@arm.com>
35703 * target.def (get_mask_mode): Take the number of units and length
35704 as poly_uint64s rather than unsigned ints.
35705 * targhooks.h (default_get_mask_mode): Update accordingly.
35706 * targhooks.c (default_get_mask_mode): Likewise.
35707 * config/i386/i386.c (ix86_get_mask_mode): Likewise.
35708 * doc/tm.texi: Regenerate.
35710 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35711 Alan Hayward <alan.hayward@arm.com>
35712 David Sherwood <david.sherwood@arm.com>
35714 * omp-general.h (omp_max_vf): Return a poly_uint64 instead of an int.
35715 * omp-general.c (omp_max_vf): Likewise.
35716 * omp-expand.c (omp_adjust_chunk_size): Update call to omp_max_vf.
35717 (expand_omp_simd): Handle polynomial safelen.
35718 * omp-low.c (omplow_simd_context): Add a default constructor.
35719 (omplow_simd_context::max_vf): Change from int to poly_uint64.
35720 (lower_rec_simd_input_clauses): Update accordingly.
35721 (lower_rec_input_clauses): Likewise.
35723 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35724 Alan Hayward <alan.hayward@arm.com>
35725 David Sherwood <david.sherwood@arm.com>
35727 * tree-vectorizer.h (vect_nunits_for_cost): New function.
35728 * tree-vect-loop.c (vect_model_reduction_cost): Use it.
35729 * tree-vect-slp.c (vect_analyze_slp_cost_1): Likewise.
35730 (vect_analyze_slp_cost): Likewise.
35731 * tree-vect-stmts.c (vect_model_store_cost): Likewise.
35732 (vect_model_load_cost): Likewise.
35734 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35735 Alan Hayward <alan.hayward@arm.com>
35736 David Sherwood <david.sherwood@arm.com>
35738 * tree-vect-slp.c (vect_record_max_nunits, vect_build_slp_tree_1)
35739 (vect_build_slp_tree_2, vect_build_slp_tree): Change max_nunits
35740 from an unsigned int * to a poly_uint64_pod *.
35741 (calculate_unrolling_factor): New function.
35742 (vect_analyze_slp_instance): Use it. Track polynomial max_nunits.
35744 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35745 Alan Hayward <alan.hayward@arm.com>
35746 David Sherwood <david.sherwood@arm.com>
35748 * tree-vectorizer.h (_slp_instance::unrolling_factor): Change
35749 from an unsigned int to a poly_uint64.
35750 (_loop_vec_info::slp_unrolling_factor): Likewise.
35751 (_loop_vec_info::vectorization_factor): Change from an int
35753 (MAX_VECTORIZATION_FACTOR): Bump from 64 to INT_MAX.
35754 (vect_get_num_vectors): New function.
35755 (vect_update_max_nunits, vect_vf_for_cost): Likewise.
35756 (vect_get_num_copies): Use vect_get_num_vectors.
35757 (vect_analyze_data_ref_dependences): Change max_vf from an int *
35758 to an unsigned int *.
35759 (vect_analyze_data_refs): Change min_vf from an int * to a
35761 (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
35762 than an unsigned HOST_WIDE_INT.
35763 * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr)
35764 (vect_analyze_data_ref_dependence): Change max_vf from an int *
35765 to an unsigned int *.
35766 (vect_analyze_data_ref_dependences): Likewise.
35767 (vect_compute_data_ref_alignment): Handle polynomial vf.
35768 (vect_enhance_data_refs_alignment): Likewise.
35769 (vect_prune_runtime_alias_test_list): Likewise.
35770 (vect_shift_permute_load_chain): Likewise.
35771 (vect_supportable_dr_alignment): Likewise.
35772 (dependence_distance_ge_vf): Take the vectorization factor as a
35773 poly_uint64 rather than an unsigned HOST_WIDE_INT.
35774 (vect_analyze_data_refs): Change min_vf from an int * to a
35776 * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Take
35777 vfm1 as a poly_uint64 rather than an int. Make the same change
35778 for the returned bound_scalar.
35779 (vect_gen_vector_loop_niters): Handle polynomial vf.
35780 (vect_do_peeling): Likewise. Update call to
35781 vect_gen_scalar_loop_niters and handle polynomial bound_scalars.
35782 (vect_gen_vector_loop_niters_mult_vf): Assert that the vf must
35784 * tree-vect-loop.c (vect_determine_vectorization_factor)
35785 (vect_update_vf_for_slp, vect_analyze_loop_2): Handle polynomial vf.
35786 (vect_get_known_peeling_cost): Likewise.
35787 (vect_estimate_min_profitable_iters, vectorizable_reduction): Likewise.
35788 (vect_worthwhile_without_simd_p, vectorizable_induction): Likewise.
35789 (vect_transform_loop): Likewise. Use the lowest possible VF when
35790 updating the upper bounds of the loop.
35791 (vect_min_worthwhile_factor): Make static. Return an unsigned int
35792 rather than an int.
35793 * tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Cope with
35794 polynomial unroll factors.
35795 (vect_analyze_slp_cost_1, vect_analyze_slp_instance): Likewise.
35796 (vect_make_slp_decision): Likewise.
35797 (vect_supported_load_permutation_p): Likewise, and polynomial
35799 (vect_analyze_slp_cost): Handle polynomial vf.
35800 (vect_slp_analyze_node_operations): Likewise.
35801 (vect_slp_analyze_bb_1): Likewise.
35802 (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
35803 than an unsigned HOST_WIDE_INT.
35804 * tree-vect-stmts.c (vectorizable_simd_clone_call, vectorizable_store)
35805 (vectorizable_load): Handle polynomial vf.
35806 * tree-vectorizer.c (simduid_to_vf::vf): Change from an int to
35808 (adjust_simduid_builtins, shrink_simd_arrays): Update accordingly.
35810 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35811 Alan Hayward <alan.hayward@arm.com>
35812 David Sherwood <david.sherwood@arm.com>
35814 * match.pd: Handle bit operations involving three constants
35815 and try to fold one pair.
35817 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
35819 * tree-vect-loop-manip.c: Include gimple-fold.h.
35820 (slpeel_make_loop_iterate_ntimes): Add step, final_iv and
35821 niters_maybe_zero parameters. Handle other cases besides a step of 1.
35822 (vect_gen_vector_loop_niters): Add a step_vector_ptr parameter.
35823 Add a path that uses a step of VF instead of 1, but disable it
35825 (vect_do_peeling): Add step_vector, niters_vector_mult_vf_var
35826 and niters_no_overflow parameters. Update calls to
35827 slpeel_make_loop_iterate_ntimes and vect_gen_vector_loop_niters.
35828 Create a new SSA name if the latter choses to use a ste other
35829 than zero, and return it via niters_vector_mult_vf_var.
35830 * tree-vect-loop.c (vect_transform_loop): Update calls to
35831 vect_do_peeling, vect_gen_vector_loop_niters and
35832 slpeel_make_loop_iterate_ntimes.
35833 * tree-vectorizer.h (slpeel_make_loop_iterate_ntimes, vect_do_peeling)
35834 (vect_gen_vector_loop_niters): Update declarations after above changes.
35836 2018-01-02 Michael Meissner <meissner@linux.vnet.ibm.com>
35838 * config/rs6000/rs6000.md (floor<mode>2): Add support for IEEE
35839 128-bit round to integer instructions.
35840 (ceil<mode>2): Likewise.
35841 (btrunc<mode>2): Likewise.
35842 (round<mode>2): Likewise.
35844 2018-01-02 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
35846 * config/rs6000/rs6000-string.c (expand_block_move): Allow the use of
35847 unaligned VSX load/store on P8/P9.
35848 (expand_block_clear): Allow the use of unaligned VSX
35849 load/store on P8/P9.
35851 2018-01-02 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
35853 * config/rs6000/rs6000-p8swap.c (swap_feeds_both_load_and_store):
35855 (rs6000_analyze_swaps): Mark a web unoptimizable if it contains a
35856 swap associated with both a load and a store.
35858 2018-01-02 Andrew Waterman <andrew@sifive.com>
35860 * config/riscv/linux.h (ICACHE_FLUSH_FUNC): New.
35861 * config/riscv/riscv.md (clear_cache): Use it.
35863 2018-01-02 Artyom Skrobov <tyomitch@gmail.com>
35865 * web.c: Remove out-of-date comment.
35867 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
35869 * expr.c (fixup_args_size_notes): Check that any existing
35870 REG_ARGS_SIZE notes are correct, and don't try to re-add them.
35871 (emit_single_push_insn_1): Move stack_pointer_delta adjustment to...
35872 (emit_single_push_insn): ...here.
35874 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
35876 * rtl.h (CONST_VECTOR_ELT): Redefine to const_vector_elt.
35877 (const_vector_encoded_nelts): New function.
35878 (CONST_VECTOR_NUNITS): Redefine to use GET_MODE_NUNITS.
35879 (const_vector_int_elt, const_vector_elt): Declare.
35880 * emit-rtl.c (const_vector_int_elt_1): New function.
35881 (const_vector_elt): Likewise.
35882 * simplify-rtx.c (simplify_immed_subreg): Avoid taking the address
35883 of CONST_VECTOR_ELT.
35885 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
35887 * expr.c: Include rtx-vector-builder.h.
35888 (const_vector_mask_from_tree): Use rtx_vector_builder and operate
35889 directly on the tree encoding.
35890 (const_vector_from_tree): Likewise.
35891 * optabs.c: Include rtx-vector-builder.h.
35892 (expand_vec_perm_var): Use rtx_vector_builder and create a repeating
35893 sequence of "u" values.
35894 * vec-perm-indices.c: Include rtx-vector-builder.h.
35895 (vec_perm_indices_to_rtx): Use rtx_vector_builder and operate
35896 directly on the vec_perm_indices encoding.
35898 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
35900 * doc/rtl.texi (const_vector): Describe new encoding scheme.
35901 * Makefile.in (OBJS): Add rtx-vector-builder.o.
35902 * rtx-vector-builder.h: New file.
35903 * rtx-vector-builder.c: Likewise.
35904 * rtl.h (rtx_def::u2): Add a const_vector field.
35905 (CONST_VECTOR_NPATTERNS): New macro.
35906 (CONST_VECTOR_NELTS_PER_PATTERN): Likewise.
35907 (CONST_VECTOR_DUPLICATE_P): Likewise.
35908 (CONST_VECTOR_STEPPED_P): Likewise.
35909 (CONST_VECTOR_ENCODED_ELT): Likewise.
35910 (const_vec_duplicate_p): Check for a duplicated vector encoding.
35911 (unwrap_const_vec_duplicate): Likewise.
35912 (const_vec_series_p): Check for a non-duplicated vector encoding.
35913 Say that the function only returns true for integer vectors.
35914 * emit-rtl.c: Include rtx-vector-builder.h.
35915 (gen_const_vec_duplicate_1): Delete.
35916 (gen_const_vector): Call gen_const_vec_duplicate instead of
35917 gen_const_vec_duplicate_1.
35918 (const_vec_series_p_1): Operate directly on the CONST_VECTOR encoding.
35919 (gen_const_vec_duplicate): Use rtx_vector_builder.
35920 (gen_const_vec_series): Likewise.
35921 (gen_rtx_CONST_VECTOR): Likewise.
35922 * config/powerpcspe/powerpcspe.c: Include rtx-vector-builder.h.
35923 (swap_const_vector_halves): Take an rtx pointer rather than rtx.
35924 Build a new vector rather than modifying a CONST_VECTOR in-place.
35925 (handle_special_swappables): Update call accordingly.
35926 * config/rs6000/rs6000-p8swap.c: Include rtx-vector-builder.h.
35927 (swap_const_vector_halves): Take an rtx pointer rather than rtx.
35928 Build a new vector rather than modifying a CONST_VECTOR in-place.
35929 (handle_special_swappables): Update call accordingly.
35931 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
35933 * simplify-rtx.c (simplify_const_binary_operation): Use
35934 CONST_VECTOR_ELT instead of XVECEXP.
35936 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
35938 * tree-cfg.c (verify_gimple_assign_ternary): Allow the size of
35939 the selector elements to be different from the data elements
35940 if the selector is a VECTOR_CST.
35941 * tree-vect-stmts.c (vect_gen_perm_mask_any): Use a vector of
35942 ssizetype for the selector.
35944 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
35946 * optabs.c (shift_amt_for_vec_perm_mask): Try using series_p
35947 before testing each element individually.
35948 * tree-vect-generic.c (lower_vec_perm): Likewise.
35950 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
35952 * selftest.h (selftest::vec_perm_indices_c_tests): Declare.
35953 * selftest-run-tests.c (selftest::run_tests): Call it.
35954 * vector-builder.h (vector_builder::operator ==): New function.
35955 (vector_builder::operator !=): Likewise.
35956 * vec-perm-indices.h (vec_perm_indices::series_p): Declare.
35957 (vec_perm_indices::all_from_input_p): New function.
35958 * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
35959 (test_vec_perm_12, selftest::vec_perm_indices_c_tests): Likewise.
35960 * fold-const.c (fold_ternary_loc): Use tree_to_vec_perm_builder
35961 instead of reading the VECTOR_CST directly. Detect whether both
35962 vector inputs are the same before constructing the vec_perm_indices,
35963 and update the number of inputs argument accordingly. Use the
35964 utility functions added above. Only construct sel2 if we need to.
35966 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
35968 * optabs.c (expand_vec_perm_var): Use an explicit encoding for
35969 the broadcast of the low byte.
35970 (expand_mult_highpart): Use an explicit encoding for the permutes.
35971 * optabs-query.c (can_mult_highpart_p): Likewise.
35972 * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Likewise.
35973 * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
35974 (vectorizable_bswap): Likewise.
35975 * tree-vect-data-refs.c (vect_grouped_store_supported): Use an
35976 explicit encoding for the power-of-2 permutes.
35977 (vect_permute_store_chain): Likewise.
35978 (vect_grouped_load_supported): Likewise.
35979 (vect_permute_load_chain): Likewise.
35981 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
35983 * vec-perm-indices.h (vec_perm_indices_to_tree): Declare.
35984 * vec-perm-indices.c (vec_perm_indices_to_tree): New function.
35985 * tree-ssa-forwprop.c (simplify_vector_constructor): Use it.
35986 * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
35987 * tree-vect-stmts.c (vectorizable_bswap): Likewise.
35988 (vect_gen_perm_mask_any): Likewise.
35990 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
35992 * int-vector-builder.h: New file.
35993 * vec-perm-indices.h: Include int-vector-builder.h.
35994 (vec_perm_indices): Redefine as an int_vector_builder.
35995 (auto_vec_perm_indices): Delete.
35996 (vec_perm_builder): Redefine as a stand-alone class.
35997 (vec_perm_indices::vec_perm_indices): New function.
35998 (vec_perm_indices::clamp): Likewise.
35999 * vec-perm-indices.c: Include fold-const.h and tree-vector-builder.h.
36000 (vec_perm_indices::new_vector): New function.
36001 (vec_perm_indices::new_expanded_vector): Update for new
36002 vec_perm_indices class.
36003 (vec_perm_indices::rotate_inputs): New function.
36004 (vec_perm_indices::all_in_range_p): Operate directly on the
36005 encoded form, without computing elided elements.
36006 (tree_to_vec_perm_builder): Operate directly on the VECTOR_CST
36007 encoding. Update for new vec_perm_indices class.
36008 * optabs.c (expand_vec_perm_const): Create a vec_perm_indices for
36009 the given vec_perm_builder.
36010 (expand_vec_perm_var): Update vec_perm_builder constructor.
36011 (expand_mult_highpart): Use vec_perm_builder instead of
36012 auto_vec_perm_indices.
36013 * optabs-query.c (can_mult_highpart_p): Use vec_perm_builder and
36014 vec_perm_indices instead of auto_vec_perm_indices. Use a single
36015 or double series encoding as appropriate.
36016 * fold-const.c (fold_ternary_loc): Use vec_perm_builder and
36017 vec_perm_indices instead of auto_vec_perm_indices.
36018 * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
36019 * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
36020 (vect_permute_store_chain): Likewise.
36021 (vect_grouped_load_supported): Likewise.
36022 (vect_permute_load_chain): Likewise.
36023 (vect_shift_permute_load_chain): Likewise.
36024 * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
36025 (vect_transform_slp_perm_load): Likewise.
36026 (vect_schedule_slp_instance): Likewise.
36027 * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
36028 (vectorizable_mask_load_store): Likewise.
36029 (vectorizable_bswap): Likewise.
36030 (vectorizable_store): Likewise.
36031 (vectorizable_load): Likewise.
36032 * tree-vect-generic.c (lower_vec_perm): Use vec_perm_builder and
36033 vec_perm_indices instead of auto_vec_perm_indices. Use
36034 tree_to_vec_perm_builder to read the vector from a tree.
36035 * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Take a
36036 vec_perm_builder instead of a vec_perm_indices.
36037 (have_whole_vector_shift): Use vec_perm_builder and
36038 vec_perm_indices instead of auto_vec_perm_indices. Leave the
36039 truncation to calc_vec_perm_mask_for_shift.
36040 (vect_create_epilog_for_reduction): Likewise.
36041 * config/aarch64/aarch64.c (expand_vec_perm_d::perm): Change
36042 from auto_vec_perm_indices to vec_perm_indices.
36043 (aarch64_expand_vec_perm_const_1): Use rotate_inputs on d.perm
36044 instead of changing individual elements.
36045 (aarch64_vectorize_vec_perm_const): Use new_vector to install
36046 the vector in d.perm.
36047 * config/arm/arm.c (expand_vec_perm_d::perm): Change
36048 from auto_vec_perm_indices to vec_perm_indices.
36049 (arm_expand_vec_perm_const_1): Use rotate_inputs on d.perm
36050 instead of changing individual elements.
36051 (arm_vectorize_vec_perm_const): Use new_vector to install
36052 the vector in d.perm.
36053 * config/powerpcspe/powerpcspe.c (rs6000_expand_extract_even):
36054 Update vec_perm_builder constructor.
36055 (rs6000_expand_interleave): Likewise.
36056 * config/rs6000/rs6000.c (rs6000_expand_extract_even): Likewise.
36057 (rs6000_expand_interleave): Likewise.
36059 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
36061 * optabs-query.c (can_vec_perm_var_p): Check whether lowering
36062 to qimode could truncate the indices.
36063 * optabs.c (expand_vec_perm_var): Likewise.
36065 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
36067 * Makefile.in (OBJS): Add vec-perm-indices.o.
36068 * vec-perm-indices.h: New file.
36069 * vec-perm-indices.c: Likewise.
36070 * target.h (vec_perm_indices): Replace with a forward class
36072 (auto_vec_perm_indices): Move to vec-perm-indices.h.
36073 * optabs.h: Include vec-perm-indices.h.
36074 (expand_vec_perm): Delete.
36075 (selector_fits_mode_p, expand_vec_perm_var): Declare.
36076 (expand_vec_perm_const): Declare.
36077 * target.def (vec_perm_const_ok): Replace with...
36078 (vec_perm_const): ...this new hook.
36079 * doc/tm.texi.in (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Replace with...
36080 (TARGET_VECTORIZE_VEC_PERM_CONST): ...this new hook.
36081 * doc/tm.texi: Regenerate.
36082 * optabs.def (vec_perm_const): Delete.
36083 * doc/md.texi (vec_perm_const): Likewise.
36084 (vec_perm): Refer to TARGET_VECTORIZE_VEC_PERM_CONST.
36085 * expr.c (expand_expr_real_2): Use expand_vec_perm_const rather than
36086 expand_vec_perm for constant permutation vectors. Assert that
36087 the mode of variable permutation vectors is the integer equivalent
36088 of the mode that is being permuted.
36089 * optabs-query.h (selector_fits_mode_p): Declare.
36090 * optabs-query.c: Include vec-perm-indices.h.
36091 (selector_fits_mode_p): New function.
36092 (can_vec_perm_const_p): Check whether targetm.vectorize.vec_perm_const
36093 is defined, instead of checking whether the vec_perm_const_optab
36094 exists. Use targetm.vectorize.vec_perm_const instead of
36095 targetm.vectorize.vec_perm_const_ok. Check whether the indices
36096 fit in the vector mode before using a variable permute.
36097 * optabs.c (shift_amt_for_vec_perm_mask): Take a mode and a
36098 vec_perm_indices instead of an rtx.
36099 (expand_vec_perm): Replace with...
36100 (expand_vec_perm_const): ...this new function. Take the selector
36101 as a vec_perm_indices rather than an rtx. Also take the mode of
36102 the selector. Update call to shift_amt_for_vec_perm_mask.
36103 Use targetm.vectorize.vec_perm_const instead of vec_perm_const_optab.
36104 Use vec_perm_indices::new_expanded_vector to expand the original
36105 selector into bytes. Check whether the indices fit in the vector
36106 mode before using a variable permute.
36107 (expand_vec_perm_var): Make global.
36108 (expand_mult_highpart): Use expand_vec_perm_const.
36109 * fold-const.c: Includes vec-perm-indices.h.
36110 * tree-ssa-forwprop.c: Likewise.
36111 * tree-vect-data-refs.c: Likewise.
36112 * tree-vect-generic.c: Likewise.
36113 * tree-vect-loop.c: Likewise.
36114 * tree-vect-slp.c: Likewise.
36115 * tree-vect-stmts.c: Likewise.
36116 * config/aarch64/aarch64-protos.h (aarch64_expand_vec_perm_const):
36118 * config/aarch64/aarch64-simd.md (vec_perm_const<mode>): Delete.
36119 * config/aarch64/aarch64.c (aarch64_expand_vec_perm_const)
36120 (aarch64_vectorize_vec_perm_const_ok): Fuse into...
36121 (aarch64_vectorize_vec_perm_const): ...this new function.
36122 (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
36123 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
36124 * config/arm/arm-protos.h (arm_expand_vec_perm_const): Delete.
36125 * config/arm/vec-common.md (vec_perm_const<mode>): Delete.
36126 * config/arm/arm.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
36127 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
36128 (arm_expand_vec_perm_const, arm_vectorize_vec_perm_const_ok): Merge
36130 (arm_vectorize_vec_perm_const): ...this new function. Explicitly
36131 check for NEON modes.
36132 * config/i386/i386-protos.h (ix86_expand_vec_perm_const): Delete.
36133 * config/i386/sse.md (VEC_PERM_CONST, vec_perm_const<mode>): Delete.
36134 * config/i386/i386.c (ix86_expand_vec_perm_const_1): Update comment.
36135 (ix86_expand_vec_perm_const, ix86_vectorize_vec_perm_const_ok): Merge
36137 (ix86_vectorize_vec_perm_const): ...this new function. Incorporate
36138 the old VEC_PERM_CONST conditions.
36139 * config/ia64/ia64-protos.h (ia64_expand_vec_perm_const): Delete.
36140 * config/ia64/vect.md (vec_perm_const<mode>): Delete.
36141 * config/ia64/ia64.c (ia64_expand_vec_perm_const)
36142 (ia64_vectorize_vec_perm_const_ok): Merge into...
36143 (ia64_vectorize_vec_perm_const): ...this new function.
36144 * config/mips/loongson.md (vec_perm_const<mode>): Delete.
36145 * config/mips/mips-msa.md (vec_perm_const<mode>): Delete.
36146 * config/mips/mips-ps-3d.md (vec_perm_constv2sf): Delete.
36147 * config/mips/mips-protos.h (mips_expand_vec_perm_const): Delete.
36148 * config/mips/mips.c (mips_expand_vec_perm_const)
36149 (mips_vectorize_vec_perm_const_ok): Merge into...
36150 (mips_vectorize_vec_perm_const): ...this new function.
36151 * config/powerpcspe/altivec.md (vec_perm_constv16qi): Delete.
36152 * config/powerpcspe/paired.md (vec_perm_constv2sf): Delete.
36153 * config/powerpcspe/spe.md (vec_perm_constv2si): Delete.
36154 * config/powerpcspe/vsx.md (vec_perm_const<mode>): Delete.
36155 * config/powerpcspe/powerpcspe-protos.h (altivec_expand_vec_perm_const)
36156 (rs6000_expand_vec_perm_const): Delete.
36157 * config/powerpcspe/powerpcspe.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK):
36159 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
36160 (altivec_expand_vec_perm_const_le): Take each operand individually.
36161 Operate on constant selectors rather than rtxes.
36162 (altivec_expand_vec_perm_const): Likewise. Update call to
36163 altivec_expand_vec_perm_const_le.
36164 (rs6000_expand_vec_perm_const): Delete.
36165 (rs6000_vectorize_vec_perm_const_ok): Delete.
36166 (rs6000_vectorize_vec_perm_const): New function.
36167 (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
36168 an element count and rtx array.
36169 (rs6000_expand_extract_even): Update call accordingly.
36170 (rs6000_expand_interleave): Likewise.
36171 * config/rs6000/altivec.md (vec_perm_constv16qi): Delete.
36172 * config/rs6000/paired.md (vec_perm_constv2sf): Delete.
36173 * config/rs6000/vsx.md (vec_perm_const<mode>): Delete.
36174 * config/rs6000/rs6000-protos.h (altivec_expand_vec_perm_const)
36175 (rs6000_expand_vec_perm_const): Delete.
36176 * config/rs6000/rs6000.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
36177 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
36178 (altivec_expand_vec_perm_const_le): Take each operand individually.
36179 Operate on constant selectors rather than rtxes.
36180 (altivec_expand_vec_perm_const): Likewise. Update call to
36181 altivec_expand_vec_perm_const_le.
36182 (rs6000_expand_vec_perm_const): Delete.
36183 (rs6000_vectorize_vec_perm_const_ok): Delete.
36184 (rs6000_vectorize_vec_perm_const): New function. Remove stray
36185 reference to the SPE evmerge intructions.
36186 (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
36187 an element count and rtx array.
36188 (rs6000_expand_extract_even): Update call accordingly.
36189 (rs6000_expand_interleave): Likewise.
36190 * config/sparc/sparc.md (vec_perm_constv8qi): Delete in favor of...
36191 * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): ...this
36193 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
36195 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
36197 * optabs.c (expand_vec_perm_1): Assert that SEL has an integer
36198 vector mode and that that mode matches the mode of the data
36200 (expand_vec_perm): Split handling of non-CONST_VECTOR selectors
36201 out into expand_vec_perm_var. Do all CONST_VECTOR handling here,
36202 directly using expand_vec_perm_1 when forcing selectors into
36204 (expand_vec_perm_var): New function, split out from expand_vec_perm.
36206 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
36208 * optabs-query.h (can_vec_perm_p): Delete.
36209 (can_vec_perm_var_p, can_vec_perm_const_p): Declare.
36210 * optabs-query.c (can_vec_perm_p): Split into...
36211 (can_vec_perm_var_p, can_vec_perm_const_p): ...these two functions.
36212 (can_mult_highpart_p): Use can_vec_perm_const_p to test whether a
36213 particular selector is valid.
36214 * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
36215 * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
36216 (vect_grouped_load_supported): Likewise.
36217 (vect_shift_permute_load_chain): Likewise.
36218 * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
36219 (vect_transform_slp_perm_load): Likewise.
36220 * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
36221 (vectorizable_bswap): Likewise.
36222 (vect_gen_perm_mask_checked): Likewise.
36223 * fold-const.c (fold_ternary_loc): Likewise. Don't take
36224 implementations of variable permutation vectors into account
36225 when deciding which selector to use.
36226 * tree-vect-loop.c (have_whole_vector_shift): Don't check whether
36227 vec_perm_const_optab is supported; instead use can_vec_perm_const_p
36228 with a false third argument.
36229 * tree-vect-generic.c (lower_vec_perm): Use can_vec_perm_const_p
36230 to test whether the constant selector is valid and can_vec_perm_var_p
36231 to test whether a variable selector is valid.
36233 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
36235 * optabs-query.h (can_vec_perm_p): Take a const vec_perm_indices *.
36236 * optabs-query.c (can_vec_perm_p): Likewise.
36237 * fold-const.c (fold_vec_perm): Take a const vec_perm_indices &
36238 instead of vec_perm_indices.
36239 * tree-vectorizer.h (vect_gen_perm_mask_any): Likewise,
36240 (vect_gen_perm_mask_checked): Likewise,
36241 * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise,
36242 (vect_gen_perm_mask_checked): Likewise,
36244 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
36246 * optabs-query.h (qimode_for_vec_perm): Declare.
36247 * optabs-query.c (can_vec_perm_p): Split out qimode search to...
36248 (qimode_for_vec_perm): ...this new function.
36249 * optabs.c (expand_vec_perm): Use qimode_for_vec_perm.
36251 2018-01-02 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
36253 * rtlanal.c (canonicalize_condition): Return 0 if final rtx
36254 does not have a conditional at the top.
36256 2018-01-02 Richard Biener <rguenther@suse.de>
36258 * ipa-inline.c (big_speedup_p): Fix expression.
36260 2018-01-02 Jan Hubicka <hubicka@ucw.cz>
36263 * config/i386/x86-tune-costs.h: Increase cost of integer load costs
36266 2018-01-02 Jan Hubicka <hubicka@ucw.cz>
36270 * x86-tune-costs.h (generic_cost): Reduce cost of FDIV 20->17,
36271 cost of sqrt 20->14, DIVSS 18->13, DIVSD 32->17, SQRtSS 30->14
36272 and SQRTsD 58->18, cond_not_taken_branch_cost. 2->1. Increase
36273 cond_taken_branch_cost 3->4.
36275 2018-01-01 Jakub Jelinek <jakub@redhat.com>
36277 PR tree-optimization/83581
36278 * tree-loop-distribution.c (pass_loop_distribution::execute): Return
36279 TODO_cleanup_cfg if any changes have been made.
36281 PR middle-end/83608
36282 * expr.c (store_expr_with_bounds): Use simplify_gen_subreg instead of
36283 convert_modes if target mode has the right side, but different mode
36286 PR middle-end/83609
36287 * expr.c (expand_assignment): Fix up a typo in simplify_gen_subreg
36288 last argument when extracting from CONCAT. If either from_real or
36289 from_imag is NULL, use expansion through memory. If result is not
36290 a CONCAT and simplify_gen_subreg fails, try to simplify_gen_subreg
36291 the parts directly to inner mode, if even that fails, use expansion
36294 PR middle-end/83623
36295 * expmed.c (expand_shift_1): For 2-byte rotates by BITS_PER_UNIT,
36296 check for bswap in mode rather than HImode and use that in expand_unop
36299 Copyright (C) 2018 Free Software Foundation, Inc.
36301 Copying and distribution of this file, with or without modification,
36302 are permitted in any medium without royalty provided the copyright
36303 notice and this notice are preserved.