re PR c++/63508 (ICE when using bracketed initializer on pointer to member function...
[official-gcc.git] / gcc / ChangeLog-2018
blobced3782493ad0a1df2f774ca045fcdffaf5d1c08
1 2018-12-31  Max Filippov  <jcmvbkbc@gmail.com>
3         PR target/86814
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
25         on code's intent.
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
33         type+fuzzy.
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
55         d_target_objs.
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>
63         PR ipa/88586
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
66         bfield.
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
76         undesirable warning.
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
95         non-LTO path.
97 2018-12-27  Martin Liska  <mliska@suse.cz>
99         PR gcov-profile/88225
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
127         and octeontx83.
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
143         parametrs.
145 2018-12-24  Jan Hubicka  <hubicka@ucw.cz>
147         PR lto/88140
148         * tree.c (fld_simplified_type): Temporarily disable array
149         simplification.
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
180         a few comments.
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
187         for c_strlen_data.
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>
196         PR 88346
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
222         output of nm.
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
229         and don’t exist.
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>
242         PR middle-end/85594
243         PR middle-end/88553
244         * omp-expand.c (extract_omp_for_update_vars): Regimplify the condition
245         if needed.
246         (expand_omp_for_generic): Don't clobber t temporary for ordered loops.
248 2018-12-15  Jan Hubicka  <hubicka@ucw.cz>
250         PR ipa/88561
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
262         definitions.
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>
274         PR target/88522
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
278         -masm=intel.
279         (gatherq_mode): Remove mode iterator.
280         (*avx512f_gathersi<mode>, *avx512f_gathersi<mode>_2): Use X instead
281         of <xtg_mode>.
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>
294         PR target/88556
295         * internal-fn.def (COSH): New.
296         (SINH): Ditto.
297         (TANH): Ditto.
298         * optabs.def (cosh_optab): New.
299         (sinh_optab): Ditto.
300         (tanh_optab): Ditto.
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.
309         (coshxf2): Ditto.
310         (cosh<mode>2): Ditto.
311         (tanhxf2): Ditto.
312         (tanh<mode>2): Ditto.
314 2018-12-21  Jakub Jelinek  <jakub@redhat.com>
316         PR target/88547
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
323         memory input.
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>
343         PR c/51628
344         * doc/invoke.texi: Document -Wno-address-of-packed-member.
346 2018-12-20  Vladimir Makarov  <vmakarov@redhat.com>
348         PR target/88457
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>
363         PR ipa/88214
364         * tree-ssa-alias.c (ao_ref_init_from_ptr_and_size): Assert that
365         ptr is a pointer.
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
374         parts.
375         (mem_ref_alloc): Take ao_ref parameter, initialize ref_canonical
376         member.
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>
384         PR target/88547
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
396         aarch64*-*-freebsd*
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
404         TARGET_AVX512F.
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
414         directive.
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>
432         PR c++/87504
433         * gcc-rich-location.c
434         (maybe_range_label_for_tree_type_mismatch::get_text): Move here from
435         c/c-typeck.c.
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
440         c/c-typeck.c.
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>
447         PR c++/43064
448         PR c++/43486
449         * convert.c: Include "selftest.h".
450         (preserve_any_location_wrapper): New function.
451         (convert_to_pointer_maybe_fold): Update to handle location
452         wrappers.
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
457         wrappers.
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
463         using TREE_OVERFLOW.
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
506         targets.
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>
517         PR target/88213
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
524         Revert
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
533         ssa-iterators.h.
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
545         MAX.
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
558         nvptx_propagate.
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
562         to nvptx_propagate.
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
580         oacc_bcast_size.
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
586         oacc_bcast_align.
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
601         nvptx_wsync.
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>
617         PR target/88541
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>
623         PR testsuite/86153
624         PR middle-end/83239
625         * vr-values.c
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
642         non_reload_pseudos.
644 2018-12-18  Jakub Jelinek  <jakub@redhat.com>
646         PR target/88464
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>
682         PR target/88513
683         PR target/88514
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
697         scalar mode.
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
712         HWI_COMPUTABLE.
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>
722         PR target/87870
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
751         predicate vars.
753 2018-12-17  Steve Ellcey  <sellcey@cavium.com>
755         * config/aarch64/aarch64-protos.h (aarch64_use_simple_return_insn_p):
756         New prototype.
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>
789         PR target/88502
790         * internal-fn.def (ACOSH): New.
791         (ASINH): Ditto.
792         (ATANH): Ditto.
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.
804         (acoshxf2): Ditto.
805         (acosh<mode>2): Ditto.
806         (atanhxf2): 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>
817         PR debug/79342
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
830         n_counts parametrs.
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
846         at -O3.
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
854         block parameter.
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
860         range_includes_p.
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
869         are not streamed in.
871 2018-12-15  H.J. Lu  <hongjiu.lu@intel.com>
873         PR target/88483
874         * config/i386/i386.c (ix86_finalize_stack_frame_flags): Revert
875         reversion 267133.
877 2018-12-15  Jan Hubicka  <hubicka@ucw.cz>
879         * ipa-fnsummary.c (analyze_function_body): Do not loeak conds and
880         size_time_table.
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
894         predicate.
896 2018-12-15  Jan Hubicka  <hubicka@ucw.cz>
898         * ipa-utils.c (ipa_merge_profiles): Do no merging when source function
899         has zero count.
901 2018-12-15  Jakub Jelinek  <jakub@redhat.com>
903         PR tree-optimization/88464
904         PR target/88498
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
909         mask type.
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
914         to be the same.
916 2018-12-15  Jan Hubicka  <hubicka@ucw.cz>
918         * ipa.c (cgraph_build_static_cdtor_1): Add OPTIMIZATION and TARGET
919         parameters.
920         (cgraph_build_static_cdtor): Update.
921         (build_cdtor): Use OPTIMIZATION and TARGET of the first real cdtor
922         callsed.
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>
932         PR target/88489
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>
960         PR web/79738
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>
981         PR c++/82294
982         PR c++/87436
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
993         bytes.
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
1003         insn.
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.
1012         (Tu): Likewise.
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
1031         reload.
1033 2018-12-14  Uros Bizjak  <ubizjak@gmail.com>
1035         PR target/88474
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>
1060         PR target/88483
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
1081         variable.
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
1120         edge_info.
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
1165         non-NULL.
1166         (rs6000_arg_partial_bytes): Same.
1168 2018-12-13  Jason Merrill  <jason@redhat.com>
1170         * gdbinit.in (pp): New macro.
1171         (pbb): Remove.
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
1186         s390_vcdlgb.
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
1197         behavior.
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
1205         cascadelake.
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>
1215         PR target/88465
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.
1220         PR target/88461
1221         * config/i386/sse.md (VI1248_AVX512VLBW, AVX512ZEXTMASK): New
1222         mode iterators.
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
1231         define_insns.
1233         PR target/88461
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
1262         defined.
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>
1272         PR target/86806
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>
1279         PR target/88343
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
1311         per sysv.
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>
1344         PR target/88425
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>
1350         PR middle-end/88448
1351         PR middle-end/88415
1352         * gimple.c (gimple_assign_set_rhs_with_ops): Revert previous
1353         change.
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>
1359         PR target/87369
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>
1372         PR lto/86004
1373         * doc/sourcebuild.texi (lto_incremental): Document new effective
1374         target.
1376 2018-12-11  Segher Boessenkool  <segher@kernel.crashing.org>
1378         PR target/88145
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>
1416         PR target/88418
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
1425         MEM_REF case.
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
1434         to Inf +- 1.
1436 2018-12-10  Martin Jambor  <mjambor@suse.cz>
1438         PR ipa/88214
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>
1444         PR middle-end/88415
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>
1454         PR bootstrap/65725
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
1474         d_target_objs.
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
1483         zero profile count.
1485 2018-12-08  Jakub Jelinek  <jakub@redhat.com>
1487         PR fortran/88304
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
1490         lhs.
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>
1506         PR target/87496
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
1516         sve_width entry.
1517         (aarch64_parse_sve_width_string): Define.
1519 2018-12-07  Jeff Law  <law@redhat.com>
1521         PR middle-end/87813
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
1543         field.
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):
1549         Specify sve_width.
1550         (aarch64_estimated_poly_value): Define.
1551         (TARGET_ESTIMATED_POLY_VALUE): Define.
1553 2018-12-07  Paul A. Clarke  <pc@us.ibm.com>
1555         PR target/88408
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
1562         NO_REGS.
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
1568         operand.
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
1574         iterator.
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>
1588         PR target/85593
1589         * final.c (rest_of_handle_final): Don't call collect_fn_hard_reg_usage
1590         for functions with naked attribute.
1592         PR c/88367
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
1605         with NULL src_elt.
1607 2018-12-06  Paul A. Clarke  <pc@us.ibm.com>
1609         PR target/88316
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>
1615         PR target/88316
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
1633         change).
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>
1664         PR c++/87380
1665         * config/darwin.h (TARGET_WEAK_NOT_IN_ARCHIVE_TOC) Remove, use the
1666         default.
1667         * config/rs6000/darwin7.h (TARGET_WEAK_NOT_IN_ARCHIVE_TOC): New.
1669 2018-12-06  Vladimir Makarov  <vmakarov@redhat.com>
1671         PR target/88282
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
1687         tree to gimple.
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
1691         in an ASM_EXPR.
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>
1698         PR inline-asm/55681
1699         * doc/extend.texi (Basic Asm): Update grammar.
1700         (Extended Asm): Update grammar.
1702 2018-12-06  Iain Sandoe  <iain@sandoe.co.uk>
1704         PR target/78444
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>
1711         PR target/87598
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
1723         bitmap_release.
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.
1732         Use bitmap_release.
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
1744         the obstack member.
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.
1759         PR fortran/88304
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
1766         default. 
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>
1776         PR c/87028
1777         * calls.c (get_attr_nonstring_decl): Avoid setting *REF to
1778         SSA_NAME_VAR.
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
1818         fixes.
1819         (merge_loop_tree, bb_prevents_fusion_p, unroll_jam_possible_p,
1820         fuse_loops): Formatting fixes.
1822         PR sanitizer/88333
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>
1849         PR c/82967
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>
1858         PR target/88188
1859         * config/rs6000/rs6000.c (ccr_bit): Return -1 instead of assertion
1860         failures.
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
1865         return -1.
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>
1873         PR target/61976
1874         * config/rs6000/rs6000.c (rs6000_function_arg): Don't pass aggregates
1875         in FPRs on AIX.
1876         (rs6000_arg_partial_bytes): Same.
1878 2018-12-04  Vladimir Makarov  <vmakarov@redhat.com>
1880         PR target/88282
1881         * ira-costs.c (exec): Try bigger class to use smaller register
1882         move cost.
1884 2018-12-04  Michael Ploujnikov  <michael.ploujnikov@oracle.com>
1886         PR ipa/88297
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>
1910         PR c/59039
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
1926         warnings quiet.
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
1941         anchors.
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
1951         gcc_unreachable.
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
1958         for the operand.
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>
1967         PR target/80080
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>
1982         PR target/88278
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.
2011         PR sanitizer/88291
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
2018         boundaries.
2020 2018-12-01  Jakub Jelinek  <jakub@redhat.com>
2022         PR sanitizer/88289
2023         * asan.c (asan_redzone_buffer::flush_redzone_payload): Fix up
2024         an off-by-one for BYTES_BIG_ENDIAN.
2026         PR target/54589
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
2035         function location.
2036         * profile-count.c (profile_count::dump): Add handling for precise
2037         profile quality.
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.
2051         PR testsuite/85368
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>
2065         PR middle-end/64242
2066         * builtins.c (expand_builtin_longjmp): Use a temporary when restoring
2067         the frame pointer.
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
2074         rich_location *.
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
2087         tree decl.
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
2097         clone per function.
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;
2106         hash map.
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>
2134         PR sanitizer/81715
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
2156         double constants.
2157         * config/rs6000/rs6000.md (mov<mode>_softfloat <FMOVE128>): Adjust
2158         length attribute.
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
2168         const_double modes.
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
2175         TYPE_MIN/MAX_VALUE.
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>
2208         PR target/87807
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>
2241         PR target/88152
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.
2249         PR target/54700
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>
2258         PR target/87496
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>
2272         PR c/88172
2273         PR testsuite/88208
2274         * doc/extend.texi (attribute constructor): Clarify.
2276 2018-11-29  Martin Liska  <mliska@suse.cz>
2278         PR middle-end/88246
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
2293         flag_live_patching.
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>
2302         PR target/54700
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.
2309         PR target/88152
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.
2317         PR target/88234
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
2321         doesn't wrap.
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>
2338         PR target/88224
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
2362         const_double.
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
2374         insn lengths.
2376 2018-11-29  Alan Modra  <amodra@gmail.com>
2378         * config/rs6000/predicates.md (easy_vector_constant): Don't call
2379         easy_fp_constant.
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
2413         call alternatives.
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
2427         handling.
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):
2482         New functions.
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
2521         of extra precision.
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>
2535         PR target/88207
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
2552         insns.
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>
2597         PR target/88189
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
2605         only when exists.
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
2616         here.
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
2625         `mno-fix-r5900'.
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>
2632         PR target/88188
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
2645         to move_by_pieces.
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
2691         type.
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
2698         cpu here.
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
2796         locations.
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
2823         locations.
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
2830         dump_loc.
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
2835         dump_loc_immediate.
2836         * profile.c (compute_branch_probabilities): Update for change to
2837         dump_printf_loc.
2838         * selftest.h (ASSERT_STR_CONTAINS_AT): New macro.
2839         * tree-vect-slp.c (vect_print_slp_tree): Update for change to
2840         dump_printf_loc.
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>
2875         PR 87756
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>
2903         PR target/88195
2904         * config/i386/i386.c (def_builtin2): If tcode == VOID_FTYPE_UINT64
2905         and !TARGET_64BIT, return NULL_TREE.
2907         PR c++/86900
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>
2914         PR target/58397
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>
2937         PR target/88178
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>
2946         PR c/57182
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>
2983         PR c/57166
2984         * doc/invoke.texi (Option Summary): Add -Wmissing-noreturn.
2985         (Warning Options): Likewise.
2987 2018-11-25  Sandra Loosemore  <sandra@codesourcery.com>
2989         PR web/79738
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>
2999         PR other/54265
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>
3018         PR bootstrap/88157
3019         * ira-costs.c (record_operand_costs): Initiate register move cost
3020         for mode.
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>
3030         PR bootstrap/88157
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
3053         for GCC 9.
3054         * config/aarch64/aarch64.c (xgene1_tunings): Add Xgene1 specific
3055         prefetch tunings.
3056         * config/aarch64/aarch64.c (xgene1_addrcost_table): Correct the post-modify
3057         costs.
3058         * config/arm/aarch-cost-tables.h (xgene1_extra_costs): Update the cost table
3059         for XGene1.
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
3077         checks.
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>
3096         PR c/53608
3097         * doc/extend.texi (Designated Inits): Clarify handling of multiple
3098         initializers for unions.
3100 2018-11-22  Jan Hubicka  <jh@suse.cz>
3102         PR lto/88142
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):
3118         Formatting fixes.
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
3156         pattern name.
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
3165         possible.
3166         (legitimize_pic_address): Expose above new parameters in prototype and
3167         adapt recursive calls accordingly.  Use pic_reg if non null instead of
3168         cached one.
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
3171         prototype.
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
3177         change.
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
3182         prototype change.
3183         (builtin_setjmp_receiver expander): Adapt to thumb1_expand_prologue
3184         prototype change.
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
3195         pattern name.
3196         (stack_protect_set): Clarify that the operand for guard's address is
3197         legal.
3198         (stack_protect_combined_test): Document new standard pattern name.
3199         (stack_protect_test): Clarify that the operand for guard's address is
3200         legal.
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>
3212         PR lto/87229
3213         PR lto/88112
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.
3223         Revert
3224         PR lto/87229
3225         * tree.c (free_lang_data_in_one_sizepos): Free non-gimple-val
3226         sizepos values.
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>
3236         PR target/85644
3237         PR target/86832
3238         * config/i386/i386.c (ix86_option_override_internal): Default
3239         ix86_stack_protector_guard to SSP_TLS only if TARGET_THREAD_SSP_OFFSET
3240         is defined.
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>
3247         PR sanitizer/88017
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>
3253         Revert the revert:
3254         2013-10-26  Vladimir Makarov  <vmakarov@redhat.com>
3256         Revert:
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>
3263         PR middle-end/88129
3264         * function.c (expand_function_end): Do not emit extra blockage insn.
3266 2018-11-21  Lokesh Janghel  <lokeshjanghel91@gmail.com>
3268         PR target/85667
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>
3274         PR lto/87957
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>
3294         PR target/87839
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>
3300         PR middle-end/84877
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>
3308         PR bootstrap/88133
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>
3320         PR target/87317
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>
3367         PR driver/79855
3368         * params.def (HOT_BB_COUNT_FRACTION): Terminate help message with
3369         period.
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
3378         modifier A.
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>
3390         PR lto/84044
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>
3405         PR target/88070
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>
3423         PR lto/87957
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>
3437         PR 87926
3438         * Makefile.in (bitmap.o-warn): Use -Wno-error=array-bounds.
3440 2018-11-20  Jan Hubicka  <hubicka@ucw.cz>
3442         PR lto/87997
3443         * tree.c (free_lang_data_in_cgraph): Add argument fld; break out
3444         type checking to...
3445         (free_lang_data) ... here; update call of free_lang_data_in_cgraph.
3447 2018-11-20  Jan Hubicka  <hubicka@ucw.cz>
3449         PR ipa/87706
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
3472         backedges.
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>
3482         PR target/88083
3483         * config/s390/s390.md: Skip LT(G) peephole when literal pool is
3484         involved.
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>
3490         PR middle-end/83215
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
3499         call fntype.
3500         * tree-ssa-sccvn.c (copy_reference_ops_from_call): Remember
3501         call fntype.
3503 2018-11-20  Richard Biener  <rguenther@suse.de>
3505         PR middle-end/88089
3506         * tree-data-ref.c (lambda_matrix_right_hermite): Use abs_hwi.
3508 2018-11-19  Jan Hubicka  <hubicka@ucw.cz>
3510         PR lto/87957
3511         * ipa-devirt.c (free_enum_values): Do not ICE on ODR vilations.
3513 2018-11-19  Sandra Loosemore  <sandra@codesourcery.com>
3515         PR driver/50250
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
3551         function.
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
3569         optinfo-emit-json.h
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
3578         decl of opt_pass.
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
3593         dump_context.
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
3602         dump_context.
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.
3612         PR debug/87039
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>
3638         PR lto/87229
3639         * tree.c (free_lang_data_in_one_sizepos): Free non-gimple-val
3640         sizepos values.
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>
3665         PR other/40498
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>
3688         PR driver/31357
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>
3702         PR c++/4225
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>
3708         PR c++/4025
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>
3722         PR ipa/87957
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
3737         gcc_assert.
3739 2018-11-16  Sandra Loosemore  <sandra@codesourcery.com>
3741         PR middle-end/23197
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>
3747         PR target/87927
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
3751         the byte_op hook.
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
3771         1's.
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
3777         power8 fusion here.
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
3787         fusion support.
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>
3823         PR target/88051
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>
3830         PR middle-end/88032
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
3883         assembler.
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>
3899         PR c++/25759
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>
3905         PR c++/87541
3906         PR c++/87542
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>
3927         PR other/19165
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
3959         for dump_enabled_p.
3960         * graphite-sese-to-poly.c (build_poly_scop): Likewise.
3962 2018-11-15  Richard Biener  <rguenther@suse.de>
3964         PR middle-end/88029
3965         * gimple.c (gimple_call_flags): Union flags from decl, type
3966         and call fntype.
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>
3998         PR middle-end/87917
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>
4017         PR other/56334
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
4026         as an lvalue.
4028 2018-11-14  Sandra Loosemore  <sandra@codesourcery.com>
4030         PR lto/55102
4031         PR lto/56700
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>
4039         PR middle-end/59658
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>
4054         PR debug/88006
4055         PR debug/87462
4056         * dwarf2out.c (dwarf2out_finish): Apply resolve_addr to comdat
4057         type list.
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.
4068         PR bootstrap/86739
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>
4095         PR middle-end/86575
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>
4103         PR middle-end/87985
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>
4111         PR middle-end/88021
4112         * tree-data-ref.c (lambda_matrix_row_add): Change const1 argument
4113         to lambda_int.
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.
4169         ("k"): Likewise.
4170         ("e"): Likewise.
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.
4175         (arc_lp): Likewise.
4176         (dbnz): Likewise.
4177         (stack_tie): Remove 'b' constraint letter.
4178         (R4_REG): Define.
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.
4184         (Rgp): Remove.
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
4198         and external defs.
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
4249         start_dying sets.
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):
4267         Rename to...
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
4295         reduction.
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>
4338         PR ipa/87955
4339         * ipa-inline.c (report_inline_failed_reason): Guard calls to
4340         cl_target_option_print_diff and cl_optimization_print_diff with
4341         if (dump_file).
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
4364         handles.
4366 2018-11-13  Martin Liska  <mliska@suse.cz>
4368         PR tree-optimization/87885
4369         * cfghooks.c (account_profile_record): Rename
4370         to ...
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
4376         all tuples.
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
4382         after_pass flag.
4383         * passes.c (check_profile_consistency): Do only
4384         checking.
4385         (account_profile): Calculate size and time of
4386         function only.
4387         (pass_manager::dump_profile_report): Reformat
4388         output.
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>
4398         PR sanitizer/87930
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
4406         poly_uint64.
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
4416         poly int.
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
4423         poly_uint64.
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
4427         int.
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
4430         a poly int.
4431         (vectorizable_store): Likewise.
4432         (vectorizable_load): Likweise.
4433         * tree-vectorizer.h (struct dr_vec_info): Make target_alignment field a
4434         poly_uint64.
4435         (vect_known_alignment_in_bytes): Adapt to vector alignment being a
4436         poly int.
4437         (vect_can_force_dr_alignment_p): Change alignment parameter type to
4438         poly_uint64.
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
4475         new implementation.
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
4488         is on.
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
4502         instructions.
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
4556         offset for PRE_DEC.
4557         (rs6000_secondary_reload_gpr): Don't call find_replacement.
4559 2018-11-13  Sandra Loosemore  <sandra@codesourcery.com>
4561         PR middle-end/59634
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
4579         description.
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
4590         documentation to...
4591         (Pragmas): ...here.
4592         * doc/extend.texi (Pragmas): Note additional pragmas documented
4593         in the CPP manual.
4595 2018-11-13  Kugan Vivekanandarajah  <kuganv@linaro.org>
4597         PR middle-end/86677
4598         PR middle-end/87528
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
4610         options.
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>
4621         PR target/87903
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>
4627         PR middle-end/21110
4628         * doc/rtl.texi (Constants): Clarify that mode of "high" doesn't
4629         have to be Pmode.
4630         (Arithmetic): Likewise for "lo_sum".
4632 2018-11-12  Renlin Li  <renlin.li@arm.com>
4634         PR target/87815
4635         * dse.c (get_stored_val): Add check for compile-time constantness
4636         of gap.
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
4644         sb and predres.
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
4671         if required.
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
4693         handling.
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):
4701         Likewise.
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):
4740         Use set_varying.
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>
4780         PR c/69502
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
4788         -frounding-math.
4790 2018-11-11  Sandra Loosemore  <sandra@codesourcery.com>
4792         PR c++/43105
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>
4798         PR c/26366
4799         * doc/extend.texi (Other Builtins): Document probability associated
4800         with __builtin_expect.
4802 2018-11-11  Uros Bizjak  <ubizjak@gmail.com>
4804         PR target/87928
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
4825         from...
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
4838         from...
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 *
4842         for m_vr.
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>
4857         PR middle-end/65703
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>
4869         PR target/87221
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>
4875         PR driver/41179
4876         PR middle-end/65703
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>
4888         PR target/87762
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
4894         addression.
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>
4920         PR middle-end/81824
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
4955         to ...
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):
4961         Likewise.
4962         * ipa.c (ipa_discover_readonly_nonaddressable_vars): Renamed to
4963         ...
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
4967         optimization level.
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
5014         handled by aliases.
5015         (generic_vfp): Likewise.
5016         * config/arm/arm1020e.md: Simplify tuning selection based on alias
5017         changes.
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.
5041         PR target/87793
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
5048         directly.
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.
5101         (PTA_PTWRITE): Add.
5102         * config/i386/i386.md: Define ptwrite.
5103         * config/i386/i386.opt: Add -mptwrite.
5104         * config/i386/immintrin.h (_ptwrite64): Add.
5105         (_ptwrite32): 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>
5118         PR other/36572
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):
5141         Add hook.
5142         (pdp11_expand_prologue, pdp11_expand_epilogue): Rewrite for new
5143         frame layout.
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
5151         value.
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
5158         offset.
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
5173         constraints.
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.
5185         (return): Delete.
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
5221         of aliases.
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
5242         instead of GSS_OMP.
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
5249         comments.
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
5254         GIMPLE_OMP_TEAMS.
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
5292         ORT_TASKGROUP.
5293         (omp_default_clause): Print "taskloop" rather than "task" if
5294         ORT_*TASKLOOP.
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
5310         lastprivate.
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
5374         task reductions.
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
5381         depend clauses.
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
5387         reductions.
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.
5403         Fix comment typos.
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
5410         in outer contexts.
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
5419         needed.
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
5442         clauses.
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
5451         contexts.
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
5458         modifiers.
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):
5503         Define.
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>
5531         PR ipa/86395
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
5535         API.
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
5559         cgraph_node *.
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>
5567         PR middle-end/87916
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>
5610         PR middle-end/42726
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>
5620         PR driver/80828
5621         * doc/invoke.texi (Option Summary): Add -e and --entry.
5622         (Link Options): Likewise.
5624 2018-11-07  Nathan Sidwell  <nathan@acm.org>
5626         PR 87926
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>
5636         PR c/87691
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
5640         reference.
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
5685         TYPE_DECL.
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
5691         of nested cycles.
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
5696         def cases.
5697         (vectorizable_shift): Export and handle being called as
5698         vect_nested_cycle.
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
5734         the 2EF/EXT block.
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
5760         gs264e.
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
5780         gs464e.
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
5802         TUNE_LOONGSON_3A.
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
5809         TARGET_LOONGSON_3A.
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
5840         -mloongson-ext.
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
5869         -mloongson-mmi.
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
5875         loongson.md.
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>
5881         PR lto/87906
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
5889         const wide ints.
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
5901         the UNSPEC.
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>
5931         PR target/87762
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
5946         dump-scope ...
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>
5961         PR sanitizer/80953
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
5989         langhooks.
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>
5999         PR target/87723
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>
6005         PR middle-end/18041
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
6014         debug insns.
6015         (merge_in_block): Track uses in debug insns.
6016         (pass_inc_dec::execute): Allocate and release
6017         reg_next_debug_use.
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
6098         argument.
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
6104         PHIs.
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.
6120         (LABEL): Likewise.
6121         (struct ggc_usage): Use SIZE_AMOUNT. And update
6122         compare method.
6123         * ggc-page.c (SCALE): Remove.
6124         (STAT_LABEL): Remove.
6125         (ggc_print_statistics): Use SIZE_AMOUNT.
6126         * gimple.h (SCALE): Remove.
6127         (LABEL): Likewise.
6128         * input.c (ONE_K): Remove.
6129         (ONE_M): Likewise.
6130         (SCALE): Likewise.
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.
6144         (ONE_M): Likewise.
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):
6161         Return T *.
6162         * vec.c (struct vec_usage): Register m_element_size.
6163         (vec_prefix::register_overhead): New arguments: elements and
6164         element_size.
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
6173         style.
6174         * vec.c: Likewise.
6176 2018-11-05  Richard Biener  <rguenther@suse.de>
6178         * tree-scalar-evolution.h (final_value_replacement_loop): Update
6179         prototype.
6180         * tree-scalar-evolution.c (final_value_replacement_loop): Return
6181         whether anything was done.
6182         (scev_const_prop): Remove constant propagation part, fold
6183         remains into ...
6184         * tree-ssa-loop.c (pass_scev_cprop::execute): ... here.
6185         (pass_data_scev_cprop): TODO_cleanup_cfg is now done
6186         conditionally.
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.
6203         PR sanitizer/87837
6204         * match.pd (X + Y < X): Don't optimize if TYPE_OVERFLOW_SANITIZED.
6206 2018-11-05  Xuepeng Guo  <xuepeng.guo@intel.com>
6208         PR target/87853
6209         * config/i386/emmintrin.h (__v16qs): New to cope with option
6210         -funsigned-char.
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>
6223         PR web/87829
6224         * doc/invoke.texi: Remove options that are
6225         not disabled with -Os.
6227 2018-11-05  Martin Liska  <mliska@suse.cz>
6229         PR c/87811
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>
6235         PR c/87811
6236         * predict.c (expr_expected_value_1): Verify
6237         that last argument is a real constants and emit
6238         error.
6240 2018-11-05  Martin Liska  <mliska@suse.cz>
6242         PR gcov-profile/77698
6243         * ipa-profile.c (ipa_profile): Adjust hotness threshold
6244         only in LTO mode.
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>
6259         PR middle-end/58372
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
6266         znver2 entry.
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
6278         PROCESSOR_ZNVER2.
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>
6295         PR target/87079
6297         * config/nios2/nios2.c (nios2_rtx_costs): Recognize <mul>sidi3
6298         pattern.
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
6338         guard.
6340 2018-11-02  Richard Biener  <rguenther@suse.de>
6342         * dwarf2out.c (build_abbrev_table): Guard lookup_external_ref call
6343         with is_type_die.
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
6355         TYPE_DECL.
6357 2018-11-01  Aaron Sawdey  <acsawdey@linux.ibm.com>
6359         * config/rs6000/rs6000-protos.h (rs6000_address_for_fpconvert): Remove
6360         prototype.
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>
6413         PR bootstrap/82856
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
6423         initialization.
6425 2018-10-31  Martin Liska  <mliska@suse.cz>
6427         PR driver/83193
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
6433         new argument.
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>
6447         PR middle-end/70359
6448         PR middle-end/86270
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
6460         A7.
6461         (arc_store_addr_hazard_p): New implementation, old one renamed to
6462         ...
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>
6514         PR target/87374
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
6519         flag_pic.
6520         * doc/invoke.texi (-mword-relocations): Mention conflict with
6521         -mslow-flash-data.
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
6571         and merge with...
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
6579         using ABSU_EXPR.
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>
6589         PR middle-end/87041
6590         * gimple-ssa-sprintf.c (format_directive): Use %G to include
6591         inlining context.
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>
6607         * tree.c
6608         (free_lang_data_d, add_tree_to_fld_list, fld_worklist_push): Move
6609         head in file.
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
6631         helper function.
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
6663           without numbering.
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>
6695         PR c++/87721
6696         * input.c (get_substring_ranges_for_loc): Detect if
6697         linemap_resolve_location gives us a NULL map, and reject
6698         this case.
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
6712         translation.
6714 2018-10-29  Kugan Vivekanandarajah  <kuganv@linaro.org>
6716         PR middle-end/87469
6717         * tree-ssa-loop-niter.c (number_of_iterations_popcount): Fix niter
6718         max value.
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
6748         internal defs.
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
6772         edges.
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
6778         and processing.
6779         (vect_build_slp_tree): Likewise.
6780         (vect_gather_slp_loads): New function.
6781         (vect_analyze_slp_instance): Gather loads separately from the
6782         SLP tree build.
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
6790         m_demangled_name.
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
6799         ".gcov.json.gz".
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
6838         variables.
6839         * config/aarch64/aarch64-d.c: New file.
6840         * config/aarch64/aarch64-linux.h (GNU_USER_TARGET_D_CRITSEC_SIZE):
6841         Define.
6842         * config/aarch64/aarch64-protos.h (aarch64_d_target_versions): New
6843         prototype.
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):
6873         New prototype.
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
6880         prototype.
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
6887         prototype.
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
6898         prototype.
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>
6932         PR target/85669
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>
6939         PR target/80024
6940         * config/nios2/nios2.c (nios2_valid_target_attribute_rec): Fix
6941         error message.
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
6971         and wrapper.
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
6988         refcnt.
6989         (vect_create_new_slp_node): Initialize refcnt to one.
6990         (bst_traits): Move.
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
6996         addresses.
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>
7004         PR testsuite/86158
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
7017         variants.
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
7076         appropriately.
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
7095         if returning false.
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
7126         operands.
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>
7132         PR bootstrap/87747
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
7140         is anonymous.
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):
7197         Remove.
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
7256         to reflect reality.
7258 2018-10-12  Jeff Law  <law@redhat.com>
7260         * config/h8300/h8300.c (h8300_expand_prologue): Fix stm generation
7261         for H8/S.
7263 2018-10-23  Richard Biener  <rguenther@suse.de>
7265         * tree-vrp.c (add_assert_info): Guard dump_printf with
7266         dump_enabled_p.
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
7276         after dce.
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>
7285         PR target/86383
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>
7297         PR target/87674
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):
7303         Likewise.
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
7334         alignment check.
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>
7360         PR target/87598
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
7371         not all places.
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
7388         tree_form fields.
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
7407         implementation.
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
7434         SSA edge worklists.
7435         * tree-ssa-coalesce.c (coalesce_ssa_name): Populate used_in_copies
7436         in tree-view.
7438 2018-10-22  Martin Liska  <mliska@suse.cz>
7440         PR tree-optimization/87686
7441         Revert
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>
7457         PR middle-end/87682
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
7464         incomplete result.
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
7497         stmt_could_throw_p.
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
7517         stmt_could_throw_p.
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
7524         stmt_could_throw_p.
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
7529         stmt_could_throw_p.
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
7550         stmt_could_throw_p.
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>
7566         PR target/72782
7567         * config/i386/sse.md (*andnot<mode>3_bcst): New.
7569 2018-10-22  H.J. Lu  <hongjiu.lu@intel.com>
7571         PR target/72782
7572         * config/i386/sse.md (*<code><mode>3_bcst): New.
7574 2018-10-22  H.J. Lu  <hongjiu.lu@intel.com>
7576         PR target/72782
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>
7603         PR target/72782
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):
7655         Likewise.
7656         (*<sd_mask_codefor>fma_fnmsub_<mode><sd_maskz_name>_bcst_2):
7657         Likewise.
7658         (*<sd_mask_codefor>fma_fnmsub_<mode><sd_maskz_name>_bcst_3):
7659         Likewise.
7660         (fmai_vmfnmsub_<mode><round_name>): Likewise.
7662 2018-10-21  H.J. Lu  <hongjiu.lu@intel.com>
7664         PR target/72782
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):
7716         Likewise.
7717         (*<sd_mask_codefor>fma_fnmadd_<mode><sd_maskz_name>_bcst_2):
7718         Likewise.
7719         (*<sd_mask_codefor>fma_fnmadd_<mode><sd_maskz_name>_bcst_3):
7720         Likewise.
7721         (fmai_vmfnmadd_<mode><round_name>): Likewise.
7723 2018-10-21  H.J. Lu  <hongjiu.lu@intel.com>
7725         PR target/72782
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):
7777         Likewise.
7778         (*<sd_mask_codefor>fma_fmsub_<mode><sd_maskz_name>_bcst_2):
7779         Likewise.
7780         (*<sd_mask_codefor>fma_fmsub_<mode><sd_maskz_name>_bcst_3):
7781         Likewise.
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>
7794         PR target/72782
7795         * config/i386/sse.md (*mul<mode>3<mask_name>_bcst): New.
7797 2018-10-21  H.J. Lu  <hongjiu.lu@intel.com>
7799         PR target/87662
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>
7811         PR target/72782
7812         * config/i386/sse.md (*<avx512>_div<mode>3<mask_name>_bcst): New.
7814 2018-10-20  Jakub Jelinek  <jakub@redhat.com>
7816         PR middle-end/87647
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>
7825         PR middle-end/85488
7826         PR middle-end/87649
7827         * omp-low.c (check_omp_nesting_restrictions): Diagnose ordered without
7828         depend closely nested inside of loop with ordered clause with
7829         a parameter.
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>
7844         PR target/87657
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>
7850         PR target/72782
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):
7861         Likewise.
7862         (*<sd_mask_codefor>fma_fmadd_<mode><sd_maskz_name>_bcst_3):
7863         Likewise.
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>
7892         PR target/72782
7893         * config/i386/sse.md (VF_AVX512): New.
7894         (avx512bcst): Likewise.
7895         (*<sd_mask_codefor>fma_fmadd_<mode><sd_maskz_name>_bcst_1):
7896         Likewise.
7897         (*<sd_mask_codefor>fma_fmadd_<mode><sd_maskz_name>_bcst_2):
7898         Likewise.
7899         (*<sd_mask_codefor>fma_fmadd_<mode><sd_maskz_name>_bcst_3):
7900         Likewise.
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
7946         and argument.
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>
7953         PR middle-end/87087
7954         Revert
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
7959         this place.
7961 2018-10-18  H.J. Lu  <hongjiu.lu@intel.com>
7963         PR target/87537
7964         * simplify-rtx.c (simplify_subreg): Simplify subreg of vec_merge
7965         of vec_duplicate.
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>
7984         PR middle-end/87623
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):
8015         Same.
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
8132         c/Make-lang.in.
8133         (CPP_SELFTEST_FLAGS, CPP_SELFTEST_DEPS, s-selftest-c++)
8134         (selftest-c++-gdb, selftest-c++-valgrind): Move to
8135         cp/Make-lang.in.
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>):
8164         Rename to...
8165         (@despeculate_copy<ALLI_TI:mode>): ... This.
8166         * config/aarch64/aarch64.c (aarch64_speculation_safe_value): Remove
8167         switch statement.
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
8183         margin width.
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
8193         min_margin_width.
8194         * diagnostic.h (struct diagnostic_context): Add field
8195         "min_margin_width".
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>
8211         PR target/87563
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>
8221         PR target/87572
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>
8234         PR middle-end/87610
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
8238         escaped.
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>
8249         PR target/87599
8250         * config/i386/sse.md (*vec_dupv2di): Add register source to
8251         movddup.
8253 2018-10-14  H.J. Lu  <hongjiu.lu@intel.com>
8255         PR target/87572
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>
8287         PR middle-end/81376
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
8331         noinline.
8333 2018-10-11  Jan Hubicka  <hubicka@ucw.cz>
8335         PR target/87156
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>
8341         PR middle-end/87593
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
8356         function.
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>
8363         PR target/87511
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>
8396         PR middle-end/87574
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>
8402         PR bootstrap/87551
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>
8408         PR target/87573
8409         * config/i386/mmx.md (const_vector 0 -> mem splitter): New splitter.
8411 2018-10-10  Jakub Jelinek  <jakub@redhat.com>
8413         PR target/87550
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
8429         to SSE there.
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.
8437         (main): Likewise.
8438         * input.c (selftest::ebcdic_execution_charset::apply):
8439         Update for renaming of...
8440         (selftest::ebcdic_execution_charset::on_error): ...this, renaming
8441         to...
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
8454         "reason".
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
8476         replacements.
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
8487         information.
8489 2018-10-08  Eric Botcazou  <ebotcazou@adacore.com>
8491         * cgraphunit.c (cgraph_node::expand_thunk): Do not force DECL_IGNORED_P
8492         on the thunk.
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>
8506         PR middle-end/63155
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>
8512         PR target/87517
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):
8538         Open a dump scope.
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>
8587         PR c++/56856
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.
8606         (mfloat64): 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
8617         "scratch" argument.
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
8644         consistently.
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
8660         RPO index.
8661         (add_control_edge): Likewise.
8662         (ssa_propagation_engine::process_ssa_edge_worklist): Fold
8663         into ...
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
8667         over iteration.
8668         (ssa_prop_init): Allocate new worklists, do not dump
8669         immediate uses.
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
8693         vector type.
8695 2018-10-05  H.J. Lu  <hongjiu.lu@intel.com>
8697         PR target/87522
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>
8704         PR target/87509
8705         * config/rs6000/rs6000-builtin.def (RS6000_BUILTIN_SET_FPSCR_DRN): Use
8706         RS6000_BTM_DFP.
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
8743         to...
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
8761         TDF_COMPARE_DEBUG.
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
8779         failure_at calls.
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
8784         location.
8785         (find_data_references_in_stmt): Convert return type from bool to
8786         opt_result, converting "return false" to opt_result::failure_at
8787         with a new message.
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
8792         opt_result.
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
8806         to opt_result.
8807         (verify_data_ref_alignment): Likewise, converting dump_printf_loc
8808         calls to opt_result::failure_at, using the stmt location rather
8809         than vect_location.
8810         (vect_verify_datarefs_alignment): Convert return type from bool
8811         to opt_result.
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
8815         to opt_result.
8816         (vect_analyze_data_ref_accesses): Likewise, converting a
8817         "return false" to a "return opt_result::failure_at", adding a
8818         new message.
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
8837         vect_location.
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
8853         opt_loop_vec_info.
8854         * tree-vect-slp.c (vect_analyze_slp): Convert return type from
8855         bool to opt_result.
8856         * tree-vect-stmts.c (process_use): Likewise, converting
8857         dump_printf_loc call and using stmt location, rather than
8858         vect_location.
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
8874         to opt_result.
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
8887         opt_loop_vec_info.
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"
8894         sub-option.
8895         * dump-context.h (dump_context::apply_dump_filter_p): New decl.
8896         * dumpfile.c (dump_options): Update for renaming of MSG_ALL to
8897         MSG_ALL_KINDS.
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>
8949         PR c/87483
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>
8955         PR ipa/82625
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
8963         fields.
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
8970         bodies into...
8971         (gcc::dump_manager::update_dfi_for_opt_info): ...this new member
8972         function.
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):
8990         Define.
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
9004         and emit gimple.
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>
9020         PR ipa/87491
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
9027         target's wchar_t.
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
9041         initialize it.
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.
9056         (R): Likewise.
9057         (D): Likewise.
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
9071         precision fields.
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>
9103         PR target/87474
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.
9125         (isinfxf2): Ditto.
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>
9139         PR middle-end/87319
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
9152         state to callers.
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.
9174         (jumpif): 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>
9192         PR 69431
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>
9248         PR target/86486
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>
9254         PR target/86486
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>
9265         PR target/86486
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>
9275         PR target/86486
9276         * explow.c (anti_adjust_stack_and_probe_stack_clash): Support custom
9277         probe ranges.
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>
9289         PR target/86486
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>
9298         PR target/86486
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>
9305         PR target/86486
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
9327         constraints.
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
9347         checking.
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.
9356         (mmx_femms): Ditto.
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
9370         function comment.
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
9375         comment.
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
9388         function comment.
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>
9396         PR target/87370
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>
9418         PR target/87467
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
9451         do it as a .long .
9452         * config/rs6000/rs6000.h (TARGET_LWSYNC_INSTRUCTION): Delete.
9453         * config/rs6000/sync.md (*lwsync): Always generate lwsync, never do it
9454         as a .long .
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):
9526         Likewise.
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.
9586         (fldenv): Ditto.
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>
9602         PR target/87149
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>
9623         PR debug/37801
9624         PR debug/87440
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
9630         to subblocks.
9632 2018-09-27  Andrew Stubbs  <ams@codesourcery.com>
9633             Tom de Vries  <tom@codesourcery.com>
9635         PR 82089
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>
9681         PR target/87414
9682         * config/i386/i386.c: Include debug.h and dwarf2out.h.
9683         (output_indirect_thunk): Emit DW_CFA_def_cfa_offset after the
9684         call.
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.
9706         (sincosxf3): 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>
9716         PR target/87439
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>
9722         Revert
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>
9730         PR debug/87443
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>
9758         PR debug/87428
9759         PR debug/87362
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
9764         recognize it.
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>
9792         PR c/87387
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>
9799         PR target/86987
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
9805         u5bit_cint_operand.
9806         (*altivec_vsplth_internal): Ditto.
9807         (altivec_vsplth_direct): Ditto.
9808         (altivec_vspltw): Use const_0_to_3_operand instead of
9809         u5bit_cint_operand.
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>
9820         PR debug/83941
9821         * dwarf2out.c (add_AT_external_die_ref): Remove now redundant
9822         GC-ification.
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>
9832         PR target/71278
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
9855         immediately.
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>
9866         PR debug/83941
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
9870         external_die_map.
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
9876         external DIE map.
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
9890         DIEs.
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>
9899         PR fortran/87394
9900         * dbgcnt.c (dbg_cnt_process_single_pair): Return false
9901         instead of NULL.
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
9911         unused field.
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
9925         unused function.
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):
9943         Likewise.
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>
9956         PR middle-end/86078
9957         * doc/invoke.texi: Document all parameters and remove default
9958         of the parameters.
9960 2018-09-25  Ilya Leoshkevich  <iii@linux.ibm.com>
9962         PR bootstrap/87417
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>
9968         PR target/87391
9969         * config/riscv/riscv.h (STACK_BOUNDARY): Test riscv_abi == ABI_ILP32E
9970         not TARGET_RVE.
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>
9981         PR target/82699
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
9986         is true.
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
9994         types.
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>
10014         PR target/80080
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.
10022         Reword the help.
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
10028         message.
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>
10037         PR sanitizer/85774
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
10050         executable.
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.
10063         (k): Ditto.
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
10095         as GENERAL_REGS.
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>
10103         PR target/86798
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
10118         vr_values class.
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
10204         set sum_all.
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
10208         qualifier.
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
10213         arguments.
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
10221         histogram.
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
10227         it not obsolete.
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
10243         histogram.
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
10251         mode.
10252         * postreload-gcse.c (eliminate_partially_redundant_load): Fix
10253         GCOV coding style.
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>
10294         PR bootstrap/87013
10295         * configure.ac: Check for .loc is_stmt support.
10296         * configure, config.in: Rebuilt.
10297         * dwarf2out.c (dwarf2out_source_line): Skip is_stmt
10298         if not supported.
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
10304         -misel=no.
10306 2018-09-20  Segher Boessenkool  <segher@kernel.crashing.org>
10308         * config/rs6000/rs6000-opts.h (enum rs6000_vector): Delete
10309         VECTOR_OTHER.
10310         * config/rs6000/rs6000.c (rs6000_debug_vector_unit): Delete
10311         case VECTOR_OTHER.
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
10448         and use stlur.
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>
10486         PR other/87353
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
10502         to __ffsdi2.
10504 2018-09-17  David Malcolm  <dmalcolm@redhat.com>
10506         * diagnostic-show-locus.c (class layout_range): Add field
10507         "m_original_idx".
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
10516         get_text call.
10517         (gcc_rich_location::add_location_if_nearby): Use 0 for
10518         original_idx.
10519         * gcc-rich-location.h (text_range_label::get_text): Update for new
10520         param.
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
10543         class.
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
10557         SImode args.
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
10579         iterating.
10581 2018-09-17  Martin Jambor  <mjambor@suse.cz>
10583         PR c/63886
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
10596         access.
10598 2018-09-17  Vineet Gupta  <vgupta@synopsys.com>
10600         * config/arc/arc.c: Object attributes for core4 not reflected
10601         correctly.
10602         * config/arc/arc.h: Don't restrict DBNZ to core3 (core4 includes
10603         core3).
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>
10661         PR c/82967
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
10682         a call to...
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>
10692         revert:
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
10704         arrays.
10705         (gimple_fold_builtin_sprintf): Propagate NO_WARNING to transformed
10706         calls.
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>
10747         PR target/87224
10748         * config/rs6000/rs6000.md (*mov<mode>_hardfloat64): Add Z to the Y
10749         alternatives.
10751 2018-09-14  Sam Tebbs  <sam.tebbs@arm.com>
10753         PR target/85628
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
10766         PR lto/87283
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
10778         formatting.
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
10809         correctly.
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>
10828         PR target/86812
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>
10848         PR bootstrap/87134
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>
10856         PR debug/86985
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>
10862         PR target/85628
10863         * config/aarch64/aarch64.md (*aarch64_bfxil):
10864         Define.
10865         * config/aarch64/constraints.md (Ulc): Define.
10866         * config/aarch64/aarch64-protos.h (aarch64_high_bits_all_ones_p):
10867         Define.
10868         * config/aarch64/aarch64.c (aarch64_high_bits_all_ones_p):
10869         New function.
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
10939         visited blocks.
10941 2018-09-12  Andreas Krebbel  <krebbel@linux.ibm.com>
10943         * config/s390/s390.md (PFPO_RND_MODE_DFP, PFPO_RND_MODE_BFP): New
10944         constants.
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
10988         depend on sign.
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
11077         predicate.
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>
11088         PR target/86794
11089         * config/mmix/mmix.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Redefine
11090         to speculation_safe_value_not_needed.
11092         PR target/85666
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
11106         earlyclobber.
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
11126         splitter.
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>
11138         PR target/86731
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.
11159         (fistdi2): Ditto.
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
11165         splitters.
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
11182         the init value.
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>
11198         PR target/80080
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>
11208         PR target/80080
11209         * config/s390/s390-passes.def: New file.
11210         * config/s390/s390-protos.h (class rtl_opt_pass): Add forward
11211         declaration.
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>
11232         PR target/86779
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
11245         correct predicate.
11246         * config/nvptx/nvptx.opt (ptx_isa, sm_30, sm_35): New enum and its
11247         values.
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>
11281         PR bootstrap/87134
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>
11300         PR c++/87137
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>
11306         PR bootstrap/87225
11307         * tree-vect-stmts.c (vectorizable_simd_clone_call): Fix bogus
11308         return.
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):
11316         Likewise.
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):
11326         New tuning flag.
11328 2018-09-05  Martin Liska  <mliska@suse.cz>
11330         * doc/gcov.texi: Update documentation of humar
11331         readable mode.
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>
11337         PR target/87164
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>
11344         PR debug/86593
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>
11351         PR target/87198
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
11375         fnargs.
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
11397         static.
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
11422         cleanup.
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
11429         gcc_stablesort.
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
11462         simplify result.
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
11480         executable.
11482 2018-09-03  Martin Liska  <mliska@suse.cz>
11484         PR driver/83193
11485         * common/common-target.def: Add TARGET_GET_VALID_OPTION_VALUES.
11486         * common/common-targhooks.c (default_get_valid_option_values):
11487         New function.
11488         * common/common-targhooks.h (default_get_valid_option_values):
11489         Likewise.
11490         * common/config/i386/i386-common.c: Move processor_target_table
11491         from i386.c.
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
11505         hook.
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
11514         likely edge.
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
11521         nodes.
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
11551         be available.
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"
11567         and "vr1".
11568         (vrp_can_optimize_bit_op): Likewise.
11569         (extract_range_from_binary_expr_1): Likewise for params "vr0_" and
11570         "vr1_".
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
11607         to sem_item.
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>
11620         PR target/86684
11621         PR target/87149
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
11650         vector load modes.
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>
11669         PR lto/86517
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
11676         TYPE_STUB_DECL.
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
11705         DECL_VINDEX.
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
11747         string_constant.
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
11765         boundaries.
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>
11790         PR other/86726
11791         * invoke.texi (Optimization Options): List -ftree-scev-cprop.
11792         (-O): Ditto.
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
11798         parameters.
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
11823         invalid address.
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
11897         expressions.
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
11909         functions.
11912 2018-08-27  Jeff Law  <law@redhat.com>
11913         PR tree-optimization/87110
11914         * tree-ssa-dse.c (compute_trims): Handle non-constant
11915         TYPE_SIZE_UNIT.
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>
11951         PR c++/87091
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):
11967         Likewise.
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>
11979         PR c++/87091
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>
11987         PR sanitizer/86962
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
12002         possible.
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):
12028         Likewise.
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
12091         fndecl_built_in_p.
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
12105         is_single_value_p.
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
12115         handlel by a test.
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):
12131         Make it static.
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):
12141         (expand_builtins):
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
12193         gimple functions.
12194         (switch_conversion::check_final_bb): Likewise.
12195         (switch_conversion::gather_default_values): Pass new argument
12196         to label_to_block.
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
12201         to label_to_block.
12202         (switch_decision_tree::try_switch_expansion): Use
12203         gimple_switch_default_edge.
12204         * tree-vrp.c (find_switch_asserts): Pass new argument
12205         to label_to_block.
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):
12224         New functions.
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
12241         lookup.
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
12261         check.
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>
12273         PR driver/83193
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
12279         options.
12281 2018-08-26  Jeff Law  <law@redhat.com>
12283         * config/mips/frame-header-opt.c: Include "backend.h" rather than
12284         "cfg.h"
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>
12305         PR c++/87091
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
12325         POINTER_PLUS_EXPR.
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
12396         vectors.
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>
12408         PR debug/79342
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
12420         flag dynamically.
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>
12431         PR target/86989
12432         * config/rs6000/rs6000.c (toc_relative_expr_p): Check that the base is
12433         the TOC register.
12435 2018-08-24  Aldy Hernandez  <aldyh@redhat.com>
12437         PR 87073/bootstrap
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
12444         "permutaion".
12446 2018-08-23  Giuliano Belinassi  <giuliano.belinassi@usp.br>
12448         * genmatch.c (parser::parse_operation): Fix typo 'exapnded'
12449         to 'expanded'.
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'
12492         into 'arch'.
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>
12506         PR target/86951
12507         * config/arm/arm-protos.h (arm_emit_speculation_barrier): New
12508         prototype.
12509         * config/arm/arm.c (speculation_barrier_libfunc): New static
12510         variable.
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
12515         DSB or ISB.
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
12522         calls.
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>
12533         PR target/85910
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
12540         behaviour.
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
12559         function.
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>
12587         PR other/704
12588         * gcc-ar.c (main): Don’t try to invoke the plug-in if we’re not
12589         building it.
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>
12606         PR bootstrap/81033
12607         PR target/81733
12608         PR target/52795
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
12612         label.
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
12649         when possible.
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
12659         behaviour.
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>
12721         PR target/87033
12722         * config/rs6000/rs6000.md (extendsi<mode>2): Change constraints
12723         from 'Y' to 'YZ' to enable the LWAX instruction to be generated
12724         for indexed loads.
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>
12734         PR other/84889
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
12738         instance.
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
12743         a group.
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.
12752         (error): Likewise.
12753         (error_n): Likewise.
12754         (error_at): Likewise.
12755         (sorry): 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",
12764         "end_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>
12789         PR target/87014
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>
12804         PR target/86984
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
12809         integer overflow.
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>
12833         PR target/86994
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
12850         a sentence.
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
12897         function.
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
12905         to 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
12954         Deprecated flags.
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
12967         CL_ERR_DEPRECATED.
12968         (read_cmdline_option): Report warning for OPT_SPECIAL_deprecated
12969         options.
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):
13020         Delete.
13022 2018-08-16  Segher Boessenkool  <segher@kernel.crashing.org>
13024         * config/rs6000/altivec.md: Don't set length attribute to the default
13025         value.
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>
13073         PR target/84711
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):
13095         Remove.
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
13107         for float vectors.
13109 2018-08-15  Uros Bizjak  <ubizjak@gmail.com>
13111         * config/i386/i386.c (expand_vec_perm_movs): Enable V4SFmode
13112         for TARGET_SSE.
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
13118         "m_label".
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
13123         ctor.
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
13135         "show_labels_p".
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"
13141         param.
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
13159         show_labels_p.
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>
13176         PR testsuite/86519
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>
13192         * config/darwin.c
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>
13199         PR target/81685
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
13215         patterns.
13216         (expand_vec_perm_1): Try the new method.
13218 2018-08-14  Ilya Leoshkevich  <iii@linux.ibm.com>
13220         PR target/86547
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()
13250         intrinsics.
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):
13273         New function.
13274         (s390_decompose_address): Factor out constant pool ref
13275         decomposition.
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
13304         extra_headers.
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
13310         secure attribute.
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):
13325         Remove.
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
13331         for zero value.
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>
13343         PR target/82418
13344         * config/i386/i386.md (<s>mul<mode>3_highpart): Use DWIH mode iterator
13345         instead of SWI48.
13347 2018-08-10  Martin Liska  <mliska@suse.cz>
13349         PR target/83610
13350         * builtin-types.def (BT_FN_LONG_LONG_LONG_DOUBLE): Add new
13351         function type.
13352         * builtins.c (expand_builtin_expect_with_probability):
13353         New function.
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):
13358         (fold_builtin_2):
13359         (fold_builtin_3):
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
13378         new predictor.
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
13386         early_p.
13387         (strip_predictor_early): New function.
13388         (pass_strip_predict_hints::execute): Call the function to
13389         strip predictors.
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
13401         unused variable.
13403 2018-08-09  Andreas Schwab  <schwab@linux-m68k.org>
13405         * config/m68k/m68k-protos.h (m68k_final_prescan_insn): Remove
13406         prototype.
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>
13415         PR other/84889
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>
13474         PR target/86887
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>
13482         PR c/86895
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>
13511         PR target/84332
13512         * config/s390/s390.c (s390_option_override_internal): Reduce the
13513         stack-clash-protection-probe-interval param if it would be too big
13514         for z900.
13516 2018-08-08  Andreas Schwab  <schwab@linux-m68k.org>
13518         PR target/46179
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
13524         simplify.
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>
13541         PR target/85295
13542         * config/s390/constraints.md ("NxHD0", "NxSD0"): New constraint
13543         definitions.
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
13588         usages.
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):
13598         Remove flags.
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):
13602         Remove MTN.
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
13628         global.
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>
13637         PR target/86838
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
13653         hit to compiler.
13655 2018-08-06  John David Anglin  <danglin@gcc.gnu.org>
13657         PR target/86785
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>
13689         PR target/86807
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
13696         assert.
13698 2018-08-06  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
13700         PR target/86662
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>
13832         PR target/86386
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
13840         NaN output to 4.
13842 2018-08-03  Sandra Loosemore  <sandra@codesourcery.com>
13844         PR target/86799
13845         * config/nios2/nios2.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
13846         Define.
13848 2018-08-03  Jeff Law  <law@redhat.com>
13850         PR target/86795
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
13886         UI_NONE.
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
13894         in fraction part.
13896 2018-08-03  Siddhesh Poyarekar  <siddhesh@sourceware.org>
13898         * config/aarch64/falkor.md (falkor_am_1_vxvy_vxvy): Move
13899         neon_dup_q to...
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
13923         parameter.
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>
13939         PR target/86790
13940         * config/m68k/m68k.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
13941         Define to speculation_safe_value_not_needed.
13943         PR target/86784
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>
13949         PR target/86660
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>
13970         PR target/86813
13971         * config/stormy16/stormy16.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
13972         Define to speculation_safe_value_not_needed.
13974         PR target/86810
13975         * config/v850/v850.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
13976         Define to speculation_safe_value_not_needed.
13978         PR target/86810
13979         * config/v850/v850.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
13980         Define to speculation_safe_value_not_needed.
13982         PR target/86803
13983         * config/rx/rx.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
13984         Define to speculation_safe_value_not_needed.
13986         PR target/86797
13987         * config/msp430/msp430.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
13988         Define to speculation_safe_value_not_needed.
13990         PR target/86791
13991         * config/mcore/mcore.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
13992         Define to speculation_safe_value_not_needed.
13994         PR target/86789
13995         * config/m32r/m32r.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
13996         Define to speculation_safe_value_not_needed.
13998         PR target/86787
13999         * config/iq2000/iq2000.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
14000         Define to speculation_safe_value_not_needed.
14002         PR target/86782
14003         * config/frv/frv.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Define to
14004         speculation_safe_value_not_needed.
14006         PR target/86781
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
14029         functions.
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>
14089         PR target/86014
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.
14097         (main): Call it.
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):
14106         Likewise.
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
14115         to hold it.
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
14128         to this callsite.
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
14156         parameter.
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
14179         code...
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
14226         argument.
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
14241         argument.
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>
14254         PR target/86800
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>
14299         PR bootstrap/86724
14300         * graphite.h: Include isl/id.h and isl/space.h to allow build
14301         with ISL 0.20.
14303 2018-08-01  Jan Willem Jagersma  <jwjagersma@gmail.com>
14305         PR target/86651
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
14322         available.
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
14335         bb_discriminator.
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
14343         ATTRIBUTE_UNUSED.
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
14351         "m_test_pp_flags".
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
14357         m_test_pp.
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
14374         optinfo::add_tree.
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
14395         via emit_item.
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
14464         expand.
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
14470         function.
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
14481         prototype.
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
14526         list.
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
14543         hooks.
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
14556         dump_gimple_expr.
14557         (dump_context::dump_generic_expr_loc): Likewise, using
14558         dump_generic_expr.
14559         (dump_context::dump_printf_loc_va): Likewise, using
14560         dump_printf_va.
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
14622         new_stmt_vec_info.
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
14662         of DR_VECT_AUX.
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
14669         argument.
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
14676         DR_VECT_AUX.
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
14684         dr_vec_info.
14685         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Update
14686         accordingly.
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
14721         above changes.
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
14730         data_reference.
14731         * tree-vect-loop-manip.c (get_misalign_in_elems)
14732         (vect_gen_prolog_loop_niters): Use dr_vec_infos.  Update calls after
14733         above changes.
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
14754         of data_ref.
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
14887         of a gphi.
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
14909         stmt_vec_infos.
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
14919         stmt_vec_info.
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
14934         chains.
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
14992         stmts.
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
15002         null arguments.
15003         (vect_find_last_scalar_stmt_in_slp): Return a stmt_vec_info instead
15004         of a gimple stmt.
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
15028         accordingly.
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
15043         accordingly.
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
15140         than gimple stmts.
15141         * tree-parloops.c (valid_reduction_p): Take a stmt_vec_info instead
15142         of a gimple stmt.
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
15146         than gimple stmts.
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
15158         accordingly.
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
15278         _stmt_vec_info *.
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
15298         of a gimple *.
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
15309         of vinfo_for_stmt.
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
15349         had been created.
15351 2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>
15353         * tree-vect-loop.c (vect_valid_reduction_input_p): New function,
15354         split out from...
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
15377         a reduction group.
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>
15455         PR target/86640
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>
15473         PR target/86673
15474         * doc/extend.texi (Global Register Variables): Discourage use of type
15475         qualifiers.
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>
15485         PR target/86547
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
15507         used.
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
15513         fusion mask bit.
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
15524         -mcmodel= switch.
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
15533         UNSPEC.
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
15573         MEM_REF.
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
15582         kinds.
15584 2018-07-26  Martin Liska  <mliska@suse.cz>
15586         PR lto/86548
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
15619         accesses as well.
15620         (arc_is_uncached_mem_p): uncached applies to both the variable and
15621         the pointer.
15623 2018-07-25  Claudiu Zissulescu  <claziss@synopsys.com>
15625         * config/arc/arc.h (ADDITIONAL_REGISTER_NAMES): Add additional
15626         register names.
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
15636         return type.
15638 2018-07-25  Richard Biener  <rguenther@suse.de>
15640         PR debug/86654
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>
15658         PR sanitizer/79635
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
15685         assertion.
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
15693         times.
15694         (optrecord_json_writer::inlining_chain_to_json): Fix the check for
15695         UNKNOWN_LOCATION, to use LOCATION_LOCUS to look through ad-hoc
15696         wrappers.
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>
15726         PR c/86617
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>
15756         PR bootstrap/86621
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
15777         variables.
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.
15781         Initialize.
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
15794         PTRDIFF_MAX.
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
15797         for alloca(0).
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
15801         to HOST_WIDE_INT.
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
15805         ByteSize flags.
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
15840         two operands.
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>
15883         PR debug/86585
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
15902         globals.
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
15909         hash element.
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
15920         last_inserted_phi.
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",
15948         "tree-pass.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
15971         need be.
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
16076         extension.
16077         * config/aarch64/aarch64.h (AARCH64_FL_PROFILE): New.
16078         * doc/invoke.texi (aarch64-feature-modifiers): New entry for profile
16079         extension.
16081 2018-07-19  Andre Vieira  <andre.simoesdiasvieira@arm.com>
16083         PR target/83009
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
16090         Umq with Umn.
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.
16104         (Umq): Remove.
16106 2018-07-19  Richard Biener  <rguenther@suse.de>
16108         * tree-ssa-sccvn.h (struct vn_phi_s): Make phiargs member
16109         a trailing array.
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>
16136         PR target/86560
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
16140         type attribute.
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
16179         ISA 2.07".
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
16189         EXACT_DIV_EXPR.
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>
16224         PR lto/86456
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
16229         with fat LTO part.
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
16240         alignment to 16.
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
16284         directly.
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
16288         align_flags class.
16289         * config/m68k/m68k.c: Do not use removed align_labels_value and
16290         align_loops_value.
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
16306         static function.
16307         * config/rx/rx.c (rx_align_for_label): Change return type
16308         to align_flags.
16309         (rx_max_skip_for_label): Remove TARGET_ASM_*_ALIGN_MAX_SKIP
16310         macro definitions.
16311         into align_flags class.
16312         (LABEL_ALIGN): Likewise.
16313         (LOOP_ALIGN): Likewise.
16314         * config/s390/s390.c (s390_label_align): Use align_flags
16315         class member.
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>
16441         PR target/86511
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
16464         CPUs.
16465         * config/s390/s390.opt: Add the new option.
16467 2018-07-16  Richard Biener  <rguenther@suse.de>
16469         PR lto/86523
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>
16475         PR ipa/86529
16476         * ipa-pure-const.c (malloc_candidate_p): Revert ::get
16477         to ::get_create.
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
16486         for ARCHS4x.
16487         * config/arc/arc-cpus.def (hs4x): New cpu.
16488         (hs4xd): Likewise.
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,
16494         fpu_cvt.
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>
16505         PR debug/86455
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
16511         early clobber.
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>
16542         PR target/85993
16543         * config/sh/sh.c (output_mi_thunk): Remove dead conditional
16544         block.
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
16557         copying section.
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):
16579         New option.
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
16598         have a conversion.
16600 2018-07-13  Tom de Vries  <tdevries@suse.de>
16602         * tree-inline.c (remap_ssa_name): Save and reuse debug exprs generated
16603         in remap_ssa_name.
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>
16617         PR debug/86452
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
16633         function.
16634         (riscv_get_interrupt_type): New function.
16635         (riscv_merge_decl_attributes): New function, checking interrupt type is
16636         same.
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
16642         directive.
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>
16654         PR c/86453
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
16661          parameter.
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
16695         name change.
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
16738         operands.
16739         (gimple_match_op::set_op): Likewise.
16740         (gimple_resimplify5): Declare.
16741         * genmatch.c (decision_tree::gen): Generate simplifications for
16742         5 operands.
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
16781         gimple_match_cond.
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
16797         constructor.
16798         * match.pd: Fold VEC_COND_EXPRs of an IFN_COND_* call to a new
16799         IFN_COND_* call.
16800         * config/aarch64/aarch64.c (aarch64_preferred_else_value): New
16801         function.
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
16807         DECL_FCONTEXT
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>
16816         PR debug/86462
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>
16822         PR target/84829
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
16848         here.
16849         (vn_nary_build_or_lookup_1): Adjust.
16850         (try_to_simplify): Likewise.
16851         * gimple-match-head.c (gimple_resimplify1): Instead apply one
16852         here.
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
16863         __U argument.
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
16877         __U argument.
16878         (_mm256_cmp_epi8_mask): Use __mmask32 return type instead of
16879         __mmask16.
16880         (_mm_mask_cmp_epu8_mask): Use __mmask16 instead of __mmask8 for __U
16881         argument.
16882         (_mm256_mask_cmp_epu8_mask): Use __mmask32 instead of __mmask16 for
16883         __U argument.
16884         (_mm256_cmp_epu8_mask): Use __mmask32 return type instead of
16885         __mmask16.
16886         (_mm_mask_cmp_epi16_mask): Cast last argument to __mmask8 instead
16887         of __mmask16.
16888         (_mm256_mask_cvtepi8_epi16): Use __mmask16 instead of __mmask32 for
16889         __U argument.
16890         (_mm_mask_cvtepi8_epi16): Use __mmask8 instead of __mmask32 for
16891         __U argument.
16892         (_mm256_mask_cvtepu8_epi16): Use __mmask16 instead of __mmask32 for
16893         __U argument.
16894         (_mm_mask_cvtepu8_epi16): Use __mmask8 instead of __mmask32 for
16895         __U argument.
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
16899         to __mmask32.
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
16903         to __mmask16.
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
16907         to __mmask32.
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
16911         to __mmask16.
16912         * config/i386/avx512vbmi2vlintrin.h (_mm_mask_shrdi_epi32,
16913         _mm_mask_shldi_epi32): Cast last argument to __mmask8 instead of
16914         __mmask16.
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
16920         for __U argument.
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
16942         external decls.
16943         (write_ts_decl_non_common_tree_pointers): Do not stream
16944         DECL_ORIGINAL_TYPE
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>
16970         PR debug/86457
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
16975         type units.
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>
16985         PR debug/86459
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>
16995         PR c++/86443
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.
17034         (MIN_SOB): Ditto.
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
17039         extend.
17040         (zero_extendhisi2): Remove.
17041         (shift patterns): Add CC handling variants.
17042         (bswaphi2): New.
17043         (bswapsi2): New.
17044         (rothi3): New.
17045         (define_peephole2): New peephole to recognize mov that sets CC for
17046         subsequent test.
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,
17052         wi::add.
17054 2018-07-09  Jakub Jelinek  <jakub@redhat.com>
17056         PR c/86420
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>
17065         PR debug/86413
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
17086         overflow_type.
17087         (combine_bound): Use wide-int overflow calculation instead of
17088         rolling our own.
17089         * calls.c (maybe_warn_alloc_args_overflow): Change overflow type to
17090         overflow_type.
17091         * fold-const.c (int_const_binop_2): Same.
17092         (extract_muldiv_1): Same.
17093         (fold_div_compare): Same.
17094         (fold_abs_const): Same.
17095         * match.pd: Same.
17096         * poly-int.h (add): Same.
17097         (sub): Same.
17098         (neg): Same.
17099         (mul): 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>
17149         PR target/86324
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>
17191         PR c++/86400
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>
17223         PR target/84711
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>
17229         PR target/84711
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>
17239         Revert
17240         2018-07-04  Maxim Ostapenko  <m.ostapenko@samsung.com>
17242         PR sanitizer/84250
17243         * config/gnu-user.h (LIBASAN_EARLY_SPEC): Pass -lstdc++ for static
17244         libasan.
17245         * gcc.c: Do not pass LIBUBSAN_SPEC if ASan is enabled with UBSan.
17247 2018-07-04  Maxim Ostapenko  <m.ostapenko@samsung.com>
17249         PR sanitizer/84250
17250         * config/gnu-user.h (LIBASAN_EARLY_SPEC): Pass -lstdc++ for static
17251         libasan.
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
17273         PR target/45996
17274         PR c/84100
17275         * common.opt: Rename align options with 'str_' prefix.
17276         * common/config/i386/i386-common.c (set_malign_value): New
17277         function.
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
17282         to string.
17283         * config/alpha/alpha.c (alpha_override_options_after_change):
17284         Likewise.
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
17297         string.
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
17316         type of constants.
17317         (mips_option_override): Set default values for options.
17318         * config/powerpcspe/powerpcspe.c (rs6000_option_override_internal):
17319         Likewise.
17320         * config/rs6000/rs6000.c (rs6000_option_override_internal):
17321         Likewise.
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
17327         macros.
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
17339         align_flags.
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
17360         topleev.h.
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
17364         of string types.
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
17369         value ranges.
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
17383         argument.
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>
17412         PR target/85620
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
17421         precondition.
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>
17464         PR target/85694
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
17473         UNSPEC_URHADD.
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>
17495         PR ipa/86389
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
17527         directly.
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
17549         is null.
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
17579         functions.
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.
17615         Add cast_forwprop.
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
17710         in dump string.
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
17729         code...
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>
17739         PR ipa/86279
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>
17745         PR ipa/86323
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
17778         -mdec-asm.
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.
17800         (debug_path): New.
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.
17805         Add new argument.
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,
17821         split out from...
17822         (vect_recog_rotate_pattern): ...here.
17823         (vect_convert_input): Try to insert casts of invariants in the
17824         preheader.
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
17862         PLUS_EXPR operand.
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
17874         checks.
17875         (vect_init_pattern_stmt, vect_set_pattern_stmt): New functions,
17876         split out from...
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
17880         the original one.
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
17916         overload.
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>
17958         PR lto/85759
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
17989         AUTO_DUMP_SCOPE.
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>
18004         PR target/86348
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
18028         set_alt_dump_file.
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"
18034         global.
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
18076         clusters.
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
18081         clusters.
18082         (bit_test_cluster::is_beneficial): Bail out for such case.
18083         (switch_decision_tree::analyze_switch_statement):
18084         Fix comment.
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
18091         is set.
18092         * opt-suggestions.c (option_proposer::get_completions):
18093         New function.
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.
18163         (CCFP): Remove.
18164         * config/pdp11/pdp11-protos.h (int_no_side_effect_operand): New
18165         function.
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
18174         from output.
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
18209         handling.
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
18220         exclusive options.
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
18247         patterns.
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
18256         after reload.
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
18264         reload.
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.
18279         (trfsr): Likewise.
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>
18341         PR target/85769
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
18347         comment.
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>
18364         PR target/86285
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
18382         location_t.
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
18387         "selftest.h".
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
18424         gimple stmt.
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
18430         return type.
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
18439         gimple stmt.
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
18450         location_t
18451         (compute_branch_probabilities): Likewise.
18452         * selftest-run-tests.c (selftest::run_tests): Call
18453         dumpfile_c_tests.
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):
18467         Likewise.
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
18472         vect_location.
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
18476         of vect_location.
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
18496         call_stmt.
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>
18505         PR target/86314
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
18508         operands.
18510 2018-06-26  Richard Biener  <rguenther@suse.de>
18512         PR tree-optimization/86287
18513         PR bootstrap/86316
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
18521         isn't valid.
18523 2018-06-26  Alexandre Oliva  <aoliva@redhat.com>
18525         PR debug/86064
18526         * dwarf2out.c (loc_list_has_views): Adjust comments.
18527         (dw_loc_list): Split single cross-partition range with
18528         nonzero locview.
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
18536         test.
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
18541         (recipsf2_insn).
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):
18576         Likewise.
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
18640         datarefs lazily.
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
18647         transform.
18648         * tree-vect-stmts.c (ensure_base_align): Adjust for DR_AUX
18649         change.
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>
18678         PR debug/86257
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>
18684         PR C++/86082
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>
18719         PR target/86222
18720         * config/rs6000/rs6000-string.c (expand_strn_compare): Handle -m32
18721         correctly.
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):
18729         New declaration.
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>
18755         PR target/85994
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
18773         than once.
18775 2018-06-21  Eric Botcazou  <ebotcazou@adacore.com>
18777         * cfgrtl.c (fixup_reorder_chain): Do not emit NOPs in DECL_IGNORED_P
18778         functions.
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
18814         comment.
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
18821         deleting it.
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
18853         NULL DR_STEP.
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
18859         or scatters.
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
18888         enter/exit data.
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,
18893         FINALIZE}
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,
18897         FINALIZE}.
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,
18903         FINALIZE}.
18904         (omp_clause_code_name): Likewise.
18906 2018-06-20  Jakub Jelinek  <jakub@redhat.com>
18908         PR debug/86194
18909         * var-tracking.c (use_narrower_mode_test): Check if shift amount can
18910         be narrowed.
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
18940         128-bit modes.
18941         * config/aarch64/aarch64-simd.md (load_pair<VQ:mode><VQ2:mode>):
18942         New pattern.
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):
18954         New.
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
18958         hierarchy.
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.
19004         (PRINT_CASE): 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
19151         live or relevant.
19152         * tree-vect-loop.c (vect_transform_loop_stmt): New function,
19153         split out from...
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
19189         constant.
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
19195         blocks.
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
19202         get.
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
19222         of get_create.
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
19236         of get_create.
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>
19272         PR target/86197
19273         * config/rs6000/rs6000.md (rs6000_discover_homogeneous_aggregate): An
19274         ieee128 argument takes up only one (vector) register, not two (floating
19275         point) registers.
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"
19302         param.
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
19313         param.
19314         (vax_output_int_subtract): Likewise.
19315         * config/vax/vax.c (vax_output_int_add): Likewise for param
19316         "insn".
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
19328         a cast.
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>
19341         PR target/85358
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
19367         temporary.
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
19430         here to ...
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>
19440         PR 84195
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
19466         referenced VLAs.
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):
19530         Adjust callers.
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>
19580         PR 84195
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>
19606         PR target/85968
19607         * config/arc/arc.c (arc_return_address_register): Fix
19608         if-condition.
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.
19636         PR target/85945
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>
19649         PR ipa/86124
19650         * tree-ssa-struct-alias.c (create_variable_info_for): Handle
19651         NULL cgraph_node.
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
19681         of integer types.
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
19702         "label".
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
19710         rtx to rtx_insn *.
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
19715         braf_label.
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"
19721         to "rtx_insn *".
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"
19729         to "rtx_insn *".
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
19733         "rtx_insn *".
19734         (emit_insn_after_1): Strengthen "after" param from "rtx" to
19735         "rtx_insn *".
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
19753         "location_t".
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
19765         "rtx_insn *".
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
19775         "rtx_insn *".
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
19801         in.
19803 2018-06-13  Eric Botcazou  <ebotcazou@adacore.com>
19805         PR target/86048
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
19819         and size_reason.
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
19843         ARC cores.
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>
19852         PR target/86076
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
19866         are poly_ints.
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
19883         poly_int_rtx_p.
19884         (set_noop_p): Use rtx_to_poly_int64 for the elements selected
19885         by a VEC_SELECT.
19886         * simplify-rtx.c (avoid_constant_pool_reference): Use strip_offset.
19887         (simplify_binary_operation_1): Extend CONST_INT handling to
19888         poly_int_rtx_p.
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
19892         poly_int64.
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>
19906         PR other/69968
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
19915         "v_one_ago".
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>
19944         PR c/85931
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>
19954         PR target/85990
19955         * config/i386/gnu-user.h (TARGET_THREAD_SPLIT_STACK_OFFSET):
19956         Update comments.
19957         * config/i386/gnu-user64.h (TARGET_THREAD_SPLIT_STACK_OFFSET):
19958         Likewise.
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
19969         and report error.
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
19991         field.
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
20011         mips64r6.
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.
20061         <'o'>: Likewise.
20062         <'@'>: New case.
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>
20097         PR target/85755
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>
20120         PR target/85755
20121         * config/rs6000/rs6000.c (mem_operand_gpr): Enable PRE_INC and PRE_DEC
20122         addresses.
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
20131         TARGET_ELF.
20133 2018-06-08  Martin Liska  <mliska@suse.cz>
20135         * tree-cfg.h (debug_function): Fix argument type to match
20136         implementation.
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
20152         rather than 0.
20153         (optinfo_verbosity_options): Likewise.
20154         (optgroup_options): Convert to kv_pair<optgroup_flags_t>; use
20155         OPTGROUP_NONE.
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
20159         "dump_kind" param.
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
20168         optgroup_options.
20169         (opt_info_switch_p): Convert optgroup_flags from int to
20170         optgroup_flags_t.
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
20192         optgroup_flags_t.
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
20197         optgroup_flags_t.
20198         (opt_info_enable_passes): Likewise.
20199         * early-remat.c (early_remat::dump_edge_list): Use TDF_NONE rather
20200         than 0.
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.
20210         (debug): Likewise.
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
20215         than 0.
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
20264         unique number.
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
20300         register hooks.
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
20326         to ...
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
20344         of struct.
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
20363         instead.
20364         (pass_ipa_pure_const::pass_ipa_pure_const): Simplify
20365         constructor.
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
20400         HSA_INVALID.
20401         (hsa_function_summary::hsa_function_summary): Use the new enum
20402         value.
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
20414         of get.
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.
20484         (get): Likewise.
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
20491         declaration.
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.
20503         (get): 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.
20572         (VOID): Likewise.
20573         (PVOID): Likewise.
20574         (ULONG): Likewise.
20575         * config/i386/i386-builtin.def (BDESC_END): Likewise.
20576         (BDESC_FIRST): Likewise.
20577         (BDESC): 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
20813         PROCESSOR_TREMONT.
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
20871         specific.
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
20878         vec_xst.
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
20895         name.
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.
20900         PR target/85657
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
20909         error message.
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>
20933         PR target/63177
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>
20977         PR target/79924
20978         * config/aarch64/aarch64-protos.h (aarch64_err_no_fpadvsimd): Remove
20979         second argument.
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
21001         __typeof__.
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
21008         is extended.
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>
21044         PR target/81497
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
21052         void intrinsics.
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
21066         summary.
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
21076         gcov_ctr_summary.
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
21080         struct.
21081         * lto-streamer.h (struct GTY): Make profile_info gcov_summary
21082         struct.
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
21096         tbeginc builtin.
21098 2018-06-04  Jim Wilson  <jimw@sifive.com>
21100         * config/riscv/riscv-protos.h (riscv_expand_epilogue): Change bool arg
21101         to int.
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
21109         EXCEPTION_RETURN.
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>
21143         PR target/85832
21144         PR target/86036
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>
21175         PR target/86003
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, -].
21186         PR c++/86025
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
21228         TARGET_LINUX_ABI.
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
21236         spec content.
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
21253         optimization.
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
21257         optmization pass.
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.
21265         (epilogue): Ditto.
21266         (return): Ditto.
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
21307         mnemonics.
21308         (aarch64_simd_vec_unpack<su>_hi_<mode>): Use UXTL2 and SXTL2 assembler
21309         mnemonics.
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
21315         variable.
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
21355         modify DR_STMT.
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>
21378         PR ipa/85960
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
21388         aliases.
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
21412         calls.
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>
21420         PR target/85984
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>
21433         PR c/82063
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>
21440         PR target/85829
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.
21456         (st1x2): Likewise.
21457         (st1x3): Likewise.
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
21577         in saphira.
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
21586         is in memory.
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
21596         link.
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>
21624         Revert:
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
21651         r=w alternative.
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
21666         division.
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>
21684         PR target/85950
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}
21687         sequence.
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>
21694         PR testsuite/85888
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
21712         env variables.
21714 2018-05-29  Jakub Jelinek  <jakub@redhat.com>
21716         * tree-cfg.c (verify_gimple_assign_unary): Add checking for
21717         VEC_UNPACK_*_EXPR.
21718         (verify_gimple_assign_binary): Check TYPE_VECTOR_SUBPARTS for
21719         VEC_PACK_*_EXPR.
21721         PR target/85918
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
21741         optabs.
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
21747         type.
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
21755         FIX_TRUNC_EXPR.
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
21761         mode attributes.
21762         (vec_pack<floatprefix>_float_<mode>): New expander.
21763         (vunpckfixt_mode, vunpckfixt_model, vunpckfixt_extract_mode): New mode
21764         attributes.
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}):
21770         Document.
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
21779         member.
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
21803         vector.
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
21821         and later.
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
21842         for armv5te.
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
21861         implementation.
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
21874         pattern.
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>
21896         PR target/85918
21897         * config/i386/i386.md (fixunssuffix, floatunssuffix): New code
21898         attributes.
21899         * config/i386/sse.md
21900         (<floatsuffix>float<sseintvecmodelower><mode>2<mask_name><round_name>):
21901         Rename to ...
21902         (float<floatunssuffix><sseintvecmodelower><mode>2<mask_name><round_name>):
21903         ... this.
21904         (<floatsuffix>float<sselongvecmodelower><mode>2<mask_name><round_name>):
21905         Rename to ...
21906         (float<floatunssuffix><sselongvecmodelower><mode>2<mask_name><round_name>):
21907         ... this.
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
21915         to ...
21916         (fix<fixunssuffix>_truncv8dfv8si2<mask_name><round_saeonly_name>):
21917         ... this.
21918         (<fixsuffix>fix_trunc<mode><sseintvecmodelower>2<mask_name><round_saeonly_name>):
21919         Rename to ...
21920         (fix<fixunssuffix>_trunc<mode><sseintvecmodelower>2<mask_name><round_saeonly_name>):
21921         ... this.
21922         (<fixsuffix>fix_trunc<mode><sselongvecmodelower>2<mask_name><round_saeonly_name>):
21923         Rename to ...
21924         (fix<fixunssuffix>_trunc<mode><sselongvecmodelower>2<mask_name><round_saeonly_name>):
21925         ... this.
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>
21941         PR target/85900
21942         PR target/85345
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.
21966         (GP_REGNUM): New.
21967         (riscv_frflags, riscv_fsflags): Use tab after opcode.
21968         (riscv_mret): New.
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>
21984         PR target/83628
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,
21998         defaulted to true.
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
22003         and pass it along.
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
22009         couldn't handle.
22010         (vect_analyze_data_refs): Do not give up on not analyzable
22011         DRs for BB vectorization.  Remove code truncating the dataref
22012         vector.
22014 2018-05-25  Jakub Jelinek  <jakub@redhat.com>
22016         PR target/85832
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
22025         parts.
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>
22084         PR c++/85912
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):
22102         New unspecs.
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
22107         UNSPEC_COND_DIV.
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):
22145         New unspecs.
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):
22152         Declare.
22153         * config/aarch64/aarch64.c (aarch64_sve_prepare_conditional_op): New
22154         function.
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.
22173         Rename to...
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
22179         SECTION_EXCLUDE.
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
22193         instead of 2.
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
22209         attribute.
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
22218         earlier operands.
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>
22239         PR target/85900
22240         PR target/85345
22241         * varasm.c (assemble_alias): Check ifunc_resolver only on
22242         FUNCTION_DECL.
22244 2018-05-24  Uros Bizjak  <ubizjak@gmail.com>
22246         PR target/85903
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
22253         global.
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>
22262         PR target/83009
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
22318         gimple_simplify.
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>
22339         PR target/78849
22340         * tree.c (build_common_tree_nodes): Dont set TYPE_SIZE for __intN
22341         types.
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
22358         false.
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
22392         isa_bit_mode26.
22394 2018-05-23  Uros Bizjak  <ubizjak@gmail.com>
22396         * config/i386/i386.md (*floatuns<SWI48:mode><MODEF:mode>2_avx512):
22397         New insn pattern.
22398         (floatunssi<mode>2): Also enable for AVX512F and TARGET_SSE_MATH.
22399         Rewrite expander pattern.  Emit gen_floatunssi<mode>2_i387_with_xmm
22400         for non-SSE modes.
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
22438         interpretation.
22439         (slsr_process_copy): Likewise.
22440         (dump_candidate): Dump first_interp field.
22441         (replace_mult_candidate): Process all interpretations, not just
22442         subsequent ones.
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):
22449         Add new boolean.
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>
22455         PR target/84882
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
22464         no-strict-align.
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
22486         constants.
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>
22495         PR target/85345
22496         * cgraph.h (cgraph_node::create): Set ifunc_resolver for ifunc
22497         attribute.
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
22509         attribute.
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
22536         code.
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):
22542         Define prototype.
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
22548         and ldp.
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):
22553         Delete.
22554         (load_pair_sf, load_pair_df, load_pair_si, load_pair_di):
22555         Delete.
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):
22560         Add size check.
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):
22571         New predicate.
22573 2018-05-22  Martin Sebor  <msebor@redhat.com>
22575         PR c/85623
22576         * calls.c (maybe_warn_nonstring_arg): Use string length to set
22577         or ajust the presumed bound on an operation to avoid unnecessary
22578         warnings.
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>
22599         PR ipa/85607
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>
22612         PR target/85657
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
22622         makean alias.
22623         * config/rs6000/rs6000.md (IFKF): New iterator for IFmode and
22624         KFmode.
22625         (IFKF_reg): New attributes to give the register constraints for
22626         IFmode and KFmode.
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>
22640         PR gcc/84923
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.
22649         (ABDL2): Likewise.
22650         (ADALP): Likewise.
22651         (sur): Add mappings for the above.
22652         * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl2<mode>_3):
22653         New define_insn.
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
22669         eor3q<mode>4.
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,
22674         vbcaxq_s64): New.
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
22681         arc*-*-linux*.
22682         * config/arc/t-multilib-linux: Specify MULTILIB_OPTIONS and
22683         MULTILIB_DIRNAMES
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
22742         MASK_HW_ABS.
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
22801         UNSPEC_ADD32.
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
22808         code generation.
22809         * config/nds32/nds32-relax-opt.c: Consider TLS and PIC for relax
22810         optimization.
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
22815         predicate.
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
22860         model.
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>
22887         PR c++/82899
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>
22897         PR bootstrap/85838
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.
22903         (ARMv4): Update.
22904         (ARMv2, ARMv3, ARMv3m): Delete fgroups.
22905         (ARMv6m): Update.
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):
22910         Delete cpus.
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
22947         arm_arch5.
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):
22958         Likewise.
22959         * config/arm/arm.h (TARGET_LDRD): Use arm_arch5te instead of
22960         arm_arch5e.
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
22989         unreachable path.
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
23003         the option.
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
23024         method.
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
23056         two instances.
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
23071         value.
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
23076         'limit_high'.
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.
23151         Add untyped.
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>
23190         PR target/85698
23191         * config/rs6000/rs6000.c (rs6000_output_move_128bit): Check dest
23192         operand.
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>
23241         PR target/85323
23242         * config/i386/i386.c (ix86_fold_builtin): Handle masked shifts
23243         even if the mask is not all ones.
23245         PR target/85323
23246         * config/i386/i386.c (ix86_fold_builtin): Fold shift builtins by
23247         vector.
23248         (ix86_gimple_fold_builtin): Likewise.
23250         PR target/85323
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
23272         "goldmont-plus".
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
23298         asterisk to name.
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
23379         zero.
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
23416         limiting the walk.
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,
23423         split out from...
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>
23485         PR ipa/85734
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):
23497         New pattern.
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>
23518         PR target/85756
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
23533         -mcldemote.
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.
23543         (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
23576         pipeline.
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
23590         pipeline.
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
23603         pipeline.
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):
23618         New constraints.
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
23641         extension.
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
23656         subsection.
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):
23660         New subsubsection.
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>
23668         PR ipa/85655
23669         * ipa-cp.c (intersect_with_plats): Check that the lattice contains
23670         single const.
23672 2018-05-11  Richard Earnshaw  <rearnsha@arm.com>
23674         PR target/85733
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
23686         function type.
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>
23709         PR target/85606
23710         * config/arm/arm-cpus.in: Add comment that ARMv6-m and ARMv6S-m are now
23711         equivalent.
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>
23728         PR sanitizer/85556
23729         * doc/extend.texi: Document LLVM style format for no_sanitize
23730         attribute.
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>
23767         PR target/85693
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
23787         support.
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
23807         comment.
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):
23823         Adjust.
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>
23846         PR target/84797
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
23855         vector.
23856         (vect_bb_vectorization_profitable_p): Adjust.  Compute
23857         actual scalar cost using the cost vector and the add_stmt_cost
23858         machinery.
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,
23891         split out from...
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>
23899         PR target/85626
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>
23917         Revert:
23918         * doc/extend.texi (PowerPC Built-in Functions): Rename this
23919         subsection.
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):
23923         New subsubsection.
23924         (Basic PowerPC Built-in Functions Available on ISA 2.05): New
23925         subsubsection.
23926         (Basic PowerPC Built-in Functions Available on ISA 2.06): New
23927         subsubsection.
23928         (Basic PowerPC Built-in Functions Available on ISA 2.07): New
23929         subsubsection.
23930         (Basic PowerPC Built-in Functions Available on ISA 3.0): New
23931         subsubsection.
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
23942         subsection.
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):
23946         New subsubsection.
23947         (Basic PowerPC Built-in Functions Available on ISA 2.05): New
23948         subsubsection.
23949         (Basic PowerPC Built-in Functions Available on ISA 2.06): New
23950         subsubsection.
23951         (Basic PowerPC Built-in Functions Available on ISA 2.07): New
23952         subsubsection.
23953         (Basic PowerPC Built-in Functions Available on ISA 3.0): New
23954         subsubsection.
23956 2018-05-08  Jakub Jelinek  <jakub@redhat.com>
23958         PR target/85683
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>
23986         PR target/85572
23987         * config/i386/i386.c (ix86_expand_sse2_abs): Handle E_V2DImode and
23988         E_V4DImode.
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.
23993         PR target/85317
23994         * config/i386/i386.c (ix86_fold_builtin): Handle
23995         IX86_BUILTIN_{,P}MOVMSK{PS,PD,B}{,128,256}.
23997         PR target/85480
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>
24003         PR target/85658
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
24029         to...
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
24043         functions.
24044         (aarch64_unspec_cond_code): Remove handling of LTU, GTU, LEU, GEU
24045         and UNORDERED.
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>
24068         PR bootstrap/85681
24069         Revert:
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
24081         to false.
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
24112         to 512.
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
24125         to false.
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>
24155         PR c++/85659
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
24158         BLKmode.
24160 2018-05-05  Roland McGrath  <mcgrathr@google.com>
24162         PR other/77609
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>
24175         PR target/85653
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
24201         Xilinx FP support.
24202         * config.gcc (powerpc-xilinx-eabi*): Remove.
24203         * config/rs6000/predicates.md (easy_fp_constant): Remove Xilinx FP
24204         support.
24205         (fusion_addis_mem_combo_load): Ditto.
24206         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Remove Xilinx
24207         FP support.
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
24213         support.
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>
24258         PR libgomp/85639
24259         * builtins.c (expand_builtin_goacc_parlevel_id_size): Handle null target
24260         if ignore == 0.
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
24278         overflow.
24279         (fold_negate_expr_1): Likewise.
24281 2018-05-04  Jakub Jelinek  <jakub@redhat.com>
24283         PR libstdc++/85466
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>
24302         PR target/85530
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>
24308         PR testsuite/85106
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
24317         loops.
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>
24335         PR target/85582
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>
24345         PR libgomp/82428
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
24359         directly.
24361 2018-05-02  Tom de Vries  <tom@codesourcery.com>
24363         PR testsuite/85106
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>
24369         PR testsuite/85106
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
24381         float support.
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
24387         VECTOR_PAIRED.
24388         * config/rs6000/rs6000-protos.h (paired_expand_vector_init,
24389         paired_emit_vector_cond_expr, paired_expand_vector_move): Delete
24390         declarations.
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>
24412         PR target/85582
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
24423         not strided.
24425 2018-05-02  Tom de Vries  <tom@codesourcery.com>
24427         PR lto/85451
24428         * lto-wrapper.c (compile_offload_image): Add "could not find mkoffload"
24429         error message.
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>
24438         PR lto/85451
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>
24444         PR other/83786
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.
24466         PR web/85578
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>
24472         PR c++/85523
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
24485         "val1" and "val2".
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
24505         declarations.
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
24511         of clobber.
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
24525         private.
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"
24537         param.
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
24607         pattern.
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):
24644         Add declaration.
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
24655         addresses cases.
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
24661         'r20' assignation.
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
24670         relative mode.
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
24673         flag_pic.
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
24688         redundant check.
24689         * tree-cfg.c (tree_node_can_be_shared): Re-order checks.
24691 2018-04-30  Richard Biener  <rguenther@suse.de>
24693         PR bootstrap/85571
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>
24712         PR target/84431
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>
24726         PR ipa/85549
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
24733         function.
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
24744         fix for ILP32.
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>
24765         PR target/85512
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.
24811         (Yj): Remove.
24812         (Ym): Remove.
24813         (Yn): 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>
24827         PR target/84952
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>
24834         PR target/84025
24835         * config/nvptx/nvptx.c (needs_neutering_p): New function.
24836         (nvptx_single): Use needs_neutering_p to skip over insns that do not
24837         need neutering.
24839 2018-04-26  Richard Biener  <rguenther@suse.de>
24840             Tom de Vries  <tom@codesourcery.com>
24842         PR lto/85422
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
24853         processing.
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
24884         shorter ones.
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>
24899         PR target/85473
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>
24940         PR target/85512
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>
24949         PR target/85485
24950         * common/config/i386/i386-common.c (ix86_handle_option): Don't
24951         handle OPT_mcet.
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>
24958         PR target/85485
24959         * doc/install.texi: Remove -mcet from bootstrap-cet.
24961 2018-04-24  Jakub Jelinek  <jakub@redhat.com>
24963         PR target/85511
24964         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Don't define
24965         __builtin_ia32_readeflags_u32 and __builtin_ia32_writeeflags_u32
24966         if TARGET_64BIT.
24968         PR target/85503
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>
24979         PR target/85508
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>
24991         PR target/85491
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>
24997         PR target/84828
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.
25019         (seti): Likewise.
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):
25052         Declare.
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
25086         unaligned access.
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>
25102         PR c/85365
25103         * gimple-fold.c (gimple_fold_builtin_strcpy): Suppress -Wrestrict
25104         for null pointers.
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>
25110         PR target/85456
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>
25121         PR target/83402
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>
25128         PR target/85445
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
25133         calls.
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>
25139         PR target/85469
25140         * common/config/i386/i386-common.c (OPTION_MASK_ISA_IBT_SET):
25141         Removed.
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
25145         __SHSTK__.
25146         * config/i386/driver-i386.c (host_detect_local_cpu): Remove
25147         has_ibt and ibt.
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.
25159         (mibt): Removed.
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>
25171         ipa/85449
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>
25177         ipa/85447
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
25184         by -O3.
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>
25195         PR target/85397
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>
25204         PR target/85404
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>
25210         PR target/85417
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
25216         TARGET_IBT.
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
25222         -fcf-protection.
25223         (incssp<mode>): Likewise.
25224         (nop_endbr): Likewise.
25225         * config/i386/i386.opt (mcet): Change help message to built-in
25226         functions only.
25227         (mibt): Likewise.
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
25244         and -mmvodir64b.
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
25252         and -mmovdiri.
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
25290         --enable-cet=auto.
25292 2018-04-18  Martin Liska  <mliska@suse.cz>
25294         * ipa-devirt.c (odr_subtypes_equivalent_p): Fix GNU coding
25295         style.
25297 2018-04-18  Martin Liska  <mliska@suse.cz>
25299         Revert
25300         2018-03-02  Eric Botcazou  <ebotcazou@adacore.com>
25302         PR ipa/83983
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>
25308         Revert
25309         2018-03-13  Eric Botcazou  <ebotcazou@adacore.com>
25311         PR lto/84805
25312         * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
25313         incomplete types.
25315 2018-04-18  H.J. Lu  <hongjiu.lu@intel.com>
25317         PR target/85388
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>
25323         PR jit/85384
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>
25331         PR target/81084
25332         * config.gcc: Obsolete powerpc*-*-*spe*.
25334 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
25336         PR debug/84637
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
25340         type.
25342 2018-04-17  Jim Wilson  <jimw@sifive.com>
25344         PR 84856
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.
25354         PR sanitizer/85230
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):
25365         New prototype.
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
25370         function.
25372 2018-04-17  Michael Meissner  <meissner@linux.vnet.ibm.com>
25374         PR target/85424
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"
25384         attributes.
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"
25391         attributes.
25392         (vec_extract_hi_v32hi): Merge all alternatives into one, use
25393         "sselog1" type instead of "sselog".  Remove explicit "memory"
25394         attribute.
25395         (vec_extract_hi_v16hi): Merge each pair of alternatives into one,
25396         use "sselog1" type instead of "sselog".  Remove explicit "memory"
25397         attribute.
25398         (vec_extract_lo_v64qi): Add (=v, v) alternative and explicit "memory",
25399         "type", "prefix", "prefix_extra", "length_immediate" and "mode"
25400         attributes.
25401         (vec_extract_hi_v64qi): Merge all alternatives into one, use
25402         "sselog1" type instead of "sselog".  Remove explicit "memory"
25403         attribute.
25404         (vec_extract_hi_v32qi): Merge each pair of alternatives into one,
25405         use "sselog1" type instead of "sselog".  Remove explicit "memory"
25406         attribute.
25408         PR target/85430
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
25413         on a SUBREG.
25415 2018-04-17  Martin Jambor  <mjambor@suse.cz>
25417         PR ipa/85421
25418         * ipa-cp.c (create_specialized_node): Call
25419         expand_all_artificial_thunks if necessary.
25421 2018-04-17  Martin Liska  <mliska@suse.cz>
25423         PR lto/85405
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>
25429         PR target/85281
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
25441         -masm=intel.
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
25450         -masm=intel.
25451         (*avx512vl_<code>v2div2qi2_store): Use %w0 instead of %0 for
25452         -masm=intel.
25453         (*avx512vl_<code><mode>v4qi2_store): Use %k0 instead of %0 for
25454         -masm=intel.
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
25457         %g1.
25458         (*avx512vl_<code><mode>v8qi2_store): Use %q0 instead of %0 for
25459         -masm=intel.
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>
25477         PR lto/85405
25478         * ipa-devirt.c (odr_types_equivalent_p): Handle bit fields.
25480 2018-04-17  Martin Liska  <mliska@suse.cz>
25482         PR ipa/85329
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
25487         string.
25488         (expand_target_clones): Handle it.
25489         (ipa_target_clone): Make redirection just for target_clones
25490         functions.
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>
25501         PR target/83660
25502         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Mark
25503         vec_extract expression as having side effects to make sure it gets
25504         a cleanup point.
25506 2018-04-16  H.J. Lu  <hongjiu.lu@intel.com>
25508         PR target/85403
25509         * config/i386/i386.c (get_builtin_code_for_version): Check
25510         error_mark_node.
25512 2018-04-16  Olga Makhotina  <olga.makhotina@intel.com>
25514         PR target/84331
25515         * config.gcc: Support "skylake".
25516         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
25517         PROCESSOR_SKYLAKE.
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>
25532         PR c++/85112
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>
25539         PR target/84413
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>
25545         PR target/85293
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>
25552         PR target/83402
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
25562         progress.
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
25572         basic block.
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>
25592         PR lto/71991
25593         * config/i386/i386.c (ix86_can_inline_p): Allow safe transitions for
25594         always inline.
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>
25608         PR target/85291
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>
25616         PR debug/83157
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>
25636         PR target/85238
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
25653         streaming out.
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>
25659         PR lto/85371
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
25663         split-dwarf.
25664         (dwarf2out_early_finish): Likewise.
25666 2018-04-12  Jakub Jelinek  <jakub@redhat.com>
25668         PR target/85328
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>
25695         PR target/85296
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>
25704         PR target/85321
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>
25729         PR target/84301
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>
25741         PR ipa/84149
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>
25761         PR lto/85339
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>
25769         PR target/85281
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>
25782         PR debug/85302
25783         * dwarf2out.c (skip_loc_list_entry): Don't call size_of_locs if
25784         SIZEP is NULL.
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
25788         call size_of_locs.
25790 2018-04-11  Thomas Preud'homme  <thomas.preudhomme@arm.com>
25792         PR target/85261
25793         * config/arm/arm-builtins.c (arm_expand_builtin): Force input operand
25794         into register.
25796 2018-04-10  Aaron Sawdey  <acsawdey@linux.ibm.com>
25798         PR target/85321
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>
25805         PR target/85287
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
25808         a register.
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>
25817         PR target/85321
25818         * config/rs6000/rs6000.opt (mtraceback=): Show the allowed values in
25819         the help text.
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>
25865         PR target/85177
25866         PR target/85255
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>
25885         PR target/85173
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>
25892         PR lto/85078
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;
25896         walk basetypes.
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
25902         options.
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>
25909         PR rtl/84058
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
25947         shifter option.
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>
25958         PR target/84041
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
26000         into tm_file.
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
26025         pipeline.
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
26038         pipeline.
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
26051         pipeline.
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
26067         pipeline.
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
26088         align case.
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
26161         and memory sync.
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
26186         macros.
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>
26230         PR target/85196
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
26259         file.
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>
26272         PR debug/85252
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>
26296         PR sanitizer/85213
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
26299         recursive calls.
26300         (fold_comparison): Adjust twoval_comparison_p caller, don't handle
26301         save_p here.
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
26309         recursion.
26311 2018-04-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
26313         * config/s390/s390.c (s390_z10_optimize_cmp): Expand dedicated NOP
26314         instructions.
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
26339         patterns.
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
26344         ARCH_V3S.
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
26354         configuration.
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>
26369         PR target/85193
26370         * config/i386/i386.md (define_attr "memory"): Handle rotate1 type.
26372 2018-04-05  Tom de Vries  <tom@codesourcery.com>
26374         PR target/85204
26375         * config/nvptx/nvptx.c (nvptx_single): Fix neutering of bb with only
26376         cond jump.
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
26393         operands.
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>
26450         PR target/85203
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>
26469         PR lto/85176
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
26509         patterns.
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
26556         than vector.
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>
26571         PR target/85169
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>
26590         PR ipa/84947
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
26616         example.
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
26665         of V.
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>
26671         PR target/83315
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>
26677         PR target/80546
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>
26689         PR target/83822
26690         * config/rs6000/rs6000-string.c (expand_compare_loop): Fix redundant
26691         condition.
26692         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Fix redundant
26693         condition.
26695 2018-03-30  Julia Koval  <julia.koval@intel.com>
26697         PR target/84413
26698         * x86-tune.def (movx, partial_reg_dependency): Enable for
26699         m_SKYLAKE_AVX512.
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>
26709         PR lto/84995.
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>.
26718         PR c/85094
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
26722         checking.
26724 2018-03-28  Peter Bergner  <bergner@vnet.ibm.com>
26726         PR target/84912
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
26734         definition.
26735         (DIVDE): Use it.
26736         (DIVDEU): Likewise.
26738 2018-03-28  Carl Love  <cel@us.ibm.com>
26740         Revert
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
26746         fctiw instruction.
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>
26757         PR target/84912
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
26768         builtin function.
26769         (__builtin_divweuo): Likewise.
26770         (__builtin_divdeo): Likewise.
26771         (__builtin_divdeuo): Likewise.
26773 2018-03-28  Jakub Jelinek  <jakub@redhat.com>
26775         PR target/85095
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>
26786         PR other/84819
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>
26795         PR sanitizer/85081
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>
26803         PR target/84988
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>
26813         PR target/84914
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>
26821         PR target/85044
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>
26828         PR target/81863
26829         * config/arm/arm.c (arm_valid_symbolic_address): Handle
26830         arm_word_relocations.
26832 2018-03-27  Cesar Philippidis  <cesar@codesourcery.com>
26834         PR target/85056
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):
26848         Valueize the VUSE.
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>
26858         PR target/85073
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
26866         of ...
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>
26896         PR target/85026
26897         * config/arm/arm.md (unaligned_loadhis): Remove first alternative.
26898         Clean up attributes.
26900 2018-03-23  Richard Biener  <rguenther@suse.de>
26902         PR debug/85020
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.
26916         PR sanitizer/85029
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):
26926         Remove prototype.
26927         * config/rs6000/rs6000.c (altivec_expand_ld_builtin): Delete this
26928         function.
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>
26937         PR target/84826
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>
26947         PR target/84760
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>
26974         PR sanitizer/85018
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
27003         subtraction.
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>
27019         PR jit/84288
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>
27048         PR ipa/84963
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>
27054         PR target/84988
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>
27060         PR target/84838
27061         * Minor grammar fixes for x86 options.
27063 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
27065         PR debug/84875
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>
27071         PR target/83789
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>
27091         PR target/82518
27092         * config/arm/arm.c (arm_array_mode_supported_p): Return false for
27093         BYTES_BIG_ENDIAN.
27095 2018-03-20  Richard Biener  <rguenther@suse.de>
27097         PR target/84986
27098         * config/i386/i386.c (ix86_add_stmt_cost): Only cost
27099         sign-conversions as zero, fall back to standard scalar_stmt
27100         cost for the rest.
27102 2018-03-20  Martin Liska  <mliska@suse.cz>
27104         PR ipa/84825
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>
27110         PR target/84990
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.
27116         PR target/84845
27117         * config/aarch64/aarch64.md (*aarch64_reg_<mode>3_neg_mask2): Rename
27118         to ...
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]
27121         itself.
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>
27131         PR target/82989
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>
27138         PR target/84952
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>
27144         PR target/84954
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>
27150         PR target/84945
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.
27155         PR c/84953
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.
27165         PR sanitizer/78651
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>
27175         PR sanitizer/78651
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>
27181         PR target/81647
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>
27187         PR bootstrap/84856
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
27198         STACK_BOUNDARY.
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>
27222         PR target/84711
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
27229         matches >= 0.
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>
27269         PR target/84902
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>
27283         PR target/84899
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.
27288         PR c/84909
27289         * hsa-gen.c (mem_type_for_type): Fix comment typo.
27290         * tree-vect-loop-manip.c (vect_create_cond_for_niters_checks):
27291         Likewise.
27292         * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
27293         Likewise.
27295 2018-03-16  Vladimir Makarov  <vmakarov@redhat.com>
27297         PR target/84876
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>
27305         PR ipa/84833
27306         * multiple_target.c (create_dispatcher_calls): Redirect
27307         reference in the symbol table.
27309 2018-03-16  Martin Liska  <mliska@suse.cz>
27311         PR ipa/84722
27312         * multiple_target.c (create_dispatcher_calls): Redirect also
27313         an alias.
27315 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
27317         PR c++/79937
27318         PR c++/82410
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
27332         1 << 3.
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
27341         split predicate.
27343 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
27345         PR c++/79085
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>
27351         PR target/84574
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
27359         function return.
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>
27377         PR c/84852
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>
27388         PR target/84711
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>
27394         PR target/68256
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>
27401         PR target/84860
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>
27412         PR target/83451
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
27424         UNSPEC_VPERMXOR.
27425         * config/doc/extend.texi: Add prototypes for vec_permxor.
27427 2018-03-14  David Malcolm  <dmalcolm@redhat.com>
27429         PR c/84852
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
27436         linenum_type.
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.
27479         Revert
27480         * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
27481         member.
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.
27488         (icelake): Remove.
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
27496         icelake server.
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>
27506         PR sanitizer/83392
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.
27511         PR target/84844
27512         Revert
27513         2017-04-20  Uros Bizjak  <ubizjak@gmail.com>
27515         PR target/78090
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>
27529         PR target/83712
27530         * lra-assigns.c (find_all_spills_for): Ignore uninteresting
27531         pseudos.
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
27535         necessary.
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
27547         live ranges.
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>
27558         PR target/84743
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
27566         for big-endian.
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
27576         unsigned packs.
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
27603         define_expand.
27604         (*<su>mul<mode>3_highpart): New define_insn.
27606 2018-03-13  Eric Botcazou  <ebotcazou@adacore.com>
27608         PR lto/84805
27609         * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
27610         incomplete types.
27612 2018-03-13  Martin Liska  <mliska@suse.cz>
27614         PR ipa/84658.
27615         * (sem_item_optimizer::sem_item_optimizer): Initialize new
27616         vector.
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
27633         that.
27635         PR target/84827
27636         * config/i386/i386.md (round<mode>2): For 387 fancy math, disable
27637         pattern if -ftrapping-math -fno-fp-int-builtin-inexact.
27639         PR target/84828
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.
27644         PR target/84786
27645         * config/i386/sse.md (sse2_loadhpd): Use Yv constraint rather than v
27646         on the last operand.
27648         PR c++/84704
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>
27719         PR debug/58150
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
27738         function.
27739         * config/nds32/nds32.c (nds32_cpu_cpp_builtins): New function.
27740         * config/nds32/nds32.h (TARGET_CPU_CPP_BUILTINS): Modify its
27741         definition.
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
27747         function.
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>
27768         Reverting patch:
27769         2018-03-09  Vladimir Makarov  <vmakarov@redhat.com>
27771         PR target/83712
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
27775         reg class.
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
27787         live ranges.
27789 2018-03-10  H.J. Lu  <hongjiu.lu@intel.com>
27791         PR target/84807
27792         * config/i386/i386.opt: Replace Enforcment with Enforcement.
27794 2018-03-10  Alexandre Oliva  <aoliva@redhat.com>
27796         PR debug/84620
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
27812         zero_view_p.
27814 2018-03-09  Peter Bergner  <bergner@vnet.ibm.com>
27816         PR target/83969
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>
27825         PR target/84772
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.
27830         PR c++/84767
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):
27838         Remove dead code.
27839         (builtin_access::generic_overlap): Be prepared to handle non-array
27840         base objects.
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.
27851         Adjust callers.
27852         * recog.c (preprocess_constraints): Test address_operand for
27853         CT_ADDRESS constraints.
27855 2018-03-09  Vladimir Makarov  <vmakarov@redhat.com>
27857         PR target/83712
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
27861         reg class.
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
27873         live ranges.
27875 2018-03-09  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
27877         PR target/83193
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>
27889         PR jit/64089
27890         PR jit/84288
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.
27902         Revert
27903         PR tree-optimization/84178
27904         * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
27905         to caller.
27906         (version_loop_for_if_conversion): Delay update_ssa call.
27907         (tree_if_conversion): Delay update_ssa until after predicate
27908         insertion.
27910 2018-03-09  Eric Botcazou  <ebotcazou@adacore.com>
27912         PR target/84763
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>
27918         PR debug/84456
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>
27928         PR target/84748
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
27937         for update.
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
27943         to caller.
27944         (version_loop_for_if_conversion): Delay update_ssa call.
27945         (tree_if_conversion): Delay update_ssa until after predicate
27946         insertion.
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>
27975         PR debug/84404
27976         PR debug/84408
27977         * dwarf2out.c (struct dw_line_info_table): Update comments for
27978         view == -1.
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>
28009         PR target/82411
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>
28024         PR target/84277
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>
28052         PR fortran/84565
28053         * config/aarch64/predicates.md (aarch64_simd_reg_or_zero): Use
28054         aarch64_simd_or_scalar_imm_zero rather than aarch64_simd_imm_zero.
28056         PR c++/84704
28057         * gimple-expr.c (create_tmp_var_raw): Set DECL_NAMELESS flag
28058         on tmp_var.
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
28070         sprint_ul.
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>
28077         PR target/84710
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):
28088         Remove.
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
28111         assertion failure.
28113         PR tree-optimization/84687
28114         * omp-simd-clone.c (simd_clone_create): Clear DECL_BUILT_IN_CLASS
28115         on new_node->decl.
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>
28127         PR target/84700
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
28130         are equal to x.
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>
28139         PR target/84564
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.
28144         PR target/84524
28145         * config/i386/sse.md (*<code><mode>3): Replace <mask_prefix3> with
28146         orig,vex.
28147         (*<plusminus_insn><mode>3): Likewise.  Remove <mask_operand3> uses.
28149 2018-03-05  Peter Bergner  <bergner@vnet.ibm.com>
28151         PR target/84264
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
28176         and -mwbnoinvd.
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
28194         wbnoinvdintrin.h.
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
28201         member.
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
28206         once.
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
28272         implementation.
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
28312         predicate.
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
28351         argument.
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,
28358         use ngettext.
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>
28377         PR ipa/84628
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.
28380         Formatting fixes.
28382 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
28384         PR target/56540
28385         * config/pa/pa.h (TARGET_CPU_CPP_BUILTINS): Predefine
28386         __SIZEOF_128__ macro if HPUX_LONG_DOUBLE_LIBRARY.
28388         PR target/56540
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>
28397         PR ipa/83983
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>
28416         PR target/84614
28417         * rtl.h (prev_real_nondebug_insn, next_real_nondebug_insn): New
28418         prototypes.
28419         * emit-rtl.c (next_real_insn, prev_real_insn): Fix up function
28420         comments.
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
28425         prev_real_insn.
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
28430         zero vector.
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
28437         exprs per value.
28438         (clean): Likewise.
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>
28458         PR target/82005
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>
28465         PR sanitizer/82484
28466         * sanopt.c (sanitize_rewrite_addressable_params): Do not handle
28467         volatile arguments.
28469 2018-03-01  Richard Biener  <rguenther@suse.de>
28471         PR debug/84645
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
28478         XINT with INTVAL.
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
28512         where possible.
28514         PR target/52991
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)
28519         as the alignment.
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>
28539         PR testsuite/84597
28540         * timevar.c (timer::print): Fix format to properly print 100%
28541         values.
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
28558         reg only.
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>
28564         PR c++/83871
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>
28619         PR target/84039
28620         * config/i386/constraints.md (Bs): Replace
28621         ix86_indirect_branch_register with
28622         TARGET_INDIRECT_BRANCH_REGISTER.
28623         (Bw): Likewise.
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>
28662         PR debug/84545
28663         * final.c (rest_of_clean_state): Also look for calls inside sequences.
28665 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
28667         PR target/84530
28668         * config/i386/i386-protos.h (ix86_output_indirect_jmp): Remove
28669         the bool argument.
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>
28692         PR bootstrap/84405
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>
28702         PR target/84521
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
28711         volatile memory.
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
28739         BU_P8V_OVERLOAD_2.
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>
28746         PR target/81572
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
28749         LRA_UNKNOWN_ALT.
28750         * lra-constraints.c (curr_insn_transform): Set up
28751         LRA_NON_CLOBBERED_ALT for moves processed on the fast path.  Use
28752         LRA_UNKNOWN_ALT.
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>
28772         PR target/84176
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.
28782         (): 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>
28794         PR target/83335
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>
28815         PR driver/83193
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>
28821         PR driver/83193
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>
28827         PR target/84502
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
28838         fails.
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>
28874         PR c/84229
28875         * ipa-cp.c (determine_versionability): Do not version functions caling
28876         va_arg_pack.
28878 2018-02-21  Martin Liska  <mliska@suse.cz>
28880         PR driver/83193
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>
28888         PR driver/83193
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
28899         false.
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
28906         false.
28907         (get_maxval_strlen): Adjust 6 arg get_range_strlen caller.
28908         (gimple_fold_builtin_strlen): Pass true as last argument to
28909         get_range_strlen.
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
28955         if not optimizing.
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
28964         different.
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>
28974         PR driver/83193
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>
28980         PR c/84310
28981         PR target/79747
28982         * final.c (shorten_branches): Build align_tab array with one
28983         more element.
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>
28992         PR target/84146
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
29004         on call_insn.
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
29023         reg note.
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):
29028         Likewise.
29029         * jump.c (cleanup_barriers, delete_related_insns): Likewise.
29030         * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
29032         PR c++/84444
29033         * builtins.c (builtin_mathfn_code): Don't check if CALL_EXPR_FN (t)
29034         is ADDR_EXPR.
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
29039         is NULL.
29041 2018-02-19  Martin Liska  <mliska@suse.cz>
29043         PR sanitizer/82183
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
29051         to prevent ubsan.
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
29057         BU_P8V_OVERLOAD_1.
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>
29067         PR other/80589
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
29075         e500 family CPUs.
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>
29084         PR ipa/84425
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
29118         vec_insert4b.
29120 2018-02-16  Carl Love  <cel@us.ibm.com>
29122         * config/rs6000/altivec.h: Add builtin names vec_extract4b
29123         vec_insert4b.
29124         * config/rs6000/rs6000-builtin.def: Add INSERT4B and EXTRACT4B
29125         definitions.
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>
29148         PR target/83831
29149         * config/rx/rx.c (rx_fuse_in_memory_bitop): Convert shift operand
29150         to QImode.
29152 2018-02-16  Richard Biener  <rguenther@suse.de>
29154         PR tree-optimization/84037
29155         PR tree-optimization/84016
29156         PR target/82862
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
29161         elementwise loads.
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>
29172         PR sanitizer/84307
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>
29183         PR target/84272
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.
29190         PR bootstrap/84405
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
29196         is defined.
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
29202         recursive calls.
29203         (lra_substitute_pseudo_within_insn): Adjust lra_substitute_pseudo
29204         callers.
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
29260         already been set.
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>
29266         PR c/84108
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>
29272         PR target/83984
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>
29284         PR target/84220
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>
29291         PR target/84239
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>
29313         PR target/83831
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
29316         declarations.
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
29321         functions.
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>
29331         PR target/79242
29332         * machmode.def: Define a complex mode for PARTIAL_INT.
29333         * genmodes.c (complex_class): Return MODE_COMPLEX_INT for
29334         MODE_PARTIAL_INT.
29335         * doc/rtl.texi: Document CSPImode.
29336         * config/msp430/msp430.c (msp430_hard_regno_nregs): Add CPSImode
29337         handling.
29338         (msp430_hard_regno_nregs_with_padding): Likewise.
29340 2018-02-13  Peter Bergner  <bergner@vnet.ibm.com>
29342         PR target/84279
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>
29356         PR c/82210
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
29371         ARGS as unused.
29373 2018-02-13  Alexandre Oliva  <aoliva@redhat.com>
29375         PR debug/84342
29376         PR debug/84319
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
29409         disabled.
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>
29422         PR sanitizer/84340
29423         * internal-fn.def (ASAN_CHECK, ASAN_MARK): Revert changes to fnspec.
29425 2018-02-13  Martin Jambor  <mjambor@suse.cz>
29427         PR c++/83990
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>
29447         PR target/84335
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.
29460         Formatting fixes.
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
29466         inline function.
29467         * gimple-match-head.c (canonicalize_math_after_vectorization_p): New
29468         inline function.
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.
29478         PR target/84336
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>
29484         PR target/83760
29485         * config/sh/sh.c (find_barrier): Consider a sibling call
29486         a barrier as well.
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
29499         for all instances.
29500         * tree-vect-stmts.c (vect_model_simple_cost): Make early
29501         out an assert.
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
29505         SLP stmts.
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>
29518         PR sanitizer/84307
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
29531         default values.
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>
29590         PR target/84266
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
29608         function label.
29610 2018-02-10  Alan Modra  <amodra@gmail.com>
29612         PR target/84300
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>
29618         PR sanitizer/83987
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>
29641         PR target/84226
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>
29658         PR target/83926
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
29663         mode.
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>
29674         PR lto/84213
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>
29687         PR target/82641
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>
29693         PR target/PR84295
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>
29707         PR sanitizer/84285
29708         * gcc.c (STATIC_LIBASAN_LIBS, STATIC_LIBTSAN_LIBS,
29709         STATIC_LIBLSAN_LIBS, STATIC_LIBUBSAN_LIBS): Handle -static like
29710         -static-lib*san.
29712         PR debug/84252
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
29719         TREE_READONLY bit.
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>
29726         PR c++/83659
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
29734         markers.
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
29756         markers.
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
29847         needed.
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>
29884         PR target/83008
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
29898         get_range_strlen.
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>
29921         PR ipa/81360
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):
29941         Define variables.
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
29965         macros.
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
29980         automatically.
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
29987         line thunks.
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
29999         conversion.
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
30004         option values.
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>
30051         PR target/84113
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
30060         options.
30062         PR target/84154
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
30098         [a-zA-Z].
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
30109         ivexpr_map.
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>
30126         PR target/84248
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>
30132         PR libgomp/84217
30133         * omp-expand.c (expand_oacc_collapse_init): Ensure diff_type is large
30134         enough.
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
30140         this place.
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>
30153         PR target/84209
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>
30169         PR target/84146
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>
30184         PR target/84154
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
30208         Undocumented.
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>
30219         PR target/84145
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>
30231         PR target/82641
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
30250         inlining context.
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
30300         options.
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>
30334         PR target/84066
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>
30340         PR target/56010
30341         PR target/83743
30342         * config/rs6000/driver-rs6000.c: #include "diagnostic.h".
30343         #include "opts.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>
30352         PR target/84089
30353         * config/pa/predicates.md (base14_operand): Handle E_VOIDmode.
30355 2018-02-01  Jeff Law  <law@redhat.com>
30357         PR target/84128
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):
30379         ...here.
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
30386         cannot occur.
30388 2018-02-01  Renlin Li  <renlin.li@arm.com>
30390         PR target/83370
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
30408         in RPO order.
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
30418         predicate.
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
30424         functions.
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,
30437         not just bytes.
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>
30450         PR tearget/83845
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>
30475         PR target/82444
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>
30493         PR target/83618
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>
30500         PR lto/84105
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>
30506         Revert
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
30535         accesses.
30536         (arc_in_small_data_p): Do not consider for small data the uncached
30537         types.
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>
30546         PR c/84100
30547         * common.opt (falign-functions=, falign-jumps=, falign-labels=,
30548         falign-loops=): Add Optimization flag.
30550 2018-01-30  Jeff Law  <law@redhat.com>
30552         PR target/84064
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>
30562         PR target/40411
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>
30568         PR target/84112
30569         * lra-constraints.c (curr_insn_transform): Process AND in the
30570         address.
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
30583         copies.
30585 2018-01-30  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
30587         PR target/83758
30588         * config/rs6000/rs6000.c (rs6000_internal_arg_pointer): Only return
30589         a reg rtx.
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
30597         SSA form.
30599 2018-01-30  Jan Hubicka  <hubicka@ucw.cz>
30601         PR ipa/81360
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
30614         zeros correctly.
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>
30625         PR bootstrap/84017
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
30632         pattern.
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
30644         of usage.
30646 2018-01-29  Michael Meissner  <meissner@linux.vnet.ibm.com>
30648         PR target/81550
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>
30659         PR bootstrap/80867
30660         * tree-vect-stmts.c (vectorizable_call): Don't call
30661         targetm.vectorize_builtin_md_vectorized_function if callee is
30662         NULL.
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
30699         debug insns.
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
30706         specified.
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>
30723         PR target/81763
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.
30741         PR c/83989
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
30752         value.
30753         (hwloop_fail): Use TARGET_DBNZ when we want to check for dbnz insn
30754         support.
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
30770         architectures.
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
30794         secure.
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
30818         operand.
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.
30841         (normw): Likewise.
30842         (swap): Likewise.
30843         (divaw): Likewise.
30844         (flag): Likewise.
30845         (sr): Likewise.
30846         (kflag): Likewise.
30847         (ffs): Likewise.
30848         (ffs_f): Likewise.
30849         (fls): 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
30855         operand.
30856         (subsf3_fpx): Likewise.
30857         (mulsf3_fpx): Likewise.
30858         * config/arc/simdext.md (vendrec_insn): Remove 'S' from printing
30859         asm operand.
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>
30901         PR target/84033
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
30913         node->count.
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
30921         attribute.
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>
30928         PR target/84028
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>
30934         PR target/68467
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>
30940         PR target/83994
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
30946         assertion.
30948 2018-01-24  Vladimir Makarov  <vmakarov@redhat.com>
30950         PR target/84014
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
30958         here.
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
30974         with zero counts.
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>
30987         PR target/83589
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>
30997         PR target/81352
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) .. }
31006         operands.
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
31026         member function.
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>
31053         PR target/83905
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
31115         "reachability".
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.
31119         * tree-vrp.c
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
31123         REACHABLE_BLOCKS.
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
31130         coverage.
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>
31139         PR testsuite/83888
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>
31173         PR c++/83918
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
31194         decl.
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
31205         declaration.
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>
31211         PR target/83862
31212         * config/rs6000/rs6000-protos.h (rs6000_split_signbit): Delete,
31213         no longer used.
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>
31283         PR gcc/77734
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>
31291         PR target/83946
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>
31307         PR target/80870
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.
31340         PR target/83930
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>
31346         PR debug/81570
31347         PR debug/83728
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):
31358         Likewise.
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>
31371         PR target/83920
31372         * config/nvptx/nvptx.c (nvptx_single): Fix jit workaround.
31374 2018-01-19  Cesar Philippidis  <cesar@codesourcery.com>
31376         PR target/83790
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
31408         suboption.
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
31430         instead of NEG.
31432 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
31434         PR sanitizer/81715
31435         PR testsuite/83882
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>
31446         PR target/82964
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>
31452         PR ipa/82256
31453         patch by PaX Team
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>
31463         PR ipa/83619
31464         * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Update edge
31465         frequencies.
31467 2018-01-18  Boris Kolpackov  <boris@codesynthesis.com>
31469         PR other/70268
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
31485         remap_filename().
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
31500         lfence is emitted.
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>
31515         PR c/61240
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>
31542         PR ipa/83051
31543         * ipa-inline.c (flatten_function): Do not overwrite final inlining
31544         failure.
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>
31562         PR lto/83121
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):
31575         Add declaration.
31576         * config/aarch64/constraints.md (aarch64_movti_operand):
31577         Limit immediates.
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
31585         lxvll.
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>
31609         PR target/83546
31610         * config/i386/i386.c (ix86_option_override_internal): Add PTA_RDRND
31611         to PTA_SILVERMONT.
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
31626         multilib options.
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
31634         copies.
31636         * config/pa.h (MALLOC_ABI_ALIGNMENT): Set 32-bit alignment default to
31637         64 bits.
31638         * config/pa/pa32-linux.h (MALLOC_ABI_ALIGNMENT): Set alignment to
31639         128 bits.
31641         * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Cleanup type and mode
31642         variables.
31644         * config/pa/pa.c (pa_function_arg_size): Apply CEIL to GET_MODE_SIZE
31645         return value.
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
31688         option.
31690 2018-01-16  Artyom Skrobov tyomitch@gmail.com
31692         * caller-save.c (insert_save): Drop unnecessary parameter.  All
31693         callers updated.
31695 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
31696             Richard Biener  <rguenth@suse.de>
31698         PR libgomp/83590
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>
31721         PR c/83844
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
31727         into MULT_EXPR.
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>
31735         PR target/83858
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
31772         !TARGET_MUL.
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.
31820         (Bw): Likewise.
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.
31836         (Bw): Likewise.
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>
31859         PR target/83839
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>
31871         PR target/83687
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>
31895         PR lto/83804
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>
31912         PR other/83508
31913         * builtins.c (check_access): Avoid warning when the no-warning bit
31914         is set.
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>
31923         PR target/83013
31924         * config/microblaze/microblaze.c (microblaze_asm_output_ident):
31925         Use .pushsection/.popsection.
31927 2018-01-14  Martin Sebor  <msebor@redhat.com>
31929         PR c++/81327
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.
31960         (Bw): Likewise.
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
31985         return.
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
32028         needed.
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
32034         to true.
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.
32041         (keep): Likewise.
32042         (thunk): Likewise.
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>
32050         PR ipa/83051
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
32058         can_inline_edge_p.
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):
32064         New function.
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
32111         access size.
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
32116         tree-ssanames.h.
32117         (runtime_alias_check_p): Allow runtime alias checks with
32118         variable strides.
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
32123         segment lengths.
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
32133         constructor.
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
32152         function.
32153         (vect_loop_versioning): Call it.
32154         * tree-vect-loop.c (vect_analyze_loop_2): Clear LOOP_VINFO_LOWER_BOUNDS
32155         when retrying.
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
32164         optabs.
32165         * doc/md.texi (scatter_store@var{m}, mask_scatter_store@var{m}):
32166         Document.
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
32172         functions.
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
32214         function.
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
32231         null target hooks.
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
32255         functions.
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
32295         functions.
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
32350         accordingly.
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
32376         function.
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
32402         not a power of 2.
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,
32426         split out from...
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
32431         pattern.
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):
32462         New function.
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
32487         mask_skip_niters.
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
32495         the loop bounds.
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,
32506         split out from...
32507         (vect_analyze_loop_2): ...here. Don't check the vectorization
32508         factor against the number of loop iterations if the loop is
32509         fully-masked.
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
32521         mem_type field.
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
32551         TARGET_MEM_REFs.
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
32578         than assignments.
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
32629         loops.
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
32658         booleans.
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
32771         parameter.
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
32798         modes for SVE.
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>):
32813         New patterns.
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
32835         type sizes.
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
32859         enum.
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
32892         left one place.
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
32909         SVE macros.
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
32931         for predicates.
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
32936         functions.
32937         (aarch64_add_offset): Add a temp2 parameter.  Assert that temp1
32938         does not overlap dest if the function is frame-related.  Handle
32939         SVE constants.
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
32952         functions above.
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
32985         data modes.
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
33003         SVE modes.
33004         (aarch64_autovectorize_vector_sizes): Add BYTES_PER_SVE_VECTOR
33005         if SVE is enabled.
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
33024         the vector size.
33025         (aarch64_shift_truncation_mask): Use aarch64_vector_data_mode_p.
33026         (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): New
33027         functions.
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
33033         for SVE modes.
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
33039         MAX_VECT_LEN.
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
33064         constraints.
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
33078         mode attributes.
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
33086         attributes.
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
33128         TARGET_SVE.
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>
33164         PR c++/83778
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
33184         parts.  Simplify.
33185         (load_multiple): Delete.
33186         (*ldmsi8): Delete.
33187         (*ldmsi7): Delete.
33188         (*ldmsi6): Delete.
33189         (*ldmsi5): Delete.
33190         (*ldmsi4): Delete.
33191         (*ldmsi3): Delete.
33192         (store_multiple): Delete.
33193         (*stmsi8): Delete.
33194         (*stmsi7): Delete.
33195         (*stmsi6): Delete.
33196         (*stmsi5): Delete.
33197         (*stmsi4): Delete.
33198         (*stmsi3): 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.
33218         PR debug/81155
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>
33224         PR target/83737
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>
33237         PR target/83628
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
33250         INTEGER_CSTs.
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
33285         and pass the info.
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>
33294         PR target/81616
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
33308         bits.
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>
33317         PR debug/83157
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>
33323         PR target/81819
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
33335         parts.
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>
33346         PR target/83368
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>
33381         PR target/40411
33382         * config/sol2.h (STARTFILE_ARCH_SPEC): Don't use with -shared or
33383         -symbolic.
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>
33389         PR ipa/83054
33390         * ipa-devirt.c (final_warning_record::grow_type_warnings):
33391         New function.
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):
33410         Likewise.
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
33417         PowerPC systems.
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
33432         enum value.
33433         (speculation_barrier): New define_insn.
33434         * doc/extend.texi: Document __builtin_speculation_barrier.
33436 2018-01-11  Jakub Jelinek  <jakub@redhat.com>
33438         PR target/83203
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
33442         iterators.
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>
33452         PR target/83330
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>
33458         PR target/82682
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>):
33498         New define_expand.
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
33517         when appropriate.
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
33533         define_expand.
33534         (vfmal_low<mode>_intrinsic, vfmsl_high<mode>_intrinsic,
33535         vfmal_high<mode>_intrinsic, vfmsl_low<mode>_intrinsic):
33536         New define_insn.
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
33541         documentation.
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>
33559         PR target/81821
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
33575         field.
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
33594         mode.
33595         (aarch64_builtin_vectorized_function): Check for a constant number
33596         of units.
33597         * config/aarch64/aarch64-simd.md (mov<mode>): Handle polynomial
33598         GET_MODE_SIZE.
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
33639         GET_MODE_NUNITS.
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
33653         than an int.
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>
33706         PR target/83514
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>
33717         PR target/82096
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
33732         profile.
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
33741         partition fixup.
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.
33754         (f16quad): Ditto.
33755         (f16mac1): 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):
33957         New flags.
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
33966         on TARGET_SHA2.
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
33981         as string arrays.
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
34002         function.
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
34024         string.
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
34036         empty blocks.
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>
34044         PR target/83399
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>
34067         PR c++/43486
34068         * tree-core.h: Document EXPR_LOCATION_WRAPPER_P's usage of
34069         "public_flag".
34070         * tree.c (tree_nop_conversion): Return true for location wrapper
34071         nodes.
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>
34084         PR target/83735
34085         * config/i386/i386.c (ix86_compute_frame_layout): Always adjust
34086         stack_realign_offset for the largest alignment of stack slot
34087         actually used.
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
34098         account.
34100 2018-01-10  Segher Boessenkool  <segher@kernel.crashing.org>
34102         PR target/83629
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>
34108         PR debug/83765
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
34111         origin.
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>
34121         PR target/81616
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>
34128         PR bootstrap/82831
34129         * basic-block.h (CLEANUP_NO_PARTITIONING): New define.
34130         * bb-reorder.c (pass_reorder_blocks::execute): Do not clean up
34131         partitioning.
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.
34144         Revert:
34145         * common.md (E, F): Use CONSTANT_P instead of checking for
34146         CONST_VECTOR.
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,
34159         V4SI, V4SF types.
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
34169         function.
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>
34175         PR target/83628
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
34189         generating rtl if
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
34194         generated.
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,
34210         move prologue...
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>
34224         PR sanitizer/82517
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().
34231         PR target/83738
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,
34237         OS_main.
34238         (avr_insert_attributes) [-mmain-is-OS_task] <main>: Add OS_task
34239         attribute.
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>
34256         PR ipa/80763
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>
34262         PR target/83507
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
34270         do_report_bug.
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
34282         function.
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>
34297         PR target/83677
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
34309         cfg_altered.
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
34315         splitting insns.
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
34336         to generate rtl.
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
34354         cache.
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>
34369         PR lto/83719
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
34389         munaligned-access.
34391 2018-01-08  Sebastian Huber  <sebastian.huber@embedded-brains.de>
34393         PR target/83681
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
34401         USED_FOR_TARGET.
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
34419         forwarder blocks.
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
34425         of paths.
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>
34449         PR debug/83480
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>
34464         PR target/83604
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
34486         exceptions.
34487         (ix86_add_new_builtins): Clear OPTION_MASK_ISA_64BIT from isa before
34488         processing.
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
34500         defined.
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.
34505         PR target/83604
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
34528         POLY_INT_CST.
34530 2018-01-05  Sudakshina Das  <sudi.das@arm.com>
34532         PR target/82439
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
34541         can throw.
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>
34551         PR target/83554
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>
34560         PR bootstrap/81926
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.
34564         Include output.h.
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>
34593         PR debug/83585
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>
34599         PR target/83680
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>
34605         PR target/83387
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>
34611         PR debug/83666
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>
34617         PR target/83675
34618         * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): Require
34619         TARGET_VIS2.
34621 2018-01-04  Uros Bizjak  <ubizjak@gmail.com>
34623         PR target/83628
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
34644         gcov file.
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>
34650         PR ipa/82352
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,
34676         split out from..,
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,
34689         split out from...
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,
34696         split out from...
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
34703         vect_def_type.
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
34706         vect_def_type.
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
34723         isn't available.
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,
34748         if defined.
34749         (emit_max_int): Use it to set the output MAX_BITSIZE_MODE_ANY_MODE,
34750         if nonzero.
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
34759         arguments.
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
34787         accordingly.
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
34800         parameter.
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
34812         if adj_nunits.
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
34833         MODE_VECTOR_BOOL.
34834         * lto-streamer-in.c (lto_input_mode_table): Likewise.
34835         * rtx-vector-builder.c (rtx_vector_builder::find_cached_value):
34836         Likewise.
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
34855         poly_uint16_pod.
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
34866         for GET_MODE_SIZE.
34867         * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
34868         for GET_MODE_SIZE.
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
34950         unsigned short.
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
34988         poly_uint16_pod.
34989         (mode_to_precision): Return a poly_uint16 rather than an unsigned
34990         short.
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
34997         initializer.
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
35003         as polynomial.
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
35044         VECTOR_CST_NELTS.
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):
35096         Likewise.
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
35114         poly_uint16_pod.
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):
35119         New typedefs.
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
35125         poly_uint16.
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>
35190         PR target/83641
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.
35196         PR target/83641
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>
35203         PR debug/83621
35204         * cfgexpand.c (expand_debug_expr): Return NULL if mode is
35205         BLKmode for ternary, binary or unary expressions.
35207         PR debug/83645
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>
35229         PR c/83559
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
35251         of the residual.
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
35266         to false.
35267         (strlen_dom_walker::before_dom_children): Call
35268         gimple_purge_dead_eh_edges. Dump tranformation with details
35269         dump flags.
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>
35276         PR ipa/83549
35277         * cif-code.def (VARIADIC_THUNK): New enum value.
35278         * ipa-fnsummary.c (compute_fn_summary): Do not inline variadic
35279         thunks.
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>
35292         PR ipa/83594
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
35322         unsigned int.
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
35357         than shwi trees.
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
35446         a poly_int64.
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
35457         function.
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
35576         numbers of units.
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
35594         on multiple_p.
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
35639         reductions.
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
35655         relied on above.
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):
35674         Likewise.
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
35686         to a poly_uint64.
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
35752         to a poly_uint64.
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
35760         poly_uint64 *.
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
35775         poly_uint64 *.
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
35783         be constant.
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
35798         vf too.
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
35807         a poly_uint64.
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
35824         for now.
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):
35854         New function.
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
36071         declaration.
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):
36117         Delete.
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
36129         into...
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
36136         into...
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):
36158         Delete.
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
36192         new function.
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
36199         being permuted.
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
36203         registers.
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>
36262         PR target/81616
36263         * config/i386/x86-tune-costs.h: Increase cost of integer load costs
36264         for generic 4->6.
36266 2018-01-02  Jan Hubicka  <hubicka@ucw.cz>
36268         PR target/81616
36269         Generic tuning.
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
36284         class.
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
36292         through memory.
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
36297         too.
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.